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:
landgreen
2021-12-28 21:03:06 -08:00
parent 44ecb2437a
commit 7d1b212c8a
8 changed files with 1579 additions and 1172 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -95,7 +95,8 @@
</svg>
<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">
<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>
</svg>
<div id='info'>

View File

@@ -5453,7 +5453,7 @@ const b = {
} else {
const bodyCollisions = Matter.Query.collides(this, body)
if (bodyCollisions.length) {
if (!bodyCollisions[0].bodyA.isComposite) {
if (!bodyCollisions[0].bodyA.isNonStick) {
onCollide(this)
this.stuckTo = bodyCollisions[0].bodyA
//find the relative position for when the mob is at angle zero by undoing the mobs rotation

File diff suppressed because it is too large Load Diff

View File

@@ -593,6 +593,7 @@ const simulation = {
}, 1000);
},
startGame(isBuildRun = false, isTrainingRun = false) {
simulation.isTextLogOpen = true
simulation.clearMap()
if (!isBuildRun) { //if a build run logic flow returns to "experiment-button").addEventListener
document.body.style.cursor = "none";

View File

@@ -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"
}
}
me.damageReduction = 0.2 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
me.damageReduction = 0.23 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
//required setup for invulnerable
me.isInvulnerable = false
me.invulnerabilityCountDown = 0
me.do = function() {
if (this.isInvulnerable) {
if (this.invulnerabilityCountDown > 0) {
this.invulnerabilityCountDown--
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
ctx.beginPath();
let vertices = this.vertices;
ctx.moveTo(vertices[0].x, vertices[0].y);
@@ -1234,7 +1234,7 @@ const spawn = {
me.do = function() {
if (this.isInvulnerable) {
if (this.invulnerabilityCountDown > 0) {
this.invulnerabilityCountDown--
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
ctx.beginPath();
let vertices = this.vertices;
ctx.moveTo(vertices[0].x, vertices[0].y);
@@ -1982,7 +1982,7 @@ const spawn = {
ctx.strokeStyle = "rgba(255,255,255,0.7)";
ctx.stroke();
} else if (this.invulnerabilityCountDown > 0) {
this.invulnerabilityCountDown--
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
} else {
this.isInvulnerable = true
if (this.damageReduction) this.startingDamageReduction = this.damageReduction
@@ -3401,7 +3401,7 @@ const spawn = {
}
if (this.isInvulnerable) {
if (this.invulnerabilityCountDown > 0) {
this.invulnerabilityCountDown--
if (!m.isBodiesAsleep) this.invulnerabilityCountDown--
//graphics //draw a super shield?
ctx.beginPath();
let vertices = this.vertices;

View File

@@ -4498,7 +4498,7 @@ const tech = {
},
{
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,
maxCount: 9,
count: 0,
@@ -8834,7 +8834,7 @@ const tech = {
},
{
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,
count: 0,
frequency: 0,
@@ -8847,7 +8847,7 @@ const tech = {
const unit = { x: 1, y: 0 }
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()))
spawn.sucker(where.x, where.y, 200)
spawn.sucker(where.x, where.y, 140)
const who = mob[mob.length - 1]
who.locatePlayer()
// who.damageReduction = 0.2

View File

@@ -1,14 +1,19 @@
******************************************************** NEXT PATCH **************************************************
tech: super duper - fire +0-2 extra super balls
super balls no longer part of MIRV
new training levels "stack", "mine", "grenades", "harpoon"
bug fix for plasma extruder interaction with doors that collide with power ups
mantisBoss moves slower, can be damaged for longer time, has less total life, has a smaller punch range
new map element vanish goes away after you touch it, returns in 3 seconds
bug fixes
******************************************************** 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
save training level progress as local variable
@@ -18,34 +23,17 @@ training
uses the lore voice/text code?
replace all mob clear triggers with button triggers?
tutorial rooms:
done walk forwards and backwards
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
look around with your mouse?
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)
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"
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
drones - use mouse to bring drones around a couple corners
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
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
field rooms:
standing wave - bullets come from every direction
@@ -58,24 +46,21 @@ training
pilot wave - toss blocks at mobs
worm hole - teleport past lasers
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:
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
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)
code is still there, need to balance
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: maintenance - heals no longer spawn, but using research heals you 100%