#tooldev-general

1 messages · Page 27 of 1

quick basin
#

Interesting

#

Can you give me an example, just so i visualize it better?

carmine merlin
#

It doesn't include the stat descriptions specific for gem qualities and was missing something else last I checked

quick basin
#

I wish ggg actually shared schemas/models, since we have so much external tooling anyway

carmine merlin
#

Think it was attack damage for particular gem stat sets

zenith zodiac
#

the main central export is repoe https://repoe-fork.github.io/, which uses the same tool (pypoe) as the wiki but exports in json rather than wiki text

carmine merlin
#

I've asked in the past and was told no

quick basin
#

Which translates to more money

#

They should embrace poe being api/tool friendly

quick basin
#

Appreciate the replies guys, ill sift through all this today

carmine merlin
#

I do get help when something has changed in a league update and I'm not sure what it does though.
Might be to limit bad actors perhaps, I'm not sure on their exact reasoning
They do have a lot more columns internally that don't get exported to the client though

zenith zodiac
#

plus there have been performance issues with the wiki servers so it's a bit scary making changes, like we don't want to put out a call for volunteers and get random amateurs bringing the site down

quick basin
#

Hmm

velvet fog
#

I've noticed that some gem quality are displayed incorrectly, but I haven't investigated the cause yet.

carmine merlin
#

Same file but need to use these ones for the gem quality rows

ebon kernel
velvet fog
#

PoE2 has become increasingly conservative with its data; even basic mod weights can only be derived by recombinator

carmine merlin
#

So the quality lines use a gem_quality line if it exists and defaults back to the normal ones if not

velvet fog
#

oh, I ignores all gem_quality rows /sadface

brittle oasis
velvet fog
brittle oasis
#

Whats width for, or is that for the ui

carmine merlin
#

Other things I figure out were the GrantedEffectDisplayOrder in GemEffects

carmine merlin
brittle oasis
#

Appreciate it, cheers

carmine merlin
#

GGG also groups the dat files into folders but we don't get that info in the game files either. Would be nice to have

brittle oasis
#

Out of curiosity, what else is do you guys have to scrape off the trade website or figure out manually or elsewhjere to get info that isnt available from the dat files

carmine merlin
#

Atm it's just uniques, foulborn mod swaps and some mods in poe 2 that come from the trade site
For PoB there are a lot of mechanics that reuqire in game testing for us to properly implement
e.g. server tick rounding for trigger skills, rounding behaviour of damage mods so stat like armour are correct, specific mod interactions etc. There is a lot of work in making sure each skill s handled correctly

quick basin
velvet fog
#

GGG has hidden a large number of files; if the processing can be done on the server side, it won't be stored on the client.

Therefore, for PoE1, obtaining gem vendor information requires manual maintenance.

zenith zodiac
quick basin
#

i think they would actively gain from exposing a TON of game info via api calls

#

skill gems, tree structure etc

#

let people develop cool shit and play even more

zenith zodiac
ebon kernel
quick basin
#

what competition?

#

we datamine stuff and publish it

#

data is gonna be out either way, may as well reduce friction

#

i mean i get the fear behind it but idk

ebon kernel
#

It's the same as going to a fancy restaurant and ordering food - you can see the ingredients on the menu, but there may still be something that the chef does that can't be easily replicated at home

grave wren
#

why would they spend money and hours on that when the community does it already

velvet fog
#

Let everyone suffer together

tall oyster
quick basin
#

will definitely have a look, after im done trying out pathfinder lol

lyric cliff
#

