harmonic shield bug fix

This commit is contained in:
landgreen
2020-08-20 05:43:55 -07:00
parent cc8c101776
commit 3659fbe47d
10 changed files with 211 additions and 73 deletions

View File

@@ -740,31 +740,38 @@ const b = {
for (let i = 0, len = powerUp.length; i < len; ++i) { for (let i = 0, len = powerUp.length; i < len; ++i) {
if ( if (
(powerUp[i].name !== "heal" || mech.health < 0.9 * mech.maxHealth || mod.isDroneGrab) && (powerUp[i].name !== "heal" || mech.health < 0.9 * mech.maxHealth || mod.isDroneGrab) &&
Matter.Query.ray(map, this.position, powerUp[i].position).length === 0 && (powerUp[i].name !== "field" || !mod.isDeterminism)
Matter.Query.ray(body, this.position, powerUp[i].position).length === 0
) { ) {
const TARGET_VECTOR = Vector.sub(this.position, powerUp[i].position) //pick up nearby power ups
const DIST = Vector.magnitude(TARGET_VECTOR); if (Vector.magnitudeSquared(Vector.sub(this.position, powerUp[i].position)) < 60000 &&
if (DIST < closeDist) { !game.isChoosing) {
closeDist = DIST; powerUps.onPickUp(this.position);
this.lockedOn = powerUp[i] powerUp[i].effect();
Matter.World.remove(engine.world, powerUp[i]);
powerUp.splice(i, 1);
if (mod.isDroneGrab) {
this.isImproved = true;
const SCALE = 2
Matter.Body.scale(this, SCALE, SCALE);
this.lookFrequency = 30;
this.endCycle = Infinity
this.dmg *= 1.5;
this.frictionAir = 0
}
break;
} }
} //look for power ups to lock onto
if (Vector.magnitudeSquared(Vector.sub(this.position, powerUp[i].position)) < 60000 && !game.isChoosing) { if (
powerUps.onPickUp(this.position); Matter.Query.ray(map, this.position, powerUp[i].position).length === 0 &&
powerUp[i].effect(); Matter.Query.ray(body, this.position, powerUp[i].position).length === 0
Matter.World.remove(engine.world, powerUp[i]); ) {
powerUp.splice(i, 1); const TARGET_VECTOR = Vector.sub(this.position, powerUp[i].position)
if (mod.isDroneGrab) { const DIST = Vector.magnitude(TARGET_VECTOR);
this.isImproved = true; if (DIST < closeDist) {
const SCALE = 2 closeDist = DIST;
Matter.Body.scale(this, SCALE, SCALE); this.lockedOn = powerUp[i]
this.lookFrequency = 30; }
this.endCycle = Infinity
this.dmg *= 1.5;
this.frictionAir = 0
} }
break;
} }
} }
} }
@@ -1563,6 +1570,34 @@ const b = {
} }
bullet[me].do = function () { bullet[me].do = function () {
this.force.y += this.mass * 0.0003; this.force.y += this.mass * 0.0003;
// //place in bullet do
// //slow player
// const range = 1000
// if (Vector.magnitude(Vector.sub(player.position, this.position)) < range) {
// Matter.Body.setVelocity(player, {
// x: player.velocity.x * 0.95,
// y: player.velocity.y * 0.95
// });
// }
// //aoe damage to mobs
// for (let i = 0, len = mob.length; i < len; i++) {
// if (Vector.magnitude(Vector.sub(mob[i].position, this.position)) < range) {
// let dmg = b.dmgScale * 0.023
// if (Matter.Query.ray(map, mob[i].position, this.position).length > 0) dmg *= 0.5 //reduce damage if a wall is in the way
// if (mob[i].shield) dmg *= 5 //x5 to make up for the /5 that shields normally take
// mob[i].damage(dmg);
// mob[i].locatePlayer();
// }
// }
// //draw it
// ctx.beginPath();
// ctx.arc(this.position.x, this.position.y, range, 0, 2 * Math.PI);
// ctx.fillStyle = `rgba(255,0,0,0.2)`;
// ctx.fill();
}; };
} }
}, },
@@ -1797,9 +1832,9 @@ const b = {
}, },
{ {
name: "wave beam", name: "wave beam",
description: "emit a <strong>sine wave</strong> of oscillating particles<br>particles <strong>slowly</strong> propagate through <strong>solids</strong>", description: "emit a <strong>sine wave</strong> of oscillating particles<br>that can propagate <strong>through solids</strong>",
ammo: 0, ammo: 0,
ammoPack: 80, ammoPack: 70,
have: false, have: false,
fire() { fire() {
mech.fireCDcycle = mech.cycle + Math.floor(3 * b.fireCD); // cool down mech.fireCDcycle = mech.cycle + Math.floor(3 * b.fireCD); // cool down
@@ -1871,7 +1906,7 @@ const b = {
for (let i = 0; i < q.length; i++) { for (let i = 0; i < q.length; i++) {
slowCheck = 0.3; slowCheck = 0.3;
Matter.Body.setPosition(this, Vector.add(this.position, q[i].velocity)) //move with the medium Matter.Body.setPosition(this, Vector.add(this.position, q[i].velocity)) //move with the medium
let dmg = b.dmgScale * 0.37 / Math.sqrt(q[i].mass) * (mod.waveHelix === 1 ? 1 : 0.6) //1 - 0.4 = 0.6 for helix mod 40% damage reduction let dmg = b.dmgScale * 0.36 / Math.sqrt(q[i].mass) * (mod.waveHelix === 1 ? 1 : 0.66) //1 - 0.4 = 0.6 for helix mod 40% damage reduction
q[i].damage(dmg); q[i].damage(dmg);
q[i].foundPlayer(); q[i].foundPlayer();
game.drawList.push({ //add dmg to draw queue game.drawList.push({ //add dmg to draw queue
@@ -2202,7 +2237,7 @@ const b = {
}, },
{ {
name: "neutron bomb", name: "neutron bomb",
description: "toss a chunk of <strong class='color-p'>Cf-252</strong> that emits <strong class='color-p'>neutrons</strong><br><strong class='color-d'>damages</strong> and drains <strong class='color-f'>energy</strong> in area of effect", description: "toss a chunk of <strong class='color-p'>Cf-252</strong> which emits <strong class='color-p'>neutrons</strong><br>that do <strong class='color-d'>damage</strong>, <strong class='color-harm'>harm</strong>, and <strong class='color-f'>energy</strong> drain",
ammo: 0, ammo: 0,
ammoPack: 5, ammoPack: 5,
have: false, have: false,
@@ -2591,19 +2626,18 @@ const b = {
bullet[me].endCycle = Infinity bullet[me].endCycle = Infinity
bullet[me].charge = 0; bullet[me].charge = 0;
bullet[me].do = function () { bullet[me].do = function () {
if ((!game.mouseDown && this.charge > 0.6) || mech.energy < 0.005) { //fire on mouse release if (mech.energy < 0.005 && !mod.isRailTimeSlow) {
if (mech.energy < 0.005 && !mod.isRailTimeSlow) { mech.energy += 0.05 + this.charge * 0.3
// this.charge = 0; mech.fireCDcycle = mech.cycle + 120; // cool down if out of energy
mech.energy += this.charge * 0.4 this.endCycle = 0;
mech.fireCDcycle = mech.cycle + 120; // cool down if out of energy return
this.endCycle = 0; }
return
} else { if ((!game.mouseDown && this.charge > 0.6)) { //fire on mouse release or on low energy
mech.fireCDcycle = mech.cycle + 2; // set fire cool down mech.fireCDcycle = mech.cycle + 2; // set fire cool down
//normal bullet behavior occurs after firing, overwrite this function //normal bullet behavior occurs after firing, overwrites this function
this.do = function () { this.do = function () {
this.force.y += this.mass * 0.0003 / this.charge; // low gravity that scales with charge this.force.y += this.mass * 0.0003 / this.charge; // low gravity that scales with charge
}
} }
if (mod.isRailTimeSlow) { if (mod.isRailTimeSlow) {
game.fpsCap = game.fpsCapDefault game.fpsCap = game.fpsCapDefault
@@ -2653,7 +2687,7 @@ const b = {
mob[i].force.y += 1.5 * FORCE.y; mob[i].force.y += 1.5 * FORCE.y;
} }
} }
} else if (mech.energy > 0.005) { // charging on mouse down } else { // charging on mouse down
mech.fireCDcycle = Infinity //can't fire until mouse is released mech.fireCDcycle = Infinity //can't fire until mouse is released
const lastCharge = this.charge const lastCharge = this.charge
let chargeRate = (mech.crouch) ? 0.98 : 0.984 let chargeRate = (mech.crouch) ? 0.98 : 0.984

View File

@@ -112,6 +112,7 @@ const game = {
}, },
g: 0.0024, // applies to player, bodies, and power ups (not mobs) g: 0.0024, // applies to player, bodies, and power ups (not mobs)
onTitlePage: true, onTitlePage: true,
isCheating: false,
paused: false, paused: false,
isChoosing: false, isChoosing: false,
testing: false, //testing mode: shows wire frame and some variables testing: false, //testing mode: shows wire frame and some variables
@@ -347,8 +348,9 @@ const game = {
if (game.isConstructionMode) { if (game.isConstructionMode) {
document.getElementById("construct").style.display = 'none' document.getElementById("construct").style.display = 'none'
} }
} else { } else { //if (keys[191])
game.testing = true; game.testing = true;
game.isCheating = true;
if (game.isConstructionMode) { if (game.isConstructionMode) {
document.getElementById("construct").style.display = 'inline' document.getElementById("construct").style.display = 'inline'
} }
@@ -500,12 +502,14 @@ const game = {
player.force.y += player.mass * game.g; player.force.y += player.mass * game.g;
}, },
reset() { //run on first run, and each later run after you die reset() { //run on first run, and each later run after you die
game.isCheating = false
b.removeAllGuns(); b.removeAllGuns();
mod.setupAllMods(); //sets mods to default values mod.setupAllMods(); //sets mods to default values
b.setFireCD(); b.setFireCD();
game.updateModHUD(); game.updateModHUD();
powerUps.totalPowerUps = 0; powerUps.totalPowerUps = 0;
powerUps.reroll.rerolls = 0; powerUps.reroll.rerolls = 0;
mech.setFillColors();
mech.maxHealth = 1 mech.maxHealth = 1
mech.maxEnergy = 1 mech.maxEnergy = 1
mech.energy = 1 mech.energy = 1
@@ -792,10 +796,11 @@ const game = {
testingOutput() { testingOutput() {
ctx.fillStyle = "#000"; ctx.fillStyle = "#000";
if (!game.isConstructionMode) { if (!game.isConstructionMode) {
ctx.textAlign = "right"; // ctx.textAlign = "right";
let line = 500; ctx.fillText("T: exit testing mode", canvas.width / 2, canvas.height - 10);
const x = canvas.width - 5; // let line = 500;
ctx.fillText("T: exit testing mode", x, line); // const x = canvas.width - 5;
// ctx.fillText("T: exit testing mode", x, line);
// line += 20; // line += 20;
// ctx.fillText("Y: give all mods", x, line); // ctx.fillText("Y: give all mods", x, line);
// line += 20; // line += 20;

View File

@@ -398,6 +398,7 @@ const build = {
function openCustomBuildMenu() { function openCustomBuildMenu() {
build.isURLBuild = false; build.isURLBuild = false;
game.isCheating = true;
document.getElementById("build-button").style.display = "none"; document.getElementById("build-button").style.display = "none";
const el = document.getElementById("build-grid") const el = document.getElementById("build-grid")
el.style.display = "grid" el.style.display = "grid"
@@ -441,6 +442,7 @@ if (localSettings) {
isCommunityMaps: false, isCommunityMaps: false,
difficultyMode: '1', difficultyMode: '1',
fpsCapDefault: 'max', fpsCapDefault: 'max',
runCount: -1,
}; };
localStorage.setItem("localSettings", JSON.stringify(localSettings)); //update local storage localStorage.setItem("localSettings", JSON.stringify(localSettings)); //update local storage
document.getElementById("community-maps").checked = localSettings.isCommunityMaps document.getElementById("community-maps").checked = localSettings.isCommunityMaps
@@ -466,7 +468,9 @@ function setupCanvas() {
canvas.width2 = canvas.width / 2; //precalculated because I use this often (in mouse look) canvas.width2 = canvas.width / 2; //precalculated because I use this often (in mouse look)
canvas.height2 = canvas.height / 2; canvas.height2 = canvas.height / 2;
canvas.diagonal = Math.sqrt(canvas.width2 * canvas.width2 + canvas.height2 * canvas.height2); canvas.diagonal = Math.sqrt(canvas.width2 * canvas.width2 + canvas.height2 * canvas.height2);
ctx.font = "18px Arial"; // ctx.font = "18px Arial";
// ctx.textAlign = "center";
ctx.font = "25px Arial";
ctx.lineJoin = "round"; ctx.lineJoin = "round";
ctx.lineCap = "round"; ctx.lineCap = "round";
// ctx.lineCap='square'; // ctx.lineCap='square';

View File

@@ -16,10 +16,9 @@ const level = {
// game.zoomScale = 1000; // game.zoomScale = 1000;
// game.setZoom(); // game.setZoom();
// mech.isStealth = true; // mech.isStealth = true;
// mod.giveMod("bot replication");
// mod.nailBotCount += 10
// b.giveGuns("rail gun") // b.giveGuns("rail gun")
// mech.setField("plasma torch") // mech.setField("standing wave harmonics")
// mod.giveMod("frame-dragging");
level.intro(); //starting level level.intro(); //starting level
// level.testing(); //not in rotation // level.testing(); //not in rotation
@@ -40,6 +39,10 @@ const level = {
spawn.setSpawnList(); //picks a couple mobs types for a themed random mob spawns spawn.setSpawnList(); //picks a couple mobs types for a themed random mob spawns
// spawn.pickList = ["focuser", "focuser"] // spawn.pickList = ["focuser", "focuser"]
level[level.levels[level.onLevel]](); //picks the current map from the the levels array level[level.levels[level.onLevel]](); //picks the current map from the the levels array
if (!game.isCheating) {
localSettings.runCount += level.levelsCleared //track the number of total runs locally
localStorage.setItem("localSettings", JSON.stringify(localSettings)); //update local storage
}
} }
level.levelAnnounce(); level.levelAnnounce();
game.noCameraScroll(); game.noCameraScroll();
@@ -629,7 +632,71 @@ const level = {
level.custom = () => { level.custom = () => {
level.playerExitCheck(); level.playerExitCheck();
}; };
level.customTopLayer = () => {}; // ctx.font = "30px Arial";
// ctx.textAlign = "center";
level.customTopLayer = () => {
// ctx.fillStyle = '#000';
// ctx.fillText(`${(localSettings.runCount >>> 0).toString(2)}`, 2850, -530);
};
const binary = (localSettings.runCount >>> 0).toString(2)
const height = 25
const thick = 2
const color = "#aaa"
const xOff = -130 //2622
const yOff = -45 //-580
let xLetter = 0
for (let i = 0; i < binary.length; i++) {
if (binary[i] === "0") {
zero(xOff + xLetter, yOff)
} else {
one(xOff + xLetter, yOff)
}
}
function one(x, y) {
level.fillBG.push({
x: x,
y: y,
width: thick,
height: height,
color: color
});
xLetter += 10
}
function zero(x, y) {
const width = 10
level.fillBG.push({
x: x,
y: y,
width: thick,
height: height,
color: color
});
level.fillBG.push({
x: x + width,
y: y,
width: thick,
height: height,
color: color
});
level.fillBG.push({
x: x,
y: y,
width: width,
height: thick,
color: color
});
level.fillBG.push({
x: x,
y: y + height - thick,
width: width,
height: thick,
color: color
});
xLetter += 10 + width
}
level.setPosToSpawn(460, -100); //normal spawn level.setPosToSpawn(460, -100); //normal spawn
level.enter.x = -1000000; //hide enter graphic for first level by moving to the far left level.enter.x = -1000000; //hide enter graphic for first level by moving to the far left
@@ -1981,13 +2048,13 @@ const level = {
spawn.debris(3500, -650, 800, 5); //1st floor debris //16 debris per level spawn.debris(3500, -650, 800, 5); //1st floor debris //16 debris per level
powerUps.spawnStartingPowerUps(-525, -700); powerUps.spawnStartingPowerUps(-525, -700);
spawn.mapRect(-600, 25, 5600, 300); //ground spawn.mapRect(-600, 0, 2000, 325); //ground
spawn.mapRect(-600, 0, 2000, 50); //ground spawn.mapRect(1400, 25, 1600, 300); //ground
spawn.mapRect(3000, 0, 2000, 325); //ground
spawn.mapRect(-600, -1700, 50, 2000 - 100); //left wall spawn.mapRect(-600, -1700, 50, 2000 - 100); //left wall
spawn.bodyRect(-295, -1540, 40, 40); //center block under wall spawn.bodyRect(-295, -1540, 40, 40); //center block under wall
spawn.bodyRect(-298, -1580, 40, 40); //center block under wall spawn.bodyRect(-298, -1580, 40, 40); //center block under wall
spawn.bodyRect(1500, -1540, 30, 30); //left of entrance spawn.bodyRect(1500, -1540, 30, 30); //left of entrance
spawn.mapRect(1550, -2000, 50, 550); //right wall spawn.mapRect(1550, -2000, 50, 550); //right wall
spawn.mapRect(1350, -2000 + 505, 50, 1295); //right wall spawn.mapRect(1350, -2000 + 505, 50, 1295); //right wall
spawn.mapRect(-600, -2000 + 250, 2000 - 700, 50); //roof left spawn.mapRect(-600, -2000 + 250, 2000 - 700, 50); //roof left
@@ -2022,9 +2089,7 @@ const level = {
spawn.bodyRect(700, -400, 100, 100); //center block under wall spawn.bodyRect(700, -400, 100, 100); //center block under wall
spawn.mapRect(1390, 13, 30, 20); //step left spawn.mapRect(1390, 13, 30, 20); //step left
spawn.mapRect(2980, 13, 30, 20); //step right spawn.mapRect(2980, 13, 30, 20); //step right
spawn.mapRect(3000, 0, 2000, 50); //ground
spawn.bodyRect(4250, -700, 50, 100); spawn.bodyRect(4250, -700, 50, 100);
// spawn.bodyRect(3000, -200, 50, 200); //door
spawn.mapRect(3000, -1000, 50, 800); //left wall spawn.mapRect(3000, -1000, 50, 800); //left wall
spawn.mapRect(3000 + 2000 - 50, -1300, 50, 1100); //right wall spawn.mapRect(3000 + 2000 - 50, -1300, 50, 1100); //right wall
spawn.mapRect(4150, -600, 350, 150); //table spawn.mapRect(4150, -600, 350, 150); //table

View File

@@ -86,7 +86,7 @@ const mod = {
if (mod.isAcidDmg && mech.health > 1) dmg *= 1.4; if (mod.isAcidDmg && mech.health > 1) dmg *= 1.4;
if (mod.isRest && player.speed < 1) dmg *= 1.20; if (mod.isRest && player.speed < 1) dmg *= 1.20;
if (mod.isEnergyDamage) dmg *= 1 + mech.energy / 5.5; if (mod.isEnergyDamage) dmg *= 1 + mech.energy / 5.5;
if (mod.isDamageFromBulletCount) dmg *= 1 + bullet.length * 0.005 if (mod.isDamageFromBulletCount) dmg *= 1 + bullet.length * 0.004
if (mod.isRerollDamage) dmg *= 1 + 0.05 * powerUps.reroll.rerolls if (mod.isRerollDamage) dmg *= 1 + 0.05 * powerUps.reroll.rerolls
if (mod.isOneGun && b.inventory.length < 2) dmg *= 1.25 if (mod.isOneGun && b.inventory.length < 2) dmg *= 1.25
return dmg * mod.slowFire return dmg * mod.slowFire
@@ -693,7 +693,7 @@ const mod = {
mech.immuneCycle = mech.cycle + mod.collisionImmuneCycles; //player is immune to collision damage for 30 cycles mech.immuneCycle = mech.cycle + mod.collisionImmuneCycles; //player is immune to collision damage for 30 cycles
}, },
remove() { remove() {
mod.collisionImmuneCycles = 15; mod.collisionImmuneCycles = 25;
} }
}, },
{ {
@@ -1341,7 +1341,7 @@ const mod = {
}, },
{ {
name: "microstates", name: "microstates",
description: "increase <strong class='color-d'>damage</strong> by <strong>5%</strong><br>for every <strong>10</strong> active <strong>bullets</strong>", description: "increase <strong class='color-d'>damage</strong> by <strong>4%</strong><br>for every <strong>10</strong> active <strong>bullets</strong>",
maxCount: 1, maxCount: 1,
count: 0, count: 0,
allowed() { allowed() {
@@ -2013,6 +2013,8 @@ const mod = {
}, },
remove() { remove() {
mod.isRailTimeSlow = false; mod.isRailTimeSlow = false;
game.fpsCap = game.fpsCapDefault
game.fpsInterval = 1000 / game.fpsCap;
} }
}, },
{ {
@@ -2268,7 +2270,7 @@ const mod = {
}, },
requires: "standing wave harmonics", requires: "standing wave harmonics",
effect() { effect() {
mod.blockDmg += 0.35 //if you change this value also update the for loop in the electricity graphics in mech.pushMass mod.blockDmg += 0.66 //if you change this value also update the for loop in the electricity graphics in mech.pushMass
}, },
remove() { remove() {
mod.blockDmg = 0; mod.blockDmg = 0;
@@ -2284,7 +2286,7 @@ const mod = {
}, },
requires: "standing wave harmonics", requires: "standing wave harmonics",
effect() { effect() {
mech.fieldRange += 175 * 0.21 mech.fieldRange += 175 * 0.17
mech.fieldShieldingScale *= 0.6 mech.fieldShieldingScale *= 0.6
}, },
remove() { remove() {
@@ -2359,7 +2361,7 @@ const mod = {
}, },
{ {
name: "renormalization", name: "renormalization",
description: "using a <strong class='color-r'>reroll</strong> to change selection options<br>has a <strong>60%</strong> chance to spawn a <strong class='color-r'>reroll</strong>", description: "using a <strong class='color-r'>reroll</strong> to change selection options<br>has a <strong>66%</strong> chance to spawn a <strong class='color-r'>reroll</strong>",
maxCount: 1, maxCount: 1,
count: 0, count: 0,
allowed() { allowed() {
@@ -2375,7 +2377,7 @@ const mod = {
}, },
{ {
name: "superposition", name: "superposition",
description: "mobs that <strong>touch</strong> the <strong>phased</strong> player<br> are <strong>stunned</strong> for <strong>4</strong> seconds", description: "mobs that <strong>touch</strong> the <strong>phased</strong> player<br> are <strong>stunned</strong> for <strong>5</strong> seconds",
maxCount: 1, maxCount: 1,
count: 0, count: 0,
allowed() { allowed() {

View File

@@ -57,8 +57,16 @@ const mech = {
lastHarmCycle: 0, lastHarmCycle: 0,
width: 50, width: 50,
radius: 30, radius: 30,
fillColor: "#fff", //changed by mod piezoelectric plating (damage immunity) fillColor: "#fff",
fillColorDark: "#ccc", fillColorDark: "#ccc",
setFillColors() {
const hue = 0
const saturation = 10
const light = 70 + mech.harmReduction() * 30
// console.log(mech.harmReduction())
this.fillColor = `hsl(${hue},${saturation}%,${light}%)`
this.fillColorDark = `hsl(${hue},${saturation}%,${light-20}%)`
},
height: 42, height: 42,
yOffWhen: { yOffWhen: {
crouch: 22, crouch: 22,
@@ -967,8 +975,8 @@ const mech = {
} }
if (mech.energy > mech.maxEnergy) mech.energy = mech.maxEnergy; if (mech.energy > mech.maxEnergy) mech.energy = mech.maxEnergy;
if (mod.blockDmg && mech.fieldUpgrades[mech.fieldMode].name === "standing wave harmonics") { if (mod.blockDmg) {
who.damage(mod.blockDmg) who.damage(mod.blockDmg * b.dmgScale)
//draw electricity //draw electricity
const step = 40 const step = 40
ctx.beginPath(); ctx.beginPath();
@@ -1797,7 +1805,7 @@ const mech = {
// inPlayer[i].damage(0.4 * b.dmgScale); //damage mobs inside the player // inPlayer[i].damage(0.4 * b.dmgScale); //damage mobs inside the player
// mech.energy += 0.005; // mech.energy += 0.005;
mobs.statusStun(inPlayer[i], 240) mobs.statusStun(inPlayer[i], 300)
//draw outline of mob in a few random locations to show blurriness //draw outline of mob in a few random locations to show blurriness
const vertices = inPlayer[i].vertices; const vertices = inPlayer[i].vertices;
const off = 30 const off = 30

View File

@@ -100,7 +100,7 @@ const powerUps = {
use(type) { //runs when you actually reroll a list of selections, type can be field, gun, or mod use(type) { //runs when you actually reroll a list of selections, type can be field, gun, or mod
powerUps.reroll.changeRerolls(-1) powerUps.reroll.changeRerolls(-1)
powerUps[type].effect(); powerUps[type].effect();
if (mod.renormalization && Math.random() < 0.6) { if (mod.renormalization && Math.random() < 0.66) {
powerUps.spawn(mech.pos.x, mech.pos.y, "reroll"); powerUps.spawn(mech.pos.x, mech.pos.y, "reroll");
if (Math.random() < mod.bayesian) powerUps.spawn(mech.pos.x, mech.pos.y, "reroll"); if (Math.random() < mod.bayesian) powerUps.spawn(mech.pos.x, mech.pos.y, "reroll");
} }

View File

@@ -368,7 +368,7 @@ const spawn = {
// Matter.Body.setDensity(me, 0.0007); //extra dense //normal is 0.001 //makes effective life much lower // Matter.Body.setDensity(me, 0.0007); //extra dense //normal is 0.001 //makes effective life much lower
me.friction = 0; me.friction = 0;
me.frictionAir = 0; me.frictionAir = 0;
me.accelMag = 0.001 * game.accelScale;; me.accelMag = 0.001 * Math.sqrt(game.accelScale);
me.g = me.accelMag * 0.6; //required if using 'gravity' me.g = me.accelMag * 0.6; //required if using 'gravity'
me.memory = 50; me.memory = 50;
spawn.shield(me, x, y); spawn.shield(me, x, y);

View File

@@ -492,11 +492,19 @@ em {
} }
.circle-grid { .circle-grid {
width: 23px; width: 27px;
height: 23px; height: 27px;
border-radius: 50%; border-radius: 50%;
display: inline-block; display: inline-block;
margin-bottom: -5px; margin-bottom: -7px;
}
.circle-grid-shadow {
width: 43px;
height: 43px;
border-radius: 50%;
display: inline-block;
margin-bottom: -15px;
} }
.circle-gun-mod { .circle-gun-mod {
@@ -527,7 +535,7 @@ em {
} }
.gun { .gun {
background: #149; background: rgb(15, 75, 179);
} }
.heal { .heal {

View File

@@ -1,9 +1,21 @@
mods: foam does 200% more damage, but dissolves 50% faster base collisions immunity frames is now 25/60 of a second (up from 15/60)
mod: bremsstrahlung radiation - damage increased by 5x
bug fix it is now properly affected by damage scaling (huge nerf late game)
************** TODO - n-gon ************** ************** TODO - n-gon **************
look into why wave beam is so good vs. shields
group shields having way too much health at higher levels?
give missiles a suck and delay explosion, like vacuum bomb
bot, does AOE damage while it rotates around player
no physics / collisions
cap 3 ?
Mod: "Instant Acceleration": Minigun instantly starts firing at max fire rate, skipping the accelerated fire rate stage. Mod: "Instant Acceleration": Minigun instantly starts firing at max fire rate, skipping the accelerated fire rate stage.