Combat partially done, encounters fixed.

This commit is contained in:
Raktbastr 2025-04-27 00:10:05 -05:00
parent 8485d7d800
commit df257c6420
5 changed files with 138 additions and 131 deletions

8
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,8 @@
{
"github.copilot.enable": {
"*": false,
"plaintext": false,
"markdown": false,
"scminput": false
}
}

87
TODO.md
View file

@ -5,38 +5,9 @@
## Game Mechanics ## Game Mechanics
- POI's and Factions - 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 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 - 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 - Dialogue for locations
- Raven Rock
- Whitespring
- Brotherhood Bunkers - Brotherhood Bunkers
- Tibbets - Tibbets
- Flagstaff - Flagstaff
@ -76,64 +47,6 @@
- Upper NCR - Upper NCR
- Hard Encounters - 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 ## Story
### Intro ### Intro

View file

@ -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
}
}
}

View file

@ -1,6 +1,7 @@
// Holds encounter code, seperate from poiscreens.js // Holds encounter code, seperate from poiscreens.js
import { randomNumber } from "./functions.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 //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 //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 = [ var raiderEncounters = [
{name: "Raider Aspirant", faction: "raider", minLevel: 1, maxLevel: 15, damageClass: "B", minDamage: 5, maxDamage: 10}, {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, damageClass: "B", minDamage: 10, maxDamage: 20}, {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, damageClass: "B", minDamage: 20, maxDamage: 30} {name: "Raider Scavenger", faction: "raider", minLevel: 25, maxLevel: 35, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLraiderEncounters = [ var HLraiderEncounters = [
{name: "Raider Enforcer", faction: "raider", minLevel: 35, maxLevel: 50, damageClass: "B", minDamage: 30, maxDamage: 40}, {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, damageClass: "B", minDamage: 40, maxDamage: 50}, {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, damageClass: "B", minDamage: 50, maxDamage: 60} {name: "Raider Boss", faction: "raider", minLevel: 65, maxLevel: 80, health: 10, weapon: equipmentList[3], armor: equipmentList[10]},
]; ];
var MWBOSEncounters = [ var MWBOSEncounters = [
{name: "MWBOS Initiate", faction: "MWBOS", minLevel: 5, maxLevel: 10, damageClass: "E", minDamage: 5, maxDamage: 40}, {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, damageClass: "E", minDamage: 40, maxDamage: 60}, {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, damageClass: "E", minDamage: 60, maxDamage: 80} {name: "MWBOS Knight Captain", faction: "MWBOS", minLevel: 25, maxLevel: 30, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLMWBOSEncounters = [ var HLMWBOSEncounters = [
{name: "MWBOS Paladin", faction: "MWBOS", minLevel: 35, maxLevel: 40, damageClass: "E", minDamage: 60, maxDamage: 80}, {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, damageClass: "E", minDamage: 80, maxDamage: 100}, {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, damageClass: "E", minDamage: 100, maxDamage: 120} {name: "MWBOS Head Paladin", faction: "MWBOS", minLevel: 55, maxLevel: 60, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var abominationEncounters = [ var abominationEncounters = [
{name: "Mole Rat", faction: "abomination", minLevel: 1, maxLevel: 15, damageClass: "B", minDamage: 1, maxDamage: 5}, {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, damageClass: "B", minDamage: 5, maxDamage: 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, damageClass: "B", minDamage: 5, maxDamage: 10}, {name: "Radscorpion", faction: "abomination", minLevel: 30, maxLevel: 50, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLabominationEncounters = [ var HLabominationEncounters = [
{name: "Super Mutant", faction: "abomination", minLevel: 50, maxLevel: 65, 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, damageClass: "B", minDamage: 5, maxDamage: 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, damageClass: "B", minDamage: 5, maxDamage: 10}, {name: "Deathclaw", faction: "abomination", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var NCREncounters = [ var NCREncounters = [
{name: "NCR Trooper", faction: "NCR", minLevel: 40, maxLevel: 70, damageClass: "B", minDamage: 5, maxDamage: 10}, {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, damageClass: "B", minDamage: 10, maxDamage: 20}, {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, damageClass: "B", minDamage: 20, maxDamage: 30} {name: "NCR Commander", faction: "NCR", minLevel: 60, maxLevel: 70, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLNCREncounters = [ var HLNCREncounters = [
{name: "NCR Heavy Trooper", faction: "NCR", minLevel: 70, maxLevel: 100, damageClass: "B", minDamage: 30, maxDamage: 40}, {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, damageClass: "B", minDamage: 40, maxDamage: 50}, {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, damageClass: "B", minDamage: 50, maxDamage: 60} {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 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 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, damageClass: "E", minDamage: 80, maxDamage: 100}, {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, damageClass: "E", minDamage: 100, maxDamage: 120} {name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLBOSEncounters = [ var HLBOSEncounters = [
{name: "BOS Paladin", faction: "BOS", minLevel: 60, maxLevel: 80, damageClass: "E", minDamage: 60, maxDamage: 80}, {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, damageClass: "E", minDamage: 80, maxDamage: 100}, {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, damageClass: "E", minDamage: 100, maxDamage: 120} {name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var settlerEncounters = [ var settlerEncounters = [
{name: "John Settler", faction: "settler", minLevel: 1, maxLevel: 2, damageClass: "B", minDamage: 1, maxDamage: 2}, {name: "John Settler", faction: "settler", minLevel: 1, maxLevel: 2, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
{name: "Settler", faction: "settler", minLevel: 2, maxLevel: 3, damageClass: "B", minDamage: 2, maxDamage: 3}, {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, damageClass: "B", minDamage: 3, maxDamage: 4}, {name: "Settler Scavenger", faction: "settler", minLevel: 3, maxLevel: 4, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLsettlerEncounters = [ var HLsettlerEncounters = [
{name: "Settler Gaurdsman", faction: "settler", minLevel: 4, maxLevel: 5, damageClass: "B", minDamage: 4, maxDamage: 5}, {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, damageClass: "B", minDamage: 5, maxDamage: 6}, {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, damageClass: "B", minDamage: 6, maxDamage: 7}, {name: "Settler Sheriff", faction: "settler", minLevel: 6, maxLevel: 7, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var legionEncounters = [ var legionEncounters = [
{name: "Legion Recruit", faction: "legion", minLevel: 30, maxLevel: 40, damageClass: "B", minDamage: 1, maxDamage: 2}, {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, damageClass: "B", minDamage: 2, maxDamage: 3}, {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, damageClass: "B", minDamage: 3, maxDamage: 4}, {name: "Legion Vexillarius", faction: "legion", minLevel: 50, maxLevel: 60, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];
var HLlegionEncounters = [ var HLlegionEncounters = [
{name: "Legion Decanus", faction: "legion", minLevel: 60, maxLevel: 70, damageClass: "B", minDamage: 4, maxDamage: 5}, {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, damageClass: "B", minDamage: 5, maxDamage: 6}, {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, damageClass: "B", minDamage: 6, maxDamage: 7}, {name: "Legion Praetorian", faction: "legion", minLevel: 80, maxLevel: 90, health: 10, weapon: equipmentList[2], armor: equipmentList[10]},
]; ];

View file

@ -17,8 +17,13 @@ global.inventory = [ // Inventory of player, holds all items
// Supplies: chems, aid // Supplies: chems, aid
[], [],
// Equipment: weapons, armor, tools // Equipment: weapons, armor, tools
[] [
equipmentList[27],
equipmentList[24],
] ]
]
global.equippedWeapon = equipmentList[27];
global.equippedArmor = equipmentList[24];
// 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
@ -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}, {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 // 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}, {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 = [ global.achievements = [