How do guys get the effect description of Runes/ Soul Cores / Talismans in PoE2?
I tried using the data in soulcores.datc64 in combination with Stat_descriptions.csd but not all soul cores have values in soulcores (for example: BaseItemType 631 Countess Seske's Rune of Archery)

velvet fog
#

SoulCoresPerClass.datc64

tall oyster
#

do speed runners use those things that show the layout or would that be against speed runs? like what i think Lailloken has in Exile-UI?

#

im going to assume they more than likely try and remember layouts for speed in general

frank drift
tall oyster
#

not off topic, there was a point tool wise lol but thats sort of what i thought

lone ingot
#

tbh I kind of get ggg not wanting to expose everything but at the same time, publishing a schema dump of data types for the bytes in exposed dat files in GH would be pretty nice for us bla

frank drift
#

would be nice, but also it's more work so

lone ingot
#

even something simple like byte count per column or w/e, don't even name them

#

just prevent us from having to do the manual scans

hazy fiber
#

dont they have columns internally thats not exposed to the client? ( the .dat64 and .dat64c are different right? ), so they would need to maintain a schema that is not used by themselves?

#

or whatever the dats re called, its been ages since I looked at them

lone ingot
#

I mean I'm assuming they have a tool that goes through their column editor output and packs it into the dat format and pkg'd into client

#

would already have the concept of public facing vs server only in the packaging process otherwise (assuming here) there wouldnt be a unified editor

hexed mesa
#

where's the fun if they release everything

lone ingot
#

haha I mean we'd still have to do a lot, it would just remove some of the guesswork between updates

#

the community schema is best effort and many things depend on it, would just help there

lone ingot
#

haha for all I know it's just the raw output getting encrypted and put straight in

#

all I'm saying is that there's a point where it goes from editor to packaged and at that point, the data types are known

worthy cape
#

Fun fact - in my mind datc rhymes with yahtzee.

#

Kind of apt as the output has zero punctuation.

lyric cliff
shadow peak
tall oyster
#

Have layouts changed each patch or been consistent?

#

Actually nvm definitely from 0.2-0.3

frank drift
#

entrance/exit locations seem to change most times

#

aside from explicitly redesigned areas

tall oyster
#

I assume just doing ocr quick on entering the scene and comparing with whatever gathered data of common entries w/ correlated layouts?

#

Err not ocr, image compare

frank drift
#

it might work if you had enough data, but you'd have to re-gather data each league potentially

tall oyster
#

Yes that would be a pain

velvet fog
#

there is a topologies files that describe the layout

tall oyster
#

Didn't realize lol that's nice to know

shadow peak
#

Yes, the campaign codex people have been using them quite extensively the past two leagues. But for some areas, comparing the topologies with the actual output is still very hard. It's not like you can learn those and then "sight-read" zones when you run them for the first few times.

#

mirroring and rotations doesn't make it easier 😄

worthy cape
#

Much like the Pirate's Code, they're more what you'd call "guidelines". 🦜

past merlin
#

Are there any popular tools that use the stash tab API for poe2 yet? I know some select few have character data access in some shape or form, but can't think of an example that needs stash access

past merlin
#

Ah damn, first thing to check. Thanks 😅

brittle oasis
#

Where does pob or anyone get their orbitRadii info from? Haven't been able to find that anywhere

velvet fog
#

The values ​​should be provided by the official, it's not ingame file

brittle oasis
#

makes sense since it doesnt change i guess, ty

ebon kernel
#

How do you retrieve list of poe2 leagues?
https://www.pathofexile.com/api/leagues?realm=poe2 doesn't seem to return the correct ones BlodThink

ebon kernel
#

Thanks!

brittle oasis
#

I thought the reason the arcs art was 90 degrees was so that the texture could be mirrored and repeated, but I'm still new and trash at opengl so might be missing something but anyone have any idea why there is an extra pixel at the edge to break the mirroring? You can see at 0, 90, 180 and 270 degrees just a slight break even ingame. Is this intentional for some reason im missing?

cyan void
#

how are positions on large cluster jewels for the noteables calculated?

worthy cape
tall oyster
#

game is now unplayable because of this pepekms

worthy cape
#

If that is in your own code, maybe make sure you don't have half texel offsets wrong in some way.

tall oyster
#

me personally i just draw the connections instead of using images

tall oyster
#

ignore some of the WIP missing things but this is serviceable for me

brittle oasis
#

that pic is from in game 😁 the texture just randomly has an empty pixel on the edge. wasnt sure if i was missing something or not

#

you made me check the 4k one, that one has 3 pixels wtf

strong patio
#

Fascinating

tall oyster
#

This is almost as bad as the hbo logo misalignment

brittle oasis
#

since i cant unsee this anymore enjoy

#

this is going from notable to passive on both accounts, why does one have a thicker inner line

#

i mean i know its using a different radius line but ..

worthy cape
brittle oasis
#

I never knew such a tool even existed, that will actually come in handy later but you keep giving me more stuff to play with wtb more time

worthy cape
tall oyster
#

I thought this was only a POB thing, this is in game as well peepocry

golden knot
#

(these are the items GGG has hardcoded to be impossible to hide with filters)

swift beacon
#

GGG: you should not hide these items, trust us
Player: pft, whatever, you're not the boss of me

hexed mesa
#

tbf, back during archnemesis league there was plenty of reasons to hide parts one didnt care about yet it wasnt possible

jolly panther
#

not allowed to hide relics because they're "quest items" 🦀

cobalt wolf
#

When writing item filters i want to hide common normal/magic bases, but i think there are some drop restricted bases out there.
Rather than listing all the drop restricted bases first i wish there was like a "DropRestricted false" that i could put into the item filter to only filter on the common ones.

#

Would this work as a suggestion to the dev team? or is there an easier solution to this now other than listing out the drop restricted bases in a show block first?

compact isle
daring moss
velvet fog
#

no orbitRadii information

compact isle
velvet fog
#

but missing index 8,9,10

compact isle
fickle yew
#

Have we seen any examples of bonded mods? I can't find any.

compact isle
velvet fog
cobalt wolf
carmine merlin
cobalt wolf
#

i have a small hope that they will remove the poe1 specific items

#

or atleast give us some way to classify them

frank drift
#

that data is for internal use, not external

#

so don't hold your breath

zenith zodiac
#

depends how good my league starter is

velvet fog
#

Has anyone finished downloading the torrent? My internet connection is still 18 hours away.

velvet fog
#

I want to check if the Content.ggpk file in the Torrent folder contains an index file.

echo ravine
worthy cape
#

I just had the worst idea. Run bun_extract_file over a SMB connection to the other end of the world.

velvet fog
#

Have you downloaded the torrent yet? Can you test to see if index.bin is present?

worthy cape
#

This works surprisingly "well":

#

2.5 IOPS

velvet fog
worthy cape
#

43 gigabytes in now, the linear scan for GGPK chunks is murdering throughput 😄

green geyser
#

can anybody share some data from a few api endpoints?

I don't have access to them yet but i'd like to start writing something, don't wanna do it blindly. i sent ggg an email asking for access but with poe2 around the corner i doubt i'll get a reply any time soon

i'd like data for these endpoints

GET /profile - somebody with twitch attached preferably, any big streamer will do
GET /character[/<realm>] - i only care about poe1 and PC realm, so omit the realm path entirely
GET /league
GET /league/<league>/ladder - if possible 2 requests here, one with class sort, and one without any sorts

velvet fog
green geyser
velvet fog
#

Only oauth apis are officially supported

zenith zodiac
#

don't think l've ever tried accessing the files during the downtime before, is forbidden index normal?

tall oyster
#

i believe thats normal

fickle yew
#

I have it, but my data has 2 files...

tall oyster
somber mortar
#

I'm getting errors trying to read any of the stat description files, saying they dont exist hmmm

fickle yew
#

Stat descriptions are there though?

#

Ah looks like an issue on my side.

carmine merlin
#

metadata/statdescriptions doesn't exist in the standalone ggpk

#

oh the data structure changed

fickle yew
#

Yep also just saw the balance folder. They're in there.

somber mortar
#

ah stuff just moved around a bit interesting

fickle yew
#

@carmine merlin No new tables it looks like but I think your guess was correct.

  {
    "tableName": "PassiveSkills",
    "status": "mismatch",
    "actualRowSize": 392,
    "expectedRowSize": 359,
    "difference": 33,
    "rowCount": 7676,
    "columnCount": 53
  },
carmine merlin
#

Need to fix something with the index file as I can't extract stuff atm
Not sure if the index file location was moved or hardcoded before

carmine merlin
fickle yew
fickle yew
carmine merlin
#

Thanks

fickle yew
#

Lots of red nodes...

carmine merlin
#

Had no clue that looking at the ggpk using visual ggpk3 blocks other programs from reading the index file and exporting dats

fickle yew
echo wren
#

hello is poe2 db open source ? I

foggy stag
#

has BaseItemTypes moved? i've been using snosme pathofexile-dat to extract data from patches the past year, and apparently it's failing with 4.4.0.1

somber mortar
#

all tables are now in data/balance

foggy stag
echo wren
#

waiting for path of buildiong update

pearl hawk
#

Do you guys know if the community-schema for ItemClasses no longer matches the datc64? we are having trouble parsing it, and it seems like it can't be opened in https://snosme.github.io/poe-dat-viewer/ either

#

just getting "you may need to adjust the patch version"

echo wren
#

just out of curiosity is there an mcp for poe2db or similar ?

somber mortar
primal schooner
#

is the Exiled Exchange 2 fork still supported / u2d for .4 ?

somber mortar
#

yes

primal schooner
#

sweet just grab from your repo?

somber mortar
#

yes

primal schooner
#

thnx and thnx

carmine merlin
fickle yew
#

Ah. I wrote the comparer without something to diff against..

carmine merlin
#

For people working on skill tree stuff, the 2 new keys in PassiveSkills refer to Ascendancy.dat and PassiveSkilltreeNodeFrameArt.dat

robust merlin
#

[CRIT Client ***] File Not Found: Metadata/Effects/Spells/hit_and_blood/FX/PHYS_blunt.pet. Using fallback PET file
You guys see it too? (dozen of similar lines in logs\Client.txt)

primal schooner
#

where does the updated tree for poe2 come from on poe.ninja/poe2 ?

carmine merlin
#

Game files

primal schooner
#

ok, so it's accurate

waxen musk
#

they ruined soulcores D:

fickle yew
#

Oracle nodes only shown on ninja now if you pick Oracle.

primal schooner
#

if there are any GGG devs lurking; is this a typeo or a bug?

fickle yew
primal schooner
#

i mean the title vs the actual benefits

rose gyro
#

is anyone mining images & new base type stats? 👼 any source online yet?

primal schooner
#

i'd assume Neversink already has

carmine merlin
rose gyro
#

thank you @velvet fog ! 🙏

echo wren
#

I would be amazing to have an MCP for the skill tree and other datas maybe i should work on it sometimes

waxen musk
fickle yew
oak estuary
#

Except the line says "Elemental Damage" while the title says "Elemental Resistance"

carmine merlin
#

Surely GGG didn't remove the tags from goldmodprices.dat out of spite right?

worthy cape
#

Stat is armour_%_applies_to_fire_cold_lightning_damage I think.

#

Node name is probably an oversight.

#

(wildly guessing, didn't look proper)

fickle yew
carmine merlin
#

Mods.dat has the boolean spawn weights now. No longer have to rely on the gold mod prices @velvet fog

carmine merlin
nova hamlet
#

Yeah

#

I also had to fiddle aroud with the goldmodprices table

lone ingot
#

stat descriptions parsing is always a joy

echo ravine
#

damn, were abyss mods always domain expedition_relic?

#

thats a wild change if not

lone ingot
#

@modest path{"poe":"3.27.0.7","poe2":"error"}

#

oh, not your fault, actual game is down lol 😄

modest path
#

I see it started working again when they did

fresh beacon
#

Is there any way to download the ggpk without the game installer?

modest path
#

*yes

#

Are you looking for the ggpk itself or the data inside it?

fresh beacon
#

I need the skill videos which are not part of the data afaik

modest path
#

If you want to programmatically get the latest versions of things out of the ggpk, there's quite a few ways for various languages

fresh beacon
#

So what is the mechanism for downloading the ggpk without the installer? I ask because I just don't have access to my pc where I normally have the game installed, and don't want to install it on the current one. The torrent seems inactive.

modest path
fresh beacon
#

Thanks, I'll see if I can pull the bk2 files using that

modest path
#

I feel like videos might not be in the ggpk but don't recall exactly?

#

Hmm, the listing on poe_data_tools appears to have broken

#

Oh, no, the globing just got require_literal_separator enabled but the default is still * instead of **

#

cargo run --release -- --patch 2 list '**/*.datc64' still works

carmine merlin
#

They are in the game files but not in the exact location we have in the client

#

Can't remember where they actually are

lone ingot
#

yeah assuming videos would be packed and not in patch server deltas

#

I would just clone your ggpk and use any tool to analyse it

modest path
#

Are they getting pulled in via a different CDN and merged into the GGPK by the client or something?

carmine merlin
#

Hmm yeah I don't see any bk2 files after dumping the file list

modest path
#

Definitely not in the bundles

cobalt wolf
cobalt wolf
#

https://www.poe2wiki.net/wiki/Talisman
Do we know if any of the talismans are drop restricted?
like only dropping in certain areas.

Talisman is an item class of two-handed martial weapons that require strength and intelligence to equip.

cobalt wolf
# frank drift why?

setting up items filter, i only want to filter out common ones that can drop anywhere from anything.

#

thinking of stuff like breach rings for example, those can not drop anywhere

frank drift
#

I'm not aware of a single drop restricted weapon or armour base in poe2

cobalt wolf
velvet fog
#

Cultivated Vaal Unique search don't work?

primal schooner
#

wait is GGG using the same API strata for POE2 as POE1 ?

modest path
#

I mean 2 is literally a hard fork of 1 at a specific point in time

#

So the general answer to "is it the same" is "yes, if they haven't backported whatever you're talking about yet"

lone ingot
#

pretty much yeah, most things are the same except for the stuff that isn't, which is a slowly growing list

#

that said the core structure most apps care about (items, stashes, trade, etc) are almost exactly the same

cunning mantle
#

is there a way to fix it

#

my shaders turn into this

clever thistle
echo wren
#

Quick dev question: for PoE2 data extraction, is there a maintained tool or npm package you’d recommend to extract/parse Content.ggpk / .datc64 tables (using dat-schema), similar to what PoEDB/PoE2DB do?

#

wondering if there is there a recommended / maintained extractor (npm, TS, Python, etc.) for PoE2 Content.ggpk + .datc64 (dat-schema based), or is the POE2 GGPK Tool the current standard? that's being updated frequently

velvet fog
echo wren
#

the first link is for poe1 only right ?

#

seems like compatible with both

#

ok thanks

velvet fog
dreamy valley
#

I'm looking at data from the currency exchange API, and I see an item called "Ign" "market_id": "chaos|ign". Anyone know what this is?

dreamy valley
gilded tree
modest path
# echo wren seems like compatible with both

poe_data_tools is compatible with both, and is very good either as a lib or cli utility if you want to efficiently get just the raw files you're after out of the game data without having to have the GGPK (or download much that you don't need).

It has some csv-dumping abilities based on the ivy schema, but if you want pre-digested stuff the repoe fork that was linked is one of the most used sources of that data so is very likely to be quickly fixed if if upstream changes.

I contribute to and use poe_data_tools because I want direct access to the raw data in rust without a bunch of bonus dependencies in other languages, and without other people's assumptions about how best to present the data for sane usage

#

Most community tools use a "schlorp the tables to json, then make meta-tables that are views into the data that people are commonly after" which is great for getting started quickly and not having to learn every relationship and interaction and bug in the data

tall oyster
rugged wagon
#

ACT 3 - 2nd half of questing. Still no Heal Well or Stash. Why do all players need to TP to town and go thru another load screen just for these 2 basic things of all other towns?

clever thistle
#

@rugged wagon this is the wrong place to ask

rugged wagon
#

where can i address this? its been frustratin for many other players as well

clever thistle
#

the official forums

rugged wagon
#

ok do u have link

clever thistle
hazy fiber
#

wonder if renaming this to "third-party-tooldev-general" would fix the issue, but that name is too long

ebon kernel
#

And frankly, even that would make people blind

clever thistle
#

is there a bot command that quietly DMs them an explanation and some links?

ebon kernel
#

speaking of filters - is there any poe endpoint where you can get filter(s) info or it's not exposed BlodThink?

ebon kernel
cobalt wolf
#

How is the progress on pob for poe2 this patch?

frank drift
cobalt wolf
frank drift
#

(I don't work on PoB, just watch it)

grave wren
hexed mesa
#

the channel is already hidden by default. you either need to select it on the channel and roles selector or have show all channels enabled

#

I suppose you could have a role that lets you send messages here to avoid random people with show all channels, so at least they would have to click once more to be able to talk here. doubt it would change much though

grave wren
#

Ah didn't know that you have to enable it already, guess it's just true Poe players unable to read then

compact wigeon
#

Sometimes I consider reading, but then I remember that haha numbers go brrrrrrrr

worthy cape
#

Just run stats over the messages and react to ones from significant figures.

carmine merlin
#

@velvet fog what do you use for the class id mapping as we’ve had the same problem in PoB 1 before where the new id is in the middle of the existing class list so it messes with old builds?

velvet fog
#

characters.IntegerId

marble sable
#

does anyone know how to fix this? I have reinstalled it multiple times but nothing fixes it. When i press escape it gets rid of the error message but it keeps crashing when i do anything. F5 doesnt help either.

carmine merlin
marble sable
carmine merlin
clever thistle
#

takes another 3 hours everytime some asks. it's the law.

marble sable
#

ohh woww didnt expect that. I cant imagine how much work that is. Thank you for your effort :)

worthy cape
hexed mesa
#

its an auction in a house, cant blame them

carmine merlin
marble sable
velvet fog
#

+3 hours

long musk
carmine merlin
#

PoB update out with all the new 0.4 stuff

#

realised after looking at ninja that the body parts stuff was in the API

kind dirge
#

Thanks for all your hard work! Really appreciate this tool. That was a LOT of PoB1 changes to pull in.

carmine merlin
brittle oasis
#

Good shit, tree looks 👌

cobalt wolf
#

Is it even possible to get "the unseen path" on other characters than the druid?
Noticed PoB now shows all the unseen path nodes for my sorceress

#

maybe we could need an option to hide them

carmine merlin
#

We did think of hiding it like the game does but it's might be useful to see for theory crafting

#

I assume there will be other ways to get access to those nodes in the future

cobalt wolf
#

i see your point, my concern is that it just seems a bit harder to look through the tree.
it feels very cluttered with nodes that i cannot even get

kind dirge
#

I can see both sides to that argument. fwiw my intial gut reaction was it'd be nice to be able to hide for when I'm not theorycrafting Oracle as well. Agree with the clutter comment (which is a GGG design thing really, not you guys)

graceful sparrow
#

Hey GGG I can not login on the website, I don't use VPN although I am blocked from logging in

clever thistle
graceful sparrow
#

for forums you need to log in

#

sorry for bother than but I do not know what to do

clever thistle
#

you can still read the forums without logging in yes?

graceful sparrow
#

yea but there is nothing to do on my end i get an error that says I am blocked by ip so not sure how that would help

#

Thank you anyway and sorry to bother once again have a great day

manic venture
carmine merlin
zenith zodiac
cyan void
#

do we have data for poe2 somewhere, preferably json.. for what affixes can go on a waystone?

tall oyster
#

My main tool i need to start converting over to Tauri (rust) because I made the terrible choice initially thinking electron would be fine even though I knew better.

frank drift
#

resource hog, and also can have global contention issues, so the more electron apps you run the worse they perform

ebon kernel
#

What is considered as resource hog? Like how much is too much?

frank drift
#

fundamentally Electron is ease-of-use focused and not performance focused

ebon kernel
#

IMO electron memory issues are generally skill issue and people mismanaging the codebase and/or barely using main process

#

A good example of that is vscode itself - it's super performant for what it does

tall oyster
#

I have first hand experience rolling the same app with the same functionality in electron and tauri and tauri always performs better, doesn't rely on chromium crap.

#

also smaller bundle size

ebon kernel
#

What are the performance benchmarks? Not to sound like an ass, I'm always curious about people experiences with other frameworks and their motivations

#

Bundle size is a meme in 2025, storage is free unless you picked your HDD from 2000

tall oyster
#

i mean if i can ship somethin in a smaller package i will prefer that, sure we have much more storage but that doesnt give the excuse to allow things to just grow in size

#

Tauri by itself uses less memory out of the gate again if you do a perfect 1:1 with electron

#

mainly you see the performance in my app for example when you need to constantly be reading logs

#

if you arent working with files or like the winapi then sure probably not much of a difference

#

tauri doesnt need the full node.js runtime, etc...

ebon kernel
#

I'm reading poe client.txt on a 100ms basis when I'm opening stacked decks and it never went more than 20mb on ram usage what I feel like is quite a heavy task as I keep writing to sqlite at the same time

tall oyster
#

do the same with rust, im sure you can trim it more

ebon kernel
#

At what cost though?

tall oyster
#

having to write rust? :p

ebon kernel
#

Trimming 10 maybe 15 less ram for more headaches because of native webviews BlodThink?

tall oyster
#

i mean personally i havent had more headaches

fickle yew
#

The borrow checker doesn't allow unsafe headaches.

ebon kernel
#

Is it universal across other platforms? As in, Linux/macos

tall oyster
#

yes

gilded tree
#

My main problem with tauri ~1 year ago was that the webviews worked differently for each platform. Had rendering bugs / problems on different platforms - electron was working fine.

Ended up with native solutions but yeah, that was the main problem.

tall oyster
#

Interesting, suppose I just haven't had these issues with what I've worked on,. I'm shipping to win/linux/macos now with a few tauri apps and not having issues.

gilded tree
#

Can be fixed now, can’t tell

hexed mesa
#

if only there were other solutions than electron and rust

ebon kernel
#

There is flatter iirc

tall oyster
hexed mesa
tall oyster
#

played around a bit with imgui with c++ but I just never liked using it

ebon kernel
#

From what I've heard about Tauri platform headaches, it's usually Linux users having simply broken apps

hexed mesa
tall oyster
#

what's really gross is what I've had to make in my day job, powershell GUIs pepekms

ebon kernel
#

Though if you do file system operations, I do wonder how rust compares to electron; in my proof of concept I briefly used electron-store to write things to jsons and I've been consistently hitting I/O clashes and it sucked

tall oyster
#

yea, i would definitely give a try, its honestly reletively easy to swap from electron to tauri, if you use like ElecotronAPI calls then of course you need to fix those but yea

frank drift
#

sometimes my entire Windows locks up when two Electron/Chromium apps are writing to disk at the same time, I don't know why it's so bad but it's bad

ebon kernel
#

probably windows contributes to that of how dogshit this system is nowadays

tall oyster
#

funny thing the new version of Teams runs on Edge WebView2 and I feel like it worked better when it was electron

#

but also doesnt help all the copilot and bs they keep adding to it

#

so many not a fair comparison

ebon kernel
#

I'm genuinely curious how discord manages to peak up to 4gb of ram though, that's nuts

tall oyster
#

yeaaa, dont think its going to get better with all this other stuff they are planning to add

#

sort of miss the simplicity of teamspeak lol

#

ugly as hell but worked great lol

ebon kernel
#

Sidenote but reminded myself about 1password using electron and rust at the same time

tall oyster
#

interesting pepe_taking_notes - self hosted vault warden user myself

#

1pass not bad though, actually nice for the 2fa features when you need to share with a team

cyan void
#

does this still apply? i am not sending any data just listening and I am getting the same code (1008)

frank drift
#

now that is a necro

cyan void
#

it was the only thing I could pull up regarding 1008 searching in here 😭

#

i read it and wrote code before asking

#

I am 100% sure i am not sending anything because I spend half the day writing a ws lib myself to make sure NOTHING is sent

#

ws frames are funnnnnn

#

i can also offer a 1006 code which i got when i was sanity checking running mitm on my own code and another lib

#

but could be my code for mitm (most likely is)

compact isle
#

doing anything to do with livesearch websockets isn't a great look anymore unfortunately, so I'm not going to help here. Make sure not to automate anything or you will risk a ban

cyan void
#

thanks for the heads up i will just close everything

tall oyster
#

anyone here happen to already have renamed the skill, support and spirit gems images with correct or closer matching names to what they actually are or am I going to have to be busy tonight? 😛

worthy cape
#

But internal names are so much fun.

tall oyster
#

thats one way to put it lol

#

actually shit that gave me an idea, thank you

lone ingot
#

anyone know where the base art is for maps?

tall oyster
#

checking

#

like these?

#

2ditems\maps
2ditems\maps\atlas2maps\new
2ditems\maps\atlasmaps
2ditems\maps\endgamemaps

worthy cape
tall oyster
#

Trying to figure out what file points to the skill gems for example Poisonburst Arrow 2DItems/Gems/New/RangerPoisonArrowSkillGem.dds but only finding Art/2DArt/SkillIcons/4k/RangerPoisonBurstArrow.dds and trying to work with that naming is hurting my brain

tall oyster
#

so this and not the skill icon

carmine merlin
tall oyster
#

ahhh ok perfect

#

thank you

carmine merlin
#

np

#

Technically BaseItemType.Name is not the name used on the gems in game but is the same for 95% of them

tall oyster
#

ill take 95% :p

carmine merlin
#

gemEffect.GrantedEffect.ActiveSkill.DisplayName is the one actually seen ingame

#

BaseItemType.Name is what's used for skill names on the tree, who knows why that distinction was made though

tall oyster
#

interesting, fun times for me ahead now

carmine merlin
dusky flame
carmine merlin
#

Our PoB viewer recurses through keys though which Poe dat viewer doesn’t

dusky flame
#

ill leave it to the experts then, above my pay grade

dusky flame
velvet fog
#

baseitemtypes, skillgems, gemeffects

floral marten
#

anyone have experience with buff tables, im just looking if exists any table that give the "buff duration", i was able to get the stats from table, but im trying to figure it out where can be this "10 seconds"

lone ingot
floral marten
#

Checking i did t see that number

lone ingot
#

yeah I'm pretty certain that number is at least somewhat representative of duration

#

AncestralJadeHulkWarcry is 20.0 which correlates to the warcry duration from one of these minions https://poe2db.tw/us/Ancestral_Spirits

#

same as AncestralBuffHornOnsalught, same situation

floral marten
#

thx 😄

lone ingot
#

also all the shrine durations being 20 seconds, makes sense

#

should probably name the field in the community schema I guess

floral marten
#

so close and i dindt see, i extracted the stats but didnt see it xD

#

thx a lot 😄

#

now checking the value 20 for delay 😄

lone ingot
#

assuming some durations are just hardcoded

floral marten
#

loosk like

#

maybe in gamestat

#

checking

hazy fiber
#

isnt there a buff icon while its "recovering"?

floral marten
#

yes

hazy fiber
#

then assume its done via some buff

floral marten
#

yep but not bufftemplates for this one

hazy fiber
#

but yeah alot of buffs, if they dont have a template (or even if they do) are likely hardcoded values in code

floral marten
#

thx

#

for now i will assume delay 20

#

i dont think so is that number xD

lone ingot
#

i wonder what the logic is for the duration being there

#

maybe things that can be live balanced/patched easier?

hazy fiber
#

I think the value is always 20 seconds and the tree gives modifiers to expiry rate?

floral marten
#

yes

lone ingot
#

it's probably just a hardcoded 20 sec value

floral marten
#

if my english issnt bad, doesn mean delay is reduced

lone ingot
#

The expiration rate of a temporary effect describes how fast or slow time progresses for that effect relative to real time.
Ordinarily, the expiration rate of a temporary effect is equivalent to real time – that is, one second of temporary effect duration lasts one actual second – however, there are modifiers that can increase or decrease it...

hazy fiber
#

there is no cooldown, you just cannot gain an archon buff while you have one or have that recovery period buff, so expire faster on it does mean delay is reduced

floral marten
#

oh ok

lone ingot
#

the math is in that wiki

hazy fiber
#

if you had some way to remove the recovery period buff you could apply a new archon instantly

#

does mean temp chains probs really screws archon builds though

#

without the tree nodes

floral marten
#

yep 🙂

#

thx a lot 😄

#

now i have more piece of the puzzle for support more buff 😄

inland kestrel
#

I have some older trade links that no longer work. I vaguely recall there being a REST request i could make to api/trade2/search that would expose what the search query filters were for the trade link. Does anyone know what I mean? Sad if I lost some old, great searches 🙁

velvet fog
inland kestrel
velvet fog
#

can't

inland kestrel
#

okay, thank you

ebon kernel
#

I've been playing around with holo css effects and I don't know if I'm convinced or not

tall oyster
#

that just the one from Simon Goellner?

ebon kernel
echo wren
#

hey i just want to confirm something the current client patch i get is 4.4.0.2.4

#

it's updated right ?

#

poe2

echo wren
#

thanks !

tranquil token
primal pewter
#

I've been trying to map game mod stats to trade stats and this approach has always worked fine, but something broke with the latest update. Does anyone have an idea? For example, in the trade stats we have

        "id": "explicit.stat_1509134228",
        "text": "#% increased Physical Damage",
        "type": "explicit"
      }

