#tooldev-general

1 messages · Page 102 of 1

golden bane
#

For the record: The current impale implementation has it's own share of problems, mainly that it is calculated well after all enemy mechanics.
That makes it miss all armour/impale-specific armour reduction mechanics

grave wren
#

It also doesn't work with master of metals Phys per impale if you don't override the stacks

frigid sierra
#

there is no place in pob to see the total aura effect as well as the breakdown, is there?

hazy fiber
#

you can see how much each aura is giving you, and calculate the aura effect from that

golden bane
#

@frigid sierra It's something that has been requested before. Would be a good first contribution if you're interested I think

frigid sierra
#

yeah I was thinking of giving a stab at it

#

is there a way to better navigate the console other than endless scrolling?

#

that was easier than I thought

carmine merlin
#

look good to me, I really hope there's a quicker way to scroll it cause it takes ages atm to get to the top of the console

frigid sierra
#

the lack of a proper debugger plus no typing makes navigating the code a pain

#

it's total guesswork what arguments to a function are

#

what properties they have etc

sleek nacelle
#

that's a really strange thing to not have displayed anywhere lol

#

curse effect isn't displayed anywhere either but I bet it's just as easy to display

frigid sierra
#

yeah I was gonna add curse effect breakdown as well

sleek nacelle
#

I think the label on them in the calcs tab should be "Aura Effect Mod" and "Curse Effect Mod", that's consistent with other mods in that box

#

and also move it in the list so it doesn't split up the area of effect things. I'd put it below duration things, above the aoe things

frigid sierra
#

that makes sense

golden bane
#

Would be great if we could get some typing into PoB

frigid sierra
#

I am using IntelliJ with EmmyLua actually

frigid sierra
#

is the tukohama pantheon's regen when stationary working? I don't see my regen change when selecting that pantheon

#

ticking the "Are you always stationary" box doesn't seem to do anything either

carmine merlin
#

It isn't working at the moment as there is no parsing for the increased regen based on how long you're stationary for

hazy fiber
#

you would have to have another box for how long you have been stationary for that pantheon

frigid sierra
#

as a simple implementation, if "Are you always stationary" is checked then you should get the full 2%

lapis stratus
#

Anyone know offhand how.many single spaces are in a quad tab? Is it 576?

carmine merlin
#

@frigid sierra if you're working on anything else for a PoB update, let me know as I'm going to push a new update soonish

frigid sierra
#

I'm working on a bunch of things, mainly on the breakdown of ES recovery but that can be for later

zinc root
#

@lapis stratus yes, 4*144

lavish gust
#

@lapis stratus normal tab is 12x12 = 144, quad is 24x24 = 576, character inventory is 5x12 = 60

worthy cape
#

Bleh, database is crapping itself after like 200G compressed river.

#

Any recommendations on graph or document databases that are not meh?

#

I guess I should go and filter out strings up-front after all.

golden bane
#

Yes, especially flavour text

deft jolt
#

Anyone know a library/implementation of generating wiki and trade site links from generic items?

#

I'm feeling extra lazy hehe

worthy cape
#

I should export all this payload to files and re-ingest it into a fresh database.

zinc root
#

your NOT IN () is not effective way to select
either use left join and then filter by where xxx is null or use where not exists statement

digital crater
#

@grave wren is the pob bot public, is it something i can invite and use on my server?

grave wren
#

It's public but you'd have to selfhost for now

digital crater
#

ah thanks

golden bane
#

@lavish gust pobapi is now officially MIT licensed btw

grave wren
#

I am using a nano instance at Google cloud service to host it and it's very stable

#

Only for small servers

#

You'd have to ask multiplicity for info about the node for this massive server

digital crater
#

thanks for the suggestion ill look into it? is the hosting free or cost on my end?

grave wren
#

The micro instances cost me nothing if you're fine with America based nodes

#

I've also selfhosted mine on a raspberry pi at home which also worked out

digital crater
#

im american so it works for me

grave wren
worthy cape
#

@zinc root I went with the first SQL statement that compiled based on historical SQLite use and DB course memories 15 years old ^^

#

Getting great reactions from actual professionals at work.

grave wren
#

Man the amount of SQL I need to just make my odata sources work is pretty much dumb

#

But it's good exercise

worthy cape
#
thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:378:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
#

Who peed in the river?

worthy cape
#

NOT EXISTS was quite a bit nicer, using those new-fangled indices and whatnot.

worthy cape
#

50% of a CPU with 20-some megabyte/sec compressed throughput, kind of exhausted this dead-end now 🙂

frigid nova
#

@compact isle Any word on the websockets going down sporadically on the official trade website live searches? Seems to be happening around 7:00 am - 12:00 pm PST

compact isle
#

we're continuing to investigate

cosmic saffron
#

websockets are being consumed by the hungry loop

frigid nova
#

Hungry loop is a trigger phrase for me after trying to understand the extended info for it

frigid sierra
#

so we can summon Novynn at will here?

frigid nova
#

judiciously

frigid sierra
#

would be nice if he can look into how trying to do "exclusive or" with the group option on trade site is not working

frigid sierra
#

I made a bug report a while ago there

violet path
#

yeah specifying a number like that makes stuff like quality always show up

compact isle
#

@frigid sierra ah sorry for missing that one. You should use the forum tags for website things so that I can find them easier

#

should be an easy fix

frigid sierra
#

yayyyyy thanks!

#

what do you mean by "use the forum tags for website things"? Is there a tag system that I should use when reporting a bug on the forum?

compact isle
#

yeah if you edit your thread you'll see a "Tags" section under "Notify Me"

frigid sierra
#

oh I see, never noticed that, thanks!

#

I would suggest making that a required form element so that people don't miss it

compact isle
#

the list isn't extensive which is why it isn't required

frigid sierra
#

perhaps add an "Other" option to the list then?

raw pilot
#

Hello, does anyone here by chance know what is the appropriate BaseType tag to use for a filter block that will recognize the Imprints from beastcrafting?

#

I know its class is stackable currency from the wiki but not sure what to tag it with for base type

#

Ah I mean the imprints of items, not beast orbs themselves

#

Although haven't considered that so thank you

halcyon whale
#

ayo anyone know a tmpmky script or chrome extension to add wiki button to the offical trade site?

#

don't want to make one

#

here we go again finding selectors smh ;9

frigid sierra
#

$('.itemName').find('.lc').first().text() will give you the item name

#

something like that

#

my jquery is rusty

halcyon whale
#

was just using the spaced children

#

thanks tho I forgot about iteration selectors

#

any idea on what todo in terms of execution @frigid sierra I think I have the selector but the query from when you load the page till the search is generated is a pain

#

I think I might just rip some other tampermonkey script actually

frigid sierra
#

you can use MutationObserver, so you can react when the DOM changes

#

and insert your link wherever you like

pearl reef
#

Hey guys! I'm using this ↓ guide to POST a request and have a response with result as a guide says...
https://www.reddit.com/r/pathofexiledev/comments/7aiil7/how_to_make_your_own_queries_against_the_official/

But I have only html text as a response... Is this still working, or I'm doing something wrong?.. I'm not a programmer, and using python for this googling for someone else code...

I'm using this code to send request: x = requests.post(url, querry)
(the request should be right as I get HTML as a respond...)

I tried to search for other thing how to do that, was using GET instead of post, and looked mb there is some getResultInsteadOfHTMLmod=True ... but nothing I've tried so far working...

halcyon whale
#

Im very new to JS should I target this with a mutation observer and then fire the jquery selector for item name when the mutation calls back?
I can do the jquery selectors Im just struggling with the mutation observer
I have all the config options set to true, and am logging on any attribute change in the mutation list

frigid sierra
#

@pearl reef it's hard to tell what you did wrong without seeing the code. What HTML response did you get back?

pearl reef
#

@frigid sierra just a webpage...

This is a code:

import requests

url = 'https://www.pathofexile.com/api/trade/search/Metamorph' 
qr = '{"query":{"status":{"option":"online"},"stats":[{"type":"and","filters":[{"id":"explicit.stat_2312747856","disabled":false}]}]}'

x = requests.post(url, qr)
#

print(x.text)

frigid sierra
#

did you specify the content type as json?

pearl reef
#

How?..

frigid sierra
#

well it's a HTTP header, set it however you can with your python code

#

'content-type' : 'application/json'

golden bane
#
r = requests.post(url, json=qr)
pearl reef
#

not working

#

Still HTML

golden bane
#
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(url, data=qr, headers=headers)
#

This should do it then

frigid sierra
#

@halcyon whale I'm not too familiar with the trade site DOM, but if that element changes when the site loads trade data then you can use MutationObserver with that

pearl reef
#

