554 lines
No EOL
30 KiB
JavaScript
554 lines
No EOL
30 KiB
JavaScript
import { randomNumber, userInput } from "./functions.js";
|
|
import "./variables.js";
|
|
|
|
// Inventories for the various shops, based of global item lists
|
|
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[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[3], name: supplyList[3].name, price: supplyList[3].cost*10, 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[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},
|
|
];
|
|
|
|
// Store functions
|
|
// Each store gets its own inventory and function, and work exactly the same for the most part.
|
|
// It opens by giving a welcome screen and listing the items in stock, player is given choice to leave or buy items.
|
|
// If they chose to buy, player enters the item number, amount they want, and it is then pushed to thier inventory array
|
|
// If the item is food, the item is added to the food variable, not the inventory.
|
|
|
|
// Exceptions to how this works:
|
|
|
|
// ravenRockStore() and eurekaStore() both use Pre-War Money, multiplying the
|
|
// prices by 10 and using the players PWM to purchase the item, not caps.
|
|
|
|
export function ravenRockStore() {
|
|
while (true) {
|
|
console.clear();
|
|
console.log("Welcome to Raven Rock. Requisition supplies before heading out.");
|
|
console.log("Name | Price (PW Money) | Amount in stock");
|
|
console.log("-----------------------------------------------------");
|
|
for (var i = 0; i < rrInv.length; i++) {
|
|
console.log(i+"). " + rrInv[i].name + " | " + rrInv[i].price*10 + " | " + 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?");
|
|
var itemNum = userInput("Enter item number: ");
|
|
var itemAmt = userInput("Enter amount: ");
|
|
// Making sure the item has enough in stock
|
|
if (itemAmt > rrInv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
userInput("[Enter]");
|
|
break;
|
|
// Making sure the items requested are not too expensive
|
|
} else if (itemAmt * rrInv[itemNum].price*10 > preWarMoney) {
|
|
console.log("Not enough money.");
|
|
userInput("[Enter]");
|
|
break;
|
|
// If the choice is vaild, add the item to inventory and remove stock/money
|
|
} else {
|
|
preWarMoney -= itemAmt * rrInv[itemNum].price*10;
|
|
rrInv[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + rrInv[itemNum].name + "(s).");
|
|
console.log("You have " + preWarMoney + " pre-war money left.");
|
|
// Check if the item is food, if so add to food variable
|
|
if (rrInv[itemNum].name == "Food") {
|
|
food =+ itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(rrInv[itemNum].item);
|
|
}
|
|
}
|
|
console.log("Press enter to continue...");
|
|
userInput("[Enter]");
|
|
}
|
|
break;
|
|
case "2":
|
|
console.log("Leaving shop...");
|
|
return true;
|
|
default:
|
|
console.log("Invalid input, try again.");
|
|
}
|
|
}
|
|
}
|
|
|
|
export function vaultZeroStore() {
|
|
while (true) {
|
|
console.clear();
|
|
console.log("Brotherhood of Steel Requisition System - Vault 0");
|
|
console.log("Name | Price (Caps) | Amount in stock");
|
|
console.log("-----------------------------------------------------");
|
|
for (var i = 0; i < vt0InvInv.length; i++) {
|
|
console.log(i+"). " + vt0InvInv[i].item + " | " + vtInv[i].price + " | " + vtInv[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 vt0Input = userInput("Enter: ");
|
|
switch(vt0Input) {
|
|
case "1":
|
|
console.log("What would you like to buy?");
|
|
let itemNum = userInput("Enter item number: ");
|
|
let itemAmt = userInput("Enter amount: ");
|
|
if (itemAmt > vt0Inv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
break;
|
|
} else if (itemAmt * vt0Inv[itemNum].price > caps) {
|
|
console.log("Not enough money.");
|
|
break;
|
|
} else {
|
|
caps -= itemAmt * vt0Inv[itemNum].price;
|
|
vt0Inv[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + vt0Inv[itemNum].item + "(s).");
|
|
console.log("You have " + caps + " caps left.");
|
|
console.log("Press enter to continue...");
|
|
if (vt0Inv[itemNum].name == "Food") {
|
|
food = food+itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(vt0Inv[itemNum].item);
|
|
}
|
|
}
|
|
userInput("[Enter]");
|
|
}
|
|
break;
|
|
case "2":
|
|
console.log("Leaving shop...");
|
|
return true;
|
|
default:
|
|
console.log("Invalid input, try again.");
|
|
}
|
|
}
|
|
}
|
|
|
|
export function newVegasStore() {
|
|
while (true) {
|
|
console.clear();
|
|
console.log("Welcome to New Vegas. Selection pulls from Gunrunners, Mick & Ralph's, and Followers of the Apocalypse.");
|
|
console.log("Name | Price (Caps) | Amount in stock");
|
|
console.log("-----------------------------------------------------");
|
|
for (var i = 0; i < vegasInv.length; i++) {
|
|
console.log(i+"). " + vegasInv[i].item + " | " + vegasInv[i].price + " | " + vegasInv[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 nvInput = userInput("Enter: ");
|
|
switch(nvInput) {
|
|
case "1":
|
|
console.log("What would you like to buy?");
|
|
let itemNum = userInput("Enter item number: ");
|
|
let itemAmt = userInput("Enter amount: ");
|
|
if (itemAmt > vegasInv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
break;
|
|
} else if (itemAmt * vegasInv[itemNum].price > preWarMoney) {
|
|
console.log("Not enough money.");
|
|
break;
|
|
} else {
|
|
preWarMoney -= itemAmt * vegasInv[itemNum].price;
|
|
vegasInv[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + vegasInv[itemNum].item + "(s).");
|
|
console.log("You have " + caps + " caps left.");
|
|
console.log("Press enter to continue...");
|
|
if (vegasInv[itemNum].name == "Food") {
|
|
food = food+itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(vegasInv[itemNum].item);
|
|
}
|
|
}
|
|
userInput("[Enter]");
|
|
}
|
|
break;
|
|
case "2":
|
|
console.log("Leaving shop...");
|
|
return true;
|
|
break;
|
|
default:
|
|
console.log("Invalid input, try again.");
|
|
}
|
|
}
|
|
}
|
|
|
|
export function eurekaStore() {
|
|
while (true) {
|
|
console.clear();
|
|
console.log("Welcome to Eureka. Selection pulls from local traders and willing Enclave Veterans.");
|
|
console.log("Name | Price (PW Money) | Amount in stock");
|
|
console.log("-----------------------------------------------------");
|
|
for (var i = 0; i < eurInv.length; i++) {
|
|
console.log(i+"). " + eurInv[i].item + " | " + eurInv[i].price*10 + " | " + eurInv[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 eurInput = userInput("Enter: ");
|
|
switch(eurInput) {
|
|
case "1":
|
|
console.log("What would you like to buy?");
|
|
let itemNum = userInput("Enter item number: ");
|
|
let itemAmt = userInput("Enter amount: ");
|
|
if (itemAmt > eurInv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
break;
|
|
} else if (itemAmt * eurInv[itemNum].price*10 > preWarMoney) {
|
|
console.log("Not enough money.");
|
|
break;
|
|
} else {
|
|
preWarMoney -= itemAmt * eurInv[itemNum].price*10;
|
|
eurInv[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + eurInv[itemNum].item + "(s).");
|
|
console.log("You have " + preWarMoney + " pre-war money left.");
|
|
if (eurInv[itemNum].name == "Food") {
|
|
food = food+itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(eurInv[itemNum].item);
|
|
}
|
|
}
|
|
console.log("Press enter to continue...");
|
|
userInput("[Enter]");
|
|
}
|
|
break;
|
|
case "2":
|
|
console.log("Leaving shop...");
|
|
return true;
|
|
default:
|
|
console.log("Invalid input, try again.");
|
|
}
|
|
}
|
|
}
|
|
|
|
export function lostHillsStore() {
|
|
while (true) {
|
|
console.clear();
|
|
console.log("Brotherhood of Steel Requisition System - Lost Hills");
|
|
console.log("Name | Price (Caps) | Amount in stock");
|
|
console.log("-----------------------------------------------------");
|
|
for (var i = 0; i < lostHillsInv.length; i++) {
|
|
console.log(i+"). " + lostHillsInv[i].item + " | " + lostHillsInv[i].price + " | " + lostHillsInv[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 lostHillsInput = userInput("Enter: ");
|
|
switch(lostHillsInput) {
|
|
case "1":
|
|
console.log("What would you like to buy?");
|
|
let itemNum = userInput("Enter item number: ");
|
|
let itemAmt = userInput("Enter amount: ");
|
|
if (itemAmt > lostHillsInv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
break;
|
|
} else if (itemAmt * lostHillsInv[itemNum].price > caps) {
|
|
console.log("Not enough money.");
|
|
break;
|
|
} else {
|
|
caps -= itemAmt * lostHillsInv[itemNum].price;
|
|
lostHillsInv[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + lostHillsInv[itemNum].item + "(s).");
|
|
console.log("You have " + caps + " caps left.");
|
|
if (lostHillsInv[itemNum].name == "Food") {
|
|
food = food+itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(lostHillsInv[itemNum].item);
|
|
}
|
|
}
|
|
console.log("Press enter to continue...");
|
|
userInput("[Enter]");
|
|
}
|
|
break;
|
|
case "2":
|
|
console.log("Leaving shop...");
|
|
return true;
|
|
default:
|
|
console.log("Invalid input, try again.");
|
|
}
|
|
}
|
|
}
|
|
|
|
export function whitespringStore() {
|
|
while (true) {
|
|
console.clear();
|
|
console.log("Welcome to the Whitespring Mall. Selection pulls from all vendors.")
|
|
console.log("Name | Price (Caps) | Amount in stock");
|
|
console.log("-----------------------------------------------------");
|
|
for (var i = 0; i < whitespringInv.length; i++) {
|
|
console.log(i+"). " + whitespringInv[i].item + " | " + whitespringInv[i].price + " | " + whitespringInv[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 whitespringInput = userInput("Enter: ");
|
|
switch(whitespringInput) {
|
|
case "1":
|
|
console.log("What would you like to buy?");
|
|
let itemNum = userInput("Enter item number: ");
|
|
let itemAmt = userInput("Enter amount: ");
|
|
if (itemAmt > whitespringInv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
break;
|
|
} else if (itemAmt * whitespringInvv[itemNum].price > caps) {
|
|
console.log("Not enough money.");
|
|
break;
|
|
} else {
|
|
caps -= itemAmt * whitespringInv[itemNum].price;
|
|
whitespringInv[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + whitespringInv[itemNum].item + "(s).");
|
|
console.log("You have " + caps + " caps left.");
|
|
if (whitespringInv[itemNum].name == "Food") {
|
|
food = food+itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(whitespringInvInv[itemNum].item);
|
|
}
|
|
}
|
|
console.log("Press enter to continue...");
|
|
userInput("[Enter]");
|
|
}
|
|
break;
|
|
case "2":
|
|
console.log("Leaving shop...");
|
|
return true;
|
|
default:
|
|
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 traderInput = userInput("Enter: ");
|
|
switch(traderInput) {
|
|
case "1":
|
|
console.log("What would you like to buy?");
|
|
let itemNum = userInput("Enter item number: ");
|
|
let itemAmt = userInput("Enter amount: ");
|
|
if (itemAmt > tempTraderInv[itemNum].amount) {
|
|
console.log("Not enough stock.");
|
|
break;
|
|
} else if (itemAmt * tempTraderInv[itemNum].price > caps) {
|
|
console.log("Not enough money.");
|
|
break;
|
|
} else {
|
|
preWarMoney -= itemAmt * tempTraderInv[itemNum].price;
|
|
tempBOSStock[itemNum].amount -= itemAmt;
|
|
console.log("You bought " + itemAmt + " " + tempTraderInv[itemNum].item + "(s).");
|
|
console.log("You have " + caps + " caps left.");
|
|
if (tempTraderInv[itemNum].name == "Food") {
|
|
food = food+itemAmt;
|
|
} else {
|
|
for (var i = 0; i < itemAmt; i++) {
|
|
inventory.push(tempTraderInv[itemNum].item);
|
|
}
|
|
}
|
|
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.");
|
|
}
|
|
}
|
|
} |