Create-Task/files/encounters.js

243 lines
No EOL
13 KiB
JavaScript

// Holds encounter code, seperate from poiscreens.js
import { randomNumber } from "./functions.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
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";
}
}
if(encounter != false){
switch(encounter){
case "abomination":
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":
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: 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}
];
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}
];
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}
];
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}
];
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},
];
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},
];
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}
];
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}
];
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}
];
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}
];
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},
];
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},
];
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},
];
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},
];