|
@@ -596,6 +596,33 @@ const model = {
|
|
|
}
|
|
|
renderPokemon(toRender, colorSearchResultsTarget);
|
|
|
},
|
|
|
+
|
|
|
+ getRandomTeam(p=0.05, n=6, m=1000) {
|
|
|
+ const selected = new Set();
|
|
|
+ const selectedSpecies = new Set();
|
|
|
+ let iter = 0;
|
|
|
+ while (selected.size < n && iter < m) {
|
|
|
+ iter++;
|
|
|
+ for (let i = 0;i < this.ranked.length; i++) {
|
|
|
+ const pkmn = this.ranked[i];
|
|
|
+ if (selected.has(i) || selectedSpecies.has(pkmn.num)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (filterElements.hideNoStart.checked && pkmn.traits.includes("nostart")) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (!filterElements.allowNFE.checked && pkmn.traits.includes("nfe")) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (Math.random() < p) {
|
|
|
+ selected.add(i);
|
|
|
+ selectedSpecies.add(pkmn.num);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Array.from(selected).map(i => this.ranked[i]);
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
// ---- Form Controls ----
|
|
@@ -625,6 +652,10 @@ nameSearchFormElements.random.addEventListener("click", () => {
|
|
|
);
|
|
|
});
|
|
|
|
|
|
+nameSearchFormElements.team.addEventListener("click", () => {
|
|
|
+ model.setNameSearchResults(model.getRandomTeam());
|
|
|
+});
|
|
|
+
|
|
|
targetColorElements.colorText.addEventListener("input", ({ target }) => {
|
|
|
if (target.willValidate && !target.validity.valid) {
|
|
|
target.value = target.dataset.lastValid || "";
|