final boss

missile moves slightly differently
  it used to slow when locked on to a target
  now it slows when turning
missiles explode when near any mob

wormhole mod: cosmic string - now stuns mobs and applies radiation damage
mod time dilation:  - quadruple your default energy regeneration

added final boss level, it's still in progress so I'd love some feedback
also the game loops back to the intro level after the boss
  I'll be working on the ending in the next patch, so the intro level is just a placeholder
This commit is contained in:
landgreen
2020-11-01 18:31:25 -08:00
parent a4a2a9bf2a
commit d7ab196dc3
8 changed files with 15114 additions and 15339 deletions

File diff suppressed because it is too large Load Diff

2297
js/game.js

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -87,12 +87,12 @@ const mod = {
if (mod.isDamageForGuns) dmg *= 1 + 0.07 * b.inventory.length
if (mod.isLowHealthDmg) dmg *= 1 + 0.6 * Math.max(0, 1 - mech.health)
if (mod.isHarmDamage && mech.lastHarmCycle + 600 > mech.cycle) dmg *= 2;
if (mod.isEnergyLoss) dmg *= 1.43;
if (mod.isEnergyLoss) dmg *= 1.5;
if (mod.isAcidDmg && mech.health > 1) dmg *= 1.4;
if (mod.restDamage > 1 && player.speed < 1) dmg *= mod.restDamage
if (mod.isEnergyDamage) dmg *= 1 + mech.energy / 5.5;
if (mod.isDamageFromBulletCount) dmg *= 1 + bullet.length * 0.0038
if (mod.isRerollDamage) dmg *= 1 + 0.05 * powerUps.reroll.rerolls
if (mod.isRerollDamage) dmg *= 1 + 0.06 * powerUps.reroll.rerolls
if (mod.isOneGun && b.inventory.length < 2) dmg *= 1.25
if (mod.isNoFireDamage && mech.cycle > mech.fireCDcycle + 120) dmg *= 1.5
return dmg * mod.slowFire * mod.aimDamage
@@ -149,7 +149,7 @@ const mod = {
},
{
name: "acute stress response",
description: "increase <strong class='color-d'>damage</strong> by <strong>43%</strong><br>if a mob <strong>dies</strong> drain stored <strong class='color-f'>energy</strong> by <strong>25%</strong>",
description: "increase <strong class='color-d'>damage</strong> by <strong>50%</strong><br>if a mob <strong>dies</strong> drain stored <strong class='color-f'>energy</strong> by <strong>25%</strong>",
maxCount: 1,
count: 0,
allowed() {
@@ -245,7 +245,7 @@ const mod = {
},
{
name: "perturbation theory",
description: "increase <strong class='color-d'>damage</strong> by <strong>5%</strong><br>for each of your <strong class='color-r'>rerolls</strong>",
description: "increase <strong class='color-d'>damage</strong> by <strong>6%</strong><br>for each of your <strong class='color-r'>rerolls</strong>",
maxCount: 1,
count: 0,
allowed() {
@@ -259,26 +259,6 @@ const mod = {
mod.isRerollDamage = false;
}
},
{
name: "Ψ(t) collapse",
description: "<strong>60%</strong> decreased <strong>delay</strong> after firing<br>if you have no <strong class='color-r'>rerolls</strong>",
maxCount: 1,
count: 0,
allowed() {
return powerUps.reroll.rerolls === 0 && !mod.manyWorlds
},
requires: "no rerolls",
effect() {
mod.isRerollHaste = true;
mod.rerollHaste = 0.4;
b.setFireCD();
},
remove() {
mod.isRerollHaste = false;
mod.rerollHaste = 1;
b.setFireCD();
}
},
{
name: "electrostatic discharge",
description: "increase <strong class='color-d'>damage</strong> by <strong>20%</strong><br><strong>20%</strong> increased <strong>delay</strong> after firing",
@@ -296,6 +276,26 @@ const mod = {
b.setFireCD();
}
},
{
name: "Ψ(t) collapse",
description: "<strong>66%</strong> decreased <strong>delay</strong> after firing<br>if you have no <strong class='color-r'>rerolls</strong>",
maxCount: 1,
count: 0,
allowed() {
return powerUps.reroll.rerolls === 0 && !mod.manyWorlds
},
requires: "no rerolls",
effect() {
mod.isRerollHaste = true;
mod.rerollHaste = 0.33;
b.setFireCD();
},
remove() {
mod.isRerollHaste = false;
mod.rerollHaste = 1;
b.setFireCD();
}
},
{
name: "auto-loading heuristics",
description: "<strong>30%</strong> decreased <strong>delay</strong> after firing",
@@ -558,7 +558,7 @@ const mod = {
},
{
name: "foam-bot upgrade",
description: "<strong>200%</strong> increased <strong>foam size</strong><br><em>applies to all current and future foam-bots</em>",
description: "<strong>150%</strong> increased <strong>foam size</strong><br><em>applies to all current and future foam-bots</em>",
maxCount: 1,
count: 0,
allowed() {
@@ -675,7 +675,7 @@ const mod = {
},
{
name: "orbital-bot upgrade",
description: "<strong>125%</strong> increased <strong class='color-d'>damage</strong><br><em>applies to all current and future orbit-bots</em>",
description: "increase <strong class='color-d'>damage</strong> by <strong>100%</strong> and <strong>radius</strong> by <strong>30%</strong><br><em>applies to all current and future orbit-bots</em>",
maxCount: 1,
count: 0,
allowed() {
@@ -684,15 +684,24 @@ const mod = {
requires: "2 or more orbital bots",
effect() {
mod.isOrbitBotUpgrade = true
const range = 190 + 60 * mod.isOrbitBotUpgrade
for (let i = 0; i < bullet.length; i++) {
if (bullet[i].botType === 'orbit') bullet[i].isUpgraded = true
if (bullet[i].botType === 'orbit') {
bullet[i].isUpgraded = true
bullet[i].range = range
bullet[i].orbitalSpeed = Math.sqrt(0.25 / range)
}
}
},
remove() {
mod.isOrbitBotUpgrade = false
const range = 190 + 60 * mod.isOrbitBotUpgrade
for (let i = 0; i < bullet.length; i++) {
if (bullet[i].botType === 'orbit') bullet[i].isUpgraded = false
if (bullet[i].botType === 'orbit') {
bullet[i].range = range
bullet[i].orbitalSpeed = Math.sqrt(0.25 / range)
}
}
}
},
@@ -946,7 +955,7 @@ const mod = {
maxCount: 1,
count: 0,
allowed() {
return mod.isPiezo
return mod.isPiezo && !mod.timeEnergyRegen
},
requires: "piezoelectricity",
effect: () => {
@@ -1169,7 +1178,7 @@ const mod = {
name: "anthropic principle",
nameInfo: "<span id = 'mod-anthropic'></span>",
addNameInfo() {
setTimeout(function () {
setTimeout(function() {
powerUps.reroll.changeRerolls(0)
}, 1000);
},
@@ -1182,7 +1191,7 @@ const mod = {
requires: "at least 1 reroll",
effect() {
mod.isDeathAvoid = true;
setTimeout(function () {
setTimeout(function() {
powerUps.reroll.changeRerolls(0)
}, 1000);
},
@@ -1254,7 +1263,7 @@ const mod = {
name: "entanglement",
nameInfo: "<span id = 'mod-entanglement'></span>",
addNameInfo() {
setTimeout(function () {
setTimeout(function() {
game.boldActiveGunHUD();
}, 1000);
},
@@ -1267,7 +1276,7 @@ const mod = {
requires: "at least 2 guns",
effect() {
mod.isEntanglement = true
setTimeout(function () {
setTimeout(function() {
game.boldActiveGunHUD();
}, 1000);
@@ -1893,7 +1902,7 @@ const mod = {
},
{
name: "wave packet",
description: "<strong>wave beam</strong> emits <strong>two</strong> oscillating particles<br>decrease wave <strong class='color-d'>damage</strong> by <strong>33%</strong>",
description: "<strong>wave beam</strong> emits <strong>two</strong> oscillating particles<br>decrease wave <strong class='color-d'>damage</strong> by <strong>20%</strong>",
maxCount: 1,
count: 0,
allowed() {
@@ -1943,7 +1952,7 @@ const mod = {
},
{
name: "recursion",
description: "after <strong>missiles</strong> <strong class='color-e'>explode</strong> they have a<br><strong>30%</strong> chance to launch a larger <strong>missile</strong>",
description: "after <strong>missiles</strong> <strong class='color-e'>explode</strong> they have a<br><strong>20%</strong> chance to launch a larger <strong>missile</strong>",
maxCount: 6,
count: 0,
allowed() {
@@ -2622,6 +2631,24 @@ const mod = {
b.setFireCD();
}
},
{
name: "time crystals",
description: "<strong>quadruple</strong> your default <strong class='color-f'>energy</strong> regeneration",
maxCount: 1,
count: 0,
allowed() {
return mech.fieldUpgrades[mech.fieldMode].name === "time dilation field"
},
requires: "time dilation field",
effect: () => {
mod.energyRegen = 0.004;
mech.fieldRegen = mod.energyRegen;
},
remove() {
mod.energyRegen = 0.001;
mech.fieldRegen = mod.energyRegen;
}
},
{
name: "plasma jet",
description: "increase <strong class='color-plasma'>plasma</strong> <strong>torch's</strong> range by <strong>27%</strong>",
@@ -2871,7 +2898,7 @@ const mod = {
},
{
name: "cosmic string",
description: "when you <strong> tunnel</strong> through a <strong class='color-worm'>wormhole</strong><br>mobs between the <strong>endpoints</strong> take <strong class='color-d'>damage</strong>",
description: "<strong>stun</strong> and do <strong class='color-p'>radioactive</strong> <strong class='color-d'>damage</strong> to <strong>mobs</strong><br>if you tunnel through them with a <strong class='color-worm'>wormhole</strong>",
maxCount: 1,
count: 0,
allowed() {
@@ -3178,5 +3205,6 @@ const mod = {
isWormBullets: null,
isWideLaser: null,
wideLaser: null,
isPulseLaser: null
isPulseLaser: null,
timeEnergyRegen: null
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,46 @@
neutron bomb does 60% more damage
powerUpBoss has a shorter vision range, and accelerates slower
custom mode has the option to disable mod, guns, and fields
several changes to community maps (by Francois 👑)
missile moves slightly differently
it used to slow when locked on to a target
now it slows when turning
missiles explode when near any mob
wormhole mod: cosmic string - now stuns mobs and applies radiation damage
mod time dilation: - quadruple your default energy regeneration
added final boss level, it's still in progress so I'd love some feedback
also the game loops back to the intro level after the boss
I'll be working on the ending in the next patch, so the intro level is just a placeholder
************** TODO - n-gon **************
final boss has elements of other bosses
laser mode
if player is on left rotate counter clockwise
if player is on right rotate clockwise
start of laser mode
push block either left or right, not away
vibrating shape
grow and shrink
oscillate elliptical deformation (not sure how)
a bot that eats ammo and converts them into rerolls
or 2 ammo power ups = 1 reroll
been getting some fps slow down after playing for a few minutes
new status effect: fear - push mob away from player for a time
new status effect - apply status effect to mobs that makes blocks attracted to them
only lasts a few cycles
in hard and why have some mobs spawn in later in the level
where
at defined points in array levelSpawns = [{x:0,y:0},{x:0,y:0}]
store the locations of mobs when the level starts to use as respawn points
remove the locations that are close to player
when?
after some mobs are dead
after the boss is killed
mod - explosions apply radiation damage over time
or spawn a neutron bomb with a short timer
@@ -13,26 +49,15 @@ mod self destruct - drones explode when they die
add an ending to the game
add a final boss battle level
final boss has elements of other bosses
alternate between black hole aura and laser beams
fire seeker bullets
drop bombs
tail of shielded mobs
shield
mirror ending (if no cheats)
level after final boss battle is the intro level, but flipped left right, with a fake player
damage the fake player to end the game?
damage the fake player to end the game
message about go outside
no ending (if cheats)
game goes on forever
around level 15
also game goes on if player attacks, the fake player
game never ends if you have used cheats
new status effect - push mob away from player for a time
new status effect - apply status effect to mobs that makes blocks attracted to them
only lasts a few cycles
foam or spore bullet on dmg shrink effect
it might mess with the foam position of other bullets on the mob
shrink when foam bullets end while attached, or shrink on collision?