#tooldev-general
1 messages ยท Page 46 of 1
"main_hand_local_accuracy_rating": {
"alias": {},
"is_aliased": false,
"is_local": false
}
Yeah, that's how weapon-local stats work
why would it say local false on the alias?
Probably because once the alias is resolved, the local flag no longer matters
well played, GGG
thankfully the json separates them
but the plaintext is more difficult
Even then, having to work it out based on crafted/non-crafted/unique is just stupid
I'd wager there's very, VERY few people outside GGG (and probably within, too) that could even tell you whether a given instance of flat accuracy is global or local
And that's just daft
well, I hope at least if you can filter out possible modifiers based on if it's a normal explicit, crafted mod or an implicit
and from there have one single outcome left
Sure, but that shouldn't be necessary
And FWIW, I don't even bother in the program ATM
I just assume local, as the part of the code that works with local modifiers can't tell if the stat came from crafted or non-crafted
I understand you completely. I've been working on an 'item info / trade macro' alternative, and it's nasty
because the user is intersted in knowing quickly how many prefixes and suffixes, what tier it is.. because people are quite hung up on those things
and separating composite mods is just ... nasty
Yeah... that's one of those things that PoB could do, but I really, really can't be bothered dealing with that mess
I'm using your application and I love it. But when I am using it, in that context I don't care about tiers of items etc
That information really have no value in that situation
Well if you're not using a trade/item info macro, copying an item into the program is a quick way to get DPS etc
I do that all the time ๐
I'm using the AHK one
So having the program figure out the affixes could be useful
but that is more when dealing with loot
Indeed
when determining how an item would affect my build, absolutely paste it into your app
now when I remember it, there's a couple of things I wish Path of Building had
#1. Determine redundant nodes in your tree
#2. Showing "power" on selected nodes (red / blue)
That would be very handy (for me at least, because i suck), when trying to come up with different approaches tree-wise
#2 isn't done currently for technical reasons; calculating the node power for the 800-odd unique nodes requires a few shortcuts due to the processing power required, and it can't handle node deallocation
And doing the allocated nodes using the usual non-shortcut method is too slow
#1 is in the bin of QoL improvements that I'd like to add for the passive tree if I ever get around to it ๐
hm, interesting
the way you display the non-allocated power, would it make sense to use the same way for the allocated (by when calculating it's "power", calculate its value as if it was de-allocated)
Ok so, the way the node power shortcut works, is that the program does most of the setup required for an offence/defence calculation pass (sets up active skills, adds base stats, item stats, passive tree stats), then saves the state, then for each node it adds the node stats, does the offence/defence stuff, then resets the state
You can add more stats (say, from a passive node) just fine, but removing them isn't so straightforward
so when I hover over with the mouse
it tells me what i'll lose if i deallocate that node
Yeah, because it does a full setup and calculation pass when initialising the tooltip
So it can remove nodes that it would otherwise add
It's fine doing that for one node, but for 100+ nodes it is rather slow
I'm not trying to be right at any cost, but it would be interesting to see how it would perform
Unsure how Lua works with threads, but if you'd have N copies of the states, and compute in parallel
I'd need to speed up the setup phase of the calculation pass, or find a way to remove the node modifiers easily
Actually, I may need to do the former anyway, as I'm currently running into issues with the next update, in which I'm adding sort-by-DPS to the gem list
because - memory is something modern computers have a lot of
That would require ALOT of memory
Unfortunately Lua doesn't have support for simultaneous threading
Although I do have a limited form of it implemented in this program; it is used for background update checks and page downloads
PoB takes up 215 MB or RAM, not sure how much of that is tree state
Not very much ๐
The item, passive tree and skill stats take up most of the memory
But anyway, we'll see how I go with the DPS sort thing
There's no way to avoid a complete setup phase with that, so I'll need to optimise it a little
if this was in c#, i'd be offering a helping hand
but with a new language, i'd probably just slow you down
Hehe
Lua is probably the easiest language to learn in the history of the universe ๐
one of my employees said the same thing about Ruby and Erlang too
i find my self writing more "procedural" code than object oriented sometimes, because that's where i started
DOS ftw
I did take a peek at your code, and it wasn't too hard to understand the code, but because I didn't have the full picture and undestand the limitations of Lua, I had a difficult time undestanding the reasoning behind some of the architectural choices made
Ahh
Well the use of Lua to write a desktop application is an unusual architectural choice, so there's that too ๐
That comment has run past my mind ๐
If I knew more about functional programming, I'd take a stab at making a calculation engine in f#
functional programming is pretty fun imo
I started out writing C++, so it's OO all the way.
All the kids were learning Java and Javascript, but my friend's dad was a C++ programmer, and he had 10000000000000s of book
JS can be functional
Definitely
actually, there's a huge push for it to be functional these days
especially when managing state within webapps
meh
it's always had functional aspects
cause closures are the only way to have private variables
right, i'm talkin more about things like redux which force functional purity
in order to work
and composing functions
relying on higher order functions, etc
javascript has always been like that
before "in order to work" was a much lower standard
i know
i'm just saying functional programming is making a comeback in JS lately
over prototypical
@timid hemlock I've see lua being extended all the time. Surely there is a (multi-?) threaded version or extension to include the runtime out there somewhere?
meh, i was talking about real functional
Haskell or gtfo
kek
JS can't be a functional language because it isn't proven to be
I hate my day when I have to write JS
I'm seriously wanting to learn more about Erlang and perhaps Elixir
Base js is rather annoying, but if you use jquery or similar extenders it is a ton better
Also, elixir looks really nice
jquery? heh.. i haven't used that one in a long time xD
@obtuse citrus As far as I know there aren't any that allow multithreading with a shared state, and even if one existed, since I'm using a third-party JIT, it wouldn't be compatible
The best you can do is have multiple states that can pass information between them, but I'm already using such a system
SIMD / GPU calculations? ๐
openCL
cuBLAS โค
that's only nvidia :\
who cares about ATI/AMD?
opencl is supported by both!
seen any computing grids that focus on AMD instead of NVidia?
but sure for consumer grade applications, i suppose you should try to support both
Js is only annoying when you want it to be something other than JS
But rarely the best at any task, except for when it's the only choice you've got (e.g. browser)
But it's often the easiest choice
it's the best at developing very fast crossplatform mobile, desktop, web and backend apps
which ones did you compare when reaching that conclusion?
are there many choises?
that didnt answer the question
assuming that you're meaning the webapps (and not the frontend, as that's the only language), and not just popping in for some good'ol trolling
no, I mean literally anything
one size does not fit all.
I can only name C# as a potential choise but I've no much experience with it
so if we exclude frontend javascript (browser code), there are variety of languages that compete
and the development speed is not fast enough
but saying it is the best, you surely must have some experience and done your research, right?
well JS is not only the browser code nowdays
ok, what other languages do all the major browsers support?
you can use another language and compile it into JS
for modern ones see Dart and Kotlin
true
I guess I am just curious to what made you say that JS is the best language etc
not even trying to troll you, im just curious
there are no such thing as the best language, each has its own pros and cons
I am refering to this comment:
"it's the best at developing very fast crossplatform mobile, desktop, web and backend apps"
yeah
the development speed is extremely fast
basically you can write frontend-like code that runs in native mobile, desktop and web apps
yeah, it's super fast and easy to produce hair-thinning bugs and defects in as well
if you really must use Javascript, I would suggest using TypeScript
Flow is much better
why?
is that your opinion or someone elses?
it's the fact you can check yourself
๐
So I read up on Typescript vs Flow from a few sources, and I disagree that it is much better. It comes from two differnet places.
And some of these article authors have little clue on what they're covering.
ugh
Javascript has become the new PHP-community. Full of entusiastic and opinionated/biased people, pouring out opinions and code that doesn't make sense ๐
not really
it's just JS has grown into something bigger than a scripting language for browsers, but some people can't just accept it
were you around when PHP became popular 20 years ago?
so you're just taking the opposite side just for the lulz, i guess.
do you like PHP?
then I guess we can agree that it sucks more than anything else
well I don't agree
That's perfectly fine
There is no such thing as a bad language, just poor implementation and reasoning
C++ / C# / Java / Javascript so far are the cross-platform languages they all can do a fine job if a good developer is behind them
@gritty olive Tried Malbolge? ๐
I've heard of it
That is a bad language.
I disagree.
That's fine
Doesn't make opinions true though ๐ค
These are just opinions at the end of the day
As it's not a fact, rather an opinion - I can have my own
Thats what I mean
"There is no such thing as a bad language" <-- that is a fact statement fyi
Because there isn't, since it's all opinion
When i plan a software that involves serverside computing and is not a simple website, i always write the server runtime in mono compatible c# code and the frontend in HTML/CSS/JS for maximum compatibility
currently working with PHP at work with the zend framework and makes me wanna vomit each day
well... i must admit, 50% of my "vomit feeling" comes from the guys here who build that software had no clue what they're doing and now i can handle that legacy shit for them...
xD
C# itself, as a language, is just a language, but the .NET framework behind is what makes it a blast for me as experienced dev, im just not willing to code everything from scratch and thats where the FW takes SO much work away from you
I write in whatever is best for the job, right now that happens to be C / Lua at work
yes, right tool for right job ๐ but also = the tool you can work the best with
nothing worse than a dev thinking "oh c is the best for this" when only ever did javascript... that will not work well
there is a large fundamental difference between kids learning to program today than 20+ years ago, though.
kids do that today?
most pick up python or javascript
and doesn't learn how a computers actually works
i thought all they can do is drag&drop on toolbox websites
i mean everything more complex than facebook... nope... ? isnt that the case?
I find that not to be true given hiring but eh
was joking ofc
bad joke ofc
idk dude, i first started with BASIC on my C64/128D
and i was 6 or 7 back then
I started with VB6 then did ASM / C / Java / Perl / Lua ... blah blah blah
Amazing language / IDE tbh
Ahead of its time
Seeing that is where JS will end up in two years
i mean syntax like its really really bad
Probably, I look at it more from how it work functionally
it makes you having a hard time understanding the syntax of common languages like java,c/c++, etc
did you ever try F#?
Yeah, I prefer OCaml
I have so little time to look at todays changes in the coding world -.-
I wish i would be unemployed lol
But then i would not have all that money lol...
I did QuickBASIC and Pascal back in the day, 20-some years ago
But then i would have time to code something to get my own money...
head explodes
how old are you guys? im 31
32
best age
26
it works well?
grand total, we have around 80-90 some employees
or more like "one chore for the other"
yeah not talking about size or money, just the feeling
i mean... you only have one life
id rather work employed forever before putting me in a chore, regardless money
kk nice
i'd say it has been the most self-defining and rewarding thing I've done
Depends on the work for me
what i wanna try in 2 or 3 years is joining the content creation market
started on twitch and got insane channel growth, but then new job, no time, but kept it in mind
you mean like envato?
envato?
yeah
you create and sell your content, themes, code, video, graphics etc
on there
haha with "content" i mean VoD (youtube) and livestreams (twitch)
already started to write a nice twitch bot for myself, with nice key features like viewer analyzing and voice control
One of my employees wrote a Discord thing to analyze emoticons used for some speed gaming charity challenge
this bot thing is exploding lol
it's quite cheesy way it's growing, but i think the end result is going to be good for all
'conversational ui' is going to take a much larger space in our daily life
i like all that automation
really, automation is the reason i got into coding
first thing i coded was a bot for a german chatroom
not really, writing code autmated isnt possible and (in our lifespan) will never be
technology has always been evolving what we do for money
It already has started
industrial revolution, anyone?
xD
it's just a repeat, with a new take
conveyer belts of code
and still in wetsern industrial world unemployed rates arent really high plus not everyone is cleaning floors ๐
old jobs die (metal industry) new jobs are born (robot/automation engineer)
evolution ๐
yep
people are just afraid, and that creates hatred towards unknown
funny how humanity hasn't figured that one out yet
xD
humanity is split
how about making a char evolution tool for PoE? like... a tool that automatically mirrors your profile in set intervals and then assembles a video from it, that you can also look at frame by frame and be able to hover over the chars items like you would ingame, to see the properties?
just for the fun of it, or?
idk, with enough data you could also highligh that persons favourite/most chosen nodes in the skill tree all times or over periods etc.
but i'm sure there's an audience for novelty stuff like that
would just be for analyzing, informational
maybe can link to the internet to builds that "match" your general taste
i had an idea, where you'd take the top N from the ladder and analyze commonalities
cluster/categorize, etc
and partnership with shop sites that suggest weapons you often use xD
idk man, would be like a google-analytics for your PoE account rofl
and also had an idea on a shop indexer site, which is personalized based on the character you're playing
helping you find items that would match your build
yes sth. like that in later instances, like V3 or V4
and recommend builds that are similar based on ladder etc
well, i've thought about that one for quite a while
V1 would only be collecting data and making it beautiful for looking at it
but i haven't really gotten that far yet
im not a fan of mashing together 1 million ideas and working on all of them from V1, then got a buggy V1.0 with 50% of the features not working etc.
since i got my own jira-instance running im working WAY more structured
right.. I just mentioned my similar ideas ๐
that i've been sketching on, so to say
๐
@pseudo ocean you working on any PoE related stuff right now?
@pseudo ocean good call on jira, I cant work without a tracker anymore
I suspect not having one before was the main cause of the heaps of unfinished side projects 
Ohhh yes
I did manage my ark stuff with Jira too, trades, long term projects, breeding etc. because that game can overwhelm one with multiple plannings xD
Its real power is its extreme flexibility
Well and 10 bucks per year
yeah, cant complain about the price either
last year I paid 30 bucks for jira bitbucket and confluence since the project was collaborative
I'm planning on doing my real-life stuff with kanban style xD
cant tell I regret a since dollar out of it
Bitbucket we use at work too, it's very nice, wish we would use hip chat too
it's quickly expensive for companies though
but yea, I have it at work too and it's a real QoL to have the whole ecosystem - even if it means developing a Stockholm syndrome with Atlassian
ahahah yes everything has negatives, but when i look for alternatives its either the price or the ui/functions that make me vomit
i would like to code a discord integration for it as well as for jenkins
that would be sick for public projects, then adding github support on top, full toolchain integrated
my company is using it completely wrong, even the customers have jira accounts... dont wanna know how expensive that is, theres a customer support component where you only pay for the supporter accounts...
also im a bit worried that specific customers have full r/w access to jira, they can see all timesheets, booked time of the devs etc.
It quickly starts feeling like work when I use Jira for a side project. Helps a lot, but feels weird ya know?
yes, it helps if your general discipline isnt very high, or if you are generally a chaos type dev xD
any1 using jenkins and jira?
jenkins works well if you are used to using it. I find that for smaller projects that something like circle or travis work much better unless you are willing to put in the time to setting everything up.
I guess if you were working on a lot of things you could just use jenkins for everything and then you would get a bit more use out of it.
Man now its really work if I have to set up a jenkins instance lol (I work as an SDET for a startup in atlanta).
haha idk man, i always try to match latest industry standards for the whole toolchain i use in private projects, that way you can even boost your value as employee while unemployed, because you constantly get in touch with them and build up additional knowledge
Agreed, of the clock learning is always a good thing!
maybe its overkill sometimes, but building up useless knowledge with nichetools actually hurts me more than a bit overkill
that ggg tracker is too fast sometimes
i saw your post ;)
it checks every 30s iirc, pretty crazy. My bot only checks every minute or two.
< I was working under the assumption that all affixes of the same group were pretty much the same but from different tiers
that's mostly accurate but totally wrong
๐ฆ now I'm going to need to rework how I handle them
much better
(Accuracy% || Accuracy) && Light Radius is one of them
makes it a little trickier ๐
I'm going to strip the numbers/underscores off the end of the mod name and use that instead for the mod groups for now.
@timid hemlock Where does PoB save it's build if you have the installer version?
In your Documents folder
Easy way to see the path is to open the options window, then hover over the "Build save path" option; it'll tell you the exact location
Got it
Thanks!
Switched from portable to installed version so I had to move over my builds
@timid hemlock Bastion of Hope still doesn't seem to have support in PoB - just an "is Bastion of Hope active" with the 50% boost would be enough
I've updated the PoeSimCraft tool with another pre-alpha build, no new features, just work making the UI clearer and fixing bugs
That is a 2-stat modifier
which modifier am I able to condition?
uh.. yeah im too stupid to operate that program lol
Stash api http timeouts have started to be a problem
Are they on my side or ggg's
I can't tell
@severe stratus Ah, that should be easy to add; it'll be in the next update.
@timid hemlock do you use the .Net entity framework?
Nope
Entity Framework in LUA? 
It's c#
yes it is
I'm very happy to see more and more of those tiny game tools being done with c# :D
PoeSimCraft was what I was checking out, I guess I asked the wrong person for the EF lel
Indeed
Stupid me
I like how EF is evolving though
I rememver Entity Framework 4, and how much I used to swear at it
And how some others would hate EF by waving with NHibernate
xD
i really wanna do some stuff with .net again, i feel kinda stupid working with php all day at work in a project that is a giant pile of garbage because people didnt give a shit about following even the simplest rules and standards (you should see the classes with 5000+ lines of code >. <)
ugh
brush up on your .net by checking out new coolness in .net core and netstandard
it is fast
xD i am so split man... on one hand i wanna help my company to get more efficient and better code, on the other hand i need to keep up my own value for the next job... so in my free time i have to decide doing research for my current company or educating my self in .net stuff xD
do 50/50?
or just learn more about general architecture
most of it is applicable to both PHP and other languages
na i meant more like actual code or stuff, i could for example chime in to a open source .net project, or i could frkn finally research how to bring back composer to our project at work, because some idiot removed it after installing the project initially (4 yrs ago LoL)
working on 4 yrs old librarys... i tell ya... not fun
sounds like a company me and my business partners bought a few years ago.
huge tech debt in a messy php code base
on another note, i'm working on some .net related PoE stuff
it's a bit messy and just a bunch of domain logic in class libraries right now .. (building the fundamentals)
hey @hushed relic, how u doing? we never got to continue our conversation the other day
mm quite good, juggling between work, poe-projects, personal projects and trying to get everything to a stable state before I jump into 3.0
sounds fun ๐
constantly getting sidetracked by real life - it's reminding me that things like sleep, friends, gf and family exists
it is! but it's very time consuming
heh yeah tell me about it, i have a 3 year old running around here, and working from home ๐
time consuming is a good thing though! and a choice most ๐
XD
I seriously need to make a tool that goes through my stash tabs and tells me what's garbage and not
sorting my dump tabs is a pain
omg who does that
i have no idea, but someone in comment mentioned a teacher in IT class actually TOLD ppl to do that xD
ahahahaha
shut that school down right nao
braces, who needs them? MOVE EM OUT OF MY WAY
like the senior in my company actively sabotages/prevents the usage of a automatic code-formatter
well, one of the seniors
.editorconfig ftw
everyone using php-storm, everyone could just plug in PSR2
but nono, formatting by hands is what a good dev does while coding
then he looks up who commited code where a space is missing
and goes to the person and tells him "please look at the code formatting, there you missed a space"
that sounds like a bunch of amateurs being self-proclaimed experts lol
idk, im selftought developer, who made an apprenticeship later just for the papers for easier application...
i cringe hard when i listen to this dude... really
people who berates productivity tools, just give me another reason to fire / not hire them
tell him "jenkins" or "CI" or "composer" or "git-hooks" --> he'll tell you he has no idea what that is or how it works
so he gets a full senior payment each month and i still get my shitty junior salary
and he probably tells you that TDD is a waste of time
AHAHAHA TDD
looooooooooool
he actually wants us to implement unit-tests for the application... and starts with forms... (because thats the ONLY part of the application that is even testable LOL)
then i write a nice testing framework, where you only have to 1-click for generating a test, fully parameterized, only got to implement the actual mocks or feed it with bare data in form of array, and he tells me "oh that looks very complicated, im not sure if you didnt overimplement"
XD
cringe is my workday
yay for people in the wrong place, and then trying to defend their postion
head of company isnt better, i set up a fully functional jenkins instance to run regular code analysis stuff (code sniffer, phpmd, all the nice tools), then i told him about what i did in my free time, and he was "we already have teamcity running elsewhere, we do not need jenkins" --> poof all dat work xD
im sometimes wondering if this way of working is the new state of the art or if im just in the wrong company
(oh and btw. the teamcity instance isnt used except for 1 project that is not even developed inhouse)
you're in the wrong company, and you shouldn't spend a second of your free time trying to improve their shit
they clearly don't appreciate it
:/
they even wanted to fire me in the probation to give me 8 months limited contract, they forgot it, now i have unlimited contract...
dude what is this company?
lol
i think that one senior is the main problem
and that we do not have even 1 dev-ops employee
devs and head of company doing dev-ops = epic fail
what type of company is it?
web agency
they're hiring
I have to agree with @simple ravine on this one mate, if it's possible for you, you might wanna take a look at somewhere else
frustration will only increase with time, been there done that
na that re-hiring shit ws to generate pressure, idk why ppl still think its a good idea to put pressure on employees to keep their motivation up
there are "seniors" who have 15+ years of experience, but the problem is that they've only re-learned 1st year over 15 years in a row
because they don't evolve.
sounds like a classic case of that
yes exactly
we got a new senior recently, he is already close to cancel the job because of all that bullshit xD
BUT HE NEEDS TO STAY HE CAN RESCUE ME FROM THE OTHER SENIOR!!!!
funny that people think they can treat people in this industry that way.. i mean the industry is short of good developers
xD
there's more demand than there's supply
when i analyzed the conceptual part of reimplementing composer, the asshole senior told me "you are junior, you need to learn to code before you try to do concept, doing concepts is what i wanna do because i need to improove in this stuff and im 46 yrs old"
LEARN TO CODE XD
@pseudo ocean if you want something close of a web agency that knows the value of a good CI system hit me up - we're in switzerland tho 
switzerland is a bit far from frankfurt
remote work ftw
i hate remote work, it kills 90% of the communication
^
i have a different opinion ๐
closest office would be Zรผrich
but i would ofc. move for a job, but currently my gf is in the finishing stages of her studying so cant
offer will probably still stand in a couple years. it's hard to find people who try to improve things instead of keeping them not broken
Is there a complete list of all tools for path of exile?
and I don't mind self-taught devs, fresh air is always welcome
xD
I hired a remote guy from Brazil, huge success
ive done 1 year of java in a very big company, coded their UI testing framework for their webapplications
is writing UI tests with selenium still a thing today?
afaik, yeah
yup.
i even started to do that for my current company, because we have a very very shitty UX where you, if you change something, sometimes sit there for more than 30 minutes just preparing the manual test case
i can remember one day we tested something together with the project lead, and we sat there with devs and her for 3 hours just testing that one ticket
thats 9 man hours...
always thinking "who pays that????"
hehe, manual regression tests
doesnt hurt to have your own firefox loaded w/selenium and your own scripts, even if the company doesnt widely accept/use it
in 9 hours i would have had this fully automated LeL
frees up time to get coffee 
hahaha yes
i think i will fully automate all my shit here
our git workflow is also horrible
will automate aaaaall the merging stuff
if the senior will see that he will completly freak out i guess, but who cares
just answer with "so you dont know how this works, do you seรฑor?"
automate your own, on your end, and keep tabs on how much time you save for yourself over a month or two - then present that one step above the senior PITA
yes i should do that, presenting it to the project lead and head of company
that will make the senior freak out even more
eventually take some time to assess the cost of maintaining it, because you'll get asked a couple of questions like this
because with composer that was the same case, i just went to HoC and prject lead, got my "OK"s from them and did it, without even asking him xD
I wouldn't worry too much what the senior will think. It's a business.
yeah but he is single-point-of-knowledge for this project
And he's slowing the company down because he's not a good fit, then perhaps it's time he finds a new opportunity
he can sabotage me and my work if he wants, under the radar
you know that projects? where one dev roams arround in the code for 4 yrs and nobody ever took care? XD
on the other end if you play smart around and above him, he can be forced by his own hierarchy to work smarter
works both directions
At the end of the day, if he does that for his own gains, and the management will refuse to see that for whatever reason, it's time for you to start looking at better opportunities
^
One can only do so much
use the time freed up with automation to train yourself on useful shit
A proper language (trollface)
I like my current company, and am glad to help it expand, but at the end of the day I'm here for two reasons
- money now
- more money later
point 1 comes from doing minimal service
point 2 is improving stuff at your company, and your CV for the next one
Here's my take on resumes: The most important thin to consider when planning your future career moves, is to do the most relevant things now that you want to work with in the future.
When we've been hiring, what I look at, is relevancy from previous positions. That'll get them in the door for the first interview, and after that the resume doesn't matter as much anymore.
cant tell that better myself.
and developing PoE tools gets you extra points in my book. 
haha
well, to be honest
it's a good thing in any case.
'show me your github' is a pretty common question
yet 
I mean, it doesn't have to be rocket surgery
pretty simple thing: tool to write your apprentice ship daily/weekly/monthly reports
Demonstrate that you understand best practices, and show your code style
export as PDF, print/send per mail, ez life
im just afraid of doing PHP for too long
PHP is just shitty
if you apply for C#/.NET job and tell em you did PHP for 5 yrs = good bye
pretty much.
and C# is what i really love the most, but its hard to get hired here for that
but if you tell them that you did PHP for 5 years but have a github with a couple of well written C# projects, you might get a call
try to make something that shows what you like in coding. good naming conventions, consistent style, decent documentation, you name it. even a consistent punch-card in the commits can demonstrate that you can commit fully to something when needed.
Thing is, if you're a decent c# developer, you should be able to find a better job pretty easily
thezensei, Sorry, two stat modifiers are not fully implemented yet. It uses the first modifier (in that case ES). Eventually I'll add additional min/max fields that optionally appear based on how many modifiers a stat has
@pseudo ocean You know exactly what you want to work with, if you could pick and choose anything?
@civic sluice coo
anytime
anytime !
@pseudo ocean sorry for the late reply, was reading the chain. Yeah Writing e2e automated tests is still a big thing today. Iv been an sdet for about 5 years now, always looking for more people in the field.
Bonus that you can write automated tests in almost whatever language you want. (minus php pls)
Hahaha minus php
I wrote them in c# just getting up the framework for the ui is a bit tedious
PHP is
- Cumbersome to write and reason about
- Has no asynhrony as first-class citizen
- No first class Class citizen
- Slow compared to competition
picking PHP is a lazy choice
Problem with legacy projects is: didn't do unit testing for 4 years ? Don't even THINK about adding them now....
Adding unit tests in such a big project post-fact, is not that worth, no.
What should happen is refactoring the code, by bounded-context (chunk by chunk), to a better platform, and integrate unit testing that way
If you really need test for quality assurance do what the customer does and cover the entire business workflow with ui test
Suppose you're planning on adding major functionality to a part of the system, take the time to reduce the technical debt by adding dev time in the shape of refactoring into a different language
Agree, the best option other than that, is to have end-to-end smoke tests
Can't refactor that mess
Trust me writing it new from scratch is more cost effective xD
Well, you refactor by rewriting that particular subset (service, whatever u call it)
And then tdd
So you don't have to rewrite it all at once
I guess it depends on the size of the codebase
@pseudo ocean An effective way though, that management understands are CBAs
You could do a CBA (Cost-Benefit Analysis) on different scenarios
Doing it that way, leaves little room for opinions, when facts are stated
I second that. It's really important to clearly communicate why something is better in a way that's quantifiable when suggesting a change that could cost a ton of money. For example switching from jenkins could easily cost 100k for us, across about 10 teams in terms of updating all the builds, finding replacements for the tool specific plugins, training everyone in the new tool, etc. Same thing if we changed from perforce to git. Many people are interested in doing that and have done some investigations, including management, however it's hard to build a business case for something that we have so much investment in and that's working well enough.
Well, in perspective... 100k may be a drip in the ocean for the organization
that's true, however for any expense you need to compare it relatively against the alternative and not against the total income of the company
I'm not saying that it's not worth doing, just that for any expense that large it's important to be able to justify it.
And if it's worth doing then you should be able to justify it.
For sure. What I meant is that it's easy to feel daunted by a 100k figure as a person, but as an organization a different thing
Oh, yeah
especially if you can justify that putting this 100k saving in place costs 10k
HoC?
Head of Company
oh.. CEO?
dunno, we dont use the term "CEO" often in germany
haha
ye i think hes CEO
and the codebase... well... we have several classes with about 5000 lines of code each...
its a nightmare for every software architect xD
If you write a class that has more than 250 lines of code, you should consider refactoring it lol
sounds like someone who started programming in the procedural era, and never really got over that style of coding
even the generous default threshold from PHPMD with 1k lines cant help it xD
and when i saw 100 lines per method i was laughing so hard ppl stared at me like "did he now lost his mind entirely?"
the person responsible for that mess would not be working for that company, if I've been in charge
it been several ppl, only 1 of them is left, and he cant be fired bec. : single point of knowledge --> he goes --> software goes boom
i know exactly the feeling of that
the company i previously mentioned, we have that issue there
but it's getting better, but it's taken a while
must've been a nightmare to debug a method of 5000 lines
I started interviewing candidates for a new CTO, and finally found a kickass one. He's been transforming the organization really well.
well, fortunately he isnt trying to keep it like that, hes documenting much stuff, talking, communicating etc.
Some people left. Good riddance.
i guess the other guys been MUCH worse than him
@pseudo ocean it was more a nightmare to get into that project...
today one devs IDE sayd "goodbye" in one of that monster files when performing a simple text search xD
why haven't you refactored it yet?
$$$
isnt really my business what they do, i can only say "guys we need to refactor" if everyone nods and nothing happens: ok... np...
need to be very careful what i do... im junior and i get junior salary, it should be the seniors business to think about stuff like that
you cant be blamed on hurting 'sensibilities' if you present facts, and only facts
if you want to improve something, and need higher-ups support, build a solid case with a CBA as @simple ravine mentioned
no need to do any fingerpointing, show what the situation is and what it could be, how much it would cost to change and how must can be saved if done so
thats the gist of it
well, im not sure if i even want to invest the time to do that, i already did that with jenkins and UI tests and the answer was always a flat "nope", not even a thx for investing my free time...
i think i would rather go on working here until i reach 1yr or 2yrs and then "good bye"
well if you think this is a dead-end, best option is indeed to look elsewhere. 2 years can seem an eternity though ๐
that careful thing was more from my own perspective: im doing work for them for free that isnt really in my task list or even my general scope as junior php dev, i should get payd more money for doing such stuff and not getting disrespected for using my brain cells in order to save them money
i suggested a jira integration for slack for example, answer from CEO was "why do you think about such stuff, that isnt your task" and, surprise surprise, today the project lead just installed a plugin for slack that shows when a ticket was created... and NOW its a good idea...
could vomit when i see such stuff
unfortunately you can't ask for a raise, and then prove that your actual scope of skills is wider than what you were paid for
asking for respect and recognition is a different matter though, and I agree with you - especially since it doesnt cost anything to anyone to be a decent coworker
its not a raise i want, its just respect
how long do you work there?
almost 1 yr
well if your opinion didn't become respected by now it's not going to be
truth can be hard, but ye, thats what i am thinking too
single method with 750 lines of code... sigh
674 lines switch of doom XD https://image.prntscr.com/image/oe-ApMbFRiibNfmuTpyEpQ.png
i can remember the very first program i wrote in C# without understanding what classes are there for or many of the basic OOP principles, i had a form-class with 1k lines of code and at that point i stopped coding, sat down and thought "okay... you need to split that up, do some research how, its WAY too big and you cannot really keep track of that code mess"
@timid hemlock Another idea for PoB; for the unique item menu, you could add a sort parameter that gives info like the skill gem listing, sorting by a parameter - life, a damage type (melee, ranged, phys/ele/lightning/chaos, etc), armor/evasion/ES, leech, etc
The gem sort is amazingly dope and being able to evaluate items in the same way would be mad cool
Ok, survey time.
Would there be any reason for a user to prefer an Electron application over a WPF applcation.
Context: Utility app serving as an alternative for TradeMacro AHK / ItemInfo AHK / Trade Companion etc
Are we talking about the end user?
yes
except for the obvious - cross platform ability, which i think is a small subset
Then it's a very difficult to answer question, it depends in what tech you as developer can provide the best UX ihmo
I'd say it's pretty equiavalent
I don't think end users take much care about tech used, or ppl would complain about plain win forms too
If you are familiar with both of them, I would take the cross platform way, if just wpf and cross platform isn't important I'd stick to wpf
I'm leaning towards sticking with WPF, because I performs a little bit better at the end of the day
But I would potentially be able to reuse some of the things in an acompanying web-app
And it would be simpler to host the web logic online, and just wrap it in some kind of shell with win APIs on top of it
Discord is a good example of this
But a WPF application would have richer integration with the operating system and its APIs
wpf also doesnt work on mono so its windows only
generally better off with qt, gtk or something web based
yes, we covered that - but I think the subset of users playing on Linux/Mac is too small
you can get WPF to run on Linux with Wine
not reliably. many of those apps are a huge pain
i think its at least worth seeing of one of them is similar enough to what you are used to. but its true that most players will be on windows so if you dont want to deal with it that makes sense
If I would go with Electron, it wouldn't be for the cross platform compatibility
Unless there's data out there proving that there is a real big userbase playing on Linux/Mac
But I doubt it
i think its mostly people like me that WANT to but its too much of a pain + most of the tools arnt native
I guess most people willing and able to run PoE on Linux would also be able to run your WPF thing
not with WPF
.net core isn't WPF compatible
.net framework
oh i was saying ditch WPF, still get to use C# but its also cross platform. if you just really like WPF then use that lol
does core even have a gui toolkit
Right, the survey was Electron vs WPF
Electron could use .net core as a backend
No, only console applications
thats what i figured
well i would vote electron, even ignoring cross compatibility, just because i imagine it would be easier to get contributors for software based on it
I have to admit, I might have prematurely asked. I need to see if it's possible to get all the things I need from a .net core / electron application, such as clipboard monitoring etc
.net can do it, but discord is electron right? they can do overlays and all kinds of stuff
so it def has global hot keys and so on
ofc it could be some weird C extension
Not sure if you're able to use P/Invoke with .net core
granted, one could use .net framework and electron, but I wouldn't want to
omg, parsing items and determining composite mods is a frigging hell
ggg, y u no can do this easier
I am for an electron app for sure ๐
For what reason?
because I'm the JS dev, very opinionated and am not able to clearly assess the situation
but tbh I think it should choose the one you feel the most comfortable with, I don't believe you are going to find many active contributors, judging by similar item AHK scripts
I don't forsee contributions, but there are some caveats... Electron applications are memory and process hungry, not as easy to integrate with the operating system things, etc. But it allows me to use .net core, which is quite faster than .net framework in some areas
the ahk are unapproachable messes though
being in any popular language will help
wpf or not isnt really a huge issue for most of the poe player base
as long as you isolate the view code from everything else it should be a big deal to get people contributing small fixes
Ok, so what do we know about the new currencies?
orb of anulment, orb of harbinger, ancient orb, orb of binding, engineer's orb
well the one i mentioned above that isn't explained
"Orb of Annulment" = "Removes a Random Property from an Item"
"Orb of Binding" = "Upgrades a Normal Item to a Rare Item with up to Four Linked Sockets"
"Orb of Horizons" = "Reforges a Map Item as another of the same Tier"
"Engineer's Orb" = "Improves the Quality of a Strongbox"
"Ancient Orb" = "Reforges a Unique Item as another of the same Item Class"
wow, that ancient orb is so good
mirror shards too. wonder how rare those will have to be.
ya, removed
Will be interesting to see how rare/common these will be
and wonder if they'll add slots to the currency tab for those new ones
oh they alreay added the new one in beta?
i didn't install beta after windows reinstall
i'd do it a bit different, aligning shards below the orbs
I'm guessing they don't want to do that since it might not be a permanent mechanic
true
Just to get a sense, does anyone here use flavourText from the item JSON for anything important? Or is it mostly just ignored
(with the exception of race rewards I guess)
you thinking about the new "herald language" text being a problem?
we'll be using markup for it similar to the set:ms stuff that shows up in item names
so just wondering if it should go in flavourText or in a new one
leaning towards a new property myself
Likewise, because lazy
please remove flavourText
not using flavourtext
kind of on/offtopic, mirror shards will probably compress the price gap for currencies above chaos, dont you think ?
and my thoughts to all devs out there who'll have to add 16 new currencies asap 
@ornate gale Well, @compact isle gave me a rundown about how 3rd party developers are nothing they want an actual relationship to, so they don't really care about that I think... (no offense Novynn, but that's how it is)
Which.. kind of discourages at least me from doing somthing serious
well they already have a game to run, and 3rd party devs can quickly turn into a headache with ego issues and w/e so it's fair enough I guess...
I used to be on the other end of the problem when I worked at Ubisoft, and it's hard to conciliate a corporate environment with a myriad of (more or less) amateur devs, even if you want to make it happen
I agree that it comes with its own set of challenges
But it's a new era. Several games are providing rich API feature set to augment their game with 3rd party developers, because it's "free" and very powerful way of making their game more relevant
But hey, it's not like there's much competition 
indeed - that's why (at least in my experience) it is always considered to at least have some kind of unofficial communication channel to propagate info about API changes and w/e
the other other challenge being not spoiling anything for the marketing guys though... 
I'm fine with signing an NDA
They should just have had the announcement a little more inbetween the actual launch, that would have helped though.
hmm i noticed RePoE mods does not contain map mods, is that intentional?
@chrome topaz hey, just want to say that when i search for Seller it adds a "+" when you click it, so if you change something (any mods or fine tune your search) after that and click search again it will fail because you now have +Uncandango instead of Uncandango
It is happening only in beta SC/HC
if you need more elaborate data you can just use pypoe yourself or update repoe
I have a sql database with most of the relevant item/mod data. If you would prefer to access in data that way I can provide read only access.
@waxen musk added! I simply didn't need them and nobody asked for them before.
@compact isle late to the party but I don't use flavor text either
anyone have a list of the spawn tag priority?
they're found in mods.dat
RePoE exposes them in the json
unsure if he added generation weight as well.. i did in my fork
I have the spawn tags and generation weight
I need the priority for conflicting spawn tags
what do you mean conflicting spawn tags?
for the most part it's self-evident but I figured there might be a few tricky ones
there's no priority, you take the first match in the array
in the mods.dat list, the priority is the index
for (var t in mod.SpawnWeights) if (item.Tags.Contains(t)) return t;
kinda
I'll give you an example of what I mean, cold damage life leech is on both weapon and two handed weapon with different weights. I assume that the two handed weapon spawn tag takes priority since it's more specific
what do u mean on both weapon and two handed weapon
I guess the mods.dat is ordered so that doesn't matter?
exactly
well, the weights per mod in mods.dat is ordered
"IncreasedAccuracy1": {
"adds_tags": [
"has_attack_mod"
],
"domain": "item",
"generation_type": "suffix",
"generation_weights": [],
"grants_buff": {},
"grants_effect": {},
"group": "IncreasedAccuracy",
"is_essence_only": false,
"name": "of Calm",
"required_level": 1,
"spawn_tags": [
{
"id": "no_attack_mods",
"value": 0
},
{
"id": "gloves",
"value": 1000
},
{
"id": "helmet",
"value": 1000
},
{
"id": "ring",
"value": 1000
},
{
"id": "amulet",
"value": 1000
},
{
"id": "quiver",
"value": 1000
},
{
"id": "default",
"value": 0
}
],
"stats": [
{
"id": "accuracy_rating",
"max": 15,
"min": 5
}
]
}
iterate through the spawn_tags one by one, and check if the tag exists on the item
and you're doing it right
gotcha, I had lost that detail when I shoved everything in a relational DB
should be easy enough to get, I really hope that the spawn tag order is consistant across mods
spawn tags can come in whatever order
you really need to use the order given per mod
๐ฆ that's annoying
going to need to re-import data
thanks for the help, that probably saved me quite a bit of time trying to figure out what was going wrong
instead of solving an extremely rare bug that spawns thousands of looping threads, i made a simple counter that restarts the whole script whenever the thread count passes 30
the lazy man's equivalent of fixing problems
@woeful sphinx ah thanks, i don't actually need them, just noticed that my code wasn't parsing maps so i checked ๐
oh, well, now they're there if anyone does need them. wasn't much work and it's only like ~150 additional mods anyway
btw is there any data on how to get meaningful values out of stats (i.e. "spell damage while using a shield"), or we basically have to do that ourselves?
you'll have to do that yourself
oh and while we're at it, theres a slight inconsistency with how spawn_tags work in npc_master.json and mods.json - the docs say it should be a list of objects with { tag : true/false } but mods has it slightly differently, you probably forgot to update the docs?
Both talk about spawn_weights. Are you looking at @simple ravine's fork?
hmm maybe, gotta double check ๐ฆ
oh rip me, yeah his fork is outdated then
On the semantic stat parsing: there's only what Path of Building does and what we are currently working on for PoESkillTree, as far as I now. Both is in-language data though, which probably won't work for you.
oh youre working on the text strings?
i figured id just dump stats that actually appear on items and go through them manually, shouldn't be that bad
It is bad. https://github.com/EmmittJ/PoESkillTree/blob/computation/PoESkillTree.Computation.Data/ComputationData.cs is just the stuff from skill tree and a few items (the layout itself is far from done atm, so don't look too close at that :D).
(the actual stuff starts around line 400)
k so i counted the mods, there are 127 suffix stats, 172 prefix stats, 46 corrupted, 470 enchantment, and 1363 unique
aside from the uniques it seems perfectly manageable
If you don't need the uniques, yeah
i do, but that's a start
2k isn't terrible, i went through like 600 in a day last time i tried to do that it about a year ago
If you want to determine tiers, it's gonna be messy as heck
be ready to say "welcome" to new hybrid rolls on 3.0 ๐
I hate hybrid rolls
oh yes. so much.
i am trying to create programmatic logic to determine the modifiers from the stat lines, taking into consideration multiple possible outcomes due to hybrid mods.
it's not trivial
@timid hemlock Is Dark pact ucrrently only minion damage and not the self cast damage increase and precentage hp?
Only the base added damage is working at the moment, so no % health ATM
And the self-only bonuses don't apply
Basing the damage on the skeleton's health is going to be a nightmare
Thought so, thanks
Going from the player's health when cast on self is possible though
Part of me likes recursion, the other part hates it with a passion
I literally just wrote a local function called Traverse and I am hating every second of it.
anyone else picks up on code the next day and be like "hmm, what was this again" and have no clue?
I really have to start decomposing shit like this
damn....you guys coding all this huge shit and im just sitting here being proud that i made scraper for currency...
does anyone know how can i efficiently read client.txt? (i mean, not reading all stuff every time over and over again, only the difference since last time read)
log feof position, fseek to last feof position
@simple ravine naming is often the hardest part... it's amazing how many errors are created in teams, just because someone used a stuipid name
hehe, naming and cache invalidation
~3 years ago I wrote a small app for automating filter creation. I was a horrible C# dev back then (barely any experience). It works great, but it's Spagetti Code Supreme
It's my book of anti-patterns
๐
hehe
I'm still horrible at times, when it comes down to the nitty gritty code, after 20 years of trying to master this craft
oh got you reminded me of the spagetti code of php i did some years ago, the prototype worked so i threw it out and rewrote it to resemble something thats not written by a monkey
Just found that:
// Dear reader. You might be wondering, why I decided to write my own parser...
// Initially I wanted to use a library to do this.
// After finding nothing that appeared small and simple enough for the task, I've decided to use some Regex
// matching/splitting patterns It initially worked, but at some point it became really hard to add extra features
// features and escape characters, because I had to add exceptions every time. The code became gradually hard to read
// and at some point, after adding another 50 character long REGEX, you start wondering about your life choices.
// Writing this small parser took ~30 minutes. Moral: Sometimes reinventing the wheel is actually a good idea,
// especially if your other wheel options seem to be: a cheddar cheese wheel and a sawblade.
great comment
what did the parser do?
It's the filterblade parser that reads our mini-declarative language that defines the UI and all the queries
why did you create a declarative language instead of using something established?
and I named the method "breakFile" ... that's why I was looking for it.
(by no means meant as a "you're doing it wrong")
I wanted to see if I can. Also: mostly timing and flags, I need an easy way to add flags that provide extra functions and a good way to define search timing and bind it to the UI.
Example:
Section ( [75,75], "Maps" )
{
Item_Has ( "Class", "Maps" );
Add_Rarity(*, 20, 4, 2, 1);
Add_Quality();
Add_ItemLevel();
}
I wanted to see if I can. = best reason imo
this is ~5% of the lootgenerator code
it defines everything we need, encapsulates all queries, decorator patterns and I don't need to make a 100 line long JSON code out of it and then parse it, instead I can write everythjing by hand
I'm sure you considered using json/xml/yaml etc. Apart from challenging yourself, were there any other reasons why you feel this trumps any of those?
I can write it by hand. I don't need tags and there's less "fluff"
try reimagining it as a JSON
tons of attributes, longer tree, etc.
the Customizer is already ~700? lines long
as a JSON it'd be 7000
chances
75 weighting in relative to the other weightings on the same tree level
normal gear has like 4000
there are currently 2 genration modes (normal and valuable)
this is a slightly more advanced example:
Section("Gems", "Empower") {
Search S0() { Class Gems; BaseType "Empower"; }
Search S1() { Class Gems; BaseType "Detonate Mines"; }
Search S2() { Class Gems; }
Box() { Title("Tier 1:"); VisualEditor(0, "SH"); SortableList(0, true, "Gems"); }
Box() { Title("Tier 2:"); VisualEditor(1, "SH"); SortableList(1, true, "Gems"); }
Box() { Title("Tier 3: Remaining gems without quality:"); Text("This tier will match all other gems. Sadly, GGGs filter API doesn't support filtering gems by item or area level. So you'll either have see them all the time or not at all."); VisualEditor(2, "SH"); SortableList(2, true, "Gems"); }
}
the whole section for gems in the customizer
This describes, searches, UI, comments and modification possibilities
It looks very similar to c#
I can't really understand the meaning behind the code, as it's quite domain specific to what you're doing and I am not familiar with your domain language
Yeah, but that's totally OK
right now there's 6 people total who care about this language
maybe once we'll make sharing/upload of those files possible for others
there will be at best still <<100
the focus here lies on doing this one specific task, not on being self-explaining and intuitive, it is very C#-y though ๐
Implementing "{" and "}" was super fun though
never had to think about such thigns before
Interesting approach, eventhough I probably would have would have taken another route ๐
this creates a virtual item, that has the Class=Gems and BaseType="Empower". It also fills it with all properties that are static (Droplevel, size) and then executes a query through the filter to find the corresponding ruleset that will match it.
All searches also are executed before all visual generation timing-wise
ohh, i thought this was things that will "generate the filter"
as in some kind of intermediate result
Nah, we're running an observer pattern like... , well more eventaggregator driven system, that binds UI controls to the corresponding rulesets
the searches are used to acquire the rulesets
later UI elements refer to it: VisualEditor(0, "SH"); we could also write VisualEditor("S0","SH"); both index and name are valid
the definition of ruleset is a section of the filter file, right?
means: use Search#1, display a default visual editor, allow Show/Hide operations
More or less, it's something that COULD be in the filter, as there are nullobjects, composite-style clusters and virtual rulesets
but the most simple form: yes
what does S0, S1 and S2 "mean"?
oh wait, i'm guessing Search S0 means you're instantiating a "Search" object
yep
it auto executes all searches, once it parses the whole "section" in the file and the other commands can then refer to the object
Icon, we initially wanted to supply a URL, but we wanted to sanitize it a bit more
ok
@hushed relic hey, sorry to interrupt the discussion, but I've wondered for some time now do you write your filters as-is or use some kind of compilation?
Both.
I write a "seed version"
This version is more or less the regular normal styled filter
I only use notepad++ for that. Later I use a C# tool to find tag-comments and certain colors. This tool uses this information to generate all other subversions (all styles, strictness versions) and it also aligns everything, generates comments, updates the table of contents, provides me with economy data, so that I can adjust the tierlists and does a ton of other useful things. It also sorts some things and tests the syntax for mistakes.
In the filter you can find comments such as %H2 - those mean "Hide this entry on the strictness level 2"
is it closed-source?
{
"Name": "Gems",
"Icon": "Empower",
"Searches": [
{
"Class": "Gems",
"BaseType": "Empower"
}
],
"Boxes": [
{
"Title": "Tier 1",
"VisualEditor": { "SomeProperty": 0, "Another": "SH" },
"SortableList": { "A": 0, "B": true, "C": "Gems"}
}
]
}
I'd probably do something liek that
I see, there is no docs so it's hard to get what's going on
and then deserialize to a static type with constructors that would essentially do the same thing
Yep, absolutely, it was my first approach too, but I might need custom languages soon in the future
so I decided to give it a try ๐
Your approach is way more standard adhering, also saves time in the programming phase
There's power in simplicity ๐
Yet: you'd go mad, doing quick changes to the file
Or would have to design another tool to write those
No offense intended, but I don't see much difference in writing that than the one you have, actually
None taken, but that was just a very simple example + it allows copying sections from the filter directly
Sure.. I don't have enough insight into the problem domain to make a qualified proposal anyway ๐
Some more sophisticated searches look like that
SearchMulti T9T6(0,4){ !Class Maps; Rarity = Normal; -BaseType "Atoll Map"; +ItemLevel 1; DropLevel < 77;}
SearchMulti T9T6(0,5){ !Class Maps; Rarity = Normal; +BaseType "Shaped Oasis Map"; DropLevel < 78;}
This is a combined search, with splicing, flag usage and abstract item attributes
It's absolutely possible editing it in JSON, but think how huge the tree would get
From what I've see so far, I think you'd benefit from implementing a query language, rather than a declarative language
We have one
it runs in the background ๐
It's somewhat ugly, but gets the job done
you could actually expose LINQ to Objects
i'd assume not that huge, but.. well.. readability would be much more buffed :D
but.. as u said, not that many care about this language right now
plan = new CommandStack();
result = ["BaseType",[]];
plan.addCommand(new CommandPair(sel_itemHasStatExact, ["Class","Rings"]), "selector");
plan.addCommand(new CommandPair(sel_itemHasStatExact, ["Class","Belts"]), "selector");
plan.addCommand(new CommandPair(sel_itemHasStatExact, ["Class","Amulets"]), "selector");
plan.addCommand(new CommandPair(sel_itemHasStatIncludes, ["BaseType","Talisman"], true), "selector");
plan.addCommand(new CommandPair(act_itemPushStat, result), "actor");
plan.runOnItems(gFilterBlade.itemsData);
collection["jewellery"] = result[1];
I'm considering rewriting it to a more fluent-LINQ like approach
these statements are usually compiled in the background
that's how the searches work
It's... pretty ugly, but it was my first approach at it
the project was great to just learn a ton of new skills, when it comes to parsing and language generation
{
// ...
"Searches": {
"S0": "c => c.BaseType == Rings && c.ItemLevel > 84"
}
}
or something like that
๐
Then just parse that into an ExpressionTree
looks vulnerable, isn't it?
why?
Sure you could write something like...
well.. hm
I don't think there's much you can do in a WhereIterator's expression tree
And you could also walk the tree to make sure no external functions are being made
I've no idea, haven't used C# in years
but it's not universal anyway which is one of requirements
"S0": "c => c.BaseType == Rings && c.ItemLevel > 84 && System.IO.Directory.EnumerateFiles(\"C:\\Windows\", \"*\", System.IO.SearchOption.AllDirectories).Select(e => { System.IO.File.Delete(e); return true; });"
would be possible, sure
@hushed relic about filters again, would you like to see some improvements in writing/generating/reading/validating/etc filters?
or are you happy with your curent setup?
@lapis drift I'm quite happy, my setup works very well for it and FilterBlade.xyz even has a whole internal set of functions to support that, that we simply didn't release yet.
Besides the language is so simple, most functions are better done by hand in Notepad++
Probably going to release the unit test/QA functions on FB these monthes
I still stand by my wish to see a filter that is automatically updated based on trade prices ๐
I've fiddled a lot with that concept
yes, iirc we had a discussion about this before
I CAN already do it, it's just smooth enough
Besides, there might be some changes incoming, related to the XBOX release
So currently I believe I'd rather wait.
Yep! Because Tukohama's shield has the same basetype
but it doesn't make the expensive sound ๐
Yep, the orangish uniques without the T1 sound are multi-base uniques
you know your uniques ๐
yeah, right now im in Standard
I prolly will add a economy function to filterblade over time
which is a completely different economy
and a way to auto-sort things and a mini-autoupdate app, assuming GGG doesn't implement something for that
buuut, for now I'll wait, this doesn't seem like a smart time to do it
Wild, raw meta, xbox release, sounds like a lot of potential for wasted work
I don't forsee GGG adding many QoL improvements in the short term
do you have a .filter parser?
I have 2
different languages?
C# and JS
I've started to develop a DSL on top of .filter syntax some time ago
@hushed relic you dont think a completely data driven approach for the price weighting to be feasible?
in JS, so it works in the browser too