As someone already noticed and reported, using
Ticktick's method to create the fake lua, doesn't work if you're using
selindrile derived luas for your jobs.
You can still use the manual system, but there's a few additional steps you need to do.
Before explaining how to do it, I need to let you guys understand why this is happening (and maybe ticktick could created a second, alternative method, working with selindrile's luas?)
In lua syntax and for gearswap, if you want to define a subset, you need to have defined the higher tier sets before.
Example: let's say I want to define a sets called sets.brd.precast.songs, ok? This set has 3 sub levels. Just count the dots if you're having issues.
Before being able to define sets.brd.precast.songs I need to define the higher tier ones, so that means sets.brd.precast and sets.brd.
These do not necessarily have to be "real" sets, they could be empty, but they have to be defined nonetheless, otherwise Gearswap will return me an errors and will be unable to load my lua.
So to make a code example
Code
sets.brd = {}
sets.brd.precast = {}
sets.brd.precast.songs = {head=..., body=..., hands=..., etc}
See? The first 2 sets are completely empty because I'm not using them, but I "need" them to be able to use the following subset that I defined.
All of this that I just described is the default, "normal" behaviour of lua and gearswap.
Selindrile files though behave in a different way. They use a custom "init_gear_sets" function instead of the default "get_sets" function and they do not require declaring the higher tier sets.
In selindrile files for instance you will often see "sets.brd.precast.songs" without any of the higher tier sets being defined.
There's a reason why things are like that but you don't need to know so let's skip the details.
What you need to know is that these sets won't be declared in your job's specific lua, as such ticktick's method or my "manual" copy/paste method will end up creating a fake lua that lacks all the necessary higher tier sets being declared.
As such, if you were to try to load the fake lua, gearswap would get you an error, saying it's unable to load the file. And if the file can't be loaded, of course you can't use validate.
How to fix this?
There is no simple method, unless ticktick updates his code, the only way to fix this is to manually add all the missing subsets.
You need to create your fake lua using my instructions, then you have to declare all the missing higher tier sets, one by one.
Once you're done doing that (and it's gonna take a lot, lol) then you're gonna be able to load the lua file with Gearswap, and once the file is loaded you can use Validate as described above.
How do I know which higher tier sets are missing?!
After a while you're gonna be able to spot them on your own, but for the first few minutes you can let gearswap tell you.
Try to load your fake lua with gearswap, it will return an error saying he's unable to index a field called "xxx" and will tell you the exact line of your lua where this error occurs, usually will be at the very beginning.
For instance let's say your lua starts on line 5 with the following set:
Code
sets.drg.weapons.dt = {......}
Gearswap will give you an error like:
fake.lua:5: attempt to index field 'drg' (a nil value)
Gearswap is actually tryin to tell you that on
line 5 he couldn't interpret the set you defined because "sets.drg" hasn't been declared before.
Tecnically "weapons" is another non declared set, but gearswap stops on the first error he finds.
To fix this you would have to do it like this
Code
sets.drg = {}
sets.drg.weapons = {}
sets.drg.weapons.dt = {.......}
Now gearswap will be correctly able to accept your sets.drg.weapons.dt set.