added difficulty settings
This commit is contained in:
30
index.html
30
index.html
@@ -80,7 +80,7 @@
|
|||||||
<div id="controls">
|
<div id="controls">
|
||||||
<details>
|
<details>
|
||||||
<summary>info</summary>
|
<summary>info</summary>
|
||||||
<div id="controls-div">
|
<div id="details-div">
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>FIRE</td>
|
<td>FIRE</td>
|
||||||
@@ -146,6 +146,34 @@
|
|||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="settings">
|
||||||
|
<details>
|
||||||
|
<summary>settings</summary>
|
||||||
|
<div id="details-div">
|
||||||
|
<label for="fps-select">frames per second cap:</label>
|
||||||
|
<select name="fps-select" id="fps-select">
|
||||||
|
<option value="max">no fps cap</option>
|
||||||
|
<option value="72" selected>72 fps cap</option>
|
||||||
|
<option value="60">60 fps cap</option>
|
||||||
|
<option value="45">45 fps cap</option>
|
||||||
|
<option value="30">30 fps cap</option>
|
||||||
|
<!-- <option value="15">15 fps cap</option> -->
|
||||||
|
</select>
|
||||||
|
<br><br>
|
||||||
|
<label for="difficulty-select">combat difficulty:</label>
|
||||||
|
<select name="difficulty-select" id="difficulty-select">
|
||||||
|
<option value="easy">easy</option>
|
||||||
|
<option value="0" selected>normal</option>
|
||||||
|
<option value="4">hard</option>
|
||||||
|
<option value="8">why...</option>
|
||||||
|
</select>
|
||||||
|
<!-- <br> <br>
|
||||||
|
<label for="falling-damage">falling damage:</label>
|
||||||
|
<input type="checkbox" id="falling-damage" name="falling-damage" checked> -->
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.fade-in {
|
.fade-in {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
let bullet = [];
|
let bullet = [];
|
||||||
|
|
||||||
const b = {
|
const b = {
|
||||||
dmgScale: null, //scales all gun damage from momentum, but not raw .dmg //this is reset in game.reset
|
dmgScale: null, //scales all gun damage from momentum, but not raw .dmg //set in levels.setDifficulty
|
||||||
gravity: 0.0006, //most other bodies have gravity = 0.001
|
gravity: 0.0006, //most other bodies have gravity = 0.001
|
||||||
//variables use for gun mod upgrades
|
//variables use for gun mod upgrades
|
||||||
modCount: null,
|
modCount: null,
|
||||||
@@ -133,7 +133,7 @@ const b = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "fluoroantimonic acid",
|
name: "fluoroantimonic acid",
|
||||||
description: "Your bullets do extra chemical <span class='color-d'>damage</span> each time they make contact",
|
description: "your bullets do extra chemical <span class='color-d'>damage</span> each time they make contact",
|
||||||
have: false, //11
|
have: false, //11
|
||||||
effect: () => { //good with guns that fire many bullets at low speeds, minigun, drones, junk-bots, shotgun, superballs, wavebeam
|
effect: () => { //good with guns that fire many bullets at low speeds, minigun, drones, junk-bots, shotgun, superballs, wavebeam
|
||||||
b.extraDmg = 0.1
|
b.extraDmg = 0.1
|
||||||
@@ -141,7 +141,7 @@ const b = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "annihilation",
|
name: "annihilation",
|
||||||
description: "after you touch an enemy, they become <strong class='color-l'>light</strong><br><em>touching enemies still damages you</em>",
|
description: "after you touch any enemy, they are <strong class='color-l'>annihilated</strong><br><em>touching enemies damages you, but destroys them</em>",
|
||||||
have: false, //12
|
have: false, //12
|
||||||
effect: () => { //good with mods that heal: superconductive healing, entropy transfer
|
effect: () => { //good with mods that heal: superconductive healing, entropy transfer
|
||||||
b.annihilation = true
|
b.annihilation = true
|
||||||
@@ -149,7 +149,7 @@ const b = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "superconductive healing",
|
name: "superconductive healing",
|
||||||
description: "<span class='color-h'>heals</span> have zero resistance, and maximum efficiency<br><span class='color-h'>heals</span> bring you to full health",
|
description: "<span class='color-h'>heals</span> bring you to full health",
|
||||||
have: false, //13
|
have: false, //13
|
||||||
effect: () => { // good with ablative synthesis, electrostatic field
|
effect: () => { // good with ablative synthesis, electrostatic field
|
||||||
b.fullHeal = true
|
b.fullHeal = true
|
||||||
|
|||||||
87
js/engine.js
87
js/engine.js
@@ -78,50 +78,51 @@ function mobCollisionChecks(event) {
|
|||||||
for (let i = 0, j = pairs.length; i != j; i++) {
|
for (let i = 0, j = pairs.length; i != j; i++) {
|
||||||
|
|
||||||
//body + player collision
|
//body + player collision
|
||||||
// if (mech.damageImmune < mech.cycle) {
|
if (mech.damageImmune < mech.cycle) {
|
||||||
// if (pairs[i].bodyA === playerBody || pairs[i].bodyA === playerHead) {
|
if (pairs[i].bodyA === playerBody || pairs[i].bodyA === playerHead) {
|
||||||
// collidePlayer(pairs[i].bodyB)
|
collidePlayer(pairs[i].bodyB)
|
||||||
// } else if (pairs[i].bodyB === playerBody || pairs[i].bodyB === playerHead) {
|
} else if (pairs[i].bodyB === playerBody || pairs[i].bodyB === playerHead) {
|
||||||
// collidePlayer(pairs[i].bodyA)
|
collidePlayer(pairs[i].bodyA)
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// function collidePlayer(obj, speedThreshold = 12, massThreshold = 2) {
|
function collidePlayer(obj, speedThreshold = 12, massThreshold = 2) {
|
||||||
// if (obj.classType === "body" && obj.speed > speedThreshold && obj.mass > massThreshold) { //dmg from hitting a body
|
if (obj.classType === "body" && obj.speed > speedThreshold && obj.mass > massThreshold) { //dmg from hitting a body
|
||||||
// const v = Matter.Vector.magnitude(Matter.Vector.sub(player.velocity, obj.velocity));
|
const v = Matter.Vector.magnitude(Matter.Vector.sub(player.velocity, obj.velocity));
|
||||||
// if (v > speedThreshold) {
|
if (v > speedThreshold) {
|
||||||
// mech.damageImmune = mech.cycle + 30; //player is immune to collision damage for 30 cycles
|
mech.damageImmune = mech.cycle + 30; //player is immune to collision damage for 30 cycles
|
||||||
// let dmg = Math.sqrt((v - speedThreshold + 0.1) * (obj.mass - massThreshold)) * 0.02;
|
let dmg = Math.sqrt((v - speedThreshold + 0.1) * (obj.mass - massThreshold)) * 0.02;
|
||||||
// dmg = Math.min(Math.max(dmg, 0.02), 0.2);
|
dmg = Math.min(Math.max(dmg, 0.02), 0.2);
|
||||||
// // console.log(`mass = ${obj.mass} \n`, `dmg = ${dmg}\n`, `v = ${v}\n`)
|
// console.log(`mass = ${obj.mass} \n`, `dmg = ${dmg}\n`, `v = ${v}\n`)
|
||||||
// // console.log(v, dmg)
|
// console.log(v, dmg)
|
||||||
// mech.damage(dmg);
|
mech.damage(dmg);
|
||||||
// game.drawList.push({
|
game.drawList.push({
|
||||||
// //add dmg to draw queue
|
//add dmg to draw queue
|
||||||
// x: pairs[i].activeContacts[0].vertex.x,
|
x: pairs[i].activeContacts[0].vertex.x,
|
||||||
// y: pairs[i].activeContacts[0].vertex.y,
|
y: pairs[i].activeContacts[0].vertex.y,
|
||||||
// radius: dmg * 500,
|
radius: dmg * 500,
|
||||||
// color: game.mobDmgColor,
|
color: game.mobDmgColor,
|
||||||
// time: game.drawTime
|
time: game.drawTime
|
||||||
// });
|
});
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
// } else if (obj.isStatic && player.speed > speedThreshold * 2) { //falling dmg / hitting map dmg
|
}
|
||||||
// mech.damageImmune = mech.cycle + 30;
|
// else if (obj.isStatic && player.speed > speedThreshold * 2) { //falling dmg / hitting map dmg
|
||||||
// console.log(player.speed)
|
// mech.damageImmune = mech.cycle + 30;
|
||||||
// let dmg = Math.min(Math.max(player.speed * 0.001, 0.02), 0.2);
|
// console.log(player.speed)
|
||||||
// mech.damage(dmg);
|
// let dmg = Math.min(Math.max(player.speed * 0.001, 0.02), 0.2);
|
||||||
// game.drawList.push({
|
// mech.damage(dmg);
|
||||||
// //add dmg to draw queue
|
// game.drawList.push({
|
||||||
// x: pairs[i].activeContacts[0].vertex.x,
|
// //add dmg to draw queue
|
||||||
// y: pairs[i].activeContacts[0].vertex.y,
|
// x: pairs[i].activeContacts[0].vertex.x,
|
||||||
// radius: dmg * 500,
|
// y: pairs[i].activeContacts[0].vertex.y,
|
||||||
// color: game.mobDmgColor,
|
// radius: dmg * 500,
|
||||||
// time: game.drawTime
|
// color: game.mobDmgColor,
|
||||||
// });
|
// time: game.drawTime
|
||||||
// return;
|
// });
|
||||||
// }
|
// return;
|
||||||
// }
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
//mob + (player,bullet,body) collisions
|
//mob + (player,bullet,body) collisions
|
||||||
for (let k = 0; k < mob.length; k++) {
|
for (let k = 0; k < mob.length; k++) {
|
||||||
|
|||||||
50
js/game.js
50
js/game.js
@@ -1,15 +1,6 @@
|
|||||||
// game Object ********************************************************
|
// game Object ********************************************************
|
||||||
//*********************************************************************
|
//*********************************************************************
|
||||||
const game = {
|
const game = {
|
||||||
// difficulty: {
|
|
||||||
// damageDone: 1,
|
|
||||||
// damageTaken: 1,
|
|
||||||
// mobQuickness: 1,
|
|
||||||
// powerUpDropRate: 1,
|
|
||||||
// fallingDamage: false,
|
|
||||||
// explosiveDamage: true,
|
|
||||||
// unlimitedAmmo: false,
|
|
||||||
// },
|
|
||||||
loop() {
|
loop() {
|
||||||
game.cycle++; //tracks game cycles
|
game.cycle++; //tracks game cycles
|
||||||
mech.cycle++; //tracks player cycles //used to alow time to stop for everything, but the player
|
mech.cycle++; //tracks player cycles //used to alow time to stop for everything, but the player
|
||||||
@@ -69,21 +60,23 @@ const game = {
|
|||||||
},
|
},
|
||||||
levelsCleared: 0,
|
levelsCleared: 0,
|
||||||
g: 0.001,
|
g: 0.001,
|
||||||
dmgScale: 1,
|
dmgScale: null, //set in levels.setDifficulty
|
||||||
accelScale: 1,
|
accelScale: null, //set in levels.setDifficulty
|
||||||
CDScale: 1,
|
CDScale: null, //set in levels.setDifficulty
|
||||||
lookFreqScale: 1,
|
lookFreqScale: null, //set in levels.setDifficulty
|
||||||
onTitlePage: true,
|
onTitlePage: true,
|
||||||
paused: false,
|
paused: false,
|
||||||
testing: false, //testing mode: shows wireframe and some variables
|
testing: false, //testing mode: shows wireframe and some variables
|
||||||
cycle: 0, //total cycles, 60 per second
|
cycle: 0, //total cycles, 60 per second
|
||||||
fpsCap: 72, //limits frames per second to 144/2=72, on most monitors the fps is capped at 60fps by the hardware
|
fpsCap: null, //limits frames per second to 144/2=72, on most monitors the fps is capped at 60fps by the hardware
|
||||||
fpsCapDefault: 72, //use to change fpsCap back to normal after a hit from a mob
|
fpsCapDefault: 72, //use to change fpsCap back to normal after a hit from a mob
|
||||||
cyclePaused: 0,
|
cyclePaused: 0,
|
||||||
fallHeight: 3000, //below this y position the player dies
|
fallHeight: 3000, //below this y position the player dies
|
||||||
lastTimeStamp: 0, //tracks time stamps for measuring delta
|
lastTimeStamp: 0, //tracks time stamps for measuring delta
|
||||||
delta: 1000 / 60, //speed of game engine //looks like it has to be 16 to match player input
|
delta: 1000 / 60, //speed of game engine //looks like it has to be 16 to match player input
|
||||||
buttonCD: 0,
|
buttonCD: 0,
|
||||||
|
isEasyMode: false,
|
||||||
|
difficulty: null,
|
||||||
// dropFPS(cap = 40, time = 15) {
|
// dropFPS(cap = 40, time = 15) {
|
||||||
// game.fpsCap = cap
|
// game.fpsCap = cap
|
||||||
// game.fpsInterval = 1000 / game.fpsCap;
|
// game.fpsInterval = 1000 / game.fpsCap;
|
||||||
@@ -188,12 +181,6 @@ const game = {
|
|||||||
document.getElementById("text-log").style.opacity = 0;
|
document.getElementById("text-log").style.opacity = 0;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// timing: function() {
|
|
||||||
// this.cycle++; //tracks game cycles
|
|
||||||
// //delta is used to adjust forces on game slow down;
|
|
||||||
// this.delta = (engine.timing.timestamp - this.lastTimeStamp) / 16.666666666666;
|
|
||||||
// this.lastTimeStamp = engine.timing.timestamp; //track last engine timestamp
|
|
||||||
// },
|
|
||||||
nextGun() {
|
nextGun() {
|
||||||
if (b.inventory.length > 0) {
|
if (b.inventory.length > 0) {
|
||||||
b.inventoryGun++;
|
b.inventoryGun++;
|
||||||
@@ -425,14 +412,29 @@ const game = {
|
|||||||
mech.fieldUpgrades[0].effect(); //set to default field
|
mech.fieldUpgrades[0].effect(); //set to default field
|
||||||
game.paused = false;
|
game.paused = false;
|
||||||
engine.timing.timeScale = 1;
|
engine.timing.timeScale = 1;
|
||||||
game.dmgScale = 1;
|
game.fpsCap = game.fpsCapDefault;
|
||||||
b.dmgScale = 0.7;
|
|
||||||
game.makeGunHUD();
|
game.makeGunHUD();
|
||||||
mech.drop();
|
mech.drop();
|
||||||
mech.addHealth(1);
|
mech.addHealth(1);
|
||||||
mech.alive = true;
|
mech.alive = true;
|
||||||
level.onLevel = 0;
|
level.onLevel = 0;
|
||||||
game.levelsCleared = 0;
|
|
||||||
|
//resetting difficulty
|
||||||
|
game.dmgScale = 1;
|
||||||
|
b.dmgScale = 0.7;
|
||||||
|
game.accelScale = 1;
|
||||||
|
game.lookFreqScale = 1;
|
||||||
|
game.CDScale = 1;
|
||||||
|
if (document.getElementById("difficulty-select").value === 'easy') {
|
||||||
|
game.difficulty = 0;
|
||||||
|
game.isEasyMode = true;
|
||||||
|
level.difficultyDecrease(6);
|
||||||
|
} else {
|
||||||
|
game.difficulty = parseInt(document.getElementById("difficulty-select").value)
|
||||||
|
level.difficultyIncrease(game.difficulty)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
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;
|
||||||
@@ -447,6 +449,7 @@ const game = {
|
|||||||
game.startGame();
|
game.startGame();
|
||||||
};
|
};
|
||||||
document.getElementById("controls").style.display = "inline";
|
document.getElementById("controls").style.display = "inline";
|
||||||
|
document.getElementById("settings").style.display = "inline";
|
||||||
document.getElementById("splash").style.display = "inline";
|
document.getElementById("splash").style.display = "inline";
|
||||||
document.getElementById("dmg").style.display = "none";
|
document.getElementById("dmg").style.display = "none";
|
||||||
document.getElementById("health-bg").style.display = "none";
|
document.getElementById("health-bg").style.display = "none";
|
||||||
@@ -457,6 +460,7 @@ const game = {
|
|||||||
startGame() {
|
startGame() {
|
||||||
game.onTitlePage = false;
|
game.onTitlePage = false;
|
||||||
document.getElementById("controls").style.display = "none";
|
document.getElementById("controls").style.display = "none";
|
||||||
|
document.getElementById("settings").style.display = "none";
|
||||||
document.getElementById("splash").onclick = null; //removes the onclick effect so the function only runs once
|
document.getElementById("splash").onclick = null; //removes the onclick effect so the function only runs once
|
||||||
document.getElementById("splash").style.display = "none"; //hides the element that spawned the function
|
document.getElementById("splash").style.display = "none"; //hides the element that spawned the function
|
||||||
document.getElementById("dmg").style.display = "inline";
|
document.getElementById("dmg").style.display = "inline";
|
||||||
|
|||||||
16
js/index.js
16
js/index.js
@@ -174,6 +174,22 @@ document.body.addEventListener("wheel", (e) => {
|
|||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
document.getElementById("fps-select").addEventListener("input", event => {
|
||||||
|
let value = document.getElementById("fps-select").value
|
||||||
|
if (value === 'max') {
|
||||||
|
game.fpsCapDefault = 999999999;
|
||||||
|
} else if (value === '72') {
|
||||||
|
game.fpsCapDefault = 72
|
||||||
|
} else if (value === '60') {
|
||||||
|
game.fpsCapDefault = 60
|
||||||
|
} else if (value === '45') {
|
||||||
|
game.fpsCapDefault = 45
|
||||||
|
} else if (value === '30') {
|
||||||
|
game.fpsCapDefault = 30
|
||||||
|
} else if (value === '15') {
|
||||||
|
game.fpsCapDefault = 15
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// function playSound(id) {
|
// function playSound(id) {
|
||||||
// //play sound
|
// //play sound
|
||||||
|
|||||||
85
js/level.js
85
js/level.js
@@ -11,8 +11,8 @@ const level = {
|
|||||||
levels: ["skyscrapers", "rooftops", "warehouse", "highrise", "office", "aerie"],
|
levels: ["skyscrapers", "rooftops", "warehouse", "highrise", "office", "aerie"],
|
||||||
onLevel: 0,
|
onLevel: 0,
|
||||||
start() {
|
start() {
|
||||||
if (game.levelsCleared === 0) {
|
if (level.onLevel === 0) {
|
||||||
// game.levelsCleared = 6; //for testing to simulate possible mobs spawns
|
// game.difficulty = 6; //for testing to simulate possible mobs spawns
|
||||||
// b.giveGuns(6)
|
// b.giveGuns(6)
|
||||||
// mech.fieldUpgrades[6].effect();
|
// mech.fieldUpgrades[6].effect();
|
||||||
// b.giveMod(13)
|
// b.giveMod(13)
|
||||||
@@ -35,12 +35,23 @@ const level = {
|
|||||||
level.addToWorld(); //add bodies to game engine
|
level.addToWorld(); //add bodies to game engine
|
||||||
game.draw.setPaths();
|
game.draw.setPaths();
|
||||||
},
|
},
|
||||||
difficultyIncrease() {
|
difficultyIncrease(num = 1) {
|
||||||
game.dmgScale += 0.2; //damage done by mobs increases each level
|
for (let i = 0; i < num; i++) {
|
||||||
b.dmgScale *= 0.95; //damage done by player decreases each level
|
game.dmgScale += 0.2; //damage done by mobs increases each level
|
||||||
game.accelScale *= 1.05 //mob acceleration increases each level
|
b.dmgScale *= 0.95; //damage done by player decreases each level
|
||||||
game.lookFreqScale *= 0.95 //mob cycles between looks decreases each level
|
game.accelScale *= 1.05 //mob acceleration increases each level
|
||||||
game.CDScale *= 0.95 //mob CD time decreases each level
|
game.lookFreqScale *= 0.95 //mob cycles between looks decreases each level
|
||||||
|
game.CDScale *= 0.95 //mob CD time decreases each level
|
||||||
|
}
|
||||||
|
},
|
||||||
|
difficultyDecrease(num = 1) { //used in easy mode for game.reset()
|
||||||
|
for (let i = 0; i < num; i++) {
|
||||||
|
game.dmgScale -= 0.2; //damage done by mobs increases each level
|
||||||
|
b.dmgScale /= 0.95; //damage done by player decreases each level
|
||||||
|
game.accelScale /= 1.05 //mob acceleration increases each level
|
||||||
|
game.lookFreqScale /= 0.95 //mob cycles between looks decreases each level
|
||||||
|
game.CDScale /= 0.95 //mob CD time decreases each level
|
||||||
|
}
|
||||||
},
|
},
|
||||||
//******************************************************************************************************************
|
//******************************************************************************************************************
|
||||||
//******************************************************************************************************************
|
//******************************************************************************************************************
|
||||||
@@ -48,10 +59,6 @@ const level = {
|
|||||||
//start with all guns
|
//start with all guns
|
||||||
game.zoomScale = 1400 //1400 is normal
|
game.zoomScale = 1400 //1400 is normal
|
||||||
spawn.setSpawnList();
|
spawn.setSpawnList();
|
||||||
game.levelsCleared = 3; //for testing to simulate all possible mobs spawns
|
|
||||||
for (let i = 0; i < game.levelsCleared; i++) {
|
|
||||||
level.difficultyIncrease()
|
|
||||||
}
|
|
||||||
mech.setPosToSpawn(-75, -60); //normal spawn
|
mech.setPosToSpawn(-75, -60); //normal spawn
|
||||||
level.enter.x = mech.spawnPos.x - 50;
|
level.enter.x = mech.spawnPos.x - 50;
|
||||||
level.enter.y = mech.spawnPos.y + 20;
|
level.enter.y = mech.spawnPos.y + 20;
|
||||||
@@ -136,8 +143,8 @@ const level = {
|
|||||||
|
|
||||||
// spawn.setSpawnList();
|
// spawn.setSpawnList();
|
||||||
// spawn.setSpawnList();
|
// spawn.setSpawnList();
|
||||||
// game.levelsCleared = 7; //for testing to simulate all possible mobs spawns
|
// game.difficulty = 7; //for testing to simulate all possible mobs spawns
|
||||||
// for (let i = 0; i < game.levelsCleared; i++) {
|
// for (let i = 0; i < game.difficulty; i++) {
|
||||||
// game.dmgScale += 0.4; //damage done by mobs increases each level
|
// game.dmgScale += 0.4; //damage done by mobs increases each level
|
||||||
// b.dmgScale *= 0.9; //damage done by player decreases each level
|
// b.dmgScale *= 0.9; //damage done by player decreases each level
|
||||||
// }
|
// }
|
||||||
@@ -183,7 +190,7 @@ const level = {
|
|||||||
}
|
}
|
||||||
blockDoor(710, -710);
|
blockDoor(710, -710);
|
||||||
|
|
||||||
spawn[spawn.pickList[0]](1500, -200, 100 + game.levelsCleared * 8);
|
spawn[spawn.pickList[0]](1500, -200, 100 + game.difficulty * 8);
|
||||||
spawn.mapRect(2500, -1200, 200, 750); //right wall
|
spawn.mapRect(2500, -1200, 200, 750); //right wall
|
||||||
blockDoor(2585, -210)
|
blockDoor(2585, -210)
|
||||||
spawn.mapRect(2500, -200, 200, 300); //right wall
|
spawn.mapRect(2500, -200, 200, 300); //right wall
|
||||||
@@ -200,13 +207,13 @@ 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
|
||||||
|
|
||||||
for (let i = 0; i < 5; ++i) {
|
for (let i = 0; i < 5; ++i) {
|
||||||
if (game.levelsCleared * Math.random() > 3 * i) {
|
if (game.difficulty * Math.random() > 3 * i) {
|
||||||
spawn.randomBoss(2000 + 500 * (Math.random() - 0.5), -800 + 200 * (Math.random() - 0.5), Infinity);
|
spawn.randomBoss(2000 + 500 * (Math.random() - 0.5), -800 + 200 * (Math.random() - 0.5), Infinity);
|
||||||
}
|
}
|
||||||
if (game.levelsCleared * Math.random() > 2.6 * i) {
|
if (game.difficulty * Math.random() > 2.6 * i) {
|
||||||
spawn.randomBoss(3500 + 500 * (Math.random() - 0.5), -800 + 200 * (Math.random() - 0.5), Infinity);
|
spawn.randomBoss(3500 + 500 * (Math.random() - 0.5), -800 + 200 * (Math.random() - 0.5), Infinity);
|
||||||
}
|
}
|
||||||
if (game.levelsCleared * Math.random() > 2.4 * i) {
|
if (game.difficulty * Math.random() > 2.4 * i) {
|
||||||
spawn.randomBoss(5000 + 500 * (Math.random() - 0.5), -800 + 200 * (Math.random() - 0.5), Infinity);
|
spawn.randomBoss(5000 + 500 * (Math.random() - 0.5), -800 + 200 * (Math.random() - 0.5), Infinity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -325,12 +332,16 @@ const level = {
|
|||||||
|
|
||||||
mech.health = 0.25;
|
mech.health = 0.25;
|
||||||
mech.displayHealth();
|
mech.displayHealth();
|
||||||
powerUps.spawn(-100, 0, "heal", false); //starting gun
|
// powerUps.spawn(-100, 0, "heal", false); //starting gun
|
||||||
powerUps.spawn(1900, -150, "heal", false); //starting gun
|
powerUps.spawn(1900, -150, "heal", false); //starting gun
|
||||||
powerUps.spawn(2050, -150, "heal", false); //starting gun
|
powerUps.spawn(2050, -150, "heal", false); //starting gun
|
||||||
// powerUps.spawn(2050, -150, "field", false); //starting gun
|
// powerUps.spawn(2050, -150, "field", false); //starting gun
|
||||||
powerUps.spawn(2300, -150, "gun", false); //starting gun
|
powerUps.spawn(2300, -150, "gun", false); //starting gun
|
||||||
|
if (game.isEasyMode) {
|
||||||
|
powerUps.spawn(2050, -150, "mod", false); //starting gun
|
||||||
|
powerUps.spawn(2050, -150, "mod", false); //starting gun
|
||||||
|
powerUps.spawn(-100, 0, "heal", false); //starting gun
|
||||||
|
}
|
||||||
spawn.wireFoot();
|
spawn.wireFoot();
|
||||||
spawn.wireFootLeft();
|
spawn.wireFootLeft();
|
||||||
spawn.wireKnee();
|
spawn.wireKnee();
|
||||||
@@ -526,11 +537,11 @@ const level = {
|
|||||||
spawn.randomBoss(2225, -1325, 0.4);
|
spawn.randomBoss(2225, -1325, 0.4);
|
||||||
spawn.randomBoss(4900, -1200, 0);
|
spawn.randomBoss(4900, -1200, 0);
|
||||||
//spawn.randomBoss(4850, -1250,0.7);
|
//spawn.randomBoss(4850, -1250,0.7);
|
||||||
if (game.levelsCleared > 4) spawn.bomber(2500, -2400, 100);
|
if (game.difficulty > 4) spawn.bomber(2500, -2400, 100);
|
||||||
},
|
},
|
||||||
aerie() {
|
aerie() {
|
||||||
// game.setZoom(3000);
|
// game.setZoom(3000);
|
||||||
// game.levelsCleared = 4; //for testing to simulate possible mobs spawns
|
// game.difficulty = 4; //for testing to simulate possible mobs spawns
|
||||||
level.defaultZoom = 2100
|
level.defaultZoom = 2100
|
||||||
game.zoomTransition(level.defaultZoom)
|
game.zoomTransition(level.defaultZoom)
|
||||||
|
|
||||||
@@ -625,7 +636,7 @@ const level = {
|
|||||||
spawn.mapRect(-300, -1000, 600, 50);
|
spawn.mapRect(-300, -1000, 600, 50);
|
||||||
spawn.mapRect(-300, -1300, 450, 50);
|
spawn.mapRect(-300, -1300, 450, 50);
|
||||||
spawn.mapRect(-300, -1300, 50, 350);
|
spawn.mapRect(-300, -1300, 50, 350);
|
||||||
if (!backwards && game.levelsCleared > 1) spawn.bodyRect(100, -1250, 200, 240); //remove on backwards
|
if (!backwards && game.difficulty > 1) spawn.bodyRect(100, -1250, 200, 240); //remove on backwards
|
||||||
//left building
|
//left building
|
||||||
spawn.mapRect(-100, -975, 100, 975);
|
spawn.mapRect(-100, -975, 100, 975);
|
||||||
spawn.mapRect(-500, 100, 1950, 400);
|
spawn.mapRect(-500, 100, 1950, 400);
|
||||||
@@ -699,7 +710,7 @@ const level = {
|
|||||||
spawn.randomBoss(350, -500, 1)
|
spawn.randomBoss(350, -500, 1)
|
||||||
spawn.randomBoss(4000, -350, 0.6);
|
spawn.randomBoss(4000, -350, 0.6);
|
||||||
spawn.randomBoss(2750, -550, 0.1);
|
spawn.randomBoss(2750, -550, 0.1);
|
||||||
if (game.levelsCleared > 2) spawn.suckerBoss(4500, -400);
|
if (game.difficulty > 2) spawn.suckerBoss(4500, -400);
|
||||||
|
|
||||||
//add mini boss, giant hopper? or a black hole that spawns hoppers?
|
//add mini boss, giant hopper? or a black hole that spawns hoppers?
|
||||||
},
|
},
|
||||||
@@ -836,7 +847,7 @@ const level = {
|
|||||||
spawn.bodyRect(1425, -1110, 115, 25, 0.9); //block on far left building
|
spawn.bodyRect(1425, -1110, 115, 25, 0.9); //block on far left building
|
||||||
spawn.bodyRect(1540, -1110, 300, 25, 0.9); //block on far left building
|
spawn.bodyRect(1540, -1110, 300, 25, 0.9); //block on far left building
|
||||||
|
|
||||||
if (game.levelsCleared > 2) spawn.shooterBoss(2200, -1300);
|
if (game.difficulty > 2) spawn.shooterBoss(2200, -1300);
|
||||||
spawn.randomSmallMob(1300, -70);
|
spawn.randomSmallMob(1300, -70);
|
||||||
spawn.randomSmallMob(3200, -100);
|
spawn.randomSmallMob(3200, -100);
|
||||||
spawn.randomSmallMob(4450, -100);
|
spawn.randomSmallMob(4450, -100);
|
||||||
@@ -876,7 +887,7 @@ const level = {
|
|||||||
spawn.debris(-2325, -1825, 2400); //20 debris per level
|
spawn.debris(-2325, -1825, 2400); //20 debris per level
|
||||||
spawn.debris(-2625, -600, 600, 6); //20 debris per level
|
spawn.debris(-2625, -600, 600, 6); //20 debris per level
|
||||||
spawn.debris(-2000, -60, 1200, 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.difficulty) powerUps.spawn(2450, -1675, "gun", false);
|
||||||
//background
|
//background
|
||||||
level.fillBG.push({
|
level.fillBG.push({
|
||||||
x: -4425,
|
x: -4425,
|
||||||
@@ -961,7 +972,7 @@ 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);
|
||||||
if (game.levelsCleared < 4) {
|
if (game.difficulty < 4) {
|
||||||
spawn.bodyRect(-1600, -125, 125, 125);
|
spawn.bodyRect(-1600, -125, 125, 125);
|
||||||
spawn.bodyRect(-1560, -200, 75, 75);
|
spawn.bodyRect(-1560, -200, 75, 75);
|
||||||
} else {
|
} else {
|
||||||
@@ -996,7 +1007,7 @@ const level = {
|
|||||||
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);
|
if (game.difficulty < 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);
|
||||||
@@ -1207,7 +1218,7 @@ const level = {
|
|||||||
//spawn.randomMob(1120, -1200, 0.3);
|
//spawn.randomMob(1120, -1200, 0.3);
|
||||||
//spawn.randomSmallMob(2200, -1775);
|
//spawn.randomSmallMob(2200, -1775);
|
||||||
|
|
||||||
if (game.levelsCleared > 2) spawn.snaker(-1300 + Math.random() * 2000, -2200); //boss snake with head
|
if (game.difficulty > 2) spawn.snaker(-1300 + Math.random() * 2000, -2200); //boss snake with head
|
||||||
},
|
},
|
||||||
office() {
|
office() {
|
||||||
level.defaultZoom = 1400
|
level.defaultZoom = 1400
|
||||||
@@ -1332,7 +1343,7 @@ const level = {
|
|||||||
spawn.spawnStairs(3000 + 2000 - 50, 0, 4, 250, 350, true); //stairs ground
|
spawn.spawnStairs(3000 + 2000 - 50, 0, 4, 250, 350, true); //stairs ground
|
||||||
|
|
||||||
// tether ball
|
// tether ball
|
||||||
if (game.levelsCleared > 2) {
|
if (game.difficulty > 2) {
|
||||||
level.fillBG.push({
|
level.fillBG.push({
|
||||||
x: 2495,
|
x: 2495,
|
||||||
y: -500,
|
y: -500,
|
||||||
@@ -1350,7 +1361,7 @@ const level = {
|
|||||||
stiffness: 0.00012
|
stiffness: 0.00012
|
||||||
});
|
});
|
||||||
//chance to spawn a ring of exploding mobs around this boss
|
//chance to spawn a ring of exploding mobs around this boss
|
||||||
if (game.levelsCleared > 4) spawn.nodeBoss(2850, -80, "spawns", 8, 20, 105);
|
if (game.difficulty > 4) spawn.nodeBoss(2850, -80, "spawns", 8, 20, 105);
|
||||||
}
|
}
|
||||||
|
|
||||||
spawn.randomSmallMob(4575, -560, 1);
|
spawn.randomSmallMob(4575, -560, 1);
|
||||||
@@ -1456,8 +1467,8 @@ const level = {
|
|||||||
nextLevel() {
|
nextLevel() {
|
||||||
//enter when player isn't falling
|
//enter when player isn't falling
|
||||||
if (player.velocity.y < 0.1) {
|
if (player.velocity.y < 0.1) {
|
||||||
game.levelsCleared++;
|
game.difficulty++;
|
||||||
if (game.levelsCleared > 1) level.difficultyIncrease()
|
if (game.difficulty > 1) level.difficultyIncrease()
|
||||||
//cycles map to next level
|
//cycles map to next level
|
||||||
level.onLevel++;
|
level.onLevel++;
|
||||||
if (level.onLevel > level.levels.length - 1) level.onLevel = 0;
|
if (level.onLevel > level.levels.length - 1) level.onLevel = 0;
|
||||||
@@ -1555,10 +1566,10 @@ const level = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
levelAnnounce() {
|
levelAnnounce() {
|
||||||
document.title = "n-gon: L" + (game.levelsCleared) + " " + level.levels[level.onLevel];
|
document.title = "n-gon: L" + (level.onLevel) + " " + level.levels[level.onLevel];
|
||||||
// game.makeTextLog(`<div style='font-size: 25px;'>level ${game.levelsCleared} </div> <div style='font-size: 32px;'>${level.levels[level.onLevel]} </div>`, 300);
|
// game.makeTextLog(`<div style='font-size: 25px;'>level ${game.difficulty} </div> <div style='font-size: 32px;'>${level.levels[level.onLevel]} </div>`, 300);
|
||||||
// if (game.levelsCleared === 0) text = "";
|
// if (game.difficulty === 0) text = "";
|
||||||
// text = "Level " + (game.levelsCleared + 1) + ": " + spawn.pickList[0] + "s + " + spawn.pickList[1] + "s";
|
// text = "Level " + (game.difficulty + 1) + ": " + spawn.pickList[0] + "s + " + spawn.pickList[1] + "s";
|
||||||
|
|
||||||
// text = text + " with population: ";
|
// text = text + " with population: ";
|
||||||
// for (let i = 0, len = spawn.pickList.length; i < len; ++i) {
|
// for (let i = 0, len = spawn.pickList.length; i < len; ++i) {
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ const mech = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function randomizeField() {
|
function randomizeField() {
|
||||||
if (game.levelsCleared * (Math.random() + 0.27) > 2) {
|
if (game.difficulty * (Math.random() + 0.27) > 2) {
|
||||||
mech.fieldUpgrades[Math.floor(Math.random() * (mech.fieldUpgrades.length))].effect();
|
mech.fieldUpgrades[Math.floor(Math.random() * (mech.fieldUpgrades.length))].effect();
|
||||||
} else {
|
} else {
|
||||||
mech.fieldUpgrades[0].effect();
|
mech.fieldUpgrades[0].effect();
|
||||||
@@ -455,7 +455,7 @@ const mech = {
|
|||||||
}
|
}
|
||||||
game.replaceTextLog = true;
|
game.replaceTextLog = true;
|
||||||
game.makeTextLog("your quantum probability has stabilized", 1000);
|
game.makeTextLog("your quantum probability has stabilized", 1000);
|
||||||
document.title = "n-gon: L" + (game.levelsCleared) + " " + level.levels[level.onLevel];
|
document.title = "n-gon: L" + (game.difficulty) + " " + level.levels[level.onLevel];
|
||||||
}, 8000);
|
}, 8000);
|
||||||
|
|
||||||
} else if (this.alive) { //normal death code here
|
} else if (this.alive) { //normal death code here
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ const powerUps = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
spawnStartingPowerUps(x, y) { //used for map specific power ups, mostly to give player a starting gun
|
spawnStartingPowerUps(x, y) { //used for map specific power ups, mostly to give player a starting gun
|
||||||
if (b.inventory.length < 2) {
|
if (b.inventory.length < 2 || game.isEasyMode) {
|
||||||
powerUps.spawn(x, y, "gun", false); //starting gun
|
powerUps.spawn(x, y, "gun", false); //starting gun
|
||||||
} else {
|
} else {
|
||||||
powerUps.spawnRandomPowerUp(x, y);
|
powerUps.spawnRandomPowerUp(x, y);
|
||||||
|
|||||||
46
js/spawn.js
46
js/spawn.js
@@ -27,16 +27,16 @@ const spawn = {
|
|||||||
spawn.pickList.push(spawn.fullPickList[Math.floor(Math.random() * spawn.fullPickList.length)]);
|
spawn.pickList.push(spawn.fullPickList[Math.floor(Math.random() * spawn.fullPickList.length)]);
|
||||||
},
|
},
|
||||||
randomMob(x, y, chance = 1) {
|
randomMob(x, y, chance = 1) {
|
||||||
if (Math.random() < chance + 0.09 * (game.levelsCleared - 1) && mob.length < 4 + game.levelsCleared * 1.7) {
|
if (Math.random() < chance + 0.09 * (game.difficulty - 1) && mob.length < 4 + game.difficulty * 1.7) {
|
||||||
const pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
|
const pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
|
||||||
this[pick](x, y);
|
this[pick](x, y);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
randomSmallMob(x, y,
|
randomSmallMob(x, y,
|
||||||
num = Math.max(Math.min(Math.round(Math.random() * (game.levelsCleared - 1) * 0.45 - 0.4), 4), 0),
|
num = Math.max(Math.min(Math.round(Math.random() * (game.difficulty - 1) * 0.45 - 0.4), 4), 0),
|
||||||
size = 16 + Math.ceil(Math.random() * 15),
|
size = 16 + Math.ceil(Math.random() * 15),
|
||||||
chance = 1) {
|
chance = 1) {
|
||||||
if (Math.random() < chance + (game.levelsCleared - 1) * 0.03 && mob.length < 4 + game.levelsCleared * 1.7) {
|
if (Math.random() < chance + (game.difficulty - 1) * 0.03 && mob.length < 4 + game.difficulty * 1.7) {
|
||||||
for (let i = 0; i < num; ++i) {
|
for (let i = 0; i < num; ++i) {
|
||||||
const pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
|
const pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
|
||||||
this[pick](x + Math.round((Math.random() - 0.5) * 20) + i * size * 2.5, y + Math.round((Math.random() - 0.5) * 20), size);
|
this[pick](x + Math.round((Math.random() - 0.5) * 20) + i * size * 2.5, y + Math.round((Math.random() - 0.5) * 20), size);
|
||||||
@@ -44,7 +44,7 @@ const spawn = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
randomBoss(x, y, chance = 1) {
|
randomBoss(x, y, chance = 1) {
|
||||||
if (Math.random() < chance + (game.levelsCleared - 1) * 0.14 && game.levelsCleared !== 1 && mob.length < 4 + game.levelsCleared * 2 || chance == Infinity) {
|
if (Math.random() < chance + (game.difficulty - 1) * 0.14 && game.difficulty !== 1 && mob.length < 4 + game.difficulty * 2 || chance == Infinity) {
|
||||||
//choose from the possible picklist
|
//choose from the possible picklist
|
||||||
let pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
|
let pick = this.pickList[Math.floor(Math.random() * this.pickList.length)];
|
||||||
//is the pick able to be a boss?
|
//is the pick able to be a boss?
|
||||||
@@ -236,7 +236,7 @@ const spawn = {
|
|||||||
me.accelMag = 0.001 * game.accelScale;;
|
me.accelMag = 0.001 * 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;
|
||||||
if (Math.random() < Math.min((game.levelsCleared - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min((game.difficulty - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
me.do = function () {
|
me.do = function () {
|
||||||
this.healthBar();
|
this.healthBar();
|
||||||
this.gravity();
|
this.gravity();
|
||||||
@@ -298,7 +298,7 @@ const spawn = {
|
|||||||
me.onDeath = function () {
|
me.onDeath = function () {
|
||||||
this.removeCons();
|
this.removeCons();
|
||||||
};
|
};
|
||||||
if (Math.random() < Math.min((game.levelsCleared - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min((game.difficulty - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
me.do = function () {
|
me.do = function () {
|
||||||
this.healthBar();
|
this.healthBar();
|
||||||
this.gravity();
|
this.gravity();
|
||||||
@@ -493,8 +493,8 @@ const spawn = {
|
|||||||
me.onDeath = function () {
|
me.onDeath = function () {
|
||||||
//applying forces to player doesn't seem to work inside this method, not sure why
|
//applying forces to player doesn't seem to work inside this method, not sure why
|
||||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||||
if (game.levelsCleared > 5) {
|
if (game.difficulty > 5) {
|
||||||
for (let i = 0; i < (game.levelsCleared - 3); ++i) {
|
for (let i = 0; i < (game.difficulty - 3); ++i) {
|
||||||
spawn.sucker(this.position.x + (Math.random() - 0.5) * radius * 2, this.position.y + (Math.random() - 0.5) * radius * 2, 70 * Math.random());
|
spawn.sucker(this.position.x + (Math.random() - 0.5) * radius * 2, this.position.y + (Math.random() - 0.5) * radius * 2, 70 * Math.random());
|
||||||
Matter.Body.setVelocity(mob[mob.length - 1], {
|
Matter.Body.setVelocity(mob[mob.length - 1], {
|
||||||
x: (Math.random() - 0.5) * 70,
|
x: (Math.random() - 0.5) * 70,
|
||||||
@@ -580,7 +580,7 @@ const spawn = {
|
|||||||
me.accelMag = 0.0005 * game.accelScale;
|
me.accelMag = 0.0005 * game.accelScale;
|
||||||
me.frictionStatic = 0;
|
me.frictionStatic = 0;
|
||||||
me.friction = 0;
|
me.friction = 0;
|
||||||
if (Math.random() < Math.min(0.2 + (game.levelsCleared - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min(0.2 + (game.difficulty - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
me.do = function () {
|
me.do = function () {
|
||||||
this.healthBar();
|
this.healthBar();
|
||||||
this.seePlayerByLookingAt();
|
this.seePlayerByLookingAt();
|
||||||
@@ -604,7 +604,7 @@ const spawn = {
|
|||||||
me.onDamage = function () {
|
me.onDamage = function () {
|
||||||
this.laserPos = this.position;
|
this.laserPos = this.position;
|
||||||
};
|
};
|
||||||
// if (Math.random() < Math.min(0.2 + game.levelsCleared * 0.1, 0.7)) spawn.shield(me, x, y);
|
// if (Math.random() < Math.min(0.2 + game.difficulty * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
me.do = function () {
|
me.do = function () {
|
||||||
this.healthBar();
|
this.healthBar();
|
||||||
if (!mech.isBodiesAsleep) {
|
if (!mech.isBodiesAsleep) {
|
||||||
@@ -849,7 +849,7 @@ const spawn = {
|
|||||||
//boss that drops bombs from above and holds a set distance from player
|
//boss that drops bombs from above and holds a set distance from player
|
||||||
mobs.spawn(x, y, 3, radius, "transparent");
|
mobs.spawn(x, y, 3, radius, "transparent");
|
||||||
let me = mob[mob.length - 1];
|
let me = mob[mob.length - 1];
|
||||||
Matter.Body.setDensity(me, 0.0015 + 0.0005 * Math.sqrt(game.levelsCleared)); //extra dense //normal is 0.001 //makes effective life much larger
|
Matter.Body.setDensity(me, 0.0015 + 0.0005 * Math.sqrt(game.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
|
||||||
|
|
||||||
me.stroke = "rgba(255,0,200)"; //used for drawGhost
|
me.stroke = "rgba(255,0,200)"; //used for drawGhost
|
||||||
me.seeAtDistance2 = 2000000;
|
me.seeAtDistance2 = 2000000;
|
||||||
@@ -892,7 +892,7 @@ const spawn = {
|
|||||||
x: 0,
|
x: 0,
|
||||||
y: 0
|
y: 0
|
||||||
};
|
};
|
||||||
if (Math.random() < Math.min(0.15 + (game.levelsCleared - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min(0.15 + (game.difficulty - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
me.do = function () {
|
me.do = function () {
|
||||||
this.healthBar();
|
this.healthBar();
|
||||||
this.seePlayerByLookingAt();
|
this.seePlayerByLookingAt();
|
||||||
@@ -915,7 +915,7 @@ const spawn = {
|
|||||||
x: 0,
|
x: 0,
|
||||||
y: 0
|
y: 0
|
||||||
};
|
};
|
||||||
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.levelsCleared)); //extra dense //normal is 0.001 //makes effective life much larger
|
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
|
||||||
spawn.shield(me, x, y);
|
spawn.shield(me, x, y);
|
||||||
me.onDeath = function () {
|
me.onDeath = function () {
|
||||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||||
@@ -963,7 +963,7 @@ const spawn = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (Math.random() < Math.min((game.levelsCleared - 1) * 0.1, 0.5)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min((game.difficulty - 1) * 0.1, 0.5)) spawn.shield(me, x, y);
|
||||||
me.do = function () {
|
me.do = function () {
|
||||||
this.healthBar();
|
this.healthBar();
|
||||||
this.gravity();
|
this.gravity();
|
||||||
@@ -1013,9 +1013,9 @@ const spawn = {
|
|||||||
me.accelMag = 0.0012 * game.accelScale;
|
me.accelMag = 0.0012 * game.accelScale;
|
||||||
me.memory = 200;
|
me.memory = 200;
|
||||||
me.laserRange = 500;
|
me.laserRange = 500;
|
||||||
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.levelsCleared)); //extra dense //normal is 0.001 //makes effective life much larger
|
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
|
||||||
spawn.shield(me, x, y);
|
spawn.shield(me, x, y);
|
||||||
if (Math.random() < Math.min((game.levelsCleared - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min((game.difficulty - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
me.onDeath = function () {
|
me.onDeath = function () {
|
||||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||||
};
|
};
|
||||||
@@ -1027,7 +1027,7 @@ const spawn = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//snake tail
|
//snake tail
|
||||||
const nodes = Math.min(3 + Math.ceil(Math.random() * game.levelsCleared + 2), 8)
|
const nodes = Math.min(3 + Math.ceil(Math.random() * game.difficulty + 2), 8)
|
||||||
spawn.lineBoss(x + 105, y, "spawns", nodes);
|
spawn.lineBoss(x + 105, y, "spawns", 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({
|
||||||
@@ -1055,9 +1055,9 @@ const spawn = {
|
|||||||
me.g = 0.0001; //required if using 'gravity'
|
me.g = 0.0001; //required if using 'gravity'
|
||||||
me.accelMag = 0.002 * game.accelScale;
|
me.accelMag = 0.002 * game.accelScale;
|
||||||
me.memory = 20;
|
me.memory = 20;
|
||||||
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.levelsCleared)); //extra dense //normal is 0.001 //makes effective life much larger
|
Matter.Body.setDensity(me, 0.001 + 0.0005 * Math.sqrt(game.difficulty)); //extra dense //normal is 0.001 //makes effective life much larger
|
||||||
spawn.shield(me, x, y);
|
spawn.shield(me, x, y);
|
||||||
if (Math.random() < Math.min((game.levelsCleared - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
if (Math.random() < Math.min((game.difficulty - 1) * 0.1, 0.7)) spawn.shield(me, x, y);
|
||||||
|
|
||||||
me.onDeath = function () {
|
me.onDeath = function () {
|
||||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||||
@@ -1131,8 +1131,8 @@ const spawn = {
|
|||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
spawn = "striker",
|
spawn = "striker",
|
||||||
nodes = Math.min(2 + Math.ceil(Math.random() * (game.levelsCleared + 2)), 8),
|
nodes = Math.min(2 + Math.ceil(Math.random() * (game.difficulty + 2)), 8),
|
||||||
//Math.ceil(Math.random() * 3) + Math.min(4,Math.ceil(game.levelsCleared/2)),
|
//Math.ceil(Math.random() * 3) + Math.min(4,Math.ceil(game.difficulty/2)),
|
||||||
radius = Math.ceil(Math.random() * 10) + 17, // radius of each node mob
|
radius = Math.ceil(Math.random() * 10) + 17, // radius of each node mob
|
||||||
sideLength = Math.ceil(Math.random() * 100) + 70, // distance between each node mob
|
sideLength = Math.ceil(Math.random() * 100) + 70, // distance between each node mob
|
||||||
stiffness = Math.random() * 0.03 + 0.005
|
stiffness = Math.random() * 0.03 + 0.005
|
||||||
@@ -1164,8 +1164,8 @@ const spawn = {
|
|||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
spawn = "striker",
|
spawn = "striker",
|
||||||
nodes = Math.min(3 + Math.ceil(Math.random() * game.levelsCleared + 2), 8),
|
nodes = Math.min(3 + Math.ceil(Math.random() * game.difficulty + 2), 8),
|
||||||
//Math.ceil(Math.random() * 3) + Math.min(4,Math.ceil(game.levelsCleared/2)),
|
//Math.ceil(Math.random() * 3) + Math.min(4,Math.ceil(game.difficulty/2)),
|
||||||
radius = Math.ceil(Math.random() * 10) + 17,
|
radius = Math.ceil(Math.random() * 10) + 17,
|
||||||
l = Math.ceil(Math.random() * 80) + 30,
|
l = Math.ceil(Math.random() * 80) + 30,
|
||||||
stiffness = Math.random() * 0.06 + 0.01
|
stiffness = Math.random() * 0.06 + 0.01
|
||||||
|
|||||||
13
style.css
13
style.css
@@ -49,7 +49,15 @@ summary {
|
|||||||
/* border-radius: 5px; */
|
/* border-radius: 5px; */
|
||||||
}
|
}
|
||||||
|
|
||||||
#controls-div {
|
#settings {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
right: 1px;
|
||||||
|
z-index: 12;
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#details-div {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background-color: #ddd;
|
background-color: #ddd;
|
||||||
@@ -258,8 +266,6 @@ em {
|
|||||||
background: #149;
|
background: #149;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
padding: 3px 8px 3px 8px;
|
padding: 3px 8px 3px 8px;
|
||||||
border: 2px solid #444;
|
border: 2px solid #444;
|
||||||
@@ -267,7 +273,6 @@ em {
|
|||||||
background-color: rgba(255, 255, 255, 0.5);
|
background-color: rgba(255, 255, 255, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.wrapper {
|
.wrapper {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 360px 10px;
|
grid-template-columns: 360px 10px;
|
||||||
|
|||||||
Reference in New Issue
Block a user