"use strict"; /* TODO: ******************************************* ***************************************************** selection options for field to stay with current custom mode grey out mods that are bad, like selection based mods not important field graphics too dark at high energy not important rewrite pause as a change to the main loop not important like testing loop game setting for slower computers fewer blocks fewer debris fewer mobs mod: guardian recursive spawns at start of level mod: if you fire when out of ammo you gain 1 ammo pack at the cost of 10% max health 20% of your current health Boss mob: triangle that fires three lasers mob: has 2 or 3 shields that can regenerate over time could be just a boss gun: Spirit Bomb (singularity) use charge up like rail gun electricity graphics like plasma torch suck in nearby mobs, power ups?, blocks? sucked in stuff increase size uses energy atmosphere levels large rotating fan that the player has to move through give the user a rest, between combat low combat nonaggressive mobs one mob attacking the passive mobs more graphics Boss levels boss grows and spilt, if you don't kill it fast sensor that locks you in after you enter the boss room boss that eats other mobs and gains stats from them chance to spawn on any level (past level 5) boss that knows how to shoot (player) bullets that collide with player overwrite custom engine collision bullet mob function. add a key that player picks up and needs to set on the exit door to open it make power ups keep moving to player if the pickup field is turned off before they get picked up not sure how to do this without adding a constant check animate new level spawn by having the map aspects randomly fly into place new map with repeating endlessness get ideas from Manifold Garden game if falling, get teleported above the map I tried it, but had trouble getting the camera to adjust to the teleportation this can apply to blocks mobs, and power ups as well field power up effects field allows player to hold and throw living mobs of hack mobs give mobs more animal-like behaviors like rain world give mobs something to do when they don't see player explore map eat power ups drop power up (if killed after eating one) mobs some times aren't aggressive when low on life or after taking a large hit mobs can fight each other this might be hard to code isolated mobs try to group up. game mechanics mechanics that support the physics engine add rope/constraint get ideas from game: limbo / inside environmental hazards laser lava button / switch door fizzler moving platform map zones water low friction ground bouncy ground */ // local storage let localSettings = JSON.parse(localStorage.getItem("localSettings")); // console.log(localSettings) if (localSettings) { game.isBodyDamage = localSettings.isBodyDamage document.getElementById("body-damage").checked = localSettings.isBodyDamage game.difficultyMode = localSettings.difficultyMode document.getElementById("difficulty-select").value = localSettings.difficultyMode if (localSettings.fpsCapDefault === 'max') { game.fpsCapDefault = 999999999; } else { game.fpsCapDefault = Number(localSettings.fpsCapDefault) } document.getElementById("fps-select").value = localSettings.fpsCapDefault } else { localSettings = { isBodyDamage: true, difficultyMode: '1', fpsCapDefault: '72', }; localStorage.setItem("localSettings", JSON.stringify(localSettings)); //update local storage } //collision groups // cat.player | cat.map | cat.body | cat.bullet | cat.powerUp | cat.mob | cat.mobBullet | cat.mobShield const cat = { player: 0x1, map: 0x10, body: 0x100, bullet: 0x1000, powerUp: 0x10000, mob: 0x100000, mobBullet: 0x1000000, mobShield: 0x10000000, } //build build grid display const build = { isShowingBuilds: false, list: [], choosePowerUp(who, index, type) { //check if matching a current power up for (let i = 0; i < build.list.length; i++) { if (build.list[i].index === index && build.list[i].type === type) { //if already click, toggle off build.list.splice(i, 1); who.style.backgroundColor = "#fff" return } } //check if trying to get a second field if (type === "field") { for (let i = 0; i < build.list.length; i++) { if (build.list[i].type === "field") { //if already click, toggle off build.list[i].who.style.backgroundColor = "#fff" build.list.splice(i, 1); } } } if (build.list.length < 5) { //add to build array who.style.backgroundColor = "#919ba8" //"#868f9a" build.list[build.list.length] = { who: who, index: index, type: type } } }, startBuildRun() { spawn.setSpawnList(); spawn.setSpawnList(); //gives random mobs, not starter game.startGame(); game.difficulty = 6; level.isBuildRun = true; for (let i = 0; i < build.list.length; i++) { if (build.list[i].type === "field") { mech.setField(build.list[i].index) } else if (build.list[i].type === "gun") { b.giveGuns(build.list[i].index) } else if (build.list[i].type === "mod") { b.giveMod(build.list[i].index) } } } } document.getElementById("build-button").addEventListener("click", () => { document.getElementById("build-button").style.display = "none"; const el = document.getElementById("build-grid") if (build.isShowingBuilds) { el.style.display = "none" build.isShowingBuilds = false document.body.style.overflow = "hidden" document.getElementById("info").style.display = 'inline' } else { build.list = [] // let text = '
choose up to 5 powers