map balance

This commit is contained in:
landgreen
2019-10-23 06:46:05 -07:00
parent de6ed64d22
commit 22b2f87a75
4 changed files with 51 additions and 46 deletions

View File

@@ -10,7 +10,7 @@ const b = {
modBulletSize: null, modBulletSize: null,
modEnergySiphon: null, modEnergySiphon: null,
modHealthDrain: null, modHealthDrain: null,
modNoAmmoChance: null, modNoAmmo: null,
modBulletsLastLonger: null, modBulletsLastLonger: null,
setModDefaults() { setModDefaults() {
b.modFireRate = 1; b.modFireRate = 1;
@@ -18,17 +18,16 @@ const b = {
b.modBulletSize = 1; b.modBulletSize = 1;
b.modEnergySiphon = 0; b.modEnergySiphon = 0;
b.modHealthDrain = 0; b.modHealthDrain = 0;
b.modNoAmmoChance = 0; b.modNoAmmo = 0;
b.modBulletsLastLonger = 1; b.modBulletsLastLonger = 1;
}, },
mods: [ mods: [
() => { () => {
b.mod = 0; b.mod = 0;
game.makeTextLog("<strong style='font-size:30px;'>Auto-Loading Heuristics</strong><br> (left click)<p>your <strong>rate of fire</strong> 20% is faster</p>", 1200); game.makeTextLog("<strong style='font-size:30px;'>Auto-Loading Heuristics</strong><br> (left click)<p>your <strong>rate of fire</strong> 15% is faster</p>", 1200);
b.setModDefaults(); //good for guns with extra ammo: needles, M80, rapid fire, flak, super balls b.setModDefaults(); //good for guns with extra ammo: needles, M80, rapid fire, flak, super balls
b.modFireRate = 0.8 b.modFireRate = 0.85
//ADD: need to add in something that changes game play //ADD: need to add in something that changes game play
//take damage if fire is held down too long?
}, },
() => { () => {
b.mod = 1; b.mod = 1;
@@ -40,39 +39,36 @@ const b = {
}, },
() => { () => {
b.mod = 2; b.mod = 2;
game.makeTextLog("<strong style='font-size:30px;'>High Caliber Bullets</strong><br> (left click)<p>your bullets are 8% <strong>larger</strong> and do more physical damage</p>", 1200); game.makeTextLog("<strong style='font-size:30px;'>High Caliber Bullets</strong><br> (left click)<p>your bullets are 7% <strong>larger</strong> and do more physical damage</p>", 1200);
b.setModDefaults(); //good for guns that do mostly projectile damage: b.setModDefaults(); //good for guns that do mostly projectile damage:
//testing done at 1.15: one shot(+0.38), rapid fire(+0.25), spray, wave beam(+0.4 adds range and dmg), needles(+0.1) //testing done at 1.15: one shot(+0.38), rapid fire(+0.25), spray, wave beam(+0.4 adds range and dmg), needles(+0.1)
//testing at 1.08: spray(point blank)(+0.25), one shot(+0.16), wave beam(point blank)(+0.14) //testing at 1.08: spray(point blank)(+0.25), one shot(+0.16), wave beam(point blank)(+0.14)
b.modBulletSize = 1.08; b.modBulletSize = 1.07;
//ADD: give knock back to all guns, up damage //ADD: need to add in something that changes game play
}, },
() => { () => {
b.mod = 3; b.mod = 3;
game.makeTextLog("<strong style='font-size:30px;'>Energy Siphon</strong><br> (left click)<p>regenerate <strong>energy</strong> proportional to your damage done</p>", 1200); game.makeTextLog("<strong style='font-size:30px;'>Energy Siphon</strong><br> (left click)<p>regenerate <strong>energy</strong> proportional to your damage done</p>", 1200);
b.setModDefaults(); //good with laser, Nano-Scale Manufacturing, Standing Wave Harmonics, Phase Decoherence Field b.setModDefaults(); //good with laser, Nano-Scale Manufacturing, Standing Wave Harmonics, Phase Decoherence Field
b.modEnergySiphon = 0.3; b.modEnergySiphon = 0.2;
}, },
() => { () => {
b.mod = 4; b.mod = 4;
game.makeTextLog("<strong style='font-size:30px;'>Entropy Transfer</strong><br> (left click)<p><strong>heal</strong> proportional to your damage done</p>", 1200); game.makeTextLog("<strong style='font-size:30px;'>Entropy Transfer</strong><br> (left click)<p><strong>heal</strong> proportional to your damage done</p>", 1200);
b.setModDefaults(); //good with guns that overkill: one shot, grenade b.setModDefaults(); //good with guns that overkill: one shot, grenade
b.modHealthDrain = 0.015; b.modHealthDrain = 0.01;
//ADD: health power ups can no longer drop
}, },
() => { () => {
b.mod = 5; b.mod = 5;
game.makeTextLog("<strong style='font-size:30px;'>Desublimated Ammunition</strong><br> (left click)<p>25% chance you will not consume <strong>ammo</strong> when firing</p>", 1200); game.makeTextLog("<strong style='font-size:30px;'>Desublimated Ammunition</strong><br> (left click)<p>1 out of 3 shots will not consume <strong>ammo</strong> when crouching</p>", 1200);
b.setModDefaults(); //good with guns that have less ammo: one shot, grenades, missiles, super balls, spray b.setModDefaults(); //good with guns that have less ammo: one shot, grenades, missiles, super balls, spray
b.modNoAmmoChance = 0.25 b.modNoAmmo = 1
//ADD: only works when crouched, higher chance, maybe 50%
}, },
() => { () => {
b.mod = 6; b.mod = 6;
game.makeTextLog("<strong style='font-size:30px;'>Anti-Decay Coating</strong><br> (left click)<p>your bullets <strong>last 30% longer</strong></p>", 1200); game.makeTextLog("<strong style='font-size:30px;'>Anti-Decay Coating</strong><br> (left click)<p>your bullets <strong>last 25% longer</strong></p>", 1200);
b.setModDefaults(); //good with: drones, super balls, spore, missiles, wave beam(range), rapid fire(range), flak(range) b.setModDefaults(); //good with: drones, super balls, spore, missiles, wave beam(range), rapid fire(range), flak(range)
b.modBulletsLastLonger = 1.3 b.modBulletsLastLonger = 1.25
}, },
// () => { // () => {
// b.mod = 7; // b.mod = 7;
@@ -109,7 +105,13 @@ const b = {
if (b.guns[this.activeGun].ammo > 0) { if (b.guns[this.activeGun].ammo > 0) {
b.guns[this.activeGun].fire(); b.guns[this.activeGun].fire();
if (!(b.modNoAmmoChance && b.modNoAmmoChance > Math.random())) { if (b.modNoAmmo && mech.crouch) {
if (b.modNoAmmo % 3) {
b.guns[this.activeGun].ammo--;
game.updateGunHUD();
}
b.modNoAmmo++ //makes the no ammo toggle off and on
} else {
b.guns[this.activeGun].ammo--; b.guns[this.activeGun].ammo--;
game.updateGunHUD(); game.updateGunHUD();
} }

View File

@@ -407,6 +407,7 @@ const game = {
game.clearNow = true; game.clearNow = true;
document.getElementById("text-log").style.opacity = 0; document.getElementById("text-log").style.opacity = 0;
document.getElementById("fade-out").style.opacity = 0; document.getElementById("fade-out").style.opacity = 0;
document.title = "n-gon";
// mech.fieldUpgrades[0](); //reset to starting field? or let them keep the field // mech.fieldUpgrades[0](); //reset to starting field? or let them keep the field
if (!mech.fieldMode) mech.fieldUpgrades[0](); //reset to starting field? or let them keep the field if (!mech.fieldMode) mech.fieldUpgrades[0](); //reset to starting field? or let them keep the field
}, },

View File

@@ -2,12 +2,7 @@
/* TODO: ******************************************* /* TODO: *******************************************
***************************************************** *****************************************************
remove tediousness of puzzle mechanics when paused show details on field, mods, guns?
on highrise
add a block on the platform below the exit on the far right
in the basement, move the two blocks to the left a bit, so they are closer to the left wall player have to get over
on warehouse
only have one block holding the platform down, and put it near the right side to make it faster to push off
Find a diegetic way to see player damage (and or field meter too) Find a diegetic way to see player damage (and or field meter too)
a health meter, like the field meter above player? (doesn't work with the field meter) a health meter, like the field meter above player? (doesn't work with the field meter)
@@ -25,12 +20,11 @@ cap mods to 2
cap field to 1 cap field to 1
what about no cap to mods? what about no cap to mods?
mods without caps can't have major negatives
do I want to support a power ramping game play?
more upgrades are OK as long as they change game play more upgrades are OK as long as they change game play
no flat damage, or defense buffs no flat damage, or flat defense buffs
This makes skipping content a bad idea for the player
do I want to support a power climb game play
This makes skipping content a bad idea
Is that maybe good? No need to nerf content skipping buffs Is that maybe good? No need to nerf content skipping buffs
content skipping is a cool play style, but not core game play content skipping is a cool play style, but not core game play

View File

@@ -11,10 +11,8 @@ const level = {
levels: ["skyscrapers", "rooftops", "warehouse", "highrise", "office", "aerie"], levels: ["skyscrapers", "rooftops", "warehouse", "highrise", "office", "aerie"],
onLevel: 0, onLevel: 0,
start() { start() {
// game.zoomScale = 1400 //1400
if (game.levelsCleared === 0) { if (game.levelsCleared === 0) {
document.title = "n-gon"; // game.levelsCleared = 5; //for testing to simulate possible mobs spawns
// game.levelsCleared = 4; //for testing to simulate possible mobs spawns
// b.giveGuns(1) // set a starting gun for testing // b.giveGuns(1) // set a starting gun for testing
// b.giveGuns("all", 1000) // b.giveGuns("all", 1000)
// mech.fieldUpgrades[1]() //give a field power up for testing // mech.fieldUpgrades[1]() //give a field power up for testing
@@ -500,12 +498,12 @@ const level = {
spawn.bodyRect(3925, -1400, 100, 150, 0.8); spawn.bodyRect(3925, -1400, 100, 150, 0.8);
spawn.mapRect(3450, -1250, 1100, 50); spawn.mapRect(3450, -1250, 1100, 50);
spawn.mapRect(3450, -1225, 50, 75); spawn.mapRect(3450, -1225, 50, 75);
spawn.mapRect(4500, -1225, 50, 350); spawn.mapRect(4500, -1225, 50, 390);
spawn.mapRect(3450, -725, 1500, 50); spawn.mapRect(3450, -725, 1500, 50);
spawn.mapRect(5100, -725, 400, 50); spawn.mapRect(5100, -725, 400, 50);
spawn.mapRect(4500, -700, 50, 600); spawn.mapRect(4500, -735, 50, 635);
spawn.bodyRect(4510, -100, 30, 100, 0.8); spawn.bodyRect(4510, -100, 30, 100, 0.8);
spawn.mapRect(4500, -925, 100, 50); spawn.mapRect(4500, -885, 100, 50);
spawn.spawnStairs(3800, 0, 3, 150, 206); //stairs top exit spawn.spawnStairs(3800, 0, 3, 150, 206); //stairs top exit
spawn.mapRect(3400, -275, 450, 275); //exit platform spawn.mapRect(3400, -275, 450, 275); //exit platform
@@ -870,7 +868,8 @@ const level = {
// spawn.debris(-3950, -2575, 1050, 4); //20 debris per level // spawn.debris(-3950, -2575, 1050, 4); //20 debris per level
spawn.debris(-2325, -1825, 2400); //20 debris per level spawn.debris(-2325, -1825, 2400); //20 debris per level
spawn.debris(-2625, -600, 925); //20 debris per level spawn.debris(-2625, -600, 600, 6); //20 debris per level
spawn.debris(-2000, -60, 1200, 6); //20 debris per level
// if (!game.levelsCleared) powerUps.spawn(2450, -1675, "gun", false); // if (!game.levelsCleared) powerUps.spawn(2450, -1675, "gun", false);
//background //background
level.fillBG.push({ level.fillBG.push({
@@ -956,10 +955,16 @@ const level = {
spawn.mapRect(-1850, -1150, 1050, 175); spawn.mapRect(-1850, -1150, 1050, 175);
spawn.bodyRect(-1907, -1600, 550, 25); spawn.bodyRect(-1907, -1600, 550, 25);
spawn.bodyRect(-1400, -125, 125, 125); if (game.levelsCleared < 4) {
spawn.bodyRect(-1100, -125, 150, 125); spawn.bodyRect(-1600, -125, 125, 125);
spawn.bodyRect(-1360, -200, 75, 75); spawn.bodyRect(-1560, -200, 75, 75);
spawn.bodyRect(-1200, -75, 75, 75); } else {
spawn.bodyRect(-1200, -125, 125, 125);
spawn.bodyRect(-1160, -200, 75, 75);
}
// spawn.bodyRect(-1100, -125, 150, 125);
// spawn.bodyRect(-1200, -75, 75, 75);
//building 2 //building 2
spawn.mapRect(-4450, -600, 2300, 750); spawn.mapRect(-4450, -600, 2300, 750);
@@ -984,6 +989,9 @@ const level = {
spawn.bodyRect(-3715, -2050, 50, 50); spawn.bodyRect(-3715, -2050, 50, 50);
spawn.bodyRect(-3570, -1800, 50, 50); spawn.bodyRect(-3570, -1800, 50, 50);
spawn.bodyRect(-2970, -2250, 50, 50); spawn.bodyRect(-2970, -2250, 50, 50);
if (game.levelsCleared < 4) spawn.bodyRect(-3760, -2400, 50, 50);
spawn.bodyRect(-3080, -2250, 40, 40); spawn.bodyRect(-3080, -2250, 40, 40);
spawn.bodyRect(-3420, -650, 50, 50); spawn.bodyRect(-3420, -650, 50, 50);
@@ -1098,9 +1106,9 @@ const level = {
// spawn.mapRect(-1900, 600, 2700, 100); // spawn.mapRect(-1900, 600, 2700, 100);
spawn.mapRect(1100, 0, 150, 1500); spawn.mapRect(1100, 0, 150, 1500);
spawn.mapRect(-2850, 1400, 4100, 100); spawn.mapRect(-2850, 1400, 4100, 100);
spawn.mapRect(-2375, 875, 1775, 100); spawn.mapRect(-2375, 875, 1775, 75);
spawn.mapRect(-1450, 950, 75, 346); spawn.mapRect(-1450, 865, 75, 435);
spawn.mapRect(-1433, 662, 41, 111); spawn.mapRect(-1450, 662, 75, 100);
spawn.bodyRect(-1418, 773, 11, 102, 1, spawn.propsFriction); //blocking path spawn.bodyRect(-1418, 773, 11, 102, 1, spawn.propsFriction); //blocking path
spawn.mapRect(-2950, 1250, 175, 250); spawn.mapRect(-2950, 1250, 175, 250);
spawn.mapRect(-3050, 1100, 150, 400); spawn.mapRect(-3050, 1100, 150, 400);
@@ -1134,8 +1142,8 @@ const level = {
length: 1 length: 1
}); });
spawn.bodyRect(-2775, 1150, 180, 160, 1, spawn.propsSlide); //weight spawn.bodyRect(-2700, 1150, 100, 160, 1, spawn.propsSlide); //weight
spawn.bodyRect(-2550, 1150, 200, 150, 1, spawn.propsSlide); //weight spawn.bodyRect(-2550, 1150, 200, 100, 1, spawn.propsSlide); //weight
spawn.bodyRect(-2775, 1300, 400, 100, 1, spawn.propsHoist); //hoist spawn.bodyRect(-2775, 1300, 400, 100, 1, spawn.propsHoist); //hoist
cons[cons.length] = Constraint.create({ cons[cons.length] = Constraint.create({
@@ -1156,7 +1164,7 @@ const level = {
spawn.bodyRect(-165, -45, 30, 35, 1); spawn.bodyRect(-165, -45, 30, 35, 1);
spawn.bodyRect(-750, 400, 150, 150, 0.5); spawn.bodyRect(-750, 400, 150, 150, 0.5);
spawn.bodyRect(-200, 1175, 250, 225, 1); //block to get to top path on bottom level spawn.bodyRect(-400, 1175, 100, 250, 1); //block to get to top path on bottom level
// spawn.bodyRect(-1450, 737, 75, 103, 0.5); //blocking path // spawn.bodyRect(-1450, 737, 75, 103, 0.5); //blocking path
spawn.bodyRect(-2525, -50, 145, 100, 0.5); spawn.bodyRect(-2525, -50, 145, 100, 0.5);