but the hash32 of local_physical_damage_ in the game files is 2750182247 which doesn't match the trade stat after hashing. It seems like (but i haven't checked this) that some of the hash32 values have changed, and a good number of them are still mapping correctly, but many aren't. Is there any other way to map the stats to the trade stats?

velvet fog
#

local_physical_damage_+%

primal pewter
#

yeah, jsut a copy and paste error

#
  {
    "_index": 27,
    "id": "local_physical_damage_+%",
    "islocal": true,
    "isweaponlocal": false,
    "semantic": 1,
    "isvirtual": false,
    "mainhandalias_stat": null,
    "offhandalias_stat": null,
    "hash32": 2750182247,
    "belongsactiveskills": [],
    "category": null,
    "isscalable": true,
    "contextflags": [],
    "dotflag": [],
    "weaponhandcheck": false
  },
velvet fog
#

If multiple hashes are incorrect, then the seed may have changed.

primal pewter
#

Yeah, maybe. It seems like there is some poe1 and poe2 weirdness going on where some hashes still refer to the poe1 data but not the new poe2 data

#

I could try running a brute force on the seed, just going to take a while

#

I don't think the seed has changed because explicit.stat_150913422 it the same in poe1 and poe2 trade, so any other seed wouldn't map to the same number. Also just did the brute force and didn't find anything else that works generally. So seems like the hash32 has changed but only in poe2

