supercapacitor - overfill energy decays 66% slower
This commit is contained in:
@@ -683,7 +683,7 @@ const game = {
|
||||
if (!(mech.cycle % 60)) { //once a second
|
||||
|
||||
//energy overfill
|
||||
if (mech.energy > mech.maxEnergy) mech.energy = mech.maxEnergy + (mech.energy - mech.maxEnergy) * 0.8 //every second energy above max energy loses 25%
|
||||
if (mech.energy > mech.maxEnergy) mech.energy = mech.maxEnergy + (mech.energy - mech.maxEnergy) * mod.overfillDrain //every second energy above max energy loses 25%
|
||||
|
||||
if (mech.pos.y > game.fallHeight) { // if 4000px deep
|
||||
Matter.Body.setVelocity(player, {
|
||||
|
||||
16
js/level.js
16
js/level.js
@@ -12,8 +12,8 @@ const level = {
|
||||
levels: [],
|
||||
start() {
|
||||
if (level.levelsCleared === 0) { //this code only runs on the first level
|
||||
// level.difficultyIncrease(8)
|
||||
// game.enableConstructMode() //used to build maps in testing mode
|
||||
// level.difficultyIncrease(8)
|
||||
// game.zoomScale = 1000;
|
||||
// game.setZoom();
|
||||
// mech.setField("wormhole")
|
||||
@@ -142,18 +142,18 @@ const level = {
|
||||
spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 100); //exit bump
|
||||
// spawn.boost(1500, 0, 900);
|
||||
|
||||
spawn.starter(1900, -500, 20)
|
||||
// spawn.starter(1900, -500, 20)
|
||||
// spawn.bomberBoss(2900, -500)
|
||||
// spawn.launcherBoss(1200, -500)
|
||||
// spawn.laserTargetingBoss(1600, -400)
|
||||
// spawn.spawner(1600, -500)
|
||||
// spawn.sniper(1700, -120, 50)
|
||||
spawn.shooter(1700, -120)
|
||||
// spawn.bomberBoss(1400, -500)
|
||||
// spawn.sucker(1800, -120)
|
||||
spawn.sniper(1800, -120)
|
||||
// spawn.cellBossCulture(1600, -500)
|
||||
// spawn.spiderBoss(1600, -500)
|
||||
// spawn.sniper(1200, -500)
|
||||
spawn.shield(mob[mob.length - 1], 1800, -120, 1);
|
||||
spawn.launcher(1200, -500)
|
||||
// spawn.shield(mob[mob.length - 1], 1800, -120, 1);
|
||||
|
||||
// spawn.nodeBoss(1200, -500, "launcher")
|
||||
// spawn.snakeBoss(1200, -500)
|
||||
@@ -2090,10 +2090,10 @@ const level = {
|
||||
spawn.randomBoss(-1300, -1100, -0.3);
|
||||
|
||||
if (game.difficulty > 3) {
|
||||
if (Math.random() < 0.1) {
|
||||
if (Math.random() < 0.25) {
|
||||
spawn.randomLevelBoss(-800, -1300)
|
||||
} else {
|
||||
spawn.snakeBoss(-1300 + Math.random() * 2000, -2200); //boss snake with head
|
||||
spawn.snakeBoss(-1000 + Math.random() * 1500, -2200); //boss snake with head
|
||||
}
|
||||
}
|
||||
powerUps.addRerollToLevel() //needs to run after mobs are spawned
|
||||
|
||||
19
js/mods.js
19
js/mods.js
@@ -932,6 +932,22 @@ const mod = {
|
||||
mod.isFreezeHarmImmune = false;
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "supercapacitor",
|
||||
description: "<strong class='color-f'>energy</strong> above your max decays <strong>66%</strong> slower",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
allowed() {
|
||||
return (mod.isEnergyRecovery || mod.isPiezo || mod.energySiphon > 0 || mod.isRailEnergyGain || mod.isWormholeEnergy || mod.iceEnergy > 0) && mech.fieldUpgrades[mech.fieldMode].name !== "nano-scale manufacturing"
|
||||
},
|
||||
requires: "a source of overfilled energy",
|
||||
effect() {
|
||||
mod.overfillDrain = 0.933
|
||||
},
|
||||
remove() {
|
||||
mod.overfillDrain = 0.8
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "piezoelectricity",
|
||||
description: "<strong>colliding</strong> with mobs overfills <strong class='color-f'>energy</strong> by <strong>200%</strong><br>reduce <strong class='color-harm'>harm</strong> by <strong>15%</strong>",
|
||||
@@ -3262,5 +3278,6 @@ const mod = {
|
||||
isRadioactive: null,
|
||||
isRailEnergyGain: null,
|
||||
isMineSentry: null,
|
||||
isIncendiary: null
|
||||
isIncendiary: null,
|
||||
overfillDrain: null
|
||||
}
|
||||
31
js/spawn.js
31
js/spawn.js
@@ -2110,7 +2110,7 @@ const spawn = {
|
||||
},
|
||||
seeker(x, y, radius = 5, sides = 0) {
|
||||
//bullets
|
||||
mobs.spawn(x, y, sides, radius, "rgb(150,150,255)");
|
||||
mobs.spawn(x, y, sides, radius, "rgb(255,0,255)");
|
||||
let me = mob[mob.length - 1];
|
||||
me.stroke = "transparent";
|
||||
me.onHit = function() {
|
||||
@@ -2196,9 +2196,9 @@ const spawn = {
|
||||
let me = mob[mob.length - 1];
|
||||
me.isBoss = true;
|
||||
me.accelMag = 0.0011 * game.accelScale;
|
||||
me.memory = 200;
|
||||
me.memory = 250;
|
||||
me.laserRange = 500;
|
||||
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
|
||||
Matter.Body.setDensity(me, 0.0013 + 0.0005 * Math.sqrt(game.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
|
||||
spawn.shield(me, x, y, 1);
|
||||
me.onDeath = function() {
|
||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||
@@ -2211,8 +2211,8 @@ const spawn = {
|
||||
};
|
||||
|
||||
//snake tail
|
||||
const nodes = Math.min(3 + Math.ceil(Math.random() * game.difficulty + 2), 8)
|
||||
spawn.lineBoss(x + 105, y, "spawns", nodes);
|
||||
const nodes = 2 + Math.min(3 + Math.ceil(Math.random() * game.difficulty + 2), 8)
|
||||
spawn.lineBoss(x + 105, y, "snakeBody", nodes);
|
||||
//constraint boss with first 3 mobs in lineboss
|
||||
consBB[consBB.length] = Constraint.create({
|
||||
bodyA: mob[mob.length - nodes],
|
||||
@@ -2234,6 +2234,27 @@ const spawn = {
|
||||
World.add(engine.world, consBB[consBB.length - 1]);
|
||||
|
||||
},
|
||||
snakeBody(x, y, radius = 20) {
|
||||
mobs.spawn(x, y, 4, radius, "rgb(255,0,0)");
|
||||
let me = mob[mob.length - 1];
|
||||
me.onHit = function() {
|
||||
//run this function on hitting player
|
||||
this.explode();
|
||||
};
|
||||
me.collisionFilter.mask = cat.bullet | cat.player
|
||||
// me.g = 0.0002; //required if using 'gravity'
|
||||
// me.accelMag = 0 //0.001 * game.accelScale;
|
||||
// me.memory = 0;
|
||||
me.leaveBody = false;
|
||||
// me.seePlayerFreq = Math.round((80 + 50 * Math.random()) * game.lookFreqScale);
|
||||
me.frictionAir = 0.02;
|
||||
me.do = function() {
|
||||
// this.gravity();
|
||||
// this.seePlayerCheck();
|
||||
this.checkStatus();
|
||||
// this.attraction();
|
||||
};
|
||||
},
|
||||
tetherBoss(x, y, radius = 90) {
|
||||
// constrained mob boss for the towers level
|
||||
// often has a ring of mobs around it
|
||||
|
||||
15
todo.txt
15
todo.txt
@@ -1,9 +1,8 @@
|
||||
*********** NEXT PATCH ***********
|
||||
mod - neutron bomb is a grenade mod, it's damage is 33% higher
|
||||
direct hits also apply radiation damage over time
|
||||
some changes to snake boss
|
||||
|
||||
missiles aim better, accelerate quicker, push blocks out of the way better
|
||||
crouch fire mode rapidly launches missiles vertically
|
||||
supercapacitor - overfill energy decays 66% slower
|
||||
(thanks to NoHaxJustPi for coding this)
|
||||
|
||||
************** BUGS **************
|
||||
|
||||
@@ -26,13 +25,7 @@ missiles aim better, accelerate quicker, push blocks out of the way better
|
||||
|
||||
************** TODO **************
|
||||
|
||||
rework missiles - move faster
|
||||
target more accurately
|
||||
don't get stuck thrusting into a wall
|
||||
less delay right after firing
|
||||
mods
|
||||
|
||||
recursive is kinda dumb
|
||||
vacuum and neutron bomb could merge
|
||||
|
||||
new power up - increase damage and fire speed, for 15 seconds
|
||||
named boost?
|
||||
|
||||
Reference in New Issue
Block a user