// Holds encounter code, seperate from poiscreens.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 //HLE = high level encounter, this is a filter that determines if the player can get, as the name implies, high level encounters //This function, which is called whenever the player moves, runs a quick calculation to determine if the player encounters //an enemy. If they do encounter an enemy, the function uses the player's location to determine which enemy they encounter. //The farther the player goes, the more likely they are to encounter a high-level enemy. Enemies scale in health and damage with //the player's level. export function naturalEncounter(location){ var HLE = false; var encounter = false; var encounterLuck = randomNumber(1, 100); //Checks if the player gets an encounter, and what enemy pool the encounter comes from. 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"; } } //Draws the enemy/encounter from an array of different possible encounters. 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; } }; //Used for when we need to ensure that the player encounters an enemy somewhere. Also used for combat testing. //Function takes in the faction of the enemy, and if the enemy can be/has to be a high level encounter. 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)]; } } } //A list of arrays with every possible enemy encounter, as well as their stats and equipment. var raiderEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Raider Scavenger", faction: "raider", minLevel: 25, maxLevel: 35, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLraiderEncounters = [ {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, health: 10, weapon: equipmentList[3], armor: equipmentList[10]}, {name: "Raider Boss", faction: "raider", minLevel: 65, maxLevel: 80, health: 10, weapon: equipmentList[3], armor: equipmentList[10]}, ]; var MWBOSEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "MWBOS Knight Captain", faction: "MWBOS", minLevel: 25, maxLevel: 30, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLMWBOSEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "MWBOS Head Paladin", faction: "MWBOS", minLevel: 55, maxLevel: 60, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var abominationEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Radscorpion", faction: "abomination", minLevel: 30, maxLevel: 50, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLabominationEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Deathclaw", faction: "abomination", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var NCREncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "NCR Commander", faction: "NCR", minLevel: 60, maxLevel: 70, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLNCREncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {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 {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLBOSEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "BOS Head Paladin", faction: "BOS", minLevel: 80, maxLevel: 100, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var settlerEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Settler Scavenger", faction: "settler", minLevel: 3, maxLevel: 4, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLsettlerEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Settler Sheriff", faction: "settler", minLevel: 6, maxLevel: 7, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var legionEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Legion Vexillarius", faction: "legion", minLevel: 50, maxLevel: 60, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ]; var HLlegionEncounters = [ {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, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, {name: "Legion Praetorian", faction: "legion", minLevel: 80, maxLevel: 90, health: 10, weapon: equipmentList[2], armor: equipmentList[10]}, ];