velvet fog
#

no idea, I haven't studied this hash in depth.

zenith zodiac
primal pewter
#

I didn't see any obvious pattern, I first thought it's local vs. global stat but it seems to happen with both sometimes. I didn't look at it in detail though, I will check again

lone ingot
#

when a patch happens, does everything update or only the newly listed things?

somber mortar
#

it hasn't actually changed, you need to use both ids though

#
id_to_hash = ['local_physical_damage_+%', 'local_weapon_no_physical_damage']

HashComputer().compute_hash(id_to_hash)
1509134228
#

this part here

brittle oasis
#

Random question for any tree renderers. I cant tell if my math is off or this is just the way it is. If I set the lines behind the nodes, everything looks fine, but if I render it on top, its not actually in the center of the node. Cant tell if I messed up or if thats just how it is. Curious if anyone has a debug version of their tree and can tell me if theirs is the same or not

shadow peak
#

This is what it looks like for my in-game overlay. Can't zoom in more, but it looks centered to me.

brittle oasis
#

That side is fine for me too, although hopefully my tree data is just old and it changed this league or else I really messed up since mine looks different. But from what I can tell its just nodes that have a connection orbit different than 0 that are inverted or needs their center recalculated that might be affected, not even all of them. You wouldnt happen to have a ranger that went towards the right would you, thanks for sharing

shadow peak
brittle oasis
#

Well shit, definitely me. Was hoping it was just like that 😂 Thanks for the help

deft socket
#

@somber mortar pls mate check DM

sharp mulch
#

it seems trade site and the game files are showing wrong item level information and the recharge rate and faster recharge mods
both mods have an ilvl 30 requirement for their bottom 2 tiers on all bases

worthy cape
#

Not to the degree of yours tho, I don't think.

floral marten
#

also if you are using assets from in game (the orbit) make sure you remove 1 pixel of the rigth xD

#

because it was empty xD

#

maybe help you maybe not

waxen musk
#

is bhatair's vengeance supposed to be missing lineage tag?

carmine merlin
floral marten
#

anyone know what is the radius remnant pickup? or in witch table can be?. I already check character.oc but isnt there, thx in advance

#

context: im trying to enable this

frank drift
#

I would sort of doubt it's in accessible data

worthy cape
#

Does it matter much for PoB except as a breakdown number?

floral marten
#

i was trying to enable somehthing like this xD

#

but liiks like is a magic number

frank drift
#

most known ranges have been from manual testing afaik

tranquil token
#

@velvet fog This may be a somewhat unusual request, but could you create a page that collects loading screen tip texts? I play in a language other than English, and I would like to use it to report mistranslations in loading screen tips.

velvet fog
velvet fog
lone ingot
#

that column is certainly a buff duration though I don't really know what the logic is for it having a value or not

#

e.g. even the name of this one lines up in PoE1

carmine rampart
#

@somber mortar In last updates you changed logic about checking fractured items, even when i trying to check fractured amulet it autimatically select :fractured-no, could you please fix it? or atleast make option like "always select non-fractured"

tranquil token
velvet fog
#

The item Take, Orb of Extraction, has been marked as non-existent because it lacks the required information.

somber mortar
regal vortex
#

Are there any groups or people working on a graph-based crafting optimization tool for PoE 1?

modest path
frank drift
velvet fog
#

I didn't count shield/buckler/focus as armor. Should they be?

jolly grove
#

they do count as armour for augments

velvet fog
#

wow, thanks

modest path
#

I take it that interval in the schema is just a special case for pairs?

carmine merlin
#

2 ints next to eachother like a range e.g. 20-30 for a stat like fire damage to attacks

modest path
#

Also am i high or did they change the string array format to be variable width data offsets instead of null terminated strings adjacent in the variable width data?

#

Or did my string array handling just never work before

carmine merlin
#

We've used it forever in PoB as GGG also uses it on their tooling too

#

Pretty sure all our strings work but I have noticed some weird files that have odd usages of string data types

modest path
#

this could have been any time int he last year, or never

carmine merlin
#

Don't think I've ever changed our handling for string data types in PoB

modest path
#

Must just be my memory then

carmine merlin
#

2022 was the last time we updated our handling for strings

modest path
#

Ok I am going to scream into a bag for a minute lol

#

WHY IS INTERVAL A SEPARATE BOOLEAN IN THE SCHEMA AAHHRHG

worthy cape
modest path
#

If it's known to be 2x i32 fields and as a data type, not an attribute boolean thing upstream

#

Doing conditional logic on the json schema is a nightmare

#

Same sort of thing with row vs foreignrow - They're exactly the same lol

#

(reee)

lone ingot
#

I made a schema to sqlite cli tool thingy if you want to pinch it

modest path
#

I looked at doing that but with duckdb but the type differences pissed me off

lone ingot
#

well "I made" is kind of a stretch tbf, I was stress testing full hands off claude code dev with giants amount of docs/references for it to go off

modest path
#

hahaha

#

I'm accessing the dat files directly with my own parser; the schema is the only thing I have not recreated from scratch

#

and that is actually on my mind lol

lone ingot
modest path
#

feedin' at the ol' slop trough eh :)

lone ingot
#

honestly it's actually pretty okay but it took a bit of steering to get it right

modest path
#

It's surprisingly good at some things

velvet fog
#

another parser?

modest path
#

and will make such a mess so fast

lone ingot
#

there's a bug in the cli if you try to download a non-dat file that doesnt exist, it will just hang

modest path
#

@velvet fog pure rust all the way from the cdn automatically, fully typed, with cells that are references being native pointers to the referenced row of the target table

lone ingot
#

i remember it stuggled with getting strings right for a little bit, the formats were wrong, was missing beginning or end of them, etc

modest path
#

Only think I know of that I have left is intervals

#

which won't be too bad

#

until I find the next thing I have left

lone ingot
#

what works well is giving it an integration style test that it can use to validate results, I was making it do a fresh build + wipe of DB then runexamples/items/ruh.sh and validate the first result (which I knew the structure of ahead of it getting there)

worthy cape
#

I made my own schema when making a DAT reader a while ago 😄

lone ingot
#

works well, most agent tools main issue is lack of being able to validate results whilst in its loop (at least when using compentent models like anthropic ones)

#

and yeah tbh the community schema is just a dep we all have, I just accepted and embraced it kek

modest path
#

I have a moderate amount of code for programmatically discovering the schema that I want to get back to once I get my code generator properish

modest path
#

I think for now I'm just going to flatten the schema in jsonnet to using the type field for more as a first pass, then use that modfied schema in a more flat conditional way, vs having to stack if statements in random trees

last atlas
#

I have a question about Exiled Exchange 2. Dunno where to ask. Why doesn't it group +stats (str/dex/int) into ONE thing as a pseudo mod? There is functionally no difference between the three since any build will have a lot of passive nodes they can easily change around anyway

worthy cape
frank drift
#

adding a 'count' or 'weighted sum' search group for a "custom pseudo mod" pushes up the complexity to the point where logging in is required, which can be a pain

