supercapacitor - overfill energy decays 66% slower
This commit is contained in:
@@ -683,7 +683,7 @@ const game = {
|
|||||||
if (!(mech.cycle % 60)) { //once a second
|
if (!(mech.cycle % 60)) { //once a second
|
||||||
|
|
||||||
//energy overfill
|
//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
|
if (mech.pos.y > game.fallHeight) { // if 4000px deep
|
||||||
Matter.Body.setVelocity(player, {
|
Matter.Body.setVelocity(player, {
|
||||||
|
|||||||
16
js/level.js
16
js/level.js
@@ -12,8 +12,8 @@ const level = {
|
|||||||
levels: [],
|
levels: [],
|
||||||
start() {
|
start() {
|
||||||
if (level.levelsCleared === 0) { //this code only runs on the first level
|
if (level.levelsCleared === 0) { //this code only runs on the first level
|
||||||
// level.difficultyIncrease(8)
|
|
||||||
// game.enableConstructMode() //used to build maps in testing mode
|
// game.enableConstructMode() //used to build maps in testing mode
|
||||||
|
// level.difficultyIncrease(8)
|
||||||
// game.zoomScale = 1000;
|
// game.zoomScale = 1000;
|
||||||
// game.setZoom();
|
// game.setZoom();
|
||||||
// mech.setField("wormhole")
|
// mech.setField("wormhole")
|
||||||
@@ -142,18 +142,18 @@ const level = {
|
|||||||
spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 100); //exit bump
|
spawn.mapRect(level.exit.x, level.exit.y + 20, 100, 100); //exit bump
|
||||||
// spawn.boost(1500, 0, 900);
|
// spawn.boost(1500, 0, 900);
|
||||||
|
|
||||||
spawn.starter(1900, -500, 20)
|
// spawn.starter(1900, -500, 20)
|
||||||
// spawn.bomberBoss(2900, -500)
|
// spawn.bomberBoss(2900, -500)
|
||||||
// spawn.launcherBoss(1200, -500)
|
// spawn.launcherBoss(1200, -500)
|
||||||
// spawn.laserTargetingBoss(1600, -400)
|
// spawn.laserTargetingBoss(1600, -400)
|
||||||
// spawn.spawner(1600, -500)
|
// spawn.spawner(1600, -500)
|
||||||
// spawn.sniper(1700, -120, 50)
|
spawn.shooter(1700, -120)
|
||||||
// spawn.bomberBoss(1400, -500)
|
// spawn.bomberBoss(1400, -500)
|
||||||
// spawn.sucker(1800, -120)
|
spawn.sniper(1800, -120)
|
||||||
// spawn.cellBossCulture(1600, -500)
|
// spawn.cellBossCulture(1600, -500)
|
||||||
// spawn.spiderBoss(1600, -500)
|
// spawn.spiderBoss(1600, -500)
|
||||||
// spawn.sniper(1200, -500)
|
spawn.launcher(1200, -500)
|
||||||
spawn.shield(mob[mob.length - 1], 1800, -120, 1);
|
// spawn.shield(mob[mob.length - 1], 1800, -120, 1);
|
||||||
|
|
||||||
// spawn.nodeBoss(1200, -500, "launcher")
|
// spawn.nodeBoss(1200, -500, "launcher")
|
||||||
// spawn.snakeBoss(1200, -500)
|
// spawn.snakeBoss(1200, -500)
|
||||||
@@ -2090,10 +2090,10 @@ const level = {
|
|||||||
spawn.randomBoss(-1300, -1100, -0.3);
|
spawn.randomBoss(-1300, -1100, -0.3);
|
||||||
|
|
||||||
if (game.difficulty > 3) {
|
if (game.difficulty > 3) {
|
||||||
if (Math.random() < 0.1) {
|
if (Math.random() < 0.25) {
|
||||||
spawn.randomLevelBoss(-800, -1300)
|
spawn.randomLevelBoss(-800, -1300)
|
||||||
} else {
|
} 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
|
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;
|
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",
|
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>",
|
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,
|
isRadioactive: null,
|
||||||
isRailEnergyGain: null,
|
isRailEnergyGain: null,
|
||||||
isMineSentry: 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) {
|
seeker(x, y, radius = 5, sides = 0) {
|
||||||
//bullets
|
//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];
|
let me = mob[mob.length - 1];
|
||||||
me.stroke = "transparent";
|
me.stroke = "transparent";
|
||||||
me.onHit = function() {
|
me.onHit = function() {
|
||||||
@@ -2196,9 +2196,9 @@ const spawn = {
|
|||||||
let me = mob[mob.length - 1];
|
let me = mob[mob.length - 1];
|
||||||
me.isBoss = true;
|
me.isBoss = true;
|
||||||
me.accelMag = 0.0011 * game.accelScale;
|
me.accelMag = 0.0011 * game.accelScale;
|
||||||
me.memory = 200;
|
me.memory = 250;
|
||||||
me.laserRange = 500;
|
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);
|
spawn.shield(me, x, y, 1);
|
||||||
me.onDeath = function() {
|
me.onDeath = function() {
|
||||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||||
@@ -2211,8 +2211,8 @@ const spawn = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//snake tail
|
//snake tail
|
||||||
const nodes = Math.min(3 + Math.ceil(Math.random() * game.difficulty + 2), 8)
|
const nodes = 2 + Math.min(3 + Math.ceil(Math.random() * game.difficulty + 2), 8)
|
||||||
spawn.lineBoss(x + 105, y, "spawns", nodes);
|
spawn.lineBoss(x + 105, y, "snakeBody", nodes);
|
||||||
//constraint boss with first 3 mobs in lineboss
|
//constraint boss with first 3 mobs in lineboss
|
||||||
consBB[consBB.length] = Constraint.create({
|
consBB[consBB.length] = Constraint.create({
|
||||||
bodyA: mob[mob.length - nodes],
|
bodyA: mob[mob.length - nodes],
|
||||||
@@ -2234,6 +2234,27 @@ const spawn = {
|
|||||||
World.add(engine.world, consBB[consBB.length - 1]);
|
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) {
|
tetherBoss(x, y, radius = 90) {
|
||||||
// constrained mob boss for the towers level
|
// constrained mob boss for the towers level
|
||||||
// often has a ring of mobs around it
|
// often has a ring of mobs around it
|
||||||
|
|||||||
15
todo.txt
15
todo.txt
@@ -1,9 +1,8 @@
|
|||||||
*********** NEXT PATCH ***********
|
*********** NEXT PATCH ***********
|
||||||
mod - neutron bomb is a grenade mod, it's damage is 33% higher
|
some changes to snake boss
|
||||||
direct hits also apply radiation damage over time
|
|
||||||
|
|
||||||
missiles aim better, accelerate quicker, push blocks out of the way better
|
supercapacitor - overfill energy decays 66% slower
|
||||||
crouch fire mode rapidly launches missiles vertically
|
(thanks to NoHaxJustPi for coding this)
|
||||||
|
|
||||||
************** BUGS **************
|
************** BUGS **************
|
||||||
|
|
||||||
@@ -26,13 +25,7 @@ missiles aim better, accelerate quicker, push blocks out of the way better
|
|||||||
|
|
||||||
************** TODO **************
|
************** TODO **************
|
||||||
|
|
||||||
rework missiles - move faster
|
vacuum and neutron bomb could merge
|
||||||
target more accurately
|
|
||||||
don't get stuck thrusting into a wall
|
|
||||||
less delay right after firing
|
|
||||||
mods
|
|
||||||
|
|
||||||
recursive is kinda dumb
|
|
||||||
|
|
||||||
new power up - increase damage and fire speed, for 15 seconds
|
new power up - increase damage and fire speed, for 15 seconds
|
||||||
named boost?
|
named boost?
|
||||||
|
|||||||
Reference in New Issue
Block a user