vanish platform
new training levels "stack", "mine", "grenades", "harpoon" new map element vanish goes away after you touch it, returns in 3 seconds bug fixes
This commit is contained in:
@@ -95,7 +95,8 @@
|
|||||||
</svg>
|
</svg>
|
||||||
<svg class="SVG-button" id="training-button" width="120" height="45" style="border: 2px #333 solid;" onclick="simulation.startGame(false, true)">
|
<svg class="SVG-button" id="training-button" width="120" height="45" style="border: 2px #333 solid;" onclick="simulation.startGame(false, true)">
|
||||||
<g stroke='none' fill='#333' stroke-width="2" font-size="30px" font-family="Arial, sans-serif">
|
<g stroke='none' fill='#333' stroke-width="2" font-size="30px" font-family="Arial, sans-serif">
|
||||||
<text x="10" y="33">training</text>
|
<!-- <animate attributeName="fill" values="#f00;#dd0;#0f0;#0ff;#66f;#0ff;#0f0;#dd0;#f77" dur="4s" repeatCount="indefinite" /> -->
|
||||||
|
<text x="10" y="33" class="lore">training</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
<div id='info'>
|
<div id='info'>
|
||||||
|
|||||||
@@ -5453,7 +5453,7 @@ const b = {
|
|||||||
} else {
|
} else {
|
||||||
const bodyCollisions = Matter.Query.collides(this, body)
|
const bodyCollisions = Matter.Query.collides(this, body)
|
||||||
if (bodyCollisions.length) {
|
if (bodyCollisions.length) {
|
||||||
if (!bodyCollisions[0].bodyA.isComposite) {
|
if (!bodyCollisions[0].bodyA.isNonStick) {
|
||||||
onCollide(this)
|
onCollide(this)
|
||||||
this.stuckTo = bodyCollisions[0].bodyA
|
this.stuckTo = bodyCollisions[0].bodyA
|
||||||
//find the relative position for when the mob is at angle zero by undoing the mobs rotation
|
//find the relative position for when the mob is at angle zero by undoing the mobs rotation
|
||||||
|
|||||||
2676
js/level.js
2676
js/level.js
File diff suppressed because it is too large
Load Diff
@@ -593,6 +593,7 @@ const simulation = {
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
},
|
},
|
||||||
startGame(isBuildRun = false, isTrainingRun = false) {
|
startGame(isBuildRun = false, isTrainingRun = false) {
|
||||||
|
simulation.isTextLogOpen = true
|
||||||
simulation.clearMap()
|
simulation.clearMap()
|
||||||
if (!isBuildRun) { //if a build run logic flow returns to "experiment-button").addEventListener
|
if (!isBuildRun) { //if a build run logic flow returns to "experiment-button").addEventListener
|
||||||
document.body.style.cursor = "none";
|
document.body.style.cursor = "none";
|
||||||
|
|||||||
10
js/spawn.js
10
js/spawn.js
@@ -1146,14 +1146,14 @@ const spawn = {
|
|||||||
powerUps.spawnRandomPowerUp(this.position.x, this.position.y) // manual power up spawn to avoid spawning too many tech with "symbiosis"
|
powerUps.spawnRandomPowerUp(this.position.x, this.position.y) // manual power up spawn to avoid spawning too many tech with "symbiosis"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
me.damageReduction = 0.2 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
|
me.damageReduction = 0.23 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
|
||||||
//required setup for invulnerable
|
//required setup for invulnerable
|
||||||
me.isInvulnerable = false
|
me.isInvulnerable = false
|
||||||
me.invulnerabilityCountDown = 0
|
me.invulnerabilityCountDown = 0
|
||||||
me.do = function() {
|
me.do = function() {
|
||||||
if (this.isInvulnerable) {
|
if (this.isInvulnerable) {
|
||||||
if (this.invulnerabilityCountDown > 0) {
|
if (this.invulnerabilityCountDown > 0) {
|
||||||
this.invulnerabilityCountDown--
|
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
let vertices = this.vertices;
|
let vertices = this.vertices;
|
||||||
ctx.moveTo(vertices[0].x, vertices[0].y);
|
ctx.moveTo(vertices[0].x, vertices[0].y);
|
||||||
@@ -1234,7 +1234,7 @@ const spawn = {
|
|||||||
me.do = function() {
|
me.do = function() {
|
||||||
if (this.isInvulnerable) {
|
if (this.isInvulnerable) {
|
||||||
if (this.invulnerabilityCountDown > 0) {
|
if (this.invulnerabilityCountDown > 0) {
|
||||||
this.invulnerabilityCountDown--
|
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
let vertices = this.vertices;
|
let vertices = this.vertices;
|
||||||
ctx.moveTo(vertices[0].x, vertices[0].y);
|
ctx.moveTo(vertices[0].x, vertices[0].y);
|
||||||
@@ -1982,7 +1982,7 @@ const spawn = {
|
|||||||
ctx.strokeStyle = "rgba(255,255,255,0.7)";
|
ctx.strokeStyle = "rgba(255,255,255,0.7)";
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
} else if (this.invulnerabilityCountDown > 0) {
|
} else if (this.invulnerabilityCountDown > 0) {
|
||||||
this.invulnerabilityCountDown--
|
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
|
||||||
} else {
|
} else {
|
||||||
this.isInvulnerable = true
|
this.isInvulnerable = true
|
||||||
if (this.damageReduction) this.startingDamageReduction = this.damageReduction
|
if (this.damageReduction) this.startingDamageReduction = this.damageReduction
|
||||||
@@ -3401,7 +3401,7 @@ const spawn = {
|
|||||||
}
|
}
|
||||||
if (this.isInvulnerable) {
|
if (this.isInvulnerable) {
|
||||||
if (this.invulnerabilityCountDown > 0) {
|
if (this.invulnerabilityCountDown > 0) {
|
||||||
this.invulnerabilityCountDown--
|
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
|
||||||
//graphics //draw a super shield?
|
//graphics //draw a super shield?
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
let vertices = this.vertices;
|
let vertices = this.vertices;
|
||||||
|
|||||||
@@ -4498,7 +4498,7 @@ const tech = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MIRV",
|
name: "MIRV",
|
||||||
description: "fire <strong>+1</strong> <strong>missile</strong>, <strong>grenade</strong>, and <strong>super ball</strong><br>decrease <strong class='color-e'>explosion</strong> <strong>radius</strong> up to <strong>10%</strong>",
|
description: "fire <strong>+1</strong> <strong>missile</strong> and <strong>grenade</strong><br>decrease <strong class='color-e'>explosion</strong> <strong>radius</strong> up to <strong>10%</strong>",
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 9,
|
maxCount: 9,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -8834,7 +8834,7 @@ const tech = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "black hole cluster",
|
name: "black hole cluster",
|
||||||
description: `<strong>spawn</strong> nearby <strong>black holes</strong>`,
|
description: `spawn <strong>30</strong> nearby <strong>black holes</strong>`,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
frequency: 0,
|
frequency: 0,
|
||||||
@@ -8847,7 +8847,7 @@ const tech = {
|
|||||||
const unit = { x: 1, y: 0 }
|
const unit = { x: 1, y: 0 }
|
||||||
for (let i = 0; i < 30; i++) {
|
for (let i = 0; i < 30; i++) {
|
||||||
const where = Vector.add(m.pos, Vector.mult(Vector.rotate(unit, Math.random() * 2 * Math.PI), 2000 + 1200 * Math.random()))
|
const where = Vector.add(m.pos, Vector.mult(Vector.rotate(unit, Math.random() * 2 * Math.PI), 2000 + 1200 * Math.random()))
|
||||||
spawn.sucker(where.x, where.y, 200)
|
spawn.sucker(where.x, where.y, 140)
|
||||||
const who = mob[mob.length - 1]
|
const who = mob[mob.length - 1]
|
||||||
who.locatePlayer()
|
who.locatePlayer()
|
||||||
// who.damageReduction = 0.2
|
// who.damageReduction = 0.2
|
||||||
|
|||||||
51
todo.txt
51
todo.txt
@@ -1,14 +1,19 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
|
||||||
tech: super duper - fire +0-2 extra super balls
|
new training levels "stack", "mine", "grenades", "harpoon"
|
||||||
super balls no longer part of MIRV
|
|
||||||
|
|
||||||
bug fix for plasma extruder interaction with doors that collide with power ups
|
new map element vanish goes away after you touch it, returns in 3 seconds
|
||||||
mantisBoss moves slower, can be damaged for longer time, has less total life, has a smaller punch range
|
bug fixes
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
merge various multi bullet tech under one name
|
shrink crumble width as it fades out
|
||||||
|
player moves through a grid of stacked crumble blocks
|
||||||
|
|
||||||
|
boss that gives nearby mobs invulnerability
|
||||||
|
boss is only mildly aggressive
|
||||||
|
repulsed by player upto a point
|
||||||
|
attracted to mobs
|
||||||
|
|
||||||
training
|
training
|
||||||
save training level progress as local variable
|
save training level progress as local variable
|
||||||
@@ -18,34 +23,17 @@ training
|
|||||||
uses the lore voice/text code?
|
uses the lore voice/text code?
|
||||||
replace all mob clear triggers with button triggers?
|
replace all mob clear triggers with button triggers?
|
||||||
tutorial rooms:
|
tutorial rooms:
|
||||||
done walk forwards and backwards
|
look around with your mouse?
|
||||||
done crouch through tunnel
|
|
||||||
done jump over wall and gap
|
|
||||||
look around with your mouse
|
|
||||||
done pick up a block an drop onto a button to open door
|
|
||||||
done fire block at button to open door
|
|
||||||
done fire block at mob to open door
|
|
||||||
easier deflecting level, with 1-2 attacking mobs
|
easier deflecting level, with 1-2 attacking mobs
|
||||||
done use field to deflect bullets
|
|
||||||
done pick up heal power ups with field to open door
|
|
||||||
done use a gun to kill a mob and use it's block body to activate a button to open a door
|
|
||||||
gun rooms: (different mobs type in each room)
|
gun rooms: (different mobs type in each room)
|
||||||
different mobs in each room
|
different mobs in each room
|
||||||
how to introduce shields?
|
how to introduce mob shields?
|
||||||
"hopper" "slasher" "shooter "grenadier" "striker" "laser" "stabber" "springer" "pulsar" "launcher" "launcherOne" "exploder" "sneaker" "sucker" "sniper" "spinner" "grower" "beamer" "focuser" "spawner" "ghoster"
|
"hopper" "slasher" "shooter "grenadier" "striker" "laser" "stabber" "springer" "pulsar" "launcher" "launcherOne" "exploder" "sneaker" "sucker" "sniper" "spinner" "grower" "beamer" "focuser" "spawner" "ghoster"
|
||||||
done nailgun - start with no ammo collect ammo and shoot at mobs
|
|
||||||
done shotgun - some simple close range combat
|
|
||||||
done superball - use 1 ammo to take out several mobs
|
|
||||||
done matter wave - kill a mob inside a map element
|
|
||||||
done missiles - take out mobs that are around corner and have them drop on a button
|
|
||||||
grenades - use 1 ammo to take out a ring of mob`s
|
|
||||||
spores - use 1 ammo to take out several mobs at once, you have to block with your shield until the mobs die
|
spores - use 1 ammo to take out several mobs at once, you have to block with your shield until the mobs die
|
||||||
drones - use mouse to bring drones around a couple corners
|
drones - use mouse to bring drones around a couple corners
|
||||||
foam - slow boss mob, and run away
|
foam - slow boss mob, and run away
|
||||||
harpoon - kill one close mob, pick up ammo that is out of reach, first at several far away mobs with crouch
|
harpoon - kill one close mob, pick up ammo that is out of reach, first at several far away mobs with crouch
|
||||||
or just some hard melee combat
|
or just some hard melee combat
|
||||||
mine - built kill zone, get mobs to follow into mine kill zone
|
|
||||||
maybe a boss mob?
|
|
||||||
laser - reflect off walls to hit mobs
|
laser - reflect off walls to hit mobs
|
||||||
field rooms:
|
field rooms:
|
||||||
standing wave - bullets come from every direction
|
standing wave - bullets come from every direction
|
||||||
@@ -58,24 +46,21 @@ training
|
|||||||
pilot wave - toss blocks at mobs
|
pilot wave - toss blocks at mobs
|
||||||
worm hole - teleport past lasers
|
worm hole - teleport past lasers
|
||||||
puzzle/platforming rooms:
|
puzzle/platforming rooms:
|
||||||
stack blocks to get to high ground
|
|
||||||
also make a harder version of stacking blocks
|
|
||||||
portal rooms
|
|
||||||
jump at the top of a elevator to jump high
|
|
||||||
use the double constrained platforms
|
use the double constrained platforms
|
||||||
combat rooms:
|
combat rooms:
|
||||||
kill so many mobs that the mob bodies pile up and you can get over a wall by jumping on them
|
|
||||||
boss gauntlet, spawn with nothing but a few power ups and fight 10 bosses
|
boss gauntlet, spawn with nothing but a few power ups and fight 10 bosses
|
||||||
use no gun, just bots to kil stuff
|
use no gun, just bots to kil stuff
|
||||||
|
|
||||||
JUNK tech disable level exit for 5 minutes
|
|
||||||
level.disableExit = true
|
|
||||||
setTimeout( () => {level.disableExit = false;}, 5*60000);
|
|
||||||
|
|
||||||
balance time dilation with bose einstein (you can freeze everything and take no damage)
|
balance time dilation with bose einstein (you can freeze everything and take no damage)
|
||||||
code is still there, need to balance
|
code is still there, need to balance
|
||||||
balance with energy drain?
|
balance with energy drain?
|
||||||
|
|
||||||
|
overflowing energy does harm?
|
||||||
|
or just reduces harm reduction?
|
||||||
|
|
||||||
|
make a line of constained mobs move like a snake
|
||||||
|
apply forces with directions determined by time and position on the snake
|
||||||
|
|
||||||
tech: basic research - heal power ups spawn as research power ups instead, and using research heals you (needs to be pretty low, like 3% health)
|
tech: basic research - heal power ups spawn as research power ups instead, and using research heals you (needs to be pretty low, like 3% health)
|
||||||
tech: maintenance - heals no longer spawn, but using research heals you 100%
|
tech: maintenance - heals no longer spawn, but using research heals you 100%
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user