diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..eecbcdc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "github.copilot.enable": { + "*": false, + "plaintext": false, + "markdown": false, + "scminput": false + } +} \ No newline at end of file diff --git a/TODO.md b/TODO.md index 5b6d04f..fd72a85 100644 --- a/TODO.md +++ b/TODO.md @@ -5,38 +5,9 @@ ## Game Mechanics - POI's and Factions - - Art for locations - - Raven Rock - - Whitespring - - Brotherhood Bunkers - - Tibbets - - Flagstaff - - New Vegas - - NCR Cities - - Lost Hills - - Sierra Madre - - Divide - - Eureka - - Navarro - Logic for faction armor - - Logic for calling locations at right location point (incl. different paths) - - Use the Google Earth Project for location points - Logic for path split - - Trade menus for locations - - Raven Rock - - Whitespring - - Brotherhood Bunkers - - Tibbets - - Flagstaff - - New Vegas - - NCR Cities - - Sierra Madre - - Divide - - Eureka - - Navarro - Dialogue for locations - - Raven Rock - - Whitespring - Brotherhood Bunkers - Tibbets - Flagstaff @@ -76,64 +47,6 @@ - Upper NCR - Hard Encounters -- Achievements - - Wastland Pacifier - - Clear out all Raider compounds and defeat every Raider encounter - - - Dishonourable Discharge - - Deactivate Modus - - - Force of habit - - Destroy the Midwest Brotherhood - - - 7 Karat Run - - Find the Platnium Chip - - - Profligate - - Destroy Flagstaff - - - What in the Goddamn? - - Accidentally Kill Benny at the Tops Casino - - - Just a chore, like any other - - Fight in the First Battle of Hoover Dam and defeat the Malpais Legate - - - Yes, man - - Kill Mr. House and the 2 other families, dooming New Vegas - - - Rocket's Red Glare - - Launch the nuke at Hopeville/Ashton - - - Begin Again - - Kill Father Elijah - - - Long Time Coming - - Destroy the main NCR cities or Shady Sands - - - A New Dawn For America - - Reactivate Camp Navarro with the help of Eureka - - - Against All odds - - Retrieve the Geck from Navarro with or without the help of the Remnants. - - - Finish What Was Started - - Destroy all main factions and cities - - - 510 Years - - Find and wear a suit of APA mk2 - - - High Roller - - Win 200 caps from gambling - - - Veteran Ranger - - Reach max rep with the NCR - - - Frumentari - - Reach max rep with the Legion - - - Knight Errant - - Reach max rep with the BOS - ## Story ### Intro diff --git a/files/combat.js b/files/combat.js index e69de29..5f258b7 100644 --- a/files/combat.js +++ b/files/combat.js @@ -0,0 +1,76 @@ +import './variables.js'; +import {userInput} from './functions.js'; + +function initCombat(enemy) { + if (enemy.minLevel > level) { + var enemyLevelFinal = enemy.minLevel; + } else if (enemy.maxLevel < level) { + var enemyLevelFinal = enemy.minLevel; + } else { + var enemyLevelFinal = level; + } + + if (enemy.armor.value > 85 && enemy.armor.unit == "dr") { + var enemyArmor = 85; + } else { + var enemyArmor = enemy.armor.value + } + + var enemyStats = {level: enemyLevelFinal, health: enemy.health+enemyLevelFinal, weapon: enemy.weapon, armor: enemyArmor, armorUnit: enemy.armor.unit}; + var playerStats = {level: level, health: health, weapon: equippedWeapon, armor: equippedArmor, armorUnit: equippedArmor.unit, chem: "placeholder"}; +} + +function combat(enemy) { + console.clear(); + console.log("You enter combat with "+enemy.name+"..."); + console.log("What would you like to do?"); + console.log("-----------------------"); + console.log("1) Attack"); + console.log("2) Check your Inventory"); + console.log("3) View Stats"); + var combatInput = userInput("Enter: "); + switch(combatInput) { + case "1": + + } + + +} + + +function damageCalc(attacker) { + if (attacker = player) { + if (playerStats.chem == "psycho") { + var damageOutput = playerStats.weapon.damage*1.5; + } else { + var damageOutput = playerStats.weapon.damage; + } + + if (enemyStats.armorUnit == "dr"){ + enemyStats.health = enemyStats.health-(damageOutput-(enemyStats.armor.value/100)); + } + if (enemyStats.armorUnit == "dt") { + let dtDamage = enemyStats.health-(damageOutput-armor); + if (dtDamage < 0) { + dtDamage = 0; + } + enemyStats.health - dtDamage + } + } else { + if (playerStats.chem == "medx") { + var damageOutput = enemyStats.weapon.damage*(-1.5); + } else { + var damageOutput = enemyStats.weapon.damage; + } if (playerStats.armorUnit == "dr"){ + playerStats.health = playerStats.health-(damageOutput-(playerStats.armor.value/100)); + } + if (playerStats.armorUnit == "dt") { + let dtDamage = playerStats.health-(damageOutput-armor); + if (dtDamage < 0) { + dtDamage = 0; + } + playerStats.health - dtDamage + } + } +} + diff --git a/files/encounters.js b/files/encounters.js index 6a40a3d..3163268 100644 --- a/files/encounters.js +++ b/files/encounters.js @@ -1,6 +1,7 @@ // Holds encounter code, seperate from poiscreens.js import { randomNumber } from "./functions.js"; +import './variables.js'; //5-50 abominations, 51-200 MWBOS, 201-255 legion, a5-a40 NCR, b0-b30 abomination, b40-b80 abomination, b90+ NCR, b80-b90 enclave //HLE = high level encounter, this is a filter that determines if the player can get, as the name implies, high level encounters @@ -172,72 +173,72 @@ export function forcedEncounter(HLE, faction, forcedHLE){ } var raiderEncounters = [ - {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} + {name: "Raider Aspirant", faction: "raider", minLevel: 1, maxLevel: 15, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Raider", faction: "raider", minLevel: 15, maxLevel: 25, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Raider Scavenger", faction: "raider", minLevel: 25, maxLevel: 35, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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} + {name: "Raider Enforcer", faction: "raider", minLevel: 35, maxLevel: 50, health: 10, weapon: equipmentList[3], armor: equipmentList[10]}, + {name: "Raider Warlord", faction: "raider", minLevel: 50, maxLevel: 65, health: 10, weapon: equipmentList[3], armor: equipmentList[10]}, + {name: "Raider Boss", faction: "raider", minLevel: 65, maxLevel: 80, health: 10, weapon: equipmentList[3], armor: equipmentList[10]}, ]; var MWBOSEncounters = [ - {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} + {name: "MWBOS Initiate", faction: "MWBOS", minLevel: 5, maxLevel: 10, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "MWBOS Knight", faction: "MWBOS", minLevel: 15, maxLevel: 20, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "MWBOS Knight Captain", faction: "MWBOS", minLevel: 25, maxLevel: 30, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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} + {name: "MWBOS Paladin", faction: "MWBOS", minLevel: 35, maxLevel: 40, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "MWBOS Star Paladin", faction: "MWBOS", minLevel: 45, maxLevel: 50, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "MWBOS Head Paladin", faction: "MWBOS", minLevel: 55, maxLevel: 60, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var abominationEncounters = [ - {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}, + {name: "Mole Rat", faction: "abomination", minLevel: 1, maxLevel: 15, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Mongrel", faction: "abomination", minLevel: 15, maxLevel: 30, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Radscorpion", faction: "abomination", minLevel: 30, maxLevel: 50, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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}, + {name: "Super Mutant", faction: "abomination", minLevel: 50, maxLevel: 65, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Tunneler", faction: "abomination", minLevel: 65, maxLevel: 80, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Deathclaw", faction: "abomination", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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} + {name: "NCR Trooper", faction: "NCR", minLevel: 40, maxLevel: 70, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "NCR Ranger", faction: "NCR", minLevel: 50, maxLevel: 70, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "NCR Commander", faction: "NCR", minLevel: 60, maxLevel: 70, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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} + {name: "NCR Heavy Trooper", faction: "NCR", minLevel: 70, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "NCR Veteran Ranger", faction: "NCR", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "NCR General", faction: "NCR", minLevel: 90, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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} + {name: "BOS Paladin", faction: "BOS", minLevel: 60, maxLevel: 80, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "BOS Star Paladin", faction: "BOS", minLevel: 70, maxLevel: 90, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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} + {name: "BOS Paladin", faction: "BOS", minLevel: 60, maxLevel: 80, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "BOS Star Paladin", faction: "BOS", minLevel: 70, maxLevel: 90, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var settlerEncounters = [ - {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}, + {name: "John Settler", faction: "settler", minLevel: 1, maxLevel: 2, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Settler", faction: "settler", minLevel: 2, maxLevel: 3, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Settler Scavenger", faction: "settler", minLevel: 3, maxLevel: 4, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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}, + {name: "Settler Gaurdsman", faction: "settler", minLevel: 4, maxLevel: 5, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Settler Enforcer", faction: "settler", minLevel: 5, maxLevel: 6, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Settler Sheriff", faction: "settler", minLevel: 6, maxLevel: 7, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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}, + {name: "Legion Recruit", faction: "legion", minLevel: 30, maxLevel: 40, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Legionary", faction: "legion", minLevel: 40, maxLevel: 50, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Legion Vexillarius", faction: "legion", minLevel: 50, maxLevel: 60, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; 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}, + {name: "Legion Decanus", faction: "legion", minLevel: 60, maxLevel: 70, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Legion Centurion", faction: "legion", minLevel: 70, maxLevel: 80, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, + {name: "Legion Praetorian", faction: "legion", minLevel: 80, maxLevel: 90, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; \ No newline at end of file diff --git a/files/variables.js b/files/variables.js index 3ced373..a9b3bd1 100644 --- a/files/variables.js +++ b/files/variables.js @@ -17,8 +17,13 @@ global.inventory = [ // Inventory of player, holds all items // Supplies: chems, aid [], // Equipment: weapons, armor, tools - [] + [ + equipmentList[27], + equipmentList[24], + ] ] +global.equippedWeapon = equipmentList[27]; +global.equippedArmor = equipmentList[24]; // Game Mechanics global.walkRate = 0; // Units the player walks per day, affects foodRateCalc and radPointsCalc @@ -87,8 +92,12 @@ global.equipmentList = [ // Equipment: weapons, armor, tools {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: "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: "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}, + + // 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}, ]; global.achievements = [