Per-user character profiles (gitignored, survive git pulls): - config/profiles/<name>/profile.ini overrides any params.ini key (runs, difficulty, char type, keybinds...). Priority: custom.ini > profile.ini > params.ini. Injected into _select_val and all 22 build-section merges. - Active profile selected via config/active_profile.txt (gitignored); Config.get/set_active_profile + list_profiles/list_pickit_profiles. Shared pickit profiles (git-tracked team content): - config/pickit_profiles/<set>/*.bnip - one folder per season phase, built once, shared via git. Selected per user with [general] pickit_profile=<set> in their profile. - Pickit dir priority: config/profiles/<me>/pickit/ (personal) > config/pickit_profiles/<set>/ > config/bnip/ > default.bnip. Menu integration (main.py): - startup banner shows active profile + pickit set + available lists - "end" hotkey cycles character profiles (applies on restart) Verified: fistman profile active end-to-end (general/char/build-section overrides + shared pickit set resolution + 474 expressions loaded). Co-Authored-By: Claude Fable 5 <[email protected]>
Shared pickit profiles (git-tracked)
One folder per pickit set, e.g. for season phases:
config/pickit_profiles/
season_start/ *.bnip (leveling: keep bases, gems, chipped...)
mid_season/ *.bnip
endgame/ *.bnip (GG-only filter)
Drop .bnip (or .nip) files in a folder; a .nipignore works like in
config/bnip. These folders ARE committed — build them once, everyone
gets them via git pull.
Selecting a set
Per user, in your gitignored config/profiles/<you>/profile.ini:
[general]
pickit_profile=season_start
Priority: config/profiles/<you>/pickit/ (personal set, gitignored)
config/pickit_profiles/<pickit_profile>/(shared, from this folder)config/bnip/>config/default.bnip.