mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2025-03-07 11:04:36 +01:00
Added Leadership and Management courses
This commit is contained in:
@ -468,9 +468,11 @@
|
||||
|
||||
<!-- Study/Take classes at a university -->
|
||||
<a href="#" id="location-study-computer-science" class="a-link-button">Study Computer Science (free)</a>
|
||||
<a href="#" id="location-data-structures-class" class="a-link-button">Take Data Structures Class</a>
|
||||
<a href="#" id="location-networks-class" class="a-link-button">Take Networks Class</a>
|
||||
<a href="#" id="location-algorithms-class" class="a-link-button">Take Algorithms Class</a>
|
||||
<a href="#" id="location-data-structures-class" class="a-link-button">Take Data Structures course</a>
|
||||
<a href="#" id="location-networks-class" class="a-link-button">Take Networks course</a>
|
||||
<a href="#" id="location-algorithms-class" class="a-link-button">Take Algorithms course</a>
|
||||
<a href="#" id="location-management-class" class="a-link-button">Take Management course</a>
|
||||
<a href="#" id="location-leadership-class" class="a-link-button">Take Leadership course</a>
|
||||
|
||||
<!-- Purchase servers -->
|
||||
<a href="#" id="location-purchase-1gb" class="a-link-button"> Purchase 1GB Server - $50,000</a>
|
||||
|
@ -52,6 +52,8 @@ CONSTANTS = {
|
||||
ClassDataStructures: "taking a Data Structures course",
|
||||
ClassNetworks: "taking a Networks course",
|
||||
ClassAlgorithms: "taking an Algorithms course",
|
||||
ClassManagement: "taking a Management course",
|
||||
ClassLeadership: "taking a Leadership course",
|
||||
|
||||
//Text that is displayed when the 'help' command is ran in Terminal
|
||||
HelpText: "analyze Get statistics and information about current machine <br>" +
|
||||
|
180
src/Location.js
180
src/Location.js
@ -111,6 +111,8 @@ displayLocationContent = function() {
|
||||
var classDataStructures = document.getElementById("location-data-structures-class");
|
||||
var classNetworks = document.getElementById("location-networks-class");
|
||||
var classAlgorithms = document.getElementById("location-algorithms-class");
|
||||
var classManagement = document.getElementById("location-management-class");
|
||||
var classLeadership = document.getElementById("location-leadership-class");
|
||||
|
||||
var purchase1gb = document.getElementById("location-purchase-1gb");
|
||||
var purchase2gb = document.getElementById("location-purchase-2gb");
|
||||
@ -175,6 +177,8 @@ displayLocationContent = function() {
|
||||
classDataStructures.style.display = "none";
|
||||
classNetworks.style.display = "none";
|
||||
classAlgorithms.style.display = "none";
|
||||
classManagement.style.display = "none";
|
||||
classLeadership.style.display = "none";
|
||||
|
||||
purchase1gb.style.display = "none";
|
||||
purchase2gb.style.display = "none";
|
||||
@ -250,35 +254,7 @@ displayLocationContent = function() {
|
||||
var costMult = 3;
|
||||
var expMult = 2;
|
||||
displayUniversityLocationContent(costMult);
|
||||
|
||||
var newStudyCS = studyComputerScience.cloneNode(true);
|
||||
studyComputerScience.parentNode.replaceChild(newStudyCS, studyComputerScience)
|
||||
newStudyCS.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassStudyComputerScience);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassDataStructures = classDataStructures.cloneNode(true);
|
||||
classDataStructures.parentNode.replaceChild(newClassDataStructures, classDataStructures);
|
||||
newClassDataStructures.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassDataStructures);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassNetworks = classNetworks.cloneNode(true);
|
||||
classNetworks.parentNode.replaceChild(newClassNetworks, classNetworks);
|
||||
newClassNetworks.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassNetworks);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassAlgorithms = classAlgorithms.cloneNode(true);
|
||||
classAlgorithms.parentNode.replaceChild(newClassAlgorithms, classAlgorithms);
|
||||
newClassAlgorithms.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassAlgorithms);
|
||||
return false;
|
||||
});
|
||||
|
||||
setUniversityLocationButtons(costMult, expMult);
|
||||
break;
|
||||
|
||||
case Locations.AevumECorp:
|
||||
@ -455,35 +431,8 @@ displayLocationContent = function() {
|
||||
case Locations.Sector12RothmanUniversity:
|
||||
var costMult = 2;
|
||||
var expMult = 1;
|
||||
displayUniversityLocationContent(costMult);
|
||||
|
||||
var newStudyCS = studyComputerScience.cloneNode(true);
|
||||
studyComputerScience.parentNode.replaceChild(newStudyCS, studyComputerScience)
|
||||
newStudyCS.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassStudyComputerScience);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassDataStructures = classDataStructures.cloneNode(true);
|
||||
classDataStructures.parentNode.replaceChild(newClassDataStructures, classDataStructures);
|
||||
newClassDataStructures.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassDataStructures);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassNetworks = classNetworks.cloneNode(true);
|
||||
classNetworks.parentNode.replaceChild(newClassNetworks, classNetworks);
|
||||
newClassNetworks.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassNetworks);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassAlgorithms = classAlgorithms.cloneNode(true);
|
||||
classAlgorithms.parentNode.replaceChild(newClassAlgorithms, classAlgorithms);
|
||||
newClassAlgorithms.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassAlgorithms);
|
||||
return false;
|
||||
});
|
||||
displayUniversityLocationContent(costMult);
|
||||
setUniversityLocationButtons(costMult, expMult);
|
||||
break;
|
||||
|
||||
case Locations.Sector12MegaCorp:
|
||||
@ -731,35 +680,8 @@ displayLocationContent = function() {
|
||||
case Locations.VolhavenZBInstituteOfTechnology:
|
||||
var costMult = 4;
|
||||
var expMult = 3;
|
||||
displayUniversityLocationContent(costMult);
|
||||
|
||||
var newStudyCS = studyComputerScience.cloneNode(true);
|
||||
studyComputerScience.parentNode.replaceChild(newStudyCS, studyComputerScience)
|
||||
newStudyCS.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassStudyComputerScience);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassDataStructures = classDataStructures.cloneNode(true);
|
||||
classDataStructures.parentNode.replaceChild(newClassDataStructures, classDataStructures);
|
||||
newClassDataStructures.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassDataStructures);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassNetworks = classNetworks.cloneNode(true);
|
||||
classNetworks.parentNode.replaceChild(newClassNetworks, classNetworks);
|
||||
newClassNetworks.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassNetworks);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassAlgorithms = classAlgorithms.cloneNode(true);
|
||||
classAlgorithms.parentNode.replaceChild(newClassAlgorithms, classAlgorithms);
|
||||
newClassAlgorithms.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassAlgorithms);
|
||||
return false;
|
||||
});
|
||||
displayUniversityLocationContent(costMult);
|
||||
setUniversityLocationButtons(costMult, expMult);
|
||||
break;
|
||||
|
||||
case Locations.VolhavenOmniTekIncorporated:
|
||||
@ -1446,24 +1368,84 @@ displayUniversityLocationContent = function(costMult) {
|
||||
var classDataStructuresButton = document.getElementById("location-data-structures-class");
|
||||
var classNetworksButton = document.getElementById("location-networks-class");
|
||||
var classAlgorithmsButton = document.getElementById("location-algorithms-class");
|
||||
var classManagementButton = document.getElementById("location-management-class");
|
||||
var classLeadershipButton = document.getElementById("location-leadership-class");
|
||||
studyComputerScienceButton.style.display = "block";
|
||||
classDataStructuresButton.style.display = "block";
|
||||
classNetworksButton.style.display = "block";
|
||||
classAlgorithmsButton.style.display = "block";
|
||||
|
||||
var gameCPS = 1 / Engine._idleSpeed;
|
||||
classManagementButton.style.display = "block";
|
||||
classLeadershipButton.style.display = "block";
|
||||
|
||||
//Costs (per second)
|
||||
var baseDataStructuresCost = 1;
|
||||
var baseNetworksCost = 5;
|
||||
var baseAlgorithmsCost = 20;
|
||||
var baseDataStructuresCost = 1;
|
||||
var baseNetworksCost = 5;
|
||||
var baseAlgorithmsCost = 20;
|
||||
var baseManagementCost = 10;
|
||||
var baseLeadershipCost = 20;
|
||||
|
||||
var dataStructuresCost = baseDataStructuresCost * costMult;
|
||||
var networksCost = baseNetworksCost * costMult;
|
||||
var algorithmsCost = baseAlgorithmsCost * costMult;
|
||||
var dataStructuresCost = baseDataStructuresCost * costMult;
|
||||
var networksCost = baseNetworksCost * costMult;
|
||||
var algorithmsCost = baseAlgorithmsCost * costMult;
|
||||
var managementCost = baseManagementCost * costMult;
|
||||
var leadershipCost = baseLeadershipCost * costMult;
|
||||
|
||||
//Update button text to show cost
|
||||
classDataStructuresButton.innerHTML = "Take Data Structures Class ($" + dataStructuresCost + " / sec)";
|
||||
classNetworksButton.innerHTML = "Take Networks Class ($" + networksCost + " / second)";
|
||||
classAlgorithmsButton.innerHTML = "Take Algorithms Class ($" + algorithmsCost + " / second)";
|
||||
}
|
||||
classDataStructuresButton.innerHTML = "Take Data Structures course ($" + dataStructuresCost + " / sec)";
|
||||
classNetworksButton.innerHTML = "Take Networks course ($" + networksCost + " / second)";
|
||||
classAlgorithmsButton.innerHTML = "Take Algorithms course ($" + algorithmsCost + " / second)";
|
||||
classManagementButton.innerHTML = "Take Management course ($" + managementCost + " / second)";
|
||||
classLeadershipButton.innerHTML = "Take Leadership course ($" + leadershipCost + " / second)";
|
||||
}
|
||||
|
||||
setUniversityLocationButtons = function(costMult, expMult) {
|
||||
var studyComputerScience= document.getElementById("location-study-computer-science");
|
||||
var classDataStructures = document.getElementById("location-data-structures-class");
|
||||
var classNetworks = document.getElementById("location-networks-class");
|
||||
var classAlgorithms = document.getElementById("location-algorithms-class");
|
||||
var classManagement = document.getElementById("location-management-class");
|
||||
var classLeadership = document.getElementById("location-leadership-class");
|
||||
|
||||
var newStudyCS = studyComputerScience.cloneNode(true);
|
||||
studyComputerScience.parentNode.replaceChild(newStudyCS, studyComputerScience)
|
||||
newStudyCS.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassStudyComputerScience);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassDataStructures = classDataStructures.cloneNode(true);
|
||||
classDataStructures.parentNode.replaceChild(newClassDataStructures, classDataStructures);
|
||||
newClassDataStructures.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassDataStructures);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassNetworks = classNetworks.cloneNode(true);
|
||||
classNetworks.parentNode.replaceChild(newClassNetworks, classNetworks);
|
||||
newClassNetworks.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassNetworks);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassAlgorithms = classAlgorithms.cloneNode(true);
|
||||
classAlgorithms.parentNode.replaceChild(newClassAlgorithms, classAlgorithms);
|
||||
newClassAlgorithms.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassAlgorithms);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassManagement = classManagement.cloneNode(true);
|
||||
classManagement.parentNode.replaceChild(newClassManagement, classManagement);
|
||||
newClassManagement.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassManagement);
|
||||
return false;
|
||||
});
|
||||
|
||||
var newClassLeadership = classLeadership.cloneNode(true);
|
||||
classLeadership.parentNode.replaceChild(newClassLeadership, classLeadership);
|
||||
newClassLeadership.addEventListener("click", function() {
|
||||
Player.startClass(costMult, expMult, CONSTANTS.ClassLeadership);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -769,7 +769,6 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
|
||||
this.workDefExpGainRate = 0;
|
||||
this.workDexExpGainRate = 0;
|
||||
this.workAgiExpGainRate = 0;
|
||||
this.workChaExpGainRate = 0;
|
||||
this.workRepGainRate = 0;
|
||||
this.workMoneyGainRate = 0;
|
||||
|
||||
@ -787,15 +786,20 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
|
||||
var baseDataStructuresCost = 1;
|
||||
var baseNetworksCost = 5;
|
||||
var baseAlgorithmsCost = 20;
|
||||
var baseManagementCost = 10;
|
||||
var baseLeadershipCost = 20;
|
||||
|
||||
var baseStudyComputerScienceExp = 0.02;
|
||||
var baseDataStructuresExp = 0.1;
|
||||
var baseNetworksExp = 0.5;
|
||||
var baseAlgorithmsExp = 2.0;
|
||||
var baseNetworksExp = 0.4;
|
||||
var baseAlgorithmsExp = 1.5;
|
||||
var baseManagementExp = 0.8;
|
||||
var baseLeadershipExp = 1.5;
|
||||
|
||||
//Find cost and exp gain per game cycle
|
||||
var cost = 0;
|
||||
var hackExp = 0;
|
||||
var chaExp = 0;
|
||||
switch (className) {
|
||||
case CONSTANTS.ClassStudyComputerScience:
|
||||
hackExp = baseStudyComputerScienceExp * expMult / gameCPS;
|
||||
@ -812,13 +816,22 @@ PlayerObject.prototype.startClass = function(costMult, expMult, className) {
|
||||
cost = baseAlgorithmsCost * costMult / gameCPS;
|
||||
hackExp = baseAlgorithmsExp * expMult / gameCPS;
|
||||
break;
|
||||
case CONSTANTS.ClassManagement:
|
||||
cost = baseManagementCost * costMult / gameCPS;
|
||||
chaExp = baseManagementExp * expMult / gameCPS;
|
||||
break;
|
||||
case CONSTANTS.ClassLeadership:
|
||||
cost = baseLeadershipCost * costMult / gameCPS;
|
||||
chaExp = baseLeadershipExp * expMult / gameCPS;
|
||||
break;
|
||||
default:
|
||||
throw new Error("ERR: Invalid/unregocnized class name");
|
||||
return;
|
||||
}
|
||||
|
||||
this.workMoneyLossRate = cost;
|
||||
this.workHackExpGainRate = hackExp;
|
||||
this.workMoneyLossRate = cost;
|
||||
this.workHackExpGainRate = hackExp;
|
||||
this.workChaExpGainRate = chaExp;
|
||||
|
||||
var cancelButton = document.getElementById("work-in-progress-cancel-button");
|
||||
|
||||
@ -883,7 +896,7 @@ PlayerObject.prototype.finishClass = function() {
|
||||
|
||||
this.updateSkillLevels();
|
||||
var txt = "After " + this.className + " for " + convertTimeMsToTimeElapsedString(this.timeWorked) + ", <br>" +
|
||||
"you spent a total of " + this.workMoneyGained * -1 + ". <br><br>" +
|
||||
"you spent a total of $" + this.workMoneyGained * -1 + ". <br><br>" +
|
||||
"You earned a total of: <br>" +
|
||||
(this.workHackExpGained).toFixed(3) + " hacking exp <br>" +
|
||||
(this.workStrExpGained).toFixed(3) + " strength exp <br>" +
|
||||
|
Reference in New Issue
Block a user