Addded Perk class, Traveling functionality, fixed bugs with script logging and terminal commands

This commit is contained in:
Daniel Xie 2017-04-13 12:33:34 -05:00
parent 3ecbed1351
commit 52297268f6
13 changed files with 151 additions and 46 deletions

@ -57,10 +57,16 @@ TESTING TODO:
Make it so that a script cannot be edited if it is running Make it so that a script cannot be edited if it is running
+ Traveling
Script logging functionality? Logs to internal "log file" (property of script itself) Script logging functionality? Logs to internal "log file" (property of script itself)
Can see log with tail. Can see log with tail.
Should add something where if you click it in the "Active Scripts" GUI you can see the logs too Should add something where if you click it in the "Active Scripts" GUI you can see the logs too
Seems to work fine
Tasks TODO: Tasks TODO:
New server hostname in Purchase Server Pop-up Box needs limits..don't think the ones set in HTML work
Tutorial and help - INTERACTIVE TUTORIAL Tutorial and help - INTERACTIVE TUTORIAL
Secret Servers Secret Servers
@ -68,7 +74,7 @@ Tasks TODO:
Create new menu page for purchased servers Create new menu page for purchased servers
Gyms + Traveling Gyms - Later..don't need for MVP
Update CONSTANTS.HelpText Update CONSTANTS.HelpText
Account for Max possible int when gaining exp (it will overflow) Account for Max possible int when gaining exp (it will overflow)

@ -22,6 +22,7 @@
<script src="utils/PurchaseServerBox.js"></script> <script src="utils/PurchaseServerBox.js"></script>
<script src="utils/FactionInvitationBox.js"></script> <script src="utils/FactionInvitationBox.js"></script>
<script src="utils/PurchaseAugmentationBox.js"></script> <script src="utils/PurchaseAugmentationBox.js"></script>
<script src="utils/TravelBox.js"></script>
<!-- Netscript --> <!-- Netscript -->
<script src="src/netscript/NetScriptWorker.js"></script> <script src="src/netscript/NetScriptWorker.js"></script>
@ -45,6 +46,7 @@
<script src="src/PurchaseServers.js"></script> <script src="src/PurchaseServers.js"></script>
<script src="src/CreateProgram.js"></script> <script src="src/CreateProgram.js"></script>
<script src="src/Augmentations.js"></script> <script src="src/Augmentations.js"></script>
<script src="src/Perk.js"></script>
<script src="src/engine.js"></script> <script src="src/engine.js"></script>
@ -466,6 +468,9 @@
<a href="#" id="location-purchase-1tb" class="a-link-button"> Purchase 1TB Server - $600,000,000</a> <a href="#" id="location-purchase-1tb" class="a-link-button"> Purchase 1TB Server - $600,000,000</a>
<!-- Travel agency --> <!-- Travel agency -->
<p id="location-travel-agency-text">
From here, you can travel to any other city! A ticket costs $1,000,000.
</p>
<a href="#" id="location-travel-to-aevum" class="a-link-button"> Travel to Aevum </a> <a href="#" id="location-travel-to-aevum" class="a-link-button"> Travel to Aevum </a>
<a href="#" id="location-travel-to-chongqing" class="a-link-button"> Travel to Chongqing</a> <a href="#" id="location-travel-to-chongqing" class="a-link-button"> Travel to Chongqing</a>
<a href="#" id="location-travel-to-sector12" class="a-link-button"> Travel to Sector-12</a> <a href="#" id="location-travel-to-sector12" class="a-link-button"> Travel to Sector-12</a>
@ -496,6 +501,15 @@
</div> </div>
</div> </div>
<!-- Travel Pop-up Box -->
<div id="travel-box-container">
<div id="travel-box-content".
<p id="travel-box-text"> </p>
<span id="travel-box-confirm"> Yes </span>
<span id="travel-box-cancel"> No </span>
</div>
</div>
<!-- Purchase Augmentation Pop-up Box --> <!-- Purchase Augmentation Pop-up Box -->
<div id="purchase-augmentation-box-container"> <div id="purchase-augmentation-box-container">
<div id="purchase-augmentation-box-content"> <div id="purchase-augmentation-box-content">

