243 lines
No EOL
13 KiB
JavaScript
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},
|
|
]; |