The Final commit before turn-in (hopefully)

This commit is contained in:
Raktbastr 2025-04-27 21:51:07 -05:00
parent 44a4cf65bd
commit 77cb3f4613
8 changed files with 265 additions and 148 deletions

View file

@ -1,5 +1,6 @@
import './variables.js'; import './variables.js';
import {userInput} from './functions.js'; import { randomNumber, userInput } from './functions.js';
import { inventoryMenuM } from './inventory.js';
function initCombat(enemy) { function initCombat(enemy) {
if (enemy.minLevel > level) { if (enemy.minLevel > level) {
@ -23,53 +24,127 @@ function initCombat(enemy) {
function combat(enemy) { function combat(enemy) {
console.clear(); console.clear();
console.log("You enter combat with "+enemy.name+"..."); console.log("You enter combat with "+enemy.name+"...");
console.log("What would you like to do?"); let combatInput;
console.log("-----------------------"); while (true) {
console.log("1) Attack"); console.log("What would you like to do?");
console.log("2) Check your Inventory"); console.log("-----------------------");
console.log("3) View Stats"); console.log("1) Attack");
var combatInput = userInput("Enter: "); console.log("2) Check your Inventory");
switch(combatInput) { console.log("3) View Stats");
case "1": combatInput = userInput("Enter: ");
if (combatInput != "1" && combatInput != "2" && combatInput != "3") {
console.log("Invalid input. Please enter 1, 2, or 3.");
} else {
break;
}
} }
switch(combatInput) {
case "1":
console.log("You attack "+enemy.name+" with your "+equippedWeapon.name+"!");
sleep(2);
let attackRoll = randomNumber(1,100);
if (attackRoll <= 10) {
console.log("You critically hit "+enemy.name+" dealing "+damageCalc(player, true)+" damage!");
sleep(2);
} else if (attackRoll <= 50) {
console.log("You hit "+enemy.name+" dealing "+damageCalc(player, false)+" damage!");
sleep(2);
} else if (attackRoll <= 90) {
console.log("You miss "+enemy.name+"!");
sleep(2);
} else {
console.log("You critically miss "+enemy.name+", dealing 3 damage to yourself!");
health-3;
sleep(2);
}
console.log(enemy.name+" Attacks you with thier "+enemyStats.weapon.name+"!");
sleep(2);
let enemyRoll = randomNumber(1,100);
if (attackRoll <= 10) {
console.log(enemy.name+" critically hit you dealing "+damageCalc(enemy, true)+" damage!");
sleep(2);
} else if (attackRoll <= 50) {
console.log(enemy.name+" hit you dealing "+damageCalc(player, false)+" damage!");
sleep(2);
} else if (attackRoll <= 90) {
console.log(enemy.name+" misses you!");
sleep(2);
} else {
console.log(enemy.name+" critically misses, dealing 3 damage to themself!");
enemyStats.health-3;
sleep(2);
}
case "2":
inventoryMenuM();
break;
case "3":
console.clear();
console.log("Player Stats");
console.log("-------------");
console.log("Name: "+name);
console.log("Level: "+level);
console.log("Current Health: "+health+"/"+healthCap);
console.log("Radiation Points: "+radPoints);
console.log("Radiation Severity: "+radSeverity);
console.log("Walk Rate: "+walkRate);
console.log("Food Amt: "+food);
console.log("Food Rate: "+foodRate);
console.log("Distance to next POI: " + pois[poiCounter].location-location);
console.log("Current Path: "+path);
userInput("\n[Press Enter to return]");
break;
}
} }
function damageCalc(attacker) { function damageCalc(attacker, crit) {
if (attacker = player) { if (attacker = player) {
if (playerStats.chem == "psycho") { if (playerStats.chem == "psycho") {
var damageOutput = playerStats.weapon.damage*1.5; var damageOutput = playerStats.weapon.damage*1.5;
} else { } else {
var damageOutput = playerStats.weapon.damage; var damageOutput = playerStats.weapon.damage;
} }
if (crit) {
damageOutput+3;
}
if (enemyStats.armorUnit == "dr"){ if (enemyStats.armorUnit == "dr"){
enemyStats.health = enemyStats.health-(damageOutput-(enemyStats.armor.value/100)); let drDamage = damageOutput-(enemyStats.armor.value/100);
enemyStats.health = enemyStats.health-drDamage;
return drDamage;
} }
if (enemyStats.armorUnit == "dt") { if (enemyStats.armorUnit == "dt") {
let dtDamage = enemyStats.health-(damageOutput-armor); let dtDamage = enemyStats.health-(damageOutput-armor);
if (dtDamage < 0) { if (dtDamage < 0) {
dtDamage = 0; dtDamage = 0;
} }
enemyStats.health - dtDamage enemyStats.health - dtDamage;
return dtDamage;
} }
} else { } else {
if (playerStats.chem == "medx") { if (playerStats.chem == "medx") {
var damageOutput = enemyStats.weapon.damage*(-1.5); var damageOutput = enemyStats.weapon.damage*(-1.5);
} else { } else {
var damageOutput = enemyStats.weapon.damage; var damageOutput = enemyStats.weapon.damage;
} if (playerStats.armorUnit == "dr"){ }
playerStats.health = playerStats.health-(damageOutput-(playerStats.armor.value/100)); if (crit) {
damageOutput+3;
}
if (playerStats.armorUnit == "dr"){
let drDamage = damageOutput-(playerStats.armor.value/100)
playerStats.health = playerStats.health-drDamage;
return drDamage;
} }
if (playerStats.armorUnit == "dt") { if (playerStats.armorUnit == "dt") {
let dtDamage = playerStats.health-(damageOutput-armor); let dtDamage = playerStats.health-(damageOutput-armor);
if (dtDamage < 0) { if (dtDamage < 0) {
dtDamage = 0; dtDamage = 0;
} }
playerStats.health - dtDamage playerStats.health - dtDamage;
return dtDamage;
} }
} }
} }

View file

@ -42,7 +42,7 @@ export function radPointsCalc() { // Calculates radPoints given walk/foodrate
export function eatFood() { // Calculates food amount after a day of eating export function eatFood() { // Calculates food amount after a day of eating
if (food == 0) { if (food == 0) {
health = health - 0.25*walkRate health = health - walkRate
} else { } else {
food = food - walkRate * foodRate food = food - walkRate * foodRate
} }
@ -203,8 +203,6 @@ function timeDeath() { // The death screen for passing the time limit
var travelFrame = 0; var travelFrame = 0;
export function travelScreen() { export function travelScreen() {
if (travelFrame < 0 || travelFrame > 3) { if (travelFrame < 0 || travelFrame > 3) {
travelFrame = 0; travelFrame = 0;
@ -228,7 +226,15 @@ export function travelScreen() {
console.log("Press [SPACE] 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: " + pois[poiCounter].location-location); if (path == 0) {
console.log("Distance to next POI: " + (pois[poiCounter].location-location));
}
if (path == 1) {
console.log("Distance to next POI: " + (pois[poiCounter].location-locationA));
}
if (path == 2) {
console.log("Distance to next POI: " + (pois[poiCounter].location-locationB));
}
travelFrame++ travelFrame++
} else if (travelFrame == 1) { } else if (travelFrame == 1) {
console.clear(); console.clear();
@ -250,7 +256,7 @@ export function travelScreen() {
console.log("Press [SPACE] 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: " + pois[poiCounter].location-location); console.log("Distance to next POI: " + (pois[poiCounter].location-location));
travelFrame++ travelFrame++
} else if (travelFrame == 2) { } else if (travelFrame == 2) {
console.clear(); console.clear();
@ -272,7 +278,7 @@ export function travelScreen() {
console.log("Press [SPACE] 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: " + pois[poiCounter].location-location); console.log("Distance to next POI: " + (pois[poiCounter].location-location));
travelFrame++ travelFrame++
} else if (travelFrame == 3) { } else if (travelFrame == 3) {
console.clear(); console.clear();
@ -294,7 +300,7 @@ export function travelScreen() {
console.log("Press [SPACE] 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: " + pois[poiCounter].location-location); console.log("Distance to next POI: " + (pois[poiCounter].location-location));
travelFrame=0; travelFrame=0;
} }
} }
@ -306,11 +312,6 @@ export async function walkPathMain() {
pauseScreen(); pauseScreen();
enableRawMode(); enableRawMode();
} }
if (location > 255) {
disableRawMode();
return;
}
calcLocation(); calcLocation();
radPointsCalc(); radPointsCalc();
healthCapCalc(); healthCapCalc();
@ -351,16 +352,25 @@ export function disableRawMode() {
var paused = false; var paused = false;
export function pauseScreen() { export function pauseScreen() {
console.clear(); let pauseInput
console.log ("What would you like to do?"); while (true) {
console.log ("--------------------------"); console.clear();
console.log ("1) Resume"); console.log ("What would you like to do?");
console.log ("2) View Inventory"); console.log ("--------------------------");
console.log ("3) View Distances"); console.log ("1) Resume");
console.log ("4) View Stats"); console.log ("2) View Inventory");
console.log ("5) Scavenge"); console.log ("3) View Distances");
console.log ("6) Change Speed/Food Rate"); console.log ("4) View Stats");
let pauseInput = userInput("Enter: "); console.log ("5) Scavenge");
console.log ("6) Change Speed/Food Rate");
pauseInput = userInput("Enter: ");
if (pauseInput != "1" && pauseInput != "2" && pauseInput != "3" && pauseInput != "4" && pauseInput != "5" && pauseInput != "6") {
console.log("Invalid input. Please enter 1, 2, or 3.");
} else {
break;
}
}
switch(pauseInput) { switch(pauseInput) {
case "1": case "1":
paused = false; paused = false;

View file

@ -6,43 +6,70 @@ export function inventoryMenuM(){
console.clear(); console.clear();
console.log("INVENTORY"); console.log("INVENTORY");
console.log("---------"); console.log("---------");
console.log("1) Supplies"); console.log("1) View");
console.log("2) Equipment"); console.log("2) Equip Weapon");
console.log("3) Exit"); console.log("3) Equip Armor");
console.log("4) Exit");
let invChoice = userInput("Enter: "); let invChoice = userInput("Enter: ");
switch(userInput){ switch(invChoice){
case "1": case "1":
supplyInventory(); viewInventory();
break; break;
case "2": case "2":
equipmentInventory(); console.log("Weapons");
break; console.log("---------");
for(var a = 0; a < inventory.length;){
if (inventory[a].type == "weapon") {
console.log((a + 1) + ") " + inventory[a].name);
a++;
}
while (true) {
console.log("-----------------");
let equipInput = userInput("What would you like to equip?");
if (equipInput <= a) {
equippedWeapon = inventory[equipInput - 1];
console.log("You have equipped: " + equippedWeapon.name);
return;
} else {
console.log("Invalid Input. Please enter a valid number.");
}
}
}
case "3": case "3":
console.log("Armor");
console.log("---------");
for(var a = 0; a < inventory[1].length;){
if (inventory[a].type == "armor" || inventory[a].type == "parmor") {
console.log((a + 1) + ") " + inventory[a].name);
a++;
}
while (true) {
console.log("-----------------");
let equipInput = parseInt(userInput("What would you like to equip?"), 10);
if (equipInput <= a) {
equippedArmor = inventory[equipInput - 1];
console.log("You have equipped: " + equippedArmor.name);
return;
} else {
console.log("Invalid Input. Please enter a valid number.");
}
}
}
break; break;
case "4":
break;
default:
console.log("Invalid Input");
} }
} }
//Builds the supply inventory //Builds the supply inventory
function supplyInventory(){ function viewInventory(){
console.clear(); console.clear();
console.log("SUPPLIES"); console.log("Inventory");
console.log("---------"); console.log("---------");
for(var a = 0; a < inventory[0].length;){ for(var a = 0; a < inventory.length;){
console.log((a + 1) + ") " + inventory[0][a].name); console.log((a + 1) + ") " + inventory[a].name);
a++;
}
userInput("[Enter to return]");
console.clear();
inventoryMenuM();
}
//Builds the equipment inventory
function equipmentInventory(){
console.clear();
console.log("EQUIPMENT");
console.log("---------");
for(var a = 0; a < inventory[1].length;){
console.log((a + 1) + ") " + inventory[1][a].name);
a++; a++;
} }
userInput("[Enter to return]"); userInput("[Enter to return]");

View file

@ -14,22 +14,29 @@ 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?"); var mainMenuInput;
console.log("--------------------------"); while (true) {
console.log("1) Start new game"); console.log("What would you like to do?");
console.log("2) Learn How to play"); console.log("--------------------------");
console.log("3) Quit Game"); console.log("1) Start new game");
console.log("4) Credits\n"); console.log("2) Learn How to play");
console.log("3) Quit Game");
console.log("4) Credits\n");
mainMenuInput = userInput("Enter: ");
var mainMenuInput = userInput("Enter: "); if (mainMenuInput != "1" && mainMenuInput != "2" && mainMenuInput != "3" && mainMenuInput != "4") {
console.log("Invalid input. Please enter 1, 2, or 3.");
} else {
break;
}
}
switch(mainMenuInput) { switch(mainMenuInput) {
case "1": case "1":
startGame(); startGame();
break; break;
case "2": case "2":
console.log("Follow the link below for a game manual.") console.log(food);
console.log("[ENTER LINK HERE]")
break; break;
case "3": case "3":
console.log("Quitting Game..."); console.log("Quitting Game...");
@ -39,19 +46,7 @@ switch(mainMenuInput) {
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 = [];
var thing3 = [];
thing2 = thing1
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.

View file

@ -1,2 +0,0 @@
// Map Screen
const variables = require("./variables.js");

View file

@ -187,9 +187,8 @@ function bosGamma() {
sleep(1); sleep(1);
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) Attempt to trade"); console.log("2) Open your PIP-Boy");
console.log("3) Open your PIP-Boy"); console.log("3) Leave");
console.log("4) Leave");
let poiInput = userInput("Enter: "); let poiInput = userInput("Enter: ");
switch(poiInput) { switch(poiInput) {
case "1": case "1":
@ -221,12 +220,9 @@ function bosGamma() {
userInput("[Enter to exit conversation]"); userInput("[Enter to exit conversation]");
break; break;
case "2": case "2":
genericBOSStore();
break;
case "3":
pauseScreen(); pauseScreen();
break; break;
case "4": case "3":
enableRawMode(); enableRawMode();
console.clear(); console.clear();
break; break;
@ -241,9 +237,8 @@ function bosDelta() {
sleep(1); sleep(1);
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) Attempt to trade"); console.log("2) Open your PIP-Boy");
console.log("3) Open your PIP-Boy"); console.log("3) Leave");
console.log("4) Leave");
let poiInput = userInput("Enter: "); let poiInput = userInput("Enter: ");
switch(poiInput) { switch(poiInput) {
case "1": case "1":
@ -269,12 +264,9 @@ function bosDelta() {
userInput("[Enter to exit the conversation]"); userInput("[Enter to exit the conversation]");
break; break;
case "2": case "2":
genericBOSStore();
break;
case "3":
pauseScreen(); pauseScreen();
break; break;
case "4": case "3":
enableRawMode(); enableRawMode();
console.clear(); console.clear();
break; break;
@ -289,9 +281,8 @@ function bosEpsilon() {
sleep(1); sleep(1);
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) Attempt to trade"); console.log("2) Open your PIP-Boy");
console.log("3) Open your PIP-Boy"); console.log("3) Leave");
console.log("4) Leave");
let poiInput = userInput("Enter: "); let poiInput = userInput("Enter: ");
switch(poiInput) { switch(poiInput) {
case "1": case "1":
@ -311,7 +302,7 @@ function bosEpsilon() {
userInput(" \n[Enter to continue]\n"); userInput(" \n[Enter to continue]\n");
console.log(name + ": And you're mourning your sister? What happened to her, if you don't mind me asking..."); console.log(name + ": And you're mourning your sister? What happened to her, if you don't mind me asking...");
userInput(" \n[Enter to continue]\n"); userInput(" \n[Enter to continue]\n");
console.log("Tiduk: She was a great warrior, though I did not recognize this until it was too late. We had fought a successful battle,\n and were returning to base camp when we were ambushed by robots. Some of us escaped, but my sister\n was not so lucky."); console.log("Tiduk: She was a great warrior, though I did not recognize this until it was too late. We had fought a successful battle, and were returning to base camp when we were ambushed by robots. Some of us escaped, but my sister was not so lucky.");
userInput(" \n[Enter to continue]\n"); userInput(" \n[Enter to continue]\n");
console.log(name + ": Oh, I'm sorry for your loss."); console.log(name + ": Oh, I'm sorry for your loss.");
userInput(" \n[Enter to continue]\n"); userInput(" \n[Enter to continue]\n");
@ -319,12 +310,9 @@ function bosEpsilon() {
userInput("[Enter to exit the conversation]"); userInput("[Enter to exit the conversation]");
break; break;
case "2": case "2":
genericBOSStore();
break;
case "3":
pauseScreen(); pauseScreen();
break; break;
case "4": case "3":
enableRawMode(); enableRawMode();
console.clear(); console.clear();
break; break;
@ -437,12 +425,12 @@ function newVegas() {
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) Continue"); console.log("3) Continue your journey");
let poiInput = userInput("Enter: "); let poiInput = userInput("Enter: ");
switch(poiInput) { switch(poiInput) {
case "1": case "1":
console.clear(); console.clear();
console.log("Vegas Dialogue here...") console.log("")
break; break;
case "2": case "2":
pauseScreen(); pauseScreen();

View file

@ -149,8 +149,8 @@ export function ravenRockStore() {
switch(rrInput) { switch(rrInput) {
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: "); var itemNum = userInput("Enter item number: ");
let itemAmt = userInput("Enter amount: "); var itemAmt = userInput("Enter amount: ");
if (itemAmt > rrInv[itemNum].amount) { if (itemAmt > rrInv[itemNum].amount) {
console.log("Not enough stock."); console.log("Not enough stock.");
userInput("[Enter]"); userInput("[Enter]");
@ -164,7 +164,13 @@ export function ravenRockStore() {
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.");
inventory.push(rrInv[itemNum]); 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..."); console.log("Press enter to continue...");
userInput("[Enter]"); userInput("[Enter]");
} }
@ -172,7 +178,6 @@ export function ravenRockStore() {
case "2": case "2":
console.log("Leaving shop..."); console.log("Leaving shop...");
return true; return true;
break;
default: default:
console.log("Invalid input, try again."); console.log("Invalid input, try again.");
} }
@ -207,10 +212,17 @@ export function vaultZeroStore() {
break; break;
} else { } else {
caps -= itemAmt * vt0Inv[itemNum].price; caps -= itemAmt * vt0Inv[itemNum].price;
rrInv[itemNum].amount -= itemAmt; vt0Inv[itemNum].amount -= itemAmt;
console.log("You bought " + itemAmt + " " + vt0Inv[itemNum].item + "(s)."); console.log("You bought " + itemAmt + " " + vt0Inv[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...");
if (vt0Inv[itemNum].name == "Food") {
food = food+itemAmt;
} else {
for (var i = 0; i < itemAmt; i++) {
inventory.push(vt0Inv[itemNum].item);
}
}
userInput("[Enter]"); userInput("[Enter]");
} }
break; break;
@ -255,6 +267,13 @@ export function newVegasStore() {
console.log("You bought " + itemAmt + " " + vegasInv[itemNum].item + "(s)."); console.log("You bought " + itemAmt + " " + vegasInv[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...");
if (vegasInv[itemNum].name == "Food") {
food = food+itemAmt;
} else {
for (var i = 0; i < itemAmt; i++) {
inventory.push(vegasInv[itemNum].item);
}
}
userInput("[Enter]"); userInput("[Enter]");
} }
break; break;
@ -299,6 +318,13 @@ export function eurekaStore() {
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.");
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..."); console.log("Press enter to continue...");
userInput("[Enter]"); userInput("[Enter]");
} }
@ -343,6 +369,13 @@ export function lostHillsStore() {
lostHillsInv[itemNum].amount -= itemAmt; lostHillsInv[itemNum].amount -= itemAmt;
console.log("You bought " + itemAmt + " " + lostHillsInv[itemNum].item + "(s)."); console.log("You bought " + itemAmt + " " + lostHillsInv[itemNum].item + "(s).");
console.log("You have " + caps + " caps left."); 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..."); console.log("Press enter to continue...");
userInput("[Enter]"); userInput("[Enter]");
} }
@ -387,6 +420,13 @@ export function whitespringStore() {
whitespringInv[itemNum].amount -= itemAmt; whitespringInv[itemNum].amount -= itemAmt;
console.log("You bought " + itemAmt + " " + whitespringInv[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.");
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..."); console.log("Press enter to continue...");
userInput("[Enter]"); userInput("[Enter]");
} }
@ -460,23 +500,30 @@ export function trader(tier, message) {
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 traderInput = userInput("Enter: ");
switch(rrInput) { switch(traderInput) {
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 > tempBOSStock[itemNum].amount) { if (itemAmt > tempTraderInv[itemNum].amount) {
console.log("Not enough stock."); console.log("Not enough stock.");
break; break;
} else if (itemAmt * tempBOSStock[itemNum].price > caps) { } else if (itemAmt * tempTraderInv[itemNum].price > caps) {
console.log("Not enough money."); console.log("Not enough money.");
break; break;
} else { } else {
preWarMoney -= itemAmt * tempBOSStock[itemNum].price; preWarMoney -= itemAmt * tempTraderInv[itemNum].price;
tempBOSStock[itemNum].amount -= itemAmt; tempBOSStock[itemNum].amount -= itemAmt;
console.log("You bought " + itemAmt + " " + tempBOSStock[itemNum].item + "(s)."); console.log("You bought " + itemAmt + " " + tempTraderInv[itemNum].item + "(s).");
console.log("You have " + caps + " caps left."); 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..."); console.log("Press enter to continue...");
userInput("[Enter]"); userInput("[Enter]");
} }

View file

@ -18,42 +18,24 @@ global.equipmentList = [ // Equipment: weapons, armor, tools
{name: "Laser Rifle", description: "A laser rifle, does 25 laser damage", type: "weapon", value: "25", unit: "laser",cost: 25, weight: 5}, {name: "Laser Rifle", description: "A laser rifle, does 25 laser damage", type: "weapon", value: "25", unit: "laser",cost: 25, weight: 5},
{name: "Plasma Pistol", description: "A plasma pistol, does 30 plasma damage", type: "weapon", value: "30", unit: "plasma",cost: 30, weight: 6}, {name: "Plasma Pistol", description: "A plasma pistol, does 30 plasma damage", type: "weapon", value: "30", unit: "plasma",cost: 30, weight: 6},
{name: "Plasma Rifle", description: "A plasma rifle, does 35 plasma damage", type: "weapon", value: "35", unit: "plasma",cost: 35, weight: 7}, {name: "Plasma Rifle", description: "A plasma rifle, does 35 plasma damage", type: "weapon", value: "35", unit: "plasma",cost: 35, weight: 7},
// 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: "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}, {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
{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, better 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: "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: "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}, {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
{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},
{name: "T-60 Power Armor", description: "A set of T-60 Power Armor, good protection from all damage types.", type: "parmor", resistances: {balistic: 25, slash: 25, laser: 25, plasma: 25}, unit: "dt", cost: 5, weight: 5}, {name: "T-60 Power Armor", description: "A set of T-60 Power Armor, good protection from all damage types.", type: "parmor", resistances: {balistic: 25, slash: 25, laser: 25, plasma: 25}, unit: "dt", cost: 5, weight: 5},
{name: "T-65 Power Armor", description: "A set of T-60 Power Armor, great protection from all damage types.", type: "parmor", resistances: {balistic: 35, slash: 35, laser: 35, plasma: 35}, unit: "dt", cost: 5, weight: 5}, {name: "T-65 Power Armor", description: "A set of T-60 Power Armor, great protection from all damage types.", type: "parmor", resistances: {balistic: 35, slash: 35, laser: 35, plasma: 35}, unit: "dt", cost: 5, weight: 5},
// Energy Resistant Power Armor
{name: "X-01 Power Armor", description: "X-01 Power Armor, good protection from energy damage.", type: "parmor", resistances: {balistic: 10, slash: 10, laser: 30, plasma: 30}, unit: "dt", cost: 5, weight: 5},, {name: "X-01 Power Armor", description: "X-01 Power Armor, good protection from energy damage.", type: "parmor", resistances: {balistic: 10, slash: 10, laser: 30, plasma: 30}, unit: "dt", cost: 5, weight: 5},,
{name: "APA MkI Power Armor", description: "APA MkI Power Armor, great protection from energy damage.", type: "parmor", resistances: {balistic: 20, slash: 20, laser: 40, plasma: 40}, unit: "dt", cost: 5, weight: 5}, {name: "APA MkI Power Armor", description: "APA MkI Power Armor, great protection from energy damage.", type: "parmor", resistances: {balistic: 20, slash: 20, laser: 40, plasma: 40}, unit: "dt", cost: 5, weight: 5},
{name: "APA MkII Power Armor", description: "APA MkII Power Armor, excellent protection from energy damage.", type: "parmor", resistances: {balistic: 30, slash: 30, laser: 50, plasma: 50}, unit: "dt", cost: 5, weight: 5}, {name: "APA MkII Power Armor", description: "APA MkII Power Armor, excellent protection from energy damage.", type: "parmor", resistances: {balistic: 30, slash: 30, laser: 50, plasma: 50}, unit: "dt", cost: 5, weight: 5},
// Ballistic Resistant Power Armor
{name: "Raider Power Armor", description: "Raider Power Armor, good protection from ballistic damage.", type: "parmor", resistances: {balistic: 30, slash: 30, laser: 10, plasma: 10}, unit: "dt", cost: 5, weight: 5}, {name: "Raider Power Armor", description: "Raider Power Armor, good protection from ballistic damage.", type: "parmor", resistances: {balistic: 30, slash: 30, laser: 10, plasma: 10}, unit: "dt", cost: 5, weight: 5},
{name: "Ultracite Power Armor", description: "Ultracite Power Armor, great protection from ballistic damage.", type: "parmor", resistances: {balistic: 40, slash: 40, laser: 20, plasma: 20}, unit: "dt", cost: 5, weight: 5}, {name: "Ultracite Power Armor", description: "Ultracite Power Armor, great protection from ballistic damage.", type: "parmor", resistances: {balistic: 40, slash: 40, laser: 20, plasma: 20}, unit: "dt", cost: 5, weight: 5},
{name: "T-51 Power Armor", description: "T-51 Power Armor, excellent protection from ballistic damage.", type: "parmor", resistances: {balistic: 50, slash: 50, laser: 30, plasma: 30}, unit: "dt", cost: 5, weight: 5}, {name: "T-51 Power Armor", description: "T-51 Power Armor, excellent protection from ballistic damage.", type: "parmor", resistances: {balistic: 50, slash: 50, laser: 30, plasma: 30}, unit: "dt", cost: 5, weight: 5},
// Special Armor
{name: "Enclave Uniform", description: "Enclave uniform, standard issue", type: "armor", resistances: {balistic: 0, slash: 0, laser: 0, plasma: 0}, unit: "dr",cost: 20, weight: 20}, {name: "Enclave Uniform", description: "Enclave uniform, standard issue", type: "armor", resistances: {balistic: 0, slash: 0, laser: 0, plasma: 0}, unit: "dr",cost: 20, weight: 20},
{name: "Chinese Stealth Suit", description: "Chinese Stealth Suit, +25% Chance to skip encounter if worn", type: "uarmor", resistances: {balistic: 5, slash: 5, laser: 5, plasma: 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},
// Fists (Yes I know this should go by the weapons but I dont wanna mess this up)
{name: "Fists (Unarmed)", description: "Unarmed combat, does 5 bash damage", type: "weapon", value: "5", unit: "bash", cost: 5, weight: 1}, {name: "Fists (Unarmed)", description: "Unarmed combat, does 5 bash damage", type: "weapon", value: "5", unit: "bash", cost: 5, weight: 1},
]; ];
@ -111,16 +93,11 @@ global.radPoints = 0; // If the player reaches 100 rad points the game ends
global.xpPerLevel = 10; // Amount of XP needed per level. Raises 50% each level global.xpPerLevel = 10; // Amount of XP needed per level. Raises 50% each level
global.level = 0; // Level of player. Modifies enemy scaling global.level = 0; // Level of player. Modifies enemy scaling
global.inventory = [ // Inventory of player, holds all items global.inventory = [ // Inventory of player, holds all items
// Supplies: chems, aid equipmentList[27],
[], equipmentList[25],
// Equipment: weapons, armor, tools
[
equipmentList[27],
equipmentList[24],
]
] ]
global.equippedWeapon = equipmentList[27]; global.equippedWeapon = equipmentList[27];
global.equippedArmor = equipmentList[24]; global.equippedArmor = equipmentList[25];
// Game Mechanics // Game Mechanics
global.walkRate = 0; // Units the player walks per day, affects foodRateCalc and radPointsCalc global.walkRate = 0; // Units the player walks per day, affects foodRateCalc and radPointsCalc