somber mortar
#

Yeah, +total attributes just got added as a native pseudo, so I may end up adding it, but it would likely be under the hidden switch

somber mortar
frank drift
#

ah, it would be nice if you could do uses remaining without count

modest path
#

Fun - btrequelpassivesubtrees is

  1. The only lowercase table name
  2. Not present in poe1 but not present in poe2, but marked as validFor: 3

I don't read js real well but gemini thinks that it's not currently possible to get just validFor: 1 other than the table being overridden in the poe2 dir or by modifying the js to support this?

#

erm, brequelpassivesubtrees

modest path
#

oh there's a bunch like that on the validFor being not correct

primal valve
#

hello,

I am a fairly seasoned full-stack node.js dev, looking to contribute back to the POE community somehow.
Maybe someone has anything node/web related, that they need some help with?

turbid torrent
modest path
#

Are there any known table references (either cross table or self, and either index based or column match based) that are known to be broken?

#

as in we know it's a reference but one of the values is invalid

#

I'm debating whether I should replace my cell loading/dereferencing code's excellent unwrap() based error handling with actual per-cell error handling that makes everything return a Result<>. If there's never any errors because GGG validates references during table generation, then it would be pointless complication

#

Unrelated, @civic crane do you have opinions on the following for dat-schema:

  1. Method of getting it so that tables that are not in poe2 can get validFor: 1 instead of validFor: 3 (due to not being overridden in 2) - AI slop wants to add a tag to alllow manual control of validFor on each definition, but I am not equipped to judge ai slop JS
  2. What (if anything) to do about tables that still exist in poe2 but are empty (the 12 byte ones)? Assume they haven't changed and keep using the same schema? Treat them as if they're missing and banish them?
  3. Any interest in CI tooling that validates definitions against the current data for poe1 and poe2? Could probably get it so it only barks at PRs for changed lines that are not valid, though having it for main would be helpful too
  1. Any openness to fully standardizing on one definition per file to simplify machine editing of the graphql? Could possibly do this and also solve #1 by using a common dir, a poe1 dir, and a poe2 dir, with subdirs available for keeping the poe1 patch organization if desired

Sorry for the wall of text; don't want to head in any wacky directions too far without bringing these up

modest path
# primal valve hello, I am a fairly seasoned full-stack node.js dev, looking to contribute bac...

