elevator
cleaned up elevator physics, added ability to hold the elevator at one location added elevator with a on/off button to level highrise (0.6 chance to show up)
This commit is contained in:
@@ -3625,7 +3625,7 @@ const b = {
|
|||||||
ammoPack: 100,
|
ammoPack: 100,
|
||||||
have: false,
|
have: false,
|
||||||
wavePacketCycle: 0,
|
wavePacketCycle: 0,
|
||||||
delay: 60,
|
delay: 40,
|
||||||
do() {
|
do() {
|
||||||
if (this.wavePacketCycle && !input.fire) {
|
if (this.wavePacketCycle && !input.fire) {
|
||||||
this.wavePacketCycle = 0;
|
this.wavePacketCycle = 0;
|
||||||
|
|||||||
181
js/level.js
181
js/level.js
@@ -436,6 +436,32 @@ const level = {
|
|||||||
y: this.velocity.y
|
y: this.velocity.y
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
off() {
|
||||||
|
Matter.Body.setPosition(this, {
|
||||||
|
x: x,
|
||||||
|
y: this.position.y
|
||||||
|
});
|
||||||
|
Matter.Body.setVelocity(this, {
|
||||||
|
x: 0,
|
||||||
|
y: this.velocity.y
|
||||||
|
});
|
||||||
|
},
|
||||||
|
constraint: this.null,
|
||||||
|
addConstraint() {
|
||||||
|
this.constraint = Constraint.create({
|
||||||
|
pointA: {
|
||||||
|
x: this.position.x,
|
||||||
|
y: this.position.y
|
||||||
|
},
|
||||||
|
bodyB: this,
|
||||||
|
stiffness: 0.01,
|
||||||
|
damping: 0.3
|
||||||
|
});
|
||||||
|
World.add(engine.world, this.constraint);
|
||||||
|
},
|
||||||
|
removeConstraint() {
|
||||||
|
World.remove(engine.world, this.constraint, true)
|
||||||
|
},
|
||||||
drawTrack() {
|
drawTrack() {
|
||||||
ctx.fillStyle = "#ccc"
|
ctx.fillStyle = "#ccc"
|
||||||
ctx.fillRect(x, y, 5, yTravel)
|
ctx.fillRect(x, y, 5, yTravel)
|
||||||
@@ -1932,7 +1958,7 @@ const level = {
|
|||||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(7725, 2275);
|
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(7725, 2275);
|
||||||
},
|
},
|
||||||
satellite() {
|
satellite() {
|
||||||
const elevator = level.elevator(4210, -1297, 380, 85, -3450) //, 0.003, { up: 0.01, down: 0.2 }
|
const elevator = level.elevator(4210, -1285, 380, 70, -3450) //, 0.003, { up: 0.01, down: 0.2 }
|
||||||
level.custom = () => {
|
level.custom = () => {
|
||||||
ctx.fillStyle = "#d4f4f4"
|
ctx.fillStyle = "#d4f4f4"
|
||||||
ctx.fillRect(-250, -750, 420, 450)
|
ctx.fillRect(-250, -750, 420, 450)
|
||||||
@@ -1961,20 +1987,6 @@ const level = {
|
|||||||
ctx.fillRect(4000, -1200, 1050, 1500)
|
ctx.fillRect(4000, -1200, 1050, 1500)
|
||||||
ctx.fillRect(4100, -3450, 600, 2250)
|
ctx.fillRect(4100, -3450, 600, 2250)
|
||||||
elevator.move()
|
elevator.move()
|
||||||
// elevator.drawTrack() //looks ugly
|
|
||||||
// if (elevator.pauseUntilCycle < simulation.cycle && !m.isBodiesAsleep) { //elevator move
|
|
||||||
// if (elevator.pointA.y > -1275) { //bottom
|
|
||||||
// elevator.plat.speed = -10
|
|
||||||
// elevator.pauseUntilCycle = simulation.cycle + 90
|
|
||||||
// } else if (elevator.pointA.y < -3455) { //top
|
|
||||||
// elevator.plat.speed = 30
|
|
||||||
// elevator.pauseUntilCycle = simulation.cycle + 90
|
|
||||||
// }
|
|
||||||
// elevator.pointA = {
|
|
||||||
// x: elevator.pointA.x,
|
|
||||||
// y: elevator.pointA.y + elevator.plat.speed
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
level.setPosToSpawn(-100, 210); //normal spawn
|
level.setPosToSpawn(-100, 210); //normal spawn
|
||||||
@@ -2051,7 +2063,7 @@ const level = {
|
|||||||
|
|
||||||
//steep stairs
|
//steep stairs
|
||||||
spawn.mapRect(4100, -2250, 100, 650);
|
spawn.mapRect(4100, -2250, 100, 650);
|
||||||
spawn.mapRect(4100, -3450, 100, 650); //left top shelf
|
spawn.mapRect(4100, -3450, 100, 850); //left top shelf
|
||||||
spawn.mapRect(4600, -3450, 100, 1850);
|
spawn.mapRect(4600, -3450, 100, 1850);
|
||||||
|
|
||||||
spawn.randomSmallMob(4400, -3500);
|
spawn.randomSmallMob(4400, -3500);
|
||||||
@@ -2093,7 +2105,7 @@ const level = {
|
|||||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(3950, -850);
|
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(3950, -850);
|
||||||
},
|
},
|
||||||
rooftops() {
|
rooftops() {
|
||||||
const elevator = level.elevator(1450, -1000, 235, 50, -2000)
|
const elevator = level.elevator(1450, -990, 235, 45, -2000)
|
||||||
level.custom = () => {
|
level.custom = () => {
|
||||||
elevator.move();
|
elevator.move();
|
||||||
elevator.drawTrack();
|
elevator.drawTrack();
|
||||||
@@ -2543,54 +2555,6 @@ const level = {
|
|||||||
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(3075, -2050);
|
if (tech.isDuplicateBoss && Math.random() < 2 * tech.duplicationChance()) spawn.randomLevelBoss(3075, -2050);
|
||||||
},
|
},
|
||||||
highrise() {
|
highrise() {
|
||||||
const isBlockMode = false
|
|
||||||
let slideBlock
|
|
||||||
if (isBlockMode) {
|
|
||||||
const x = -2750
|
|
||||||
const yMax = -1500
|
|
||||||
slideBlock = body[body.length] = Bodies.rectangle(x, -700, 200, 100, {
|
|
||||||
collisionFilter: {
|
|
||||||
category: cat.body,
|
|
||||||
mask: cat.player | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet //cat.player | cat.map | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet
|
|
||||||
},
|
|
||||||
inertia: Infinity, //prevents rotation
|
|
||||||
isNotHoldable: true,
|
|
||||||
friction: 1,
|
|
||||||
frictionStatic: 1,
|
|
||||||
frictionAir: 0.001,
|
|
||||||
// restitution: 0,
|
|
||||||
isUp: true,
|
|
||||||
move() {
|
|
||||||
if (this.isUp) {
|
|
||||||
if (this.position.y > yMax) {
|
|
||||||
this.force.y -= 0.01 * this.mass
|
|
||||||
} else {
|
|
||||||
this.isUp = false
|
|
||||||
Matter.Body.setPosition(this, {
|
|
||||||
x: x,
|
|
||||||
y: yMax
|
|
||||||
});
|
|
||||||
Matter.Body.setVelocity(this, {
|
|
||||||
x: 0,
|
|
||||||
y: 0
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else if (this.position.y > -800) {
|
|
||||||
this.isUp = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
holdHorizontal() {
|
|
||||||
Matter.Body.setPosition(this, {
|
|
||||||
x: x,
|
|
||||||
y: this.position.y
|
|
||||||
});
|
|
||||||
Matter.Body.setVelocity(this, {
|
|
||||||
x: 0,
|
|
||||||
y: this.velocity.y
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
level.custom = () => {
|
level.custom = () => {
|
||||||
ctx.fillStyle = "#d0d0d2"
|
ctx.fillStyle = "#d0d0d2"
|
||||||
ctx.fillRect(-2475, -2450, 25, 750)
|
ctx.fillRect(-2475, -2450, 25, 750)
|
||||||
@@ -2602,7 +2566,6 @@ const level = {
|
|||||||
level.exit.draw();
|
level.exit.draw();
|
||||||
level.enter.draw();
|
level.enter.draw();
|
||||||
};
|
};
|
||||||
if (isBlockMode) {
|
|
||||||
level.customTopLayer = () => {
|
level.customTopLayer = () => {
|
||||||
ctx.fillStyle = "rgba(64,64,64,0.97)" //hidden section
|
ctx.fillStyle = "rgba(64,64,64,0.97)" //hidden section
|
||||||
ctx.fillRect(-4450, -750, 800, 200)
|
ctx.fillRect(-4450, -750, 800, 200)
|
||||||
@@ -2610,23 +2573,7 @@ const level = {
|
|||||||
ctx.fillRect(-1830, -1150, 2030, 1150)
|
ctx.fillRect(-1830, -1150, 2030, 1150)
|
||||||
ctx.fillRect(-3410, -2150, 495, 1550)
|
ctx.fillRect(-3410, -2150, 495, 1550)
|
||||||
ctx.fillRect(-2585, -1675, 420, 1125)
|
ctx.fillRect(-2585, -1675, 420, 1125)
|
||||||
ctx.fillRect(-1640, -1575, 540, 425)
|
ctx.fillRect(-1640, -1575, 740, 425)
|
||||||
//move sliding block
|
|
||||||
slideBlock.move()
|
|
||||||
slideBlock.holdHorizontal() //keep horizontal position constant
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
level.customTopLayer = () => {
|
|
||||||
ctx.fillStyle = "rgba(64,64,64,0.97)" //hidden section
|
|
||||||
ctx.fillRect(-4450, -750, 800, 200)
|
|
||||||
ctx.fillStyle = "rgba(0,0,0,0.12)"
|
|
||||||
ctx.fillRect(-1830, -1150, 2030, 1150)
|
|
||||||
ctx.fillRect(-3410, -2150, 495, 1550)
|
|
||||||
ctx.fillRect(-2585, -1675, 420, 1125)
|
|
||||||
ctx.fillRect(-1640, -1575, 540, 425)
|
|
||||||
ctx.fillStyle = "rgba(200,0,255,0.2)"; //boost
|
ctx.fillStyle = "rgba(200,0,255,0.2)"; //boost
|
||||||
ctx.fillRect(-750, -25, 100, 25);
|
ctx.fillRect(-750, -25, 100, 25);
|
||||||
ctx.fillRect(-2800, -625, 100, 25);
|
ctx.fillRect(-2800, -625, 100, 25);
|
||||||
@@ -2637,8 +2584,6 @@ const level = {
|
|||||||
ctx.fillRect(-750, -120, 100, 120);
|
ctx.fillRect(-750, -120, 100, 120);
|
||||||
ctx.fillRect(-2800, -720, 100, 120);
|
ctx.fillRect(-2800, -720, 100, 120);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
level.setPosToSpawn(-300, -700); //normal spawn
|
level.setPosToSpawn(-300, -700); //normal spawn
|
||||||
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
||||||
@@ -2676,14 +2621,68 @@ const level = {
|
|||||||
spawn.mapRect(-600, -1075, 50, 475);
|
spawn.mapRect(-600, -1075, 50, 475);
|
||||||
spawn.mapRect(-600, -650, 625, 50);
|
spawn.mapRect(-600, -650, 625, 50);
|
||||||
spawn.mapRect(-1300, -650, 500, 50);
|
spawn.mapRect(-1300, -650, 500, 50);
|
||||||
spawn.mapRect(-175, -250, 425, 300);
|
|
||||||
spawn.bodyRect(-75, -300, 50, 50);
|
spawn.bodyRect(-75, -300, 50, 50);
|
||||||
|
if (Math.random() < 0.6) {
|
||||||
|
const elevator = level.elevator(-790, -190, 180, 25, -1150) //, 0.007
|
||||||
|
elevator.addConstraint();
|
||||||
|
button = level.button(-500, -200)
|
||||||
|
|
||||||
|
spawn.mapRect(-600, -200, 500, 250); //ledge for boarding elevator
|
||||||
|
spawn.bodyRect(-250, -300, 100, 100); //a nice block near the elevator
|
||||||
|
level.customTopLayer = () => {
|
||||||
|
button.query();
|
||||||
|
button.draw();
|
||||||
|
if (button.isUp) {
|
||||||
|
if (elevator.isOn) {
|
||||||
|
elevator.isOn = false
|
||||||
|
elevator.frictionAir = 0.2
|
||||||
|
elevator.addConstraint();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!elevator.isOn) {
|
||||||
|
elevator.isOn = true
|
||||||
|
elevator.isUp = true
|
||||||
|
elevator.removeConstraint();
|
||||||
|
elevator.frictionAir = 0.01 //elevator.isUp ? 0.01 : 0.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (elevator.isOn) {
|
||||||
|
elevator.move();
|
||||||
|
ctx.fillStyle = "#000"
|
||||||
|
ctx.fillRect(-700, -1140, 1, 975)
|
||||||
|
} else {
|
||||||
|
ctx.fillStyle = "#999"
|
||||||
|
ctx.fillRect(-700, -1140, 1, 975)
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.fillStyle = "rgba(64,64,64,0.97)" //hidden section
|
||||||
|
ctx.fillRect(-4450, -750, 800, 200)
|
||||||
|
ctx.fillStyle = "rgba(0,0,0,0.12)"
|
||||||
|
ctx.fillRect(-1830, -1150, 2030, 1150)
|
||||||
|
ctx.fillRect(-3410, -2150, 495, 1550)
|
||||||
|
ctx.fillRect(-2585, -1675, 420, 1125)
|
||||||
|
ctx.fillRect(-1640, -1575, 740, 425)
|
||||||
|
ctx.fillStyle = "rgba(200,0,255,0.2)"; //boost
|
||||||
|
ctx.fillRect(-2800, -625, 100, 25);
|
||||||
|
ctx.fillStyle = "rgba(200,0,255,0.1)"; //boost
|
||||||
|
ctx.fillRect(-2800, -655, 100, 55);
|
||||||
|
ctx.fillStyle = "rgba(200,0,255,0.05)"; //boost
|
||||||
|
ctx.fillRect(-2800, -720, 100, 120);
|
||||||
|
};
|
||||||
|
|
||||||
|
} else {
|
||||||
spawn.boost(-750, 0, 1700);
|
spawn.boost(-750, 0, 1700);
|
||||||
spawn.bodyRect(-425, -1375, 400, 225);
|
|
||||||
spawn.mapRect(-1125, -1575, 50, 475);
|
|
||||||
spawn.bodyRect(-1475, -1275, 250, 125);
|
|
||||||
spawn.bodyRect(-825, -1160, 250, 10);
|
spawn.bodyRect(-825, -1160, 250, 10);
|
||||||
spawn.mapRect(-1650, -1575, 400, 50);
|
spawn.mapRect(-175, -250, 425, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
spawn.bodyRect(-425, -1375, 400, 225);
|
||||||
|
spawn.mapRect(-925, -1575, 50, 475);
|
||||||
|
spawn.bodyRect(-1475, -1275, 250, 125);
|
||||||
|
|
||||||
|
spawn.mapRect(-1650, -1575, 600, 50);
|
||||||
spawn.mapRect(-600, -1150, 850, 175);
|
spawn.mapRect(-600, -1150, 850, 175);
|
||||||
spawn.mapRect(-1850, -1150, 1050, 175);
|
spawn.mapRect(-1850, -1150, 1050, 175);
|
||||||
spawn.bodyRect(-1907, -1600, 550, 25);
|
spawn.bodyRect(-1907, -1600, 550, 25);
|
||||||
@@ -2698,7 +2697,7 @@ const level = {
|
|||||||
spawn.mapRect(-4450, -600, 2300, 750);
|
spawn.mapRect(-4450, -600, 2300, 750);
|
||||||
spawn.mapRect(-2225, -450, 175, 550);
|
spawn.mapRect(-2225, -450, 175, 550);
|
||||||
// spawn.mapRect(-2600, -975, 450, 50);
|
// spawn.mapRect(-2600, -975, 450, 50);
|
||||||
if (!isBlockMode) spawn.boost(-2800, -600, 950);
|
spawn.boost(-2800, -600, 950);
|
||||||
spawn.mapRect(-3425, -1325, 525, 50);
|
spawn.mapRect(-3425, -1325, 525, 50);
|
||||||
spawn.mapRect(-3425, -2200, 525, 50);
|
spawn.mapRect(-3425, -2200, 525, 50);
|
||||||
spawn.mapRect(-2600, -1700, 450, 50);
|
spawn.mapRect(-2600, -1700, 450, 50);
|
||||||
|
|||||||
@@ -2856,12 +2856,6 @@ const m = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m.look = () => { //disable mouse aiming
|
m.look = () => { //disable mouse aiming
|
||||||
//always on mouse look
|
|
||||||
// m.angle = Math.atan2(
|
|
||||||
// simulation.mouseInGame.y - m.pos.y,
|
|
||||||
// simulation.mouseInGame.x - m.pos.x
|
|
||||||
// );
|
|
||||||
//smoothed mouse look translations
|
|
||||||
const scale = 0.8;
|
const scale = 0.8;
|
||||||
m.transSmoothX = canvas.width2 - m.pos.x - (simulation.mouse.x - canvas.width2) * scale;
|
m.transSmoothX = canvas.width2 - m.pos.x - (simulation.mouse.x - canvas.width2) * scale;
|
||||||
m.transSmoothY = canvas.height2 - m.pos.y - (simulation.mouse.y - canvas.height2) * scale;
|
m.transSmoothY = canvas.height2 - m.pos.y - (simulation.mouse.y - canvas.height2) * scale;
|
||||||
|
|||||||
@@ -517,6 +517,7 @@ const simulation = {
|
|||||||
}
|
}
|
||||||
m.look = m.lookDefault
|
m.look = m.lookDefault
|
||||||
|
|
||||||
|
|
||||||
level.levels = level.playableLevels.slice(0) //copy array, not by just by assignment
|
level.levels = level.playableLevels.slice(0) //copy array, not by just by assignment
|
||||||
if (simulation.isCommunityMaps) {
|
if (simulation.isCommunityMaps) {
|
||||||
level.levels.push("stronghold");
|
level.levels.push("stronghold");
|
||||||
@@ -539,6 +540,7 @@ const simulation = {
|
|||||||
} else {
|
} else {
|
||||||
level.levels = shuffle(level.levels); //shuffles order of maps
|
level.levels = shuffle(level.levels); //shuffles order of maps
|
||||||
}
|
}
|
||||||
|
|
||||||
level.levels.unshift("intro"); //add level to the start of the randomized levels list
|
level.levels.unshift("intro"); //add level to the start of the randomized levels list
|
||||||
level.levels.push("gauntlet"); //add level to the end of the randomized levels list
|
level.levels.push("gauntlet"); //add level to the end of the randomized levels list
|
||||||
level.levels.push("final"); //add level to the end of the randomized levels list
|
level.levels.push("final"); //add level to the end of the randomized levels list
|
||||||
|
|||||||
@@ -1266,7 +1266,7 @@ const spawn = {
|
|||||||
let targets = [] //track who is in the node boss, for shields
|
let targets = [] //track who is in the node boss, for shields
|
||||||
mobs.spawn(x, y, 6, radius, "#b386e8");
|
mobs.spawn(x, y, 6, radius, "#b386e8");
|
||||||
let me = mob[mob.length - 1];
|
let me = mob[mob.length - 1];
|
||||||
Matter.Body.setDensity(me, 0.0015); //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.isBoss = true;
|
me.isBoss = true;
|
||||||
targets.push(me.id) //add to shield protection
|
targets.push(me.id) //add to shield protection
|
||||||
me.friction = 0;
|
me.friction = 0;
|
||||||
@@ -1328,7 +1328,7 @@ const spawn = {
|
|||||||
|
|
||||||
for (let i = 0; i < nodes; ++i) {
|
for (let i = 0; i < nodes; ++i) {
|
||||||
spawn.stabber(x + sideLength * Math.sin(i * angle), y + sideLength * Math.cos(i * angle), radius, 12);
|
spawn.stabber(x + sideLength * Math.sin(i * angle), y + sideLength * Math.cos(i * angle), radius, 12);
|
||||||
Matter.Body.setDensity(mob[mob.length - 1], 0.002); //extra dense //normal is 0.001 //makes effective life much larger
|
Matter.Body.setDensity(mob[mob.length - 1], 0.004); //extra dense //normal is 0.001 //makes effective life much larger
|
||||||
targets.push(mob[mob.length - 1].id) //track who is in the node boss, for shields
|
targets.push(mob[mob.length - 1].id) //track who is in the node boss, for shields
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3347,7 +3347,7 @@ const spawn = {
|
|||||||
me.seeAtDistance2 = 2000000;
|
me.seeAtDistance2 = 2000000;
|
||||||
me.memory = Infinity;
|
me.memory = Infinity;
|
||||||
me.frictionAir = 0.01;
|
me.frictionAir = 0.01;
|
||||||
me.accelMag = 0.00004 * simulation.accelScale;
|
me.accelMag = 0.00003 * simulation.accelScale;
|
||||||
me.collisionFilter.mask = cat.player | cat.bullet //| cat.body
|
me.collisionFilter.mask = cat.player | cat.bullet //| cat.body
|
||||||
spawn.shield(me, x, y, 1);
|
spawn.shield(me, x, y, 1);
|
||||||
|
|
||||||
|
|||||||
33
todo.txt
33
todo.txt
@@ -1,17 +1,14 @@
|
|||||||
******************************************************** NEXT PATCH ********************************************************
|
******************************************************** NEXT PATCH ********************************************************
|
||||||
|
|
||||||
jump now applies the velocity of the block you jumped off of
|
|
||||||
it might feel slightly different if you play n-gon often
|
|
||||||
it could add some bugs so let me know
|
|
||||||
|
|
||||||
elevators have more realistic physics
|
|
||||||
you can jump off them when they get to the top (fun!)
|
|
||||||
blocks interact with them in a more healthy way (no bleed through)
|
|
||||||
they can have a wider range of healthy speeds
|
|
||||||
it can hurt mobs
|
|
||||||
|
|
||||||
******************************************************** BUGS ********************************************************
|
******************************************************** BUGS ********************************************************
|
||||||
|
|
||||||
|
figure out how to undo ship mode
|
||||||
|
if you die in ship mode it respawns with m.look set to non ship methods
|
||||||
|
look is set in many tech and in startGame
|
||||||
|
|
||||||
Why does micro-extruder lag so much
|
Why does micro-extruder lag so much
|
||||||
|
|
||||||
blue triangle boss can move backwards and aim away from you if set up properly
|
blue triangle boss can move backwards and aim away from you if set up properly
|
||||||
@@ -54,25 +51,12 @@ is there a way to check if the player is stuck inside the map or block
|
|||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
platform: jumps a bit before moving up
|
|
||||||
you can't use set position for y, because blocks drag a bit inside the platform
|
|
||||||
get delays working right
|
|
||||||
do something if the force is overwhelmed so much the platform moves backwards, or below lower/upper range
|
|
||||||
apply a constraint when still and remove it when moving
|
|
||||||
also apply thr constraint if the block goes outside normal bounds by too much
|
|
||||||
|
|
||||||
should jump velocity add to current velocity?
|
|
||||||
maybe only add the velocity of what the player is standing on
|
|
||||||
|
|
||||||
mob: molecule shapes - 2 separate mobs joined by a bond
|
mob: molecule shapes - 2 separate mobs joined by a bond
|
||||||
use constraints: just spawn 2x or 3x groupings
|
use constraints: just spawn 2x or 3x groupings
|
||||||
low friction so they can spin around
|
low friction so they can spin around
|
||||||
spin when attacking player?
|
spin when attacking player?
|
||||||
increase constraint length when attacking
|
increase constraint length when attacking
|
||||||
|
|
||||||
|
|
||||||
make nano-scale upgrades all cost research, and buff those tech
|
|
||||||
|
|
||||||
make most future tech for guns / fields
|
make most future tech for guns / fields
|
||||||
|
|
||||||
tech: mine - fire the mine into where you were in the past
|
tech: mine - fire the mine into where you were in the past
|
||||||
@@ -81,9 +65,10 @@ tech: mine - fire the mine into where you were in the past
|
|||||||
tech: increase health and harm taken
|
tech: increase health and harm taken
|
||||||
|
|
||||||
remove air control
|
remove air control
|
||||||
negative tech, junk , experiment?
|
negative tech aspect, junk , experiment?
|
||||||
|
|
||||||
use name axion as a 3rd dark matter tech
|
add falling damage
|
||||||
|
negative tech aspect
|
||||||
|
|
||||||
tech: use the ability for power ups to have custom code
|
tech: use the ability for power ups to have custom code
|
||||||
(note: this code is half way done, it just needs to be completed)
|
(note: this code is half way done, it just needs to be completed)
|
||||||
@@ -413,6 +398,8 @@ possible names for tech
|
|||||||
dynamical systems
|
dynamical systems
|
||||||
quantum zeno effect (perturbation of a system prevents some systems from evolving because it scrambles coherence) (apply to lasers, fields)
|
quantum zeno effect (perturbation of a system prevents some systems from evolving because it scrambles coherence) (apply to lasers, fields)
|
||||||
counterfactual - something false
|
counterfactual - something false
|
||||||
|
axion - maybe a 3rd dark matter type tech
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
plot script:
|
plot script:
|
||||||
|
|||||||
Reference in New Issue
Block a user