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";
|
||||
|
||||
export function calcEncounter() {
|
||||
if (randomNumber(1,100) <= 20) {
|
||||
if (location >= 255) {
|
||||
if (locationA > locationB) {
|
||||
if ((locationA >= 5 && locationA < 17) || (locationA >= 23 && locationA < 40)) {
|
||||
initializeEncounter(NCR,4,true,true,false);
|
||||
}
|
||||
if (locationB >= 40) {
|
||||
initializeEncounter(NCR,5,true,true,false);
|
||||
}
|
||||
} else if (locationA < locationB) {
|
||||
if ((locationB >= 0 && locationB < 30) || (locationB >= 40 && locationB < 80)) {
|
||||
initializeEncounter(abomination,3,true,true,false)
|
||||
}
|
||||
if ((locationB >= 30 && locationB < 40) || (locationB >= 90)) {
|
||||
initializeEncounter(NCR,5,true,true,false)
|
||||
}
|
||||
if (locationB >= 80 && locationB < 90) {
|
||||
initializeEncounter(enclave,4,true,true,false)
|
||||
}
|
||||
} else {
|
||||
if (location >= 5 && location < 50) {
|
||||
initializeEncounter(abomination,1,true,true,false)
|
||||
}
|
||||
if (location >= 50 && location < 200) {
|
||||
initializeEncounter(MWBOS,2,true,true,false)
|
||||
}
|
||||
if (location >= 200 && location < 255) {
|
||||
initializeEncounter(legion,3,true,true,false)
|
||||
//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
|
||||
export function naturalEncounter(location){
|
||||
var HLE = false;
|
||||
var encounter = false;
|
||||
var encounterLuck = randomNumber(1, 100);
|
||||
if(location > 250){
|
||||
HLE = true;
|
||||
}
|
||||
if(0 < location <= 5){
|
||||
encounter = false;
|
||||
} else if(5 < location <= 50){
|
||||
if(1 <= encounterLuck <= 50){
|
||||
encounter = false;
|
||||
} else if(51 <= encounterLuck <= 80){
|
||||
encounter = "abomination";
|
||||
} else if(81 <= encounterLuck <= 90){
|
||||
encounter = "settler";
|
||||
} else if(91 <= encounterLuck <= 100){
|
||||
encounter = "MWBOS";
|
||||
}
|
||||
} else if(50 < location <= 200){
|
||||
if(1 <= encounterLuck <= 50){
|
||||
encounter = false;
|
||||
} else if(51 <= encounterLuck <= 80){
|
||||
encounter = "MWBOS";
|
||||
} else if(81 <= encounterLuck <= 95){
|
||||
encounter = "settler";
|
||||
} 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){
|
||||
switch(diffWeightingEMM){
|
||||
case 1:
|
||||
reqFactionEMM = encounterDiffOne
|
||||
break;
|
||||
case 2:
|
||||
reqFactionEMM = encounterDiffTwo
|
||||
break;
|
||||
case 3:
|
||||
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;
|
||||
if(encounter != false){
|
||||
switch(encounter){
|
||||
case "abomination":
|
||||
faction = 5;
|
||||
break;
|
||||
if(HLE == true){
|
||||
switch(randomNumber(1, 2)){
|
||||
case 1:
|
||||
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
||||
case 2:
|
||||
return HLabominationEncounters[randomNumber(0, HLabominationEncounters.length-1)];
|
||||
}
|
||||
} else {
|
||||
return abominationEncounters[randomNumber(0, abominationEncounters.length-1)];
|
||||
}
|
||||
case "MWBOS":
|
||||
faction = 6;
|
||||
break;
|
||||
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)];
|
||||
}
|
||||
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 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)];
|
||||
}
|
||||
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)])
|
||||
return BOSEncounters[randomNumber(0, BOSEncounters.length-1)];
|
||||
}
|
||||
if (x <=90) {
|
||||
encountered.push(encounterDiffOne[settler][randomNumber(0, encounterDiffOne[settler].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)];
|
||||
}
|
||||
if (x <=100) {
|
||||
encountered.push(encounterDiffOne[abomination][randomNumber(0, encounterDiffOne[abomination].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)];
|
||||
}
|
||||
}
|
||||
if (x < 75) {
|
||||
encountered.push(encounterDiffOne[faction][randomNumber(0, encounterDiffOne[faction].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)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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.
|
||||
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 { name, prewarmoney, variableChange } from './variables.js';
|
||||
import { forcedEncounter, naturalEncounter } from './encounters.js';
|
||||
|
||||
|
||||
console.clear();
|
||||
|
|
@ -13,6 +14,8 @@ console.log(" / / ) / / / ) / / / o / / ) / )
|
|||
console.log("_/________(___(_/___/___(___/_(___(__(_ __o_____/____/_(___/_/___/_(___ _(__)_(___/_/_/__/_(___ _____/_____|__(___/_(___(_(___/___");
|
||||
console.log("Credits: Bethesda Game Studio \n");
|
||||
|
||||
sleep(5);
|
||||
|
||||
console.log("What would you like to do?");
|
||||
console.log("--------------------------");
|
||||
console.log("1) Start new game");
|
||||
|
|
@ -34,8 +37,14 @@ switch(mainMenuInput) {
|
|||
console.log("Quitting Game...");
|
||||
break;
|
||||
case "4":
|
||||
variableChange("name","=","finn");
|
||||
console.log(name);
|
||||
for(var a = 0; a < 10; a++){
|
||||
var test = naturalEncounter(25);
|
||||
if(test != false){
|
||||
console.log(test.name);
|
||||
} else {
|
||||
console.log("failed encounter");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue