Added a working "forced encounter" function and a
yet to be functional natural encounter function.
This commit is contained in:
parent
6714250079
commit
dbd27cfa7d
2 changed files with 206 additions and 143 deletions
|
|
@ -2,150 +2,204 @@
|
||||||
|
|
||||||
import { randomNumber } from "./functions.js";
|
import { randomNumber } from "./functions.js";
|
||||||
|
|
||||||
export function calcEncounter() {
|
//5-50 abominations, 51-200 MWBOS, 201-255 legion, a5-a40 NCR, b0-b30 abomination, b40-b80 abomination, b90+ NCR, b80-b90 enclave
|
||||||
if (randomNumber(1,100) <= 20) {
|
//HLE = high level encounter, this is a filter that determines if the player can get, as the name implies, high level encounters
|
||||||
if (location >= 255) {
|
export function naturalEncounter(location){
|
||||||
if (locationA > locationB) {
|
var HLE = false;
|
||||||
if ((locationA >= 5 && locationA < 17) || (locationA >= 23 && locationA < 40)) {
|
var encounter = false;
|
||||||
initializeEncounter(NCR,4,true,true,false);
|
var encounterLuck = randomNumber(1, 100);
|
||||||
}
|
if(location > 250){
|
||||||
if (locationB >= 40) {
|
HLE = true;
|
||||||
initializeEncounter(NCR,5,true,true,false);
|
}
|
||||||
}
|
if(0 < location <= 5){
|
||||||
} else if (locationA < locationB) {
|
encounter = false;
|
||||||
if ((locationB >= 0 && locationB < 30) || (locationB >= 40 && locationB < 80)) {
|
} else if(5 < location <= 50){
|
||||||
initializeEncounter(abomination,3,true,true,false)
|
if(1 <= encounterLuck <= 50){
|
||||||
}
|
encounter = false;
|
||||||
if ((locationB >= 30 && locationB < 40) || (locationB >= 90)) {
|
} else if(51 <= encounterLuck <= 80){
|
||||||
initializeEncounter(NCR,5,true,true,false)
|
encounter = "abomination";
|
||||||
}
|
} else if(81 <= encounterLuck <= 90){
|
||||||
if (locationB >= 80 && locationB < 90) {
|
encounter = "settler";
|
||||||
initializeEncounter(enclave,4,true,true,false)
|
} else if(91 <= encounterLuck <= 100){
|
||||||
}
|
encounter = "MWBOS";
|
||||||
} else {
|
}
|
||||||
if (location >= 5 && location < 50) {
|
} else if(50 < location <= 200){
|
||||||
initializeEncounter(abomination,1,true,true,false)
|
if(1 <= encounterLuck <= 50){
|
||||||
}
|
encounter = false;
|
||||||
if (location >= 50 && location < 200) {
|
} else if(51 <= encounterLuck <= 80){
|
||||||
initializeEncounter(MWBOS,2,true,true,false)
|
encounter = "MWBOS";
|
||||||
}
|
} else if(81 <= encounterLuck <= 95){
|
||||||
if (location >= 200 && location < 255) {
|
encounter = "settler";
|
||||||
initializeEncounter(legion,3,true,true,false)
|
} else if(96 <= encounterLuck <= 100){
|
||||||
}
|
encounter = "abominaton";
|
||||||
}
|
}
|
||||||
|
} else if(200 < location <= 255){
|
||||||
|
if(1 <= encounterLuck <= 40){
|
||||||
|
encounter = false;
|
||||||
|
} else if(41 <= encounterLuck <= 75){
|
||||||
|
encounter = "legion";
|
||||||
|
} else if(76 <= encounterLuck <= 90){
|
||||||
|
encounter = "abomination";
|
||||||
|
} else if(91 <= encounterLuck <= 99){
|
||||||
|
encounter = "raider";
|
||||||
|
} else if(encounterLuck = 100){
|
||||||
|
encounter = "settler";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
export function encounterMenuMaker(reqFactionEMM, diffWeightingEMM, forceOptEMM){
|
if(encounter != false){
|
||||||
switch(diffWeightingEMM){
|
switch(encounter){
|
||||||
case 1:
|
case "abomination":
|
||||||
reqFactionEMM = encounterDiffOne
|
if(HLE == true){
|
||||||
break;
|
switch(randomNumber(1, 2)){
|
||||||
case 2:
|
case 1:
|
||||||
reqFactionEMM = encounterDiffTwo
|
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
||||||
break;
|
case 2:
|
||||||
case 3:
|
return HLabominationEncounters[randomNumber(0, HLabominationEncounters.length-1)];
|
||||||
reqFactionEMM = encounterDiffThree
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
reqFactionEMM = encounterDiffFour
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
reqFactionEMM = encounterDiffFive
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
var encounterDifficulty = (diffWeightingEMM * randomNumber(1, 20));
|
|
||||||
factionFailsafe = reqFactionEMM.toLowerCase();
|
|
||||||
switch(factionFailsafe){
|
|
||||||
case "NCR":
|
|
||||||
faction = 0;
|
|
||||||
break;
|
|
||||||
case "legion":
|
|
||||||
faction = 1;
|
|
||||||
break;
|
|
||||||
case "raider":
|
|
||||||
faction = 2;
|
|
||||||
break;
|
|
||||||
case "settler":
|
|
||||||
faction = 3;
|
|
||||||
break;
|
|
||||||
case "BOS":
|
|
||||||
faction = 4;
|
|
||||||
break;
|
|
||||||
case "abomination":
|
|
||||||
faction = 5;
|
|
||||||
break;
|
|
||||||
case "MWBOS":
|
|
||||||
faction = 6;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (forceOptEMM == true) {
|
|
||||||
if(encounterDifficulty <= 20){
|
|
||||||
encountered.push(encounterDiffOne[faction][randomNumber(0, encounterDiffOne[faction].length - 1)]);
|
|
||||||
} else if(21 <= encounterDifficulty <= 40){
|
|
||||||
encountered.push(encounterDiffTwo[faction][randomNumber(0, encounterDiffTwo[faction].length - 1)]);
|
|
||||||
} else if(41 <= encounterDifficulty <= 60){
|
|
||||||
encountered.push(encounterDiffThree[faction][randomNumber(0, encounterDiffThree[faction].length - 1)]);
|
|
||||||
} else if(61 <= encounterDifficulty <= 80){
|
|
||||||
encountered.push(encounterDiffFour[faction][randomNumber(0, encounterDiffFour[faction].length - 1)]);
|
|
||||||
} else {
|
|
||||||
encountered.push(encounterDiffFive[faction][randomNumber(0, encounterDiffFive[faction].length - 1)]);
|
|
||||||
}
|
|
||||||
return encountered[encountered.length - 1];
|
|
||||||
} else {
|
|
||||||
let x = randomNumber(0, 100)
|
|
||||||
if (x >= 75) {
|
|
||||||
if (x <=80) {
|
|
||||||
encountered.push(encounterDiffOne[raider][randomNumber(0, encounterDiffOne[raider].length - 1)])
|
|
||||||
}
|
|
||||||
if (x <=90) {
|
|
||||||
encountered.push(encounterDiffOne[settler][randomNumber(0, encounterDiffOne[settler].length - 1)])
|
|
||||||
}
|
|
||||||
if (x <=100) {
|
|
||||||
encountered.push(encounterDiffOne[abomination][randomNumber(0, encounterDiffOne[abomination].length - 1)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (x < 75) {
|
|
||||||
encountered.push(encounterDiffOne[faction][randomNumber(0, encounterDiffOne[faction].length - 1)])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function initializeEncounter(reqFaction, diffWeighting, fight, flee, forceFaction){
|
|
||||||
var encounter = encounterMenuMaker(reqFaction, diffWeighting, forceFaction);
|
|
||||||
console.clear();
|
|
||||||
console.log("You come across a " + encounter.name);
|
|
||||||
var encounterHealth = randomNumber(encounter.minHealth, encounter.maxHealth);
|
|
||||||
console.log("Health: " + encounterHealth);
|
|
||||||
console.log("What would you like to do?");
|
|
||||||
console.log("--------------------------");
|
|
||||||
var playerOptions = 1;
|
|
||||||
console.log(playerOptions + ") Inventory");
|
|
||||||
playerOptions++
|
|
||||||
if(fight == true){
|
|
||||||
console.log(playerOptions + ") Fight");
|
|
||||||
playerOptions++;
|
|
||||||
}
|
|
||||||
if(flee == true){
|
|
||||||
console.log(playerOptions + ") Flee");
|
|
||||||
playerOptions++;
|
|
||||||
}
|
|
||||||
while(true) {
|
|
||||||
let encounterInput = userInput("Enter: ")
|
|
||||||
switch(encounterInput) {
|
|
||||||
case "1":
|
|
||||||
console.log(inventory);
|
|
||||||
case "2":
|
|
||||||
initCombat(encounter);
|
|
||||||
break;
|
|
||||||
case "3":
|
|
||||||
if (reputation.reqFaction < 4) {
|
|
||||||
if (randomNumber(1,100) < 40){
|
|
||||||
console.log("You tried to flee... but they noticed you.");
|
|
||||||
initCombat(encounter);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
||||||
|
}
|
||||||
|
case "MWBOS":
|
||||||
|
if(HLE == true){
|
||||||
|
switch(randomNumber(1, 2)){
|
||||||
|
case 1:
|
||||||
|
return MWBOSEncounters[randomNumber(0, MWBOSEncounters.length-1)];
|
||||||
|
case 2:
|
||||||
|
return HLMWBOSEncounters[randomNumber(0, HLMWBOSEncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return MWBOSEncounters[randomNumber(0, MWBOSEncounters.length-1)];
|
||||||
|
}
|
||||||
|
case "BOS":
|
||||||
|
if(HLE == true){
|
||||||
|
switch(randomNumber(1, 2)){
|
||||||
|
case 1:
|
||||||
|
return BOSEncounters[randomNumber(0, BOSEncounters.length-1)];
|
||||||
|
case 2:
|
||||||
|
return HLBOSEncounters[randomNumber(0, HLBOSEncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return BOSEncounters[randomNumber(0, BOSEncounters.length-1)];
|
||||||
|
}
|
||||||
|
case "NCR":
|
||||||
|
if(HLE == true){
|
||||||
|
switch(randomNumber(1, 2)){
|
||||||
|
case 1:
|
||||||
|
return NCREncounters[randomNumber(0, NCREncounters.length-1)];
|
||||||
|
case 2:
|
||||||
|
return HLNCREncounters[randomNumber(0, HLNCREncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return NCREncounters[randomNumber(0, NCREncounters.length-1)];
|
||||||
|
}
|
||||||
|
case "legion":
|
||||||
|
if(HLE == true){
|
||||||
|
switch(randomNumber(1, 2)){
|
||||||
|
case 1:
|
||||||
|
return legionEncounters[randomNumber(0, legionEncounters.length-1)];
|
||||||
|
case 2:
|
||||||
|
return HLlegionEncounters[randomNumber(0, HLlegionEncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return legionEncounters[randomNumber(0, legionEncounters.length-1)];
|
||||||
|
}
|
||||||
|
case "settler":
|
||||||
|
if(HLE == true){
|
||||||
|
switch(randomNumber(1, 2)){
|
||||||
|
case 1:
|
||||||
|
return settlerEncounters[randomNumber(0, settlerEncounters.length-1)];
|
||||||
|
case 2:
|
||||||
|
return HLsettlerEncounters[randomNumber(0, HLsettlerEncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return settlerEncounters[randomNumber(0, settlerEncounters.length-1)];
|
||||||
|
}
|
||||||
|
case "raider":
|
||||||
|
if(HLE == true){
|
||||||
|
switch(randomNumber(1, 2)){
|
||||||
|
case 1:
|
||||||
|
return raiderEncounters[randomNumber(0, raiderEncounters.length-1)];
|
||||||
|
case 2:
|
||||||
|
return HLraiderEncounters[randomNumber(0, HLraiderEncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return raiderEncounters[randomNumber(0, raiderEncounters.length-1)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
|
export function forcedEncounter(HLE, faction, forcedHLE){
|
||||||
|
var HLEDeterminant = randomNumber(1, 2)
|
||||||
|
if((HLE == true && HLEDeterminant == 1) || forcedHLE == true){
|
||||||
|
switch (faction){
|
||||||
|
case "raider":
|
||||||
|
return HLraiderEncounters[randomNumber(0, HLraiderEncounters.length-1)];
|
||||||
|
case "MWBOS":
|
||||||
|
return HLMWBOSEncounters[randomNumber(0, HLMWBOSEncounters.length-1)];
|
||||||
|
case "BOS":
|
||||||
|
return HLBOSEncounters[randomNumber(0, HLBOSEncounters.length-1)];
|
||||||
|
case "settler":
|
||||||
|
return HLsettlerEncounters[randomNumber(0, HLsettlerEncounters.length-1)];
|
||||||
|
case "abomination":
|
||||||
|
return HLabominationEncounters[randomNumber(0, HLabominationEncounters.length-1)];
|
||||||
|
case "NCR":
|
||||||
|
return HLNCREncounters[randomNumber(0, HLNCREncounters.length-1)];
|
||||||
|
case "legion":
|
||||||
|
return HLlegionEncounters[randomNumber(0, HLlegionEncounters.length-1)];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (faction){
|
||||||
|
case "raider":
|
||||||
|
return raiderEncounters[randomNumber(0, raiderEncounters.length-1)];
|
||||||
|
case "MWBOS":
|
||||||
|
return MWBOSEncounters[randomNumber(0, MWBOSEncounters.length-1)];
|
||||||
|
case "BOS":
|
||||||
|
return BOSEncounters[randomNumber(0, BOSEncounters.length-1)];
|
||||||
|
case "settler":
|
||||||
|
return settlerEncounters[randomNumber(0, settlerEncounters.length-1)];
|
||||||
|
case "abomination":
|
||||||
|
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
||||||
|
case "NCR":
|
||||||
|
return NCREncounters[randomNumber(0, NCREncounters.length-1)];
|
||||||
|
case "legion":
|
||||||
|
return legionEncounters[randomNumber(0, legionEncounters.length-1)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var raiderEncounters = [
|
||||||
|
{name: "Raider Aspirant", faction: "raider", minLevel: 5, maxLevel: 15, damageClass: "B", minDamage: 5, maxDamage: 10}
|
||||||
|
];
|
||||||
|
var HLraiderEncounters = [
|
||||||
|
];
|
||||||
|
var MWBOSEncounters = [
|
||||||
|
{name: "MWBOS Paladin", faction: "MWBOS", minLevel: 40, maxLevel: 65, damageClass: "E", minDamage: 5, maxDamage: 40}
|
||||||
|
];
|
||||||
|
var HLMWBOSEncounters = [
|
||||||
|
];
|
||||||
|
var abominationEncounters = [
|
||||||
|
{name: "Deathclaw", faction: "abomination", minLevel: 50, maxLevel: 100, damageClass: "B", minDamage: 35, maxDamage: 75}
|
||||||
|
];
|
||||||
|
var HLabominationEncounters = [
|
||||||
|
];
|
||||||
|
var NCREncounters = [
|
||||||
|
];
|
||||||
|
var HLNCREncounters = [
|
||||||
|
];
|
||||||
|
var BOSEncounters = [
|
||||||
|
];
|
||||||
|
var HLBOSEncounters = [
|
||||||
|
];
|
||||||
|
var settlerEncounters = [
|
||||||
|
{name: "John Settler", faction: "settler", minLevel: 1, maxLevel: 2, damageClass: "B", minDamage: 1, maxDamage: 2}
|
||||||
|
];
|
||||||
|
var HLsettlerEncounters = [
|
||||||
|
];
|
||||||
|
var legionEncounters = [
|
||||||
|
];
|
||||||
|
var HLlegionEncounters = [
|
||||||
|
];
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
// Program is started from here, runs functions from other files.
|
// Program is started from here, runs functions from other files.
|
||||||
import { userInput, calcLocation, radPointsCalc, healthCapCalc, checkLose, sleep } from './functions.js';
|
import { userInput, calcLocation, radPointsCalc, healthCapCalc, checkLose, sleep, randomNumber } from './functions.js';
|
||||||
import { pois, poiCounter } from './poiscreens.js';
|
import { pois, poiCounter } from './poiscreens.js';
|
||||||
import { name, prewarmoney, variableChange } from './variables.js';
|
import { name, prewarmoney, variableChange } from './variables.js';
|
||||||
|
import { forcedEncounter, naturalEncounter } from './encounters.js';
|
||||||
|
|
||||||
|
|
||||||
console.clear();
|
console.clear();
|
||||||
|
|
@ -13,6 +14,8 @@ console.log(" / / ) / / / ) / / / o / / ) / )
|
||||||
console.log("_/________(___(_/___/___(___/_(___(__(_ __o_____/____/_(___/_/___/_(___ _(__)_(___/_/_/__/_(___ _____/_____|__(___/_(___(_(___/___");
|
console.log("_/________(___(_/___/___(___/_(___(__(_ __o_____/____/_(___/_/___/_(___ _(__)_(___/_/_/__/_(___ _____/_____|__(___/_(___(_(___/___");
|
||||||
console.log("Credits: Bethesda Game Studio \n");
|
console.log("Credits: Bethesda Game Studio \n");
|
||||||
|
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
console.log("What would you like to do?");
|
console.log("What would you like to do?");
|
||||||
console.log("--------------------------");
|
console.log("--------------------------");
|
||||||
console.log("1) Start new game");
|
console.log("1) Start new game");
|
||||||
|
|
@ -34,8 +37,14 @@ switch(mainMenuInput) {
|
||||||
console.log("Quitting Game...");
|
console.log("Quitting Game...");
|
||||||
break;
|
break;
|
||||||
case "4":
|
case "4":
|
||||||
variableChange("name","=","finn");
|
for(var a = 0; a < 10; a++){
|
||||||
console.log(name);
|
var test = naturalEncounter(25);
|
||||||
|
if(test != false){
|
||||||
|
console.log(test.name);
|
||||||
|
} else {
|
||||||
|
console.log("failed encounter");
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue