Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

where to get an alternate passive additions json, an alternate passive skills json, and the most recent skill tree json? #10

Open
NomaratheF opened this issue Apr 5, 2023 · 11 comments

Comments

@NomaratheF
Copy link

NomaratheF commented Apr 5, 2023

where to get the most recent skill tree json?

@NomaratheF
Copy link
Author

NomaratheF commented Apr 5, 2023

there is no Jewel_Node_Link.json also.

https://github.com/Regisle/TimelessJewelData/blob/main/Basic%20Example/Basic%20Parse%20%26%20Search.cs#:~:text=stat%20index%20and-,weight,-//definitions%20for
p.s. what is weigth? i've got PassiveSkillGraphId,Name,Datafile Parsing Index but nithing related to weight in node_indices.csv
help please

@Regisle
Copy link
Owner

Regisle commented Apr 5, 2023

Sorry didnt see these messages till now

where to get the most recent skill tree json?

the easiest place is gggs github (here https://github.com/grindinggear/skilltree-export)

Jewel_Node_Link.json was removed a while ago becouse it was out of date, I can try and update it at some point but its basically just a list of what nodes are within range of what jewel

I havnt looked at the basic example in a while, but dont think weight is actually needed, but the general gist of how the LuTs work is its just a list of all the changeIds from every node on the tree from every seed on the jewel, so you can access a specific node change using the index [node_id_INDEX * jewel_seed_Size + jewel_seed_offset] and then use the change ID to figure out what it added or changed to

@NomaratheF
Copy link
Author

NomaratheF commented Apr 5, 2023

lets say we we need to know all brutal restraint flask gain nodes.
3676,Flask Charges Gained,488(from indices) so i need to create new dictionary with 488 index(key) and weight(value) lets say 1.
3rd parameter also 1 to catch all that nodes and 4th parameter is "3"(./BrutalRestain" file path)?
second parameter is empty dictionary.

if so its arg out of range exceprion

is that intended?(repeats)
17788,Flask Charges Gained,796
17790,Flask Charges Gained,797

ps. sorry for my noob question. i'm new to this.

@Regisle
Copy link
Owner

Regisle commented Apr 5, 2023

oh I figured out what weight is in this example, its the sum of the mods you want

if using the basic example the parameters should be

  1. you want all the notables from tree you want flask charges gain on,
  2. you want the stat (in this case the flask charges gained (which is the number 70))
  3. the amount of those nodes you want (1 is a good number)
  4. the jewel type (so the number 3 in this case)

and it should return a list of seeds that have those stats
in this case for notables just get 5-6 notables you know you want within range of a jewel socket
and for stats you want a dictionary with just the number 70 in it,

Sorry if its not completely accurate its been a while since I looked at the basic example, and I use python not c#, if I made a mistake I am sure Gears will come correct me at some point

@OxidisedGearz
Copy link
Contributor

OxidisedGearz commented Apr 5, 2023

where to get an alternate passive additions json and alternate passive skills json

These were files that got released with the first timeless jewel simulator. Honestly, I'm not sure where exactly they came from, but they appear to be datamined. If someone is mining copies regularly in a repo somewhere, I'm not aware of it, but thankfully they're not files that update often, the only one so far being changes to curse effect min and max values on Glorious Vanity nodes. Potentially, it would be worthwhile to include, at least in the generator branch if nowhere else?

where to get the most recent skill tree json?

As Regi said, ggg's github has that. It's the data.json file you want here.

there is no Jewel_Node_Link.json also.

As Regi said, that was a file that a friend made for the patch that it released on. It was outside the scope of the project to maintain that file and update it every patch so we never made a tool to regenerate it.

p.s. what is weigth

Regi got it right, but I'll elaborate a bit. Weight is a user defined value, which is why it's not in any of the data files. Weight is a representation how much you value a particular thing. If you value something highly, it gets a high weight while if you value something very little it gets a low weight. Often weight is zero or positive, but negative is valid too and occasionally useful like if you want to avoid alchemist's genius at all costs you could provide it a very negative weight as a stat.

So starting with the weight in the "notables" dictionary, it's a multiplier for how useful that position on the tree is for you. For example if you're looking at the minions deal 80% increased damage stat on Elegant hubris, a notable that you have to spend six passive points to pick up you might give weight 1/6 where a notable that you have to spend only three passive points might have weight 1/3. With that, the searcher would know that you value the further notable half as much as the closer one and would sort the results accordingly. Honestly, it isn't used often in my experience and I mostly end up leaving those weights at 1 almost all the time.

As for the "stats" dictionary, a good example of where weight comes in might be dexterity on Brutal Restraint. Notables can have either +20 dexterity or 5% increased dexterity. 20 dex in the dictionary you'd give weight 20 since it gives you 20 dex, and 5% increased dexterity you'd give wight 15 if you had 300 base dex. Now the search tool will know that you value four instances of 5% increased dexterity the same as three instances of 20 flat dex and will sort accordingly.

The "weight" argument itself is used at the end as a simple filter to clean up the number of results. It's the minimum worth a jewel should have for it to be returned by the function.
.Where(x => x.Item2 >= weight)
and Item2 comes from the previous LINQ command and is equal the sum of the products of stat weights and notable weights. So to reuse the dex example, you might set this argument to 75, in which case it would be searching for a jewel that grants you at least 75 dexterity on the notables you provided it though any combination of +dex and %dex.
If you're just doing a simple search where all the weights in the dictionaries are 1, then the sum of the products is the number of times any listed stat appears on any listed notable, so a weight argument of 5 would mean "show we all jewels that have at least five instances of these stats, please."

lets say we we need to know all brutal restraint flask gain nodes.
3676,Flask Charges Gained,488(from indices)

This is referencing the minor passive node on the passive tree called "Flask Charges Gained", not the flask charges gained stat on Brutal Restraint. That's why there was issues. It attempted to find the 489th notable, which doesn't exist, and read past the end of the data file. I should have made a check for that and thrown a proper exception.

Instead, the flask charges gained stat you're looking for is "maraketh_notable_add_flask_charges" which is rid 70 in alternate_passive_additions.json.

So repeating Regi once more, the arguments you'd want to provide to the searcher are:

  1. Notables on the tree you want to search for. Use node_indices.csv for this. For example, Sentinel which is right below scion is 105, Constitution is 343, and Battle Rouse is 24. Give them weight 1 for a simple count search.
  2. Stats you want to find on those notables. You'll need copies of alternate passive additions and alternate passive skills jsons here. "maraketh_notable_add_flask_charges" is rid 70 and "maraketh_notable_add_flask_effect" is rid 89. These should also be given weight 1 for a simple search. (If you want to specifically not see flask effect for Olroth's Resolve purposes, you can give that one weight -100 instead).
  3. Amount you want. It'll look for the sum of weights, so if you set it to 2, it'll look for all jewels with at least two of any combination maraketh_notable_add_flask_charges and maraketh_notable_add_flask_effect on any of those three notables. So it might find a jewel with two flask charges, a jewel with one of each, or a jewel with two flask effects.
  4. Jewel type. Brutal Restraint is 3.

ps. sorry for my noob question. i'm new to this.

No worries. Questions are always welcome. All the information is a bit esoteric/arcane. Having these questions is useful since it helps us flesh out where we could be providing more or better details.

@NomaratheF
Copy link
Author

NomaratheF commented Apr 5, 2023

@Regisle @OxidisedGearz you are amazing!

if you close this issue will i be able to see this info again?

p.s. do you have any info about small passives? we have a bunch of int nodes. got id's info on poedb.tw (circle cx="-6747" cy="-5004" r="30" id="n64210" data-hover="?t=PassiveSkills&id=64210"), but maybe thre there is better option to get it?(usefull for GV)

@Regisle
Copy link
Owner

Regisle commented Apr 6, 2023

Yes you will still be able to see the info,

small passives are in node_indices.csv but knowing where they are on tree is much harder without a pregenerated list or an application like PoB

@NomaratheF
Copy link
Author

I'm here once again, sorry.

It will need an alternate passive additions json, an alternate passive skills json

where can i find those jsons? i found some in ggpk (alternatepassiveskills.dat64 and alternatepassiveaddictions.dat64)

but i dont know know what to do with them. for example in AlternatePassiveSkill.cs we have [JsonPropertyName("Unknown10")]. but in dat file there are Unknown(s)0-9. why did you skip them?

and in AlternatePassiveSkill.cs we have [JsonPropertyName("Unknown13")]. but in (alternatepassiveskills.dat64) there only Unknown(s)0-10.

@Regisle
Copy link
Owner

Regisle commented Oct 17, 2023

found some in ggpk (alternatepassiveskills.dat64 and alternatepassiveaddictions.dat64)

those are the correct ones

The reason the fields are different is becouse the field names arnt actually in the ggpk, they have to be manually maintained by people, and so the spec you used to get them out of the ggpk is different to the spec we used

I havnt updated this repo in a while but there is a pull request with the latest LuTs in them if those are what you want, otherwise I can take a look at cleaning up how the dats are used, and what the field names are (will probably use PoBs field names which has no unknowns)

@Regisle
Copy link
Owner

Regisle commented Oct 18, 2023

The place I was recommended was https://snosme.github.io/poe-dat-viewer/ which seems to work when running the generator

@NomaratheF
Copy link
Author

i found that pob files are correct ones so i can use them. i think they will be updated as soon as league launch. and maybe @LocalIdentity will pull something.

https://snosme.github.io/poe-dat-viewer/
big thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants