harmonic mod balance
This commit is contained in:
@@ -185,7 +185,22 @@ const b = {
|
||||
b.isModImmuneExplosion = false;
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name: "thermal runaway",
|
||||
description: "mobs <strong class='color-e'>explode</strong> when they <strong>die</strong>",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
allowed() {
|
||||
return b.isModImmuneExplosion
|
||||
},
|
||||
requires: "electric reactive armour",
|
||||
effect: () => {
|
||||
b.isModExplodeMob = true;
|
||||
},
|
||||
remove() {
|
||||
b.isModExplodeMob = false;
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "auto-loading heuristics",
|
||||
description: "your <strong>delay</strong> after firing is <strong>+14% shorter</strong>",
|
||||
@@ -323,22 +338,6 @@ const b = {
|
||||
b.modMobDieAtHealth = 0.05;
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "thermal runaway",
|
||||
description: "mobs <strong class='color-e'>explode</strong> when they <strong>die</strong>",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
allowed() {
|
||||
return b.modMobDieAtHealth > 0.05
|
||||
},
|
||||
requires: "reaction inhibitor",
|
||||
effect: () => {
|
||||
b.isModExplodeMob = true;
|
||||
},
|
||||
remove() {
|
||||
b.isModExplodeMob = false;
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "waste energy recovery",
|
||||
description: "regen <strong>7%</strong> of max <strong class='color-f'>energy</strong> every second<br>active for <strong>5 seconds</strong> after a mob <strong>dies</strong>",
|
||||
@@ -1002,7 +1001,7 @@ const b = {
|
||||
},
|
||||
{
|
||||
name: "perfect diamagnetism",
|
||||
description: "when <strong>blocking</strong> with the basic <strong>field emitter</strong><br>gain <strong class='color-f'>energy</strong> instead losing it",
|
||||
description: "when <strong>blocking</strong> with the starting <strong>field emitter</strong><br>gain <strong class='color-f'>energy</strong> instead losing it",
|
||||
maxCount: 1,
|
||||
count: 0,
|
||||
allowed() {
|
||||
@@ -1051,19 +1050,21 @@ const b = {
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "field superposition",
|
||||
description: "increase <strong>field radii</strong> by <strong>40%</strong>",
|
||||
maxCount: 1,
|
||||
name: "frequency resonance",
|
||||
description: "<strong>standing wave harmonics</strong> shield is retuned<br>increase <strong>size</strong> and <strong>blocking</strong> efficiency by <strong>30%</strong>",
|
||||
maxCount: 9,
|
||||
count: 0,
|
||||
allowed() {
|
||||
return mech.fieldUpgrades[mech.fieldMode].name === "standing wave harmonics"
|
||||
},
|
||||
requires: "standing wave harmonics",
|
||||
effect() {
|
||||
mech.fieldRange = 175 * 1.4
|
||||
mech.fieldRange += 175 * 0.2
|
||||
mech.fieldShieldingScale *= 0.7
|
||||
},
|
||||
remove() {
|
||||
mech.fieldRange = 175;
|
||||
mech.fieldShieldingScale = 1;
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1329,7 +1330,7 @@ const b = {
|
||||
|
||||
if (dist < radius) {
|
||||
if (b.isModImmuneExplosion) {
|
||||
const drain = Math.max(radius * 0.0006, 0.2)
|
||||
const drain = Math.max(radius * 0.0004, 0.2)
|
||||
if (mech.energy > drain) {
|
||||
mech.energy -= drain
|
||||
} else {
|
||||
@@ -2091,7 +2092,7 @@ const b = {
|
||||
name: "super balls", //2
|
||||
description: "fire <strong>four</strong> balls in a wide arc<br>balls <strong>bounce</strong> with no momentum loss",
|
||||
ammo: 0,
|
||||
ammoPack: 9,
|
||||
ammoPack: 10,
|
||||
have: false,
|
||||
num: 5,
|
||||
isStarterGun: true,
|
||||
@@ -2105,7 +2106,7 @@ const b = {
|
||||
let dir = mech.angle - SPREAD * (b.modSuperBallNumber - 1) / 2;
|
||||
for (let i = 0; i < b.modSuperBallNumber; i++) {
|
||||
const me = bullet.length;
|
||||
bullet[me] = Bodies.polygon(mech.pos.x + 30 * Math.cos(mech.angle), mech.pos.y + 30 * Math.sin(mech.angle), 10, 7 * b.modBulletSize, b.fireAttributes(dir, false));
|
||||
bullet[me] = Bodies.polygon(mech.pos.x + 30 * Math.cos(mech.angle), mech.pos.y + 30 * Math.sin(mech.angle), 12, 7 * b.modBulletSize, b.fireAttributes(dir, false));
|
||||
World.add(engine.world, bullet[me]); //add bullet to world
|
||||
Matter.Body.setVelocity(bullet[me], {
|
||||
x: SPEED * Math.cos(dir),
|
||||
@@ -2182,7 +2183,7 @@ const b = {
|
||||
const me = bullet.length;
|
||||
const dir = mech.angle
|
||||
const SPEED = 10
|
||||
const wiggleMag = mech.crouch ? 4 : 11
|
||||
const wiggleMag = mech.crouch ? 3 : 10
|
||||
bullet[me] = Bodies.polygon(mech.pos.x + 25 * Math.cos(dir), mech.pos.y + 25 * Math.sin(dir), 7, 5 * b.modBulletSize, {
|
||||
angle: dir,
|
||||
cycle: 0,
|
||||
|
||||
@@ -15,7 +15,7 @@ const level = {
|
||||
if (level.levelsCleared === 0) {
|
||||
// level.difficultyIncrease(9)
|
||||
// b.giveGuns("wave beam")
|
||||
// mech.setField("negative mass field")
|
||||
// mech.setField("plasma torch")
|
||||
// b.giveMod("wave phase velocity");
|
||||
// b.giveMod("reflective cavity");
|
||||
|
||||
|
||||
16
js/player.js
16
js/player.js
@@ -664,6 +664,7 @@ const mech = {
|
||||
fieldEnergyMax: 1, //can be increased by a mod
|
||||
holdingTarget: null,
|
||||
fieldShieldingScale: 1,
|
||||
fieldRange: 175,
|
||||
// these values are set on reset by setHoldDefaults()
|
||||
energy: 0,
|
||||
fieldRegen: 0,
|
||||
@@ -672,7 +673,6 @@ const mech = {
|
||||
holdingMassScale: 0,
|
||||
throwChargeRate: 0,
|
||||
throwChargeMax: 0,
|
||||
fieldRange: 175,
|
||||
fieldArc: 0,
|
||||
fieldThreshold: 0,
|
||||
calculateFieldThreshold() {
|
||||
@@ -681,6 +681,7 @@ const mech = {
|
||||
setHoldDefaults() {
|
||||
if (mech.energy < mech.fieldEnergyMax) mech.energy = mech.fieldEnergyMax;
|
||||
mech.fieldRegen = 0.001;
|
||||
mech.fieldShieldingScale = 1;
|
||||
mech.fieldFire = false;
|
||||
mech.fieldCDcycle = 0;
|
||||
mech.isStealth = false;
|
||||
@@ -1148,7 +1149,6 @@ const mech = {
|
||||
isEasyToAim: true,
|
||||
effect: () => {
|
||||
mech.fieldFire = true;
|
||||
// mech.fieldRange = 130
|
||||
mech.isBodiesAsleep = false;
|
||||
mech.hold = function () {
|
||||
if (mech.isHolding) {
|
||||
@@ -1346,7 +1346,8 @@ const mech = {
|
||||
let y = mech.pos.y + 20 * Dy;
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x, y);
|
||||
const step = range / 10
|
||||
const step = Vector.magnitude(Vector.sub(path[0], path[1])) / 10
|
||||
|
||||
for (let i = 0; i < 8; i++) {
|
||||
x += step * (Dx + 1.5 * (Math.random() - 0.5))
|
||||
y += step * (Dy + 1.5 * (Math.random() - 0.5))
|
||||
@@ -1538,13 +1539,12 @@ const mech = {
|
||||
if (mech.energy > mech.fieldEnergyMax - 0.02 && mech.fieldCDcycle < mech.cycle) {
|
||||
mech.fieldCDcycle = mech.cycle + 17; // set cool down to prevent +energy from making huge numbers of drones
|
||||
if (b.isModSporeField) {
|
||||
const len = Math.floor(7 + 3 * Math.random())
|
||||
mech.energy -= len * 0.1;
|
||||
const len = Math.floor(6 + 3 * Math.random())
|
||||
mech.energy -= len * 0.08;
|
||||
for (let i = 0; i < len; i++) {
|
||||
b.spore(player)
|
||||
}
|
||||
}
|
||||
if (b.isModMissileField) {
|
||||
} else if (b.isModMissileField) {
|
||||
mech.energy -= 0.55;
|
||||
b.missile({
|
||||
x: mech.pos.x + 40 * Math.cos(mech.angle),
|
||||
@@ -1582,7 +1582,6 @@ const mech = {
|
||||
description: "become <strong>intangible</strong> and <strong>invisible</strong><br>drains <strong class='color-f'>energy</strong> as you move",
|
||||
isEasyToAim: true,
|
||||
effect: () => {
|
||||
// mech.fieldRange = 230
|
||||
mech.hold = function () {
|
||||
mech.isStealth = false //isStealth disables most uses of foundPlayer()
|
||||
player.collisionFilter.mask = cat.body | cat.map | cat.mob | cat.mobBullet | cat.mobShield //normal collisions
|
||||
@@ -1630,7 +1629,6 @@ const mech = {
|
||||
// mech.fieldText();
|
||||
// mech.setHoldDefaults();
|
||||
// mech.hackProgress = 0;
|
||||
// // mech.fieldRange = 230
|
||||
// mech.hold = function () {
|
||||
// mech.isStealth = false //isStealth is checked in mob foundPlayer()
|
||||
// player.collisionFilter.mask = 0x010011
|
||||
|
||||
8
todo.txt
8
todo.txt
@@ -3,11 +3,13 @@
|
||||
mobs - add in a function to the main loops that does injected code for each mob
|
||||
each mob would get an object with a game.cycle for ending and a method to run each cycle until the end is met
|
||||
this could be a DOT, graphics, slow
|
||||
mod - flechettes mod for poison damage
|
||||
|
||||
mod - get your next recursive mod 3 times
|
||||
are players aware of what a recursive mod is?
|
||||
too much of a nova drift rip off?
|
||||
|
||||
mod - vacuum bomb needs a mod
|
||||
mod - grenade needs a mod
|
||||
mod - time dilation field needs a mod
|
||||
mod - phase decoherence field needs a mod
|
||||
@@ -21,12 +23,6 @@ mod - rocket propelled grenades
|
||||
grenades do +20% damage and move in an accelerating path
|
||||
maybe explode on collision with map?
|
||||
|
||||
mod - negative mass field does damage to mobs in zone
|
||||
|
||||
mod - flechettes mod for poison damage
|
||||
other flechettes multi-shot is disabled
|
||||
mod - flechettes are guided towards targets
|
||||
|
||||
gun - buff vacuum bomb
|
||||
its weak late game
|
||||
can't spam it faster
|
||||
|
||||
Reference in New Issue
Block a user