import { Location, Monster } from "kolmafia"; import { availableMonsters, bofaValue, canAdventureOrUnlock, canWander, DraggableFight, WandererFactoryOptions, WandererTarget, } from "./lib"; function monsterValues( location: Location, options: WandererFactoryOptions, ): Map { const monsters = availableMonsters(location); return new Map( monsters.map((m) => { return [m, bofaValue(options, m)]; }), ); } export function bofaFactory( type: DraggableFight, locationSkiplist: Location[], options: WandererFactoryOptions, ): WandererTarget[] { if (type === "yellow ray" || type === "freefight") { const validLocations = Location.all().filter( (location) => canWander(location, "yellow ray") && canAdventureOrUnlock(location) && !locationSkiplist.includes(location), ); return [...validLocations].map((l: Location) => { return new WandererTarget( `Book of Facts`, l, 0, monsterValues(l, options), ); }); } return []; }