Skip to content

data(filters): stop blacklisting the Shredder Operating Manual pages - #36

Merged
icemansparks merged 1 commit into
merkerhoodfrom
data/shredder-pages-not-chapters
Aug 25, 2026
Merged

data(filters): stop blacklisting the Shredder Operating Manual pages#36
icemansparks merged 1 commit into
merkerhoodfrom
data/shredder-pages-not-chapters

Conversation

@icemansparks

@icemansparks icemansparks commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Reported: the bound chapters are on the auction house instead of the single pages. Desired end state — chapters never listed, pages listed.

What I found

z_filter_disabled_and_trash.sql blacklists NAME LIKE '%manual%'. That single pattern catches every "Shredder Operating Manual - ..." entry — the tradeable pages and the combined chapters. So the pages were never eligible in the first place; they are sitting in mod_auctionhousebot_disabled_items right now.

The rule is clearly aimed at the "Manual: Strong Anti-Venom" / "Manual of Eviscerate" teaching items. The pages are collateral.

Change

  • The filter rule becomes (NAME LIKE '%manual%' AND NAME NOT LIKE 'Shredder Operating Manual - Page%'), so a re-apply of that file no longer re-adds the pages. Editing this file is safe — it is INSERT IGNORE only, unlike mod_auctionhousebot.sql.
  • zz_2026_08_25_00_unblacklist_shredder_pages.sql deletes the rows already inserted. Idempotent, and zz_ keeps it sorted after z_filter_....

Both statements match by name, so they resolve against whatever entries your item_template holds — no hardcoded ids that could be wrong.

The chapters are deliberately untouched: they still match %manual%, stay blacklisted, and are bound on top of that.

This needs #35 to actually work

The blacklist is only consulted in InitializeBins(). Any item with a row in mod_auctionhousebot_priceOverride skips that path entirely, which is what #35 fixes. Until #35 is merged and deployed, blacklisting a chapter has no effect if it holds a price override row.

closes #31

Caveat worth knowing: items without a price override are effectively never listed

GetItemsToSell() puts all price-override items in blocks 1 and 2, and the bin-sourced items in blocks 3 and 4. Each cycle only consumes ItemsPerCycle (200) entries from the front of that list, and blocks 1+2 hold thousands. Blocks 3 and 4 are in practice never reached.

So un-blacklisting the pages makes them eligible, but they will only really show up if they also carry price override rows. Worth checking:

SELECT i.entry, i.name, i.bonding,
       (p.item IS NOT NULL) AS has_price_override,
       (d.item IS NOT NULL) AS blacklisted
FROM item_template i
LEFT JOIN mod_auctionhousebot_priceOverride p ON p.item = i.entry
LEFT JOIN mod_auctionhousebot_disabled_items d ON d.item = i.entry
WHERE i.name LIKE 'Shredder Operating Manual%'
ORDER BY i.name;

If the pages come back with has_price_override = 0, they need a backfill run (tools/price-backfill) or hand-written rows before they appear in the market.

Verification

  • The %manual% rule was read directly from z_filter_disabled_and_trash.sql:39; nothing else in that file matches these items.
  • Neither statement has been executed — no MySQL available where I prepared this. Both should be run against testcore first; the query above is also the before/after check.

z_filter_disabled_and_trash.sql excludes every item whose name contains
"manual". That rule is aimed at the "Manual: ..." / "Manual of ..." teaching
items, but it also swallows "Shredder Operating Manual - Page N", which are
tradeable world drops players are meant to buy on the auction house and combine
themselves.

The filter rule now carries an exception for the pages, and a migration removes
the rows it already inserted. The combined "Shredder Operating Manual - Chapter N"
items keep matching the rule: they are bound, cannot be traded, and must not be
listed.

Both statements are name-based, so they resolve against whatever entries the
realm's item_template actually holds instead of hardcoded ids.
@icemansparks
icemansparks merged commit af1ea91 into merkerhood Aug 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant