config: disable gem transmuting; document the live pickit set and keep/id/sell interaction

Gem conversion is off: [transmute] transmute= is now empty, which makes run_transmutes()
bail at "No gem tiers configured". That path also defeats force=True
(tools/gem_transmute.py), unlike transmute_every_x_game=0. Rejuv potion conversion is
unaffected — it runs independently via town_manager.convert_rejuv_potions().

Docs: record that the ACTIVE pickit set is config/bnip/Den gode.bnip and that it is
gitignored, so config/default.bnip edits have no effect on runs — an easy hour to lose.
Also document how should_pickup / should_id / should_keep interact, since that is what
makes a trailing catch-all rule work (pickup ignores the '#' clause, should_keep returns
on first match, so specific rules above still win).

Loot rule changes themselves live in the gitignored pickit file and are not in this commit:
  - catch-all "[Quality] == Rare # [Strength] >= 999" so every rare is picked up and
    identified, kept only if a specific rule matches, otherwise vendored for gamble gold.
    Previously only 7 rare types had any rule, so rare weapons/armour/helms/shields were
    never picked up and never sold.
  - Flawless and Perfect gem lines uncommented (all gem rules had been commented out, so
    no gems were being collected at all).

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
alexpolo1
2026-08-26 19:04:50 +02:00
co-authored by Claude Opus 5
parent 5df9ff4732
commit 97703acf85
2 changed files with 36 additions and 1 deletions
+31
View File
@@ -617,6 +617,37 @@ Convert via `screen.py`: `convert_monitor_to_screen()`, `convert_screen_to_abs()
---
## Pickit / loot rules — which file is actually live
**The active pickit set is `config/bnip/Den gode.bnip`, which is gitignored** (`.gitignore:89`
= `config/bnip/*`). `config/default.bnip` is only a fallback and is NOT in use — editing it
has no effect on runs. Resolution order is in `bnip/actions.py::_resolve_bnip_dir()`:
```
config/profiles/<active>/pickit/ > config/pickit_profiles/<general.pickit_profile>/ > config/bnip/ > default.bnip
```
Confirm which file loaded by the startup line `Loaded N nip files with M total expressions`
and re-check M after editing — if the count doesn't move, you edited the wrong file.
**How the three decisions interact** (`bnip/actions.py`):
| Function | Evaluates | Notes |
|---|---|---|
| `should_pickup` | only the part **before** `#` | so a rule with stat conditions still picks the item up unidentified |
| `should_id` | returns **False** only if a rule **without** a `#` matches | any rule carrying `#` leaves the item to be identified |
| `should_keep` | full expression, returns on the **first** match | so ordering matters: specific rules must sit above any catch-all |
That combination is what lets a catch-all work: `[Quality] == Rare # [Strength] >= 999`
placed last picks up and identifies every rare, can never itself keep one, and lets every
specific rare rule above it win. Anything falling through is vendored (`sell_junk=1`).
**Current setup (2026-08-26):** gem transmuting is disabled (`[transmute] transmute=` empty
in `params.ini` — this also defeats `force=True`, unlike `transmute_every_x_game=0`).
Flawless and Perfect gems are picked up and stashed; chipped/flawed/standard are ignored.
---
## Config System
Singleton `Config()` merges in priority order: `custom.ini` > `params.ini` > `game.ini` > `shop.ini` > `transmute.ini`. First instantiation loads; subsequent calls return the same object. User overrides go in `custom.ini` (not tracked in git).
+5 -1
View File
@@ -386,7 +386,11 @@ pick_gold=1
stash_destination=0,1,2,3
; Add these possible gems to "transmute" to transmute them:
; chipped, flawed, standard, flawless
transmute=flawless
; DISABLED 2026-08-26: gems are stashed to the GEMS tab and left alone, no cube/convert
; runs. An empty value makes run_transmutes() bail at "No gem tiers configured", which
; also holds for force=True (tools/gem_transmute.py), unlike transmute_every_x_game=0.
; Re-enable by listing tiers again, e.g. transmute=flawless
transmute=
;how often we want to run transmute routine(e.g. every 100 games)
transmute_every_x_game=60
; number of stash tabs — drives tab click geometry in inventory/common.tab_properties().