diff --git a/index.html b/index.html index 064fa1a..6747e0b 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -MH2 Armor Set Searcher
\ No newline at end of file +MH2 Armor Set Searcher
\ No newline at end of file diff --git a/pages.77de5100.js b/pages.77de5100.js index e56579c..cd8f793 100644 --- a/pages.77de5100.js +++ b/pages.77de5100.js @@ -2039,7 +2039,6 @@ var findSets = function findSets(armorPieces, decorations, charms, constraints, var initialArmorEval = getIntiailArmorEval(constraints.armorType); var wantedScore = scorer_module_1.getScoreFromSkillMap(wantedSkills, wantedSkills) - slotScoreMap.get(constraints.weaponSlots); var decoMinSlotMap = new DecoMinSlotMap_1.default(decorations, wantedSkills); - debugger; var skilledEquipment = armorPieces; skilledEquipment.push(charms); // score equipment @@ -2837,7 +2836,7 @@ var parent = module.bundle.parent; if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') { var hostname = "" || location.hostname; var protocol = location.protocol === 'https:' ? 'wss' : 'ws'; - var ws = new WebSocket(protocol + '://' + hostname + ':' + "55905" + '/'); + var ws = new WebSocket(protocol + '://' + hostname + ':' + "56581" + '/'); ws.onmessage = function (event) { checkedAssets = {}; assetsToAccept = []; diff --git a/pages.77de5100.js.map b/pages.77de5100.js.map index 1823775..dcd2f2b 100644 --- a/pages.77de5100.js.map +++ b/pages.77de5100.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../data-provider/models/equipment/EquipmentSkills.ts","../../data-provider/data-provider.module.ts","../../data-provider/models/equipment/EquipmentCategory.ts","../../data-provider/models/user/UserEquipmentSettings.ts","../../helper/html.helper.ts","../ui/eq-settings.component.ts","../ui/navbar.component.ts","../ui/picker.component.ts","../../scorer/models/ArmorEvaluation.ts","../../searcher/models/ArmorSet.ts","../../data-provider/models/equipment/ArmorType.ts","../../data-filter/data-filter.module.ts","../../scorer/scorer.module.ts","../../scorer/models/DecoEvaluation.ts","../../scorer/models/DecoMinSlotMap.ts","../../searcher/searcher.module.ts","../ui/global-settings.component.ts","../ui/search-results.component.ts","../ui/search-controls.component.ts","index.ts","../../../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","handled","assets","forEach","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","every","generated","js","console","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","log","removeErrorOverlay","error","message","stack","overlay","createErrorOverlay","document","body","appendChild","getElementById","remove","createElement","stackTrace","innerText","innerHTML","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","deps","cached","cache","some","cb"],"mappings":"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","file":"pages.77de5100.js","sourceRoot":"..\\src\\app\\pages","sourcesContent":["import GameID from '../GameId'\r\nimport Skill from '../skills/Skill'\r\n\r\nexport default class EquipmentSkills extends Map {\r\n get (key: GameID): Skill {\r\n return super.get(key) || 0\r\n }\r\n\r\n add (key: GameID, val: Skill) {\r\n this.set(key, val + this.get(key))\r\n }\r\n\r\n addSkills (m: EquipmentSkills) {\r\n for (const [k, v] of m) {\r\n this.add(k, v)\r\n }\r\n }\r\n\r\n substract (key: GameID, val: Skill) {\r\n this.set(key, val + this.get(key))\r\n }\r\n\r\n substractSkills (m: EquipmentSkills) {\r\n for (const [k, v] of m) {\r\n this.substract(k, v)\r\n }\r\n }\r\n\r\n multiply (factor: number) {\r\n for (const [k, v] of this) {\r\n this.set(k, v * factor)\r\n }\r\n }\r\n}\r\n","import ArmorPiece from './models/equipment/ArmorPiece'\r\nimport Decoration from './models/equipment/Decoration'\r\nimport EquipmentSkills from './models/equipment/EquipmentSkills'\r\nimport GameID from './models/GameId'\r\nimport SkillActivation from './models/skills/SkillActivation'\r\nimport SkillActivationMap from './models/skills/SkillActivationMap'\r\nimport Skill from './models/skills/Skill'\r\nimport SkillNameMap from './models/skills/SkillNameMap'\r\n\r\nconst MAX_RARITY = 7\r\n\r\nconst TORSO_UP_ID = 65\r\n\r\nconst DUMMY_PIECE: ArmorPiece = {\r\n name: 'None',\r\n type: -1,\r\n defense: { base: 0, max: 0, maxLr: 0 },\r\n resistance: [0, 0, 0, 0, 0],\r\n category: -1,\r\n slots: 0,\r\n rarity: 0,\r\n skills: new EquipmentSkills(),\r\n isGeneric: true,\r\n}\r\n\r\n/** fetch from data directory */\r\nconst getRawData = async (url: string) => {\r\n return (await fetch(url)).json()\r\n}\r\n\r\n/** fetch and parse generic equipment data */\r\nconst getDataWithTransformedSkillMap = async (url: string): Promise<{skills: EquipmentSkills}[]> => {\r\n const raw = await getRawData(url)\r\n return raw.map((rawX: any) => {\r\n const skillMap: EquipmentSkills = new EquipmentSkills()\r\n for (const x in rawX.skills) {\r\n const skill: Skill = rawX.skills[x]\r\n skillMap.set(parseInt(x), skill)\r\n }\r\n return {\r\n ...rawX,\r\n skills: skillMap,\r\n }\r\n })\r\n}\r\n\r\n/** get a list of all head armor pieces */\r\nconst getHead = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./head.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all chest armor pieces */\r\nconst getChest = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./chest.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all arms armor pieces */\r\nconst getArms = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./arms.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all waist armor pieces */\r\nconst getWaist = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./waist.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all legs armor pieces */\r\nconst getLegs = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./legs.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all decorations */\r\nconst getDecorations = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./decorations.json') as unknown as Decoration[]\r\n}\r\n\r\n/** get a mapping of internal id to name for all skills */\r\nconst getSkillNameMap = async (): Promise => {\r\n const raw = await getRawData('./skill-names.json')\r\n const map: Map = new Map()\r\n for (const id in raw) {\r\n map.set(parseInt(id), raw[id])\r\n }\r\n return map\r\n}\r\n\r\n/** get a list of skill category names, as used in the UI */\r\nconst getSkillCategories = async (): Promise => {\r\n return getRawData('./skill-categories.json')\r\n}\r\n\r\n/** get a mapping of internal id of skill to all activations (positive and negative) of that skill */\r\nconst getSkillActivationMap = async (): Promise => {\r\n const raw = await getRawData('./skills.json')\r\n const map: Map = new Map()\r\n for (const id in raw) {\r\n const parsedId = parseInt(id)\r\n map.set(\r\n parsedId,\r\n raw[id].map((activation: any) => {\r\n return {\r\n ...activation,\r\n requiredSkill: parsedId,\r\n }\r\n }),\r\n )\r\n }\r\n return map\r\n}\r\n\r\nexport {\r\n MAX_RARITY,\r\n TORSO_UP_ID,\r\n DUMMY_PIECE,\r\n getHead,\r\n getChest,\r\n getArms,\r\n getWaist,\r\n getLegs,\r\n getDecorations,\r\n getSkillNameMap,\r\n getSkillCategories,\r\n getSkillActivationMap,\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nenum EquipmentCategory {\r\n HEAD = 0,\r\n CHEST = 1,\r\n ARMS = 2,\r\n WAIST = 3,\r\n LEGS = 4,\r\n CHARM = 5,\r\n WEAPON = 6,\r\n}\r\n\r\nexport default EquipmentCategory\r\n","import EquipmentCategory from '../equipment/EquipmentCategory'\r\nimport EquipmentMin from '../equipment/EquipmentMin'\r\n\r\nexport default class UserEquipmentSettings {\r\n // eslint-disable-next-line no-use-before-define\r\n private static _instance: UserEquipmentSettings\r\n\r\n pins: (EquipmentMin | undefined)[]\r\n\r\n exclusions: EquipmentMin[][]\r\n\r\n isActive: boolean\r\n\r\n private constructor () {\r\n this.pins = []\r\n this.exclusions = []\r\n\r\n const supportedCategoires = [\r\n EquipmentCategory.HEAD,\r\n EquipmentCategory.CHEST,\r\n EquipmentCategory.ARMS,\r\n EquipmentCategory.WAIST,\r\n EquipmentCategory.LEGS,\r\n ]\r\n\r\n supportedCategoires.forEach((_) => {\r\n this.pins.push(undefined)\r\n this.exclusions.push([])\r\n })\r\n\r\n this.isActive = false\r\n }\r\n\r\n public static get Instance () {\r\n return this._instance || (this._instance = new this())\r\n }\r\n\r\n /** pins given equipment to corresponding category */\r\n addPin (x: EquipmentMin): void {\r\n this.pins[x.category] = x\r\n }\r\n\r\n /** removes pin of category */\r\n removePin (cat: EquipmentCategory): void {\r\n this.pins[cat] = undefined\r\n }\r\n\r\n /** adds given equipment to exclusion list of corresponding category */\r\n addExclusion (x: EquipmentMin): void {\r\n this.exclusions[x.category].push(x)\r\n }\r\n\r\n /** removes equipment from exclusion list */\r\n removeExclusion (x: EquipmentMin): void {\r\n const arr = this.exclusions[x.category]\r\n const index = arr.findIndex((y) => y.name === x.name)\r\n this.exclusions[x.category].splice(index, 1)\r\n }\r\n\r\n /** returns true if pin is same as given element */\r\n hasPin (x: EquipmentMin | undefined): boolean {\r\n if (!x) return false\r\n if (x.isGeneric) return false\r\n\r\n const pin = this.pins[x.category]\r\n if (!pin) return false\r\n return pin.name === x.name\r\n }\r\n\r\n /** returns true if piece is already excluded */\r\n hasExclusion (x: EquipmentMin): boolean {\r\n return !!this.exclusions[x.category].find(y => y.name === x.name)\r\n }\r\n\r\n /** serializes settings as json */\r\n serialize (): string {\r\n return JSON.stringify({ pins: this.pins, exclusions: this.exclusions })\r\n }\r\n\r\n /** populate settings from json */\r\n deserialize (raw: string): void {\r\n const parsed = JSON.parse(raw) as {\r\n pins: (EquipmentMin | undefined)[];\r\n exclusions: EquipmentMin[][];\r\n\r\n }\r\n this.pins = parsed.pins\r\n this.exclusions = parsed.exclusions\r\n }\r\n}\r\n","export const htmlToElement = (html: string): Node => {\r\n const template = document.createElement('template')\r\n html = html.trim()\r\n template.innerHTML = html\r\n return template.content.firstChild as Node\r\n}\r\n","import EquipmentCategory from '../../data-provider/models/equipment/EquipmentCategory'\r\nimport UserEquipmentSettings from '../../data-provider/models/user/UserEquipmentSettings'\r\nimport { htmlToElement } from '../../helper/html.helper'\r\nimport EquipmentMin from '../../data-provider/models/equipment/EquipmentMin'\r\n\r\nconst STORAGE_KEY = 'dos-eq-settings'\r\n\r\nconst saveToStorage = () => {\r\n window.localStorage.setItem(\r\n STORAGE_KEY,\r\n UserEquipmentSettings.Instance.serialize(),\r\n )\r\n}\r\n\r\nconst getFromStorage = () => {\r\n return window.localStorage.getItem(STORAGE_KEY)\r\n}\r\n\r\nconst getExclusionElement = (x: EquipmentMin) => {\r\n const root = document.createElement('div')\r\n root.style.textAlign = 'left'\r\n root.setAttribute('data-name', x.name)\r\n root.classList.add('eq-exclusion-ele')\r\n\r\n const content = htmlToElement(`${x.name}`)\r\n const remove = htmlToElement('X') as HTMLSpanElement\r\n remove.addEventListener('click', () => removeExlusion(x))\r\n remove.style.marginRight = '1em'\r\n remove.style.marginLeft = '1em'\r\n remove.style.cursor = 'pointer'\r\n\r\n root.appendChild(remove)\r\n root.appendChild(content)\r\n return root\r\n}\r\n\r\nconst getPinPicker = (cat: EquipmentCategory, eq: EquipmentMin[]) => {\r\n const root = document.createElement('div')\r\n root.style.textAlign = 'left'\r\n\r\n const content = document.createElement('select')\r\n content.setAttribute('id', `eq-${cat}-pin-picker`)\r\n content.style.width = '72%'\r\n for (const x of [{ name: 'None', category: cat }].concat(...eq)) {\r\n content.appendChild(\r\n htmlToElement(``),\r\n )\r\n }\r\n content.addEventListener('change', () => {\r\n addPin({ name: content.value, category: cat })\r\n })\r\n const remove = htmlToElement('X') as HTMLSpanElement\r\n remove.addEventListener('click', () => removePin(eq[0].category))\r\n remove.style.marginRight = '1em'\r\n remove.style.marginLeft = '1em'\r\n remove.style.cursor = 'pointer'\r\n\r\n root.appendChild(remove)\r\n root.appendChild(content)\r\n return root\r\n}\r\n\r\nconst renderColumns = (armor: EquipmentMin[][]) => {\r\n const parent = document.getElementById('eq-container')\r\n for (const item of [\r\n [EquipmentCategory.HEAD, 'Head', armor[0]],\r\n [EquipmentCategory.CHEST, 'Chest', armor[1]],\r\n [EquipmentCategory.ARMS, 'Arms', armor[2]],\r\n [EquipmentCategory.WAIST, 'Waist', armor[3]],\r\n [EquipmentCategory.LEGS, 'Legs', armor[4]],\r\n ]) {\r\n const cat = item[0] as EquipmentCategory\r\n const name = item[1] as string\r\n const eq = item[2] as EquipmentMin[]\r\n\r\n const root = htmlToElement(`
`)\r\n\r\n // pins\r\n const pinHeader = htmlToElement(`
${name} Pinned
`)\r\n const pinContent = htmlToElement('
')\r\n const pinElement = getPinPicker(cat, eq)\r\n pinContent.appendChild(pinElement)\r\n\r\n // exclusions\r\n const exclusionHeader = htmlToElement(`
${name} Excluded
`)\r\n const exclusionContent = htmlToElement(`
`)\r\n\r\n root.appendChild(pinHeader)\r\n root.appendChild(pinContent)\r\n root.appendChild(exclusionHeader)\r\n root.appendChild(exclusionContent)\r\n parent!.appendChild(root)\r\n }\r\n}\r\n\r\nconst _addExclusion = (x: EquipmentMin) => {\r\n const parent = document.getElementById(`eq-${x.category}-exclusion`)\r\n parent!.appendChild(getExclusionElement(x))\r\n}\r\n\r\nexport const removeExlusion = (x: EquipmentMin) => {\r\n const ele = Array.from(document.getElementsByClassName('eq-exclusion-ele')).find((a) => {\r\n const b = a as HTMLElement\r\n return b.getAttribute('data-name') === x.name\r\n }) as HTMLElement\r\n if (!ele) return\r\n\r\n ele.remove()\r\n UserEquipmentSettings.Instance.removeExclusion(x)\r\n saveToStorage()\r\n}\r\n\r\nexport const removePin = (cat: EquipmentCategory) => {\r\n const ele = document.getElementById(`eq-${cat}-pin-picker`) as HTMLSelectElement\r\n UserEquipmentSettings.Instance.removePin(cat)\r\n ele.selectedIndex = 0\r\n saveToStorage()\r\n}\r\n\r\nexport const addExclusion = (x: EquipmentMin) => {\r\n if (UserEquipmentSettings.Instance.hasExclusion(x)) return\r\n UserEquipmentSettings.Instance.addExclusion(x)\r\n _addExclusion(x)\r\n saveToStorage()\r\n}\r\n\r\nexport const addPin = (x: EquipmentMin) => {\r\n if (x.name === 'None') {\r\n UserEquipmentSettings.Instance.removePin(x.category)\r\n saveToStorage()\r\n return\r\n }\r\n\r\n UserEquipmentSettings.Instance.addPin(x)\r\n saveToStorage()\r\n const select = document.getElementById(\r\n `eq-${x.category}-pin-picker`,\r\n ) as HTMLSelectElement\r\n select.value = x.name\r\n}\r\n\r\nexport const renderEqSettings = (armor: EquipmentMin[][]) => {\r\n renderColumns(armor)\r\n\r\n const raw = getFromStorage()\r\n if (raw) UserEquipmentSettings.Instance.deserialize(raw)\r\n\r\n for (const exclusionList of UserEquipmentSettings.Instance.exclusions) {\r\n for (const x of exclusionList) {\r\n _addExclusion(x)\r\n }\r\n }\r\n UserEquipmentSettings.Instance.pins.forEach((x, i) => {\r\n if (x) addPin(x)\r\n else removePin(i)\r\n })\r\n}\r\n","const onMouseEnter = (ele: Element) => {\r\n if (!ele.classList.contains('navbar-selected')) {\r\n ele.classList.add('navbar-hover')\r\n }\r\n}\r\n\r\nconst onMouseLeave = (ele: Element) => {\r\n ele.classList.remove('navbar-hover')\r\n}\r\n\r\nconst onClick = (parent: Element, ele: Element) => {\r\n for (const li of Array.from(parent.children)) {\r\n li.classList.remove('navbar-selected')\r\n li.classList.remove('navbar-hover')\r\n }\r\n ele.classList.add('navbar-selected')\r\n\r\n const selection = ele.getAttribute('data-selection')\r\n const panels = document.getElementsByClassName('panel')\r\n\r\n for (const panel of Array.from(panels)) {\r\n const panelNumber = panel.getAttribute('data-panel-number')\r\n if (selection === panelNumber) {\r\n panel.classList.remove('hidden')\r\n } else {\r\n panel.classList.add('hidden')\r\n }\r\n }\r\n}\r\n\r\n/** initiate navbar state and attaches handlers */\r\nexport const initiateNavbar = () => {\r\n const ul = document.getElementById('navbar-container')!\r\n .children[0] as HTMLElement\r\n\r\n for (const li of Array.from(ul.children)) {\r\n li.addEventListener('mouseenter', () => onMouseEnter(li))\r\n li.addEventListener('mouseleave', () => onMouseLeave(li))\r\n li.addEventListener('click', () => onClick(ul, li))\r\n }\r\n\r\n onClick(ul, ul.children[0])\r\n}\r\n","import SkillActivationMap from '../../data-provider/models/skills/SkillActivationMap'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport { htmlToElement } from '../../helper/html.helper'\r\n\r\nconst getActivationElements = () => {\r\n return Array.from(document.getElementsByClassName('search-picker-activation'))\r\n}\r\n\r\n/** uncheck all selected skill activations */\r\nconst resetSkillActivations = () => {\r\n const activations = getActivationElements()\r\n\r\n activations.forEach((element) => {\r\n const checkbox = element.children[0] as HTMLInputElement\r\n const text = element.children[1] as HTMLElement\r\n\r\n checkbox.checked = false\r\n text.classList.remove('highlighted')\r\n })\r\n}\r\n\r\n/** get list of currently selected skill activations */\r\nconst getSkillActivations = (): SkillActivation[] => {\r\n const activations = getActivationElements()\r\n\r\n return activations\r\n // get only checked skills\r\n .filter((element) => {\r\n const checkbox = element.children[0] as HTMLInputElement\r\n return checkbox.checked\r\n })\r\n // map to proper data model\r\n .map((element) => {\r\n const name = element.textContent!.trim()\r\n const id = parseInt(element.getAttribute('data-id')!)\r\n const requiredSkill = parseInt(element.getAttribute('data-skill')!)\r\n const requiredPoints = parseInt(element.getAttribute('data-points')!)\r\n const category = parseInt(element.parentElement!.getAttribute('data-category')!)\r\n\r\n return {\r\n id,\r\n name,\r\n requiredPoints,\r\n requiredSkill,\r\n isPositive: requiredPoints > 0,\r\n category,\r\n }\r\n })\r\n}\r\n\r\nconst renderCategories = (skillCategories: string[]) => {\r\n for (const index in skillCategories) {\r\n const categoryName = skillCategories[index]\r\n const node = htmlToElement(`\r\n
\r\n
${categoryName}
\r\n
\r\n `)\r\n document.getElementById('search-skill-picker')!.appendChild(node)\r\n }\r\n}\r\n\r\nconst renderActivations = (skillActivation: SkillActivationMap) => {\r\n skillActivation.forEach((activationList) => {\r\n activationList\r\n .filter(activation => activation.isPositive)\r\n .reverse()\r\n .forEach((activation) => {\r\n const node = htmlToElement(`\r\n
\r\n \r\n
${activation.name}
\r\n
\r\n `)\r\n document.getElementById(`search-picker-category-${activation.category}`)!.appendChild(node)\r\n })\r\n })\r\n}\r\n\r\nconst attachClickListener = () => {\r\n const elements = Array.from(document.getElementsByClassName('search-picker-activation'))\r\n for (const item of elements) {\r\n item.addEventListener('click', (event) => {\r\n // tick checkbox\r\n const target = event.target as Element\r\n const input: HTMLInputElement = item.children[0] as HTMLInputElement\r\n if (target.tagName !== 'INPUT') {\r\n input.checked = !input.checked\r\n }\r\n\r\n // add highlight class\r\n const text = item.children[1]\r\n input.checked ? text.classList.add('highlighted') : text.classList.remove('highlighted')\r\n })\r\n }\r\n}\r\n\r\n/** render all components of skillpicker and attach handlers */\r\nconst renderSkillPicker = (\r\n skillActivation: SkillActivationMap,\r\n skillCategories: string[],\r\n) => {\r\n renderCategories(skillCategories)\r\n renderActivations(skillActivation)\r\n attachClickListener()\r\n}\r\n\r\nexport {\r\n renderSkillPicker,\r\n getSkillActivations,\r\n resetSkillActivations,\r\n}\r\n","import { TORSO_UP_ID } from '../../data-provider/data-provider.module'\r\nimport EquipmentCategory from '../../data-provider/models/equipment/EquipmentCategory'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport ScoredSkilledEquipment from './ScoredSkilledEquipment'\r\n\r\nexport default class ArmorEvaluation {\r\n equipment: ScoredSkilledEquipment[]\r\n skills: EquipmentSkills = new EquipmentSkills()\r\n score: number = 0\r\n totalSlots: number = 0\r\n torsoUp: number = 0\r\n\r\n constructor (\r\n equipment: ScoredSkilledEquipment[],\r\n skills?: EquipmentSkills,\r\n score?: number,\r\n totalSlots?: number,\r\n torsoUp?: number,\r\n ) {\r\n this.equipment = equipment\r\n if (skills) this.skills = skills\r\n if (score) this.score = score\r\n if (totalSlots) this.totalSlots = totalSlots\r\n if (torsoUp) this.torsoUp = torsoUp\r\n }\r\n\r\n getSlots () {\r\n return this.equipment\r\n .map(x => x.slots)\r\n .filter(x => x > 0)\r\n }\r\n\r\n getSlotsExceptChest () {\r\n return this.equipment\r\n .filter(x => x.category !== EquipmentCategory.CHEST)\r\n .map(x => x.slots)\r\n .filter(x => x > 0)\r\n }\r\n\r\n copy () {\r\n return new ArmorEvaluation(\r\n this.equipment.map(x => x),\r\n new EquipmentSkills(this.skills),\r\n this.score,\r\n this.totalSlots,\r\n this.torsoUp,\r\n )\r\n }\r\n\r\n addPiece (piece: ScoredSkilledEquipment) {\r\n if (piece.skills.has(TORSO_UP_ID)) this.torsoUp++\r\n else {\r\n if (piece.category === EquipmentCategory.CHEST && this.torsoUp > 0) {\r\n for (const [k, v] of piece.skills) {\r\n this.skills.add(k, v * (this.torsoUp + 1))\r\n }\r\n } else {\r\n this.skills.addSkills(piece.skills)\r\n }\r\n }\r\n this.equipment[piece.category] = piece\r\n this.score = this.score + piece.score\r\n this.totalSlots = this.totalSlots + piece.slots\r\n }\r\n}\r\n","import Defense from '../../data-provider/models/equipment/Defense'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport Resistance from '../../data-provider/models/equipment/Resistance'\r\nimport Evaluation from './Evaluation'\r\nimport ArmorPiece from '../../data-provider/models/equipment/ArmorPiece'\r\nimport Decoration from '../../data-provider/models/equipment/Decoration'\r\nimport Charm from '../../data-provider/models/equipment/Charm'\r\nimport SkillActivationMap from '../../data-provider/models/skills/SkillActivationMap'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport ArmorEvaluation from '../../scorer/models/ArmorEvaluation'\r\nimport DecoEvaluation from '../../scorer/models/DecoEvaluation'\r\nimport EquipmentCategory from '../../data-provider/models/equipment/EquipmentCategory'\r\n\r\nexport default class ArmorSet {\r\n readonly head: ArmorPiece\r\n readonly chest: ArmorPiece\r\n readonly arms: ArmorPiece\r\n readonly waist: ArmorPiece\r\n readonly legs: ArmorPiece\r\n readonly charm: Charm\r\n readonly decos: Decoration[]\r\n\r\n evaluation: Evaluation\r\n\r\n constructor (\r\n armorEval: ArmorEvaluation,\r\n decoEval: DecoEvaluation,\r\n skillActivations: SkillActivationMap,\r\n ) {\r\n const chest = armorEval.equipment[EquipmentCategory.CHEST] as unknown as ArmorPiece\r\n\r\n this.chest = armorEval.torsoUp > 0 ? ArmorSet.applyTorsoUpToChest(chest, armorEval.torsoUp) : chest\r\n this.head = armorEval.equipment[EquipmentCategory.HEAD] as unknown as ArmorPiece\r\n this.arms = armorEval.equipment[EquipmentCategory.ARMS] as unknown as ArmorPiece\r\n this.waist = armorEval.equipment[EquipmentCategory.WAIST] as unknown as ArmorPiece\r\n this.legs = armorEval.equipment[EquipmentCategory.LEGS] as unknown as ArmorPiece\r\n this.charm = armorEval.equipment[EquipmentCategory.CHARM] as unknown as Charm\r\n this.decos = decoEval.decos\r\n this.evaluation = this.evaluate(armorEval, decoEval, skillActivations)\r\n }\r\n\r\n private static applyTorsoUpToChest (chest: ArmorPiece, torsoUp: number): ArmorPiece {\r\n const newSkills = new EquipmentSkills(chest.skills)\r\n newSkills.multiply(torsoUp + 1)\r\n return {\r\n ...chest,\r\n skills: newSkills,\r\n }\r\n }\r\n\r\n getPieces (): ArmorPiece[] {\r\n return [\r\n this.head,\r\n this.chest,\r\n this.arms,\r\n this.waist,\r\n this.legs,\r\n ]\r\n }\r\n\r\n evaluate (\r\n armorEval: ArmorEvaluation,\r\n decoEval: DecoEvaluation,\r\n activations: SkillActivationMap,\r\n ): Evaluation {\r\n const totalDefense: Defense = { base: 0, max: 0 }\r\n let totalResistance: Resistance = [0, 0, 0, 0, 0]\r\n\r\n // iterate over all armor pieces\r\n for (const piece of this.getPieces()) {\r\n totalDefense.base += piece.defense.base\r\n totalDefense.max += piece.defense.max\r\n totalResistance = piece.resistance.map((res, i) => res + totalResistance[i])\r\n }\r\n\r\n // get total skills\r\n const decoSkills = new EquipmentSkills()\r\n decoEval.decos.forEach(d => decoSkills.addSkills(d.skills))\r\n const skills = new EquipmentSkills(armorEval.skills)\r\n skills.addSkills(new EquipmentSkills(decoSkills))\r\n\r\n // get activations\r\n const a: SkillActivation[] = []\r\n for (const [sId, sVal] of skills) {\r\n if (Math.abs(sVal) < 10) {\r\n continue\r\n }\r\n\r\n const activationsOfSkill = activations.get(sId)!\r\n .filter(act => {\r\n return act.isPositive\r\n ? sVal >= act.requiredPoints\r\n : sVal <= act.requiredPoints\r\n })\r\n a.push(...activationsOfSkill)\r\n }\r\n\r\n // build, save and return model\r\n const thisEval: Evaluation = {\r\n defense: totalDefense,\r\n resistance: totalResistance,\r\n activations: a,\r\n skills,\r\n torsoUp: armorEval.torsoUp,\r\n }\r\n this.evaluation = thisEval\r\n return thisEval\r\n }\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nenum ArmorType {\r\n ALL = 0,\r\n BLADEMASTER = 1,\r\n GUNNER = 2,\r\n}\r\n\r\nexport default ArmorType\r\n","import { DUMMY_PIECE, MAX_RARITY, TORSO_UP_ID } from '../data-provider/data-provider.module'\r\nimport ArmorPiece from '../data-provider/models/equipment/ArmorPiece'\r\nimport ArmorType from '../data-provider/models/equipment/ArmorType'\r\nimport Charm from '../data-provider/models/equipment/Charm'\r\nimport EquipmentCategory from '../data-provider/models/equipment/EquipmentCategory'\r\nimport EquipmentMin from '../data-provider/models/equipment/EquipmentMin'\r\nimport EquipmentSkills from '../data-provider/models/equipment/EquipmentSkills'\r\nimport Rarity from '../data-provider/models/equipment/Rarity'\r\nimport SkilledItem from '../data-provider/models/equipment/SkilledItem'\r\nimport Slots from '../data-provider/models/equipment/Slots'\r\nimport SkillActivation from '../data-provider/models/skills/SkillActivation'\r\n\r\nconst filterType = (piece: ArmorPiece, type: ArmorType) => {\r\n return piece.type === ArmorType.ALL || piece.type === type\r\n}\r\n\r\nconst filterExclusions = (piece: ArmorPiece, exclusionNames: string[]) => {\r\n return !exclusionNames.includes(piece.name)\r\n}\r\n\r\nconst filterRarity = (item: SkilledItem, rarity: Rarity) => {\r\n return item.rarity <= rarity\r\n}\r\n\r\nconst filterHasSkill = (item: SkilledItem, desiredSkills: SkillActivation[]) => {\r\n return desiredSkills.some((act) => {\r\n const s = item.skills.get(act.requiredSkill)\r\n return s && s > 0\r\n })\r\n}\r\n\r\nconst applyRarityFilter = (items: SkilledItem[], rarity: Rarity) => {\r\n if (rarity === MAX_RARITY) return items\r\n return items.filter(x => filterRarity(x, rarity))\r\n}\r\n\r\nconst applyCharmFilter = (charms: Charm[], skills: SkillActivation[]) => {\r\n // find generic slot charms\r\n const genericSlotCharms: Charm[] = []\r\n for (const slots of [3, 2, 1]) {\r\n const x = charms.find(c => c.slots === slots)\r\n if (x) {\r\n const newC: Charm = {\r\n name: `${slots} Slot Charm`,\r\n slots: slots as Slots,\r\n category: EquipmentCategory.CHARM,\r\n rarity: 0,\r\n skills: new EquipmentSkills(),\r\n }\r\n genericSlotCharms.push(newC)\r\n }\r\n }\r\n\r\n // build list of charms with wanted skills or with slots\r\n const result = charms\r\n .filter(x => filterHasSkill(x, skills))\r\n .concat(...genericSlotCharms)\r\n\r\n // return list with dummy charm if there are no pieces\r\n if (result.length === 0) {\r\n return [{\r\n ...DUMMY_PIECE,\r\n category: EquipmentCategory.CHARM,\r\n }]\r\n }\r\n\r\n return result\r\n}\r\n\r\nconst applyArmorFilter = (\r\n pieces: ArmorPiece[],\r\n rarity: Rarity,\r\n type: ArmorType,\r\n category: EquipmentCategory,\r\n pin: EquipmentMin | undefined,\r\n exclusions: EquipmentMin[],\r\n skills: SkillActivation[],\r\n) => {\r\n if (pin) return [pieces.find(x => x.name === pin.name)!]\r\n\r\n const excludedNames = exclusions.map(e => e.name)\r\n\r\n const rarityFiltered = applyRarityFilter(pieces, rarity) as ArmorPiece[]\r\n const typeFiltered = rarityFiltered.filter(p => filterType(p, type))\r\n const exclusionFiltered = typeFiltered.filter(p => filterExclusions(p, excludedNames))\r\n const sorted = exclusionFiltered.sort((a, b) => b.defense.max - a.defense.max)\r\n\r\n // find generic slot pieces with highest defense\r\n const genericSlotPieces: ArmorPiece[] = []\r\n for (const slots of [3, 2, 1]) {\r\n const x = sorted.find(p => p.slots === slots)\r\n if (x) {\r\n const p: ArmorPiece = {\r\n type: x.type,\r\n defense: x.defense,\r\n resistance: x.resistance,\r\n name: `${slots} Slot Piece`,\r\n slots: slots as Slots,\r\n category: x.category,\r\n rarity: x.rarity,\r\n skills: new EquipmentSkills(),\r\n isGeneric: true,\r\n }\r\n if (filterExclusions(p, excludedNames)) genericSlotPieces.push(p)\r\n }\r\n }\r\n\r\n // find piece with torso up with highest defense\r\n const torsoUpPieces: ArmorPiece[] = [sorted.find(p => p.skills.has(TORSO_UP_ID))]\r\n .filter(x => x !== undefined)\r\n .map(x => {\r\n const renamed: ArmorPiece = {\r\n ...x!,\r\n name: 'Torso Up Piece',\r\n isGeneric: true,\r\n }\r\n return renamed\r\n })\r\n .filter(x => filterExclusions(x, excludedNames)) as ArmorPiece[]\r\n\r\n // build list of pieces with wanted skills, with slots, or with torso up\r\n const result = sorted\r\n .filter(x => filterHasSkill(x, skills))\r\n .concat(...genericSlotPieces)\r\n .concat(...torsoUpPieces)\r\n\r\n // return list with dummy element if there are no pieces\r\n if (result.length === 0) {\r\n return [{\r\n ...DUMMY_PIECE,\r\n type,\r\n category,\r\n }]\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport {\r\n filterType,\r\n filterRarity,\r\n filterHasSkill,\r\n applyRarityFilter,\r\n applyCharmFilter,\r\n applyArmorFilter,\r\n}\r\n","import { TORSO_UP_ID } from '../data-provider/data-provider.module'\r\nimport Decoration from '../data-provider/models/equipment/Decoration'\r\nimport EquipmentSkills from '../data-provider/models/equipment/EquipmentSkills'\r\nimport Slots from '../data-provider/models/equipment/Slots'\r\nimport DecoPermutation from './models/DecoPermutation'\r\nimport ScoredSkilledEquipment from './models/ScoredSkilledEquipment'\r\n\r\n/** get score of a skill map relative to wanted skills */\r\nconst getScoreFromSkillMap = (m: EquipmentSkills, w: EquipmentSkills): number => {\r\n let score = 0\r\n for (const [sId] of w) {\r\n score += m.get(sId) || 0\r\n }\r\n\r\n return score\r\n}\r\n\r\nconst scoreTorsoUpPieces = (piece: ScoredSkilledEquipment, maxTorsoScore: number) => {\r\n if (piece.skills.has(TORSO_UP_ID)) {\r\n const newPiece: ScoredSkilledEquipment = {\r\n ...piece,\r\n score: maxTorsoScore,\r\n }\r\n\r\n return newPiece\r\n }\r\n\r\n return piece\r\n}\r\n\r\n/** apply score to a list of decos */\r\nconst evaluateListOfDecos = (decos: Decoration[], wantedSkills: EquipmentSkills): DecoPermutation => {\r\n const skillMap: EquipmentSkills = new EquipmentSkills()\r\n decos.forEach(deco => skillMap.addSkills(deco.skills))\r\n\r\n const score = getScoreFromSkillMap(skillMap, wantedSkills)\r\n\r\n return {\r\n skills: skillMap,\r\n decos,\r\n score,\r\n }\r\n}\r\n\r\n/**\r\n * checks if deco permutation is the same or better than comparison in respect to wanted skills\r\n * returns 0 if better/different, returns 1 if same, returns 2 if worse\r\n */\r\nconst decoPermWorseOrSameAsComparison = (perm: DecoPermutation, comparison: DecoPermutation, wantedSkills: EquipmentSkills) => {\r\n const arr = []\r\n for (const w of Array.from(wantedSkills.entries())) {\r\n const wId = w[0]\r\n const a = perm.skills.get(wId)\r\n const b = comparison.skills.get(wId)\r\n\r\n if (a > b) return 0\r\n if (a === b) arr.push(1)\r\n else arr.push(2)\r\n }\r\n return Math.max(...arr)\r\n}\r\n\r\n/** returns a mapping of slot level to the amount of score it is worth */\r\nconst getDecoSlotScoreMap = (decoPermutationsPerSlotLevel: Map): Map => {\r\n const m = new Map(Array.from(decoPermutationsPerSlotLevel.entries()).map(([slotLevel, permList]) => {\r\n return [slotLevel, Math.max(...permList.map(x => x.score))]\r\n }))\r\n m.set(0, 0)\r\n\r\n return m\r\n}\r\n\r\n/** prune a list of deco permutations of all duplicates and downgrades */\r\nconst pruneDecoPermutations = (permList: DecoPermutation[], wantedSkills: EquipmentSkills): DecoPermutation[] => {\r\n // we go through entire list left through right => x\r\n // for each ele, we check the entire list again => y\r\n // if y is an upgrade of x, then x will be filtered out\r\n // if y is the same as x, and y is further right in the list, then x will be filtered\r\n // only if x has no upgrade, and no element right of it that is the same will it remain in the list\r\n const res = permList\r\n .filter((x, i) => {\r\n let shouldBeFiltered: boolean = false\r\n\r\n for (let j = 0; j < permList.length; j++) {\r\n if (i === j) continue\r\n\r\n const y = permList[j]\r\n const v = decoPermWorseOrSameAsComparison(x, y, wantedSkills)\r\n\r\n if (v === 2) {\r\n shouldBeFiltered = true\r\n break\r\n }\r\n\r\n if (j > i && v === 1) {\r\n shouldBeFiltered = true\r\n break\r\n }\r\n }\r\n\r\n return !shouldBeFiltered\r\n })\r\n\r\n return res\r\n}\r\n\r\nexport {\r\n getScoreFromSkillMap,\r\n scoreTorsoUpPieces,\r\n evaluateListOfDecos,\r\n decoPermWorseOrSameAsComparison,\r\n getDecoSlotScoreMap,\r\n pruneDecoPermutations,\r\n}\r\n","import Decoration from '../../data-provider/models/equipment/Decoration'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport Slots from '../../data-provider/models/equipment/Slots'\r\nimport DecoMinSlotMap from './DecoMinSlotMap'\r\nimport DecoPermutation from './DecoPermutation'\r\n\r\nexport default class DecoEvaluation {\r\n decoMinSlotMap: DecoMinSlotMap\r\n unusedSlotsSum: number\r\n missingSkills: EquipmentSkills\r\n decos: Decoration[] = []\r\n requiredSlots: number = 0\r\n\r\n constructor (\r\n decoMinSlotMap: DecoMinSlotMap,\r\n unusedSlotsSum: number,\r\n missingSkills: EquipmentSkills,\r\n decos?: Decoration[],\r\n requiredSlots?: number,\r\n ) {\r\n this.decoMinSlotMap = decoMinSlotMap\r\n this.unusedSlotsSum = unusedSlotsSum\r\n this.missingSkills = missingSkills\r\n if (decos) this.decos = decos\r\n this.requiredSlots = requiredSlots || this.calculateRequiredSlots()\r\n }\r\n\r\n copy () {\r\n return new DecoEvaluation(\r\n this.decoMinSlotMap,\r\n this.unusedSlotsSum,\r\n new EquipmentSkills(this.missingSkills),\r\n this.decos.map(x => x),\r\n this.requiredSlots,\r\n )\r\n }\r\n\r\n calculateRequiredSlots (): number {\r\n let newRequiredSlots: number = 0\r\n for (const w of this.missingSkills) {\r\n const sId = w[0]\r\n const sVal = w[1]\r\n newRequiredSlots += this.decoMinSlotMap.getMinRequiredSlotsForSkill(sId, sVal)\r\n }\r\n this.requiredSlots = newRequiredSlots\r\n return newRequiredSlots\r\n }\r\n\r\n addPerm (perm: DecoPermutation, slotLevel: Slots) {\r\n this.unusedSlotsSum -= slotLevel\r\n this.decos.push(...perm.decos)\r\n\r\n // use custom loop instead of EquipmentSkills.substractSkills and DecoEvaluation.calculateRequiredSlots\r\n // to save on processing because this method is called a lot\r\n let newRequiredSlots: number = 0\r\n for (const w of this.missingSkills) {\r\n const sId = w[0]\r\n const sVal = w[1]\r\n\r\n const newVal = sVal - perm.skills.get(sId)\r\n this.missingSkills.set(sId, newVal)\r\n newRequiredSlots += this.decoMinSlotMap.getMinRequiredSlotsForSkill(sId, newVal)\r\n }\r\n\r\n this.requiredSlots = newRequiredSlots\r\n }\r\n}\r\n","import Decoration from '../../data-provider/models/equipment/Decoration'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport GameID from '../../data-provider/models/GameId'\r\n\r\nfunction * decoVariationMinSlotsGenerator (\r\n decosOfSkill: Decoration[],\r\n skillId: GameID,\r\n requiredPoints: number,\r\n requiredSlots: number,\r\n existingPoints: number,\r\n): Generator {\r\n for (const deco of decosOfSkill) {\r\n const newExistingPoints = existingPoints + deco.skills.get(skillId)!\r\n const newRequiredSlots = requiredSlots + deco.requiredSlots\r\n\r\n if (newExistingPoints >= requiredPoints) {\r\n yield newRequiredSlots\r\n } else {\r\n yield * decoVariationMinSlotsGenerator(\r\n decosOfSkill,\r\n skillId,\r\n requiredPoints,\r\n newRequiredSlots,\r\n newExistingPoints,\r\n )\r\n }\r\n }\r\n}\r\n\r\n/** calculates and saves how many slots are required to get x points of a certain skill */\r\nexport default class DecoMinSlotMap {\r\n private static readonly DUMMY_SCORE = 1000\r\n\r\n private decorationsOfSkillMap: Map = new Map()\r\n private calculations: Map> = new Map()\r\n\r\n constructor (allDecos: Decoration[], wantedSkills: EquipmentSkills) {\r\n for (const w of wantedSkills) {\r\n const sId = w[0]\r\n\r\n // set decorations of skill\r\n const decosOfSkill = allDecos\r\n .filter(x => x.skills.get(sId) > 0)\r\n .sort((a, b) => b.skills.get(sId) - a.skills.get(sId))\r\n this.decorationsOfSkillMap.set(sId, decosOfSkill)\r\n\r\n // init calculation map of that skill\r\n this.calculations.set(sId, new Map())\r\n }\r\n }\r\n\r\n private calculateMinRequiredSlots (skillId: GameID, skillPoints: number): number {\r\n const decosOfSkill = this.decorationsOfSkillMap.get(skillId)!\r\n if (decosOfSkill.length === 0) return DecoMinSlotMap.DUMMY_SCORE\r\n\r\n let minRequiredSlots = DecoMinSlotMap.DUMMY_SCORE\r\n for (const reqSlots of decoVariationMinSlotsGenerator(decosOfSkill, skillId, skillPoints, 0, 0)) {\r\n if (reqSlots < minRequiredSlots) minRequiredSlots = reqSlots\r\n }\r\n\r\n return minRequiredSlots\r\n }\r\n\r\n getMinRequiredSlotsForSkill (skillId: GameID, skillPoints: number): number {\r\n const m = this.calculations.get(skillId)!\r\n\r\n if (skillPoints <= 0) return 0\r\n if (m.has(skillPoints)) return m.get(skillPoints)!\r\n\r\n const newCalc = this.calculateMinRequiredSlots(skillId, skillPoints)\r\n m.set(skillPoints, newCalc)\r\n return newCalc\r\n }\r\n}\r\n","import { DUMMY_PIECE } from '../data-provider/data-provider.module'\r\nimport ArmorPiece from '../data-provider/models/equipment/ArmorPiece'\r\nimport ArmorType from '../data-provider/models/equipment/ArmorType'\r\nimport Charm from '../data-provider/models/equipment/Charm'\r\nimport Decoration from '../data-provider/models/equipment/Decoration'\r\nimport EquipmentCategory from '../data-provider/models/equipment/EquipmentCategory'\r\nimport EquipmentSkills from '../data-provider/models/equipment/EquipmentSkills'\r\nimport SkilledEquipment from '../data-provider/models/equipment/SkilledEquipment'\r\nimport Slots from '../data-provider/models/equipment/Slots'\r\nimport StaticSkillData from '../data-provider/models/skills/StaticSkillData'\r\nimport ArmorEvaluation from '../scorer/models/ArmorEvaluation'\r\nimport ArmorSet from './models/ArmorSet'\r\nimport DecoPermutation from '../scorer/models/DecoPermutation'\r\nimport SearchConstraints from './models/SearchConstraints'\r\nimport ScoredSkilledEquipment from '../scorer/models/ScoredSkilledEquipment'\r\nimport { applyArmorFilter, applyCharmFilter, applyRarityFilter, filterHasSkill } from '../data-filter/data-filter.module'\r\nimport { pruneDecoPermutations, evaluateListOfDecos, getDecoSlotScoreMap, getScoreFromSkillMap, scoreTorsoUpPieces } from '../scorer/scorer.module'\r\nimport DecoEvaluation from '../scorer/models/DecoEvaluation'\r\nimport DecoMinSlotMap from '../scorer/models/DecoMinSlotMap'\r\n\r\n// #region initial search data\r\n/** get initial armor eval with all dummy pieces */\r\nconst getIntiailArmorEval = (type: ArmorType) => {\r\n const categoryArray = [\r\n EquipmentCategory.HEAD,\r\n EquipmentCategory.CHEST,\r\n EquipmentCategory.ARMS,\r\n EquipmentCategory.WAIST,\r\n EquipmentCategory.LEGS,\r\n EquipmentCategory.CHARM,\r\n ]\r\n\r\n const pieces: ScoredSkilledEquipment[] = categoryArray.map((x) => {\r\n return {\r\n ...DUMMY_PIECE,\r\n type,\r\n category: x,\r\n score: 0,\r\n }\r\n })\r\n\r\n return new ArmorEvaluation(pieces)\r\n}\r\n\r\n/** returns all the ways you can possibly arrange the viable decorations on a given slot level (1, 2, 3) */\r\nconst getDecorationVariationsPerSlotLevel = (\r\n decorations: Decoration[],\r\n wantedSkills: EquipmentSkills,\r\n): Map => {\r\n // get all decorations of specific slot\r\n const rawOneSlots = decorations.filter(d => d.requiredSlots === 1)\r\n const rawTwoSlots = decorations.filter(d => d.requiredSlots === 2)\r\n const rawThreeSlots = decorations.filter(d => d.requiredSlots === 3)\r\n\r\n // create dummy for unused slots\r\n const dummy: Decoration = {\r\n name: 'None',\r\n rarity: 0,\r\n requiredSlots: 0,\r\n skills: new EquipmentSkills(),\r\n }\r\n\r\n // get all variations for 1 slot\r\n const oneSlotVariations = rawOneSlots.map(x => [x]).concat([[dummy]])\r\n const oneSlotEvaluated = pruneDecoPermutations(oneSlotVariations.map(x => evaluateListOfDecos(x, wantedSkills)), wantedSkills)\r\n const prunedOneSlotVariations = oneSlotEvaluated.map(x => x.decos)\r\n\r\n // get all variations for 2 slots\r\n const twoOneSlotDecoVariations = []\r\n for (let i = 0; i < prunedOneSlotVariations.length; i++) {\r\n const x = prunedOneSlotVariations[i]\r\n for (let j = Math.abs(i); j < prunedOneSlotVariations.length; j++) {\r\n const y = prunedOneSlotVariations[j]\r\n twoOneSlotDecoVariations.push(x.concat(y))\r\n }\r\n }\r\n const twoSlotVariations = rawTwoSlots\r\n .map(x => [x])\r\n .concat(twoOneSlotDecoVariations)\r\n const twoSlotEvaluated = pruneDecoPermutations(twoSlotVariations.map(x => evaluateListOfDecos(x, wantedSkills)), wantedSkills)\r\n\r\n // get all variations for 3 slots\r\n const threeOneSlotDecoVariations = []\r\n for (let i = 0; i < prunedOneSlotVariations.length; i++) {\r\n const x = prunedOneSlotVariations[i]\r\n for (let j = Math.abs(i); j < twoOneSlotDecoVariations.length; j++) {\r\n const y = twoOneSlotDecoVariations[j]\r\n threeOneSlotDecoVariations.push(x.concat(y))\r\n }\r\n }\r\n const oneAndTwoSlotDecoVariations = []\r\n for (const oneSlot of rawOneSlots) {\r\n for (const twoSlot of rawTwoSlots) {\r\n oneAndTwoSlotDecoVariations.push([oneSlot, twoSlot])\r\n }\r\n }\r\n const threeSlotVariations = rawThreeSlots\r\n .map(x => [x])\r\n .concat(oneAndTwoSlotDecoVariations)\r\n .concat(threeOneSlotDecoVariations)\r\n const threeSlotEvaluated = pruneDecoPermutations(threeSlotVariations.map(x => evaluateListOfDecos(x, wantedSkills)), wantedSkills)\r\n\r\n // return pruned evaluations\r\n return new Map([\r\n [0, []],\r\n [1, oneSlotEvaluated],\r\n [2, twoSlotEvaluated],\r\n [3, threeSlotEvaluated],\r\n ])\r\n}\r\n// #endregion\r\n\r\n// #region search logic\r\nfunction * getArmorPermutations (\r\n equipment: ScoredSkilledEquipment[][],\r\n previousEval: ArmorEvaluation,\r\n maximumRemainingScore: number[],\r\n requiredScore: number,\r\n categoryIndex: number,\r\n): Generator {\r\n for (const piece of equipment[categoryIndex]) {\r\n // create and eval new set\r\n const thisEval = previousEval.copy()\r\n thisEval.addPiece(piece)\r\n\r\n // yield it if score is sufficient\r\n if (thisEval.score >= requiredScore) yield thisEval\r\n // otherwise check if its possible to still find sets on this branch and break if not\r\n else {\r\n if ((thisEval.score + maximumRemainingScore[categoryIndex]) < requiredScore) break\r\n }\r\n\r\n // then yield the next loop if there is one\r\n if (categoryIndex > 0) {\r\n yield * getArmorPermutations(\r\n equipment,\r\n thisEval,\r\n maximumRemainingScore,\r\n requiredScore,\r\n categoryIndex - 1,\r\n )\r\n }\r\n }\r\n}\r\n\r\nfunction * getDecoPermutations (\r\n decoPermutationsPerSlotLevel: Map,\r\n slotsOfArmor: Slots[],\r\n previousEval: DecoEvaluation,\r\n slotIndex: number,\r\n): Generator {\r\n const slotLevel = slotsOfArmor[slotIndex]\r\n for (const perm of decoPermutationsPerSlotLevel.get(slotLevel)!) {\r\n // create and eval new set\r\n const thisEval = previousEval.copy()\r\n thisEval.addPerm(perm, slotLevel)\r\n\r\n // yield it if score is sufficient\r\n if (thisEval.requiredSlots <= 0) yield thisEval\r\n // otherwise check if its possible to still find sets on this branch and break if not\r\n else {\r\n if (thisEval.unusedSlotsSum < thisEval.requiredSlots) continue\r\n }\r\n\r\n // then yield the next loop if there is one\r\n if (slotIndex > 0) {\r\n yield * getDecoPermutations(\r\n decoPermutationsPerSlotLevel,\r\n slotsOfArmor,\r\n thisEval,\r\n slotIndex - 1,\r\n )\r\n }\r\n }\r\n}\r\n\r\nconst transformTorsoUpDecoPermutation = (perm: DecoPermutation, torsoUp: number): DecoPermutation => {\r\n const factor = torsoUp + 1\r\n\r\n const score = perm.score * factor\r\n const decos = perm.decos.map(d => {\r\n const newSkills = new EquipmentSkills(d.skills)\r\n newSkills.multiply(factor)\r\n const newDeco: Decoration = {\r\n ...d,\r\n affectedByTorsoUp: true,\r\n name: d.name.concat(' (TorsoUp)'),\r\n skills: newSkills,\r\n }\r\n\r\n return newDeco\r\n })\r\n const newTotalSkills = new EquipmentSkills(perm.skills)\r\n newTotalSkills.multiply(factor)\r\n const skills = newTotalSkills\r\n\r\n return {\r\n score,\r\n decos,\r\n skills,\r\n }\r\n}\r\n\r\nconst findSufficientDecoPermutation = (\r\n armorEval: ArmorEvaluation,\r\n constraints: SearchConstraints,\r\n wantedSkills: EquipmentSkills,\r\n decoMinSlotMap: DecoMinSlotMap,\r\n decoPermutationsPerSlotLevel: Map,\r\n): DecoEvaluation | undefined => {\r\n const _inner = (\r\n _slotList: Slots[],\r\n _initialEval: DecoEvaluation,\r\n ): DecoEvaluation | undefined => {\r\n if (_initialEval.requiredSlots <= 0) return _initialEval\r\n if (_initialEval.unusedSlotsSum < _initialEval.requiredSlots) return undefined\r\n if (_slotList.length === 0) return undefined\r\n\r\n const decoEvaluation = getDecoPermutations(\r\n decoPermutationsPerSlotLevel,\r\n _slotList,\r\n _initialEval,\r\n _slotList.length - 1,\r\n ).next().value\r\n\r\n if (decoEvaluation) return decoEvaluation\r\n return undefined\r\n }\r\n\r\n let r: DecoEvaluation | undefined\r\n const torsoSlots = armorEval.equipment[EquipmentCategory.CHEST].slots\r\n const missingSkills = new EquipmentSkills(Array.from(wantedSkills).map(([sId, sVal]) => {\r\n return [sId, sVal - armorEval.skills.get(sId)]\r\n }))\r\n const slotSum = armorEval.totalSlots + constraints.weaponSlots\r\n\r\n if (armorEval.torsoUp > 0 && torsoSlots > 0) {\r\n // if torso up, fill the chest slots and then iterate over permutations from there\r\n const slotList = armorEval.getSlotsExceptChest().concat(constraints.weaponSlots ? constraints.weaponSlots : [])\r\n const slotSumWithoutTorso = slotSum - torsoSlots\r\n const initialEval = new DecoEvaluation(decoMinSlotMap, slotSumWithoutTorso, missingSkills)\r\n for (const chestPerm of decoPermutationsPerSlotLevel.get(torsoSlots)!) {\r\n const transformedPerm = transformTorsoUpDecoPermutation(chestPerm, armorEval.torsoUp)\r\n const copiedEval = initialEval.copy()\r\n copiedEval.addPerm(transformedPerm, torsoSlots)\r\n const temp = _inner(slotList, copiedEval)\r\n if (temp) {\r\n r = temp\r\n break\r\n }\r\n }\r\n } else {\r\n // otherwise just iterate over permutations\r\n const slotList = armorEval.getSlots().concat(constraints.weaponSlots ? constraints.weaponSlots : [])\r\n r = _inner(slotList, new DecoEvaluation(decoMinSlotMap, armorEval.totalSlots + constraints.weaponSlots, missingSkills))\r\n }\r\n\r\n return r\r\n}\r\n\r\nconst findSets = (\r\n armorPieces: ArmorPiece[][],\r\n decorations: Decoration[],\r\n charms: Charm[],\r\n constraints: SearchConstraints,\r\n skillData: StaticSkillData,\r\n) => {\r\n const wantedSkills: EquipmentSkills = new EquipmentSkills(constraints.skillActivations.map(x => [x.requiredSkill, x.requiredPoints]))\r\n const decoPermutationsPerSlotLevel = getDecorationVariationsPerSlotLevel(decorations, wantedSkills)\r\n const slotScoreMap = getDecoSlotScoreMap(decoPermutationsPerSlotLevel)\r\n const initialArmorEval = getIntiailArmorEval(constraints.armorType)\r\n const wantedScore = getScoreFromSkillMap(wantedSkills, wantedSkills) - slotScoreMap.get(constraints.weaponSlots)!\r\n const decoMinSlotMap = new DecoMinSlotMap(decorations, wantedSkills)\r\n\r\n debugger\r\n\r\n const skilledEquipment: SkilledEquipment[][] = armorPieces\r\n skilledEquipment.push(charms)\r\n\r\n // score equipment\r\n const scoredEquipment: ScoredSkilledEquipment[][] = skilledEquipment\r\n .map(equList => equList.map((equ) => {\r\n const score = slotScoreMap.get(equ.slots)! + getScoreFromSkillMap(equ.skills, wantedSkills)\r\n return {\r\n ...equ,\r\n score,\r\n }\r\n }))\r\n\r\n // reorder equipment and manually rescore torso up pieces\r\n const maxTorsoScore = Math.max(...scoredEquipment[1].map(x => x.score))\r\n const readjustedEquipment = [\r\n scoredEquipment[1], // chest first to simplify torso up calculation\r\n scoredEquipment[0].map(x => scoreTorsoUpPieces(x, maxTorsoScore)),\r\n scoredEquipment[2], // arms cant have torso up\r\n scoredEquipment[3].map(x => scoreTorsoUpPieces(x, maxTorsoScore)),\r\n scoredEquipment[4].map(x => scoreTorsoUpPieces(x, maxTorsoScore)),\r\n scoredEquipment[5], // charm cant have torso up\r\n ]\r\n\r\n // sort equipment by score\r\n const sorted = readjustedEquipment.map(l => l.sort((a, b) => b.score - a.score))\r\n\r\n // get list of maximum score of remaining iterations\r\n const maximumRemainingScore = [0]\r\n let sumOfAllIterations = 0\r\n sorted.map(x => x[0].score).forEach((m) => {\r\n sumOfAllIterations += m\r\n maximumRemainingScore.push(sumOfAllIterations)\r\n })\r\n\r\n let length = 0\r\n const validSets: ArmorSet[] = []\r\n // try all viable armor permuations\r\n for (const armorEvaluation of getArmorPermutations(\r\n sorted,\r\n initialArmorEval,\r\n maximumRemainingScore,\r\n wantedScore,\r\n sorted.length - 1,\r\n )) {\r\n // find first sufficient deco eval\r\n const decoEvaluation = findSufficientDecoPermutation(\r\n armorEvaluation,\r\n constraints,\r\n wantedSkills,\r\n decoMinSlotMap,\r\n decoPermutationsPerSlotLevel,\r\n )\r\n\r\n // build and append set if there is any deco eval\r\n if (decoEvaluation) {\r\n const set = new ArmorSet(armorEvaluation, decoEvaluation, skillData.skillActivation)\r\n validSets.push(set)\r\n\r\n // exit if enough sets found\r\n if (length === constraints.limit - 1) break\r\n length++\r\n }\r\n }\r\n\r\n return validSets\r\n}\r\n// #endregion\r\n\r\n// #region entrypoint\r\nconst search = (\r\n armorPieces: ArmorPiece[][],\r\n decorations: Decoration[],\r\n charms: Charm[],\r\n constraints: SearchConstraints,\r\n skillData: StaticSkillData,\r\n) => {\r\n const a = armorPieces\r\n .map((piecesOfCategory, i) => {\r\n return applyArmorFilter(piecesOfCategory, constraints.armorRarity, constraints.armorType, i, constraints.pins[i], constraints.exclusions[i], constraints.skillActivations)\r\n })\r\n const c = applyCharmFilter(charms, constraints.skillActivations)\r\n const d = applyRarityFilter(decorations, constraints.decoRarity)\r\n .filter(x => filterHasSkill(x, constraints.skillActivations))\r\n\r\n return findSets(\r\n a,\r\n d as Decoration[],\r\n c,\r\n constraints,\r\n skillData,\r\n )\r\n}\r\n// #endregion\r\n\r\nexport { search }\r\n","import Rarity from '../../data-provider/models/equipment/Rarity'\r\nimport Slots from '../../data-provider/models/equipment/Slots'\r\nimport GlobalSettings from '../models/GlobalSettings'\r\n\r\nexport const getGlobalSettings = (): GlobalSettings => {\r\n const armorSelect = document.getElementById('armor-type') as HTMLSelectElement\r\n const weaponSlots = document.getElementById('weapon-slots') as HTMLSelectElement\r\n const armorRarity = document.getElementById('armor-rarity') as HTMLSelectElement\r\n const decoRarity = document.getElementById('deco-rarity') as HTMLSelectElement\r\n const limit = document.getElementById('search-limit') as HTMLInputElement\r\n\r\n return {\r\n armorType: parseInt(armorSelect.value),\r\n weaponSlots: parseInt(weaponSlots.value) as Slots,\r\n armorRarity: parseInt(armorRarity.value) as Rarity,\r\n decoRarity: parseInt(decoRarity.value) as Rarity,\r\n limit: parseInt(limit.value),\r\n }\r\n}\r\n","import ArmorSet from '../../searcher/models/ArmorSet'\r\nimport SearchConstraints from '../../searcher/models/SearchConstraints'\r\nimport StaticSkillData from '../../data-provider/models/skills/StaticSkillData'\r\nimport UserEquipmentSettings from '../../data-provider/models/user/UserEquipmentSettings'\r\nimport { htmlToElement } from '../../helper/html.helper'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport SkillActivationMap from '../../data-provider/models/skills/SkillActivationMap'\r\nimport { addExclusion, addPin, removeExlusion, removePin } from './eq-settings.component'\r\n\r\nexport function * moreSkillsIterator (skillActivations: SkillActivationMap) {\r\n const rContainer = clearAndGetResultsContainer()\r\n const countDiv = document.createElement('div')\r\n rContainer.appendChild(countDiv)\r\n\r\n const totalActCount = Array.from(skillActivations.values())\r\n .reduce((sum, c) => sum + c.length, 0)\r\n\r\n for (let i = 0; i < totalActCount; i++) {\r\n countDiv.innerHTML = `Checked ${i} possible skills ...`\r\n yield i\r\n }\r\n}\r\n\r\nconst onSetClick = (tbNode: Node, viewGetter: () => Node) => {\r\n const children = tbNode.childNodes\r\n const finalNode = children[children.length - 1] as HTMLTableRowElement\r\n\r\n // toggle if details have already been rendered\r\n if (finalNode.classList.contains('result-set-details')) {\r\n finalNode.classList.toggle('hidden')\r\n return\r\n }\r\n\r\n // render and append them otherwise\r\n tbNode.appendChild(viewGetter())\r\n}\r\n\r\nconst PINS_OR_EXCL_ACTIVE_BANNER = htmlToElement(`\r\n
\r\n You have some pins or exclusions active, which may be limiting results. You may find some results by removing those pins or exclusions.\r\n
\r\n`)\r\n\r\nconst getExpandedView = (set: ArmorSet, skillData: StaticSkillData, searchParams: SearchConstraints) => {\r\n // build header\r\n const header = htmlToElement(`\r\n \r\n Skill\r\n Weapon\r\n Head\r\n Chest\r\n Arms\r\n Waist\r\n Legs\r\n Deco\r\n Total\r\n Active\r\n \r\n `)\r\n\r\n // build skills rows\r\n const skillRows = Array.from(set.evaluation!.skills.entries())\r\n .sort(([_a, a], [_b, b]) => b - a)\r\n .map(([sId, sVal]) => {\r\n const r = document.createElement('tr')\r\n\r\n const computedDecoValue = set.decos\r\n .map(d => d.skills.get(sId)!)\r\n .reduce((sum, c) => sum + c, 0)\r\n\r\n r.appendChild(htmlToElement(`${skillData.skillName.get(sId) ? skillData.skillName.get(sId)! : ''}`))\r\n r.appendChild(htmlToElement('')) // weapon\r\n for (const p of set.getPieces()) {\r\n r.append(htmlToElement(`${p.skills.get(sId) ? p.skills.get(sId)! : ''}`))\r\n }\r\n r.append(htmlToElement(`${computedDecoValue || ''}`))\r\n r.append(htmlToElement(`${sVal}`))\r\n const possibleAct = set.evaluation!.activations.find(a => a.requiredSkill === sId)\r\n if (possibleAct) r.append(htmlToElement(`${possibleAct.name}`))\r\n return r\r\n })\r\n\r\n // build slot list\r\n const slotRow = document.createElement('tr')\r\n slotRow.appendChild(htmlToElement('Slots'))\r\n const rawSlowList = [searchParams.weaponSlots, ...set.getPieces().map(x => x.slots)]\r\n rawSlowList.forEach(s => slotRow.appendChild(htmlToElement(`${s}`)))\r\n\r\n // append elements to table\r\n const skillTable = htmlToElement('
')\r\n skillTable.appendChild(header)\r\n skillRows.forEach(x => skillTable.appendChild(x))\r\n skillTable.appendChild(slotRow)\r\n\r\n // build deco list\r\n const decoNameMap: Map = new Map()\r\n for (const deco of set.decos) {\r\n const name = deco.name\r\n decoNameMap.set(name, 1 + (decoNameMap.get(name) || 0))\r\n }\r\n const decoNameList = Array.from(decoNameMap.entries())\r\n .map(([name, amount]) => `${amount} x ${name}`)\r\n const decoNameString = decoNameList.join(', ')\r\n const decoNameContainer = htmlToElement(`\r\n
${decoNameString}
\r\n `)\r\n\r\n // build piece table\r\n const pieceTable = htmlToElement('
')\r\n const pieceTableHeader = htmlToElement('DefPiecePinExcl')\r\n pieceTable.appendChild(pieceTableHeader)\r\n for (const piece of set.getPieces()) {\r\n const pieceTableEle = document.createElement('tr')\r\n const pieceTableDef = htmlToElement(`${piece.defense.max}`)\r\n const pieceTableName = htmlToElement(`${piece.name}`)\r\n\r\n const pieceTablePin = (piece.isGeneric\r\n ? htmlToElement('')\r\n : htmlToElement('✓')) as HTMLElement\r\n const pieceTableExcl = htmlToElement('X') as HTMLElement\r\n if (UserEquipmentSettings.Instance.hasPin(piece)) pieceTablePin.classList.add('pin-highlighted')\r\n if (UserEquipmentSettings.Instance.hasExclusion(piece)) pieceTableExcl.classList.add('excl-highlighted')\r\n\r\n pieceTablePin.addEventListener('click', () => {\r\n if (piece.isGeneric) return\r\n\r\n if (UserEquipmentSettings.Instance.hasPin(piece)) {\r\n removePin(piece.category)\r\n pieceTablePin.classList.remove('pin-highlighted')\r\n } else {\r\n addPin(piece)\r\n pieceTablePin.classList.add('pin-highlighted')\r\n }\r\n })\r\n pieceTableExcl.addEventListener('click', () => {\r\n if (UserEquipmentSettings.Instance.hasExclusion(piece)) {\r\n removeExlusion(piece)\r\n pieceTableExcl.classList.remove('excl-highlighted')\r\n } else {\r\n addExclusion(piece)\r\n pieceTableExcl.classList.add('excl-highlighted')\r\n }\r\n })\r\n\r\n pieceTableEle.appendChild(pieceTableDef)\r\n pieceTableEle.appendChild(pieceTableName)\r\n pieceTableEle.appendChild(pieceTablePin)\r\n pieceTableEle.appendChild(pieceTableExcl)\r\n pieceTable.appendChild(pieceTableEle)\r\n }\r\n\r\n // return final div\r\n const tr = htmlToElement('')\r\n const td = htmlToElement('')\r\n const d = htmlToElement('
')\r\n td.appendChild(d)\r\n tr.appendChild(td)\r\n d.appendChild(pieceTable)\r\n d.appendChild(skillTable)\r\n d.appendChild(document.createElement('div')) // dummy for easy grid\r\n d.appendChild(decoNameContainer)\r\n return tr\r\n}\r\n\r\nconst getSetElement = (set: ArmorSet, skillData: StaticSkillData, searchParams: SearchConstraints) => {\r\n // get bonus and negative skills\r\n const requiredActivations = searchParams.skillActivations\r\n const unrelatedActivations = set.evaluation!.activations.filter((act) => {\r\n return !act.isPositive || // negative skill\r\n !requiredActivations.find(req => req.requiredSkill === act.requiredSkill) || // skill is not in required\r\n requiredActivations.find(req => req.requiredSkill === act.requiredSkill && act.requiredPoints > req.requiredPoints) // skill is upgrade of smth required\r\n })\r\n const unrelatedHtmlStrings = unrelatedActivations\r\n .sort((a, b) => b.requiredPoints - a.requiredPoints)\r\n .map((x) => {\r\n return `${x.name}`\r\n })\r\n\r\n // get basic display components\r\n const tb = htmlToElement('')\r\n const row1 = htmlToElement(`\r\n \r\n ${set.head.name}\r\n ${set.chest.name}\r\n ${set.arms.name}\r\n ${set.waist.name}\r\n ${set.legs.name}\r\n `)\r\n const row2 = htmlToElement(`\r\n \r\n \r\n

DEF ${set.evaluation.defense.max}

\r\n

FIR ${set.evaluation.resistance[0]}

\r\n

WAT ${set.evaluation.resistance[1]}

\r\n

ICE ${set.evaluation.resistance[2]}

\r\n

THN ${set.evaluation.resistance[3]}

\r\n

DRG ${set.evaluation.resistance[4]}

\r\n ${unrelatedHtmlStrings.join('')}\r\n \r\n `)\r\n\r\n // append basic display components\r\n const getter = () => { return getExpandedView(set, skillData, searchParams) }\r\n for (const row of [row1, row2]) {\r\n tb.appendChild(row)\r\n row.addEventListener('click', () => onSetClick(tb, getter))\r\n }\r\n\r\n return tb\r\n}\r\n\r\nconst onMoreSkillsActClick = (d: HTMLDivElement) => {\r\n const id = parseInt(d.getAttribute('data-id')!)\r\n\r\n for (const ele of Array.from(document.getElementsByClassName('search-picker-activation'))) {\r\n const thisId = parseInt(ele.getAttribute('data-id')!)\r\n if (id === thisId) {\r\n (ele as HTMLDivElement).click()\r\n break\r\n }\r\n }\r\n}\r\n\r\nconst clearAndGetResultsContainer = () => {\r\n const resultContainer = document.getElementById('search-results')!\r\n for (const c of Array.from(resultContainer.children)) c.remove()\r\n return resultContainer\r\n}\r\n\r\nexport const renderMoreSkills = (activations: SkillActivation[], pinsOrExclActive: boolean) => {\r\n const resultContainer = clearAndGetResultsContainer()\r\n\r\n if (activations.length === 0) {\r\n resultContainer.appendChild(htmlToElement(`\r\n
\r\n Can't fit more skills\r\n
\r\n `))\r\n\r\n if (pinsOrExclActive) resultContainer.appendChild(PINS_OR_EXCL_ACTIVE_BANNER)\r\n\r\n return\r\n }\r\n\r\n for (const act of activations) {\r\n const d = htmlToElement(`
`) as HTMLDivElement\r\n d.appendChild(htmlToElement(`${act.name}`))\r\n d.addEventListener('click', () => { onMoreSkillsActClick(d) })\r\n resultContainer.appendChild(d)\r\n }\r\n}\r\n\r\nexport const renderResults = (sets: ArmorSet[], skillData: StaticSkillData, searchParams: SearchConstraints, pinsOrExclActive: boolean) => {\r\n const resultContainer = clearAndGetResultsContainer()\r\n\r\n // add search param element\r\n resultContainer.appendChild(htmlToElement(`\r\n
Results for ${searchParams.skillActivations.map(x => x.name).join(', ')} (${sets.length} matches)
\r\n `))\r\n\r\n // return if no results\r\n if (sets.length === 0) {\r\n resultContainer.appendChild(htmlToElement(`\r\n
\r\n No matching armor sets\r\n
\r\n `))\r\n\r\n if (pinsOrExclActive) resultContainer.appendChild(PINS_OR_EXCL_ACTIVE_BANNER)\r\n\r\n return\r\n }\r\n\r\n // build table and table header\r\n const table = htmlToElement('
')\r\n const header = htmlToElement('HeadTorsoArmsWaistLegs')\r\n resultContainer.appendChild(table)\r\n table.appendChild(header)\r\n\r\n // build and append html elements for each armor set\r\n sets\r\n .sort((a, b) => b.evaluation.defense.max - a.evaluation.defense.max)\r\n .map(set => getSetElement(set, skillData, searchParams))\r\n .forEach(ele => table.appendChild(ele))\r\n}\r\n","import ArmorSet from '../../searcher/models/ArmorSet'\r\nimport SearchConstraints from '../../searcher/models/SearchConstraints'\r\nimport StaticEquipmentData from '../../data-provider/models/equipment/StaticEquipmentData'\r\nimport StaticSkillData from '../../data-provider/models/skills/StaticSkillData'\r\nimport { search } from '../../searcher/searcher.module'\r\nimport { getGlobalSettings } from './global-settings.component'\r\nimport { getSkillActivations, resetSkillActivations } from './picker.component'\r\nimport { moreSkillsIterator, renderMoreSkills, renderResults } from './search-results.component'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport UserEquipmentSettings from '../../data-provider/models/user/UserEquipmentSettings'\r\nimport EquipmentMin from '../../data-provider/models/equipment/EquipmentMin'\r\n\r\nconst pinsOrExclusionsActive = (pins: (EquipmentMin | undefined)[], exclusions: EquipmentMin[][]): boolean => {\r\n return pins.some(p => p !== undefined) || exclusions.some(eL => eL.length > 0)\r\n}\r\n\r\nconst arrangeSearchData = () => {\r\n // build params\r\n const globalSettings = getGlobalSettings()\r\n const skillActivations = getSkillActivations()\r\n\r\n // return if no skill selected\r\n if (skillActivations.length === 0) {\r\n return\r\n }\r\n\r\n // sanitize activation input to only include highest version of each skill\r\n const sanitizedSkillActivations = skillActivations\r\n .filter((thisAct, i) => {\r\n return skillActivations.every((compareAct, j) => {\r\n if (i === j) return true\r\n if (thisAct.requiredSkill !== compareAct.requiredSkill) return true\r\n\r\n return thisAct.requiredPoints >= compareAct.requiredPoints\r\n })\r\n })\r\n\r\n // create search params\r\n const searchParams: SearchConstraints = {\r\n weaponSlots: globalSettings.weaponSlots,\r\n armorType: globalSettings.armorType,\r\n armorRarity: globalSettings.armorRarity,\r\n decoRarity: globalSettings.decoRarity,\r\n limit: Math.min(Math.max(globalSettings.limit, 1), 1000),\r\n skillActivations: sanitizedSkillActivations,\r\n pins: UserEquipmentSettings.Instance.pins,\r\n exclusions: UserEquipmentSettings.Instance.exclusions,\r\n }\r\n\r\n return searchParams\r\n}\r\n\r\nconst searchLogic = (equData: StaticEquipmentData, skillData: StaticSkillData) => {\r\n const searchParams = arrangeSearchData()\r\n\r\n if (!searchParams) {\r\n alert('Please select at least one skill')\r\n return\r\n }\r\n\r\n // search for sets\r\n const result = search(\r\n equData.armor,\r\n equData.decorations,\r\n [],\r\n searchParams,\r\n skillData,\r\n )\r\n\r\n // render results\r\n renderResults(result, skillData, searchParams, pinsOrExclusionsActive(searchParams.pins, searchParams.exclusions))\r\n}\r\n\r\nconst moreSkillsLogic = async (equData: StaticEquipmentData, skillData: StaticSkillData) => {\r\n const searchParams = arrangeSearchData()\r\n\r\n if (!searchParams) {\r\n alert('Please select at least one skill')\r\n return\r\n }\r\n\r\n const aquirableSkills: SkillActivation[] = []\r\n\r\n const outputIterator = moreSkillsIterator(skillData.skillActivation)\r\n\r\n for (const actMap of skillData.skillActivation) {\r\n const sActs = actMap[1]\r\n\r\n const processedActs = sActs\r\n .filter(act => act.requiredPoints >= 0)\r\n .filter(act => !searchParams.skillActivations.map(x => x.id).includes(act.id))\r\n .filter(act => !searchParams.skillActivations.find(x => act.requiredSkill === x.requiredSkill && act.requiredPoints < x.requiredPoints))\r\n .sort((a, b) => a.requiredPoints - b.requiredPoints)\r\n\r\n let breakFlag = false\r\n for (const act of processedActs) {\r\n outputIterator.next()\r\n if (breakFlag) continue\r\n\r\n const newParams: SearchConstraints = {\r\n ...searchParams,\r\n limit: 1,\r\n skillActivations: searchParams.skillActivations.concat(act),\r\n }\r\n\r\n const r = await new Promise((resolve, _reject) => {\r\n setTimeout(() => {\r\n const innerR = search(\r\n equData.armor,\r\n equData.decorations,\r\n [],\r\n newParams,\r\n skillData,\r\n )\r\n resolve(innerR)\r\n })\r\n })\r\n\r\n if (r.length === 0) breakFlag = true\r\n else aquirableSkills.push(act)\r\n }\r\n }\r\n\r\n renderMoreSkills(aquirableSkills, pinsOrExclusionsActive(searchParams.pins, searchParams.exclusions))\r\n}\r\n\r\nconst resetLogic = () => {\r\n resetSkillActivations()\r\n}\r\n\r\n/** attach handlers for control buttons */\r\nexport const attachControlListeners = (equData: StaticEquipmentData, skillData: StaticSkillData) => {\r\n const searchBtn = document.getElementById('search-btn') as HTMLButtonElement\r\n const moreSkillsBtn = document.getElementById('more-btn') as HTMLButtonElement\r\n const resetBtn = document.getElementById('reset-btn') as HTMLButtonElement\r\n\r\n searchBtn.addEventListener('click', () => {\r\n searchLogic(equData, skillData)\r\n })\r\n moreSkillsBtn.addEventListener('click', () => {\r\n moreSkillsLogic(equData, skillData)\r\n })\r\n resetBtn.addEventListener('click', () => {\r\n resetLogic()\r\n })\r\n}\r\n","import { getArms, getChest, getDecorations, getHead, getLegs, getSkillActivationMap, getSkillCategories, getSkillNameMap, getWaist } from '../../data-provider/data-provider.module'\r\nimport StaticSkillData from '../../data-provider/models/skills/StaticSkillData'\r\nimport { renderEqSettings } from '../ui/eq-settings.component'\r\nimport { initiateNavbar } from '../ui/navbar.component'\r\nimport { renderSkillPicker } from '../ui/picker.component'\r\nimport { attachControlListeners } from '../ui/search-controls.component'\r\n\r\nconst main = async () => {\r\n // initiate static components\r\n initiateNavbar()\r\n\r\n // load remaining data\r\n const armor = [\r\n await getHead(),\r\n await getChest(),\r\n await getArms(),\r\n await getWaist(),\r\n await getLegs(),\r\n ]\r\n const decorations = await getDecorations()\r\n\r\n // load skill data and render skill picker with it\r\n const skillData: StaticSkillData = {\r\n skillName: await getSkillNameMap(),\r\n skillActivation: await getSkillActivationMap(),\r\n skillCategories: await getSkillCategories(),\r\n }\r\n\r\n // render ui\r\n renderSkillPicker(skillData.skillActivation, skillData.skillCategories)\r\n renderEqSettings(armor)\r\n\r\n // initialize search controls\r\n attachControlListeners({ armor, decorations }, skillData)\r\n}\r\n\r\nmain()\r\n","var OVERLAY_ID = '__parcel__error__overlay__';\n\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n\n module.bundle.hotData = null;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets, assetsToAccept;\n\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = process.env.HMR_HOSTNAME || location.hostname;\n var protocol = location.protocol === 'https:' ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');\n ws.onmessage = function(event) {\n checkedAssets = {};\n assetsToAccept = [];\n\n var data = JSON.parse(event.data);\n\n if (data.type === 'update') {\n var handled = false;\n data.assets.forEach(function(asset) {\n if (!asset.isNew) {\n var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);\n if (didAccept) {\n handled = true;\n }\n }\n });\n\n // Enable HMR for CSS by default.\n handled = handled || data.assets.every(function(asset) {\n return asset.type === 'css' && asset.generated.js;\n });\n\n if (handled) {\n console.clear();\n\n data.assets.forEach(function (asset) {\n hmrApply(global.parcelRequire, asset);\n });\n\n assetsToAccept.forEach(function (v) {\n hmrAcceptRun(v[0], v[1]);\n });\n } else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.\n location.reload();\n }\n }\n\n if (data.type === 'reload') {\n ws.close();\n ws.onclose = function () {\n location.reload();\n }\n }\n\n if (data.type === 'error-resolved') {\n console.log('[parcel] ✨ Error resolved');\n\n removeErrorOverlay();\n }\n\n if (data.type === 'error') {\n console.error('[parcel] 🚨 ' + data.error.message + '\\n' + data.error.stack);\n\n removeErrorOverlay();\n\n var overlay = createErrorOverlay(data);\n document.body.appendChild(overlay);\n }\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n }\n}\n\nfunction createErrorOverlay(data) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n\n // html encode message and stack trace\n var message = document.createElement('div');\n var stackTrace = document.createElement('pre');\n message.innerText = data.error.message;\n stackTrace.innerText = data.error.stack;\n\n overlay.innerHTML = (\n '
' +\n 'ERROR' +\n '🚨' +\n '
' + message.innerHTML + '
' +\n '
' + stackTrace.innerHTML + '
' +\n '
'\n );\n\n return overlay;\n\n}\n\nfunction getParents(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {\n parents.push(k);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction hmrApply(bundle, asset) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (modules[asset.id] || !bundle.parent) {\n var fn = new Function('require', 'module', 'exports', asset.generated.js);\n asset.isNew = !modules[asset.id];\n modules[asset.id] = [fn, asset.deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n}\n\nfunction hmrAcceptCheck(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (!modules[id] && bundle.parent) {\n return hmrAcceptCheck(bundle.parent, id);\n }\n\n if (checkedAssets[id]) {\n return;\n }\n checkedAssets[id] = true;\n\n var cached = bundle.cache[id];\n\n assetsToAccept.push([bundle, id]);\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n\n return getParents(global.parcelRequire, id).some(function (id) {\n return hmrAcceptCheck(global.parcelRequire, id)\n });\n}\n\nfunction hmrAcceptRun(bundle, id) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n if (cached) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n\n cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n cb();\n });\n return true;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../data-provider/models/equipment/EquipmentSkills.ts","../../data-provider/data-provider.module.ts","../../data-provider/models/equipment/EquipmentCategory.ts","../../data-provider/models/user/UserEquipmentSettings.ts","../../helper/html.helper.ts","../ui/eq-settings.component.ts","../ui/navbar.component.ts","../ui/picker.component.ts","../../scorer/models/ArmorEvaluation.ts","../../searcher/models/ArmorSet.ts","../../data-provider/models/equipment/ArmorType.ts","../../data-filter/data-filter.module.ts","../../scorer/scorer.module.ts","../../scorer/models/DecoEvaluation.ts","../../scorer/models/DecoMinSlotMap.ts","../../searcher/searcher.module.ts","../ui/global-settings.component.ts","../ui/search-results.component.ts","../ui/search-controls.component.ts","index.ts","../../../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","handled","assets","forEach","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","every","generated","js","console","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","log","removeErrorOverlay","error","message","stack","overlay","createErrorOverlay","document","body","appendChild","getElementById","remove","createElement","stackTrace","innerText","innerHTML","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","deps","cached","cache","some","cb"],"mappings":"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","file":"pages.77de5100.js","sourceRoot":"..\\src\\app\\pages","sourcesContent":["import GameID from '../GameId'\r\nimport Skill from '../skills/Skill'\r\n\r\nexport default class EquipmentSkills extends Map {\r\n get (key: GameID): Skill {\r\n return super.get(key) || 0\r\n }\r\n\r\n add (key: GameID, val: Skill) {\r\n this.set(key, val + this.get(key))\r\n }\r\n\r\n addSkills (m: EquipmentSkills) {\r\n for (const [k, v] of m) {\r\n this.add(k, v)\r\n }\r\n }\r\n\r\n substract (key: GameID, val: Skill) {\r\n this.set(key, val + this.get(key))\r\n }\r\n\r\n substractSkills (m: EquipmentSkills) {\r\n for (const [k, v] of m) {\r\n this.substract(k, v)\r\n }\r\n }\r\n\r\n multiply (factor: number) {\r\n for (const [k, v] of this) {\r\n this.set(k, v * factor)\r\n }\r\n }\r\n}\r\n","import ArmorPiece from './models/equipment/ArmorPiece'\r\nimport Decoration from './models/equipment/Decoration'\r\nimport EquipmentSkills from './models/equipment/EquipmentSkills'\r\nimport GameID from './models/GameId'\r\nimport SkillActivation from './models/skills/SkillActivation'\r\nimport SkillActivationMap from './models/skills/SkillActivationMap'\r\nimport Skill from './models/skills/Skill'\r\nimport SkillNameMap from './models/skills/SkillNameMap'\r\n\r\nconst MAX_RARITY = 7\r\n\r\nconst TORSO_UP_ID = 65\r\n\r\nconst DUMMY_PIECE: ArmorPiece = {\r\n name: 'None',\r\n type: -1,\r\n defense: { base: 0, max: 0, maxLr: 0 },\r\n resistance: [0, 0, 0, 0, 0],\r\n category: -1,\r\n slots: 0,\r\n rarity: 0,\r\n skills: new EquipmentSkills(),\r\n isGeneric: true,\r\n}\r\n\r\n/** fetch from data directory */\r\nconst getRawData = async (url: string) => {\r\n return (await fetch(url)).json()\r\n}\r\n\r\n/** fetch and parse generic equipment data */\r\nconst getDataWithTransformedSkillMap = async (url: string): Promise<{skills: EquipmentSkills}[]> => {\r\n const raw = await getRawData(url)\r\n return raw.map((rawX: any) => {\r\n const skillMap: EquipmentSkills = new EquipmentSkills()\r\n for (const x in rawX.skills) {\r\n const skill: Skill = rawX.skills[x]\r\n skillMap.set(parseInt(x), skill)\r\n }\r\n return {\r\n ...rawX,\r\n skills: skillMap,\r\n }\r\n })\r\n}\r\n\r\n/** get a list of all head armor pieces */\r\nconst getHead = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./head.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all chest armor pieces */\r\nconst getChest = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./chest.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all arms armor pieces */\r\nconst getArms = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./arms.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all waist armor pieces */\r\nconst getWaist = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./waist.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all legs armor pieces */\r\nconst getLegs = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./legs.json') as unknown as ArmorPiece[]\r\n}\r\n\r\n/** get a list of all decorations */\r\nconst getDecorations = async (): Promise => {\r\n return getDataWithTransformedSkillMap('./decorations.json') as unknown as Decoration[]\r\n}\r\n\r\n/** get a mapping of internal id to name for all skills */\r\nconst getSkillNameMap = async (): Promise => {\r\n const raw = await getRawData('./skill-names.json')\r\n const map: Map = new Map()\r\n for (const id in raw) {\r\n map.set(parseInt(id), raw[id])\r\n }\r\n return map\r\n}\r\n\r\n/** get a list of skill category names, as used in the UI */\r\nconst getSkillCategories = async (): Promise => {\r\n return getRawData('./skill-categories.json')\r\n}\r\n\r\n/** get a mapping of internal id of skill to all activations (positive and negative) of that skill */\r\nconst getSkillActivationMap = async (): Promise => {\r\n const raw = await getRawData('./skills.json')\r\n const map: Map = new Map()\r\n for (const id in raw) {\r\n const parsedId = parseInt(id)\r\n map.set(\r\n parsedId,\r\n raw[id].map((activation: any) => {\r\n return {\r\n ...activation,\r\n requiredSkill: parsedId,\r\n }\r\n }),\r\n )\r\n }\r\n return map\r\n}\r\n\r\nexport {\r\n MAX_RARITY,\r\n TORSO_UP_ID,\r\n DUMMY_PIECE,\r\n getHead,\r\n getChest,\r\n getArms,\r\n getWaist,\r\n getLegs,\r\n getDecorations,\r\n getSkillNameMap,\r\n getSkillCategories,\r\n getSkillActivationMap,\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nenum EquipmentCategory {\r\n HEAD = 0,\r\n CHEST = 1,\r\n ARMS = 2,\r\n WAIST = 3,\r\n LEGS = 4,\r\n CHARM = 5,\r\n WEAPON = 6,\r\n}\r\n\r\nexport default EquipmentCategory\r\n","import EquipmentCategory from '../equipment/EquipmentCategory'\r\nimport EquipmentMin from '../equipment/EquipmentMin'\r\n\r\nexport default class UserEquipmentSettings {\r\n // eslint-disable-next-line no-use-before-define\r\n private static _instance: UserEquipmentSettings\r\n\r\n pins: (EquipmentMin | undefined)[]\r\n\r\n exclusions: EquipmentMin[][]\r\n\r\n isActive: boolean\r\n\r\n private constructor () {\r\n this.pins = []\r\n this.exclusions = []\r\n\r\n const supportedCategoires = [\r\n EquipmentCategory.HEAD,\r\n EquipmentCategory.CHEST,\r\n EquipmentCategory.ARMS,\r\n EquipmentCategory.WAIST,\r\n EquipmentCategory.LEGS,\r\n ]\r\n\r\n supportedCategoires.forEach((_) => {\r\n this.pins.push(undefined)\r\n this.exclusions.push([])\r\n })\r\n\r\n this.isActive = false\r\n }\r\n\r\n public static get Instance () {\r\n return this._instance || (this._instance = new this())\r\n }\r\n\r\n /** pins given equipment to corresponding category */\r\n addPin (x: EquipmentMin): void {\r\n this.pins[x.category] = x\r\n }\r\n\r\n /** removes pin of category */\r\n removePin (cat: EquipmentCategory): void {\r\n this.pins[cat] = undefined\r\n }\r\n\r\n /** adds given equipment to exclusion list of corresponding category */\r\n addExclusion (x: EquipmentMin): void {\r\n this.exclusions[x.category].push(x)\r\n }\r\n\r\n /** removes equipment from exclusion list */\r\n removeExclusion (x: EquipmentMin): void {\r\n const arr = this.exclusions[x.category]\r\n const index = arr.findIndex((y) => y.name === x.name)\r\n this.exclusions[x.category].splice(index, 1)\r\n }\r\n\r\n /** returns true if pin is same as given element */\r\n hasPin (x: EquipmentMin | undefined): boolean {\r\n if (!x) return false\r\n if (x.isGeneric) return false\r\n\r\n const pin = this.pins[x.category]\r\n if (!pin) return false\r\n return pin.name === x.name\r\n }\r\n\r\n /** returns true if piece is already excluded */\r\n hasExclusion (x: EquipmentMin): boolean {\r\n return !!this.exclusions[x.category].find(y => y.name === x.name)\r\n }\r\n\r\n /** serializes settings as json */\r\n serialize (): string {\r\n return JSON.stringify({ pins: this.pins, exclusions: this.exclusions })\r\n }\r\n\r\n /** populate settings from json */\r\n deserialize (raw: string): void {\r\n const parsed = JSON.parse(raw) as {\r\n pins: (EquipmentMin | undefined)[];\r\n exclusions: EquipmentMin[][];\r\n\r\n }\r\n this.pins = parsed.pins\r\n this.exclusions = parsed.exclusions\r\n }\r\n}\r\n","export const htmlToElement = (html: string): Node => {\r\n const template = document.createElement('template')\r\n html = html.trim()\r\n template.innerHTML = html\r\n return template.content.firstChild as Node\r\n}\r\n","import EquipmentCategory from '../../data-provider/models/equipment/EquipmentCategory'\r\nimport UserEquipmentSettings from '../../data-provider/models/user/UserEquipmentSettings'\r\nimport { htmlToElement } from '../../helper/html.helper'\r\nimport EquipmentMin from '../../data-provider/models/equipment/EquipmentMin'\r\n\r\nconst STORAGE_KEY = 'dos-eq-settings'\r\n\r\nconst saveToStorage = () => {\r\n window.localStorage.setItem(\r\n STORAGE_KEY,\r\n UserEquipmentSettings.Instance.serialize(),\r\n )\r\n}\r\n\r\nconst getFromStorage = () => {\r\n return window.localStorage.getItem(STORAGE_KEY)\r\n}\r\n\r\nconst getExclusionElement = (x: EquipmentMin) => {\r\n const root = document.createElement('div')\r\n root.style.textAlign = 'left'\r\n root.setAttribute('data-name', x.name)\r\n root.classList.add('eq-exclusion-ele')\r\n\r\n const content = htmlToElement(`${x.name}`)\r\n const remove = htmlToElement('X') as HTMLSpanElement\r\n remove.addEventListener('click', () => removeExlusion(x))\r\n remove.style.marginRight = '1em'\r\n remove.style.marginLeft = '1em'\r\n remove.style.cursor = 'pointer'\r\n\r\n root.appendChild(remove)\r\n root.appendChild(content)\r\n return root\r\n}\r\n\r\nconst getPinPicker = (cat: EquipmentCategory, eq: EquipmentMin[]) => {\r\n const root = document.createElement('div')\r\n root.style.textAlign = 'left'\r\n\r\n const content = document.createElement('select')\r\n content.setAttribute('id', `eq-${cat}-pin-picker`)\r\n content.style.width = '72%'\r\n for (const x of [{ name: 'None', category: cat }].concat(...eq)) {\r\n content.appendChild(\r\n htmlToElement(``),\r\n )\r\n }\r\n content.addEventListener('change', () => {\r\n addPin({ name: content.value, category: cat })\r\n })\r\n const remove = htmlToElement('X') as HTMLSpanElement\r\n remove.addEventListener('click', () => removePin(eq[0].category))\r\n remove.style.marginRight = '1em'\r\n remove.style.marginLeft = '1em'\r\n remove.style.cursor = 'pointer'\r\n\r\n root.appendChild(remove)\r\n root.appendChild(content)\r\n return root\r\n}\r\n\r\nconst renderColumns = (armor: EquipmentMin[][]) => {\r\n const parent = document.getElementById('eq-container')\r\n for (const item of [\r\n [EquipmentCategory.HEAD, 'Head', armor[0]],\r\n [EquipmentCategory.CHEST, 'Chest', armor[1]],\r\n [EquipmentCategory.ARMS, 'Arms', armor[2]],\r\n [EquipmentCategory.WAIST, 'Waist', armor[3]],\r\n [EquipmentCategory.LEGS, 'Legs', armor[4]],\r\n ]) {\r\n const cat = item[0] as EquipmentCategory\r\n const name = item[1] as string\r\n const eq = item[2] as EquipmentMin[]\r\n\r\n const root = htmlToElement(`
`)\r\n\r\n // pins\r\n const pinHeader = htmlToElement(`
${name} Pinned
`)\r\n const pinContent = htmlToElement('
')\r\n const pinElement = getPinPicker(cat, eq)\r\n pinContent.appendChild(pinElement)\r\n\r\n // exclusions\r\n const exclusionHeader = htmlToElement(`
${name} Excluded
`)\r\n const exclusionContent = htmlToElement(`
`)\r\n\r\n root.appendChild(pinHeader)\r\n root.appendChild(pinContent)\r\n root.appendChild(exclusionHeader)\r\n root.appendChild(exclusionContent)\r\n parent!.appendChild(root)\r\n }\r\n}\r\n\r\nconst _addExclusion = (x: EquipmentMin) => {\r\n const parent = document.getElementById(`eq-${x.category}-exclusion`)\r\n parent!.appendChild(getExclusionElement(x))\r\n}\r\n\r\nexport const removeExlusion = (x: EquipmentMin) => {\r\n const ele = Array.from(document.getElementsByClassName('eq-exclusion-ele')).find((a) => {\r\n const b = a as HTMLElement\r\n return b.getAttribute('data-name') === x.name\r\n }) as HTMLElement\r\n if (!ele) return\r\n\r\n ele.remove()\r\n UserEquipmentSettings.Instance.removeExclusion(x)\r\n saveToStorage()\r\n}\r\n\r\nexport const removePin = (cat: EquipmentCategory) => {\r\n const ele = document.getElementById(`eq-${cat}-pin-picker`) as HTMLSelectElement\r\n UserEquipmentSettings.Instance.removePin(cat)\r\n ele.selectedIndex = 0\r\n saveToStorage()\r\n}\r\n\r\nexport const addExclusion = (x: EquipmentMin) => {\r\n if (UserEquipmentSettings.Instance.hasExclusion(x)) return\r\n UserEquipmentSettings.Instance.addExclusion(x)\r\n _addExclusion(x)\r\n saveToStorage()\r\n}\r\n\r\nexport const addPin = (x: EquipmentMin) => {\r\n if (x.name === 'None') {\r\n UserEquipmentSettings.Instance.removePin(x.category)\r\n saveToStorage()\r\n return\r\n }\r\n\r\n UserEquipmentSettings.Instance.addPin(x)\r\n saveToStorage()\r\n const select = document.getElementById(\r\n `eq-${x.category}-pin-picker`,\r\n ) as HTMLSelectElement\r\n select.value = x.name\r\n}\r\n\r\nexport const renderEqSettings = (armor: EquipmentMin[][]) => {\r\n renderColumns(armor)\r\n\r\n const raw = getFromStorage()\r\n if (raw) UserEquipmentSettings.Instance.deserialize(raw)\r\n\r\n for (const exclusionList of UserEquipmentSettings.Instance.exclusions) {\r\n for (const x of exclusionList) {\r\n _addExclusion(x)\r\n }\r\n }\r\n UserEquipmentSettings.Instance.pins.forEach((x, i) => {\r\n if (x) addPin(x)\r\n else removePin(i)\r\n })\r\n}\r\n","const onMouseEnter = (ele: Element) => {\r\n if (!ele.classList.contains('navbar-selected')) {\r\n ele.classList.add('navbar-hover')\r\n }\r\n}\r\n\r\nconst onMouseLeave = (ele: Element) => {\r\n ele.classList.remove('navbar-hover')\r\n}\r\n\r\nconst onClick = (parent: Element, ele: Element) => {\r\n for (const li of Array.from(parent.children)) {\r\n li.classList.remove('navbar-selected')\r\n li.classList.remove('navbar-hover')\r\n }\r\n ele.classList.add('navbar-selected')\r\n\r\n const selection = ele.getAttribute('data-selection')\r\n const panels = document.getElementsByClassName('panel')\r\n\r\n for (const panel of Array.from(panels)) {\r\n const panelNumber = panel.getAttribute('data-panel-number')\r\n if (selection === panelNumber) {\r\n panel.classList.remove('hidden')\r\n } else {\r\n panel.classList.add('hidden')\r\n }\r\n }\r\n}\r\n\r\n/** initiate navbar state and attaches handlers */\r\nexport const initiateNavbar = () => {\r\n const ul = document.getElementById('navbar-container')!\r\n .children[0] as HTMLElement\r\n\r\n for (const li of Array.from(ul.children)) {\r\n li.addEventListener('mouseenter', () => onMouseEnter(li))\r\n li.addEventListener('mouseleave', () => onMouseLeave(li))\r\n li.addEventListener('click', () => onClick(ul, li))\r\n }\r\n\r\n onClick(ul, ul.children[0])\r\n}\r\n","import SkillActivationMap from '../../data-provider/models/skills/SkillActivationMap'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport { htmlToElement } from '../../helper/html.helper'\r\n\r\nconst getActivationElements = () => {\r\n return Array.from(document.getElementsByClassName('search-picker-activation'))\r\n}\r\n\r\n/** uncheck all selected skill activations */\r\nconst resetSkillActivations = () => {\r\n const activations = getActivationElements()\r\n\r\n activations.forEach((element) => {\r\n const checkbox = element.children[0] as HTMLInputElement\r\n const text = element.children[1] as HTMLElement\r\n\r\n checkbox.checked = false\r\n text.classList.remove('highlighted')\r\n })\r\n}\r\n\r\n/** get list of currently selected skill activations */\r\nconst getSkillActivations = (): SkillActivation[] => {\r\n const activations = getActivationElements()\r\n\r\n return activations\r\n // get only checked skills\r\n .filter((element) => {\r\n const checkbox = element.children[0] as HTMLInputElement\r\n return checkbox.checked\r\n })\r\n // map to proper data model\r\n .map((element) => {\r\n const name = element.textContent!.trim()\r\n const id = parseInt(element.getAttribute('data-id')!)\r\n const requiredSkill = parseInt(element.getAttribute('data-skill')!)\r\n const requiredPoints = parseInt(element.getAttribute('data-points')!)\r\n const category = parseInt(element.parentElement!.getAttribute('data-category')!)\r\n\r\n return {\r\n id,\r\n name,\r\n requiredPoints,\r\n requiredSkill,\r\n isPositive: requiredPoints > 0,\r\n category,\r\n }\r\n })\r\n}\r\n\r\nconst renderCategories = (skillCategories: string[]) => {\r\n for (const index in skillCategories) {\r\n const categoryName = skillCategories[index]\r\n const node = htmlToElement(`\r\n
\r\n
${categoryName}
\r\n
\r\n `)\r\n document.getElementById('search-skill-picker')!.appendChild(node)\r\n }\r\n}\r\n\r\nconst renderActivations = (skillActivation: SkillActivationMap) => {\r\n skillActivation.forEach((activationList) => {\r\n activationList\r\n .filter(activation => activation.isPositive)\r\n .reverse()\r\n .forEach((activation) => {\r\n const node = htmlToElement(`\r\n
\r\n \r\n
${activation.name}
\r\n
\r\n `)\r\n document.getElementById(`search-picker-category-${activation.category}`)!.appendChild(node)\r\n })\r\n })\r\n}\r\n\r\nconst attachClickListener = () => {\r\n const elements = Array.from(document.getElementsByClassName('search-picker-activation'))\r\n for (const item of elements) {\r\n item.addEventListener('click', (event) => {\r\n // tick checkbox\r\n const target = event.target as Element\r\n const input: HTMLInputElement = item.children[0] as HTMLInputElement\r\n if (target.tagName !== 'INPUT') {\r\n input.checked = !input.checked\r\n }\r\n\r\n // add highlight class\r\n const text = item.children[1]\r\n input.checked ? text.classList.add('highlighted') : text.classList.remove('highlighted')\r\n })\r\n }\r\n}\r\n\r\n/** render all components of skillpicker and attach handlers */\r\nconst renderSkillPicker = (\r\n skillActivation: SkillActivationMap,\r\n skillCategories: string[],\r\n) => {\r\n renderCategories(skillCategories)\r\n renderActivations(skillActivation)\r\n attachClickListener()\r\n}\r\n\r\nexport {\r\n renderSkillPicker,\r\n getSkillActivations,\r\n resetSkillActivations,\r\n}\r\n","import { TORSO_UP_ID } from '../../data-provider/data-provider.module'\r\nimport EquipmentCategory from '../../data-provider/models/equipment/EquipmentCategory'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport ScoredSkilledEquipment from './ScoredSkilledEquipment'\r\n\r\nexport default class ArmorEvaluation {\r\n equipment: ScoredSkilledEquipment[]\r\n skills: EquipmentSkills = new EquipmentSkills()\r\n score: number = 0\r\n totalSlots: number = 0\r\n torsoUp: number = 0\r\n\r\n constructor (\r\n equipment: ScoredSkilledEquipment[],\r\n skills?: EquipmentSkills,\r\n score?: number,\r\n totalSlots?: number,\r\n torsoUp?: number,\r\n ) {\r\n this.equipment = equipment\r\n if (skills) this.skills = skills\r\n if (score) this.score = score\r\n if (totalSlots) this.totalSlots = totalSlots\r\n if (torsoUp) this.torsoUp = torsoUp\r\n }\r\n\r\n getSlots () {\r\n return this.equipment\r\n .map(x => x.slots)\r\n .filter(x => x > 0)\r\n }\r\n\r\n getSlotsExceptChest () {\r\n return this.equipment\r\n .filter(x => x.category !== EquipmentCategory.CHEST)\r\n .map(x => x.slots)\r\n .filter(x => x > 0)\r\n }\r\n\r\n copy () {\r\n return new ArmorEvaluation(\r\n this.equipment.map(x => x),\r\n new EquipmentSkills(this.skills),\r\n this.score,\r\n this.totalSlots,\r\n this.torsoUp,\r\n )\r\n }\r\n\r\n addPiece (piece: ScoredSkilledEquipment) {\r\n if (piece.skills.has(TORSO_UP_ID)) this.torsoUp++\r\n else {\r\n if (piece.category === EquipmentCategory.CHEST && this.torsoUp > 0) {\r\n for (const [k, v] of piece.skills) {\r\n this.skills.add(k, v * (this.torsoUp + 1))\r\n }\r\n } else {\r\n this.skills.addSkills(piece.skills)\r\n }\r\n }\r\n this.equipment[piece.category] = piece\r\n this.score = this.score + piece.score\r\n this.totalSlots = this.totalSlots + piece.slots\r\n }\r\n}\r\n","import Defense from '../../data-provider/models/equipment/Defense'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport Resistance from '../../data-provider/models/equipment/Resistance'\r\nimport Evaluation from './Evaluation'\r\nimport ArmorPiece from '../../data-provider/models/equipment/ArmorPiece'\r\nimport Decoration from '../../data-provider/models/equipment/Decoration'\r\nimport Charm from '../../data-provider/models/equipment/Charm'\r\nimport SkillActivationMap from '../../data-provider/models/skills/SkillActivationMap'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport ArmorEvaluation from '../../scorer/models/ArmorEvaluation'\r\nimport DecoEvaluation from '../../scorer/models/DecoEvaluation'\r\nimport EquipmentCategory from '../../data-provider/models/equipment/EquipmentCategory'\r\n\r\nexport default class ArmorSet {\r\n readonly head: ArmorPiece\r\n readonly chest: ArmorPiece\r\n readonly arms: ArmorPiece\r\n readonly waist: ArmorPiece\r\n readonly legs: ArmorPiece\r\n readonly charm: Charm\r\n readonly decos: Decoration[]\r\n\r\n evaluation: Evaluation\r\n\r\n constructor (\r\n armorEval: ArmorEvaluation,\r\n decoEval: DecoEvaluation,\r\n skillActivations: SkillActivationMap,\r\n ) {\r\n const chest = armorEval.equipment[EquipmentCategory.CHEST] as unknown as ArmorPiece\r\n\r\n this.chest = armorEval.torsoUp > 0 ? ArmorSet.applyTorsoUpToChest(chest, armorEval.torsoUp) : chest\r\n this.head = armorEval.equipment[EquipmentCategory.HEAD] as unknown as ArmorPiece\r\n this.arms = armorEval.equipment[EquipmentCategory.ARMS] as unknown as ArmorPiece\r\n this.waist = armorEval.equipment[EquipmentCategory.WAIST] as unknown as ArmorPiece\r\n this.legs = armorEval.equipment[EquipmentCategory.LEGS] as unknown as ArmorPiece\r\n this.charm = armorEval.equipment[EquipmentCategory.CHARM] as unknown as Charm\r\n this.decos = decoEval.decos\r\n this.evaluation = this.evaluate(armorEval, decoEval, skillActivations)\r\n }\r\n\r\n private static applyTorsoUpToChest (chest: ArmorPiece, torsoUp: number): ArmorPiece {\r\n const newSkills = new EquipmentSkills(chest.skills)\r\n newSkills.multiply(torsoUp + 1)\r\n return {\r\n ...chest,\r\n skills: newSkills,\r\n }\r\n }\r\n\r\n getPieces (): ArmorPiece[] {\r\n return [\r\n this.head,\r\n this.chest,\r\n this.arms,\r\n this.waist,\r\n this.legs,\r\n ]\r\n }\r\n\r\n evaluate (\r\n armorEval: ArmorEvaluation,\r\n decoEval: DecoEvaluation,\r\n activations: SkillActivationMap,\r\n ): Evaluation {\r\n const totalDefense: Defense = { base: 0, max: 0 }\r\n let totalResistance: Resistance = [0, 0, 0, 0, 0]\r\n\r\n // iterate over all armor pieces\r\n for (const piece of this.getPieces()) {\r\n totalDefense.base += piece.defense.base\r\n totalDefense.max += piece.defense.max\r\n totalResistance = piece.resistance.map((res, i) => res + totalResistance[i])\r\n }\r\n\r\n // get total skills\r\n const decoSkills = new EquipmentSkills()\r\n decoEval.decos.forEach(d => decoSkills.addSkills(d.skills))\r\n const skills = new EquipmentSkills(armorEval.skills)\r\n skills.addSkills(new EquipmentSkills(decoSkills))\r\n\r\n // get activations\r\n const a: SkillActivation[] = []\r\n for (const [sId, sVal] of skills) {\r\n if (Math.abs(sVal) < 10) {\r\n continue\r\n }\r\n\r\n const activationsOfSkill = activations.get(sId)!\r\n .filter(act => {\r\n return act.isPositive\r\n ? sVal >= act.requiredPoints\r\n : sVal <= act.requiredPoints\r\n })\r\n a.push(...activationsOfSkill)\r\n }\r\n\r\n // build, save and return model\r\n const thisEval: Evaluation = {\r\n defense: totalDefense,\r\n resistance: totalResistance,\r\n activations: a,\r\n skills,\r\n torsoUp: armorEval.torsoUp,\r\n }\r\n this.evaluation = thisEval\r\n return thisEval\r\n }\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nenum ArmorType {\r\n ALL = 0,\r\n BLADEMASTER = 1,\r\n GUNNER = 2,\r\n}\r\n\r\nexport default ArmorType\r\n","import { DUMMY_PIECE, MAX_RARITY, TORSO_UP_ID } from '../data-provider/data-provider.module'\r\nimport ArmorPiece from '../data-provider/models/equipment/ArmorPiece'\r\nimport ArmorType from '../data-provider/models/equipment/ArmorType'\r\nimport Charm from '../data-provider/models/equipment/Charm'\r\nimport EquipmentCategory from '../data-provider/models/equipment/EquipmentCategory'\r\nimport EquipmentMin from '../data-provider/models/equipment/EquipmentMin'\r\nimport EquipmentSkills from '../data-provider/models/equipment/EquipmentSkills'\r\nimport Rarity from '../data-provider/models/equipment/Rarity'\r\nimport SkilledItem from '../data-provider/models/equipment/SkilledItem'\r\nimport Slots from '../data-provider/models/equipment/Slots'\r\nimport SkillActivation from '../data-provider/models/skills/SkillActivation'\r\n\r\nconst filterType = (piece: ArmorPiece, type: ArmorType) => {\r\n return piece.type === ArmorType.ALL || piece.type === type\r\n}\r\n\r\nconst filterExclusions = (piece: ArmorPiece, exclusionNames: string[]) => {\r\n return !exclusionNames.includes(piece.name)\r\n}\r\n\r\nconst filterRarity = (item: SkilledItem, rarity: Rarity) => {\r\n return item.rarity <= rarity\r\n}\r\n\r\nconst filterHasSkill = (item: SkilledItem, desiredSkills: SkillActivation[]) => {\r\n return desiredSkills.some((act) => {\r\n const s = item.skills.get(act.requiredSkill)\r\n return s && s > 0\r\n })\r\n}\r\n\r\nconst applyRarityFilter = (items: SkilledItem[], rarity: Rarity) => {\r\n if (rarity === MAX_RARITY) return items\r\n return items.filter(x => filterRarity(x, rarity))\r\n}\r\n\r\nconst applyCharmFilter = (charms: Charm[], skills: SkillActivation[]) => {\r\n // find generic slot charms\r\n const genericSlotCharms: Charm[] = []\r\n for (const slots of [3, 2, 1]) {\r\n const x = charms.find(c => c.slots === slots)\r\n if (x) {\r\n const newC: Charm = {\r\n name: `${slots} Slot Charm`,\r\n slots: slots as Slots,\r\n category: EquipmentCategory.CHARM,\r\n rarity: 0,\r\n skills: new EquipmentSkills(),\r\n }\r\n genericSlotCharms.push(newC)\r\n }\r\n }\r\n\r\n // build list of charms with wanted skills or with slots\r\n const result = charms\r\n .filter(x => filterHasSkill(x, skills))\r\n .concat(...genericSlotCharms)\r\n\r\n // return list with dummy charm if there are no pieces\r\n if (result.length === 0) {\r\n return [{\r\n ...DUMMY_PIECE,\r\n category: EquipmentCategory.CHARM,\r\n }]\r\n }\r\n\r\n return result\r\n}\r\n\r\nconst applyArmorFilter = (\r\n pieces: ArmorPiece[],\r\n rarity: Rarity,\r\n type: ArmorType,\r\n category: EquipmentCategory,\r\n pin: EquipmentMin | undefined,\r\n exclusions: EquipmentMin[],\r\n skills: SkillActivation[],\r\n) => {\r\n if (pin) return [pieces.find(x => x.name === pin.name)!]\r\n\r\n const excludedNames = exclusions.map(e => e.name)\r\n\r\n const rarityFiltered = applyRarityFilter(pieces, rarity) as ArmorPiece[]\r\n const typeFiltered = rarityFiltered.filter(p => filterType(p, type))\r\n const exclusionFiltered = typeFiltered.filter(p => filterExclusions(p, excludedNames))\r\n const sorted = exclusionFiltered.sort((a, b) => b.defense.max - a.defense.max)\r\n\r\n // find generic slot pieces with highest defense\r\n const genericSlotPieces: ArmorPiece[] = []\r\n for (const slots of [3, 2, 1]) {\r\n const x = sorted.find(p => p.slots === slots)\r\n if (x) {\r\n const p: ArmorPiece = {\r\n type: x.type,\r\n defense: x.defense,\r\n resistance: x.resistance,\r\n name: `${slots} Slot Piece`,\r\n slots: slots as Slots,\r\n category: x.category,\r\n rarity: x.rarity,\r\n skills: new EquipmentSkills(),\r\n isGeneric: true,\r\n }\r\n if (filterExclusions(p, excludedNames)) genericSlotPieces.push(p)\r\n }\r\n }\r\n\r\n // find piece with torso up with highest defense\r\n const torsoUpPieces: ArmorPiece[] = [sorted.find(p => p.skills.has(TORSO_UP_ID))]\r\n .filter(x => x !== undefined)\r\n .map(x => {\r\n const renamed: ArmorPiece = {\r\n ...x!,\r\n name: 'Torso Up Piece',\r\n isGeneric: true,\r\n }\r\n return renamed\r\n })\r\n .filter(x => filterExclusions(x, excludedNames)) as ArmorPiece[]\r\n\r\n // build list of pieces with wanted skills, with slots, or with torso up\r\n const result = sorted\r\n .filter(x => filterHasSkill(x, skills))\r\n .concat(...genericSlotPieces)\r\n .concat(...torsoUpPieces)\r\n\r\n // return list with dummy element if there are no pieces\r\n if (result.length === 0) {\r\n return [{\r\n ...DUMMY_PIECE,\r\n type,\r\n category,\r\n }]\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport {\r\n filterType,\r\n filterRarity,\r\n filterHasSkill,\r\n applyRarityFilter,\r\n applyCharmFilter,\r\n applyArmorFilter,\r\n}\r\n","import { TORSO_UP_ID } from '../data-provider/data-provider.module'\r\nimport Decoration from '../data-provider/models/equipment/Decoration'\r\nimport EquipmentSkills from '../data-provider/models/equipment/EquipmentSkills'\r\nimport Slots from '../data-provider/models/equipment/Slots'\r\nimport DecoPermutation from './models/DecoPermutation'\r\nimport ScoredSkilledEquipment from './models/ScoredSkilledEquipment'\r\n\r\n/** get score of a skill map relative to wanted skills */\r\nconst getScoreFromSkillMap = (m: EquipmentSkills, w: EquipmentSkills): number => {\r\n let score = 0\r\n for (const [sId] of w) {\r\n score += m.get(sId) || 0\r\n }\r\n\r\n return score\r\n}\r\n\r\nconst scoreTorsoUpPieces = (piece: ScoredSkilledEquipment, maxTorsoScore: number) => {\r\n if (piece.skills.has(TORSO_UP_ID)) {\r\n const newPiece: ScoredSkilledEquipment = {\r\n ...piece,\r\n score: maxTorsoScore,\r\n }\r\n\r\n return newPiece\r\n }\r\n\r\n return piece\r\n}\r\n\r\n/** apply score to a list of decos */\r\nconst evaluateListOfDecos = (decos: Decoration[], wantedSkills: EquipmentSkills): DecoPermutation => {\r\n const skillMap: EquipmentSkills = new EquipmentSkills()\r\n decos.forEach(deco => skillMap.addSkills(deco.skills))\r\n\r\n const score = getScoreFromSkillMap(skillMap, wantedSkills)\r\n\r\n return {\r\n skills: skillMap,\r\n decos,\r\n score,\r\n }\r\n}\r\n\r\n/**\r\n * checks if deco permutation is the same or better than comparison in respect to wanted skills\r\n * returns 0 if better/different, returns 1 if same, returns 2 if worse\r\n */\r\nconst decoPermWorseOrSameAsComparison = (perm: DecoPermutation, comparison: DecoPermutation, wantedSkills: EquipmentSkills) => {\r\n const arr = []\r\n for (const w of Array.from(wantedSkills.entries())) {\r\n const wId = w[0]\r\n const a = perm.skills.get(wId)\r\n const b = comparison.skills.get(wId)\r\n\r\n if (a > b) return 0\r\n if (a === b) arr.push(1)\r\n else arr.push(2)\r\n }\r\n return Math.max(...arr)\r\n}\r\n\r\n/** returns a mapping of slot level to the amount of score it is worth */\r\nconst getDecoSlotScoreMap = (decoPermutationsPerSlotLevel: Map): Map => {\r\n const m = new Map(Array.from(decoPermutationsPerSlotLevel.entries()).map(([slotLevel, permList]) => {\r\n return [slotLevel, Math.max(...permList.map(x => x.score))]\r\n }))\r\n m.set(0, 0)\r\n\r\n return m\r\n}\r\n\r\n/** prune a list of deco permutations of all duplicates and downgrades */\r\nconst pruneDecoPermutations = (permList: DecoPermutation[], wantedSkills: EquipmentSkills): DecoPermutation[] => {\r\n // we go through entire list left through right => x\r\n // for each ele, we check the entire list again => y\r\n // if y is an upgrade of x, then x will be filtered out\r\n // if y is the same as x, and y is further right in the list, then x will be filtered\r\n // only if x has no upgrade, and no element right of it that is the same will it remain in the list\r\n const res = permList\r\n .filter((x, i) => {\r\n let shouldBeFiltered: boolean = false\r\n\r\n for (let j = 0; j < permList.length; j++) {\r\n if (i === j) continue\r\n\r\n const y = permList[j]\r\n const v = decoPermWorseOrSameAsComparison(x, y, wantedSkills)\r\n\r\n if (v === 2) {\r\n shouldBeFiltered = true\r\n break\r\n }\r\n\r\n if (j > i && v === 1) {\r\n shouldBeFiltered = true\r\n break\r\n }\r\n }\r\n\r\n return !shouldBeFiltered\r\n })\r\n\r\n return res\r\n}\r\n\r\nexport {\r\n getScoreFromSkillMap,\r\n scoreTorsoUpPieces,\r\n evaluateListOfDecos,\r\n decoPermWorseOrSameAsComparison,\r\n getDecoSlotScoreMap,\r\n pruneDecoPermutations,\r\n}\r\n","import Decoration from '../../data-provider/models/equipment/Decoration'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport Slots from '../../data-provider/models/equipment/Slots'\r\nimport DecoMinSlotMap from './DecoMinSlotMap'\r\nimport DecoPermutation from './DecoPermutation'\r\n\r\nexport default class DecoEvaluation {\r\n decoMinSlotMap: DecoMinSlotMap\r\n unusedSlotsSum: number\r\n missingSkills: EquipmentSkills\r\n decos: Decoration[] = []\r\n requiredSlots: number = 0\r\n\r\n constructor (\r\n decoMinSlotMap: DecoMinSlotMap,\r\n unusedSlotsSum: number,\r\n missingSkills: EquipmentSkills,\r\n decos?: Decoration[],\r\n requiredSlots?: number,\r\n ) {\r\n this.decoMinSlotMap = decoMinSlotMap\r\n this.unusedSlotsSum = unusedSlotsSum\r\n this.missingSkills = missingSkills\r\n if (decos) this.decos = decos\r\n this.requiredSlots = requiredSlots || this.calculateRequiredSlots()\r\n }\r\n\r\n copy () {\r\n return new DecoEvaluation(\r\n this.decoMinSlotMap,\r\n this.unusedSlotsSum,\r\n new EquipmentSkills(this.missingSkills),\r\n this.decos.map(x => x),\r\n this.requiredSlots,\r\n )\r\n }\r\n\r\n calculateRequiredSlots (): number {\r\n let newRequiredSlots: number = 0\r\n for (const w of this.missingSkills) {\r\n const sId = w[0]\r\n const sVal = w[1]\r\n newRequiredSlots += this.decoMinSlotMap.getMinRequiredSlotsForSkill(sId, sVal)\r\n }\r\n this.requiredSlots = newRequiredSlots\r\n return newRequiredSlots\r\n }\r\n\r\n addPerm (perm: DecoPermutation, slotLevel: Slots) {\r\n this.unusedSlotsSum -= slotLevel\r\n this.decos.push(...perm.decos)\r\n\r\n // use custom loop instead of EquipmentSkills.substractSkills and DecoEvaluation.calculateRequiredSlots\r\n // to save on processing because this method is called a lot\r\n let newRequiredSlots: number = 0\r\n for (const w of this.missingSkills) {\r\n const sId = w[0]\r\n const sVal = w[1]\r\n\r\n const newVal = sVal - perm.skills.get(sId)\r\n this.missingSkills.set(sId, newVal)\r\n newRequiredSlots += this.decoMinSlotMap.getMinRequiredSlotsForSkill(sId, newVal)\r\n }\r\n\r\n this.requiredSlots = newRequiredSlots\r\n }\r\n}\r\n","import Decoration from '../../data-provider/models/equipment/Decoration'\r\nimport EquipmentSkills from '../../data-provider/models/equipment/EquipmentSkills'\r\nimport GameID from '../../data-provider/models/GameId'\r\n\r\nfunction * decoVariationMinSlotsGenerator (\r\n decosOfSkill: Decoration[],\r\n skillId: GameID,\r\n requiredPoints: number,\r\n requiredSlots: number,\r\n existingPoints: number,\r\n): Generator {\r\n for (const deco of decosOfSkill) {\r\n const newExistingPoints = existingPoints + deco.skills.get(skillId)!\r\n const newRequiredSlots = requiredSlots + deco.requiredSlots\r\n\r\n if (newExistingPoints >= requiredPoints) {\r\n yield newRequiredSlots\r\n } else {\r\n yield * decoVariationMinSlotsGenerator(\r\n decosOfSkill,\r\n skillId,\r\n requiredPoints,\r\n newRequiredSlots,\r\n newExistingPoints,\r\n )\r\n }\r\n }\r\n}\r\n\r\n/** calculates and saves how many slots are required to get x points of a certain skill */\r\nexport default class DecoMinSlotMap {\r\n private static readonly DUMMY_SCORE = 1000\r\n\r\n private decorationsOfSkillMap: Map = new Map()\r\n private calculations: Map> = new Map()\r\n\r\n constructor (allDecos: Decoration[], wantedSkills: EquipmentSkills) {\r\n for (const w of wantedSkills) {\r\n const sId = w[0]\r\n\r\n // set decorations of skill\r\n const decosOfSkill = allDecos\r\n .filter(x => x.skills.get(sId) > 0)\r\n .sort((a, b) => b.skills.get(sId) - a.skills.get(sId))\r\n this.decorationsOfSkillMap.set(sId, decosOfSkill)\r\n\r\n // init calculation map of that skill\r\n this.calculations.set(sId, new Map())\r\n }\r\n }\r\n\r\n private calculateMinRequiredSlots (skillId: GameID, skillPoints: number): number {\r\n const decosOfSkill = this.decorationsOfSkillMap.get(skillId)!\r\n if (decosOfSkill.length === 0) return DecoMinSlotMap.DUMMY_SCORE\r\n\r\n let minRequiredSlots = DecoMinSlotMap.DUMMY_SCORE\r\n for (const reqSlots of decoVariationMinSlotsGenerator(decosOfSkill, skillId, skillPoints, 0, 0)) {\r\n if (reqSlots < minRequiredSlots) minRequiredSlots = reqSlots\r\n }\r\n\r\n return minRequiredSlots\r\n }\r\n\r\n getMinRequiredSlotsForSkill (skillId: GameID, skillPoints: number): number {\r\n const m = this.calculations.get(skillId)!\r\n\r\n if (skillPoints <= 0) return 0\r\n if (m.has(skillPoints)) return m.get(skillPoints)!\r\n\r\n const newCalc = this.calculateMinRequiredSlots(skillId, skillPoints)\r\n m.set(skillPoints, newCalc)\r\n return newCalc\r\n }\r\n}\r\n","import { DUMMY_PIECE } from '../data-provider/data-provider.module'\r\nimport ArmorPiece from '../data-provider/models/equipment/ArmorPiece'\r\nimport ArmorType from '../data-provider/models/equipment/ArmorType'\r\nimport Charm from '../data-provider/models/equipment/Charm'\r\nimport Decoration from '../data-provider/models/equipment/Decoration'\r\nimport EquipmentCategory from '../data-provider/models/equipment/EquipmentCategory'\r\nimport EquipmentSkills from '../data-provider/models/equipment/EquipmentSkills'\r\nimport SkilledEquipment from '../data-provider/models/equipment/SkilledEquipment'\r\nimport Slots from '../data-provider/models/equipment/Slots'\r\nimport StaticSkillData from '../data-provider/models/skills/StaticSkillData'\r\nimport ArmorEvaluation from '../scorer/models/ArmorEvaluation'\r\nimport ArmorSet from './models/ArmorSet'\r\nimport DecoPermutation from '../scorer/models/DecoPermutation'\r\nimport SearchConstraints from './models/SearchConstraints'\r\nimport ScoredSkilledEquipment from '../scorer/models/ScoredSkilledEquipment'\r\nimport { applyArmorFilter, applyCharmFilter, applyRarityFilter, filterHasSkill } from '../data-filter/data-filter.module'\r\nimport { pruneDecoPermutations, evaluateListOfDecos, getDecoSlotScoreMap, getScoreFromSkillMap, scoreTorsoUpPieces } from '../scorer/scorer.module'\r\nimport DecoEvaluation from '../scorer/models/DecoEvaluation'\r\nimport DecoMinSlotMap from '../scorer/models/DecoMinSlotMap'\r\n\r\n// #region initial search data\r\n/** get initial armor eval with all dummy pieces */\r\nconst getIntiailArmorEval = (type: ArmorType) => {\r\n const categoryArray = [\r\n EquipmentCategory.HEAD,\r\n EquipmentCategory.CHEST,\r\n EquipmentCategory.ARMS,\r\n EquipmentCategory.WAIST,\r\n EquipmentCategory.LEGS,\r\n EquipmentCategory.CHARM,\r\n ]\r\n\r\n const pieces: ScoredSkilledEquipment[] = categoryArray.map((x) => {\r\n return {\r\n ...DUMMY_PIECE,\r\n type,\r\n category: x,\r\n score: 0,\r\n }\r\n })\r\n\r\n return new ArmorEvaluation(pieces)\r\n}\r\n\r\n/** returns all the ways you can possibly arrange the viable decorations on a given slot level (1, 2, 3) */\r\nconst getDecorationVariationsPerSlotLevel = (\r\n decorations: Decoration[],\r\n wantedSkills: EquipmentSkills,\r\n): Map => {\r\n // get all decorations of specific slot\r\n const rawOneSlots = decorations.filter(d => d.requiredSlots === 1)\r\n const rawTwoSlots = decorations.filter(d => d.requiredSlots === 2)\r\n const rawThreeSlots = decorations.filter(d => d.requiredSlots === 3)\r\n\r\n // create dummy for unused slots\r\n const dummy: Decoration = {\r\n name: 'None',\r\n rarity: 0,\r\n requiredSlots: 0,\r\n skills: new EquipmentSkills(),\r\n }\r\n\r\n // get all variations for 1 slot\r\n const oneSlotVariations = rawOneSlots.map(x => [x]).concat([[dummy]])\r\n const oneSlotEvaluated = pruneDecoPermutations(oneSlotVariations.map(x => evaluateListOfDecos(x, wantedSkills)), wantedSkills)\r\n const prunedOneSlotVariations = oneSlotEvaluated.map(x => x.decos)\r\n\r\n // get all variations for 2 slots\r\n const twoOneSlotDecoVariations = []\r\n for (let i = 0; i < prunedOneSlotVariations.length; i++) {\r\n const x = prunedOneSlotVariations[i]\r\n for (let j = Math.abs(i); j < prunedOneSlotVariations.length; j++) {\r\n const y = prunedOneSlotVariations[j]\r\n twoOneSlotDecoVariations.push(x.concat(y))\r\n }\r\n }\r\n const twoSlotVariations = rawTwoSlots\r\n .map(x => [x])\r\n .concat(twoOneSlotDecoVariations)\r\n const twoSlotEvaluated = pruneDecoPermutations(twoSlotVariations.map(x => evaluateListOfDecos(x, wantedSkills)), wantedSkills)\r\n\r\n // get all variations for 3 slots\r\n const threeOneSlotDecoVariations = []\r\n for (let i = 0; i < prunedOneSlotVariations.length; i++) {\r\n const x = prunedOneSlotVariations[i]\r\n for (let j = Math.abs(i); j < twoOneSlotDecoVariations.length; j++) {\r\n const y = twoOneSlotDecoVariations[j]\r\n threeOneSlotDecoVariations.push(x.concat(y))\r\n }\r\n }\r\n const oneAndTwoSlotDecoVariations = []\r\n for (const oneSlot of rawOneSlots) {\r\n for (const twoSlot of rawTwoSlots) {\r\n oneAndTwoSlotDecoVariations.push([oneSlot, twoSlot])\r\n }\r\n }\r\n const threeSlotVariations = rawThreeSlots\r\n .map(x => [x])\r\n .concat(oneAndTwoSlotDecoVariations)\r\n .concat(threeOneSlotDecoVariations)\r\n const threeSlotEvaluated = pruneDecoPermutations(threeSlotVariations.map(x => evaluateListOfDecos(x, wantedSkills)), wantedSkills)\r\n\r\n // return pruned evaluations\r\n return new Map([\r\n [0, []],\r\n [1, oneSlotEvaluated],\r\n [2, twoSlotEvaluated],\r\n [3, threeSlotEvaluated],\r\n ])\r\n}\r\n// #endregion\r\n\r\n// #region search logic\r\nfunction * getArmorPermutations (\r\n equipment: ScoredSkilledEquipment[][],\r\n previousEval: ArmorEvaluation,\r\n maximumRemainingScore: number[],\r\n requiredScore: number,\r\n categoryIndex: number,\r\n): Generator {\r\n for (const piece of equipment[categoryIndex]) {\r\n // create and eval new set\r\n const thisEval = previousEval.copy()\r\n thisEval.addPiece(piece)\r\n\r\n // yield it if score is sufficient\r\n if (thisEval.score >= requiredScore) yield thisEval\r\n // otherwise check if its possible to still find sets on this branch and break if not\r\n else {\r\n if ((thisEval.score + maximumRemainingScore[categoryIndex]) < requiredScore) break\r\n }\r\n\r\n // then yield the next loop if there is one\r\n if (categoryIndex > 0) {\r\n yield * getArmorPermutations(\r\n equipment,\r\n thisEval,\r\n maximumRemainingScore,\r\n requiredScore,\r\n categoryIndex - 1,\r\n )\r\n }\r\n }\r\n}\r\n\r\nfunction * getDecoPermutations (\r\n decoPermutationsPerSlotLevel: Map,\r\n slotsOfArmor: Slots[],\r\n previousEval: DecoEvaluation,\r\n slotIndex: number,\r\n): Generator {\r\n const slotLevel = slotsOfArmor[slotIndex]\r\n for (const perm of decoPermutationsPerSlotLevel.get(slotLevel)!) {\r\n // create and eval new set\r\n const thisEval = previousEval.copy()\r\n thisEval.addPerm(perm, slotLevel)\r\n\r\n // yield it if score is sufficient\r\n if (thisEval.requiredSlots <= 0) yield thisEval\r\n // otherwise check if its possible to still find sets on this branch and break if not\r\n else {\r\n if (thisEval.unusedSlotsSum < thisEval.requiredSlots) continue\r\n }\r\n\r\n // then yield the next loop if there is one\r\n if (slotIndex > 0) {\r\n yield * getDecoPermutations(\r\n decoPermutationsPerSlotLevel,\r\n slotsOfArmor,\r\n thisEval,\r\n slotIndex - 1,\r\n )\r\n }\r\n }\r\n}\r\n\r\nconst transformTorsoUpDecoPermutation = (perm: DecoPermutation, torsoUp: number): DecoPermutation => {\r\n const factor = torsoUp + 1\r\n\r\n const score = perm.score * factor\r\n const decos = perm.decos.map(d => {\r\n const newSkills = new EquipmentSkills(d.skills)\r\n newSkills.multiply(factor)\r\n const newDeco: Decoration = {\r\n ...d,\r\n affectedByTorsoUp: true,\r\n name: d.name.concat(' (TorsoUp)'),\r\n skills: newSkills,\r\n }\r\n\r\n return newDeco\r\n })\r\n const newTotalSkills = new EquipmentSkills(perm.skills)\r\n newTotalSkills.multiply(factor)\r\n const skills = newTotalSkills\r\n\r\n return {\r\n score,\r\n decos,\r\n skills,\r\n }\r\n}\r\n\r\nconst findSufficientDecoPermutation = (\r\n armorEval: ArmorEvaluation,\r\n constraints: SearchConstraints,\r\n wantedSkills: EquipmentSkills,\r\n decoMinSlotMap: DecoMinSlotMap,\r\n decoPermutationsPerSlotLevel: Map,\r\n): DecoEvaluation | undefined => {\r\n const _inner = (\r\n _slotList: Slots[],\r\n _initialEval: DecoEvaluation,\r\n ): DecoEvaluation | undefined => {\r\n if (_initialEval.requiredSlots <= 0) return _initialEval\r\n if (_initialEval.unusedSlotsSum < _initialEval.requiredSlots) return undefined\r\n if (_slotList.length === 0) return undefined\r\n\r\n const decoEvaluation = getDecoPermutations(\r\n decoPermutationsPerSlotLevel,\r\n _slotList,\r\n _initialEval,\r\n _slotList.length - 1,\r\n ).next().value\r\n\r\n if (decoEvaluation) return decoEvaluation\r\n return undefined\r\n }\r\n\r\n let r: DecoEvaluation | undefined\r\n const torsoSlots = armorEval.equipment[EquipmentCategory.CHEST].slots\r\n const missingSkills = new EquipmentSkills(Array.from(wantedSkills).map(([sId, sVal]) => {\r\n return [sId, sVal - armorEval.skills.get(sId)]\r\n }))\r\n const slotSum = armorEval.totalSlots + constraints.weaponSlots\r\n\r\n if (armorEval.torsoUp > 0 && torsoSlots > 0) {\r\n // if torso up, fill the chest slots and then iterate over permutations from there\r\n const slotList = armorEval.getSlotsExceptChest().concat(constraints.weaponSlots ? constraints.weaponSlots : [])\r\n const slotSumWithoutTorso = slotSum - torsoSlots\r\n const initialEval = new DecoEvaluation(decoMinSlotMap, slotSumWithoutTorso, missingSkills)\r\n for (const chestPerm of decoPermutationsPerSlotLevel.get(torsoSlots)!) {\r\n const transformedPerm = transformTorsoUpDecoPermutation(chestPerm, armorEval.torsoUp)\r\n const copiedEval = initialEval.copy()\r\n copiedEval.addPerm(transformedPerm, torsoSlots)\r\n const temp = _inner(slotList, copiedEval)\r\n if (temp) {\r\n r = temp\r\n break\r\n }\r\n }\r\n } else {\r\n // otherwise just iterate over permutations\r\n const slotList = armorEval.getSlots().concat(constraints.weaponSlots ? constraints.weaponSlots : [])\r\n r = _inner(slotList, new DecoEvaluation(decoMinSlotMap, armorEval.totalSlots + constraints.weaponSlots, missingSkills))\r\n }\r\n\r\n return r\r\n}\r\n\r\nconst findSets = (\r\n armorPieces: ArmorPiece[][],\r\n decorations: Decoration[],\r\n charms: Charm[],\r\n constraints: SearchConstraints,\r\n skillData: StaticSkillData,\r\n) => {\r\n const wantedSkills: EquipmentSkills = new EquipmentSkills(constraints.skillActivations.map(x => [x.requiredSkill, x.requiredPoints]))\r\n const decoPermutationsPerSlotLevel = getDecorationVariationsPerSlotLevel(decorations, wantedSkills)\r\n const slotScoreMap = getDecoSlotScoreMap(decoPermutationsPerSlotLevel)\r\n const initialArmorEval = getIntiailArmorEval(constraints.armorType)\r\n const wantedScore = getScoreFromSkillMap(wantedSkills, wantedSkills) - slotScoreMap.get(constraints.weaponSlots)!\r\n const decoMinSlotMap = new DecoMinSlotMap(decorations, wantedSkills)\r\n\r\n const skilledEquipment: SkilledEquipment[][] = armorPieces\r\n skilledEquipment.push(charms)\r\n\r\n // score equipment\r\n const scoredEquipment: ScoredSkilledEquipment[][] = skilledEquipment\r\n .map(equList => equList.map((equ) => {\r\n const score = slotScoreMap.get(equ.slots)! + getScoreFromSkillMap(equ.skills, wantedSkills)\r\n return {\r\n ...equ,\r\n score,\r\n }\r\n }))\r\n\r\n // reorder equipment and manually rescore torso up pieces\r\n const maxTorsoScore = Math.max(...scoredEquipment[1].map(x => x.score))\r\n const readjustedEquipment = [\r\n scoredEquipment[1], // chest first to simplify torso up calculation\r\n scoredEquipment[0].map(x => scoreTorsoUpPieces(x, maxTorsoScore)),\r\n scoredEquipment[2], // arms cant have torso up\r\n scoredEquipment[3].map(x => scoreTorsoUpPieces(x, maxTorsoScore)),\r\n scoredEquipment[4].map(x => scoreTorsoUpPieces(x, maxTorsoScore)),\r\n scoredEquipment[5], // charm cant have torso up\r\n ]\r\n\r\n // sort equipment by score\r\n const sorted = readjustedEquipment.map(l => l.sort((a, b) => b.score - a.score))\r\n\r\n // get list of maximum score of remaining iterations\r\n const maximumRemainingScore = [0]\r\n let sumOfAllIterations = 0\r\n sorted.map(x => x[0].score).forEach((m) => {\r\n sumOfAllIterations += m\r\n maximumRemainingScore.push(sumOfAllIterations)\r\n })\r\n\r\n let length = 0\r\n const validSets: ArmorSet[] = []\r\n // try all viable armor permuations\r\n for (const armorEvaluation of getArmorPermutations(\r\n sorted,\r\n initialArmorEval,\r\n maximumRemainingScore,\r\n wantedScore,\r\n sorted.length - 1,\r\n )) {\r\n // find first sufficient deco eval\r\n const decoEvaluation = findSufficientDecoPermutation(\r\n armorEvaluation,\r\n constraints,\r\n wantedSkills,\r\n decoMinSlotMap,\r\n decoPermutationsPerSlotLevel,\r\n )\r\n\r\n // build and append set if there is any deco eval\r\n if (decoEvaluation) {\r\n const set = new ArmorSet(armorEvaluation, decoEvaluation, skillData.skillActivation)\r\n validSets.push(set)\r\n\r\n // exit if enough sets found\r\n if (length === constraints.limit - 1) break\r\n length++\r\n }\r\n }\r\n\r\n return validSets\r\n}\r\n// #endregion\r\n\r\n// #region entrypoint\r\nconst search = (\r\n armorPieces: ArmorPiece[][],\r\n decorations: Decoration[],\r\n charms: Charm[],\r\n constraints: SearchConstraints,\r\n skillData: StaticSkillData,\r\n) => {\r\n const a = armorPieces\r\n .map((piecesOfCategory, i) => {\r\n return applyArmorFilter(piecesOfCategory, constraints.armorRarity, constraints.armorType, i, constraints.pins[i], constraints.exclusions[i], constraints.skillActivations)\r\n })\r\n const c = applyCharmFilter(charms, constraints.skillActivations)\r\n const d = applyRarityFilter(decorations, constraints.decoRarity)\r\n .filter(x => filterHasSkill(x, constraints.skillActivations))\r\n\r\n return findSets(\r\n a,\r\n d as Decoration[],\r\n c,\r\n constraints,\r\n skillData,\r\n )\r\n}\r\n// #endregion\r\n\r\nexport { search }\r\n","import Rarity from '../../data-provider/models/equipment/Rarity'\r\nimport Slots from '../../data-provider/models/equipment/Slots'\r\nimport GlobalSettings from '../models/GlobalSettings'\r\n\r\nexport const getGlobalSettings = (): GlobalSettings => {\r\n const armorSelect = document.getElementById('armor-type') as HTMLSelectElement\r\n const weaponSlots = document.getElementById('weapon-slots') as HTMLSelectElement\r\n const armorRarity = document.getElementById('armor-rarity') as HTMLSelectElement\r\n const decoRarity = document.getElementById('deco-rarity') as HTMLSelectElement\r\n const limit = document.getElementById('search-limit') as HTMLInputElement\r\n\r\n return {\r\n armorType: parseInt(armorSelect.value),\r\n weaponSlots: parseInt(weaponSlots.value) as Slots,\r\n armorRarity: parseInt(armorRarity.value) as Rarity,\r\n decoRarity: parseInt(decoRarity.value) as Rarity,\r\n limit: parseInt(limit.value),\r\n }\r\n}\r\n","import ArmorSet from '../../searcher/models/ArmorSet'\r\nimport SearchConstraints from '../../searcher/models/SearchConstraints'\r\nimport StaticSkillData from '../../data-provider/models/skills/StaticSkillData'\r\nimport UserEquipmentSettings from '../../data-provider/models/user/UserEquipmentSettings'\r\nimport { htmlToElement } from '../../helper/html.helper'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport SkillActivationMap from '../../data-provider/models/skills/SkillActivationMap'\r\nimport { addExclusion, addPin, removeExlusion, removePin } from './eq-settings.component'\r\n\r\nexport function * moreSkillsIterator (skillActivations: SkillActivationMap) {\r\n const rContainer = clearAndGetResultsContainer()\r\n const countDiv = document.createElement('div')\r\n rContainer.appendChild(countDiv)\r\n\r\n const totalActCount = Array.from(skillActivations.values())\r\n .reduce((sum, c) => sum + c.length, 0)\r\n\r\n for (let i = 0; i < totalActCount; i++) {\r\n countDiv.innerHTML = `Checked ${i} possible skills ...`\r\n yield i\r\n }\r\n}\r\n\r\nconst onSetClick = (tbNode: Node, viewGetter: () => Node) => {\r\n const children = tbNode.childNodes\r\n const finalNode = children[children.length - 1] as HTMLTableRowElement\r\n\r\n // toggle if details have already been rendered\r\n if (finalNode.classList.contains('result-set-details')) {\r\n finalNode.classList.toggle('hidden')\r\n return\r\n }\r\n\r\n // render and append them otherwise\r\n tbNode.appendChild(viewGetter())\r\n}\r\n\r\nconst PINS_OR_EXCL_ACTIVE_BANNER = htmlToElement(`\r\n
\r\n You have some pins or exclusions active, which may be limiting results. You may find some results by removing those pins or exclusions.\r\n
\r\n`)\r\n\r\nconst getExpandedView = (set: ArmorSet, skillData: StaticSkillData, searchParams: SearchConstraints) => {\r\n // build header\r\n const header = htmlToElement(`\r\n \r\n Skill\r\n Weapon\r\n Head\r\n Chest\r\n Arms\r\n Waist\r\n Legs\r\n Deco\r\n Total\r\n Active\r\n \r\n `)\r\n\r\n // build skills rows\r\n const skillRows = Array.from(set.evaluation!.skills.entries())\r\n .sort(([_a, a], [_b, b]) => b - a)\r\n .map(([sId, sVal]) => {\r\n const r = document.createElement('tr')\r\n\r\n const computedDecoValue = set.decos\r\n .map(d => d.skills.get(sId)!)\r\n .reduce((sum, c) => sum + c, 0)\r\n\r\n r.appendChild(htmlToElement(`${skillData.skillName.get(sId) ? skillData.skillName.get(sId)! : ''}`))\r\n r.appendChild(htmlToElement('')) // weapon\r\n for (const p of set.getPieces()) {\r\n r.append(htmlToElement(`${p.skills.get(sId) ? p.skills.get(sId)! : ''}`))\r\n }\r\n r.append(htmlToElement(`${computedDecoValue || ''}`))\r\n r.append(htmlToElement(`${sVal}`))\r\n const possibleAct = set.evaluation!.activations.find(a => a.requiredSkill === sId)\r\n if (possibleAct) r.append(htmlToElement(`${possibleAct.name}`))\r\n return r\r\n })\r\n\r\n // build slot list\r\n const slotRow = document.createElement('tr')\r\n slotRow.appendChild(htmlToElement('Slots'))\r\n const rawSlowList = [searchParams.weaponSlots, ...set.getPieces().map(x => x.slots)]\r\n rawSlowList.forEach(s => slotRow.appendChild(htmlToElement(`${s}`)))\r\n\r\n // append elements to table\r\n const skillTable = htmlToElement('
')\r\n skillTable.appendChild(header)\r\n skillRows.forEach(x => skillTable.appendChild(x))\r\n skillTable.appendChild(slotRow)\r\n\r\n // build deco list\r\n const decoNameMap: Map = new Map()\r\n for (const deco of set.decos) {\r\n const name = deco.name\r\n decoNameMap.set(name, 1 + (decoNameMap.get(name) || 0))\r\n }\r\n const decoNameList = Array.from(decoNameMap.entries())\r\n .map(([name, amount]) => `${amount} x ${name}`)\r\n const decoNameString = decoNameList.join(', ')\r\n const decoNameContainer = htmlToElement(`\r\n
${decoNameString}
\r\n `)\r\n\r\n // build piece table\r\n const pieceTable = htmlToElement('
')\r\n const pieceTableHeader = htmlToElement('DefPiecePinExcl')\r\n pieceTable.appendChild(pieceTableHeader)\r\n for (const piece of set.getPieces()) {\r\n const pieceTableEle = document.createElement('tr')\r\n const pieceTableDef = htmlToElement(`${piece.defense.max}`)\r\n const pieceTableName = htmlToElement(`${piece.name}`)\r\n\r\n const pieceTablePin = (piece.isGeneric\r\n ? htmlToElement('')\r\n : htmlToElement('✓')) as HTMLElement\r\n const pieceTableExcl = htmlToElement('X') as HTMLElement\r\n if (UserEquipmentSettings.Instance.hasPin(piece)) pieceTablePin.classList.add('pin-highlighted')\r\n if (UserEquipmentSettings.Instance.hasExclusion(piece)) pieceTableExcl.classList.add('excl-highlighted')\r\n\r\n pieceTablePin.addEventListener('click', () => {\r\n if (piece.isGeneric) return\r\n\r\n if (UserEquipmentSettings.Instance.hasPin(piece)) {\r\n removePin(piece.category)\r\n pieceTablePin.classList.remove('pin-highlighted')\r\n } else {\r\n addPin(piece)\r\n pieceTablePin.classList.add('pin-highlighted')\r\n }\r\n })\r\n pieceTableExcl.addEventListener('click', () => {\r\n if (UserEquipmentSettings.Instance.hasExclusion(piece)) {\r\n removeExlusion(piece)\r\n pieceTableExcl.classList.remove('excl-highlighted')\r\n } else {\r\n addExclusion(piece)\r\n pieceTableExcl.classList.add('excl-highlighted')\r\n }\r\n })\r\n\r\n pieceTableEle.appendChild(pieceTableDef)\r\n pieceTableEle.appendChild(pieceTableName)\r\n pieceTableEle.appendChild(pieceTablePin)\r\n pieceTableEle.appendChild(pieceTableExcl)\r\n pieceTable.appendChild(pieceTableEle)\r\n }\r\n\r\n // return final div\r\n const tr = htmlToElement('')\r\n const td = htmlToElement('')\r\n const d = htmlToElement('
')\r\n td.appendChild(d)\r\n tr.appendChild(td)\r\n d.appendChild(pieceTable)\r\n d.appendChild(skillTable)\r\n d.appendChild(document.createElement('div')) // dummy for easy grid\r\n d.appendChild(decoNameContainer)\r\n return tr\r\n}\r\n\r\nconst getSetElement = (set: ArmorSet, skillData: StaticSkillData, searchParams: SearchConstraints) => {\r\n // get bonus and negative skills\r\n const requiredActivations = searchParams.skillActivations\r\n const unrelatedActivations = set.evaluation!.activations.filter((act) => {\r\n return !act.isPositive || // negative skill\r\n !requiredActivations.find(req => req.requiredSkill === act.requiredSkill) || // skill is not in required\r\n requiredActivations.find(req => req.requiredSkill === act.requiredSkill && act.requiredPoints > req.requiredPoints) // skill is upgrade of smth required\r\n })\r\n const unrelatedHtmlStrings = unrelatedActivations\r\n .sort((a, b) => b.requiredPoints - a.requiredPoints)\r\n .map((x) => {\r\n return `${x.name}`\r\n })\r\n\r\n // get basic display components\r\n const tb = htmlToElement('')\r\n const row1 = htmlToElement(`\r\n \r\n ${set.head.name}\r\n ${set.chest.name}\r\n ${set.arms.name}\r\n ${set.waist.name}\r\n ${set.legs.name}\r\n `)\r\n const row2 = htmlToElement(`\r\n \r\n \r\n

DEF ${set.evaluation.defense.max}

\r\n

FIR ${set.evaluation.resistance[0]}

\r\n

WAT ${set.evaluation.resistance[1]}

\r\n

ICE ${set.evaluation.resistance[2]}

\r\n

THN ${set.evaluation.resistance[3]}

\r\n

DRG ${set.evaluation.resistance[4]}

\r\n ${unrelatedHtmlStrings.join('')}\r\n \r\n `)\r\n\r\n // append basic display components\r\n const getter = () => { return getExpandedView(set, skillData, searchParams) }\r\n for (const row of [row1, row2]) {\r\n tb.appendChild(row)\r\n row.addEventListener('click', () => onSetClick(tb, getter))\r\n }\r\n\r\n return tb\r\n}\r\n\r\nconst onMoreSkillsActClick = (d: HTMLDivElement) => {\r\n const id = parseInt(d.getAttribute('data-id')!)\r\n\r\n for (const ele of Array.from(document.getElementsByClassName('search-picker-activation'))) {\r\n const thisId = parseInt(ele.getAttribute('data-id')!)\r\n if (id === thisId) {\r\n (ele as HTMLDivElement).click()\r\n break\r\n }\r\n }\r\n}\r\n\r\nconst clearAndGetResultsContainer = () => {\r\n const resultContainer = document.getElementById('search-results')!\r\n for (const c of Array.from(resultContainer.children)) c.remove()\r\n return resultContainer\r\n}\r\n\r\nexport const renderMoreSkills = (activations: SkillActivation[], pinsOrExclActive: boolean) => {\r\n const resultContainer = clearAndGetResultsContainer()\r\n\r\n if (activations.length === 0) {\r\n resultContainer.appendChild(htmlToElement(`\r\n
\r\n Can't fit more skills\r\n
\r\n `))\r\n\r\n if (pinsOrExclActive) resultContainer.appendChild(PINS_OR_EXCL_ACTIVE_BANNER)\r\n\r\n return\r\n }\r\n\r\n for (const act of activations) {\r\n const d = htmlToElement(`
`) as HTMLDivElement\r\n d.appendChild(htmlToElement(`${act.name}`))\r\n d.addEventListener('click', () => { onMoreSkillsActClick(d) })\r\n resultContainer.appendChild(d)\r\n }\r\n}\r\n\r\nexport const renderResults = (sets: ArmorSet[], skillData: StaticSkillData, searchParams: SearchConstraints, pinsOrExclActive: boolean) => {\r\n const resultContainer = clearAndGetResultsContainer()\r\n\r\n // add search param element\r\n resultContainer.appendChild(htmlToElement(`\r\n
Results for ${searchParams.skillActivations.map(x => x.name).join(', ')} (${sets.length} matches)
\r\n `))\r\n\r\n // return if no results\r\n if (sets.length === 0) {\r\n resultContainer.appendChild(htmlToElement(`\r\n
\r\n No matching armor sets\r\n
\r\n `))\r\n\r\n if (pinsOrExclActive) resultContainer.appendChild(PINS_OR_EXCL_ACTIVE_BANNER)\r\n\r\n return\r\n }\r\n\r\n // build table and table header\r\n const table = htmlToElement('
')\r\n const header = htmlToElement('HeadTorsoArmsWaistLegs')\r\n resultContainer.appendChild(table)\r\n table.appendChild(header)\r\n\r\n // build and append html elements for each armor set\r\n sets\r\n .sort((a, b) => b.evaluation.defense.max - a.evaluation.defense.max)\r\n .map(set => getSetElement(set, skillData, searchParams))\r\n .forEach(ele => table.appendChild(ele))\r\n}\r\n","import ArmorSet from '../../searcher/models/ArmorSet'\r\nimport SearchConstraints from '../../searcher/models/SearchConstraints'\r\nimport StaticEquipmentData from '../../data-provider/models/equipment/StaticEquipmentData'\r\nimport StaticSkillData from '../../data-provider/models/skills/StaticSkillData'\r\nimport { search } from '../../searcher/searcher.module'\r\nimport { getGlobalSettings } from './global-settings.component'\r\nimport { getSkillActivations, resetSkillActivations } from './picker.component'\r\nimport { moreSkillsIterator, renderMoreSkills, renderResults } from './search-results.component'\r\nimport SkillActivation from '../../data-provider/models/skills/SkillActivation'\r\nimport UserEquipmentSettings from '../../data-provider/models/user/UserEquipmentSettings'\r\nimport EquipmentMin from '../../data-provider/models/equipment/EquipmentMin'\r\n\r\nconst pinsOrExclusionsActive = (pins: (EquipmentMin | undefined)[], exclusions: EquipmentMin[][]): boolean => {\r\n return pins.some(p => p !== undefined) || exclusions.some(eL => eL.length > 0)\r\n}\r\n\r\nconst arrangeSearchData = () => {\r\n // build params\r\n const globalSettings = getGlobalSettings()\r\n const skillActivations = getSkillActivations()\r\n\r\n // return if no skill selected\r\n if (skillActivations.length === 0) {\r\n return\r\n }\r\n\r\n // sanitize activation input to only include highest version of each skill\r\n const sanitizedSkillActivations = skillActivations\r\n .filter((thisAct, i) => {\r\n return skillActivations.every((compareAct, j) => {\r\n if (i === j) return true\r\n if (thisAct.requiredSkill !== compareAct.requiredSkill) return true\r\n\r\n return thisAct.requiredPoints >= compareAct.requiredPoints\r\n })\r\n })\r\n\r\n // create search params\r\n const searchParams: SearchConstraints = {\r\n weaponSlots: globalSettings.weaponSlots,\r\n armorType: globalSettings.armorType,\r\n armorRarity: globalSettings.armorRarity,\r\n decoRarity: globalSettings.decoRarity,\r\n limit: Math.min(Math.max(globalSettings.limit, 1), 1000),\r\n skillActivations: sanitizedSkillActivations,\r\n pins: UserEquipmentSettings.Instance.pins,\r\n exclusions: UserEquipmentSettings.Instance.exclusions,\r\n }\r\n\r\n return searchParams\r\n}\r\n\r\nconst searchLogic = (equData: StaticEquipmentData, skillData: StaticSkillData) => {\r\n const searchParams = arrangeSearchData()\r\n\r\n if (!searchParams) {\r\n alert('Please select at least one skill')\r\n return\r\n }\r\n\r\n // search for sets\r\n const result = search(\r\n equData.armor,\r\n equData.decorations,\r\n [],\r\n searchParams,\r\n skillData,\r\n )\r\n\r\n // render results\r\n renderResults(result, skillData, searchParams, pinsOrExclusionsActive(searchParams.pins, searchParams.exclusions))\r\n}\r\n\r\nconst moreSkillsLogic = async (equData: StaticEquipmentData, skillData: StaticSkillData) => {\r\n const searchParams = arrangeSearchData()\r\n\r\n if (!searchParams) {\r\n alert('Please select at least one skill')\r\n return\r\n }\r\n\r\n const aquirableSkills: SkillActivation[] = []\r\n\r\n const outputIterator = moreSkillsIterator(skillData.skillActivation)\r\n\r\n for (const actMap of skillData.skillActivation) {\r\n const sActs = actMap[1]\r\n\r\n const processedActs = sActs\r\n .filter(act => act.requiredPoints >= 0)\r\n .filter(act => !searchParams.skillActivations.map(x => x.id).includes(act.id))\r\n .filter(act => !searchParams.skillActivations.find(x => act.requiredSkill === x.requiredSkill && act.requiredPoints < x.requiredPoints))\r\n .sort((a, b) => a.requiredPoints - b.requiredPoints)\r\n\r\n let breakFlag = false\r\n for (const act of processedActs) {\r\n outputIterator.next()\r\n if (breakFlag) continue\r\n\r\n const newParams: SearchConstraints = {\r\n ...searchParams,\r\n limit: 1,\r\n skillActivations: searchParams.skillActivations.concat(act),\r\n }\r\n\r\n const r = await new Promise((resolve, _reject) => {\r\n setTimeout(() => {\r\n const innerR = search(\r\n equData.armor,\r\n equData.decorations,\r\n [],\r\n newParams,\r\n skillData,\r\n )\r\n resolve(innerR)\r\n })\r\n })\r\n\r\n if (r.length === 0) breakFlag = true\r\n else aquirableSkills.push(act)\r\n }\r\n }\r\n\r\n renderMoreSkills(aquirableSkills, pinsOrExclusionsActive(searchParams.pins, searchParams.exclusions))\r\n}\r\n\r\nconst resetLogic = () => {\r\n resetSkillActivations()\r\n}\r\n\r\n/** attach handlers for control buttons */\r\nexport const attachControlListeners = (equData: StaticEquipmentData, skillData: StaticSkillData) => {\r\n const searchBtn = document.getElementById('search-btn') as HTMLButtonElement\r\n const moreSkillsBtn = document.getElementById('more-btn') as HTMLButtonElement\r\n const resetBtn = document.getElementById('reset-btn') as HTMLButtonElement\r\n\r\n searchBtn.addEventListener('click', () => {\r\n searchLogic(equData, skillData)\r\n })\r\n moreSkillsBtn.addEventListener('click', () => {\r\n moreSkillsLogic(equData, skillData)\r\n })\r\n resetBtn.addEventListener('click', () => {\r\n resetLogic()\r\n })\r\n}\r\n","import { getArms, getChest, getDecorations, getHead, getLegs, getSkillActivationMap, getSkillCategories, getSkillNameMap, getWaist } from '../../data-provider/data-provider.module'\r\nimport StaticSkillData from '../../data-provider/models/skills/StaticSkillData'\r\nimport { renderEqSettings } from '../ui/eq-settings.component'\r\nimport { initiateNavbar } from '../ui/navbar.component'\r\nimport { renderSkillPicker } from '../ui/picker.component'\r\nimport { attachControlListeners } from '../ui/search-controls.component'\r\n\r\nconst main = async () => {\r\n // initiate static components\r\n initiateNavbar()\r\n\r\n // load remaining data\r\n const armor = [\r\n await getHead(),\r\n await getChest(),\r\n await getArms(),\r\n await getWaist(),\r\n await getLegs(),\r\n ]\r\n const decorations = await getDecorations()\r\n\r\n // load skill data and render skill picker with it\r\n const skillData: StaticSkillData = {\r\n skillName: await getSkillNameMap(),\r\n skillActivation: await getSkillActivationMap(),\r\n skillCategories: await getSkillCategories(),\r\n }\r\n\r\n // render ui\r\n renderSkillPicker(skillData.skillActivation, skillData.skillCategories)\r\n renderEqSettings(armor)\r\n\r\n // initialize search controls\r\n attachControlListeners({ armor, decorations }, skillData)\r\n}\r\n\r\nmain()\r\n","var OVERLAY_ID = '__parcel__error__overlay__';\n\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n\n module.bundle.hotData = null;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets, assetsToAccept;\n\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = process.env.HMR_HOSTNAME || location.hostname;\n var protocol = location.protocol === 'https:' ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');\n ws.onmessage = function(event) {\n checkedAssets = {};\n assetsToAccept = [];\n\n var data = JSON.parse(event.data);\n\n if (data.type === 'update') {\n var handled = false;\n data.assets.forEach(function(asset) {\n if (!asset.isNew) {\n var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);\n if (didAccept) {\n handled = true;\n }\n }\n });\n\n // Enable HMR for CSS by default.\n handled = handled || data.assets.every(function(asset) {\n return asset.type === 'css' && asset.generated.js;\n });\n\n if (handled) {\n console.clear();\n\n data.assets.forEach(function (asset) {\n hmrApply(global.parcelRequire, asset);\n });\n\n assetsToAccept.forEach(function (v) {\n hmrAcceptRun(v[0], v[1]);\n });\n } else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.\n location.reload();\n }\n }\n\n if (data.type === 'reload') {\n ws.close();\n ws.onclose = function () {\n location.reload();\n }\n }\n\n if (data.type === 'error-resolved') {\n console.log('[parcel] ✨ Error resolved');\n\n removeErrorOverlay();\n }\n\n if (data.type === 'error') {\n console.error('[parcel] 🚨 ' + data.error.message + '\\n' + data.error.stack);\n\n removeErrorOverlay();\n\n var overlay = createErrorOverlay(data);\n document.body.appendChild(overlay);\n }\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n }\n}\n\nfunction createErrorOverlay(data) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n\n // html encode message and stack trace\n var message = document.createElement('div');\n var stackTrace = document.createElement('pre');\n message.innerText = data.error.message;\n stackTrace.innerText = data.error.stack;\n\n overlay.innerHTML = (\n '
' +\n 'ERROR' +\n '🚨' +\n '
' + message.innerHTML + '
' +\n '
' + stackTrace.innerHTML + '
' +\n '
'\n );\n\n return overlay;\n\n}\n\nfunction getParents(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {\n parents.push(k);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction hmrApply(bundle, asset) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (modules[asset.id] || !bundle.parent) {\n var fn = new Function('require', 'module', 'exports', asset.generated.js);\n asset.isNew = !modules[asset.id];\n modules[asset.id] = [fn, asset.deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n}\n\nfunction hmrAcceptCheck(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (!modules[id] && bundle.parent) {\n return hmrAcceptCheck(bundle.parent, id);\n }\n\n if (checkedAssets[id]) {\n return;\n }\n checkedAssets[id] = true;\n\n var cached = bundle.cache[id];\n\n assetsToAccept.push([bundle, id]);\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n\n return getParents(global.parcelRequire, id).some(function (id) {\n return hmrAcceptCheck(global.parcelRequire, id)\n });\n}\n\nfunction hmrAcceptRun(bundle, id) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n if (cached) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n\n cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n cb();\n });\n return true;\n }\n}\n"]} \ No newline at end of file diff --git a/pages.b69b2783.js b/pages.b69b2783.js new file mode 100644 index 0000000..10f1ff7 --- /dev/null +++ b/pages.b69b2783.js @@ -0,0 +1,43 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,c=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){a=!0,u=t},f:function(){try{c||null==r.return||r.return()}finally{if(a)throw u}}}}function i(t,e){if(t){if("string"==typeof t)return c(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--n){var i=this.tryEntries[n],a=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var u=o.call(i,"catchLoc"),c=o.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),E(e),h}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;E(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,e){return this.delegate={iterator:S(t),resultName:r,nextLoc:e},"next"===this.method&&(this.arg=void 0),h}},r}var n=this&&this.__awaiter||function(t,r,e,n){return new(e||(e=Promise))(function(o,i){function a(t){try{c(n.next(t))}catch(r){i(r)}}function u(t){try{c(n.throw(t))}catch(r){i(r)}}function c(t){t.done?o(t.value):new e(function(r){r(t.value)}).then(a,u)}c((n=n.apply(t,r||[])).next())})},o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});var i=o(require("./models/equipment/EquipmentSkills")),a=7;exports.MAX_RARITY=a;var u=65;exports.TORSO_UP_ID=u;var c={name:"None",type:-1,defense:{base:0,max:0,maxLr:0},resistance:[0,0,0,0,0],category:-1,slots:0,rarity:0,skills:new i.default,isGeneric:!0};exports.DUMMY_PIECE=c;var s=function(t){return n(r,void 0,void 0,e().mark(function r(){return e().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,fetch(t);case 2:return r.abrupt("return",r.sent.json());case 3:case"end":return r.stop()}},r)}))},f=function(t){return n(r,void 0,void 0,e().mark(function r(){var n;return e().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,s(t);case 2:return n=r.sent,r.abrupt("return",n.map(function(t){var r=new i.default;for(var e in t.skills){var n=t.skills[e];r.set(parseInt(e),n)}return Object.assign({},t,{skills:r})}));case 4:case"end":return r.stop()}},r)}))},l=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f("./head.json"));case 1:case"end":return t.stop()}},t)}))};exports.getHead=l;var p=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f("./chest.json"));case 1:case"end":return t.stop()}},t)}))};exports.getChest=p;var h=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f("./arms.json"));case 1:case"end":return t.stop()}},t)}))};exports.getArms=h;var v=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f("./waist.json"));case 1:case"end":return t.stop()}},t)}))};exports.getWaist=v;var d=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f("./legs.json"));case 1:case"end":return t.stop()}},t)}))};exports.getLegs=d;var y=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",f("./decorations.json"));case 1:case"end":return t.stop()}},t)}))};exports.getDecorations=y;var m=function(){return n(r,void 0,void 0,e().mark(function t(){var r,n,o;return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s("./skill-names.json");case 2:for(o in r=t.sent,n=new Map,r)n.set(parseInt(o),r[o]);return t.abrupt("return",n);case 6:case"end":return t.stop()}},t)}))};exports.getSkillNameMap=m;var g=function(){return n(r,void 0,void 0,e().mark(function t(){return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",s("./skill-categories.json"));case 1:case"end":return t.stop()}},t)}))};exports.getSkillCategories=g;var w=function(){return n(r,void 0,void 0,e().mark(function t(){var r,n,o,i;return e().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s("./skills.json");case 2:for(i in r=t.sent,n=new Map,o=function(t){var e=parseInt(t);n.set(e,r[t].map(function(t){return Object.assign({},t,{requiredSkill:e})}))},r)o(i);return t.abrupt("return",n);case 7:case"end":return t.stop()}},t)}))};exports.getSkillActivationMap=w; +},{"./models/equipment/EquipmentSkills":"gZ5g"}],"XByd":[function(require,module,exports) { +"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e){e[e.HEAD=0]="HEAD",e[e.CHEST=1]="CHEST",e[e.ARMS=2]="ARMS",e[e.WAIST=3]="WAIST",e[e.LEGS=4]="LEGS",e[e.CHARM=5]="CHARM",e[e.WEAPON=6]="WEAPON"}(e||(e={})),exports.default=e; +},{}],"fC2O":[function(require,module,exports) { +"use strict";function e(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function n(e,n){for(var i=0;i=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){c=!0,i=e},f:function(){try{l||null==n.return||n.return()}finally{if(c)throw i}}}}function o(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n".concat(e.name,"")),r=d.htmlToElement("X");return r.addEventListener("click",function(){return exports.removeExlusion(e)}),r.style.marginRight="1em",r.style.marginLeft="1em",r.style.cursor="pointer",t.appendChild(r),t.appendChild(n),t},v=function(t,n){var r,o=document.createElement("div");o.style.textAlign="left";var i=document.createElement("select");i.setAttribute("id","eq-".concat(t,"-pin-picker")),i.style.width="72%";var l,c=a((r=[{name:"None",category:t}]).concat.apply(r,e(n)));try{for(c.s();!(l=c.n()).done;){var u=l.value;i.appendChild(d.htmlToElement('")))}}catch(m){c.e(m)}finally{c.f()}i.addEventListener("change",function(){exports.addPin({name:i.value,category:t})});var s=d.htmlToElement("X");return s.addEventListener("click",function(){return exports.removePin(n[0].category)}),s.style.marginRight="1em",s.style.marginLeft="1em",s.style.cursor="pointer",o.appendChild(s),o.appendChild(i),o},y=function(e){for(var t=document.getElementById("eq-container"),n=0,r=[[c.default.HEAD,"Head",e[0]],[c.default.CHEST,"Chest",e[1]],[c.default.ARMS,"Arms",e[2]],[c.default.WAIST,"Waist",e[3]],[c.default.LEGS,"Legs",e[4]]];n
')),s=d.htmlToElement('
'.concat(i," Pinned
")),m=d.htmlToElement('
'),f=v(o,l);m.appendChild(f);var p=d.htmlToElement('
'.concat(i," Excluded
")),y=d.htmlToElement('
'));u.appendChild(s),u.appendChild(m),u.appendChild(p),u.appendChild(y),t.appendChild(u)}},h=function(e){document.getElementById("eq-".concat(e.category,"-exclusion")).appendChild(p(e))};exports.removeExlusion=function(e){var t=Array.from(document.getElementsByClassName("eq-exclusion-ele")).find(function(t){return t.getAttribute("data-name")===e.name});t&&(t.remove(),u.default.Instance.removeExclusion(e),m())},exports.removePin=function(e){var t=document.getElementById("eq-".concat(e,"-pin-picker"));u.default.Instance.removePin(e),t.selectedIndex=0,m()},exports.addExclusion=function(e){u.default.Instance.hasExclusion(e)||(u.default.Instance.addExclusion(e),h(e),m())},exports.addPin=function(e){if("None"===e.name)return u.default.Instance.removePin(e.category),void m();u.default.Instance.addPin(e),m(),document.getElementById("eq-".concat(e.category,"-pin-picker")).value=e.name},exports.renderEqSettings=function(e){y(e);var t=f();t&&u.default.Instance.deserialize(t);var n,r=a(u.default.Instance.exclusions);try{for(r.s();!(n=r.n()).done;){var o,i=a(n.value);try{for(i.s();!(o=i.n()).done;){var l=o.value;h(l)}}catch(c){i.e(c)}finally{i.f()}}}catch(c){r.e(c)}finally{r.f()}u.default.Instance.pins.forEach(function(e,t){e?exports.addPin(e):exports.removePin(t)})}; +},{"../../data-provider/models/equipment/EquipmentCategory":"XByd","../../data-provider/models/user/UserEquipmentSettings":"fC2O","../../helper/html.helper":"nZfY"}],"f7g5":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(e){e.classList.contains("navbar-selected")||e.classList.add("navbar-hover")},t=function(e){e.classList.remove("navbar-hover")},r=function(e,t){for(var r=0,n=Array.from(e.children);r0,category:parseInt(e.parentElement.getAttribute("data-category"))}})};exports.getSkillActivations=i;var c=function(t){for(var r in t){var i=t[r],c=e.htmlToElement('\n
\n \n
\n "));document.getElementById("search-skill-picker").appendChild(c)}},n=function(t){t.forEach(function(t){t.filter(function(e){return e.isPositive}).reverse().forEach(function(t){var r=e.htmlToElement('\n
\n \n
').concat(t.name,"
\n
\n "));document.getElementById("search-picker-category-".concat(t.category)).appendChild(r)})})},a=function(){for(var e=Array.from(document.getElementsByClassName("search-picker-activation")),t=function(){var e=i[r];e.addEventListener("click",function(t){var r=t.target,i=e.children[0];"INPUT"!==r.tagName&&(i.checked=!i.checked);var c=e.children[1];i.checked?c.classList.add("highlighted"):c.classList.remove("highlighted")})},r=0,i=e;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,l=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw l}}}}function i(t,e){if(t){if("string"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0})}},{key:"getSlotsExceptChest",value:function(){return this.equipment.filter(function(t){return t.category!==h.default.CHEST}).map(function(t){return t.slots}).filter(function(t){return t>0})}},{key:"copy",value:function(){return new e(this.equipment.map(function(t){return t}),new p.default(this.skills),this.score,this.totalSlots,this.torsoUp)}},{key:"addPiece",value:function(e){if(e.skills.has(c.TORSO_UP_ID))this.torsoUp++;else if(e.category===h.default.CHEST&&this.torsoUp>0){var r,n=o(e.skills);try{for(n.s();!(r=n.n()).done;){var i=t(r.value,2),l=i[0],a=i[1];this.skills.add(l,a*(this.torsoUp+1))}}catch(u){n.e(u)}finally{n.f()}}else this.skills.addSkills(e.skills);this.equipment[e.category]=e,this.score=this.score+e.score,this.totalSlots=this.totalSlots+e.slots}}]),e}();exports.default=d; +},{"../../data-provider/data-provider.module":"mrro","../../data-provider/models/equipment/EquipmentCategory":"XByd","../../data-provider/models/equipment/EquipmentSkills":"gZ5g"}],"pNrS":[function(require,module,exports) { +"use strict";function e(e){return n(e)||r(e)||s(e)||t()}function t(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function n(e){if(Array.isArray(e))return f(e)}function a(e,t){return u(e)||o(e,t)||s(e,t)||i()}function i(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i=[],o=!0,u=!1;try{for(r=r.call(e);!(o=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);o=!0);}catch(l){u=!0,a=l}finally{try{o||null==r.return||r.return()}finally{if(u)throw a}}return i}}function u(e){if(Array.isArray(e))return e}function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=s(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){u=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(u)throw i}}}}function s(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?t.applyTorsoUpToChest(a,e.torsoUp):a,this.head=e.equipment[m.default.HEAD],this.arms=e.equipment[m.default.ARMS],this.waist=e.equipment[m.default.WAIST],this.legs=e.equipment[m.default.LEGS],this.charm=e.equipment[m.default.CHARM],this.decos=r.decos,this.evaluation=this.evaluate(e,r,n)}return y(t,[{key:"getPieces",value:function(){return[this.head,this.chest,this.arms,this.waist,this.legs]}},{key:"evaluate",value:function(t,r,n){var i,o={base:0,max:0},u=[0,0,0,0,0],s=l(this.getPieces());try{for(s.s();!(i=s.n()).done;){var f=i.value;o.base+=f.defense.base,o.max+=f.defense.max,u=f.resistance.map(function(e,t){return e+u[t]})}}catch(w){s.e(w)}finally{s.f()}var c=new h.default;r.decos.forEach(function(e){return c.addSkills(e.skills)});var d=new h.default(t.skills);d.addSkills(new h.default(c));var y,p=[],m=l(d);try{var v=function(){var t=a(y.value,2),r=t[0],i=t[1];if(Math.abs(i)<10)return"continue";var o=n.get(r).filter(function(e){return e.isPositive?i>=e.requiredPoints:i<=e.requiredPoints});p.push.apply(p,e(o))};for(m.s();!(y=m.n()).done;)v()}catch(w){m.e(w)}finally{m.f()}var b={defense:o,resistance:u,activations:p,skills:d,torsoUp:t.torsoUp};return this.evaluation=b,b}}],[{key:"applyTorsoUpToChest",value:function(e,t){var r=new h.default(e.skills);return r.multiply(t+1),Object.assign({},e,{skills:r})}}]),t}();exports.default=v; +},{"../../data-provider/models/equipment/EquipmentSkills":"gZ5g","../../data-provider/models/equipment/EquipmentCategory":"XByd"}],"Zol7":[function(require,module,exports) { +"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e){e[e.ALL=0]="ALL",e[e.BLADEMASTER=1]="BLADEMASTER",e[e.GUNNER=2]="GUNNER"}(e||(e={})),exports.default=e; +},{}],"MMJS":[function(require,module,exports) { +"use strict";function r(r){return i(r)||n(r)||t(r)||e()}function e(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function t(r,e){if(r){if("string"==typeof r)return o(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(r,e):void 0}}function n(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function i(r){if(Array.isArray(r))return o(r)}function o(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t0})};exports.filterHasSkill=y;var m=function(r,e){return e===u.MAX_RARITY?r:r.filter(function(r){return d(r,e)})};exports.applyRarityFilter=m;var v=function(r,e){for(var t,n=[],i=function(){var e=a[o];if(r.find(function(r){return r.slots===e})){var t={name:"".concat(e," Slot Charm"),slots:e,category:f.default.CHARM,rarity:0,skills:new c.default};n.push(t)}},o=0,a=[3,2,1];o=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,u=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return i=r.done,r},e:function(r){u=!0,a=r},f:function(){try{i||null==e.return||e.return()}finally{if(u)throw a}}}}function f(r,t){if(r){if("string"==typeof r)return s(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?s(r,t):void 0}}function s(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);el)return 0;u===l?n.push(1):n.push(2)}return Math.max.apply(Math,n)};exports.decoPermWorseOrSameAsComparison=h;var b=function(t){var e=new Map(Array.from(t.entries()).map(function(t){var e=o(t,2),n=e[0],a=e[1];return[n,Math.max.apply(Math,r(a.map(function(r){return r.score})))]}));return e.set(0,0),e};exports.getDecoSlotScoreMap=b;var S=function(r,t){return r.filter(function(e,n){for(var o=!1,a=0;an&&1===u){o=!0;break}}return!o})};exports.pruneDecoPermutations=S; +},{"../data-provider/data-provider.module":"mrro","../data-provider/models/equipment/EquipmentSkills":"gZ5g"}],"z7Uc":[function(require,module,exports) { +"use strict";function t(t){return n(t)||r(t)||o(t)||e()}function e(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function n(t){if(Array.isArray(t))return l(t)}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=o(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,u=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){a=!0,l=t},f:function(){try{u||null==r.return||r.return()}finally{if(a)throw l}}}}function o(t,e){if(t){if("string"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:j(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},e}var i=o().mark(l);function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=c(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function c(t,e){if(t){if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=r)){o.next=12;break}return o.next=10,p;case 10:o.next=13;break;case 12:return o.delegateYield(l(t,e,r,p,h),"t0",13);case 13:o.next=3;break;case 15:o.next=20;break;case 17:o.prev=17,o.t1=o.catch(1),u.e(o.t1);case 20:return o.prev=20,u.f(),o.finish(20);case 23:case"end":return o.stop()}},i,null,[[1,17,20,23]])}Object.defineProperty(exports,"__esModule",{value:!0});var f=function(){function t(r,n){var o=this;e(this,t),this.decorationsOfSkillMap=new Map,this.calculations=new Map;var i,c=a(n);try{var u=function(){var t=i.value[0],e=r.filter(function(e){return e.skills.get(t)>0}).sort(function(e,r){return r.skills.get(t)-e.skills.get(t)});o.decorationsOfSkillMap.set(t,e),o.calculations.set(t,new Map)};for(c.s();!(i=c.n()).done;)u()}catch(l){c.e(l)}finally{c.f()}}return n(t,[{key:"calculateMinRequiredSlots",value:function(e,r){var n=this.decorationsOfSkillMap.get(e);if(0===n.length)return t.DUMMY_SCORE;var o,i=t.DUMMY_SCORE,c=a(l(n,e,r,0,0));try{for(c.s();!(o=c.n()).done;){var u=o.value;u=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),A(r),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},e}var s=l().mark(q),f=l().mark(O);function p(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=h(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function h(t,e){if(t){if("string"==typeof t)return d(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=n)){l.next=12;break}return l.next=10,c;case 10:l.next=14;break;case 12:if(!(c.score+r[o]0)){l.next=16;break}return l.delegateYield(q(t,c,r,n,o-1),"t0",16);case 16:l.next=3;break;case 18:l.next=23;break;case 20:l.prev=20,l.t1=l.catch(1),a.e(l.t1);case 23:return l.prev=23,a.f(),l.finish(23);case 26:case"end":return l.stop()}},s,null,[[1,20,23,26]])}function O(t,e,r,n){var o,a,i,u,c;return l().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:o=e[n],a=p(t.get(o)),l.prev=2,a.s();case 4:if((i=a.n()).done){l.next=19;break}if(u=i.value,(c=r.copy()).addPerm(u,o),!(c.requiredSlots<=0)){l.next=13;break}return l.next=11,c;case 11:l.next=15;break;case 13:if(!(c.unusedSlotsSum0)){l.next=17;break}return l.delegateYield(O(t,e,c,n-1),"t0",17);case 17:l.next=4;break;case 19:l.next=24;break;case 21:l.prev=21,l.t1=l.catch(2),a.e(l.t1);case 24:return l.prev=24,a.f(),l.finish(24);case 27:case"end":return l.stop()}},f,null,[[2,21,24,27]])}var j=function(t,e){var r=e+1,n=t.score*r,o=t.decos.map(function(t){var e=new g.default(t.skills);return e.multiply(r),Object.assign({},t,{affectedByTorsoUp:!0,name:t.name.concat(" (TorsoUp)"),skills:e})}),a=new g.default(t.skills);return a.multiply(r),{score:n,decos:o,skills:a}},_=function(t,e,r,n,o){var i,u=function(t,e){if(e.requiredSlots<=0)return e;if(!(e.unusedSlotsSum0&&c>0){var f,h=t.getSlotsExceptChest().concat(e.weaponSlots?e.weaponSlots:[]),d=s-c,v=new k.default(n,d,l),y=p(o.get(c));try{for(y.s();!(f=y.n()).done;){var b=f.value,w=j(b,t.torsoUp),S=v.copy();S.addPerm(w,c);var x=u(h,S);if(x){i=x;break}}}catch(E){y.e(E)}finally{y.f()}}else{i=u(t.getSlots().concat(e.weaponSlots?e.weaponSlots:[]),new k.default(n,t.totalSlots+e.weaponSlots,l))}return i},P=function(t,r,n,o,a){var i=new g.default(o.skillActivations.map(function(t){return[t.requiredSkill,t.requiredPoints]})),u=A(r,i),c=x.getDecoSlotScoreMap(u),l=L(o.armorType),s=x.getScoreFromSkillMap(i,i)-c.get(o.weaponSlots),f=new E.default(r,i),h=t;h.push(n);var d=h.map(function(t){return t.map(function(t){var e=c.get(t.slots)+x.getScoreFromSkillMap(t.skills,i);return Object.assign({},t,{score:e})})}),v=Math.max.apply(Math,e(d[1].map(function(t){return t.score}))),y=[d[1],d[0].map(function(t){return x.scoreTorsoUpPieces(t,v)}),d[2],d[3].map(function(t){return x.scoreTorsoUpPieces(t,v)}),d[4].map(function(t){return x.scoreTorsoUpPieces(t,v)}),d[5]].map(function(t){return t.sort(function(t,e){return e.score-t.score})}),m=[0],b=0;y.map(function(t){return t[0].score}).forEach(function(t){b+=t,m.push(b)});var S,k=0,O=[],j=p(q(y,l,m,s,y.length-1));try{for(j.s();!(S=j.n()).done;){var P=S.value,T=_(P,o,i,f,u);if(T){var M=new w.default(P,T,a.skillActivation);if(O.push(M),k===o.limit-1)break;k++}}}catch(D){j.e(D)}finally{j.f()}return O},T=function(t,e,r,n,o){var a=t.map(function(t,e){return S.applyArmorFilter(t,n.armorRarity,n.armorType,e,n.pins[e],n.exclusions[e],n.skillActivations)}),i=S.applyCharmFilter(r,n.skillActivations),u=S.applyRarityFilter(e,n.decoRarity).filter(function(t){return S.filterHasSkill(t,n.skillActivations)});return P(a,u,i,n,o)};exports.search=T; +},{"../data-provider/data-provider.module":"mrro","../data-provider/models/equipment/EquipmentCategory":"XByd","../data-provider/models/equipment/EquipmentSkills":"gZ5g","../scorer/models/ArmorEvaluation":"aAyu","./models/ArmorSet":"pNrS","../data-filter/data-filter.module":"MMJS","../scorer/scorer.module":"zX0v","../scorer/models/DecoEvaluation":"z7Uc","../scorer/models/DecoMinSlotMap":"Ra9L"}],"qhuQ":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getGlobalSettings=function(){var e=document.getElementById("armor-type"),t=document.getElementById("weapon-slots"),r=document.getElementById("armor-rarity"),a=document.getElementById("deco-rarity"),n=document.getElementById("search-limit");return{armorType:parseInt(e.value),weaponSlots:parseInt(t.value),armorRarity:parseInt(r.value),decoRarity:parseInt(a.value),limit:parseInt(n.value)}}; +},{}],"sJIk":[function(require,module,exports) { +"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t){return o(t)||r(t)||s(t)||n()}function n(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function o(t){if(Array.isArray(t))return c(t)}function a(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=s(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function i(t,e){return d(t)||u(t,e)||s(t,e)||l()}function l(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,e){if(t){if("string"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),s=r.call(a,"finallyLoc");if(l&&s){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:A(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}var f=h().mark(g),p=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});var m=p(require("../../data-provider/models/user/UserEquipmentSettings")),v=require("../../helper/html.helper"),y=require("./eq-settings.component");function g(t){var e,n,r,o;return h().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:e=k(),n=document.createElement("div"),e.appendChild(n),r=Array.from(t.values()).reduce(function(t,e){return t+e.length},0),o=0;case 5:if(!(o