exit animation
exit door has a 1 second delay and animation
reservoir map now has a flipped horizontal chance
map ruins renamed -> pavilion
all the individual !m.isBodiesAsleep are replaced with ones in the main game loop
this needs extensive bug testing?
should behave similarly to testing mode, which doesn't have issues
todo remove the checks from bullets and mobs, do this after update so it can be easy to revert
bug fixes
This commit is contained in:
@@ -843,7 +843,7 @@ const b = {
|
|||||||
}
|
}
|
||||||
bullet[me].do = function() {
|
bullet[me].do = function() {
|
||||||
const suckCycles = 40
|
const suckCycles = 40
|
||||||
if (!m.isBodiesAsleep && simulation.cycle > this.endCycle - suckCycles || Matter.Query.collides(this, map).length || Matter.Query.collides(this, body).length) { //suck
|
if (simulation.cycle > this.endCycle - suckCycles || Matter.Query.collides(this, map).length || Matter.Query.collides(this, body).length) { //suck
|
||||||
const that = this
|
const that = this
|
||||||
|
|
||||||
function suck(who, radius = that.explodeRad * 3.2) {
|
function suck(who, radius = that.explodeRad * 3.2) {
|
||||||
@@ -907,7 +907,7 @@ const b = {
|
|||||||
this.force.y += this.mass * 0.0025; //extra gravity for harder arcs
|
this.force.y += this.mass * 0.0025; //extra gravity for harder arcs
|
||||||
|
|
||||||
const suckCycles = 40
|
const suckCycles = 40
|
||||||
if (!m.isBodiesAsleep && simulation.cycle > this.endCycle - suckCycles) { //suck
|
if (simulation.cycle > this.endCycle - suckCycles) { //suck
|
||||||
const that = this
|
const that = this
|
||||||
|
|
||||||
function suck(who, radius = that.explodeRad * 3.2) {
|
function suck(who, radius = that.explodeRad * 3.2) {
|
||||||
@@ -1071,7 +1071,6 @@ const b = {
|
|||||||
}
|
}
|
||||||
bullet[me].radiationMode = function() { //the do code after the bullet is stuck on something, projects a damaging radiation field
|
bullet[me].radiationMode = function() { //the do code after the bullet is stuck on something, projects a damaging radiation field
|
||||||
this.stuck(); //runs different code based on what the bullet is stuck to
|
this.stuck(); //runs different code based on what the bullet is stuck to
|
||||||
if (!m.isBodiesAsleep) {
|
|
||||||
this.damageRadius = this.damageRadius * 0.85 + 0.15 * this.maxDamageRadius //smooth radius towards max
|
this.damageRadius = this.damageRadius * 0.85 + 0.15 * this.maxDamageRadius //smooth radius towards max
|
||||||
this.maxDamageRadius -= this.radiusDecay
|
this.maxDamageRadius -= this.radiusDecay
|
||||||
if (this.damageRadius < 15) {
|
if (this.damageRadius < 15) {
|
||||||
@@ -1129,7 +1128,6 @@ const b = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
let gunIndex = null
|
let gunIndex = null
|
||||||
for (let i = 0, len = b.guns.length; i < len; i++) {
|
for (let i = 0, len = b.guns.length; i < len; i++) {
|
||||||
if (b.guns[i].name === "grenades") {
|
if (b.guns[i].name === "grenades") {
|
||||||
|
|||||||
517
js/level.js
517
js/level.js
File diff suppressed because it is too large
Load Diff
@@ -21,7 +21,7 @@ const simulation = {
|
|||||||
mobs.draw();
|
mobs.draw();
|
||||||
simulation.draw.cons();
|
simulation.draw.cons();
|
||||||
simulation.draw.body();
|
simulation.draw.body();
|
||||||
mobs.loop();
|
if (!m.isBodiesAsleep) mobs.loop();
|
||||||
mobs.healthBar();
|
mobs.healthBar();
|
||||||
m.draw();
|
m.draw();
|
||||||
m.hold();
|
m.hold();
|
||||||
@@ -31,7 +31,7 @@ const simulation = {
|
|||||||
b.fire();
|
b.fire();
|
||||||
b.bulletRemove();
|
b.bulletRemove();
|
||||||
b.bulletDraw();
|
b.bulletDraw();
|
||||||
b.bulletDo();
|
if (!m.isBodiesAsleep) b.bulletDo();
|
||||||
simulation.drawCircle();
|
simulation.drawCircle();
|
||||||
// simulation.clip();
|
// simulation.clip();
|
||||||
ctx.restore();
|
ctx.restore();
|
||||||
|
|||||||
@@ -926,7 +926,7 @@ const spawn = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
cellBoss(x, y, radius = 20, cellID) {
|
cellBoss(x, y, radius = 20, cellID) {
|
||||||
mobs.spawn(x + Math.random(), y + Math.random(), 20, radius * (1 + 1.2 * Math.random()), "rgba(0,100,105,0.4)");
|
mobs.spawn(x + Math.random(), y + Math.random(), 20, radius * (1 + 1.2 * Math.random()), "rgba(0,80,125,0.3)");
|
||||||
let me = mob[mob.length - 1];
|
let me = mob[mob.length - 1];
|
||||||
me.stroke = "transparent"
|
me.stroke = "transparent"
|
||||||
me.isBoss = true;
|
me.isBoss = true;
|
||||||
@@ -3378,7 +3378,7 @@ const spawn = {
|
|||||||
|
|
||||||
// spawn.shield(me, x, y, 1);
|
// spawn.shield(me, x, y, 1);
|
||||||
Matter.Body.setDensity(me, 0.005); //extra dense //normal is 0.001 //makes effective life much larger
|
Matter.Body.setDensity(me, 0.005); //extra dense //normal is 0.001 //makes effective life much larger
|
||||||
me.damageReduction = 0.1 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
|
me.damageReduction = 0.12 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
|
||||||
me.isBoss = true;
|
me.isBoss = true;
|
||||||
me.onDamage = function() {};
|
me.onDamage = function() {};
|
||||||
me.onDeath = function() {
|
me.onDeath = function() {
|
||||||
|
|||||||
38
js/tech.js
38
js/tech.js
@@ -2005,24 +2005,24 @@ const tech = {
|
|||||||
tech.isHarmArmor = false;
|
tech.isHarmArmor = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
name: "radiative equilibrium",
|
// name: "radiative equilibrium",
|
||||||
description: "for <strong>10 seconds</strong> after receiving <strong class='color-harm'>harm</strong><br>increase <strong class='color-d'>damage</strong> by <strong>200%</strong>",
|
// description: "for <strong>10 seconds</strong> after receiving <strong class='color-harm'>harm</strong><br>increase <strong class='color-d'>damage</strong> by <strong>200%</strong>",
|
||||||
maxCount: 1,
|
// maxCount: 1,
|
||||||
count: 0,
|
// count: 0,
|
||||||
frequency: 1,
|
// frequency: 1,
|
||||||
frequencyDefault: 1,
|
// frequencyDefault: 1,
|
||||||
allowed() {
|
// allowed() {
|
||||||
return true
|
// return true
|
||||||
},
|
// },
|
||||||
requires: "",
|
// requires: "",
|
||||||
effect() {
|
// effect() {
|
||||||
tech.isHarmDamage = true;
|
// tech.isHarmDamage = true;
|
||||||
},
|
// },
|
||||||
remove() {
|
// remove() {
|
||||||
tech.isHarmDamage = false;
|
// tech.isHarmDamage = false;
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
name: "CPT symmetry",
|
name: "CPT symmetry",
|
||||||
description: "<strong>charge</strong>, <strong>parity</strong>, and <strong>time</strong> invert to undo <strong class='color-harm'>harm</strong><br><strong class='color-rewind'>rewind</strong> <strong>(1.5—5)</strong> seconds for <strong>(66—220)</strong> <strong class='color-f'>energy</strong>",
|
description: "<strong>charge</strong>, <strong>parity</strong>, and <strong>time</strong> invert to undo <strong class='color-harm'>harm</strong><br><strong class='color-rewind'>rewind</strong> <strong>(1.5—5)</strong> seconds for <strong>(66—220)</strong> <strong class='color-f'>energy</strong>",
|
||||||
@@ -3414,7 +3414,7 @@ const tech = {
|
|||||||
effect: () => {
|
effect: () => {
|
||||||
const have = [] //find which tech you have
|
const have = [] //find which tech you have
|
||||||
for (let i = 0; i < tech.tech.length; i++) {
|
for (let i = 0; i < tech.tech.length; i++) {
|
||||||
if (tech.tech[i].count > 0) have.push(i)
|
if (tech.tech[i].count > 0 && !tech.tech[i].isNonRefundable) have.push(i)
|
||||||
}
|
}
|
||||||
const choose = have[Math.floor(Math.random() * have.length)]
|
const choose = have[Math.floor(Math.random() * have.length)]
|
||||||
simulation.makeTextLog(`<span class='color-var'>tech</span>.removeTech("<span class='color-text'>${tech.tech[choose].name}</span>")`)
|
simulation.makeTextLog(`<span class='color-var'>tech</span>.removeTech("<span class='color-text'>${tech.tech[choose].name}</span>")`)
|
||||||
|
|||||||
49
todo.txt
49
todo.txt
@@ -1,36 +1,41 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
|
||||||
new boss: slashBoss - same as slash mob, but it's get invulnerability of course
|
exit door has a 1 second delay and animation
|
||||||
|
|
||||||
if you have upgraded bots then random bot will that type
|
reservoir map now has a flipped horizontal chance
|
||||||
being inside slime reduces gravity by 50% through buoyancy
|
map ruins renamed -> pavilion
|
||||||
difficulty increase for mobs harm is 2% lower per level
|
|
||||||
boson composite no longer lets you pass through elevators and rotors
|
|
||||||
|
|
||||||
NAND gate damage 50 -> 55.5%
|
all the individual !m.isBodiesAsleep are replaced with ones in the main game loop
|
||||||
|
this needs extensive bug testing?
|
||||||
|
should behave similarly to testing mode, which doesn't have issues
|
||||||
|
todo remove the checks from bullets and mobs, do this after update so it can be easy to revert
|
||||||
|
|
||||||
|
bug fixes
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
if you have upgraded bots then random bot will that type
|
mobs that are given the players location at the start can get confused if the map is reversed
|
||||||
might have to nerf upgraded bots in the future, but let's try it out
|
suckers
|
||||||
|
|
||||||
|
can mob bullets damage other mob?
|
||||||
|
maybe if they switch collisions and classType === "body" or obj.classType === "bullet"
|
||||||
|
|
||||||
|
grenade gun seems weak
|
||||||
|
|
||||||
|
path finding system
|
||||||
|
|
||||||
|
figure out how to get friction effects on map/body to apply to player
|
||||||
|
|
||||||
|
vertical reversed version of reservoir level, start at top and press buttons to lower slime
|
||||||
|
|
||||||
|
growBoss and cellBoss are too similar
|
||||||
|
|
||||||
|
might have to nerf upgraded bots
|
||||||
|
|
||||||
variant of Occam's razor - remove 50% of your tech for each removed get:
|
variant of Occam's razor - remove 50% of your tech for each removed get:
|
||||||
2 bots?
|
2 bots?
|
||||||
50 energy max
|
50 energy max
|
||||||
|
|
||||||
animate going to next level?
|
|
||||||
door fills in with color that climbs up vertically through the door graphic the longer you stand on door
|
|
||||||
hold crouch on door? or automatically
|
|
||||||
|
|
||||||
make ship mode more playable and a fun option for people with trackpads
|
|
||||||
joystick support?
|
|
||||||
|
|
||||||
make a new boss with similar movement to powerUpBossBaby
|
|
||||||
bossBaby power up boss has really smart movement
|
|
||||||
like slasher mob since it's kinda the best mob
|
|
||||||
|
|
||||||
reversed version of reservoir level, start at top and press buttons to lower slime
|
|
||||||
|
|
||||||
tech immune to harm after mob kill
|
tech immune to harm after mob kill
|
||||||
require no other mob kill tech?
|
require no other mob kill tech?
|
||||||
cloaking field tech?
|
cloaking field tech?
|
||||||
@@ -40,7 +45,7 @@ final boss invulnerability
|
|||||||
in between phases
|
in between phases
|
||||||
for all of one phase
|
for all of one phase
|
||||||
|
|
||||||
JUNK tech - do something to the mob display health method
|
JUNK tech - do something fun to the mob display health method
|
||||||
|
|
||||||
new platform element, spring
|
new platform element, spring
|
||||||
toggle to on when player touches platform
|
toggle to on when player touches platform
|
||||||
|
|||||||
Reference in New Issue
Block a user