Shops, encounters, poi menus, items, and some other stuff. Poi dialogue and combat left!
This commit is contained in:
parent
22975aff26
commit
8485d7d800
6 changed files with 371 additions and 142 deletions
|
|
@ -58,7 +58,7 @@ export function naturalEncounter(location){
|
||||||
return HLabominationEncounters[randomNumber(0, HLabominationEncounters.length-1)];
|
return HLabominationEncounters[randomNumber(0, HLabominationEncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
||||||
}
|
}
|
||||||
case "MWBOS":
|
case "MWBOS":
|
||||||
if(HLE == true){
|
if(HLE == true){
|
||||||
|
|
@ -69,7 +69,7 @@ export function naturalEncounter(location){
|
||||||
return HLMWBOSEncounters[randomNumber(0, HLMWBOSEncounters.length-1)];
|
return HLMWBOSEncounters[randomNumber(0, HLMWBOSEncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return MWBOSEncounters[randomNumber(0, MWBOSEncounters.length-1)];
|
return MWBOSEncounters[randomNumber(0, MWBOSEncounters.length-1)];
|
||||||
}
|
}
|
||||||
case "BOS":
|
case "BOS":
|
||||||
if(HLE == true){
|
if(HLE == true){
|
||||||
|
|
@ -80,7 +80,7 @@ export function naturalEncounter(location){
|
||||||
return HLBOSEncounters[randomNumber(0, HLBOSEncounters.length-1)];
|
return HLBOSEncounters[randomNumber(0, HLBOSEncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return BOSEncounters[randomNumber(0, BOSEncounters.length-1)];
|
return BOSEncounters[randomNumber(0, BOSEncounters.length-1)];
|
||||||
}
|
}
|
||||||
case "NCR":
|
case "NCR":
|
||||||
if(HLE == true){
|
if(HLE == true){
|
||||||
|
|
@ -91,7 +91,7 @@ export function naturalEncounter(location){
|
||||||
return HLNCREncounters[randomNumber(0, HLNCREncounters.length-1)];
|
return HLNCREncounters[randomNumber(0, HLNCREncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return NCREncounters[randomNumber(0, NCREncounters.length-1)];
|
return NCREncounters[randomNumber(0, NCREncounters.length-1)];
|
||||||
}
|
}
|
||||||
case "legion":
|
case "legion":
|
||||||
if(HLE == true){
|
if(HLE == true){
|
||||||
|
|
@ -102,7 +102,7 @@ export function naturalEncounter(location){
|
||||||
return HLlegionEncounters[randomNumber(0, HLlegionEncounters.length-1)];
|
return HLlegionEncounters[randomNumber(0, HLlegionEncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return legionEncounters[randomNumber(0, legionEncounters.length-1)];
|
return legionEncounters[randomNumber(0, legionEncounters.length-1)];
|
||||||
}
|
}
|
||||||
case "settler":
|
case "settler":
|
||||||
if(HLE == true){
|
if(HLE == true){
|
||||||
|
|
@ -113,7 +113,7 @@ export function naturalEncounter(location){
|
||||||
return HLsettlerEncounters[randomNumber(0, HLsettlerEncounters.length-1)];
|
return HLsettlerEncounters[randomNumber(0, HLsettlerEncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return settlerEncounters[randomNumber(0, settlerEncounters.length-1)];
|
return settlerEncounters[randomNumber(0, settlerEncounters.length-1)];
|
||||||
}
|
}
|
||||||
case "raider":
|
case "raider":
|
||||||
if(HLE == true){
|
if(HLE == true){
|
||||||
|
|
@ -124,7 +124,7 @@ export function naturalEncounter(location){
|
||||||
return HLraiderEncounters[randomNumber(0, HLraiderEncounters.length-1)];
|
return HLraiderEncounters[randomNumber(0, HLraiderEncounters.length-1)];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return raiderEncounters[randomNumber(0, raiderEncounters.length-1)];
|
return raiderEncounters[randomNumber(0, raiderEncounters.length-1)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -172,34 +172,72 @@ export function forcedEncounter(HLE, faction, forcedHLE){
|
||||||
}
|
}
|
||||||
|
|
||||||
var raiderEncounters = [
|
var raiderEncounters = [
|
||||||
{name: "Raider Aspirant", faction: "raider", minLevel: 5, maxLevel: 15, damageClass: "B", minDamage: 5, maxDamage: 10}
|
{name: "Raider Aspirant", faction: "raider", minLevel: 1, maxLevel: 15, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
|
{name: "Raider", faction: "raider", minLevel: 15, maxLevel: 25, damageClass: "B", minDamage: 10, maxDamage: 20},
|
||||||
|
{name: "Raider Scavenger", faction: "raider", minLevel: 25, maxLevel: 35, damageClass: "B", minDamage: 20, maxDamage: 30}
|
||||||
];
|
];
|
||||||
var HLraiderEncounters = [
|
var HLraiderEncounters = [
|
||||||
|
{name: "Raider Enforcer", faction: "raider", minLevel: 35, maxLevel: 50, damageClass: "B", minDamage: 30, maxDamage: 40},
|
||||||
|
{name: "Raider Warlord", faction: "raider", minLevel: 50, maxLevel: 65, damageClass: "B", minDamage: 40, maxDamage: 50},
|
||||||
|
{name: "Raider Boss", faction: "raider", minLevel: 65, maxLevel: 80, damageClass: "B", minDamage: 50, maxDamage: 60}
|
||||||
];
|
];
|
||||||
var MWBOSEncounters = [
|
var MWBOSEncounters = [
|
||||||
{name: "MWBOS Paladin", faction: "MWBOS", minLevel: 40, maxLevel: 65, damageClass: "E", minDamage: 5, maxDamage: 40}
|
{name: "MWBOS Initiate", faction: "MWBOS", minLevel: 5, maxLevel: 10, damageClass: "E", minDamage: 5, maxDamage: 40},
|
||||||
|
{name: "MWBOS Knight", faction: "MWBOS", minLevel: 15, maxLevel: 20, damageClass: "E", minDamage: 40, maxDamage: 60},
|
||||||
|
{name: "MWBOS Knight Captain", faction: "MWBOS", minLevel: 25, maxLevel: 30, damageClass: "E", minDamage: 60, maxDamage: 80}
|
||||||
];
|
];
|
||||||
var HLMWBOSEncounters = [
|
var HLMWBOSEncounters = [
|
||||||
|
{name: "MWBOS Paladin", faction: "MWBOS", minLevel: 35, maxLevel: 40, damageClass: "E", minDamage: 60, maxDamage: 80},
|
||||||
|
{name: "MWBOS Star Paladin", faction: "MWBOS", minLevel: 45, maxLevel: 50, damageClass: "E", minDamage: 80, maxDamage: 100},
|
||||||
|
{name: "MWBOS Head Paladin", faction: "MWBOS", minLevel: 55, maxLevel: 60, damageClass: "E", minDamage: 100, maxDamage: 120}
|
||||||
];
|
];
|
||||||
var abominationEncounters = [
|
var abominationEncounters = [
|
||||||
{name: "Deathclaw", faction: "abomination", minLevel: 50, maxLevel: 100, damageClass: "B", minDamage: 35, maxDamage: 75}
|
{name: "Mole Rat", faction: "abomination", minLevel: 1, maxLevel: 15, damageClass: "B", minDamage: 1, maxDamage: 5},
|
||||||
|
{name: "Mongrel", faction: "abomination", minLevel: 15, maxLevel: 30, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
|
{name: "Radscorpion", faction: "abomination", minLevel: 30, maxLevel: 50, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
];
|
];
|
||||||
var HLabominationEncounters = [
|
var HLabominationEncounters = [
|
||||||
|
{name: "Super Mutant", faction: "abomination", minLevel: 50, maxLevel: 65, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
|
{name: "Tunneler", faction: "abomination", minLevel: 65, maxLevel: 80, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
|
{name: "Deathclaw", faction: "abomination", minLevel: 80, maxLevel: 100, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
];
|
];
|
||||||
var NCREncounters = [
|
var NCREncounters = [
|
||||||
|
{name: "NCR Trooper", faction: "NCR", minLevel: 40, maxLevel: 70, damageClass: "B", minDamage: 5, maxDamage: 10},
|
||||||
|
{name: "NCR Ranger", faction: "NCR", minLevel: 50, maxLevel: 70, damageClass: "B", minDamage: 10, maxDamage: 20},
|
||||||
|
{name: "NCR Commander", faction: "NCR", minLevel: 60, maxLevel: 70, damageClass: "B", minDamage: 20, maxDamage: 30}
|
||||||
];
|
];
|
||||||
var HLNCREncounters = [
|
var HLNCREncounters = [
|
||||||
|
{name: "NCR Heavy Trooper", faction: "NCR", minLevel: 70, maxLevel: 100, damageClass: "B", minDamage: 30, maxDamage: 40},
|
||||||
|
{name: "NCR Veteran Ranger", faction: "NCR", minLevel: 80, maxLevel: 100, damageClass: "B", minDamage: 40, maxDamage: 50},
|
||||||
|
{name: "NCR General", faction: "NCR", minLevel: 90, maxLevel: 100, damageClass: "B", minDamage: 50, maxDamage: 60}
|
||||||
];
|
];
|
||||||
var BOSEncounters = [
|
var BOSEncounters = [ //Reduntant, your not gonna encounter a low level Lost Hills BOS encounter
|
||||||
|
{name: "BOS Paladin", faction: "BOS", minLevel: 60, maxLevel: 80, damageClass: "E", minDamage: 60, maxDamage: 80},
|
||||||
|
{name: "BOS Star Paladin", faction: "BOS", minLevel: 70, maxLevel: 90, damageClass: "E", minDamage: 80, maxDamage: 100},
|
||||||
|
{name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, damageClass: "E", minDamage: 100, maxDamage: 120}
|
||||||
];
|
];
|
||||||
var HLBOSEncounters = [
|
var HLBOSEncounters = [
|
||||||
|
{name: "BOS Paladin", faction: "BOS", minLevel: 60, maxLevel: 80, damageClass: "E", minDamage: 60, maxDamage: 80},
|
||||||
|
{name: "BOS Star Paladin", faction: "BOS", minLevel: 70, maxLevel: 90, damageClass: "E", minDamage: 80, maxDamage: 100},
|
||||||
|
{name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, damageClass: "E", minDamage: 100, maxDamage: 120}
|
||||||
];
|
];
|
||||||
var settlerEncounters = [
|
var settlerEncounters = [
|
||||||
{name: "John Settler", faction: "settler", minLevel: 1, maxLevel: 2, damageClass: "B", minDamage: 1, maxDamage: 2}
|
{name: "John Settler", faction: "settler", minLevel: 1, maxLevel: 2, damageClass: "B", minDamage: 1, maxDamage: 2},
|
||||||
|
{name: "Settler", faction: "settler", minLevel: 2, maxLevel: 3, damageClass: "B", minDamage: 2, maxDamage: 3},
|
||||||
|
{name: "Settler Scavenger", faction: "settler", minLevel: 3, maxLevel: 4, damageClass: "B", minDamage: 3, maxDamage: 4},
|
||||||
];
|
];
|
||||||
var HLsettlerEncounters = [
|
var HLsettlerEncounters = [
|
||||||
|
{name: "Settler Gaurdsman", faction: "settler", minLevel: 4, maxLevel: 5, damageClass: "B", minDamage: 4, maxDamage: 5},
|
||||||
|
{name: "Settler Enforcer", faction: "settler", minLevel: 5, maxLevel: 6, damageClass: "B", minDamage: 5, maxDamage: 6},
|
||||||
|
{name: "Settler Sheriff", faction: "settler", minLevel: 6, maxLevel: 7, damageClass: "B", minDamage: 6, maxDamage: 7},
|
||||||
];
|
];
|
||||||
var legionEncounters = [
|
var legionEncounters = [
|
||||||
|
{name: "Legion Recruit", faction: "legion", minLevel: 30, maxLevel: 40, damageClass: "B", minDamage: 1, maxDamage: 2},
|
||||||
|
{name: "Legionary", faction: "legion", minLevel: 40, maxLevel: 50, damageClass: "B", minDamage: 2, maxDamage: 3},
|
||||||
|
{name: "Legion Vexillarius", faction: "legion", minLevel: 50, maxLevel: 60, damageClass: "B", minDamage: 3, maxDamage: 4},
|
||||||
];
|
];
|
||||||
var HLlegionEncounters = [
|
var HLlegionEncounters = [
|
||||||
|
{name: "Legion Decanus", faction: "legion", minLevel: 60, maxLevel: 70, damageClass: "B", minDamage: 4, maxDamage: 5},
|
||||||
|
{name: "Legion Centurion", faction: "legion", minLevel: 70, maxLevel: 80, damageClass: "B", minDamage: 5, maxDamage: 6},
|
||||||
|
{name: "Legion Praetorian", faction: "legion", minLevel: 80, maxLevel: 90, damageClass: "B", minDamage: 6, maxDamage: 7},
|
||||||
];
|
];
|
||||||
|
|
@ -28,7 +28,6 @@ export function randomNumber(min, max) { // Takes in two parameters, min and max
|
||||||
return randNum;
|
return randNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Used for game
|
// Used for game
|
||||||
export function healthCapCalc() { // Calculates HP cap given current radPoints
|
export function healthCapCalc() { // Calculates HP cap given current radPoints
|
||||||
healthCap = healthCap-radPoints;
|
healthCap = healthCap-radPoints;
|
||||||
|
|
@ -85,24 +84,24 @@ export function calcLocation() {
|
||||||
}
|
}
|
||||||
if (walkRate == 2) {
|
if (walkRate == 2) {
|
||||||
if (path == 0) {
|
if (path == 0) {
|
||||||
location * 2;
|
location + 2;
|
||||||
}
|
}
|
||||||
if (path == 1) {
|
if (path == 1) {
|
||||||
locationA * 2;
|
locationA + 2;
|
||||||
}
|
}
|
||||||
if (path == 2) {
|
if (path == 2) {
|
||||||
locationB * 2;
|
locationB + 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (walkRate == 3) {
|
if (walkRate == 3) {
|
||||||
if (path == 0) {
|
if (path == 0) {
|
||||||
location * 3;
|
location + 3;
|
||||||
}
|
}
|
||||||
if (path == 1) {
|
if (path == 1) {
|
||||||
locationA * 3;
|
locationA + 3;
|
||||||
}
|
}
|
||||||
if (path == 2) {
|
if (path == 2) {
|
||||||
locationB * 3;
|
locationB + 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -174,7 +173,7 @@ function death3(dc) {
|
||||||
function death4(dc) {
|
function death4(dc) {
|
||||||
console.clear();
|
console.clear();
|
||||||
sleep(2);
|
sleep(2);
|
||||||
console.log("You have been killed, therefore you are DEAD...\n\n");
|
console.log("You have been killed, therefore you are dead...\n\n");
|
||||||
console.log(" \\|/");
|
console.log(" \\|/");
|
||||||
console.log(" _/\\___<0> | ");
|
console.log(" _/\\___<0> | ");
|
||||||
console.log("-------------------------------\n\n");
|
console.log("-------------------------------\n\n");
|
||||||
|
|
@ -226,10 +225,10 @@ export function travelScreen() {
|
||||||
console.log("│ . . - . . - . . . - │");
|
console.log("│ . . - . . - . . . - │");
|
||||||
console.log("│ - . . . . . . - . .│");
|
console.log("│ - . . . . . . - . .│");
|
||||||
console.log("└──────────────────────────────────────┘");
|
console.log("└──────────────────────────────────────┘");
|
||||||
console.log("Press [ENTER] to open Pip-Boy");
|
console.log("Press [SPACE] to open Pip-Boy");
|
||||||
console.log("Current Health: "+health);
|
console.log("Current Health: "+health);
|
||||||
console.log("Food Amt: "+food);
|
console.log("Food Amt: "+food);
|
||||||
console.log("Distance to next POI: ");
|
console.log("Distance to next POI: " + pois[poiCounter].location-location);
|
||||||
travelFrame++
|
travelFrame++
|
||||||
} else if (travelFrame == 1) {
|
} else if (travelFrame == 1) {
|
||||||
console.clear();
|
console.clear();
|
||||||
|
|
@ -248,10 +247,10 @@ export function travelScreen() {
|
||||||
console.log("│ - . - . . . - . - . │");
|
console.log("│ - . - . . . - . - . │");
|
||||||
console.log("│ - . . - . . . - .│");
|
console.log("│ - . . - . . . - .│");
|
||||||
console.log("└──────────────────────────────────────┘");
|
console.log("└──────────────────────────────────────┘");
|
||||||
console.log("Press [ENTER] to open Pip-Boy");
|
console.log("Press [SPACE] to open Pip-Boy");
|
||||||
console.log("Current Health: "+health);
|
console.log("Current Health: "+health);
|
||||||
console.log("Food Amt: "+food);
|
console.log("Food Amt: "+food);
|
||||||
console.log("Distance to next POI: ");
|
console.log("Distance to next POI: " + pois[poiCounter].location-location);
|
||||||
travelFrame++
|
travelFrame++
|
||||||
} else if (travelFrame == 2) {
|
} else if (travelFrame == 2) {
|
||||||
console.clear();
|
console.clear();
|
||||||
|
|
@ -270,10 +269,10 @@ export function travelScreen() {
|
||||||
console.log("│ - . - . . . - . - . │");
|
console.log("│ - . - . . . - . - . │");
|
||||||
console.log("│ - . . - . . . - .│");
|
console.log("│ - . . - . . . - .│");
|
||||||
console.log("└──────────────────────────────────────┘");
|
console.log("└──────────────────────────────────────┘");
|
||||||
console.log("Press [ENTER] to open Pip-Boy");
|
console.log("Press [SPACE] to open Pip-Boy");
|
||||||
console.log("Current Health: "+health);
|
console.log("Current Health: "+health);
|
||||||
console.log("Food Amt: "+food);
|
console.log("Food Amt: "+food);
|
||||||
console.log("Distance to next POI: ");
|
console.log("Distance to next POI: " + pois[poiCounter].location-location);
|
||||||
travelFrame++
|
travelFrame++
|
||||||
} else if (travelFrame == 3) {
|
} else if (travelFrame == 3) {
|
||||||
console.clear();
|
console.clear();
|
||||||
|
|
@ -292,10 +291,10 @@ export function travelScreen() {
|
||||||
console.log("│ - . - . . . - . - . │");
|
console.log("│ - . - . . . - . - . │");
|
||||||
console.log("│ - . . - . . . - .│");
|
console.log("│ - . . - . . . - .│");
|
||||||
console.log("└──────────────────────────────────────┘");
|
console.log("└──────────────────────────────────────┘");
|
||||||
console.log("Press [ENTER] to open Pip-Boy");
|
console.log("Press [SPACE] to open Pip-Boy");
|
||||||
console.log("Current Health: "+health);
|
console.log("Current Health: "+health);
|
||||||
console.log("Food Amt: "+food);
|
console.log("Food Amt: "+food);
|
||||||
console.log("Distance to next POI: ");
|
console.log("Distance to next POI: " + pois[poiCounter].location-location);
|
||||||
travelFrame=0;
|
travelFrame=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -360,7 +359,7 @@ export function pauseScreen() {
|
||||||
console.log ("3) View Distances");
|
console.log ("3) View Distances");
|
||||||
console.log ("4) View Stats");
|
console.log ("4) View Stats");
|
||||||
console.log ("5) Scavenge");
|
console.log ("5) Scavenge");
|
||||||
console.log ("6) Test Death");
|
console.log ("6) Change Speed/Food Rate");
|
||||||
let pauseInput = userInput("Enter: ");
|
let pauseInput = userInput("Enter: ");
|
||||||
switch(pauseInput) {
|
switch(pauseInput) {
|
||||||
case "1":
|
case "1":
|
||||||
|
|
@ -371,7 +370,6 @@ export function pauseScreen() {
|
||||||
break;
|
break;
|
||||||
case "3":
|
case "3":
|
||||||
console.clear();
|
console.clear();
|
||||||
console.log("Current Location: "+location);
|
|
||||||
if (path == 0) {
|
if (path == 0) {
|
||||||
console.log("Current Path: Main");
|
console.log("Current Path: Main");
|
||||||
}
|
}
|
||||||
|
|
@ -396,7 +394,7 @@ export function pauseScreen() {
|
||||||
console.log(pois[i].name+" - "+visited[i]);
|
console.log(pois[i].name+" - "+visited[i]);
|
||||||
}
|
}
|
||||||
if (pois[i].visited == false) {
|
if (pois[i].visited == false) {
|
||||||
console.log("??? "+pois[i].location-location+" location points away");
|
console.log("??? "+pois[i].location-locationA+" location points away");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -406,7 +404,7 @@ export function pauseScreen() {
|
||||||
console.log(pois[i].name+" - "+visited[i]);
|
console.log(pois[i].name+" - "+visited[i]);
|
||||||
}
|
}
|
||||||
if (pois[i].visited == false) {
|
if (pois[i].visited == false) {
|
||||||
console.log("??? "+pois[i].location-location+" location points away");
|
console.log("??? "+pois[i].location-locationB+" location points away");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -424,7 +422,7 @@ export function pauseScreen() {
|
||||||
console.log("Walk Rate: "+walkRate);
|
console.log("Walk Rate: "+walkRate);
|
||||||
console.log("Food Amt: "+food);
|
console.log("Food Amt: "+food);
|
||||||
console.log("Food Rate: "+foodRate);
|
console.log("Food Rate: "+foodRate);
|
||||||
console.log("Current Location: "+location);
|
console.log("Distance to next POI: " + pois[poiCounter].location-location);
|
||||||
console.log("Current Path: "+path);
|
console.log("Current Path: "+path);
|
||||||
userInput("\n[Press Enter to return]");
|
userInput("\n[Press Enter to return]");
|
||||||
break;
|
break;
|
||||||
|
|
@ -432,7 +430,38 @@ export function pauseScreen() {
|
||||||
scavenge();
|
scavenge();
|
||||||
break;
|
break;
|
||||||
case "6":
|
case "6":
|
||||||
testDeath = true;
|
console.clear();
|
||||||
|
console.log("Current Walk Rate: "+walkRate);
|
||||||
|
console.log("Current Food Rate: "+foodRate);
|
||||||
|
console.log("---------------------------");
|
||||||
|
console.log("What would you like to change?");
|
||||||
|
console.log("---------------------------");
|
||||||
|
console.log("1) Walk Rate");
|
||||||
|
console.log("2) Food Rate");
|
||||||
|
let rateInput = userInput("Enter: ");
|
||||||
|
switch(rateInput) {
|
||||||
|
case "1":
|
||||||
|
console.log("Current Walk Rate: "+walkRate);
|
||||||
|
let walkRateInput = userInput("Enter new Walk Rate (1-3): ");
|
||||||
|
if (walkRateInput >= 1 && walkRateInput <= 3) {
|
||||||
|
walkRate = walkRateInput;
|
||||||
|
} else {
|
||||||
|
console.log("Invalid input. Walk Rate not changed.");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
console.log("Current Food Rate: "+foodRate);
|
||||||
|
let foodRateInput = userInput("Enter new Food Rate (1-3): ");
|
||||||
|
if (foodRateInput >= 1 && foodRateInput <= 3) {
|
||||||
|
foodRate = foodRateInput;
|
||||||
|
} else {
|
||||||
|
console.log("Invalid input. Food Rate not changed.");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("Invalid input. No changes made.");
|
||||||
|
}
|
||||||
|
userInput("\n[Press Enter to return]");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Program is started from here, runs functions from other files.
|
// Program is started from here, runs functions from other files.
|
||||||
import { userInput, sleep, disableRawMode, walkPathMain } from './functions.js';
|
import { userInput, sleep, disableRawMode, walkPathMain, randomNumber, removeDuplicates } from './functions.js';
|
||||||
import { forcedEncounter, naturalEncounter } from './encounters.js';
|
import { forcedEncounter, naturalEncounter } from './encounters.js';
|
||||||
import { ravenRockStore } from './shops.js';
|
import { ravenRockStore } from './shops.js';
|
||||||
|
|
||||||
|
|
@ -12,8 +12,6 @@ console.log(" / ' / / /
|
||||||
console.log("---/__-------__---/---/----__---------_/_---------/-------__----__----__---__----__---_--_----__-------/___ /----__----__----__-/-");
|
console.log("---/__-------__---/---/----__---------_/_---------/-------__----__----__---__----__---_--_----__-------/___ /----__----__----__-/-");
|
||||||
console.log(" / / ) / / / ) / / / o / / ) / ) /___) (_ ` / ) / / ) /___) / | / ) / ) / / ");
|
console.log(" / / ) / / / ) / / / o / / ) / ) /___) (_ ` / ) / / ) /___) / | / ) / ) / / ");
|
||||||
console.log("_/________(___(_/___/___(___/_(___(__(_ __o_____/____/_(___/_/___/_(___ _(__)_(___/_/_/__/_(___ _____/_____|__(___/_(___(_(___/___\n\n");
|
console.log("_/________(___(_/___/___(___/_(___(__(_ __o_____/____/_(___/_/___/_(___ _(__)_(___/_/_/__/_(___ _____/_____|__(___/_(___(_(___/___\n\n");
|
||||||
|
|
||||||
|
|
||||||
await sleep(1);
|
await sleep(1);
|
||||||
|
|
||||||
console.log("What would you like to do?");
|
console.log("What would you like to do?");
|
||||||
|
|
@ -36,12 +34,23 @@ switch(mainMenuInput) {
|
||||||
case "3":
|
case "3":
|
||||||
console.log("Quitting Game...");
|
console.log("Quitting Game...");
|
||||||
await sleep(1);
|
await sleep(1);
|
||||||
break;
|
exit(0);
|
||||||
case "4":
|
case "4":
|
||||||
console.log("Credits:");
|
console.log("Credits:");
|
||||||
console.log("Bethesda Game Studios - The Fallout IP and related characters/lore");
|
console.log("Bethesda Game Studios - The Fallout IP and related characters/lore");
|
||||||
console.log("Readline-sync - NPM package used for async collection of user input");
|
console.log("Readline-sync - NPM package used for async collection of user input");
|
||||||
break;
|
break;
|
||||||
|
case "5":
|
||||||
|
var thing1 = [1,2,3,4,5,6,7,8,9];
|
||||||
|
var thing2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||||
|
var thing3 = [];
|
||||||
|
while (thing3.length < 6) {
|
||||||
|
let randomPick = randomNumber(1,thing2.length);
|
||||||
|
thing3.push(thing2[randomPick]);
|
||||||
|
thing2.pop(randomPick);
|
||||||
|
}
|
||||||
|
console.log(thing2);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
function startGame() { // So far what I have is filler and testing, feel free to change.
|
function startGame() { // So far what I have is filler and testing, feel free to change.
|
||||||
|
|
|
||||||
|
|
@ -463,6 +463,9 @@ function hub() {
|
||||||
case "2":
|
case "2":
|
||||||
pauseScreen();
|
pauseScreen();
|
||||||
case "3":
|
case "3":
|
||||||
|
trader();
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
enableRawMode();
|
enableRawMode();
|
||||||
console.clear();
|
console.clear();
|
||||||
break;
|
break;
|
||||||
|
|
@ -478,6 +481,7 @@ function lostHills() {
|
||||||
console.log("What would you like to do?");
|
console.log("What would you like to do?");
|
||||||
console.log("1) Explore");
|
console.log("1) Explore");
|
||||||
console.log("2) Open your PIP-Boy");
|
console.log("2) Open your PIP-Boy");
|
||||||
|
console.log("3) Attempt to trade");
|
||||||
console.log("4) Leave");
|
console.log("4) Leave");
|
||||||
let poiInput = userInput("Enter: ");
|
let poiInput = userInput("Enter: ");
|
||||||
switch(poiInput) {
|
switch(poiInput) {
|
||||||
|
|
@ -488,6 +492,9 @@ function lostHills() {
|
||||||
case "2":
|
case "2":
|
||||||
pauseScreen();
|
pauseScreen();
|
||||||
case "3":
|
case "3":
|
||||||
|
lostHillsStore();
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
enableRawMode();
|
enableRawMode();
|
||||||
console.clear();
|
console.clear();
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
338
files/shops.js
338
files/shops.js
|
|
@ -2,20 +2,134 @@ import { randomNumber, userInput } from "./functions.js";
|
||||||
import "./variables.js";
|
import "./variables.js";
|
||||||
|
|
||||||
// Inventories for the various shops, based of global item lists
|
// Inventories for the various shops, based of global item lists
|
||||||
// Most item prices in Raven Rock and Eureka are multiplied by 10, as they are using pre-war money
|
|
||||||
var rrInv = [
|
var rrInv = [
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost/10, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[8], name: equipmentList[8].name, price: equipmentList[8].cost, amount: 10},
|
||||||
|
];
|
||||||
|
var vt0Inv = [
|
||||||
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
||||||
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost*10, amount: 100},
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost*10, amount: 100},
|
||||||
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost*10, amount: 100},
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost*10, amount: 100},
|
||||||
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost*10, amount: 100},
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost*10, amount: 100},
|
||||||
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost*10, amount: 10},
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[1].cost*10, amount: 10},
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
{item: equipmentList[8], name: equipmentList[8].name, price: equipmentList[2].cost*10, amount: 10},
|
{item: equipmentList[2], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[4], name: equipmentList[4].name, price: equipmentList[4].cost, amount: 10},
|
||||||
|
{item: equipmentList[5], name: equipmentList[5].name, price: equipmentList[5].cost, amount: 10},
|
||||||
|
{item: equipmentList[8], name: equipmentList[8].name, price: equipmentList[8].cost, amount: 10},
|
||||||
|
{item: equipmentList[9], name: equipmentList[9].name, price: equipmentList[9].cost, amount: 10},
|
||||||
|
{item: equipmentList[11], name: equipmentList[11].name, price: equipmentList[11].cost, amount: 10},
|
||||||
|
];
|
||||||
|
var vegasInv = [
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: supplyList[4], name: supplyList[4].name, price: supplyList[4].cost, amount: 100},
|
||||||
|
{item: supplyList[5], name: supplyList[5].name, price: supplyList[5].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[3], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[4], name: equipmentList[4].name, price: equipmentList[4].cost, amount: 10},
|
||||||
|
{item: equipmentList[5], name: equipmentList[5].name, price: equipmentList[5].cost, amount: 10},
|
||||||
|
{item: equipmentList[9], name: equipmentList[9].name, price: equipmentList[9].cost, amount: 10},
|
||||||
|
{item: equipmentList[11], name: equipmentList[11].name, price: equipmentList[11].cost, amount: 10},
|
||||||
|
];
|
||||||
|
var eurInv = [
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: supplyList[4], name: supplyList[4].name, price: supplyList[4].cost, amount: 100},
|
||||||
|
{item: supplyList[5], name: supplyList[5].name, price: supplyList[5].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[3], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[4], name: equipmentList[4].name, price: equipmentList[4].cost, amount: 10},
|
||||||
|
{item: equipmentList[5], name: equipmentList[5].name, price: equipmentList[5].cost, amount: 10},
|
||||||
|
{item: equipmentList[6], name: equipmentList[6].name, price: equipmentList[6].cost, amount: 10},
|
||||||
|
{item: equipmentList[7], name: equipmentList[7].name, price: equipmentList[7].cost, amount: 10},
|
||||||
|
{item: equipmentList[9], name: equipmentList[9].name, price: equipmentList[9].cost, amount: 10},
|
||||||
|
{item: equipmentList[11], name: equipmentList[11].name, price: equipmentList[12].cost, amount: 10},
|
||||||
|
{item: equipmentList[12], name: equipmentList[12].name, price: equipmentList[12].cost, amount: 10},
|
||||||
|
];
|
||||||
|
var traderInv = [
|
||||||
|
[ // Tier 1
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost/10, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[1], name: equipmentList[1].name, price: equipmentList[1].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[3], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[8], name: equipmentList[8].name, price: equipmentList[8].cost, amount: 10},
|
||||||
|
],
|
||||||
|
[ // Tier 2
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: supplyList[4], name: supplyList[4].name, price: supplyList[4].cost, amount: 100},
|
||||||
|
{item: supplyList[5], name: supplyList[5].name, price: supplyList[5].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[3], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[4], name: equipmentList[4].name, price: equipmentList[4].cost, amount: 10},
|
||||||
|
{item: equipmentList[5], name: equipmentList[5].name, price: equipmentList[5].cost, amount: 10},
|
||||||
|
{item: equipmentList[9], name: equipmentList[9].name, price: equipmentList[9].cost, amount: 10},
|
||||||
|
{item: equipmentList[11], name: equipmentList[11].name, price: equipmentList[11].cost, amount: 10},
|
||||||
|
],
|
||||||
|
[ // Tier 3
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: supplyList[4], name: supplyList[4].name, price: supplyList[4].cost, amount: 100},
|
||||||
|
{item: supplyList[5], name: supplyList[5].name, price: supplyList[5].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[3], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[4], name: equipmentList[4].name, price: equipmentList[4].cost, amount: 10},
|
||||||
|
{item: equipmentList[5], name: equipmentList[5].name, price: equipmentList[5].cost, amount: 10},
|
||||||
|
{item: equipmentList[6], name: equipmentList[6].name, price: equipmentList[6].cost, amount: 10},
|
||||||
|
{item: equipmentList[7], name: equipmentList[7].name, price: equipmentList[7].cost, amount: 10},
|
||||||
|
{item: equipmentList[9], name: equipmentList[9].name, price: equipmentList[9].cost, amount: 10},
|
||||||
|
{item: equipmentList[11], name: equipmentList[11].name, price: equipmentList[12].cost, amount: 10},
|
||||||
|
{item: equipmentList[12], name: equipmentList[12].name, price: equipmentList[12].cost, amount: 10},
|
||||||
|
]
|
||||||
|
];
|
||||||
|
var tempTraderInv = [];
|
||||||
|
var whitespringInv = [
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost/10, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[1], name: equipmentList[1].name, price: equipmentList[1].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[3], name: equipmentList[3].name, price: equipmentList[3].cost, amount: 10},
|
||||||
|
{item: equipmentList[8], name: equipmentList[8].name, price: equipmentList[8].cost, amount: 10},
|
||||||
|
];
|
||||||
|
var lostHillsInv = [
|
||||||
|
{item: supplyList[0], name: supplyList[0].name, price: supplyList[0].cost, amount: 1000},
|
||||||
|
{item: supplyList[1], name: supplyList[1].name, price: supplyList[1].cost, amount: 100},
|
||||||
|
{item: supplyList[2], name: supplyList[2].name, price: supplyList[2].cost, amount: 100},
|
||||||
|
{item: supplyList[3], name: supplyList[3].name, price: supplyList[3].cost, amount: 100},
|
||||||
|
{item: supplyList[4], name: supplyList[4].name, price: supplyList[4].cost, amount: 100},
|
||||||
|
{item: equipmentList[0], name: equipmentList[0].name, price: equipmentList[0].cost, amount: 10},
|
||||||
|
{item: equipmentList[2], name: equipmentList[2].name, price: equipmentList[2].cost, amount: 10},
|
||||||
|
{item: equipmentList[4], name: equipmentList[4].name, price: equipmentList[4].cost, amount: 10},
|
||||||
|
{item: equipmentList[5], name: equipmentList[5].name, price: equipmentList[5].cost, amount: 10},
|
||||||
|
{item: equipmentList[6], name: equipmentList[6].name, price: equipmentList[6].cost, amount: 10},
|
||||||
|
{item: equipmentList[7], name: equipmentList[7].name, price: equipmentList[7].cost, amount: 10},
|
||||||
|
{item: equipmentList[12], name: equipmentList[12].name, price: equipmentList[12].cost, amount: 10},
|
||||||
];
|
];
|
||||||
var vt0Inv = [];
|
|
||||||
var vegasInv = []; // A mix of gunrunners, mick&ralphs, and followers
|
|
||||||
var eurInv = [];
|
|
||||||
var traderInv = [];
|
|
||||||
|
|
||||||
export function ravenRockStore() {
|
export function ravenRockStore() {
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
@ -24,7 +138,7 @@ export function ravenRockStore() {
|
||||||
console.log("Name | Price (PW Money) | Amount in stock");
|
console.log("Name | Price (PW Money) | Amount in stock");
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
for (var i = 0; i < rrInv.length; i++) {
|
for (var i = 0; i < rrInv.length; i++) {
|
||||||
console.log(i+"). " + rrInv[i].name + " | " + rrInv[i].price + " | " + rrInv[i].amount);
|
console.log(i+"). " + rrInv[i].name + " | " + rrInv[i].price*10 + " | " + rrInv[i].amount);
|
||||||
}
|
}
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
console.log("You have " + preWarMoney + " pre-war money.");
|
console.log("You have " + preWarMoney + " pre-war money.");
|
||||||
|
|
@ -41,12 +155,12 @@ export function ravenRockStore() {
|
||||||
console.log("Not enough stock.");
|
console.log("Not enough stock.");
|
||||||
userInput("[Enter]");
|
userInput("[Enter]");
|
||||||
break;
|
break;
|
||||||
} else if (itemAmt * rrInv[itemNum].price > preWarMoney) {
|
} else if (itemAmt * rrInv[itemNum].price*10 > preWarMoney) {
|
||||||
console.log("Not enough money.");
|
console.log("Not enough money.");
|
||||||
userInput("[Enter]");
|
userInput("[Enter]");
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
preWarMoney -= itemAmt * rrInv[itemNum].price;
|
preWarMoney -= itemAmt * rrInv[itemNum].price*10;
|
||||||
rrInv[itemNum].amount -= itemAmt;
|
rrInv[itemNum].amount -= itemAmt;
|
||||||
console.log("You bought " + itemAmt + " " + rrInv[itemNum].name + "(s).");
|
console.log("You bought " + itemAmt + " " + rrInv[itemNum].name + "(s).");
|
||||||
console.log("You have " + preWarMoney + " pre-war money left.");
|
console.log("You have " + preWarMoney + " pre-war money left.");
|
||||||
|
|
@ -161,7 +275,7 @@ export function eurekaStore() {
|
||||||
console.log("Name | Price (PW Money) | Amount in stock");
|
console.log("Name | Price (PW Money) | Amount in stock");
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
for (var i = 0; i < eurInv.length; i++) {
|
for (var i = 0; i < eurInv.length; i++) {
|
||||||
console.log(i+"). " + eurInv[i].item + " | " + eurInv[i].price + " | " + eurInv[i].amount);
|
console.log(i+"). " + eurInv[i].item + " | " + eurInv[i].price*10 + " | " + eurInv[i].amount);
|
||||||
}
|
}
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
console.log("You have " + preWarMoney + " pre-war money.");
|
console.log("You have " + preWarMoney + " pre-war money.");
|
||||||
|
|
@ -177,11 +291,11 @@ export function eurekaStore() {
|
||||||
if (itemAmt > eurInv[itemNum].amount) {
|
if (itemAmt > eurInv[itemNum].amount) {
|
||||||
console.log("Not enough stock.");
|
console.log("Not enough stock.");
|
||||||
break;
|
break;
|
||||||
} else if (itemAmt * eurInv[itemNum].price > preWarMoney) {
|
} else if (itemAmt * eurInv[itemNum].price*10 > preWarMoney) {
|
||||||
console.log("Not enough money.");
|
console.log("Not enough money.");
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
preWarMoney -= itemAmt * eurInv[itemNum].price;
|
preWarMoney -= itemAmt * eurInv[itemNum].price*10;
|
||||||
eurInv[itemNum].amount -= itemAmt;
|
eurInv[itemNum].amount -= itemAmt;
|
||||||
console.log("You bought " + itemAmt + " " + eurInv[itemNum].item + "(s).");
|
console.log("You bought " + itemAmt + " " + eurInv[itemNum].item + "(s).");
|
||||||
console.log("You have " + preWarMoney + " pre-war money left.");
|
console.log("You have " + preWarMoney + " pre-war money left.");
|
||||||
|
|
@ -198,98 +312,37 @@ export function eurekaStore() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function trader() { // Picks a selection of items from a global trader inventory, used for misc area shops
|
export function lostHillsStore() {
|
||||||
var tempTraderInv = [];
|
|
||||||
for (var a = 0; a <= 2; a++) {
|
|
||||||
let randomPick = randomNumber()
|
|
||||||
tempTraderInv.push(traderInv[1]);
|
|
||||||
console.log(randomPick);
|
|
||||||
}
|
|
||||||
console.log(tempTraderInv);
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
console.clear();
|
console.clear();
|
||||||
console.log("You attempt to trade with a local trader, this is thier selection.");
|
console.log("Brotherhood of Steel Requisition System - Lost Hills");
|
||||||
console.log("Name | Price (Caps) | Amount in stock");
|
console.log("Name | Price (Caps) | Amount in stock");
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
for (var i = 0; i < Inv.length; i++) {
|
for (var i = 0; i < lostHillsInv.length; i++) {
|
||||||
console.log(i+"). " + rrInv[i].item + " | " + rrInv[i].price + " | " + rrInv[i].amount);
|
console.log(i+"). " + lostHillsInv[i].item + " | " + lostHillsInv[i].price + " | " + lostHillsInv[i].amount);
|
||||||
}
|
}
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
console.log("You have " + preWarMoney + " pre-war money.");
|
console.log("You have " + caps + " caps.");
|
||||||
console.log("What would you like to do?");
|
console.log("What would you like to do?");
|
||||||
console.log("1) Buy supplies");
|
console.log("1) Buy supplies");
|
||||||
console.log("2) Leave shop");
|
console.log("2) Leave shop");
|
||||||
var rrInput = userInput("Enter: ");
|
var lostHillsInput = userInput("Enter: ");
|
||||||
switch(rrInput) {
|
switch(lostHillsInput) {
|
||||||
case "1":
|
case "1":
|
||||||
console.log("What would you like to buy?");
|
console.log("What would you like to buy?");
|
||||||
let itemNum = userInput("Enter item number: ");
|
let itemNum = userInput("Enter item number: ");
|
||||||
let itemAmt = userInput("Enter amount: ");
|
let itemAmt = userInput("Enter amount: ");
|
||||||
if (itemAmt > rrInv[itemNum].amount) {
|
if (itemAmt > lostHillsInv[itemNum].amount) {
|
||||||
console.log("Not enough stock.");
|
console.log("Not enough stock.");
|
||||||
break;
|
break;
|
||||||
} else if (itemAmt * rrInv[itemNum].price > preWarMoney) {
|
} else if (itemAmt * lostHillsInv[itemNum].price > caps) {
|
||||||
console.log("Not enough money.");
|
console.log("Not enough money.");
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
preWarMoney -= itemAmt * rrInv[itemNum].price;
|
caps -= itemAmt * lostHillsInv[itemNum].price;
|
||||||
rrInv[itemNum].amount -= itemAmt;
|
lostHillsInv[itemNum].amount -= itemAmt;
|
||||||
console.log("You bought " + itemAmt + " " + rrInv[itemNum].item + "(s).");
|
console.log("You bought " + itemAmt + " " + lostHillsInv[itemNum].item + "(s).");
|
||||||
console.log("You have " + preWarMoney + " pre-war money left.");
|
console.log("You have " + caps + " caps left.");
|
||||||
console.log("Press enter to continue...");
|
|
||||||
userInput("[Enter]");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "2":
|
|
||||||
console.log("Leaving shop...");
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log("Invalid input, try again.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function genericBOSStore(poiName) { // Picks a selection of items from a global trader inventory, used for misc area shops
|
|
||||||
var tempTraderInv = [];
|
|
||||||
for (var a = 0; a <= 2; a++) {
|
|
||||||
let randomPick = randomNumber()
|
|
||||||
tempTraderInv.push(traderInv[1]);
|
|
||||||
console.log(randomPick);
|
|
||||||
}
|
|
||||||
console.log(tempTraderInv);
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
console.clear();
|
|
||||||
console.log("Brotherhood of Steel Requisition System - "+poiName);
|
|
||||||
console.log("Name | Price (Caps) | Amount in stock");
|
|
||||||
console.log("-----------------------------------------------------");
|
|
||||||
for (var i = 0; i < Inv.length; i++) {
|
|
||||||
console.log(i+"). " + rrInv[i].item + " | " + rrInv[i].price + " | " + rrInv[i].amount);
|
|
||||||
}
|
|
||||||
console.log("-----------------------------------------------------");
|
|
||||||
console.log("You have " + preWarMoney + " pre-war money.");
|
|
||||||
console.log("What would you like to do?");
|
|
||||||
console.log("1) Buy supplies");
|
|
||||||
console.log("2) Leave shop");
|
|
||||||
var rrInput = userInput("Enter: ");
|
|
||||||
switch(rrInput) {
|
|
||||||
case "1":
|
|
||||||
console.log("What would you like to buy?");
|
|
||||||
let itemNum = userInput("Enter item number: ");
|
|
||||||
let itemAmt = userInput("Enter amount: ");
|
|
||||||
if (itemAmt > rrInv[itemNum].amount) {
|
|
||||||
console.log("Not enough stock.");
|
|
||||||
break;
|
|
||||||
} else if (itemAmt * rrInv[itemNum].price > preWarMoney) {
|
|
||||||
console.log("Not enough money.");
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
preWarMoney -= itemAmt * rrInv[itemNum].price;
|
|
||||||
rrInv[itemNum].amount -= itemAmt;
|
|
||||||
console.log("You bought " + itemAmt + " " + rrInv[itemNum].item + "(s).");
|
|
||||||
console.log("You have " + preWarMoney + " pre-war money left.");
|
|
||||||
console.log("Press enter to continue...");
|
console.log("Press enter to continue...");
|
||||||
userInput("[Enter]");
|
userInput("[Enter]");
|
||||||
}
|
}
|
||||||
|
|
@ -309,30 +362,30 @@ export function whitespringStore() {
|
||||||
console.log("Welcome to the Whitespring Mall. Selection pulls from all vendors.")
|
console.log("Welcome to the Whitespring Mall. Selection pulls from all vendors.")
|
||||||
console.log("Name | Price (Caps) | Amount in stock");
|
console.log("Name | Price (Caps) | Amount in stock");
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
for (var i = 0; i < vt0InvInv.length; i++) {
|
for (var i = 0; i < whitespringInv.length; i++) {
|
||||||
console.log(i+"). " + vt0InvInv[i].item + " | " + vtInv[i].price + " | " + vtInv[i].amount);
|
console.log(i+"). " + whitespringInv[i].item + " | " + whitespringInv[i].price + " | " + whitespringInv[i].amount);
|
||||||
}
|
}
|
||||||
console.log("-----------------------------------------------------");
|
console.log("-----------------------------------------------------");
|
||||||
console.log("You have " + caps + " caps.");
|
console.log("You have " + caps + " caps.");
|
||||||
console.log("What would you like to do?");
|
console.log("What would you like to do?");
|
||||||
console.log("1) Buy supplies");
|
console.log("1) Buy supplies");
|
||||||
console.log("2) Leave shop");
|
console.log("2) Leave shop");
|
||||||
var vt0Input = userInput("Enter: ");
|
var whitespringInput = userInput("Enter: ");
|
||||||
switch(vt0Input) {
|
switch(whitespringInput) {
|
||||||
case "1":
|
case "1":
|
||||||
console.log("What would you like to buy?");
|
console.log("What would you like to buy?");
|
||||||
let itemNum = userInput("Enter item number: ");
|
let itemNum = userInput("Enter item number: ");
|
||||||
let itemAmt = userInput("Enter amount: ");
|
let itemAmt = userInput("Enter amount: ");
|
||||||
if (itemAmt > vt0Inv[itemNum].amount) {
|
if (itemAmt > whitespringInv[itemNum].amount) {
|
||||||
console.log("Not enough stock.");
|
console.log("Not enough stock.");
|
||||||
break;
|
break;
|
||||||
} else if (itemAmt * vt0Inv[itemNum].price > caps) {
|
} else if (itemAmt * whitespringInvv[itemNum].price > caps) {
|
||||||
console.log("Not enough money.");
|
console.log("Not enough money.");
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
caps -= itemAmt * vt0Inv[itemNum].price;
|
caps -= itemAmt * whitespringInv[itemNum].price;
|
||||||
rrInv[itemNum].amount -= itemAmt;
|
whitespringInv[itemNum].amount -= itemAmt;
|
||||||
console.log("You bought " + itemAmt + " " + vt0Inv[itemNum].item + "(s).");
|
console.log("You bought " + itemAmt + " " + whitespringInv[itemNum].item + "(s).");
|
||||||
console.log("You have " + caps + " caps left.");
|
console.log("You have " + caps + " caps left.");
|
||||||
console.log("Press enter to continue...");
|
console.log("Press enter to continue...");
|
||||||
userInput("[Enter]");
|
userInput("[Enter]");
|
||||||
|
|
@ -345,4 +398,95 @@ export function whitespringStore() {
|
||||||
console.log("Invalid input, try again.");
|
console.log("Invalid input, try again.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The Trader System
|
||||||
|
|
||||||
|
// traderLock: Prevents the player from regerating the trader's inventory before they leave the POI/Encounter
|
||||||
|
// traderInv: The global trader inventory, has a set of items for each tier of gear, pulled from the global item lists
|
||||||
|
// tempTraderInv: An array of items that the trader, when encountered, will be able to pull from for thier stock
|
||||||
|
// trader(): Called when a player barters with a trader. Fist checks to see if traderLock is false, then sets it to true.
|
||||||
|
// Then uses the tier parameter to determine which inventory to pull from.
|
||||||
|
// It then places the respective tier of equipment into the tempTraderInv array.
|
||||||
|
// The trader now randomly picks 5 items from the tempTraderInv array and places them into tempTraderStock.
|
||||||
|
// Had traderLock been true, the trader would present the previously generated stock.
|
||||||
|
// Trader then uses the same system as the other stores to allow the player to buy and view items but with a custom message
|
||||||
|
// The message is passed in as a parameter, and is displayed at the top of the trader menu.
|
||||||
|
|
||||||
|
global.traderLock = false;
|
||||||
|
export function trader(tier, message) {
|
||||||
|
if (traderLock == false) {
|
||||||
|
traderLock = true;
|
||||||
|
var tempTraderStock = [];
|
||||||
|
var tempTraderInv = [];
|
||||||
|
switch(tier) {
|
||||||
|
case "1":
|
||||||
|
tempTraderInv = traderInv[0];
|
||||||
|
for (var a = 0; a <= 5; a++) {
|
||||||
|
let randomPick = randomNumber();
|
||||||
|
tempTraderStock.push(tempTraderInv[randomPick]);
|
||||||
|
tempTraderInv.pop[randomPick];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
tempTraderInv = traderInv[0];
|
||||||
|
for (var a = 0; a <= 5; a++) {
|
||||||
|
let randomPick = randomNumber();
|
||||||
|
tempTraderStock.push(tempTraderInv[randomPick]);
|
||||||
|
tempTraderInv.pop[randomPick];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
tempTraderInv = traderInv[0];
|
||||||
|
for (var a = 0; a <= 5; a++) {
|
||||||
|
let randomPick = randomNumber();
|
||||||
|
tempTraderStock.push(tempTraderInv[randomPick]);
|
||||||
|
tempTraderInv.pop[randomPick];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
console.clear();
|
||||||
|
console.log(message);
|
||||||
|
console.log("Name | Price (Caps) | Amount in stock");
|
||||||
|
console.log("-----------------------------------------------------");
|
||||||
|
for (var i = 0; i < tempTraderInv.length; i++) {
|
||||||
|
console.log(i+1+"). " + tempTraderInv[i].item + " | " + tempTraderInv[i].price + " | " + tempTraderInv[i].amount);
|
||||||
|
}
|
||||||
|
console.log("-----------------------------------------------------");
|
||||||
|
console.log("You have " + caps + " caps.");
|
||||||
|
console.log("What would you like to do?");
|
||||||
|
console.log("1) Buy supplies");
|
||||||
|
console.log("2) Leave shop");
|
||||||
|
var rrInput = userInput("Enter: ");
|
||||||
|
switch(rrInput) {
|
||||||
|
case "1":
|
||||||
|
console.log("What would you like to buy?");
|
||||||
|
let itemNum = userInput("Enter item number: ");
|
||||||
|
let itemAmt = userInput("Enter amount: ");
|
||||||
|
if (itemAmt > tempBOSStock[itemNum].amount) {
|
||||||
|
console.log("Not enough stock.");
|
||||||
|
break;
|
||||||
|
} else if (itemAmt * tempBOSStock[itemNum].price > caps) {
|
||||||
|
console.log("Not enough money.");
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
preWarMoney -= itemAmt * tempBOSStock[itemNum].price;
|
||||||
|
tempBOSStock[itemNum].amount -= itemAmt;
|
||||||
|
console.log("You bought " + itemAmt + " " + tempBOSStock[itemNum].item + "(s).");
|
||||||
|
console.log("You have " + caps + " caps left.");
|
||||||
|
console.log("Press enter to continue...");
|
||||||
|
userInput("[Enter]");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
console.log("Leaving shop...");
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("Invalid input, try again.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -59,11 +59,17 @@ global.equipmentList = [ // Equipment: weapons, armor, tools
|
||||||
|
|
||||||
// Energy Resistant Armor
|
// Energy Resistant Armor
|
||||||
{name: "Leather Armor", description: "A set of leather armor, good protection from laser weapons.", type: "armor", resistances: {balistic: 2, slash: 2, laser: 5, plasma: 3}, unit: "dr", cost: 5, weight: 5},
|
{name: "Leather Armor", description: "A set of leather armor, good protection from laser weapons.", type: "armor", resistances: {balistic: 2, slash: 2, laser: 5, plasma: 3}, unit: "dr", cost: 5, weight: 5},
|
||||||
{name: "Combat Armor", description: "A ser of combat armor, great protection from laser and plasma weapons.", type: "armor", resistances: {balistic: 5, slash: 5, laser: 10, plasma: 10}, unit: "dr", cost: 5, weight: 5},
|
{name: "Sturdy Leather Armor", description: "A set of combat armor, better protection from laser and plasma weapons.", type: "armor", resistances: {balistic: 5, slash: 5, laser: 10, plasma: 10}, unit: "dr", cost: 5, weight: 5},
|
||||||
|
|
||||||
// Ballistic Resistant Armor
|
// Ballistic Resistant Armor
|
||||||
{name: "Raider Armor", description: "A set of raider armor, good protection from balistic damage.", type: "armor", resistances: {balistic: 5, slash: 3, laser: 2, plasma: 2}, unit: "dr", cost: 5, weight: 5},
|
{name: "Raider Armor", description: "A set of raider armor, good protection from balistic damage.", type: "armor", resistances: {balistic: 5, slash: 3, laser: 2, plasma: 2}, unit: "dr", cost: 5, weight: 5},
|
||||||
{name: "Metal Armor" , description: "A set of raider armor, good protection from ballistic and slash damage.", type: "armor", resistances: {balistic: 10, slash: 10, laser: 5, plasma: 5}, unit: "dr", cost: 5, weight: 5},
|
{name: "Metal Armor" , description: "A set of raider armor, better protection from ballistic and slash damage.", type: "armor", resistances: {balistic: 10, slash: 10, laser: 5, plasma: 5}, unit: "dr", cost: 5, weight: 5},
|
||||||
|
|
||||||
|
// Tier 3 Armor
|
||||||
|
{name: "Combat Armor", description: "A set of combat armor, better protection from all damage types.", type: "armor", resistances: {balistic: 10, slash: 10, laser: 10, plasma: 10}, unit: "dr", cost: 5, weight: 5},
|
||||||
|
{name: "Centurion Armor", description: "A set of Centurion armor, great protection from ballistic damage.", type: "armor", value: "5", unit: "dr",cost: 25, weight: 25},
|
||||||
|
{name: "NCR Ranger Armor" , description: "A set of NCR Ranger armor, great protection from laser and plasma weapons", type: "armor", value: "5", unit: "dr",cost: 30, weight: 30},
|
||||||
|
|
||||||
|
|
||||||
// Non-specialized Power Armor
|
// Non-specialized Power Armor
|
||||||
{name: "T-45 Power Armor", description: "A set of T-45 Power Armor, protects against all damage types.", type: "parmor", resistances: {balistic: 15, slash: 15, laser: 15, plasma: 15}, unit: "dt", cost: 5, weight: 5},
|
{name: "T-45 Power Armor", description: "A set of T-45 Power Armor, protects against all damage types.", type: "parmor", resistances: {balistic: 15, slash: 15, laser: 15, plasma: 15}, unit: "dt", cost: 5, weight: 5},
|
||||||
|
|
@ -83,10 +89,6 @@ global.equipmentList = [ // Equipment: weapons, armor, tools
|
||||||
// Special Armor
|
// Special Armor
|
||||||
{name: "Chinese Stealth Suit", description: "Chinese Stealth Suit, +25% Chance to skip encounter if worn", type: "uarmor", value: "5", unit: "dr",cost: 20, weight: 20},
|
{name: "Chinese Stealth Suit", description: "Chinese Stealth Suit, +25% Chance to skip encounter if worn", type: "uarmor", value: "5", unit: "dr",cost: 20, weight: 20},
|
||||||
{name: "Excavator Power Armor", description: "Excavator Power Armor, +25% Chance to find extra loot", type: "parmor", resistances: {balistic: 5, slash: 5, laser: 5, plasma: 5}, unit: "dt", cost: 5, weight: 5},
|
{name: "Excavator Power Armor", description: "Excavator Power Armor, +25% Chance to find extra loot", type: "parmor", resistances: {balistic: 5, slash: 5, laser: 5, plasma: 5}, unit: "dt", cost: 5, weight: 5},
|
||||||
|
|
||||||
// Even MORE Specialer Armor
|
|
||||||
{name: "Centurion Armor", description: "A set of Centurion armor, made for you", type: "armor", value: "5", unit: "dr",cost: 25, weight: 25},
|
|
||||||
{name: "NCR Ranger Armor" , description: "A set of NCR Ranger armor, standard issue", type: "armor", value: "5", unit: "dr",cost: 30, weight: 30},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
global.achievements = [
|
global.achievements = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue