diff --git a/src/DevMenu.js b/src/DevMenu.js new file mode 100644 index 000000000..3390f294d --- /dev/null +++ b/src/DevMenu.js @@ -0,0 +1,395 @@ +import {AugmentationNames} from "./Augmentations" +import {Programs} from "./CreateProgram" +import {Factions} from "./Faction"; +import {Player} from "./Player"; +import {AllServers} from "./Server"; +import {Terminal} from "./Terminal"; +import {exceptionAlert} from "../utils/helpers/exceptionAlert"; +import {createElement} from "../utils/uiHelpers/createElement"; +import {removeElementById} from "../utils/uiHelpers/removeElementById"; + +const devMenuContainerId = "dev-menu-container"; + +export function createDevMenu() { + if (process.env.NODE_ENV !== "development") { + throw new Error("Cannot create Dev Menu because you are not in a dev build"); + } + + const devMenuText = createElement("h1", { + display: "block", + innerText: "Development Menu - Only meant to be used for testing/debugging", + }); + + // Generic + const genericHeader = createElement("h2", { + display: "block", + innerText: "Generic" + }); + + const addMoney = createElement("button", { + class: "std-button", + clickListener: () => { + Player.gainMoney(1e15); + }, + display: "block", + innerText: "Add $1000t", + }); + + const addRam = createElement("button", { + class: "std-button", + clickListener: () => { + Player.getHomeComputer().maxRam *= 2; + }, + display: "block", + innerText: "Double Home Computer RAM", + }); + + const triggerBitflume = createElement("button", { + class: "std-button", + clickListener: () => { + hackWorldDaemon(Player.bitNodeN, true); + }, + innerText: "Trigger BitFlume", + }); + + const destroyCurrentBitnode = createElement("button", { + class: "std-button", + clickListener: () => { + hackWorldDaemon(Player.bitNodeN); + }, + innerText: "Destroy Current BitNode", + tooltip: "Will grant Source-File for the BitNode", + }) + + // Experience / stats + const statsHeader = createElement("h2", { + display: "block", + innerText: "Experience/Stats" + }); + + const statsHackingExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsHackingExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsHackingExpInput.value); + Player.gainHackingExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsStrengthExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsStrengthExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsStrengthExpInput.value); + Player.gainStrengthExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsDefenseExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsDefenseExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsDefenseExpInput.value); + Player.gainDefenseExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsDexterityExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsDexterityExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsDexterityExpInput.value); + Player.gainDexterityExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsAgilityExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsAgilityExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsAgilityExpButton.value); + Player.gainAgilityExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsCharismaExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsCharismaExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsCharismaExpInput.value); + Player.gainCharismaExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsIntelligenceExpInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "+/- hacking exp", + type: "number", + }); + const statsIntelligenceExpButton = createElement("button", { + class: "std-button", + clickListener: () => { + const exp = parseInt(statsIntelligenceExpInput.value); + Player.gainIntelligenceExp(exp); + Player.updateSkillLevels(); + }, + display: "block", + innerText: "Add Hacking Exp", + }); + + const statsEnableIntelligenceButton = createElement("button", { + class: "std-button", + clickListener: () => { + Player.intelligence = 1; + }, + innerText: "Enable Intelligence" + }); + + const statsDisableIntelligenceButton = createElement("button", { + class: "std-button", + clickListener: () => { + Player.intelligence = 0; + }, + innerText: "Disable Intelligence" + }); + + // Factions + const factionsHeader = createElement("h2", {innerText: "Factions"}); + + const factionsDropdown = createElement("select", {class: "dropdown"}); + for (const i in Factions) { + factionsDropdown.options[factionsDropdown.options.length] = new Option(Factions[i].name, Factions[i].name); + } + + const factionsAddButton = createElement("button", { + class: "std-button", + clickListener: () => { + const facName = factionsDropdown.options[factionsDropdown.selectedIndex].value; + Player.receiveInvite(facName); + }, + innerText: "Receive Invite to Faction", + }); + + // Augmentations / Source Files + const augmentationsHeader = createElement("h2", {innerText: "Augmentations"}); + + const augmentationsDropdown = createElement("select", {class: "dropdown"}); + for (const i in AugmentationNames) { + const augName = AugmentationNames[i]; + augmentationsDropdown.options[augmentationsDropdown.options.length] = new Option(augName, augName); + } + + const augmentationsQueueButton = createElement("button", { + class: "std-button", + clickListener: () => { + Player.queueAugmentation(augmentationsDropdown.options[augmentationsDropdown.selectedIndex].value); + }, + innerText: "Queue Augmentation", + }) + + // Programs + const programsHeader = createElement("h2", {innerText: "Programs"}); + + const programsAddDropdown = createElement("select", {class: "dropdown"}); + for (const i in Programs) { + const progName = Programs[i].name; + programsAddDropdown.options[programsAddDropdown.options.length] = new Option(progName, progName); + } + + const programsAddButton = createElement("button", { + class: "std-button", + clickListener: () => { + const program = programsAddDropdown.options[programsAddDropdown.selectedIndex].value; + if(!Player.hasProgram(program)) { + Player.getHomeComputer().programs.push(program); + } + }, + innerText: "Add Program", + }) + + // Servers + const serversHeader = createElement("h2", {innerText: "Servers"}); + + const serversOpenAll = createElement("button", { + class: "std-button", + clickListener: () => { + for (const i in AllServers) { + AllServers[i].hasAdminRights = true; + AllServers[i].sshPortOpen = true; + AllServers[i].ftpPortOpen = true; + AllServers[i].smtpPortOpen = true; + AllServers[i].httpPortOpen = true; + AllServers[i].sqlPortOpen = true; + AllServers[i].openPortCount = 5; + } + }, + display: "block", + innerText: "Get Admin Rights to all servers", + }); + + const serversMinSecurityAll = createElement("button", { + class: "std-button", + clickListener: () => { + for (const i in AllServers) { + AllServers[i].hackDifficulty = AllServers[i].minDifficulty; + } + }, + display: "block", + innerText: "Set all servers to min security", + }); + + const serversMaxMoneyAll = createElement("button", { + class: "std-button", + clickListener: () => { + for (const i in AllServers) { + AllServers[i].moneyAvailable = AllServers[i].moneyMax; + } + }, + display: "block", + innerText: "Set all servers to max money", + }); + + const serversConnectToDropdown = createElement("select", {class: "dropdown"}); + for (const i in AllServers) { + const hn = AllServers[i].hostname; + serversConnectToDropdown.options[serversConnectToDropdown.options.length] = new Option(hn, hn); + } + + const serversConnectToButton = createElement("button", { + class: "std-button", + clickListener: () => { + const host = serversConnectToDropdown.options[serversConnectToDropdown.selectedIndex].value; + Terminal.connectToServer(host); + }, + innerText: "Connect to server", + }); + + // Add everything to container, then append to main menu + const devMenuContainer = createElement("div", { + class: "generic-menupage-container", + id: devMenuContainerId, + }); + + const bladeburnerHeader = createElement("h2", {innerText: "Bladeburner"}); + + const bladeburnerGainRankInput = createElement("input", { + class: "text-input", + display: "block", + placeholder: "Rank to gain (or negative to lose rank)", + type: "number", + }); + + const bladeburnerGainRankButton = createElement("button", { + class: "std-button", + clickListener: () => { + try { + const rank = parseInt(bladeburnerGainRankInput.value); + Player.bladeburner.changeRank(rank); + } catch(e) { + exceptionAlert(`Failed to change Bladeburner Rank in dev menu: ${e}`); + } + }, + display: "block", + innerText: "Gain Bladeburner Rank", + }) + + devMenuContainer.appendChild(devMenuText); + devMenuContainer.appendChild(genericHeader); + devMenuContainer.appendChild(addMoney); + devMenuContainer.appendChild(addRam); + devMenuContainer.appendChild(triggerBitflume); + devMenuContainer.appendChild(destroyCurrentBitnode); + devMenuContainer.appendChild(statsHeader); + devMenuContainer.appendChild(statsHackingExpInput); + devMenuContainer.appendChild(statsHackingExpButton); + devMenuContainer.appendChild(statsStrengthExpInput); + devMenuContainer.appendChild(statsStrengthExpButton); + devMenuContainer.appendChild(statsDefenseExpInput); + devMenuContainer.appendChild(statsDefenseExpButton); + devMenuContainer.appendChild(statsDexterityExpInput); + devMenuContainer.appendChild(statsDexterityExpButton); + devMenuContainer.appendChild(statsAgilityExpInput); + devMenuContainer.appendChild(statsAgilityExpButton); + devMenuContainer.appendChild(statsCharismaExpInput); + devMenuContainer.appendChild(statsCharismaExpButton); + devMenuContainer.appendChild(statsIntelligenceExpInput); + devMenuContainer.appendChild(statsIntelligenceExpButton); + devMenuContainer.appendChild(statsEnableIntelligenceButton); + devMenuContainer.appendChild(statsDisableIntelligenceButton); + devMenuContainer.appendChild(factionsHeader); + devMenuContainer.appendChild(factionsDropdown); + devMenuContainer.appendChild(factionsAddButton); + devMenuContainer.appendChild(augmentationsHeader); + devMenuContainer.appendChild(augmentationsQueueButton); + devMenuContainer.appendChild(programsHeader); + devMenuContainer.appendChild(programsAddDropdown); + devMenuContainer.appendChild(programsAddButton); + devMenuContainer.appendChild(serversHeader); + devMenuContainer.appendChild(serversOpenAll); + devMenuContainer.appendChild(serversMinSecurityAll); + devMenuContainer.appendChild(serversMaxMoneyAll); + devMenuContainer.appendChild(serversConnectToDropdown); + devMenuContainer.appendChild(serversConnectToButton); + devMenuContainer.appendChild(bladeburnerHeader); + devMenuContainer.appendChild(bladeburnerGainRankInput); + devMenuContainer.appendChild(bladeburnerGainRankButton); + + const entireGameContainer = document.getElementById("entire-game-container"); + if (entireGameContainer == null) { + throw new Error("Could not find entire-game-container DOM element"); + } + entireGameContainer.appendChild(devMenuContainer); +} + +export function closeDevMenu() { + removeElementById(devMenuContainerId); +} diff --git a/src/engine.js b/src/engine.js index b0b3289f2..6627c7f8e 100644 --- a/src/engine.js +++ b/src/engine.js @@ -33,6 +33,7 @@ import {displayCreateProgramContent, getNumAvailableCreateProgram, initCreateProgramButtons, Programs} from "./CreateProgram"; +import {createDevMenu, closeDevMenu} from "./DevMenu"; import {displayFactionContent, joinFaction, processPassiveFactionRepGain, Factions, inviteToFaction, initFactions} from "./Faction"; @@ -194,41 +195,6 @@ const Engine = { tutorialFactionsButton: null, tutorialAugmentationsButton: null, tutorialBackButton: null, - - //Dev menu - devMenuGiveMoney: null, - devMenuGiveRam: null, - devMenuAugDropdown: null, - devMenuAddAug: null, - devMenuTriggerBitFlume: null, - devMenuFactionDropdown: null, - devMenuAddFaction: null, - devMenuOpen: null, - devMenuMinSecurity: null, - devMenuMaxMoney: null, - devMenuConnectDropdown: null, - devMenuConnect: null, - devMenuProgramsDropdown: null, - devMenuAddProgram: null, - devMenuHackingExp: null, - devMenuAddHacking: null, - devMenuStrengthExp: null, - devMenuAddStrength: null, - devMenuDefenseExp: null, - devMenuAddDefense: null, - devMenuDexterityExp: null, - devMenuAddDexterity: null, - devMenuAgilityExp: null, - devMenuAddAgility: null, - devMenuCharismaExp: null, - devMenuAddCharisma: null, - devMenuIntelligenceExp: null, - devMenuAddIntelligence: null, - devMenuEnableIntelligence: null, - devMenuDisableIntelligence: null, - devMenuSFN: null, - devMenuSFLvl: null, - devMenuAddSF: null, }, //Display objects @@ -254,7 +220,6 @@ const Engine = { factionAugmentationsContent: null, augmentationsContent: null, tutorialContent: null, - devMenuContent: null, infiltrationContent: null, stockMarketContent: null, locationContent: null, @@ -365,8 +330,7 @@ const Engine = { loadDevMenuContent: function() { Engine.hideAllContent(); - Engine.Display.devMenuContent.style.display = "block"; - Engine.displayDevMenuContent(); + createDevMenu(); routing.navigateTo(Page.DevMenu); document.getElementById("dev-menu-link").classList.add("active"); }, @@ -507,7 +471,6 @@ const Engine = { Engine.Display.factionAugmentationsContent.style.display = "none"; Engine.Display.augmentationsContent.style.display = "none"; Engine.Display.tutorialContent.style.display = "none"; - Engine.Display.devMenuContent.style.display = "none"; Engine.Display.locationContent.style.display = "none"; Engine.Display.workInProgressContent.style.display = "none"; Engine.Display.redPillContent.style.display = "none"; @@ -551,6 +514,9 @@ const Engine = { document.getElementById("bladeburner-menu-link").classList.remove("active"); document.getElementById("corporation-menu-link").classList.remove("active"); document.getElementById("gang-menu-link").classList.remove("active"); + + // Close dev menu + closeDevMenu(); }, displayCharacterOverviewInfo: function() { @@ -844,43 +810,6 @@ const Engine = { document.getElementById("tutorial-text").style.display = "none"; }, - displayDevMenuContent: function() { - Engine.Clickables.devMenuGiveMoney.style.display = "block"; - Engine.Clickables.devMenuGiveRam.style.display = "block"; - Engine.Clickables.devMenuAugDropdown.style.display = "block"; - Engine.Clickables.devMenuAddAug.style.display = "block"; - Engine.Clickables.devMenuTriggerBitFlume.style.display = "block"; - Engine.Clickables.devMenuFactionDropdown.style.display = "block"; - Engine.Clickables.devMenuAddFaction.style.display = "block"; - Engine.Clickables.devMenuOpen.style.display = "block"; - Engine.Clickables.devMenuMinSecurity.style.display = "block"; - Engine.Clickables.devMenuMaxMoney.style.display = "block"; - Engine.Clickables.devMenuConnectDropdown.style.display = "block"; - Engine.Clickables.devMenuConnect.style.display = "block"; - Engine.Clickables.devMenuProgramsDropdown.style.display = "block"; - Engine.Clickables.devMenuAddProgram.style.display = "block"; - - Engine.Clickables.devMenuHackingExp.style.display = "block"; - Engine.Clickables.devMenuAddHacking.style.display = "block"; - Engine.Clickables.devMenuStrengthExp.style.display = "block"; - Engine.Clickables.devMenuAddStrength.style.display = "block"; - Engine.Clickables.devMenuDefenseExp.style.display = "block"; - Engine.Clickables.devMenuAddDefense.style.display = "block"; - Engine.Clickables.devMenuDexterityExp.style.display = "block"; - Engine.Clickables.devMenuAddDexterity.style.display = "block"; - Engine.Clickables.devMenuAgilityExp.style.display = "block"; - Engine.Clickables.devMenuAddAgility.style.display = "block"; - Engine.Clickables.devMenuCharismaExp.style.display = "block"; - Engine.Clickables.devMenuAddCharisma.style.display = "block"; - Engine.Clickables.devMenuIntelligenceExp.style.display = "block"; - Engine.Clickables.devMenuAddIntelligence.style.display = "block"; - Engine.Clickables.devMenuEnableIntelligence.style.display = "block"; - Engine.Clickables.devMenuDisableIntelligence.style.display = "block"; - Engine.Clickables.devMenuSFN.style.display = "block"; - Engine.Clickables.devMenuSFLvl.style.display = "block"; - Engine.Clickables.devMenuAddSF.style.display = "block"; - }, - //Displays the text when a section of the Tutorial is opened displayTutorialPage: function(text) { document.getElementById("tutorial-getting-started-link").style.display = "none"; @@ -1525,9 +1454,6 @@ const Engine = { Engine.Display.tutorialContent = document.getElementById("tutorial-container"); Engine.Display.tutorialContent.style.display = "none"; - Engine.Display.devMenuContent = document.getElementById("dev-menu-container"); - Engine.Display.devMenuContent.style.display = "none"; - Engine.Display.infiltrationContent = document.getElementById("infiltration-container"); Engine.Display.infiltrationContent.style.display = "none"; @@ -1614,190 +1540,6 @@ const Engine = { Engine.Clickables.tutorialBackButton.addEventListener("click", function() { Engine.displayTutorialContent(); }); - - // dev menu buttons - Engine.Clickables.devMenuGiveMoney = document.getElementById("dev-need-money"); - Engine.Clickables.devMenuGiveMoney.addEventListener("click", function() { - Player.gainMoney(1e15); - }); - - Engine.Clickables.devMenuGiveRam = document.getElementById("dev-need-ram"); - Engine.Clickables.devMenuGiveRam.addEventListener("click", function() { - Player.getHomeComputer().maxRam *= 2; - }); - - Engine.Clickables.devMenuAugDropdown = document.getElementById("dev-menu-aug-dropdown"); - const augDD = Engine.Clickables.devMenuAugDropdown; - for(const i in AugmentationNames) { - augDD.options[augDD.options.length] = new Option(AugmentationNames[i], AugmentationNames[i]); - } - - Engine.Clickables.devMenuAddAug = document.getElementById("dev-add-aug"); - Engine.Clickables.devMenuAddAug.addEventListener("click", function() { - Player.queueAugmentation(augDD.options[augDD.selectedIndex].value); - }); - - Engine.Clickables.devMenuTriggerBitFlume = document.getElementById("dev-bit-flume"); - Engine.Clickables.devMenuTriggerBitFlume.addEventListener("click", function() { - hackWorldDaemon(Player.bitNodeN, true); - }); - - Engine.Clickables.devMenuFactionDropdown = document.getElementById("dev-menu-faction-dropdown"); - const facDD = Engine.Clickables.devMenuFactionDropdown; - for(const i in Factions) { - facDD.options[facDD.options.length] = new Option(Factions[i].name, Factions[i].name); - } - - Engine.Clickables.devMenuAddFaction = document.getElementById("dev-add-faction"); - Engine.Clickables.devMenuAddFaction.addEventListener("click", function() { - const factionName = facDD.options[facDD.selectedIndex].value; - Player.receiveInvite(factionName); - }); - - Engine.Clickables.devMenuOpen = document.getElementById("dev-open-all"); - Engine.Clickables.devMenuOpen.addEventListener("click", function() { - for(const i in AllServers) { - AllServers[i].hasAdminRights = true; - AllServers[i].sshPortOpen = true; - AllServers[i].ftpPortOpen = true; - AllServers[i].smtpPortOpen = true; - AllServers[i].httpPortOpen = true; - AllServers[i].sqlPortOpen = true; - AllServers[i].openPortCount = 5; - } - }); - - Engine.Clickables.devMenuMinSecurity = document.getElementById("dev-min-security"); - Engine.Clickables.devMenuMinSecurity.addEventListener("click", function() { - for(const i in AllServers) { - AllServers[i].hackDifficulty = AllServers[i].minDifficulty; - } - }); - - Engine.Clickables.devMenuMaxMoney = document.getElementById("dev-max-money"); - Engine.Clickables.devMenuMaxMoney.addEventListener("click", function() { - for(const i in AllServers) { - AllServers[i].moneyAvailable = AllServers[i].moneyMax; - } - }); - - Engine.Clickables.devMenuConnectDropdown = document.getElementById("dev-menu-connect-dropdown"); - const connectDD = Engine.Clickables.devMenuConnectDropdown; - for(const i in AllServers) { - connectDD.options[connectDD.options.length] = new Option(AllServers[i].hostname, AllServers[i].hostname); - } - - Engine.Clickables.devMenuConnect = document.getElementById("dev-connect"); - Engine.Clickables.devMenuConnect.addEventListener("click", function() { - const host = connectDD.options[connectDD.selectedIndex].value; - Terminal.connectToServer(host); - }); - - Engine.Clickables.devMenuProgramsDropdown = document.getElementById("dev-menu-add-program-dropdown"); - const programsDD = Engine.Clickables.devMenuProgramsDropdown; - for(const i in Programs) { - programsDD.options[programsDD.options.length] = new Option(Programs[i].name, Programs[i].name); - } - - Engine.Clickables.devMenuAddProgram = document.getElementById("dev-add-program"); - Engine.Clickables.devMenuAddProgram.addEventListener("click", function() { - const program = programsDD.options[programsDD.selectedIndex].value; - if(!Player.hasProgram(program)) { - Player.getHomeComputer().programs.push(program); - } - }); - - Engine.Clickables.devMenuHackingExp = document.getElementById("dev-hacking-exp"); - Engine.Clickables.devMenuAddHacking = document.getElementById("dev-add-hacking"); - Engine.Clickables.devMenuAddHacking.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuHackingExp.value); - Player.gainHackingExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuStrengthExp = document.getElementById("dev-strength-exp"); - Engine.Clickables.devMenuAddStrength = document.getElementById("dev-add-strength"); - Engine.Clickables.devMenuAddStrength.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuStrengthExp.value); - Player.gainStrengthExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuDefenseExp = document.getElementById("dev-defense-exp"); - Engine.Clickables.devMenuAddDefense = document.getElementById("dev-add-defense"); - Engine.Clickables.devMenuAddDefense.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuDefenseExp.value); - Player.gainDefenseExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuDexterityExp = document.getElementById("dev-dexterity-exp"); - Engine.Clickables.devMenuAddDexterity = document.getElementById("dev-add-dexterity"); - Engine.Clickables.devMenuAddDexterity.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuDexterityExp.value); - Player.gainDexterityExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuAgilityExp = document.getElementById("dev-agility-exp"); - Engine.Clickables.devMenuAddAgility = document.getElementById("dev-add-agility"); - Engine.Clickables.devMenuAddAgility.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuAgilityExp.value); - Player.gainAgilityExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuCharismaExp = document.getElementById("dev-charisma-exp"); - Engine.Clickables.devMenuAddCharisma = document.getElementById("dev-add-charisma"); - Engine.Clickables.devMenuAddCharisma.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuCharismaExp.value); - Player.gainCharismaExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuIntelligenceExp = document.getElementById("dev-intelligence-exp"); - Engine.Clickables.devMenuAddIntelligence = document.getElementById("dev-add-intelligence"); - Engine.Clickables.devMenuAddIntelligence.addEventListener("click", function() { - const exp = parseInt(Engine.Clickables.devMenuIntelligenceExp.value); - Player.gainIntelligenceExp(exp); - Player.updateSkillLevels(); - }); - - Engine.Clickables.devMenuEnableIntelligence = document.getElementById("dev-enable-intelligence"); - Engine.Clickables.devMenuEnableIntelligence.addEventListener("click", function() { - Player.intelligence = 1; - }); - - Engine.Clickables.devMenuDisableIntelligence = document.getElementById("dev-disable-intelligence"); - Engine.Clickables.devMenuDisableIntelligence.addEventListener("click", function() { - Player.intelligence = 0; - }); - - Engine.Clickables.devMenuSFN = document.getElementById("dev-sf-n"); - Engine.Clickables.devMenuSFLvl = document.getElementById("dev-sf-lvl"); - Engine.Clickables.devMenuAddSF = document.getElementById("dev-add-source-file"); - Engine.Clickables.devMenuAddSF.addEventListener("click", function() { - const sfN = parseInt(Engine.Clickables.devMenuSFN.value); - const sfLvl = parseInt(Engine.Clickables.devMenuSFLvl.value); - let sfIndex = -1; - for(const i in Player.sourceFiles) { - if(Player.sourceFiles[i].n === sfN) { - sfIndex = i; - break; - } - } - - if(sfIndex === -1) { // add fresh source file - Player.sourceFiles.push(new PlayerOwnedSourceFile(sfN, sfLvl)); - } else if(sfLvl === 0) { // remove a source file. - if(sfIndex === -1) { // doesn't have it anyway. - return; - } - Player.sourceFiles.splice(sfIndex, 1); - } else { // set source file level - Player.sourceFiles[sfIndex].lvl=sfLvl; - } - }); }, /* Initialization */ @@ -1899,7 +1641,7 @@ const Engine = { this.classList.toggle("opened"); const elems = [tutorial, options]; const links = [tutorialLink, optionsLink]; - if(process.env.NODE_ENV === "development") { + if (process.env.NODE_ENV === "development") { elems.push(document.getElementById("dev-tab")); links.push(document.getElementById("dev-menu-link")); } diff --git a/src/index.html b/src/index.html index 1d7636669..ffc3db652 100644 --- a/src/index.html +++ b/src/index.html @@ -490,58 +490,6 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>

- -
-

If you see this menu you can pretty much break the game. It's recommended that you use this menu only to setup a save file appropriate to test a new feature or bug fix.

- -

Generic

- Add $1000t - Double home RAM - -

Augmentation related:

- - - Queue AugmentationMay require save + reload - - Add/Remove source file If Lvl == 0 the sf will be removed, calling it with another level will replace your current source file. You CAN set a source file higher than it's maximum level. - -

Faction related:

- - Receive inviteMay require save + reload - -

Program related:

- - ConnectConnect to the target server. - - - Add ProgramAdd this program to the player home server, won't add the same program twice. - - Trigger BitFlumeQuick escape to change BN, does not give SFs - -

Server related:

- NUKE + ports all serversOpens all ports, nukes all servers, gains root access to everything (still need the appropriate hacking level) - minimize all servers securityAll servers security will be set to their minimum security - maximize all servers moneySet all servers available money to maximum for that server - -

Exp/stats related:

- - add hacking expAdd that many hacking experience point, use negative numbers to remove, don't worry about going under 0 exp - - add strength expAdd that many strength experience point, use negative numbers to remove, don't worry about going under 0 exp - - add defense expAdd that many defense experience point, use negative numbers to remove, don't worry about going under 0 exp - - add dexterity expAdd that many dexterity experience point, use negative numbers to remove, don't worry about going under 0 exp - - add agility expAdd that many agility experience point, use negative numbers to remove, don't worry about going under 0 exp - - add charisma expAdd that many charisma experience point, use negative numbers to remove, don't worry about going under 0 exp - - add intelligence expAdd that many intelligence experience point, use negative numbers to remove, don't worry about going under 0 exp - enable intelligenceEnables the intelligence stat - disable intelligenceDisables the intelligence stat -
-
Return to World