@ -34,7 +34,7 @@ CONSTANTS = {
"rm Delete a script/program from the machine. (WARNING: Permanent)<br>" + "rm Delete a script/program from the machine. (WARNING: Permanent)<br>" +
"run [script/program] Execute a program or a script<br>" + "run [script/program] Execute a program or a script<br>" +
"scan See 'netstat' command<br>" + "scan See 'netstat' command<br>" +
"tail [script] Display script logs (logs contain details about active scripts)" "tail [script] Display script logs (logs contain details about active scripts)" +
"telnet [ip/hostname] See 'connect' command<br>" + "telnet [ip/hostname] See 'connect' command<br>" +
"top Display all running scripts and their RAM usage<br>", "top Display all running scripts and their RAM usage<br>",
@ -64,7 +64,7 @@ CONSTANTS = {
"will have very high security and will need many ports opened. In order to open ports on another " + "will have very high security and will need many ports opened. In order to open ports on another " +
"server, you will need to run programs that attack the server to open specific ports. These programs " + "server, you will need to run programs that attack the server to open specific ports. These programs " +
"can be coded once your hacking skill gets high enough, or they can be purchased if you can find " + "can be coded once your hacking skill gets high enough, or they can be purchased if you can find " +
"a seller. <br><br>" "a seller. <br><br>" +
"In order to determine how many ports need to be opened to successfully NUKE a server, connect to " + "In order to determine how many ports need to be opened to successfully NUKE a server, connect to " +
"that server and run the 'analyze' command. This will also show you which ports have already been " + "that server and run the 'analyze' command. This will also show you which ports have already been " +
"opened. <br>" + "opened. <br>" +
@ -95,7 +95,7 @@ CONSTANTS = {
"ps - Displays all scripts that are actively running on the current server<br>" + "ps - Displays all scripts that are actively running on the current server<br>" +
"run [script] - Run a script <br>" + "run [script] - Run a script <br>" +
"tail [script] - Displays a script's logs<br>" + "tail [script] - Displays a script's logs<br>" +
"top - Displays all active scripts and their RAM usage <br><br>" "top - Displays all active scripts and their RAM usage <br><br>",
TutorialTravelingText:"There are six major cities in the world that you are able to travel to: <br> " + TutorialTravelingText:"There are six major cities in the world that you are able to travel to: <br> " +
" Aevum<br>" + " Aevum<br>" +
" Chongqing<br>" + " Chongqing<br>" +
@ -105,7 +105,7 @@ CONSTANTS = {
" Volhaven<br>" + " Volhaven<br>" +
"To travel between cities, visit your current city's travel agency through the 'World' page. " + "To travel between cities, visit your current city's travel agency through the 'World' page. " +
"From the travel agency you can travel to any other city. Doing so costs money. <br>" + "From the travel agency you can travel to any other city. Doing so costs money. <br>" +
"Each city has its own set of companies and unique locations. " "Each city has its own set of companies and unique locations. ",
TutorialJobsText: "Hacking is not the only way to gain money and experience! Located around the world are many " + TutorialJobsText: "Hacking is not the only way to gain money and experience! Located around the world are many " +
"different companies which you can work for. By working for a company you can earn money, " + "different companies which you can work for. By working for a company you can earn money, " +
"train your various labor skills, and unlock powerful passive perks. <br> " + "train your various labor skills, and unlock powerful passive perks. <br> " +
@ -122,7 +122,7 @@ CONSTANTS = {
"other actions such as using your terminal or visiting other locations (However, note that any scripts you have " + "other actions such as using your terminal or visiting other locations (However, note that any scripts you have " +
"running on servers will continue to run as you work!). It is possible to cancel your work shift before the " + "running on servers will continue to run as you work!). It is possible to cancel your work shift before the " +
"8 hours is up, but doing so will result in you gaining only half of all of the money, experience, and reputation " + "8 hours is up, but doing so will result in you gaining only half of all of the money, experience, and reputation " +
"that you had earned up to that point. <br>" "that you had earned up to that point. <br>" +
"As you continue to work at a company, you will gain more and more reputation at that company. When your stats " + "As you continue to work at a company, you will gain more and more reputation at that company. When your stats " +
"and reputation are high enough, you can get a promotion. You can apply for a promotion on the company page, just like " + "and reputation are high enough, you can get a promotion. You can apply for a promotion on the company page, just like " +
"you applied for the job originally. Higher positions at a company provide better salaries and stat gains", "you applied for the job originally. Higher positions at a company provide better salaries and stat gains",

@ -30,7 +30,7 @@ function displayCreateProgramContent() {
portHackALink.style.display = "block"; portHackALink.style.display = "block";
portHackALink.addEventListener("click", function() { portHackALink.addEventListener("click", function() {
createProgram(Programs.PortHackProgram); createProgram(Programs.PortHackProgram);
} });
} }
//BruteSSH //BruteSSH
@ -39,7 +39,7 @@ function displayCreateProgramContent() {
bruteSshALink.style.display = "block"; bruteSshALink.style.display = "block";
bruteSshALink.addEventListener("click", function() { bruteSshALink.addEventListener("click", function() {
createProgram(Programs.BruteSSHProgram); createProgram(Programs.BruteSSHProgram);
} });
} }
//FTPCrack //FTPCrack
@ -48,34 +48,34 @@ function displayCreateProgramContent() {
ftpCrackALink.style.display = "block"; ftpCrackALink.style.display = "block";
ftpCrackALink.addEventListener("click", function() { ftpCrackALink.addEventListener("click", function() {
createProgram(Programs.FTPCrackProgram); createProgram(Programs.FTPCrackProgram);
} });
} }
//relaySMTP //relaySMTP
if (Player.getHomeComputer().programs.indexOf(Programs.RelaySMTPProgram == -1 && if (Player.getHomeComputer().programs.indexOf(Programs.RelaySMTPProgram) == -1 &&
Player.hacking_skill >= 300) { Player.hacking_skill >= 300) {
relaySmtpALink.style.display = "block"; relaySmtpALink.style.display = "block";
relaySmtpAlink.addEventListener("click", function() { relaySmtpAlink.addEventListener("click", function() {
createProgram(Programs.RelaySMTPProgram); createProgram(Programs.RelaySMTPProgram);
} });
} }
//HTTPWorm //HTTPWorm
if (Player.getHomeComputer().programs.indexOf(Programs.HTTPWormProgram == -1 && if (Player.getHomeComputer().programs.indexOf(Programs.HTTPWormProgram) == -1 &&
Player.hacking_skill >= 500) { Player.hacking_skill >= 500) {
httpWormALink.style.display = "block"; httpWormALink.style.display = "block";
httpWormALink.addEventListener("click", function() { httpWormALink.addEventListener("click", function() {
createProgram(Programs.HTTPWormProgram); createProgram(Programs.HTTPWormProgram);
} });
} }
//SQLInject //SQLInject
if (Player.getHomeComputer().programs.indexOf(Programs.SQLInjectProgram == -1 && if (Player.getHomeComputer().programs.indexOf(Programs.SQLInjectProgram) == -1 &&
Player.hacking_skill >= 750) { Player.hacking_skill >= 750) {
sqlInjectALink.style.display = "block"; sqlInjectALink.style.display = "block";
sqlInjectALink.addEventListener("click", function() { sqlInjectALink.addEventListener("click", function() {
createProgram(Programs.SQLInjectProgram); createProgram(Programs.SQLInjectProgram);
} });
} }
} }

@ -116,6 +116,7 @@ displayLocationContent = function() {
var purchase512gb = document.getElementById("location-purchase-512gb"); var purchase512gb = document.getElementById("location-purchase-512gb");
var purchase1tb = document.getElementById("location-purchase-1tb"); var purchase1tb = document.getElementById("location-purchase-1tb");
var travelAgencyText = document.getElementById("location-travel-agency-text");
var travelToAevum = document.getElementById("location-travel-to-aevum"); var travelToAevum = document.getElementById("location-travel-to-aevum");
var travelToChongqing = document.getElementById("location-travel-to-chongqing"); var travelToChongqing = document.getElementById("location-travel-to-chongqing");
var travelToSector12 = document.getElementById("location-travel-to-sector12"); var travelToSector12 = document.getElementById("location-travel-to-sector12");
@ -173,6 +174,7 @@ displayLocationContent = function() {
purchase512gb.style.display = "none"; purchase512gb.style.display = "none";
purchase1tb.style.display = "none"; purchase1tb.style.display = "none";
travelAgencyText.style.display = "none";
travelToAevum.style.display = "none"; travelToAevum.style.display = "none";
travelToChongqing.style.display = "none"; travelToChongqing.style.display = "none";
travelToSector12.style.display = "none"; travelToSector12.style.display = "none";
@ -221,6 +223,7 @@ displayLocationContent = function() {
switch (loc) { switch (loc) {
case Locations.AevumTravelAgency: case Locations.AevumTravelAgency:
travelAgencyText.style.display = "block";
travelToChongqing.style.display = "block"; travelToChongqing.style.display = "block";
travelToSector12.style.display = "block"; travelToSector12.style.display = "block";
travelToNewTokyo.style.display = "block"; travelToNewTokyo.style.display = "block";
@ -356,6 +359,7 @@ displayLocationContent = function() {
break; break;
case Locations.ChongqingTravelAgency: case Locations.ChongqingTravelAgency:
travelAgencyText.style.display = "block";
travelToAevum.style.display = "block"; travelToAevum.style.display = "block";
travelToSector12.style.display = "block"; travelToSector12.style.display = "block";
travelToNewTokyo.style.display = "block"; travelToNewTokyo.style.display = "block";
@ -387,6 +391,7 @@ displayLocationContent = function() {
case Locations.Sector12TravelAgency: case Locations.Sector12TravelAgency:
travelAgencyText.style.display = "block";
travelToAevum.style.display = "block"; travelToAevum.style.display = "block";
travelToChongqing.style.display = "block"; travelToChongqing.style.display = "block";
travelToNewTokyo.style.display = "block"; travelToNewTokyo.style.display = "block";
@ -528,6 +533,7 @@ displayLocationContent = function() {
break; break;
case Locations.NewTokyoTravelAgency: case Locations.NewTokyoTravelAgency:
travelAgencyText.style.display = "block";
travelToAevum.style.display = "block"; travelToAevum.style.display = "block";
travelToChongqing.style.display = "block"; travelToChongqing.style.display = "block";
travelToSector12.style.display = "block"; travelToSector12.style.display = "block";
@ -574,6 +580,7 @@ displayLocationContent = function() {
case Locations.IshimaTravelAgency: case Locations.IshimaTravelAgency:
travelAgencyText.style.display = "block";
travelToAevum.style.display = "block"; travelToAevum.style.display = "block";
travelToChongqing.style.display = "block"; travelToChongqing.style.display = "block";
travelToSector12.style.display = "block"; travelToSector12.style.display = "block";
@ -624,8 +631,7 @@ displayLocationContent = function() {
break; break;
case Locations.VolhavenTravelAgency: case Locations.VolhavenTravelAgency:
locationInfo.innerHTML = Companies[loc].info; travelAgencyText.style.display = "block";
travelToAevum.style.display = "block"; travelToAevum.style.display = "block";
travelToChongqing.style.display = "block"; travelToChongqing.style.display = "block";
travelToSector12.style.display = "block"; travelToSector12.style.display = "block";
@ -1225,4 +1231,40 @@ initLocationButtons = function() {
return false; return false;
}); });
travelToAevum.addEventListener("click", function() {
travelBoxCreate(Locations.Aevum, 1000000);
});
travelToChongqing.addEventListener("click", function() {
travelBoxCreate(Locations.Chongqing, 1000000);
});
travelToSector12.addEventListener("click", function() {
travelBoxCreate(Locations.Sector12, 1000000);
});
travelToNewTokyo.addEventListener("click", function() {
travelBoxCreate(Locations.NewTokyo, 1000000);
});
travelToIshima.addEventListener("click", function() {
travelBoxCreate(Locations.Ishima, 1000000);
});
travelToVolhaven.addEventListener("click", function() {
travelBoxCreate(Locations.Volhaven, 1000000);
});
}
travelToCity = function(destCityName, cost) {
if (cost > Player.money) {
dialogBoxCreate("You cannot afford to travel to " + destCityName);
return;
}
Player.money -= cost;
Player.city = destCityName;
dialogBoxCreate("You are now in " + destCityName + "!");
Engine.loadWorldContent();
} }

@ -1,7 +1,4 @@
/* Worker code, contains Netscript scripts that are actually running */ /* Worker code, contains Netscript scripts that are actually running */
//TODO Need some way to stop scripts. Idea: Put a flag in the environment, we can setActive
//this flag from outside. If the evaluate() function sees that flag it rejects the current
// Promise. We can catch that rejection and stop the script.
//TODO Tested For and while and generic call statements. Have not tested if statements //TODO Tested For and while and generic call statements. Have not tested if statements

@ -61,8 +61,8 @@ function PlayerObject() {
//Money //Money
this.money = 0; this.money = 0;
this.total_money = 0; this.total_money = 0; //Total money ever earned
this.lifetime_money = 0; this.lifetime_money = 0; //Total money ever earned
//IP Address of Starting (home) computer //IP Address of Starting (home) computer
this.homeComputer = ""; this.homeComputer = "";
@ -140,7 +140,7 @@ PlayerObject.prototype.init = function() {
this.currentServer = t_homeComp.ip; this.currentServer = t_homeComp.ip;
AddToAllServers(t_homeComp); AddToAllServers(t_homeComp);
this.getHomeComputer().programs.push(CONSTANTS.PortHackProgram); this.getHomeComputer().programs.push(Programs.NukeProgram);
} }
PlayerObject.prototype.getCurrentServer = function() { PlayerObject.prototype.getCurrentServer = function() {
@ -648,7 +648,7 @@ PlayerObject.prototype.createProgramWork = function(numCycles) {
var txt = document.getElementById("work-in-progress-text"); var txt = document.getElementById("work-in-progress-text");
txt.innerHTML = "You are currently working on coding " + programName + ".<br><br> " + txt.innerHTML = "You are currently working on coding " + programName + ".<br><br> " +
"You have been working for " + convertTimeMsToTimeElapsedString(this.timeWorked) + "<br><br>" + "You have been working for " + convertTimeMsToTimeElapsedString(this.timeWorked) + "<br><br>" +
"The program is " + (this.timeWorked / timeToComplete).toFixed(2) "% complete. <br>" + "The program is " + (this.timeWorked / timeToComplete).toFixed(2) + "% complete. <br>" +
"If you cancel, you will lose all of your progress."; "If you cancel, you will lose all of your progress.";
} }

@ -6,7 +6,6 @@ purchaseServer = function(ram, cost) {
return; return;
} }
var newServ = new Server(); var newServ = new Server();
var hostname = document.getElementById("purchase-server-box-input").value; var hostname = document.getElementById("purchase-server-box-input").value;
if (hostname == "") { if (hostname == "") {

@ -68,7 +68,7 @@ function Script() {
this.code = ""; this.code = "";
this.ramUsage = 0; this.ramUsage = 0;
this.server = ""; //IP of server this script is on this.server = ""; //IP of server this script is on
this.log = []; //Script logging. Array of strings, with each element being a log entry this.logs = []; //Script logging. Array of strings, with each element being a log entry
/* Properties to calculate offline progress. Only applies for infinitely looping scripts */ /* Properties to calculate offline progress. Only applies for infinitely looping scripts */
@ -127,18 +127,18 @@ Script.prototype.updateRamUsage = function() {
} }
Script.prototype.log = function(txt) { Script.prototype.log = function(txt) {
if (this.log.length > CONSTANTS.MaxLogCapacity) { if (this.logs.length > CONSTANTS.MaxLogCapacity) {
//Delete first element and add new log entry to the end. //Delete first element and add new log entry to the end.
//TODO Eventually it might be better to replace this with circular array //TODO Eventually it might be better to replace this with circular array
//to improve performance //to improve performance
this.log.shift(); this.logs.shift();
} }
this.log.push(txt); this.logs.push(txt);
} }
Script.prototype.displayLog = function() { Script.prototype.displayLog = function() {
for (var i = 0; i < this.log.length; ++i) { for (var i = 0; i < this.logs.length; ++i) {
post(this.log[i]); post(this.logs[i]);
} }
} }

@ -425,10 +425,10 @@ var Terminal = {
//TODO //TODO
break; break;
case "tail": case "tail":
if (commandArray.length != 1) { if (commandArray.length != 2) {
post("Incorrect number of arguments. Usage: tail [script]"); post("Incorrect number of arguments. Usage: tail [script]");
} else { } else {
var scriptName == commandArray[1]; var scriptName = commandArray[1];
//Can only tail script files //Can only tail script files
if (scriptName.endsWith(".script") == false) { if (scriptName.endsWith(".script") == false) {
@ -438,8 +438,9 @@ var Terminal = {
//Check that the script exists on this machine //Check that the script exists on this machine
var currScripts = Player.getCurrentServer().scripts; var currScripts = Player.getCurrentServer().scripts;
for (var i = 0; i < currScripts.length; ++i) { for (var i = 0; i < currScripts.length; ++i) {
if (scriptName == currScripts[i]) { if (scriptName == currScripts[i].filename) {
currScripts[i].displayLog(); currScripts[i].displayLog();
return;
} }
} }

@ -424,7 +424,7 @@ var Engine = {
//Online //Online
var onlineTotalMoneyMade = "Total online production: $" + workerscript.scriptRef.onlineMoneyMade.toFixed(2); var onlineTotalMoneyMade = "Total online production: $" + workerscript.scriptRef.onlineMoneyMade.toFixed(2);
var onlineTotalExpEarned = (Array(26).join(" ") + workerScript.scriptRef.onlineExpGained.toFixed(2) + " exp").replace( / /g, "&nbsp;"); var onlineTotalExpEarned = (Array(26).join(" ") + workerscript.scriptRef.onlineExpGained.toFixed(2) + " exp").replace( / /g, "&nbsp;");
var onlineMps = workerscript.scriptRef.onlineMoneyMade / workerscript.scriptRef.onlineRunningTime; var onlineMps = workerscript.scriptRef.onlineMoneyMade / workerscript.scriptRef.onlineRunningTime;
var onlineMpsText = "Online production rate: $" + onlineMps.toFixed(2) + "/second"; var onlineMpsText = "Online production rate: $" + onlineMps.toFixed(2) + "/second";
@ -432,8 +432,8 @@ var Engine = {
var onlineEpsText = (Array(25).join(" ") + onlineEps.toFixed(4) + " exp/second").replace( / /g, "&nbsp;"); var onlineEpsText = (Array(25).join(" ") + onlineEps.toFixed(4) + " exp/second").replace( / /g, "&nbsp;");
//Offline //Offline
var offlineTotalMoneyMade = "Total offline production: $" + workerScript.scriptRef.offlineMoneyMade.toFixed(2); var offlineTotalMoneyMade = "Total offline production: $" + workerscript.scriptRef.offlineMoneyMade.toFixed(2);
var offlineTotalExpEarned = (Array(27).join(" ") + workerScript.scriptRef.offlineExpGained.toFixed(2) + " exp").replace( / /g, "&nbsp;"); var offlineTotalExpEarned = (Array(27).join(" ") + workerscript.scriptRef.offlineExpGained.toFixed(2) + " exp").replace( / /g, "&nbsp;");
var offlineMps = workerscript.scriptRef.offlineMoneyMade / workerscript.scriptRef.offlineRunningTime; var offlineMps = workerscript.scriptRef.offlineMoneyMade / workerscript.scriptRef.offlineRunningTime;
var offlineMpsText = "Offline production rate: $" + offlineMps.toFixed(2) + "/second"; var offlineMpsText = "Offline production rate: $" + offlineMps.toFixed(2) + "/second";
@ -503,7 +503,7 @@ var Engine = {
Engine.Clickables.tutorialFactionsButton.style.display = "block"; Engine.Clickables.tutorialFactionsButton.style.display = "block";
Engine.Clickables.tutorialAugmentationsButton.style.display = "block"; Engine.Clickables.tutorialAugmentationsButton.style.display = "block";
Engine.CLickables.tutorialBackButton.style.display = "none"; Engine.Clickables.tutorialBackButton.style.display = "none";
document.getElementById("tutorial-text").style.display = "none"; document.getElementById("tutorial-text").style.display = "none";
}, },
@ -518,7 +518,7 @@ var Engine = {
Engine.Clickables.tutorialFactionsButton.style.display = "none"; Engine.Clickables.tutorialFactionsButton.style.display = "none";
Engine.Clickables.tutorialAugmentationsButton.style.display = "none"; Engine.Clickables.tutorialAugmentationsButton.style.display = "none";
Engine.Clickables.tutorialBackButton.style.display = "block"; Engine.Clickables.tutorialBackButton.style.display = "inline-block";
document.getElementById("tutorial-text").style.display = "block"; document.getElementById("tutorial-text").style.display = "block";
document.getElementById("tutorial-text").innerHTML = text; document.getElementById("tutorial-text").innerHTML = text;
}, },
@ -577,7 +577,7 @@ var Engine = {
Counters: { Counters: {
autoSaveCounter: 300, //Autosave every minute autoSaveCounter: 300, //Autosave every minute
updateSkillLevelsCounter: 10, //Only update skill levels every 2 seconds. Might improve performance updateSkillLevelsCounter: 10, //Only update skill levels every 2 seconds. Might improve performance
updateDisplays: 10, //Update displays such as Active Scripts display and character display updateDisplays: 5, //Update displays such as Active Scripts display and character display
serverGrowth: 450, //Process server growth every minute and a half serverGrowth: 450, //Process server growth every minute and a half
checkFactionInvitations: 1500, //Check whether you qualify for any faction invitations every 5 minutes checkFactionInvitations: 1500, //Check whether you qualify for any faction invitations every 5 minutes
}, },
@ -610,7 +610,7 @@ var Engine = {
Engine.displayCharacterInfo(); Engine.displayCharacterInfo();
} }
Engine.Counters.updateDisplays = 10; Engine.Counters.updateDisplays = 5;
} }
if (Engine.Counters.serverGrowth <= 0) { if (Engine.Counters.serverGrowth <= 0) {

46
utils/TravelBox.js Normal file

@ -0,0 +1,46 @@
/* Pop up Purchase Server Box */
function travelBoxInit() {
if (Engine.Debug) {
console.log("Travel box Initialized");
}
var cancelButton = document.getElementById("travel-box-cancel");
//Close Dialog box
cancelButton.addEventListener("click", function() {
travelBoxClose();
return false;
});
};
document.addEventListener("DOMContentLoaded", travelBoxInit, false);
travelBoxClose = function() {
var travelBox = document.getElementById("travel-box-container");
travelBox.style.display = "none";
}
travelBoxOpen = function() {
var travelBox = document.getElementById("travel-box-container");
travelBox.style.display = "block";
}
travelBoxSetText = function(txt) {
var travelBoxText = document.getElementById("travel-box-text");
travelBoxText.innerHTML = txt;
}
travelBoxCreate = function(destCityName, cost) {
travelBoxSetText("Would you like to travel to " + destCityName + "? The trip will cost $" + cost + ".");
//Clear old event listeners from Confirm button
var confirmButton = document.getElementById("travel-box-confirm");
var newConfirmButton = confirmButton.cloneNode(true);
confirmButton.parentNode.replaceChild(newConfirmButton, confirmButton);
newConfirmButton.addEventListener("click", function() {
travelBoxClose();
travelToCity(destCityName, cost);
return false;
});
travelBoxOpen();
}