HAVE:
SeoYeon A101a B234 (any quantity of type codes)
SeoYeon C345 (splitting a member over multiple lines is also ok)
Hyerin A101z-108 (expands to A101z A102z ...etc... A108z)
WANT:
JiWoo A234a
Any Heejin Atom Double (any quantity of tags)
type-code is [ season-letter (optional) ][ objekt-number ][ a/z (optional) ]
have/offer:
[member-name] [type-code] [type-code] etc...
[member-name] [type-code-start]-[objekt-number-end] (range expansion includes both boundaries)
want/need:
[member-name] [type-code] [type-code] etc...
[member-name] [type-code-start]-[objekt-number-end]
any [tag-name] [tag-name] etc...
SeoYeon/seoyeon or Want/WANT all work the same., and colons : are converted to spaces, eg SeoYeon: A101,C123, or ANY:Atom, Double will also work.~ is converted to hyphen - for ranges, eg A101~108 will also work. Multiple ranges in a single member line also works.SeoYeon 101 will be BB101 and Heejin 101 will be E101.any keyword, eg ANY Heejin SCO converts to any heejin special.Lip or Naky, but only because under the hood this just uses the same search function as in your inventory. Eg Naky A101Z just becomes the search terms naky atom 101z which is ok because naky is a substring of nakyoung (similarly because lip is a substring of kimlip and nothing else contains lip). This is also why it will return existing Objekts you already own in 'Keeping' same as the search in inventory.Have/Want can be in any order and can have multiple split lists, ie whenever the parser hits those keywords all the following lines get placed accordingly until it hits another keyword.except doesn't work. This will just make the parser ignore everything after it in that line but doesn't actually remove anything from previously specified ranges.If you already have stuff in Offer/Want this will ADD everything below even if it's a duplicate.