Hello everyone! A few years ago I got some help with a randomizer of mine and it made it into a wonderful little tool to play around with. Link to it here!
I’ve since expanded upon it, and come into a small problem with the more I add to it: unique outputs.
There are, in total, 4 outputs I’m concerned with the most (the types). Is there any way to make it so that the code keeps track of all 4 outputs and insures they are all unique?
I’ve looked over the documentation and I think it’s a touch out of my current skillset. Thank you to anyone who takes the time to help out!
@[email protected]’s Solution works wonderfully.
Here is another way using the
exclude-items-plugin
:exclude = {import:exclude-items-plugin} sentence [takenTypes = [], ''] You find yourself in {a} [d=description.selectOne] [b=biome.selectOne].<br> As the area is [d.singularForm.lowerCase], [td = typesdescription.selectOne.evaluateItem, takenTypes.push(td), td] type 'mons are rather prolific. That is in addition to the [typesbiome = exclude(others[b], takenTypes).selectUnique(2).map(a => (takenTypes.push(a), a)).joinItems(" and ")] types that live in the [b] already. <br>Oddly enough, there also seem to be some [s=exclude(stragglers, takenTypes).selectOne, takenTypes.push(s), s] type 'mons in the area as well. <br><br> Pokemon Types: [td] ([d]), [typesbiome] ([b]), [s] (stragglers)
The
td = typesdescription.selectOne.evaluateItem
makes sure that you have the Type instead of the description stored on thetakenTypes
list. If you don’t want to add theevaluateItem
you could remove the dynamic odds using thed
and usetd = typesdescription[d].selectOne
to select only the type. We push the selected types on thetakenTypes
list and use it to exclude the already selected types on the next selection with theexclude-items-plugin
.Here’s my solution so far - create a variable that’ll hold the generated types in and then change the code of the
sentence
list to never use any of these already-generated types:// Create a new "takenTypes" array variable to store the already generated types takenTypes = [[]] sentence [takenTypes = [], ""]You find yourself in {a} [d=description.selectOne] [b=biome.selectOne].<br> As the area is [d.singularForm.lowerCase], [td = typesdescription.selectOne, uniqueReturn(td)] type 'mons are rather prolific. That is in addition to the [removeDups(others[b]).selectUnique(2).map(x => uniqueReturn(x)).join(" and ")] types that live in the [b] already. <br>Oddly enough, there also seem to be some [s=removeDups(stragglers).selectOne, uniqueReturn(s)] type 'mons in the area as well. // Returns a new list that does not contain the entries already shown in the output removeDups(list) => return list.selectAll.filter(x => !takenTypes.includes(x)); // Adds the entry into the "takenTypes" variable so they never show up again in the same output uniqueReturn(i) => takenTypes.push(i); return i;
Does selectUnique and consumableList not cover you?
I did try using that but I was still getting duplicate answers. I likely wasn’t implementing it properly but I’m not sure where it was going wrong with the implementation, if that makes sense.
Could you just paste the code you are talking about here? I’m trying to guess at which part you are talking about but it’s very difficult. If I could see the code you are talking about I might see the issue.
I linked to it in my original post, but here it is again: https://perchance.org/w6b4wxeu1x#edit
Yes, I looked at the code at that link. There’s a lot of code though, so I don’t know which part of the code isn’t producing what you want it to produce. Hence I asked you to just paste in the specific code you’re having trouble with–not the entire page.