@golden bane nope... still have HTML((

halcyon whale
#

if I set subtree and children to true in mutation observer it should tigger when the spans nested are created

#

they are under tree and don't exist before the trade query

cosmic saffron
halcyon whale
#

I have tried that syntax

cosmic saffron
#

you attach it after page/trade div gets populated

halcyon whale
#

im trying to attach it see when the trade get populated using subtreee

cosmic saffron
#

I'm sure there's some event, or you poll until there's some rows and then attach the observer

#

it doesn't always work if the root gets detached again from the dom

halcyon whale
#

what should I attach to find an event?

#

popstate?

frigid sierra
#

ok so I took a look

halcyon whale
#

I saw that earlier

frigid sierra
#

seem like that div gets updated when there's new item

#

and new rows get added

#

so you can observe that node

#

// select the target node for mutation observation
var target = resultSetDiv;

// create an observer instance
var observer = new MutationObserver(function(mutations) { // mutations: an array of MutationRecord objects
mutations.forEach(function(mutation) {
var addedList = mutation.addedNodes;
for (var i = 0; i < addedList.length; ++i) {
var item = addedList[i]; // Calling myNodeList.item(i) isn't necessary in JavaScript
walk(item);
}
});
});

// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true, subtree: true };

// pass in the target node, as well as the observer options
observer.observe(target, config);

#

something like that

#

has been a while

golden bane
#

@pearl reef Your query is the problem. I'm getting back a 400

pearl reef
#

I don't...

halcyon whale
#

can I just for each mutation rather then bothering with navigation?

pearl reef
halcyon whale
#

const targetNode = document.getElementsByClassName('resultset');

const config = { attributes: true, childList: true, subtree: true };

function callback(mutations) {
mutations.forEach((mutation) => {
console.log(mutation);

});
}

const observer = new MutationObserver(callback);

observer.observe(targetNode, config);

frigid sierra
#

getElementsByClassName returns a list of elements, so you'll need to get one from that first

pearl reef
#

@golden bane

import requests

url = 'https://www.pathofexile.com/api/trade/search/Metamorph' 

qr = '{"query":{"status":{"option":"online"},"stats":[{"type":"and","filters":[{"id":"explicit.stat_2312747856","disabled":false}]}]}'

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}

x = requests.post(url, json = qr, headers=headers)

print(x.text)

Here is current code, and it's getting HTML document...

halcyon whale
#

lol im dumb

#

[0]?

golden bane
#

@pearl reef print(x.status_code) and you'll see for yourself

frigid sierra
#

yeah that works, although I don't know why that is a class and not an id, so you may want to check if there are any other elements on that page with the same class

halcyon whale
#

nah just it

#

thats why I did class name but I didn't know it still returned a list

frigid sierra
#

in any case, the debugger is your friend

#

I gotta go eat, good luck

halcyon whale
#

#trade > div.results.compact > div.resultset I was trying tree earier I wonder why subtree didn't work

pearl reef
#

YES EYS EYS
x = requests.post(url2+qr)

https://www.pathofexile.com/api/trade/search/Metamorph?source={"query":{"status":{"option":"online"},"stats":[{"type":"and","filters":[{"id":"explicit.stat_1016185292","disabled":false}]}]},"sort":{"price":"asc"}}

this is working!!

#

So it combine json to URL and don't send anything...

#

For some reason it's not working like that:

x = requests.post(url2, qr)
x = requests.post(url2, json=qr) 
golden bane
#

Weird

#

BTW, you should always do

try:
    x.raise_for_status()
# ... handle arising exceptions

so you detect unsuccessful requests early

halcyon whale
#

HMU if you have dev'd a poe offical trade script/extension, or if you know anything about offical trade site DOM

worthy cape
#

Ugh

Response started: 2911ms
ID gotten: 2912ms
All bytes: 12915ms
worthy cape
#

@polar island I'm curious, what part of the world do you have your collector, if you're comfortable sharing?

#

I've considered spinning up some AWS/GCP trials to see if it behaves better elsewhere in the world, for some reason.

grave wren
#

Wouldn't you want one close to Texas or is the API somewhere else?

golden bane
#

Interesting question, if not only the login server is there

worthy cape
#

Managed to build my thing in AWS us-east-2c (Ohio), still getting 1900-2500ms

#

In Sydney - around 2-3s too.

worthy cape
#

At least I have that off my mind now, I can build the thing wherever I want - it's all meh 😄

simple ravine
#

12915 for full fetch? daym

#

try get a server in the same data center as their api server

worthy cape
#

12915 was an outlier, it's usually around a second from first byte.

#

@simple ravine I did try running on two additional contients, no real difference.

simple ravine
#

ah ok

worthy cape
#

Next up is to filter down the river to the things I care about when retrieving it, and come up with a reasonable data model for the events.

#

The frontend I envision should be notified of when the tool discovers a new stash and when items are added/removed/repriced.

#

I guess I should keep track of the current state of the thing and keep a log of events to replay to the client when needed.

#

Just like out in the real world, you figure out the requirements after implementing.

simple ravine
#

time to get some disk space

worthy cape
#

A few days in...

 Schema | Name  | Type  | Owner |  Size  | Description
--------+-------+-------+-------+--------+-------------
 public | cache | table | river | 184 GB |
#

That's compressed, btw.

simple ravine
#

caught up to the end?

worthy cape
#

Maybe.

#

My code has crashed twice and I suspect that it's on whatever mythical kind of payload there is at the end of the rainbow.

#

Takes a few hours to proc when I start from the latest ID listed on poe.ninja

simple ravine
#

proc?

worthy cape
#

Happen, sorry.

simple ravine
#

no, I got the meaning of 'proc' - i'm a nerd too :D
I just didn't understand what u meant

worthy cape
#

I've got a few places where I hard assume that an optional value is set, and it seems like one of those assumptions are not valid on some response.

simple ravine
#

i made a console app that "dinged" when it was an item with note specified in the config

#

like "zenseiwashere"

worthy cape
#

Yeah, considered dropping probes into the stash in-game 🙂

simple ravine
#

another way to know is if next_change_id == requested_change_id and stashes = empty

worthy cape
#

Yeah, I test whether the next ID is the same and chill.

#

I just can't figure out what it is that's crashing, the wonders of async code is that none of the stack is mine 😄

simple ravine
#

hehe

#

that's actually one thing I really like about c# 😎

worthy cape
#

async/.await is super-nice in Rust, I just need to figure out how to trace it properly

simple ravine
#

what I've been thinking about doing is separating the requests on the shards

#

like
...public-stash-tabs?id=0-999999999-999999999-999999999-999999999
...public-stash-tabs?id=999999999-0-999999999-999999999-999999999
...public-stash-tabs?id=999999999-999999999-0-999999999-999999999

#

etc

worthy cape
#

I've assumed that if I leave the shard IDs the same that I'll get repeats.

#

Not sure what it'd do if you asked for 0 or huge numbers.

simple ravine
#

"next_change_id": "2947-999999999-999999999-999999999-999999999"

#

etc

#

so you can process each shard separately

#

and then u follow it as u'd normally do

#

"next_change_id": "5998-999999999-999999999-999999999-999999999"

#

etc

#

fewer stashes per response

#

all u need is 5 public IPs 🙂 sorry novynn

worthy cape
#

There might be a bit of a sanity check there, all the other shard IDs advance by the same amount when feeding in all zeroes as one zero and rest huge.

#

Not that I would use the API unethically anyway.

#

Still need to hack up a working rate limiter. Haven't needed one as it's self-throttling in that requests are just creeping in.

compact isle
#

we should have a temporary fix to increase performance (specifically for the public stash API) coming in the next patch

#

the real fix requires changing a bit of game code but we can pretend on the website's side for now

worthy cape
#

That's really nice to hear.

golden bane
#

Yes, it's built on electron and it's great for this project

#

Developer time >> program size

frigid nova
#

Also who cares about 50 mb

#

I don't believe exilence was targeted towards mobile devices?

golden bane
#

What's your point anyways

frigid nova
#

Don't optimize for things you don't need to

#

Rule number one of every top notch engineer I've ever met.

golden bane
#

Exilence shipped while you would be still chipping off bits and bytes off the executable with your approach

#

I'm all for demonstration

frigid nova
#

Yet again, who cares? If you shrunk the thing down to 2 mb it would make no difference.

golden bane
#

Let's reiterate: Developer time >> application size/memory usage/speed

frigid sierra
#

yeah it's insanely wasteful, and I love bashing electron as much as the next guy, but everyone has 16-32GB RAM machines nowaways, so who cares. Unused RAM is wasted RAM

#

on a side note I tried installing exilence next and it failed to start, then I tried to uninstall it and that failed too

hazy fiber
#

i mean dev time isnt always more important than app size/memory usage/speed but in the case of 3rd party tools for a video game it is

#

though theres probably some things which could have been done to cut back, that dont take a large amount of time

#

but i have no idea about the specifics in this case

frigid sierra
#

don't know if you're trolling or not but...seriously? If you can't even see how much time electron saves when writing and maintaining a cross-platform app then I don't know what to tell you.

#

what is even your preferred cross-platform solution? Qt?

#

wasn't expecting that, but ok 😆

frigid nova
#

In other news - looks like the websockets didnt go down today!

compact isle
#

\o/

simple ravine
#

@split fjord why don't you show us how to make a similar app in C++ with Qt and all that jazz then? Should we say... by sunday?

grave wren
#

So you come to rant but not provide any tools yourself

#

I don't see the relevance to a freely supplied third party thing a Dev does in his free time

frigid nova
#

Random question - Does anyone know if I can create a link or interactive element in a discord embed/message which copies text to clipboard?

lavish gust
#

@split fjord I'm contributing to a new C++ GUI library because I wasn't satisfied with other libraries bloatness, features (or lack thereof) or their custom build/code-gen requirements. The unstripped shared lib is <20 MB (majority being ~9 MB for cairo and ~9 MB pixman) and the executable examples take <10 MB RAM. Could probably be made smaller, but I value the support for 2D canvas, themes, custom fonts, custom widgets and being able to arbitrarily nest any widgets. No idea about dev time/cost (never really worked in any front end) but It's definitely easy to integrate and use (has a declarative functional interface). Planning to use it in my further projects.

lavish gust
#

@split fjord One of the close candidates was wxWidgets, but unfortunately due to its design it has some limitations: everything uses native controls (so no way for non-white background) and the API is that you can nest widgets within others ... except in many places in which you can not. I know Qt is battle-tested and mature but ... for a hobby project I definitely do not want code-gen/custom-build-tool and do not want to write code in a library which breaks modern C++ idioms. Checked some other projects (nana, some wxWidgets wrappers, Copper Spice) but they were mostly wrappers around other libraries ... so I browsed the reddit and eventually found that someone from boost started making a new one based on 2D vector graphics and template/functional interface.
Got any thoughts/experience about specifying the GUI in any way (immediate-mode, XML/HTML, code-gen + designer, imperative, declarative)?

worthy cape
#

The bothersome thing about UI is that it’s treacherously complex and it’s easy to get something shiny out but something actually usable is many person-years of work.

#

As for modern C++ or what we call it nowadays, I thought that Qt got better there?

lavish gust
#

I'm not really into graphics and I draw rather poorly so I focus on the functional part instead.

#

Qt v4 => v5 had some refactor, I heard that in v5 you can now skip code-gen but:

  • you can remove custom build tools but you are then doing the "manual code-gen" yourself
  • the library still is anti-convention when it comes to naming, resource management, standard library usage etc
worthy cape
#

I don’t mind moc/.ui that much, and QML is supposedly somewhat decent by now I hear.

#

Before I stopped using C++ Qt was one of the least horrible ways to get a working GUIs, despite things you might get hung up on.

#

As for naming - everything sucks in the wild C++ west 😄

lavish gust
#

well, in the library I contribute now it uses a functional+template interface, you write the GUI in code and it looks like this:

margin({ 10, 10, 20, 10 },
               vtile(
                  top_margin(35,
                     htile(
                        align_center(toggle_icon_button(icons::power, 1.2, indicator_color)),
                        align_center(icon_button(icons::magnifying_glass, 1.2)),
                        align_center(icon_button(icons::left_circled, 1.2)),
                        align_center(toggle_icon_button(icons::left, icons::right, 1.2))
                     )
                  )
               )
            )
#

the are practically no constrains on nesting, you can put anything into anything

worthy cape
#

What are those units, pixels or something DPI aware? How do you get a consistent look-and-feel? Does it do IMEs? 😛

lavish gust
#

there are lower-level widgets (margins, align, size limiters/fixers) and some pre-made ones from these (buttons, some dialogs, sliders, bars ...)

#

yes, its DPI aware

worthy cape
#

Suggestions on good libraries welcome. My current hope for complex UI is FFI into C# with XAML ^^

lavish gust
#

Look and feel: every widget draw function uses the theme object. The theme contains some colors and floats like corner_radius so by modifyign the theme you can change background, color style and also "design" (want PoB-style? you can set corners/angles to 0 and background to black => everything fully square and having colors like in PoB)

#

so the theme object instance is basically like a CSS - it contains colors and some drawing variables

#

there is no GUI designer but I really like the fact that no extra tools are required to use the library

#

@worthy cape if you got any ideas for complex widgets I would like to hear them, the library I contribute offers a lot of very granular elements but most of average user needs are on a higher level so we compose some "premade widgets" from others (button => frame + label, basic progress bar => 2x solid color widget, slider => mouse tracker + thumb + scale background)

worthy cape
#

I find it a bit quaint by the way that In the year of our Lord 2020 there’s still people who discover the wonders of Electron bloat for the first time. brittlL

#

@lavish gust the litmus test of UI libraries tend to be whether the text fields and textboxes behave as a platform user would expect.

#

Selection, cursor movement, scrolling, copying, all the keys and motions that can be hard to match.

lavish gust
#

so far we have "reasonable defaults", that is ctrl+C/V/X/Z (command + C/V/X/Z on mac), enter = left click etc

worthy cape
#

I almost flipped a table filling out a form in Adobe Reader DC last night, they had Ctrl-Backspace erase a word, but did it forward instead of backward. They also hecked up double click to select by word, only selecting the focused word but not allowing drags to extend.

lavish gust
#

isn't double click = select word an expected behavior?

worthy cape
#

It is, but you should be able to hold the second click to select additional words when dragging.

lavish gust
#

hmm, I have never actually used this feature

worthy cape
#

Tiny detail maybe, but when text fields are so ingrained in the user, tiny diversions like that of features the dev may never even know about are bad.

#

I repeatedly erased a lot of my text thinking that ctrl-backspace didn’t work at all as i didn’t observe the text in front of the cursor, as the intent was to erase something behind it 😄

#

If you ever target Linux, I look forward to you discovering all the cursor movement keys there (C-a/e, Alt-f/b, and more) and of course that selection often copies and middle-mouse pastes ^^

#

VSCode loves stealing most of those in the integrated terminal.

#

I’ve got to go, fun discussion.

lavish gust
#

@worthy cape I have just checked, the double click+hold selects words but dragging further is selecting per letter instead of per word. ctrl+backspace is not present - not sure why would you want this since both delete and backspace keys offer 2 ways of erasing characters ... or I misunderstood you and by ctrl+backspace/delete you mean erasing words?

#

@worthy cape regarding Linux, it is also supported so if you have a good resource explaining expected behavior of key combos on Linux I would definitely check it and implement such shortcuts

worthy cape
#

Ctrl-backspace erases words, indeed. In Linux-land you have Ctrl-w for that and Ctrl-y to erase to the start.

#

As for double-drag - see, not even I know how it behaves, just innately that I use it.

#

Ctrl-w is a super fun one as it’s more recently a shortcut to close tabs. I maintained a patch set for HexChat forever as whenever I innately tried to erase a word I closed a whole channel 😄

lavish gust
#

well I use ctrl+W to close browser tabs, and files in various editors

#

never thought of expecting this shortcut to erase text

worthy cape
#

It’s as ancient as time in Unix terminals and editors.

lavish gust
#

Got any recommendation for scrollbars? Dragging the bar and using the scroll is obvious, but in case of clicking outside the bar area - almost every program has a different behavior

worthy cape
#

Speaking of fun things - localization. Text layout of say Arabic or Hebrew is an old fun one, but some UIs (Windows IIRC) also mirror the window layout to make reading sense.

#

The order of ok/cancel is a fun difference between Windows and Mac too, and I can never remember the right one

#

Outside the thumb you mean?

lavish gust
#

yes, clicking on the scrollbar area but outside the thumb

worthy cape
#

Yeah, holding and clicking between the arrows and thumb is a great place for differing behavior.

lavish gust
#

what should it do? Nothing? Immediately scroll to this position?

worthy cape
#

You also have different behaviors for thumb capture when dragging and straying outside of the scroll bar entirely.

lavish gust
#

ahh yes

#

thats the fun part

worthy cape
#

There’s often a gutter of a small distance where it keeps going correct, and going farther out cancels the drag.

#

I did a graphical waveform seekbar for a media player as one of my bigger projects, had to emulate a lot of behavior and capture.

lavish gust
#

yeah, noticed it too; not sure if this is good to have such behavior

worthy cape
#

The gutter is super useful as dragging straight is really hard or impossible. The cancelling is nice to have but can be confusing sometimes.

lavish gust
#

Regarding right-to-left text: this is a library so we leave this for the user. Text/input boxes can be rendered right-to-left if the library user wishes so.

worthy cape
#

You missed one option in clicking in the scroll track - “jump a bit in that direction” 😄

#

Kind of like a PageUp of sorts.

lavish gust
#

most of these aren't implemented (yet) AFAIK

golden bane
lavish gust
#

regarding cancel/ok dialogs: I think the OK should be on the right and cancel on the left, as usually people move from left to right so its natural that "proceed" button is on the right side

worthy cape
#

They’re the other way around on macOS to spite you, I believe.

#

Left-to-right is also a culture thing ^^

#

Nothing wrong with scoping your project to only do some things indeed, but it helps to know what you don’t do and be upfront about it for your users.

lavish gust
#

the premade dialogs which consist of 2 buttons, optional left-side icon and multi-line text are left-to-right

#

I don't think someone would ever want a text box selection to swap between rtl/ltr depending on the alphabet

#

right now it simply moves the selection by code points

worthy cape
#

Oh gods, your mention of CSS above made me think of libRocket which I used for game UI over a decade ago. They had HTML-but-not-really-HTML and CSS-but-not-really-CSS to lay out the UI.

lavish gust
#

ohh, I hate such things

worthy cape
#

Impossible to figure out how the formats actually worked, and no HTML/CSS references were useful, as they were different enough that most things didn't take.

lavish gust
#

its like "we support HTML but actually not, we rolled our own pseudo-HTML implementation which is not and will not be standard-compliant"

worthy cape
#

It's like any editor that claims to have a Vim mode. They may look like it on the surface, but they are often more pain than it's worth.

#

Motions go slightly wrong, some commands not implemented, regex engine differs, etc.

lavish gust
#

regexes ... thats a funny thing ... especially with unicode

#

I have a tool project which extends item filters with extra syntax but it uses a real LL(infinity) parser, no regexes. Much less error-prone, especially with a library which helps writing LL parser grammars. I definitely prefer to write a parser grammar or some imperative code than to fiddle with complex regexes

#

Good read what you linked, esp stuff like "Bad #3 is “correct” according to the Unicode spec in that the two emoji merge into one. But it’s pretty confusing for users, and bytewise, our caret has to move in order to not be stuck halfway inside a single emoji."

#

In my opinion, the absolute best text editors thing is case convertion / case (in)sensitive search. The whole idea, when applied to non-latin alphabets is broken by design. Many languages have more than 2 case states, some have 2 but there are condtions like first/last letters being different in same case, some languages casing uses multiple letters (german SS). It is virtually impossible to correctly support everyone's intention and what's worse: the search in multiple browsers does not have the most trivial implementation that simply byte-compares searched pattern - they try to be case insensitive with non-obvious rules; whenever you get non-latin text it is just broken

worthy cape
#

Text is hard - let's go shopping!

carmine merlin
#

Had no idea of the complexities and all the little edge cases of text editing

golden bane
#

Regarding German, it's funny because as of 2017 there is a difference between German Standard German and (Austrian Standard German and Swiss Standard German)

lavish gust
#

@carmine merlin there is just 1 rule: case convertion/case insensivity in non-latin alphabet? don't

golden bane
#

In German Standard German, the SS as substitute for ß in capitalisation got replaced by ẞ, but not in the other Standard Germans

lavish gust
#

some non-latin alphabets have complex enough rules that you would need a sort of neural network to correctly change casing and substitute code points according to language's grammar rules

carmine merlin
#

I only know English for now, so i think I'm safe

lavish gust
#

and even some latin-derived languages like german have the SS problem which breaks some search implementations because they don't expect ẞ (or any otehr letter) to be replacable by 2-letter string

golden bane
#

But the point of ẞ is that it would only be replaced by ß

carmine merlin
#

I thought the Germans were meant to be efficient 😄

golden bane
#

You're converting case here, not from one Standard German to another

#

It's a 1:1 mapping now, so I guess the "German efficiency" still checks out

lavish gust
#

ok, try with greek then

#

some languages (e.g. Greek) have special final forms of some lower case letters, so case conversion routines must be aware of their position to perform the conversion correctly.

golden bane
#

But in reality all 3 Standard Germans still have this problem, as almost nobody knows of ẞ (besides newspapers, etc - and even then some decide to just follow different rules)

lavish gust
#

misconceptions/mental shortcuts are common ... many programmers are not aware that "int_min - 1" is not underflow, it is still overflow. Underflow is a term only relevant in floating-point arithmetic

#

And regarding text: in many languages the char type is not suitable enough to hold "rendered characters". If char is 1 byte (C, C++), it is to hold the byte representation only. If it is more (2 in Java and C#) it is still insufficient to hold non-BMP characters and still using str[index] may cut invalid strings. Python didn't even bother and has no character type at all.

#

And then we have universal networking unspoken rule that everything is UTF-8 but Windows internally uses UTF-16

golden bane
#

And sometimes you can even get Windows-1252 encoding

lavish gust
#

fortunately only in some editors, the OS unicode API is at least UTF-16 consistent but heard there were many bugs because:

  • many programmers are/were unaware that UTF-16 has its own 2 variants (little/big endian) so there are 4 in total (8, 16le, 16be, 32)
  • many incorrectly assume that UTF-16 code points always fit in 2 bytes (non-BMP characters will be 2x UTF-16 values)
hushed relic
#

I need some advise on the topic of wording.

#

Currently I have 3 filter branches

#

"Economy-Update-Softcore", "Economy-Updated-Hardcore" and "Stable"

#

the naming makes people assume that Stable is the safest one, which is not really true, it's just not receiving economy updates, which makes people shy away from the other 2

#

I think "Stable" nowadays is mostly good for SSF or really special cases

#

do you guys have an idea how to rename the branches?

golden bane
#

Name it "Legacy"

hushed relic
#

that gives off the wrong idea too

#

it has nothing to do with legacy leagues, items or being outdated

golden bane
#

"Stable-No-Economy-Updates"?

hushed relic
#

hmm

#

maybe, but that's not quite the case either. Stable does get economy updates, but only when it gets "normal" updates.

lavish gust
#

so just less frequent updates?

golden bane
#

"Stable-No-Automatic-Updates"?

ionic holly
#

something like "Static-Economy"?

hushed relic
#

that's not bad

#

"Static"

lavish gust
#

static/dynamic would be a good pair to use

hushed relic
#

Yeah

lavish gust
#

does anyone of you know of any tool being able to autogenerate inheritance diagrams from code?

golden bane
#

Depends on the language

lavish gust
#

C++, tried doxygen already and works really well but if there are multiple hierarchies I get multiple images (no way to get 1 image with all trees)

#

Enough good so far but always looking for alternatives, maybe there is something better

broken cloud
#

Hi @fickle yew, the price of stacked decks is weird on poe.ninja

#

Looking at the json, the "sell" value is based on a single data point offering 135 c for 1 stacked deck

#

which is then averaged with the proper"buy" value of 4 c, resulting in a chaosEquivalent value of 69.5... reporting in case this is a bug

golden bane
#

My suggestion would have been PlantUML but it seems like doxygen already builds upon than

lavish gust
#

Yeah, wikipedia says so

#

Well, I can stick with Doxygen. It is very good when it comes to understanding the code. The library I'm contributing into uses C++ "heavily" and I was worried how some non-IDE tools will deal with things like template <typename T> class fixed_widget : public T but as it turned out doxygen has no problems reading complex C++, even if templates inherit from T or have recursive inheritance. It is quite an undertaking to parse and draw such code.

grave wren
#

Where's my ssfbtw filter neversink

hushed relic
#

I honestly should make one

#

just gonna link it to the stable branch

#

and tell people "great base, but you need to customize it to unlock the full SSFHC experience"

fickle tusk
#

unlock? are we customize 2 win now? thats it, i'am out 🚪

lavish gust
#

Items on TESSFHC have very subjective value so I don't think it is possible to create a filter that will satisfy everyone

worthy cape
#

On a serious note, there's a higher focus on bases, crafting currency, things that may be worthless in a trade league but very usable in SSFHCBTW.

#

Economy: none 😛

grave wren
#

Tbh your strict filter with some adapting is fine as is for it imo

fickle yew
#

@broken cloud yeah it's probably worth just looking at the buy columns when the counts are so skewed

frigid sierra
#

@compact isle Is it possible to add a pseudo mod for searching timeless jewel with a particular seed? Having to enter 3 mods for each and entering the same number 6 times is cumbersome

inland kestrel
#

6 times?

frigid sierra
#

e.g. if you search glorious vanity you have to enter 3 mods for Xibaqua/Doryani/Zerphi, then for each you have to enter the seed into both min and max, so 6 times total

inland kestrel
#

@frigid sierra naw man... weighted sum search my dude

#

then you only have to enter the value twice 😛

frigid sierra
#

how?

inland kestrel
frigid sierra
#

oh right

#

still need to enter the 3 mods though, and with this you can't search multiple seeds at once

deft jolt
#

@compact isle Would it be possible to include the item base separately for magic items in the stash river? So that

{
    typeLine: "Rotund Leather Belt of the Furnace"
}

would become

{
    typeLine: "Rotund Leather Belt of the Furnace",
    baseType: "Leather Belt"
}
#

This might've been asked before though I couldn't find it

compact isle
#

the website can't do that unfortunately

deft jolt
#

Ah that is unfortunate

compact isle
#

will try and bump it with gameplay people again but my hands are tied

frigid nova
#

i have a small python function which does it if you want @deft jolt

deft jolt
#

Hm may I see it?

deft jolt
#

That would be the best outcome, yeah

carmine merlin
#

Any reason why barrage support is also called barrage in the ggpk and doesn't have an individual name?

#

Only gems afaik that uses the same name tag

frigid nova
#

🤷‍♂️ there are a lot of odd naming conventions in the ggpk

carmine merlin
#

messes with gem imports for PoB as it doesn't differentiate between the two

#

Please change the name to barrage support GGG

lavish gust
#

a lot of items use internal names and likely won't be changed because of GGG's hidden, internal data etc

  • Frost Fury = Winter Orb
  • Hand Cast Anticipation = Unleash Support
  • Eclipse = Tempest League
lavish gust
#

Anyone here with the knowledge of SLL? Successfully downloading data from poe.ninja and poe.watch, but interested if I could easily do any validation on their SSL certificates (right now just accepting data from whatever claims to be "poe.ninja")

zinc root
#

you can use curl to fetch data and use SSL_VERIFYPEER, SSL_VERIFYHOST

I think python does something similar to https connections

#

usually people ask how to ignore invalid or self signed ssl certificates, not the other way around 😄

lavish gust
#

I don't use curl or its library

#

but ok, if you say people try to ignore self-signed certs etc then I'm fine with not chekcing them

#

do you get any error when downloading from poe.ninja?

zinc root
#

nope, it says encrypted, tls 1.3

#

on curl sometimes you need to specify ssl version, I don't know what language are you using and how are you downloading

lavish gust
#

I'm using boost beast

#

basically the standard high-level C++ library for networking, wraps OpenSSL underneath

#

I had to do this in an if because some SSL providers are non-compliant:

        // Technically, we should not ignore this error but unfortunately some services (including poe.ninja's
        // Cloudflare backend) shutdowns abruptly as a way to save bandwidth. This very shady optimization is
        // seen from the client side as an SSL short read which could be a symptom of a man-in-the-middle attack
        // trying to hijack the TCP connection. In HTTP 1.0, this could be used to exploit some implicit assumptions
        // when the connection closes. As of HTTP 1.1, there are no known exploits because 1.1 has no on-close assumptions.
        // See https://github.com/boostorg/beast/issues/38 for more details on the problem.
        // If you use a different networking library and do not get this error, report this as a security issue anyway.
        ec == boost::asio::ssl::error::stream_truncated
#

According to the specification, I should reject any data from poe.ninja because it can not correctly shutdown the connection after the download has been completed. Rejescting all data is "technically recommended" because this error can be a symptom of TCP/MitM attacks

#

In reality some providers are just very pragmatic at their performance... which leads them to this very badly looking "optimization"

zinc root
#

you mean the "* Connection #0 to host poe.ninja left intact" in the end? isn't it some kind of cloudflare thing?

lavish gust
#

yeah

#

you get all the data but when you try to gracefully disconnect the endpoint just disappears and does not even send something like "ok, bye" in SSL protocol

zinc root
#

seems like poe.ninja isn't closing the connection after output ends and in curl case curl just disconnects after it gets everything

lavish gust
#

yes, and wikipedia says this is a symptom of TCP hijacks or man in the middle attacks

zinc root
#

the middleman is cloudflare in this case

worthy cape
#

I wonder if that is the cause of my "river slurp crashes overnight" panic.

lavish gust
#

@worthy cape AFAIK GGG also uses Cloudflare...

worthy cape
#

Time to make a debug build and bump up the logging level and see if it explodes some day.

worthy cape
#

Heh, PoB code exported from poe-profile.info imports into PoB as Frenzy, not Feeding Frenzy support.

#

Got me very confused.

lavish gust
#

check also Barrage vs Barrage Support, could be the same bug due to recent gem changes

worthy cape
#

Direct API import works in standalone client, and the resulting export from standalone works fine.

lavish gust
#

@worthy cape made a filter compiler/generator tool, using data from poe.ninja or poe.watch. For safety and code sanity I added a lot of error handling to make sure the economy price data is correct and so on. Now GGG remade the Atlas, added 4 new influences and the if (is_shaper && is_elder) broke quite fast after its introduction to the code. When writing item parsing, I could not even imagine an item could have more than 1 influence. 1 league passed and GGG managed to break my assumptions. Now I hesitate to verify quality is >= 0 ... maybe one league they allow negative - could actually be useful for Forbidden Taste

#

well, I don't verify and don't plan to verify all strings

#

so anything put into "" after BaseType or Prophecy or Class etc is never checked

#

That would be a huge pain to verify, maintain and update every league

worthy cape
#

@lavish gust at least the influences for shaper/elder are also outside of the big array still

#

The more I drive my asset viewer off the Data dir, the more brittle it gets ^^

lavish gust
#

A lot of stuff is named or structured differently in internal game files

#

not all item class names from wiki work the same in filters

compact isle
#

@carmine merlin the SkillGems table (the one you seem to be looking at) doesn't have name text or anything so I'd check where that name is coming from

frigid nova
#

@compact isle would you be at liberty to say how one can figure out which stats are being eaten by the auras in the mods.ggpk?

#

It seems almost all of the third party resources are making the same mistake the official trade website made with respect to these

compact isle
#

what's the communities understanding of the fields in that dat file?

#

there should be one that links to BuffDefinitions

frigid nova
#

There is a link to BuffDefinitions.dat

compact isle
#

yep so BuffDefinitionsKey in that points to a row in BuffDefinitions.dat (StatsKeys) and the stats in that can be subtracted from the mods

frigid nova
#

Thanks for the clarification!

compact isle
#

happy to share, definitely wasn't something I knew about either 😅

#

so in theory the public stash API should be faster now. Please let me know if there is any weird

#

probably

worthy cape
#

Ooh, 948ms to headers for the best request thus far 😄

#

1600ms worst, commonly 1200, indeed better.

inland kestrel
#

@frigid nova et. al.,
I am to understand that this modifier cannot be rolled on an item? Perhaps it exists now for historical reasons and is deprecated? Or are there other ways for this particular modifier to get put on an item? My guess is that this crafting bench mod was replaced by JunMaster2PercentageAllAttributes3)
https://pathofexile.gamepedia.com/Modifier:JunMasterPercentageAllAttributes4

frigid nova
#

With the new crafts there are two separate ways they get put on an item - they either roll as a veiled mod, or they get put on by the crafting bench. The spawn weights there refer to the chance to roll as a veiled mod. The crafting bench information can be found in a separate dat

inland kestrel
#

oh interesting

frigid nova
#

There are many legacy veiled mods though - and that is probably one such.

inland kestrel
#

I haven't looked myself yet but I was curious how veiled mods showed up

#

I was half expecting a veiled mod_domain... but this wasn't the case

#

My guess is that the modifiers with "Master" in their name have been superseded by the "Master2" equivalents.

#

I'll have to learn if there are veiled-only mods

golden bane
#

There are

inland kestrel
#

Know one off the top of your head? ❤️

golden bane
#

Janus Perandus
#% increased Rarity of Items Dropped by Slain Rare or Unique Enemies

inland kestrel
#

Thank you

frigid nova
#

What do you mean by veiled-only?

inland kestrel
#

I meant, you can only get that mod on an item if you unveil. You cannot craft it on at the bench

frigid nova
#

The point of veiled mods is that after you unveil it you can craft it, no?

inland kestrel
#

I wasn't certain

golden bane
#

I think I've misunderstood your question then

inland kestrel
#

If that's the case then there should be no mods like I want 😦

frigid nova
#

I will note an oddity that used to exist, there were mods which would spawned veiled on certain item bases, and then were craftable only on other item bases.

inland kestrel
#

which is fine

frigid nova
#

I don't think this is the case anymore though.

golden bane
#

I thought you were looking for mods that are only obtainable though unveiling

violet path
#

yeah just to clarify, there are no veiled mods that are only obtainable through unveiling. they can all be bench crafted

golden bane
#

Yeah, that's what I meant to say

rapid pagoda
#

Some of them have unexpected names in the crafting bench, e.g. Haku's (+#% to quality of socketed gems) appears in the bench as "Quality of Gems".

rapid pagoda
#

Anyone have any idea where the awakening level requirements (e.g. "complete this map at tier # with awakening level #") are stored? The tier is obviously the highest available, but I'm not sure where the awakening level comes from. In particular, it doesn't seem to correspond with any of the values in AtlasNode

zinc root
zinc root
#

@compact isle is there a way to write you a direct message here or everything needs to go through support@ email?

worthy cape
#

Highlights tend to work rather well for public laundry.

fickle yew
#

Last 24 hours of Public Stash API response time (entire request) - thanks @compact isle

zinc root
#

wow, huge difference

#

from 3k to 1.5k?

fickle yew
#

Yeah milliseconds

zinc root
#

for my requests it seems like 1700-1800 range, still better than 3k-4k

fickle yew
#

Time to grab the first bit of the response to extract next id went from 1500ms to 500ms

deft jolt
lavish gust
#

@fickle yew How do you report multi-influenced items in the BaseType JSON? So far noticed the field variant is a null or a string but what when the item has 2 influences?

fickle yew
#

@lavish gust they are not listed yet

lavish gust
#

got any plan if they would be implemented? Want to write future-proof code

worthy cape
#

Finally, got a helpful stack trace blessed

  File "src/lib.rs", line 228, in poe_river::fetch_river::{{closure}}
    id: id.clone().unwrap(),
#

I should probably handle things like 503s and not blindly scan the payload for b"\"next_change_id\":\"";

#

I suspect that my rare crashes coincide with maintenance.

lavish gust
#

@worthy cape But don't go too far on the other side like I did with error handling. I coded everything so "safely" than now I'm removing checks like if (is_shaper && is_elder) because GGG managed to break multiple expectations in just 1 Atlas update. Never thought items could get more than 1 influence...

worthy cape
#

River slurper is quite ignorant of the content, just follows the chain of requests, tracks rate limit information and emits raw uncooked payloads for the caller to deal with.

worthy cape
#

Heh, watching the Other Rhys talk about world generation. Novynn wasn't wrong when he said that my viewer looked a bit like official tooling 😄

#

All this sounds extremely familiar, having smashed my face against the vagaries of .arm files

frigid nova
#

@lavish gust Seems like the whole point of adding in tons of validation checks is with the intent of them breaking when GGG changes the feature set. If you're developing for a poe end point you inherently are developing for an api which changes every three months.

fickle tusk
#

yeah, the goal should be to build an abstraction layer with a well defined set of rules your underlying tool can depend on. now assume they wouldn't have told you items can be influenced more than once this league... you would've found that out pretty quick if your checks caught it and threw an error before it reached the tool logic. Otherwise it would have crashed somewhere in your logic where you would've searched a lot for the actual error, or worse corrupted your data in a persistance layer

lavish gust
#

@frigid nova Right. My project is filter related so .. already thinking how 4.0 update will change the things

#

I'm more surprised how similar poe.ninja and poe.watch are. They both related downloads per league and the item price + categories mostly map 1:1

#

I support both sites to download economy data and abstracting which site is used turned out to be simpler than expected. Both sites separate items very similarly, both have concept of low confidence, both use JSON format...

pseudo ocean
#

Does anyone happen to have any pre 3.5.0 content.ggpk file on their hdd? I badly need it. I tried some torrents posted above but no seeds unfortunately.

worthy cape
#

@pseudo ocean I do.

#

Note that preseed torrents don't have the Data dir, so they're a bit of limited use.

#
Content-3.3.late.ggpk
Content-3.4.2-ish.ggpk
Content-3.4.3-ish.ggpk
Content-3.4.3f.ggpk
Content-3.4.5b.ggpk
rapid pagoda
#

@pseudo ocean What content do you need, and how old?

#

I've got GGPKs from all the major releases since 3.0, plus 2.2.1d if you want something really old 😛

frigid nova
#

Didn't know we had so many content.ggpk dealers here

snow whale
lavish gust
#

download data from poe.ninja or poe.watch

#

one of the fields is a link to official CDN image

worthy cape
#

@frigid nova I keep mine around to be able to see differences in whatever file format I'm working on. If someone has changed an asset or data file, it's way easier to figure the format out if you have a before and after.

worthy cape
#

For the API rate limits, are they considering only the duration of the request, or also the whole duration of the response.
I mean, am I "safe" if I only rate-limit my requests based on when I sent my last byte, or do I need to consider the responses in-flight?

worthy cape
pseudo ocean
#

@rapid pagoda 2.2.1d would be awesome! In the meantime, I'm fetching Content-3.3.late.ggpk from @worthy cape (ty man!) to see if it has what I'm after.

worthy cape
#

@pseudo ocean Are you getting any good speeds? Can't quite tell from here.

rapid pagoda
#

@pseudo ocean What content are you after in particular? I really don't want to upload the whole thing, my upstream is not great 😐

worthy cape
#

I'll have mine up on a faster host in 40 min or so, in case my home pipe doesn't agree with you.

worthy cape
pseudo ocean
#

@rapid pagoda I need the one from before they started to replace music tracks with these new ones from Janowski. As far as I remember, they changed hideout background music around 3.5.0 (at that point I noticed it), but they might have started to replace some of them earlier. Not sure when Lioneye's Watch and Sarn Encampent got changed. So basically, the older the better.
@worthy cape thanks for the upload, but my internet is shit anyway, so I don't feel much difference 😦

rapid pagoda
#

I can dump the 2.2.1d Music directory somewhere in a bit

pseudo ocean
#

That would be cool!

rapid pagoda
#

267 MB is way easier to upload than 10 GB 🙂

grave wren
#

awakening OST should have the old ost tracks from adgio hutchings

rapid pagoda
#

also, iirc, 3.0 is where they started using FMOD for music which is a lot more annoying to extract

grave wren
#

kind of a shame the tracks were also removed from purchased OSTs, can't really complain about it because you get the newest stuff as well for it

rapid pagoda
#

I suspect there were some distribution rights issues involved

pseudo ocean
#

But that music was ace

rapid pagoda
#

anyways, https://woofle.net/junk/Audio-221d.zip

cosmic saffron
#

there was a sampled tracks from a library pretty much used as-is from what I recall

grave wren
#

oh interesting

#

preferred some of the old tracks

pseudo ocean
#

lol, nice find

#

so turns out they weren't composed by Hutchings ?

cosmic saffron
#

you'll have to actually contact the artist/composer/release group to find out

worthy cape
#

I'm finding two fun things. 1) My code leaks very slowly; 2) My software stack behaves very strangely when running out of memory.

#

Upside of cloud instances with 2G of memory, even slow leaks exhaust the machine in like a day.

worthy cape
#

Nifty... I made it to the end of the river, my shard IDs are a dozen off from poe.ninja's last_change_id

simple ravine
#

@worthy cape leaks with rust?

fickle tusk
#

The Void's 😱

#

Elder is stepping up in erasing Shapers stuff

worthy cape
#

@simple ravine A cache/queue is just a bounded leak 😛

#

In this case, I had channels between the request & id-extraction, fetching of the actual body, and parsing & database persistence.

#

Each was bounded by something like 100 elements or something, and there was just about enough pressure sometimes for it to heck up, but I'm not quite sure where.

#

I reduced everything to 4 and it seems to chug along. The wonders of asynchronous software, buffer bloat.

worthy cape
#

Now I just have to draw the rest of the owl.

simple ravine
#

a cache/queue is not leakage, it's allocation 😛

worthy cape
#

Indistinguishable from the outside, if policies are inadequate.

#

On the subject of leaks, there is actually a Box<T>::leak() function to explicitly lose track of a heap-allocated thing.

ionic holly
#

i've mad quite a bit of progress with my crafting sim if anyone wants to try to do more poking around to give some more feedback
https://leftn.github.io/

on a side note, does anyone have any idea where to find the new background images for the conqueror influences on items?

celest wasp
#

Anyone familiar with pob export codes?
I'm trying to build codes that have specific items as an export from a tool I have so they can be viewed in the pob UI.
I'm getting an exception(pob crashes D: with a stacktrace) here
https://github.com/Openarl/PathOfBuilding/blob/master/Modules/CalcDefence-3_0.lua#L563
With an export code that looks like https://pastebin.com/uXGL7DB7

I realize that pob codes are basically snapshots of internal application state but... this feels doable...

#

Right now I'm parsing a base export code(exported from loading up pob and immediately exporting an empty build) and adding items+slots to it; I'm missing... something...

grave wren
#

are you correctly compressing via zlib then b64 encoding after changing the xml file content?

celest wasp
#

AFAIK I am, pob says the code is valid and I've successfully imported just weapons in the past

grave wren
#

and this is what my bot fetches for your pastebin

celest wasp
#

Ohhhhh I think I see a potential issue, your bot output is very useful 😄

grave wren
#

@fickle yew any chance you'd support chin sol's extra pob logic in future ninja updates <3?

celest wasp
#

Okay! Looks like the issue was my slot indexing was assigning 0 for the first item... which meant every empty slot had the same item and pob really doesn't seem to appreciate that.
It cleanly imported after offsetting the index by 1, thanks @grave wren !

grave wren
#

welcome, so you got LUA'd

celest wasp
#

😿

inland kestrel
#

@kind geyser I had come across a few nameless mods as well

#

Some I believe are no longer obtainable... but some are

pseudo ocean
#

Hmm, where are the ambient sounds stored in .ggpk? I got Audio directory, but they're not there.

worthy cape
#

Probably in unholy FMOD banks, maybe with some leads in Data dats.

lavish gust
#

@celest wasp > I realize that pob codes are basically snapshots of internal application state
You sure they are? I have seen / read somewhere that PoB pastes are encoded XML files. This is much better than direct serialization (allows unused and unrecognized fields, no binary compatibility required)

ionic holly
#

Can confirm, pob pastes are b64 encoded xml

#

if you're using python something like this for decoding

import zlib
import base64
def decode_build(build_string):
    try:
        data = base64.urlsafe_b64decode(build_string, "-_")
        return zlib.decompress(data)
    except zlib.error as e:
        print(e)
    except ValueError as e:
        print(e)
celest wasp
#

@lavish gust You're totally right that they're XML. However, they seem to contain intermediate values for calculation which makes them a little sketchy to generate from scratch

<PlayerStat stat="AverageDamage" value="4.32"/>
        <PlayerStat stat="Speed" value="1.2"/>
        <PlayerStat stat="Speed" value="1.2"/>
        <PlayerStat stat="PreEffectiveCritChance" value="0"/>
        <PlayerStat stat="CritChance" value="0"/>
        <PlayerStat stat="CritMultiplier" value="1.5"/>
        <PlayerStat stat="HitChance" value="96"/>
#

TBH its a relatively friendly format apart from the fact pob explodes if you mess up

lavish gust
#

Why would they even contain intermediate values? I would rather put only items and all mods separated

celest wasp
#

Let me try something

lavish gust
#

@ionic holly yeah, I already encountered base64 in my job but more from it's "underground" part

frigid nova
#

@ionic holly a few quick problems - jewels are broken, and so are some fossils

celest wasp
#

Huh, it looks like it discards at least some of the player stats when it imports. RIP a 51 million level 1 damage pob code

golden bane
#

@celest wasp It's not like these values are actually used for the calculations, they are just exported so that 3rd-party tools like mine can process builds

#

@ionic holly Use base64.urlsafe_b64decode instead

celest wasp
#

@golden bane gotcha, that makes more sense. Yesterday was a deep dive into pob codes which was an experience 🙂

ionic holly
#

@frigid nova which fossils are broken?

golden bane
#

Maybe I should add support for generating PoB codes from items or characters

ionic holly
#

as for the pob decode code, I was planning on scrapping that part anyway and just using the pobapi module u linked

celest wasp
#

I'm using go for this project, shelling out to python 😬

lavish gust
#

you can "meet" both at the C level

golden bane
#

@ionic holly If you have any issues or suggestions when you're using pobapi, be sure to let me know

lavish gust
#

Has anyone made any poe.watch / poe.ninja download analyzer/helper/diff etc? Using data from both, in majority for filter purposes but interested if there is something that could offer more than just downloading their JSONs

celest wasp
ionic holly
#

@golden bane should probably have the item indexes in item sets already be reduced by 1, since we here in pythonland obey the laws of proper indexing

worthy cape
#

You can always emulate delicious 1-based indexing in lists 😉

steep latch
#

can you request the ladder information in json format? I'm not sure if I'm doing something wrong, or if it is just always html. from the url http://api.pathofexile.com/ladder/metamorph

ionic holly
#

ladders not ladder

steep latch
#

so you can request the list of ladders in json, but not a specific ladder's json data?

fickle tusk
ionic holly
#

^ u had a typo which got the html ladder, not json

steep latch
#

oh!

#

that worked, thanks

#

and then there's a url to pull in the data of the ladder characters that come back somewhere, yes?

ionic holly
#

these are all the endpoints for all the data u will need

celest wasp
#

hold up someone took the time to put together swagger docs for ggg endpoints? ... no more wiki for me

steep latch
#

so, does poeninja only include characters that have their characters set to public, or is there another way to get ladder leaders' passives/gear ?

lavish gust
#

only on ladder and must be public profile@steep latch

worthy cape
#

@celest wasp Still needed for things like the public stash endpoint, and even there, you need to also consult the per-league changes as the wiki is not updated.

#

The wiki is editable, of course, but ain't nobody got time for that.

worthy cape
#

The website API forum contains the relevant changes, incorporating them shouldn't be that hard 😄

fickle yew
#

@grave wren what is that?

grave wren
#

Chin sol is the bow with a separate more multiplier when shooting from close up

#

It's a separate toggle as well

#

I'll ping you how it's called when I am back at home

worthy cape
#

Are any of you fine people also going to FOSDEM’20 this weekend in Brussels?

grave wren
#

@fickle yew <Input name="conditionAtCloseRange" boolean="true"/>

fickle yew
#

@grave wren yeah that's probably fair to enable..

grave wren
#

tbh i am still unsure why its not triggered by the proj distance

#

The 'Close Range' modifier applies to monsters within distance of 20 units[1] (the radius of cleave).

carmine merlin
#

I had the same thought when I had to implement the close range mod for a different item. Not sure if I should keep it and also apply when having a proj distance of less than 20, or get rid of the button altogether and just use the proj distance similar to point blank

golden bane
#

@carmine merlin It's a bit more complicated than that
Basically, there are two distinct concepts regarding distance: projectile travel distance and distance between enemy and player.
Note that these two are not necessarily the same as projectiles can change direction, players can move after using skills and mines/traps/totems/ballistas/brands can use skills from a position different to the one of the player.
Chin Sol's mod would fall into the second category here for example.

#

Also, Chin Sol's specific mod was reworded in 3.9

frigid nova
#

@compact isle Seems like all the weapon leech mods now have null hashes?

pulsar falcon
golden bane
pulsar falcon
#

@golden bane sorry I forgot to make it public 😅

golden bane
#

@pulsar falcon You should open-source your tool and host it on Github (or equivalent) if you want adoption
Otherwise you'll be hard pressed to find people who want to run untrusted 3rd-party software

lavish gust
#

Any by "open-source" you probably mean "add a license"

golden bane
#

No I mean "open-source" as in have the source code available to be able to build the project from source

#

Although adding a licence won't hurt either 😁

lavish gust
#

open source with no license is just open source, nothing else than viewing/copying the code is allowed

pulsar falcon
#

tbh it's not worth the effort to do those step, just a simple software and any programmers would be able to make it easily

zinc root
#

tbh nobody will run a random .exe file just to see what's inside

worthy cape
#

A lot of weird people do, tbh ^^

#

Not to mention AHK scripts from the wild

ornate nest
#

whats the endpoint pathofbuilding uses to import character data

inland kestrel
#

I was curious what the chaos recipe thing is... but yeah, not running arbitrary executables based on curiosity. I would also have appreciated being able to check out what it's doing and compile/execute it myself.

lavish gust
#

to build some executables you would need to install multiple GBs of necessary tools and then configure them properly

#

building yourself has not much point unless you read the entire source code

inland kestrel
#

I echo Cinnabarit's suggestion above: host the source on Github. You can also have the executable(s) there as a Release for folks.

lavish gust
#

anyone knows the maintainer of acquisition?

fickle yew
#

@lavish gust xyz

lavish gust
#

reachable here?

fickle yew
#

Usually yes. Same dev as poe.trade.

lavish gust
golden bane
#

@lavish gust The idea behind building yourself is that someone does read the whole source code, compiles it so they can vouch for the program

#

If that's not you, you have the additional option of trusting that person other than building yourself

#

In the current state, even that is impossible

lavish gust
#

what do you mean by "current state"?

golden bane
#

Closed source

lavish gust
#

ahh, agree definitely; if someone ever wants others to download their program releasing the source is an absolute minimum

golden bane
#

Note that for non-public characters, you have to provide a session ID

tiny cargo
golden bane
#

I thought that was obvious, but that's a good paper you linked

#

Ideally, you'd also have detailed build instructions in the repository

lavish gust
#

AFAIK it's very hard to verify the executable build unless you have exactly the same OS, compiler version, all used libraries and such. And still, there can be some non-deterministic things (eg filesystem randomness) which can impact the order of files read by the linker. Even worse if the released binary is stripped and cleaned of all unnecessary data.

compact isle
#

@frigid nova that's annoying, I'll investigate

spare glade
#

**1:3:8 split for total number of affixes** - For items with a max of 6 mods, extensive data farming has shown that there is a 1/12 chance for 6 mods, 4/12 chance for 5 mods, and 7/12 chance for 4 mods
What about items with 3 mods?

lavish gust
#

they never drop

spare glade
#

And for chaos crafting?

lavish gust
#

items which drop behave as if by alchemy orb - they have the same rates

violet path
#

rare items don't drop with 3 mods, and also don't roll that way with things like essences/chaos orbs

spare glade
#

So, you can only get a 3-mod rare with regals/annuls?

lavish gust
#

yes

violet path
#

or metacrafting, yes

spare glade
#

I never even realized that 3-item mods didn't exist!

violet path
#

beastcrafting, some other smaller things but in general yeah 3 mod rares aren't a natural occurance

lavish gust
#

there are many small things that not everyone can easily notice

pine mauve
#

is there a dev for poe-lurker here?

quick wharf
#

Is there some sort of Path of Exile crafting simulator, like Path of Crafting, for PC?

deft jolt
#

there are so, so, so many crafting simulators

quick wharf
#

examples?

golden bane
#

You can also use Path of Crafting on PC in an emulator

quick wharf
#

i know that, was looking for alternatives

quick wharf
#

@deft jolt you say there are lots of crafting sims, could you give me some examples?

golden bane
#

I don't think that's what they are looking for

quick wharf
#

it's useful, but no not what I'm looking for

#

I'm looking for anything to do with crafting, like rare crafting

#

Path of Crafting comes to mind, but it's mobile. I can download BlueStacks and emulate it, but I want to see if there are alternatives

frigid nova
#

I try my best to make it accurate-it's been tested against lots of in game data. That being said it has no gui, it's mainly intended for a sandbox for myself and others

quick wharf
#

so I have to install PyPoE, RePoE, and then PoECraft?

frigid nova
#

Yes - I need to create a wheel for easier installation - but unfortunately it's a bit low on my list currently. Quite distracted with another PoE project...

quick wharf
#

I'll try it out, thanks

frigid nova
#

All feedback welcome.

ionic holly
#

@quick wharf im currently developing a crafting sim where you have to use currency, most ingame features are implemented, but it's still incomplete

https://leftn.github.io

quick wharf
#

"Your Crappy Item"
"Stats here"
I like it already

ionic holly
#

Yeah, name generation and stats display are low priority atm

quick wharf
#

it's still clearly in development, but it looks good so far. depending on whether or not I figure out how to properly install nick's poecraft or not (and how good it is c;) I'll probably use this

lavish gust
#

@frigid nova since I see you are making a crafting simulator, I might ask you a question: when exalting an item, is the chance for prefix and suffix always the same? Or there is no prefix-or-suffix step and the ex instantly draws from the weight of all possible mods?

golden bane
#

No prefix-or-suffix step, for everything that doesn't explicitly state otherwise

frigid nova
#

The latter @lavish gust

lavish gust
#

ok, so craft-blocking high-weight mod does a lot then

frigid nova
#

@quick wharf Yeah my tool is intended mostly for large scale experiments. If you want a nice gui to mess around with I'd advise others.

quick wharf
#

as long as the GUI works and isn't insanely difficult to use, it's all good

#

and I get bored a lot but don't have much currency in POE at the moment, so might as well learn to craft without the fear of messing up

tiny cargo
#

@frigid nova "So for 6 mod variants we have 119^6 possible permutations. [...] 10^12 leaves is computationally infeasible." and "However, with influenced items even the total number of mod groups can get near 100, leading to the same problem as before."
This may be only useful for a special usecases, nevertheless if you have a specific item in mind, can't you group some mod groups as unwanted?
e.g. crafting for a CI Cold spell char you want high ES and a specific damage type, so if you roll fire or phys damage on an item doesn't matter if they are equally useless for what you have in mind.

lusty musk
#

@frigid nova "Performant Crafting Simulator"

#

what is it that's computationally intensive?

lavish gust
#

aren't all crafts O(1)?

lusty musk
#

(that is, what question are you trying to answer because as Xeverous notes, a single roll is just a couple steps)

frigid nova
#

The weights you draw from change at each step

#

There are a lot of weights and calculating what they are can be expensive.

lavish gust
#

weights do not change

#

only the sum because some mods are excluded

frigid nova
#

Weights do change - that's how the tag system works. I try to explain this in as much detail as possible in the README

lusty musk
#

@frigid nova I understand weights change depending on what's already on the item

#

but what is the question you're trying to answer

#

I can't comment on the complexity and/or algorithms if I don't know what the query is

lavish gust
#

ok looks like the process of rolling a mod is more compex than I thought

lusty musk
#

@lavish gust example, if a chaos orb rolls t3 life prefix as a first mod it can't also choose life as another mod so the mod pool and thus probabilities change

lavish gust
#

still, each mods has chance equal to weight/sum_of_weights, right?

lusty musk
#

for a single mod

#

that's what we believe at least

lavish gust
#

you only put less mods into the pool

#

when an item already ahs some blocked

lusty musk
#

@frigid nova is the question "what is the chance to end up with a specific combination of mods (plus maybe others) when a chaos orb is used"?

frigid nova
#

There are many questions one could be interested in asking. A general one would be to integrate any function over the space of all outcomes of a chaos orb.

lusty musk
#

that's not feasible indeed

#

assuming no other properties of the function

#

not too far off though

#
>>> binom(100, 6)
1192052400
frigid nova
#

Some of the functions are class functions over the mod groups, which I think might be feasible in some limited scenarios. But I settled on just doing rollouts to estimate.

#

Keep in mind binom(100,6) is an overestimate by probably a few orders of magnitude

#

since many configurations are illegal

lusty musk
#
>>> binom(50, 3) * binom(50, 3)
384160000
frigid nova
#

Still though, calculating the probability for any given configuration proved costly.

lusty musk
#

are there overlapping mod groups?

frigid nova
#

(There are 6! ways in general to obtain a given configuration)

#

No, mod groups partition the mods

lusty musk
#

ok

frigid nova
#

Tags really complicate the math though.

#

and prefix/suffix considerations

lusty musk
#

why so?

#

prefix/suffix is actually a huge simplification

#

or are there mod groups that span prefix/suffix?

frigid nova
#

I'm not sure why you'd think that, if I roll PPPS as opposed to SPPP

#

the total weights at each step look quite different.

lusty musk
#

of course because the outcomes are different

#

oh no wait

frigid nova
#

Not in your binomial configuration 🙃

lusty musk
#

sorry I misread the thing

#

I'm not sure that's actually different though

#

assuming there's no mod group that spans both

frigid nova
#

What do you mean by actually? My claim is that the probability to end up with any subset of mods is the sum of all the orderings of the mods.

#

Another way to say this is computationally it's more reasonable to consider the space as ordered lists than unordered.

lusty musk
#

usually when spaces are partitioned like this all ordering effects of mutually exclusive events tend to cancel out

#

but

#

I'm not certain of either way ^^

#

@frigid nova I don't know software that solves this

#

but I'm pretty sure you can actually solve your problem efficiently

#

since the amount of mods is reasonable

#

and all constraints are partitions, therefore all mutually exclusive stuff can be encoded in a n^2 matrix

#

so you end up with n^2 conditional probabilities

#

of the form P(mod1 | mod2)

#

you can probably use some bayes package to then solve questions such as P(mod1 | mod2,mod3) or straight up P(mod1)

#

although the prefix/suffix stuff might throw a curveball unless you can fully separate the two

#

@frigid nova ok, let's for the moment assume we have correct probabilities for P(#prefix,#suffix)

#

e.g. we know that 2 prefixes and 2 suffixes has a certain probability

#

then I argue that the probability of prefixes/suffixes given that we already assume we get 2 prefixes and 2 suffixes means we no longer have to worry about the probability of a suffix affecting a prefix

#

if we can do that, there exists an efficient algorithm

#

oh wait that doesn't give the probability, just how to sample from this distribution

#

@frigid nova for what it's worth, I could very efficiently sample from this distribution with a quantum computer 😛

quick wharf
#

@frigid nova (sorry about this, I'm slightly dumb in the brain) I've downloaded PyPoE, RePoE, and PoECraft. How am I meant to actually get it running.

golden bane
#

@compact isle "Hits have (140-200)% increased Critical Strike Chance against you" is listed as explicit twice

quick wharf
#

I've done that for PyPoE and RePoE, just not sure about PoECraft now

golden bane
quick wharf
#

just another pip install?

frigid nova
#

Since PoECraft requires Cython to compile it can be pretty annoying on some operating systems... if you have any issues let me know

quick wharf
#

am I meant to be running the pip install in PoECraft-master, or PoECraft?

golden bane
#

Do what the warning says

frigid nova
#

It's probably best to move this debugging out of this channel

quick wharf
#

I did what the warning said, didn't change anything when I tried again

lusty musk
frigid nova
#

I really think prefixes and suffixes are going to mess you up here 😉

lusty musk
#

I don't think they are if we calculate those odds before hand

#

assuming that there's no mod groups that span the gap of prefixes/suffixes

gritty quail
#

The 'adds_tags' field can really mess with your mod pool

#

Order of added mods makes a big difference

lusty musk
#

can you clarify @gritty quail ?

gritty quail
#

When you add a mod to an item, any tag in the mod's "adds_tags" list gets thrown on the item

lusty musk
#

I'm not sure what adds_tags is or how it works

gritty quail
#

So future selection of the valid mod pool has to take those new item tags into account

lusty musk
#

can you give a concrete example?

gritty quail
#

Sure let me dredge one up 🙂

#

You know how jewels often roll with paired modifiers that both target a specific item type?

frigid nova
#

A good example is bow/wand mods on abyss jewels. They are mutually exclusive due to tags, not mod groups.

gritty quail
#

That's because if you roll a mod that talks about "daggers" then it adds this:
"adds_tags": [
"dagger",
"specific_weapon",
"one_handed_mod"
],

lusty musk
#

ah yes, jewels are more complicated

frigid nova
#

It shows up on non-jewel items

gritty quail
#

If you gather the mod pool for that item again, the weights make all mods that don't target daggers drop to 0

lusty musk
#

where else? I'm curious because I can't think of any

frigid nova
#

Hybrid Attacker/Caster weapons use it to weight towards one or the other during rolling

gritty quail
#

Yep

#

I'm also working on a crafting simulator 😂

#

It's fun learning how their item generation stuff works

lusty musk
#

is adds_tags always a straight up blacklist

frigid nova
#

No

lusty musk
#

or can it be an arbitrary probability multiplier?

frigid nova
#

The latter

lusty musk
#

or well, weight

frigid nova
#

Anyway, I detail the algorithm I ended up settling on within the docstrings of my repo. Basically precompute and hash as much as possible for a given base so you can roll quickly

gritty quail
#

That's smart

#

I'm planning on doing monte carlo simulation at some point, a little worried about how slow this is all going to be, especially in javascript

lusty musk
#

within each modgroup everything is fair game though?

gritty quail
#

But I'll cross that bridge when I get to it

frigid nova
#

Not sure what you are asking @lusty musk

lusty musk
#

that is you could view the rolling algorithm as first choosing the modgroups of an item

#

and only then within each modgroup selecting an affix

frigid nova
#

This assumes that tags are uniform across all mods in a mod group, this constraint could be true in the current mods.dat but is not forced to be.

gritty quail
#

I think you could, I've been hesitant to take shortcuts like that because their format is very flexible and I don't want to make assumptions

frigid nova
#

@gritty quail based on the constantly fluctuating and buggy state of mods.dat that is a good design decision imo

lusty musk
#

I still think if you are interested in the probability of a specific combination you can take a huge shortcut

#

to massively reduce the 'outcome tree'

frigid nova
#

Even if you only look at mod groups I think it's still infeasible for many bases nowadays

lusty musk
#

basically at each node of the tree you can combine every single mod that isn't what you want into one giant mod group

frigid nova
#

That's not true

lusty musk
#

plus a probability distribution that dictates how that mod group shrinks

frigid nova
#

Well that's just equivalent to tracking all the mod groups

#

Since you need to condition on which one actually left for the next roll

lusty musk
#

not anymore because now the order can be disregarded

#

(only grouping those mods that don't add tags)

frigid nova
#

How do you figure?

#

different mod groups that you don't care about have different total sums

lusty musk
#

actually again the prefix/suffix count messes me up otherwise you could

inland kestrel
#

Is it true that live searching on the official trade site has changed the max # of websockets from 80 to 20? I didn't see any post on the Website APIs thread on the forum for this.

frigid nova
inland kestrel
#

Thank you. I missed that post

#

Looks like some authorization aspect was introduced as well. I'm not sure if this ties it to a session id or something else.

frigid nova
#

From first glance it looks like CORS was enabled

inland kestrel
#

Makes it a little more difficult for an external app to make use

compact isle
#

that's the intent

#

it isn't an API anyone should be using 👀

inland kestrel
#

Ah. Good to know! ❤️

frigid nova
#

@compact isle would it be possible to expose the websocket limit in the response headers somehow?

compact isle
#

we don't support third parties using it which would be the only use that would have

frigid nova
#

Would it not also be relevant for people using the official trade website with multiple tabs?

compact isle
#

only if we also added it to the front end

#

but 98% of people don't use over 20 searches

frigid nova
#

Thanks for the clarification!

compact isle
#

also interestingly enough you can't get any information from the original HTTP request back when you open a websocket connection

#

so it wouldn't be able to be used by us or anyone else in the web-space

grizzled seal
rugged pecan
#

can some one help me setup the new pob?

#

something about a string?

#

just @ me or w.e when available

worthy cape
#

taps the channel topic sign

#

The github page for the fork has a wiki page with detailed instructions on how to alter the manifest.

rugged pecan
#

channel topic ?

#

isnt pob a 3rd party tool?

#

0.0

#

if im wrong could u point me to the right channel cause im confused now lol

grizzled seal
#

"how do I setup the path of building fork" isn't anywhere near development discussion, there are like 5 other channels for that kind of thing

rugged pecan
#

i didnt know that existed

#

i was only told of some string to change nothing else

#

ty for this

worthy cape
#

That advice is still accurate :D
The ultimate goal is to change where PoB gets “updates” from, following the changes from LI’s place instead of Arl’s.

rugged pecan
#

yeah i see that now but it did confuse me

worthy cape
#

A more on topic question, how do people here do dev/prod databases and endpoints - just some config files with database connection strings and feature flags or something?

rugged pecan
#

how do i know that it worked?

#

xD

worthy cape
#

I’m at the point now that I feel that I want to both run a stable version in prod and also do active dev.

#

Responsibility isn’t my forte 🙂

#

@rugged pecan look for a feature that wasn’t present before, like the pantheons drop down or oils on nodes in the tree. If you got an update ready after the change, it’s likely you got the goods.

#

(I have no idea what upstream PoB does nowadays)

lavish gust
#

@worthy cape you mean networking stuff? You basically run 2 server instances, each with own databse or using the only one, each server having different address

rugged pecan
#

ty

worthy cape
#

@lavish gust yeah, just wondering idly what kind of mechanisms people use to do this smoothly.

grave wren
#

+1 for docker and compose files

fickle yew
#

@grizzled seal I'll take a look. Thanks.

worthy cape
#

I’m also having some trouble figuring out how to handle my source code, as i either have to keep multiple copies of the source on each machine I build on, or somehow distribute binaries from a local bunch of trees.

#

Kind of want to keep overhead low when iterating, going through CI would suck balls, as would spinning containers. Also debugging ^^

grave wren
#

ideally you'd distribute packaged containers

worthy cape
#

I’ve got some code at work that is deployed by manual scp step to the target box and it sucks.

#

Not while developing

grave wren
#

why

worthy cape
#

I mean, the project is in vcs but I wouldn’t commit every single edit I do to see if it builds/runs.

#

The PoE project is fun as I have two diverging trees, one in the cloud instance and one on the dB host.

#

Off to the hotel for now, got stuff to think about at least.

grave wren
crimson epoch
#

Any (unofficial) documentation on how to build poe.trade URLs to query for items with specific mods?

#

I know how to build URLs to search for items based on number of links, or whether or not the seller is online, but only because I found a minimal resource for that on a random GitHub repo a long time ago

#

not sure how the dev behind that repo even got that info.

lavish gust
crimson epoch
#

mmm, quite a lot to search through

#

actually

#

this code could come in handy

#

looks like pretty much all parameters for poe.trade's POST requests are listed here

quick wedge
#

pob suddenly started telling me my profile is private, wasnt yesterday and the box is unchecked on my profile.. any tips?

sullen lynx
#

https://prnt.sc/qv8jej
my kaspersky found a trojan spy in the actual download from poe trade companion... anyone here noticed that too?

Lightshot

Captured with Lightshot

golden bane
#

Just don't use antivirus programs

sullen lynx
#

shure... if you want your banking informations spread across the internet... dont use them... but i will

tiny cargo
lavish gust
#

lol I actually wonder what can be (falsely) found if anyone starts to scan my tool

fickle yew
#

@grizzled seal Deploying a fix for high impact mines. Will go through later today 🙂

hazy fog
dark wigeon
#

what trading tool are people using now instead of poe.trade AHK?

#

(sorry if this not the right place to ask)

violet path
#

it isn't, but there was a whole bunch of new trade helpers posted on the subreddit a little bit ago, maybe try looking there or another channel for a detailed rundown

golden bane
dark wigeon
#

k. thanks 🙂

frigid nova
#

Elemental Penetration showing up as a suffix on bows, although all weights are zero

velvet fog
#

thanks

frigid nova
#

For anyone curious, @lusty musk, mods in a single mod group don't necessarily have the same tags

#

Also @velvet fog would you be wililng to display tags next to the mods, since currently that mod group displays like this:

#

Has anyone conducted experiments with corrupted essence fossils (Glyphic)?

lusty musk
#

@compact isle since the update I'm constantly getting cloudflare captcha'd by the website and I haven't ran anything for days now

compact isle
#

send your public IP to support and we can review it

grave wren
#

Novynn new wc3 map when :3

compact isle
#

oh god

grave wren
cyan ice
#

Does anyone have any experience whether or not https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getforegroundwindow can be used safely without invoking the ban-hammer? Everything else in my application is following the EULA, but this particular call might be pushing it. Basicly I only want logic in my application to run when Path Of Exile is running

lavish gust
#

@cyan ice Does EULA list explicitly allowed OS functions? There are many workarounds for implementing "when path of exile is running" behavior. Could help you with this if you find what is / is not allowed.

cyan ice
#

@lavish gust It is not only when it is running, it is when Path of Exile is the currently focused/top window. GetForegroundWindow is a known first bastion for anti-cheats and since we do not specificly know what is being checked in GGG's anti-cheat solution, i'd rather not use something that could trigger it. Or anything similiar

zinc root
#

how is tademacro behaving with ctrl+C/cotrl+D for example? is it working outside of poe?

lavish gust
#

@zinc root It is not. I uses AHK language which abstracts some of OS API. AFAIK it only tries to get the name of the foreground window, which @cyan ice can probably be obtained in a non-intrusive way

quick wedge
#

trademacro wont run, get a parsing the league data (json) from poe api failed. servers are up and ruinning, tried reinstalling ahk and trademacro. nothing works.. also having trouble with pob

grizzled seal
#

@cyan ice That's the exact function that AutoHotkey uses, and PoE-TradeMacro calls it frequently via IfWinActive. I'm quite certain GGG doesn't care about GetForegroundWindow. Application behavior is what matters, if you're actively trying not to break the EULA you're probably fine.

grizzled seal
#

Getting information via user32.dll shouldn't be invasive or interact directly with PoE anyway, so there's no reason to be worried about it. Memory reading/manipulation and pixel scanning (aka what you're not supposed to do, ever) are handled by completely different DLLs. The only bad thing I'm aware user32.dll can even do is input manipulation, and GGG is pretty lenient about that as long as it doesn't involve multiple server actions without matching physical user input.

cyan ice
#

@grizzled seal Yeah in that case I feel more at ease. I'll continue with that then

halcyon whale
#

getactivewindow or functions like that are often used 'by desktop managers acheats avoid them because of this

#

does anyone have these

#

cba setting up the py tool and waiting for cpy and paste

rapid pagoda
#

@halcyon whale do you want the raw dat or...? if you just want to look at the data, realistically, http://poedb.tw/us/mod.php probably has the information you need 😛

halcyon whale
#

Yea Ik I looked at poedb @rapid pagoda

#

I need the raw dat. Or I would rather copy and paste then do it manually from poedb

#

I need a list of all magic item name modifiers for filtering out a base

halcyon whale
#

ty 🙂

#

ouch

#

might have to use a different browser for the raw lmao

#

nvm I'll just save

#
    "adds_tags": [],
    "domain": "item",
    "generation_type": "unique",
    "generation_weights": [],
    "grants_buff": {},
    "grants_effects": [],
    "group": "AuraBonus",
    "is_essence_only": false,
    "name": "",
    "required_level": 1,
    "spawn_weights": [],
    "stats": [
      {
        "id": "critical_strike_chance_+%_against_enemies_on_consecrated_ground_while_affected_by_zealotry",
        "max": 120,
        "min": 100
      }
    ],
    "type": "ZealotryCriticalStrikeChanceAgainstEnemiesOnConsecratedGround"
  },```
#

wait

#

so there is no reference to the name generated by the mod

#

can someone walk me thru magic item naming

#

?

frigid nova
#

@stone kelp repoe is installable as a python package which is detailed in the readme

#

there are docs in repoe which explain every field in the json

halcyon whale
#

does it contain the naming system with the resdis?

frigid nova
#

magic item's are named based on the prefix and suffix which are on them.

halcyon whale
#

so is there a dictionary for the actual adjective connected to each modifier?

frigid nova
#

name is the name of the mod

halcyon whale
#

ah

#

lmao

violet path
#

shame that name field is empty

halcyon whale
#

I only looked at a few

#

my bad

rapid pagoda
#

ZealotryCriticalStrikeChanceAgainstEnemiesOnConsecratedGround doesn't have a name because it only appears on unique items (specifically, Watcher's Eye)

halcyon whale
#

its not

#

yea

#

thanks 🙂

rapid pagoda
#

historically there have been a few mods which could spawn on non-unique items which had blank names -- I think most of them have been fixed though

frigid nova
#

I think there are a few right now actually 😮

halcyon whale
#

eh I'm just getting an array of mod names so I can filter them out to find base type

#

hardcoding but is seems like the only way togo on the official trade site

frigid nova
#

the official trade website API provides mod names

#

the river does not

halcyon whale
#

the river?

#

im dumb

frigid nova
#

the stash api

halcyon whale
#

yea trying not the mess with them on a simple extension lol

#

im just messing with item base on trade site

frigid nova
#

The official trade website provides the mod names

halcyon whale
#

each colour is a different element

#

where are the mod names?

frigid nova
#

mouse over the mods 😉

halcyon whale
#

wouldn't be a smooth way to find base type

frigid nova
#

Smoother than hard coding.

halcyon whale
#

ik you can force hover

frigid nova
#

I have a python function which unrolls it if you want

halcyon whale
#

but unidentified?

#

yea wouldn't mind that 👍

frigid nova
#

sent

obsidian jetty
#

Whats the best trade macro for the official site

frigid nova
frigid nova
#

Does anyone know if there is an indication in content.ggpk of which mods spawn on which sextants?

#

Before people used ilvl but they are all 1 now

regal fossil
#

when e.g. using a chaos orb on a chest, is the probability of 4/5/6 mods publicly known, or is it only rough values from experience one can get? I've tried looking through pypoe and repoe, but can't find anything regarding that there. When googling I've only found some thread where someone stated their results from chaosing ~1000 orbs...

lavish gust
#

1/12 6 mods, 4/12 5 mods, 7/12 4 mods, same for alchemy orb

regal fossil
#

where are those numbers from?

lavish gust
#

wiki and multiple people's experiments, quite big sample sizes

regal fossil
#

do you ahave a wiki link? (also thanks 🙂 )

lavish gust
#

no, it was on some currency article IIRC

regal fossil
#

ok

versed ginkgo
velvet fog
#

got it thanks