https://github.com/SnosMe/poe-dat-viewer is amazingly useful and a core tool for development of basically everything else, but there's some improvements I could imagine being nice

  • Enable searching of table data, either native browser text searching or a custom search box of some sort
  • Enable jumping to a particular index of a table?
  • Make the two version fields on the start page directly clickable to load so you don't have to copy paste it into the version box
  • Get it so that columns can be auto-width based on contents?
  • Recursive search support in the Search in current folder field?
  • Some sort of modal popup when you're trying to find a target table for a reference that shows enough data about the hypothetical targeted rows to evaluate them without having to click several times for each try
  • Make references clickable to go to the target row of the target table? As long as the back button works or it's modal
  • Maybe have references have a hover popup that gives data about the pointed to value without even clicking?
  • Change the (pre-load all Data Tables to change) note when defining or editing a foreign key to a button that just does it? (the same as the Preload Data tables button on the Data Tables page linked in the very top right
  • Add tooltips for the colored bars that you show which types are valid and if a column is all zero when looking at a table in bytes mode to explain what they are?
  • Make it so that when selecting a range of bytes, an info panel pops up with all the valid options and examples of the data if selected (vs having to click Define column then using the radial button)
  • Make the Warn: The schema is invalid popup be less violent? Maybe toast? Maybe grey out empty tables where the schema cannot be evaluated so it's not even possible to hit the error for them?
  • Allow arrays to be displayed one per line inside each row, expanding the row height to the height of the cell with the most values?
  • Allow a global 'Show Schema' that shows just things you've changed using the UI? Or an export of the entire schema with the modifications made in the UI for using as a start to PRs
#

No idea if anyone else thinks any of those are good ideas shrug

civic crane
modest path
# civic crane You can do a pass instead of per call validation. Find max rowid in column and v...

My code is doing more of a 'try not to do any allocations and allow point-reads of the original data files' sort of thing. Each table is dynamically initialized as a vec of rust structs at first use, but the only failing there is failing the entire table, where if I put error handling around each cell read I can just have the cells that don't read right be individual errors (at the cost of pushing error handling out to the caller). Would def be cool to get more validation into dat viewer though - I haven't written any zig yet but have considered using the webasm chunk of that as something to try it on

#

I've got too many words in my head right now lol

civic crane
#

getting it so that tables that are not in poe2 can get validFor: 1
well idk, we can simply change bitflag to enum, it was to help get the poe2 schema going, but once it diverged enough there is no point in bitflag.
so the question is, has this happened yet?

modest path
#

Yeah there's 172 tables that are validFor: 3 but are not in the poe2 dat files, and I think 95 that are empty dat files in poe2?

civic crane
#

yeah but how much of 3 exist in poe2, if none im switching

modest path
#

oh gotcha

#

one sec

#

504 validFor: 3 that exist in the ggpk

#

validating my hacky oneliner

#

291 validFor: 2 that exist in the ggpk

#

with none of those counting the empties, I guess I should filter those too for better numbers

#

This is what I get for checking validFor: 3 tables in the schema against the list of files (lowercasing the schema name and only looking at datc64s), missing is ones that aren't there, empty is ones that are 12 bytes, and valid is ones that are there and not empty

#

I have to banhammer 17 other tables to get my code that's using the schema and parsing the tables from scratch to actually generate valid code; I suspect most of those are invalid schemas

#

I forgot the link on that one message lol

civic crane
#

number is big but there is lots tables ggg kept from poe1 that simply not used, like heist right? 😃

modest path
#

For sure

#

That's why I think the correct action for empty tables is to just mark the schema as not valid for 2; if they add data we always have hte git history and the poe1 data to reference

#

Hmm, what kind of an asshole would output that json with the arrays not sorted

#

(it's sorted now)

#

nuking the validFor and just copying the validFor:3 ones into poe2 also would help with programmatic manipulation

#

(the ones that are valid I mean)

civic crane
#

simplify machine editing of the graphql
it will need to preserve comments

modest path
#

Yeah, the classic issue of programmatic code manipulation lol

#

If there's not big complicated comments that apply to multiple definitions then it shouldn't be too bad

#

line comments are easy

#

There's a rust graphql parser crate that has a formatter which implies that it can roundtrip

civic crane
#

so we need a big PR with all tables that are "3" which exist in poe2, (+point for omitting Heist-like tables)

modest path
#

I think my numbers above may be off, spot checking one that seems like it should not be valid appears to have it in valid... I bet I screwed up my boolean logic somewhere

#

debugging...

#

I can definitely ai slop up some one-off tooling to copy/move valid stuff and remove invalid stuff

#

Fixed bug I think, "_empty_count": 84, "_missing_count": 171, "_valid_count": 420,

civic crane
modest path
#

validFor: 2 (exclusive): "_empty_count": 1, "_missing_count": 1, "_valid_count": 290,

frank drift
#

the best tools are quickly created in need

wanton forum
#

I am guessing new OAuth requests are pretty delayed with the new league launch, patches, holidays etc. Bad time to launch an app I suppose.

glacial lagoon
#

usually i get an reply every 3 weeks or so, and always on mondays, so i guess it’s just one employee who doesn’t work there full time and is working through the request step by step

#

but it took me from august to october the last time to get what i wanted

#

only to see them remove the inventory access for poe2 a few days later :/

#

well, it was fun while it lasted

lone ingot
compact isle
#

it takes a while to build up the motivation to process more after reading the 40th "I'm gonna build an MCP server!" request 😮‍💨

lone ingot
#

i agree re: search features in the viewer though

#

@modest path on the "valid tables" problem, in my mind it's a Q of whether we expect the community schema to be updated immediately on patch

#

explicit is good but it having loose rules on versioning also means that poe2 could get "accidental" schema support on a new patch just bc a table got reused

modest path
#

Yeah, if I can push on programmatic editing and validation, that could still happen during CI/CD

lone ingot
#

do feel like it'd be useful to have a way to deterimine in use vs not in use though, all the heist tables etc are just confusing and it'd be good to see immediately what's new

modest path
#

Yeah - I don't see any way to do that for the non-empty ones programmatically, but manually annotating them probably wouldn't be too hard

#

I care less about the ones that are effectively not used but still have data and parse

lone ingot
#

one thing that could be really good as well is building a static representation of all the table relations at build time and hosting it as html doc

modest path
#

but my use-case is a bit bass-ackwards from the norm because I'm /starting/ with the schema and fetching tables from the cdn dynamically as needed for them (vs listing files and then finding the schema for hte file)

lone ingot
#

that would be my main feature request tbh, on build just walk the full tree of relations and make static d3 graph or something

modest path
#

I could output a dot file pretty trivially

#

the rust I'm vibe coding right now could also do that from the graphql trivially

civic crane
modest path
#

@civic crane It's a code generator currently written in jsonnet, which doesn't have side effects 😅

#

It can import json though as jsonnet is a superset of json, so going directly from the schema is very convenient. The rust code it generates is the first thing to actually go hit the cdn and fetch tables lazily.

#

I /could/ add a helper to list the tables out of the cdn into a json file first and use that, but it doesn't immediately seem like having actively broken schema definitions in the schema anyway (though I get some of the arguments for re: automatic support if ggg choses to import without updating)

#

The exciting (to me) thing about code generation vs writing a library that dynamically uses the schema is that I can make the rust api very native - Each table is a vec of structs specific to that table, and any references columns are just fields that are effectively native references to the correct row of the other table so you can do stuff like

#

random contrived example but you get the idea with the trivial dereferencing

#

oh and to be clear, the main_hand_alias_stat method there is the same instance of the stats struct row that is in the table

modest path
#

@civic crane I can programmatically reorganize the graphql files, preserving comments. I have a version where I full split it into poe1 and poe2, copying the poe1 only definitions into poe2 where not already there, which changes the outputted schema (no more validFor:3), but if sorted and filtered for just validFor&1 or validFor&2 the output is identical to the existing schema. Not saying this is exactly the thing to do, but the parsing/editing appears to roundtrip everything including comments just fine so it can be made to do whatever

#

One possible solution to the missing tables would be to add table_missing and table_empty booleans and populate them on the validFor:2 items where appropriate, which would let you exclude those if you want, but would not change anything for anyone using the current schema. Could also split the validFor:3 items out into a common dir and tag them with poe2 specific missing/empty fields and get the same

rose gyro
#

Just noticed that the item data you get from copying an item in-game doesn't include Unidentified Item Tier. I imagine I'm not the only one who would find this useful. Any feedback from GGG about this, is this something that's planned?

wanton forum
lone ingot
echo wren
#

Before I go down the rabbit hole of extracting/parsing Content.ggpk + dat64/datc64 myself, I wanted to ask:
Is there any community-accepted or semi-official repo / pipeline that already provides tool-ready data (JSON/CSV/etc.) for things like:
passive tree (nodes, positions, edges), skills + support compatibility, modifiers / stat definitions, icons/assets

Totally fine if it’s not public. I’m mostly trying to avoid duplicating work that already exists.

Thanks a lot

brittle oasis
#

https://github.com/SnosMe/poe-dat-viewer/tree/master - extracter/viewer
https://repoe-fork.github.io/poe2/ - ready to use json
https://github.com/poe-tool-dev/dat-schema - community maintained schemas
https://github.com/PathOfBuildingCommunity/PathOfBuilding-PoE2/blob/dev/src/TreeData/0_4/tree.json - tree data from pob. the json had some missing data vs their lua file last time i used it a few months ago. guessing it got lost during conversion so you might be easier to use the lua. i think pob is the only one who has tree data public? otherwise you need to do your own psg parser export, same thing as dat files basically

https://github.com/juddisjudd/ggpk-tool - haven't tried this one yet but looks kinda like an all in one?
https://github.com/aianlinb/LibGGPK3 - can extract icons/assets to png. i know theres more but dont know them all off hand. feel free to search github in this channel and you'll find a bunch of cool stuff

carmine merlin
brittle oasis
carmine merlin
#

@brittle oasis I see now. It's cause it the lua we skip groups that don't exist. Group 3 doesn't exist but looks like this in the JSON which is making group 2 null

{
      "nodes": [
        25092
      ],
      "orbits": [
        0
      ],
      "x": -14965.39389222,
      "y": -7075.62698124
    },
    null,```
brittle oasis
#

Do you mean groups that arent used? Cause outside of index 0 afaik there shouldnt be any null groups

carmine merlin
#

Yeah we have the group just missing for some reason, I'll look in the game files and figure out why

brittle oasis
#

I think that first missing group is the one for all the starting nodes and you guys have a variable set for it or something different and probably just ignored it, no clue about the rest tho.
EDIT: Nvm I forgot lua starts at 1 so your starting nodes group would be 3 instead of 2, I can guarantee there shouldnt be any null groups tho

velvet fog
carmine merlin
#

This seems to be orbit 3
It's for the unused ascendancies

#

That's why we don't have it

#

local ignoreFilter = "^%[DNT" This would do it

#

From memory it was easier to remove all the DNT stuff from even existing in the tree file than handling removing it from the tree loading side in PoB

brittle oasis
#

Makes sense, my bad for wasting your time. I think when I first used the file and was just going through the nodes loop I was getting the null error and didn't know why, then saw the lua had those groups so just switched over and never looked back. I probably dont use em either now lol

carmine merlin
modest path
#

@civic crane I think I have a direction on the dat-schema wall of ideas:

  • I /do/ think flattening out all the files into one def per file is a good idea in the top dir (and I can do this programmatically - Could either PR or push the vibe coded tool). This will increase consistency and enable programmatic manipulation.
  • I think for the empty/missing tables thing I might make a service that schlorps the schema and annotates it with info from the live dat files - Probably putting num_rows in tags or something? With 0 for empty tables, and null for missing? Then I can just use that as the source for my schema and get the benefits of newly copied tables being auto-schema'd. Could actually extend such a thing with a validator to anotate parts of the schema that can't be valid anymore as well.
  • Given that this vibe coded rust slop can round-trip the gql files just fine, I think making a webserver able to either do CRUD on local git files (for use as a live editing backend for locally running poe-dat-viewer maybe), or making it able to generate diffs for PRs (which could be read-only and exposed to the internet) might be interesting, but this idea is a bit further out
modest path
#

Everything else I mentioned, my new path removes my dependence on upstream changes to accomplish what I'm after.

modest path
#

That pr had a bug where it was copying the poe1 files into the poe2 dir instead of continuing to rely on the layer thing; should have been about the same number of - and + lines. The feedback is valid though and I've implemented my schema metadata hydrating overlay and and working through what it'll take to map my offset based column detection to the index order + implied width of dat-schema for more overlay data and possible programmatic editing

#

(for poe2 to start)

zenith zodiac
frank drift
#

love the new desecrated effect on poe2db mods

brittle oasis
# zenith zodiac oh, l did add psg parsing to repoe https://repoe-fork.github.io/poe2/passive_ski...

Oh nice dude, looks good. You can add Ascendancy dat info in the default one if you feel like it so its all in one, contains PassiveTreeImage, TreeRegionAngle, TreeRegionVector to help with placement but I mean should be fine even without. And you might have to manually add the orbit radii and nodes/passives/skills per orbit since its not in the game files from what I heard but needed. from pob:

orbitRadii: [0, 82, 162, 335, 493, 662, 846, 251, 1080, 1332]
skillsPerOrbit: [1, 12, 24, 24, 72, 72, 72, 24, 72, 144] // this creates a new array for each index with length of 360 / skillsPerOrbit[i] and you use [radius][position_clockwise] from your data to figure out the degree/radian, hopefully that makes sense
velvet fog
#

skillsPerOrbit in .psg and orbitRadii last distance should be 1332

spiral temple
#

Hi everyone! I unpacked the GGPK file, after examining it all I saw the audio folder, and there are dialogs with the NPC, but here's the question, where is the noise of the sea? in the launch zone? the sound of an item falling out? the sound of footsteps? the sound of the scroll falling out/the can/the use of the can - where are all these sounds of interaction with objects/sounds of blows? I would like to get sound files and be able to listen to them simply from a computer. I was told that this is the FMOD/Desctop/ folder - but there are bank format files, not audio files) how do I get ogg or mp3 from a bank?)

I also faced the problem of importing character models into a blender. The model format is encrypted (smd) - how to get a model format suitable for work or, say, import into Unity from this format?

frank drift
spiral temple
#

but the bank files are unreadable....

frank drift
#

they are not

spiral temple
#

how can I listen to bank files?

velvet fog
brittle oasis
velvet fog
#

skillsPerOrbit in every .psg, passiveskillgraph.psg have it
orbitRadii not in .psg, last distance should be 1332 (not 1322) that match ascendancy.dat::DistanceTree

brittle oasis
#

Cheers, appreciate it

knotty pumice
#

Is there a map of cxapi item names to in game item names? Some of these names are dumb like "abyss-key"

knotty pumice
#

yeah that's pretty close I think

oak estuary
knotty pumice
#

yep, found it, thanks!

low knoll
#

How can all mods be determined for a BaseItemType? I thought it would be through tags, but there seems to be mods inherited. Can anyone give me an example of steps how I would get all the mods for this item for example?

{
    "_index": 1110,
    "Id": "Metadata/Items/Armours/BodyArmours/BodyInt20",
    "ItemClassesKey": 24,
    "Width": 2,
    "Height": 3,
    "Name": "Twilight Regalia",
    "InheritsFrom": "Metadata/Items/Armours/BodyArmours/AbstractBodyArmour",
    "DropLevel": 84,
    "Implicit_ModsKeys": [],
    "TagsKeys": [
      40,
      1050,
      33
    ],
    "ModDomain": 1,
    "IsCorrupted": false,
    "Unmodifiable": false
  }
hexed mesa
#

it's impossible to datamine where some of the mods belong. for example delve or temple mods

low knoll
#

The mods on items are known though, that's what I'm asking

modest path
#

Are reference fields in the dat files that are column by value references vs index references actually a thing known to be used by GGG? Or are they just a convenience layer where things happen to align well between tables

tall oyster
tall oyster
#

thank ya

modest path
#

@tall oyster you can also check it yourself with not a terribly large amount of code

tall oyster
#

that would be ideal, im re-doing my ggpk tool

#

oh thats perfect

modest path
#

and has CORS headers letting js request it

tall oyster
#

almost done with my pure rust gppk "explorer" been an interesting learning experience but i hated my gppk-tool

modest path
tall oyster
#

yea im aware of that, i like to make my own things though :p

modest path
#

:)

tall oyster
#

i enjoy struggling lol

modest path
#

We are working on very related things lol

tall oyster
#

:p

#

have audio player as well

#

not sure i care to touch video

modest path
#

I'm concentrating on schema stuff atm but my work outside of poe_data_tools is primarily aimed at getting data available in extremely native to rust ways for future crafting tools and whatnot

tall oyster
#

ah nice nice

#

i was going to try and start doing some more relational things but we will see where my motivation goes :p

modest path
#

Making reference colums be typed values that have deref abilities is really really nice to work with

tall oyster
#

oh nice, yea i can definitely see that being quite handy

modest path
#

can just chain methods to get to cells of referenced rows

#

including use in maps and filters and all the good stuff

tall oyster
#

very nice work on this, might have to reference some of it if i end up deciding to go further

modest path
#

poe_data_tools also has an ivy schema thing that exports as csv, but my goal is the deeply rust access

tall oyster
#

im debating if i should add a diff feature or not

modest path
#

Diff between what?

#

versions?

tall oyster
#

yea

modest path
#

would be neat

tall oyster
#

i think someone else here was doing some big data project and was doing stuff like that

modest path
#

oh yeah there's definitely peeps in here with data going aaaalll the way back to the before times

worthy cape
#

Still haven't finished my CDN, very little drive to do so as there can't be any consumers.

#

dat-scope is still broken too.

tall oyster
#

oof

worthy cape
#

Ingestion broke and I couldn't be arsed fixing it.

tall oyster
#

it do be like that sometimes

modest path
compact wigeon
#

Data? Where? kittypeek

grave wren
#

i ate it

compact wigeon
compact wigeon
#

This betrayal will be remembered

#

Hope everyone is having a very toolish Christmas and a datastic new year

modest path
compact wigeon
#

That's not very datastic of you

modest path
#

I got my code reliably only requesting changed data from the CDN normally and during upgrades so that's pretty datastic

compact wigeon
#

The data council approves

modest path
#

I'm an SRE in real life so I felt a lot of shame every time it'd do the wrong thing and schlorp more data down lol

#

on one hand bytes are cheap, but on the other hand so are content addressable stores

rose gyro
#

Hi! Was looking at the mods data on https://repoe-fork.github.io/poe2/. I noticed we got spawn weights for jewels in the mean time, hurray ^^ I can't seem to find timeless jewel mods in there, though (the int_radius_jewel etc seem to be something else, not entirely sure what though); am I overlooking something; or isn't that data in the game files; or harder to parse;...?

#

Aha, so it do seem to be the radius jewels; makes sense. They just don't mention that the effect occurs for passives in radius. So it also doesn't include whether it's for small or notable passives. I notice poe2db does have that info though: https://poe2db.tw/us/Time-Lost_Jewels - guess I'll have to combine both data sources for now!

dreamy valley
#

I'm debugging some really confusing bug with my public stash api listener. I assumed the chain of next_change_id is always consistent no matter when the query is made, but that seems to be incorrect.

According to my logs, querying change_id 3022650123-2966329571-2890237000-3222471750-3112566609 the payload contains next_change_id: 3022650167-2966329627-2890237101-3222471795-3112566672

However, when I did it just recently, the contents of the payload is completely different, and the next_change_id became 3022651131-2966330367-2890237929-3222472433-3112567193.

How does the next_change_id really work here?

clever thistle
#

Merry 🎄 or whatever floats your decimals all!

hexed mesa
dreamy valley
hexed mesa
dreamy valley
# hexed mesa stash state changes, an item is added or removed or changed or whatever

I'm tracking items that exists on trade with (stash_id, item_uuid), and for the most part it works if I manually diff the stash_ids as I see them in the river. The problem I'm running into is that if there is any service disruption (i.e. my internet goes down) and I restart from a slightly older change_id, then it seems like some stash changes slip through the cracks, and I end up with zombie data in the DB because the stash_id containing the item (or used to contain the items in this case) don't show up in the river

#

I would have assumed that eventually when I catch up to the tip of the stream those stash_id would pop up once, but it doesn't seem to be consistent

hexed mesa
#

simplified but consider psapi with id i1, it contains stash with id s1 and gives you next change id of i2. if state of s1 changes and you call psapi with id i1 again then s1 in it will be empty/null/whatever and psapi with id i2 will contain new state of s1. imagine it happens again, state of s1 changes, then i1 and i2 contain the same info so it will collapse it and now calling i1 would give you next change id of i3

dreamy valley
#

I think I'm following

#

so in a temporal trace

Time | change_id | next_change_id | data
t0 | cid0 | cid5 | {i1 added to s1}
t1 | cid5 | cid10 | {nothing related to s1
t2 | cid10 | cid15 | my internet goes out
=== some length of time ====
t3 | cid0 | cid8 | {does not contain s1 at all}

the lack of s1 in t3 means that at some point between cid0 and cid8, i1 was removed from s1, and the whole thing was compressed

#

which means if I query cid0 for the second time, and I don't see {i1 in s1}, then I should assume that item is already gone

#

I assumed that I would still see s1 in the payload, just that it would point to an empty list or something but I guess that just gets removed

hexed mesa
#

i think the s1 will still be in cid0, it just wont contain any data other than its id, so you can do clean up

#

though tbf i just dont call old cids

#

so no idea

dreamy valley
#

Nope, looking at my diff, the original call contained 7 distinct stashes (I was at the tip of the river)

Calling it later produced 93 stashes (this makes sense, probably filling up the 5 MB limit or whatever)

Compared to the original, 4 of the original stashes disappeared, 3 showed up, and there were 90 new stash ids

#

Internet outage/API downtime aside I think I know how to fix this

hexed mesa
#

it is what it is then, dont call old cids i guess

dreamy valley
#

yeah

#

kind of a pain, but nothing to be done here

#

thanks for explaining it to me

hexed mesa
#

np, i hope i was more right than not (im kinda making things up as i go most of the time ScuffOkBuddy)

#

one could always bing novynn, i bet he loves those questions

dreamy valley
#

I would love to be enlightened more, there's definitely still some behavior that are hard to explain with my current mental model, but at least I know I should stop killing my service while I'm iterating

hexed mesa
#

i just dumped to disk whatever i downloaded and im iterating on that instead of downloading every time, which is why i have 350gb of this garbage on my drive right now 😔

velvet fog
#

Based on my understanding:

  1. Each time a stash is retrieved from change_id, it represents the latest data from that stash, but it's not a fixed set of stashes.
  2. By continuously following next_change_id, you can obtain the latest data from all stashes.
dreamy valley
#

By continuously following next_change_id, you can obtain the latest data from all stashes.
This was one of my working assumptions, but I still see zombie records by the time I'm at the end of the river.

This means that I've recorded a payload cid_100 where ($stash_id, $uuid) shows up, but after some time has passed and I start querying from cid_97, $stash_id never shows up in the river again.

My current theory is that when I query cid_97 again, I am getting a larger chunk, say cid_97 to cid_120, and that $stash_id was cleaned out sometime between cid_100 and cid_120, so the truncation got rid of that $stash_id completely and doesn't expose it in the psapi.

I think this means if I restart from an earlier cid, I have to remove all data that are beyond that cid

velvet fog
#

I've never encountered zombie records.

#

When calling the API, the items in the stash contain the most up-to-date data

dreamy valley
#

It's a zombie until the owner of that stash does something to cause an update

velvet fog
#

Of course, you must record the original items in each stash and remove items that are not currently in the stash.
Alternatively, based on the stash, first delete the data from that stash and then use a completely new stash item.

dreamy valley
#

I think this bug goes away if I don't roll back to a previous cid. I.e. if I recorded data from cid_98, and I roll back to cid_97, then I must get rid of everything Ive recorded in cid_98

velvet fog
#

Therefore you must update quickly enough.

#

To keep up with the speed of the river

dreamy valley
#

I do catch up eventually, which is what was confusing me so much

velvet fog
#

Based on the description above, the problem you mentioned shouldn't exist. Let's wait until after Christmas to see if there's a response from officials.

dreamy valley
#

I think it's a completely self inflicted wound caused by my incorrect assumptions. I think this is what is happening

  Timeline:
  1. Processing: cid_97, cid_98, cid_99, cid_100, cid_101
  2. At cid_100: See stash_1 with item_1 → INSERT to DB
  3. App killed at cid_101 due to me performing manual update
  4. Item sold at cid_105 (while app is down)
  5. Restart from cid_97 (I always restart at an slightly older CID, not the last one)
  6. API gives catch-up chunk: cid_97 → cid_120 (collapsed)
  7. stash_1 is now EMPTY, PSAPI omits it entirely (no stash_1:[] in response)
  8. If stash_1 is never seen again between cid_120 and end of river, then my app doesn't know to clean up item_1 resulting in a zombie. This is self-fixed if the user adds another item into stash_1 and it shows up in PSAPI again
#

if I simply wrap every cid update in a single transaction, and restart from where I left off instead of a few cids before, then the bug just goes away. I'll give it a shot and report back

rose gyro
hexed mesa
#

who is gonna stop you

fast reef
#

@somber mortarsorry for pinging, does EE2 not auto open on game open? or am i doing something wrong? I always have to open it from the start menu. I swear it used to auto start on game start lol

somber mortar
#

If that doesn’t work dm me or make an issue on github

fast reef
#

yes it does run in background in task manager, so i need to open it once after pc restart? I guess I can just force it to auto start on pc startup via windows haha

somber mortar
#

Yep if it isn’t working try restarting it maybe

tall oyster
#

Deprecated ggpk-tool since i just wasn't happy with it. Here is gppk-explorer, much simpler UI, just Rust using egui, no web stuff. Only building a windows binary automatically right now, after the holidays I'll get a linux build sorted if there actually is any demand for it.

#

Also it's really only geared towards poe2 since I don't really care to do much for poe1, sorry. (only a few things need to be adjusted for poe1, you can do it yourself)

brittle oasis
#

I've been meaning to look into your ts one for a while now. If you don't mind me straight up asking, what do you use for the ggpk and dat files? Do you need just ooz and a binary parser or?

oak temple
#

Happy holidays ^^

tall oyster
#

the old and this new one are doing the parsing, the new one we are doing automated builds and added ooz as a submodule so you shouldnt need to compile ooz stuff, just grab the exe or if you grab source just cargo as normal

#

all pretty straightforward, goal was to make these as easy to grab and use as possible

#

also the typescript one required you to extract/convert stuff, this new rust one just lets you explore the content.gppk directly

worthy cape
modest path
#

poe_data_tools uses it - It's slow because of it, but my not-a-pr yet branch just puts the decompressed files into content addressable store based on the upstream hash in the index to make it a one time overhead at the expense of disk space

#

If you like pain, optimizing that decompression library would be a good place to live lol

tall oyster
#

I shall revisit after the holidays lol

modest path
rose gyro
# hexed mesa who is gonna stop you

Well GGG consciously decided not to put that checkbox in the game anymore; and this is circumventing that. It does feel like against TOS; at least against their intent.

zenith zodiac
#

at their current development velocity Im not sure it's safe to assume that all of their decisions are conscious

zenith zodiac
#

9 years and 4 days after its initial commit, repoe - which was originally created to supply data for PoESkillTree.exe - finally includes skill tree data. Now all that's left is for @woeful sphinx to release a tree planner for poe2 and we'll have come full circle.

zenith zodiac
#

optimization was not a priority for oozextract - the idea was to be pedantic about bounds checking so you can feel safe extracting any file. compressed files are basically a sequence of commands like "at x offset, copy y bytes starting at z offset" so the cpp version basically gives ggg (or whoever you downloaded the files from) full access to your computer's memory

worthy cape
#

Lots of very specific knowledge of platforms and what crimes are legal too.
I still remember the bad output on Debian's GCC at -O2.

#

IIRC, it was doing an overlapping quad-word copy of 8 bytes and if that straddled a 4k page boundary, the data ended up wrong.

#

ooz is a bit scary in that it's essentially decompiled, so operations like that which were carefully chosen in the original codebase may not have quite translated properly when re-compiling with new toolchains and architectures, while a re-implementation from intent like oozextract is way more robust.

lunar turtle
#

@zenith zodiac temple planners where o.o?

lunar turtle
somber mortar
lunar turtle
#

ty

#

with ctrl alt + d works

#

but not with ctrl d

#

so i switched them lol

frank drift
#

having six planners for any plannable new league mechanic is tradition

cobalt wolf
#

accidentally got the first 2 points of my tree as weapon swap in pob.
is there some way to fix this without redoing the whole tree?

lone ingot
#

just path out differently then unallocate up until the connecting point

cobalt wolf
lone ingot
#

it's the same way as it works in game isn't it?

cobalt wolf
#

i think you can easily change which points fall under which weapon swap in-game.
but doesn't seem like polb has that

lone ingot
#

I remember having a pretty difficult time unallocating the weapon specific points in game

#

maybe it's changed though, I dunno

worthy cape
#

Squint at the XML, maybe you can nudge it right there?

worthy cape
#

Very ergonomic, but you normally don't end up in such an ill-formed state to begin with ^_^

frank drift
#

the zao school of problem solving

worthy cape
#

Surprisingly few skill tree websites bother to surface the node IDs for some reason 😄

cobalt wolf
velvet fog
#

The official API and PoB store passives differently.

The official API stores shared passives in passive_skills, and then stores weaponset1 and weaponset2 in separate arrays.

PoB stores shared passives plus weaponset1 and weaponset2 in passive_skills, and then stores their respective talents in weaponset1 and weaponset2.

worthy cape
#

If it was a PoB dev build, you could've held some modifier key to see them, but I just made a test tree and squinted.

fickle yew
worthy cape
#

On Chrome it ends up on the menu when you release so you have to do a dance to get it back to the tree again.

fickle yew
#

Oh wow that's annoying.. Just tried it. You can hover over a node and then hold down Alt to see one node until it expands 😄

#

I have no issues at all in Chrome?

worthy cape
#

On Chrome I hold Alt and it shows the tooltips with the number. When I release Alt it highlights the menu button and additional presses of Alt does nothing.
If I click on a node to allocate it then, the tooltips disappear completely, have to click a bit arbitrarily on the tree to defocus the menu again.

#

This is Chrome 143.0.7499.170 on Windows.

fickle yew
#

I'm on x.x.x.169 but on Fedora

worthy cape
fickle yew
#

Yeah the menu bar I get as well.

worthy cape
#

All glorious Win11, so toolkits probably vary greatly against Linux.

fickle yew
#

But I can see the current node id as long as i hold down Alt, on release it pops in the menu (on Firefox).

#

Maybe I should do Ctrl to keep tooltips open instead..

fickle yew
#

I do seem to get disappearing tooltips in Firefox though, will have to look into that.

worthy cape
#

Yeah, that aligns now. Shows number while holding and then they just sod off or stick to the node where you first held Alt.

fickle yew
#

Yeah I'll give that another round.. Strange behavior 🙂 Tooltips are hard.

carmine merlin
worthy cape
# carmine merlin Hold alt and scroll up / down on the tree to select the weapon set mode or you c...

The problem here I think is that you can end up with illegal tree roots, where the tree has some weapon set points that real points grow out of.

For example, if you exit from the start on both paths with regular points on one and WS on the other and make them meet, you can remove some of the regular points and the tree doesn't crumble.

You don't seem to be able to change such existing WS points into real ones either, clicking them deallocates them and the whole undersupported branch..

#

Not sure if PoB has any recolouring functionality in general or if it's all reallocation.

velvet fog
#

added basic crafting currencies for modifiers page

frank drift
brittle oasis
#

Random for the poe2 tree renderers but since you cant allocate masteries atm, any notable from the same group will activate the mastery icon in game. Tested maxroll and pob and neither have that, if a group has multiple notables or the icon isnt linked directly to the notable, the icon never activates even if it's supposed to. Idk if anyone cares since its nothing major at all and you might be waiting for masteries to work like poe1 to share logic so feel free to ignore, just wanted to put it out there

sharp mulch
velvet fog
#

fixed the links. I'll think about how to add rarity tomorrow. you can trans, regal, annu, annu

inland pasture
#

where can i get a list of all items, all notables, and all skills? i want to build a comprehensive list of these three things and randomly select one - kind of like a word-of-the-day website

#

i tried scraping the taiwenese database but couldn't properly scrape most of the items

hexed mesa
inland pasture
#

sorry - what is cargo api?

loud flint
inland pasture
#

this is a bit over my head

hexed mesa
#

its just poor mans sql

inland pasture
#

lol sql is also over my head

hexed mesa
#

just vibe code it or whatever it is you are doing then

inland pasture
#

then i can just randomly draw from that list

tall gust
zenith zodiac
worthy cape
#

One of these should just be TempleOS running in the browser.

tall oyster
zenith zodiac
#

l just realized that l have corruption chamber listed as available in the present day (before meeting doryani) which means that l guessed the 'ispresentday' column in the dat file incorrectly. weird that it seems to line up for all the other rooms

tall oyster
#

GGPK Explorer v1.1.0

New Features:

  • File tree search: Quickly locate files within the project structure
  • Full Content.gppk parsing: View every supported file type directly
  • Specialized viewers: Added dedicated support for CSD, PSG, HEX, and other formats
  • Export options: Right-click context menu now allows exporting resources in common formats (e.g., DDS → PNG/WebP, audio files, DAT → JSON, and more)
  • Syntax highlighting for shaders & json
    Video Preview
#

There is also CDN fallback, etc....

modest path
# tall oyster # [GGPK Explorer v1.1.0](https://github.com/juddisjudd/ggpk-explorer) ## New Fea...

For the dat and other binary reading you might check out https://docs.rs/bytes/latest/bytes/struct.Bytes.html - It's really good for low copy (clone = copy a fat pointer basically) views into a larger bytes structure, with builtin get_i32_le and friends that auto-move the spot you're reading in a way that looks very similar to your cursor passing

tall oyster
tall oyster
#

yea i think i will use this, going to refactor the bits for this

modest path
dense harbor
worthy cape
#

Most tools don't have this feature because there's absolutely no legitimate reason to alter or produce game files.

dense harbor
#

There used to be a localization tool called PoeString, but now I have no idea where to find its latest version.

worthy cape
#

Modifying the game files is against ToU 7b, regardless of intent.

tall oyster
#

@dense harbor what @worthy cape said

ebon kernel
lone ingot
#

some things just shouldn't exist

modest path
#

Is that how they're celebrating a completely unnecessary unauthenticated RCE CVE that they forced even on what would be a completely static site due to their dynamic path routing requiring a nodejs server?

#

I give the js community props for being incredibly welcoming to people who have no idea what they're doing, but the result of their progress also reflects that

tall oyster
#

we already have orms, that thing needs to be destroyed and sent to the abyss

modest path
#

Yeah and every query language and orm is like "sql sucks I can do better" which is true if you are restricting your abilities down to the random dogshit that person needs, then if they make something popular, it eventually gets added onto until it's a worse version of sql

#

unintelligble OPS/SRE screaming

rose gyro
#

Hmm, from an item's info, e.g.

+14 to maximum Energy Shield
118% increased Evasion and Energy Shield```
Should it always be possible to reverse-engineer the exact mods, e.g. in this case:

Stalker's - T1 - (39-42)% increased Evasion and Energy Shield / +(32-39) to Evasion Rating / +(13-15) to maximum Energy Shield
and
Evanescent - T4 - (68-79)% increased Evasion and Energy Shield

Does Exiled Exchange manage that; or do they just look at the total defence values? I wonder where that double 'Tier 1' comes from; seems incorrect.
somber mortar
# rose gyro Hmm, from an item's info, e.g. ```+35 to Evasion Rating +14 to maximum Energy Sh...

if you hit the "mods" toggle in the bottom right it will show the mods that are being summed into each filter. But for the actual tier detection, EE2 copies the item text via Ctrl+Alt+C instead of Ctrl+C and that info just says what tier everything is.
For that specific item, Stalker's is split into 2 parts the flat & the percent, which means the double t1 is probably a bug (just due to how it is handled internally it's getting double counted)

lone ingot
#

the trade filtering itself doesn't know about the mod tiers, only the stat values right? so it's just a visual representation in exiled exchange i'm assuming

somber mortar
#

yep exactly!

wide spruce
#

Does someone know if the skilltree data is somewhere available from ggg source?

wide spruce
oak estuary
#

Correct

wide spruce
#

I was hoping to be able to work with a json file, well I need to dive in into how to get that data 🥲

shadow peak
wide spruce
shadow peak
#

In the Path of Building folder, there's a 'TreeData' folder with 0_X sub-folders.

wide spruce
lone ingot
#

how do you differentiate between enchantments and normal modifiers? it seems like GenerationType in mods indicates it but I can't see if that actually links to anything

#

10 == helmet enchant
19 == ring enchant
21 == flasks

I guess?

velvet fog
ashen hound
#

Just wondering, how do people like POEDB and others datamine / get the infos they need ? Because Im pretty sure Datamining is against the ToS ?

ashen hound
frank drift
#

about what?

ashen hound
#

How to datamine / What tools are used

frank drift
#

scroll up in the chat a bit

ashen hound
charred lake
ashen hound
ashen hound
ashen hound
charred lake
#

Looks like the latest patch is up there anyway

zenith zodiac
ashen hound
tall oyster
ashen hound
tiny girder
#

@somber mortar I have a question or maybe feature reequest :D , so I noticedthe pricechecker is only visible in OBS when I use screencapture, but I prefer not to capture my whole screen and rather use windowcapture for PoE2 , would it be possible to make the overlay in a way to show up in obs, maybe as a own windowcapture?

somber mortar
lone ingot
tiny girder
# lone ingot you could try running exiled exchange in compatibility mode for windows

Hmm I will have to read all that, but at first glance it looks like they already have whatever they were trying to get to show up in obs selectable in obs, I can ´t even select EE2 in obs since as soon as I tab out of the game, EE2 closes down, like when i do shift+space for example the menu stays open but when I tab out to add a window source in obs, then EE2 overlay closes and thus i can´t select it in obs, as it only shows active sources

lone ingot
#

there is a way that you can get awakened poe trade (poe1 equivalent) to keep the window open

#

let me fiddle with obs for a second and see..

tiny girder
#

I GOT IT .. you are a genius

#

So how i did it was I opened the settings

#

This, I put this into obs as a window source

#

And then said if it doesn´t find this it should take any window of the same program

#

and now it works when I pricecheck in game

#

this is so amazing, thank you @lone ingot