Loot filter on the options window's Beute page

Per category (Gold, Tränke, white/blue/yellow/brown/green items) one of
Löschen (loot deleted at once), Ignorieren (pickup key leaves it), Standard,
Immer anzeigen (label without the labels key). Replaces the game's
PICKUPAUTO choice; settings in [loot] of sacredK.ini. docs/loot-filter.md.
Also ignore MSYS *.stackdump files.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
khallaandClaude Opus 5.5 committed 2026-10-19 22:14:58 +02:00
1 parent ce3d46a568
commit 198c21dbfa
12 files changed
+709 -25

No files matched your search

+15
View File
@@ -343,7 +343,14 @@ constexpr uint32_t kGetAsyncKeyStateImport = 0x0088e2b0;
constexpr uint32_t kLabelsKeyCalls[] = {0x00599ebf, 0x0060f227, 0x00612015, 0x006176ec,
0x00626ffe, 0x00627299, 0x006c80b0};
// Set by mods/lootfilter.cpp around DrawObjectLabels to draw the labels of
// items shown without the key (game thread, like the polls).
bool g_labelsForced = false;
SHORT WINAPI LabelsKeyState(int) {
if (g_labelsForced) {
return static_cast<SHORT>(0x8000);
}
for (const Binding& binding : g_bindings) {
if (binding.kind == Kind::Labels) {
return binding.vk ? GetAsyncKeyState(binding.vk) : 0;
@@ -487,6 +494,14 @@ bool TypingIntoTextField() {
return FocusedTextField() != nullptr;
}
bool LabelsKeyHeld() {
return (LabelsKeyState(VK_MENU) & 0x8000) != 0;
}
void ForceLabels(bool forced) {
g_labelsForced = forced;
}
int MovementKey(Move direction) {
for (const Binding& binding : g_bindings) {
if (binding.kind == Kind::Move && binding.index == static_cast<int>(direction)) {