//Created by student A 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."); } } }