Feature Request: In-Map Inventory Triage — Identify with Scrolls of Wisdom & Drop Unwanted Items Mid-Map
Category: Feature Request
Version tested against: v0.9.4f (Premium)
Submitted by: Forum post — prepared with full technical context
Summary
Request: When the bot’s inventory reaches a configurable threshold (e.g. 80% full) while inside a map, it should pause looting, open its inventory, use Scrolls of Wisdom to identify all unidentified items, evaluate each one against pickit rules, and drop (press Alt + click to drop) items that do not match any [StashItem] or [Salvage] rule — freeing up slots to continue farming without an early portal exit.
Problem Description
Currently, in ExiledBot2, the inventory management lifecycle is entirely town/hideout-only:
-
Bot enters map → picks up items → inventory fills → stops looting → finishes clearing → portals to hideout
-
In hideout: identifies at Hooded One (free,
CTRL+click) → stashes matches → sells/salvages non-matches → re-enters map
This flow has a real, measurable cost:
-
Missed loot: Once inventory is full, the bot ignores item labels. On maps with heavy loot density (essence, delirium, ritual, breach), the inventory can fill by the 50-60% exploration mark, leaving significant value on the floor.
-
No mid-run recovery: There is no mechanism to free inventory space and continue the run at full efficiency.
-
Scroll of Wisdom underutilisation:
keep_id_scroll_numberinpickit.iniis set to maintain a stack (default 40), but those scrolls are never consumed mid-map — they sit idle while the bot stops picking things up.
Technical Context (Based on Source Investigation)
I’ve done a deep dive into the bot’s architecture to make this request as implementable as possible. Here is what’s relevant:
State Machine Architecture
The bot runs on a priority-based state machine, as evidenced in lastrun.log:
Running StateStashing with priority: STASHING (10)
Running StateIdling with priority: IDLING (0)
Running StateClicking with priority: STASHING (10)
The lastrun.log also reveals that StateStashing already handles:
-
Identifying items (via Hooded One / Doryani NPC interaction)
-
Applying IPD pickit rules post-identification
-
Routing items to stash tabs, salvage, or vendor
The groundwork for identification and rule evaluation already exists — it just runs exclusively in the hideout/town context.
Identification Precedent
The patch notes confirm identification infrastructure has been progressively built:
-
v0.3.0: “Bot identifies items at Doryani if he is nearby”
-
v0.5.0: “Bot closes all panels while identifying items at Doryani to avoid getting stuck”
-
v0.5.1b: “Bot looks for Hooded One to identify items in town else it uses id scrolls”
-
v0.9.4b: “Bot now identifies unidentified waystones before applying crafting currency”
This shows the bot already has:
-
The ability to use Scrolls of Wisdom on individual items (right-click scroll → left-click item interaction)
-
The ability to detect identified vs unidentified items in inventory (
[Identified]flag exists, confirmed byv0.1.0f: “Fixed identified item detection”) -
The ability to re-evaluate inventory items post-identification against pickit rules
Scroll of Wisdom Retrieval
The bot can already pull Scrolls of Wisdom from stash when depleted:
- v0.2.1: “Fixed Scroll of Wisdom retrieval from currency stash tab when depleted”
So even if the in-inventory scroll stack runs low mid-map, the infrastructure for managing scroll supply already exists.
keep_id_scroll_number in pickit.ini
ini
; Number of id scroll you want to keep in inventory
keep_id_scroll_number=40
This setting already controls how many scrolls the bot maintains. The proposed feature would simply use these scrolls during map runs rather than keeping them idle.
IPD Rule System — Before/After # Evaluation
The IPD pickit syntax is central to this feature. Rules use the # separator to split pre-identification from post-identification checks:
// Before #: Checked BEFORE identifying the item
// After #: Checked AFTER identifying the item
[Rarity] == “Rare” # [TotalResistances] > “50” && [StashItem] == “true”
This means the engine already knows the difference between:
-
Items that haven’t been identified yet (before
#evaluates) -
Items that have been identified and can be fully checked (after
#evaluates)
The same rule evaluation pipeline used in StateStashing could be applied mid-map, post-identification, to determine what to drop.
Existing [DropItem] Analogue — Item Dropping Already Understood
The bot already handles dropping items in specific contexts (e.g. moving currency to NPC trays, ctrl-clicking items between inventory and stash). The mechanic of dropping an item to the ground (Alt + click in PoE2) needs to be added as an explicit action, but it’s mechanically simple — it’s a two-step input the bot already handles analogues of.
Proposed Implementation
New config.ini Setting (general section)
ini
; Enable in-map inventory triage when inventory is X% full
enable_inmap_triage=false
; Trigger triage when inventory slots filled exceeds this percentage (0-100)
inmap_triage_threshold=80
; Only triage if at least this many Scrolls of Wisdom are in inventory
inmap_triage_min_scrolls=5
; After triage, only continue if at least this many free slots are recovered
inmap_triage_min_free_slots=4
New IPD Action Flag
[DropItem] == "true"
This flag, placed in the after # section of a pickit rule, tells the bot to drop the item to the ground (Alt + click) rather than stash/salvage/sell it:
// Example: Drop rare items after ID if they don't have useful mods
[Rarity] == “Rare” && [Category] == “Boots” # [base_movement_velocity_+%] < “25” && [DropItem] == “true”
If no rule matches the identified item at all (i.e. it would normally be vendored), the bot should also drop it rather than carry dead weight.
Proposed State: StateInMapTriage
Priority: INVENTORY_FULL (suggested: priority 8, below STASHING at 10 but above LOOT_PICKUP)
Trigger condition:
-
Bot is currently inside a map (not in hideout/town)
-
Inventory slot count >= inmap_triage_threshold%
-
Scrolls of Wisdom in inventory >= inmap_triage_min_scrolls
Flow:
1. Bot pauses movement/looting (existing pause mechanic)
2. Opens inventory panel (existing keybind detection: auto-detects from game.ini)
3. For each unidentified item in inventory:
a. Right-click Scroll of Wisdom
b. Left-click unidentified item
c. Re-evaluate item against after-# pickit rules
d. If item matches \[DropItem\] == "true" OR no rule matches → Alt+click item to drop
4. Close inventory panel
5. Resume looting/exploring
6. If free slots < inmap_triage_min_free_slots → trigger early portal (existing StatePortal)
Scroll Stack Handling
The existing keep_id_scroll_number setting should act as a floor — triage will not consume scrolls below this reserve. A separate inmap_triage_min_scrolls setting (default: 5) controls the minimum required to trigger triage at all, preventing triage from leaving the bot with zero scrolls.
Why This Fits the Existing Architecture
| Existing System | How It Maps to This Feature |
|---|---|
StateStashing (identify + evaluate at NPC) |
StateInMapTriage reuses same identify + IPD evaluate logic, different trigger context |
keep_id_scroll_number in pickit.ini |
Already controls scroll supply — triage consumes from this pool above the reserve floor |
[StashItem], [Salvage] IPD flags |
[DropItem] is the natural third action flag alongside these |
Before/After # IPD rule evaluation |
Already handles the identified/unidentified distinction required |
| Scroll of Wisdom retrieval from stash | Existing infrastructure ensures scroll supply is maintained |
| Priority-based state machine | New state slots naturally between LOOT_PICKUP and STASHING priorities |
| Inventory slot detection | Already used to detect when inventory is “full” (stops picking up) |
| Alt+click / item drop input | Mechanically similar to existing NPC tray interactions |
Real-World Use Case
Running T14–T16 maps (ExcelTest profile) with a broad rare gear pickit (ilvl 75+ boots, rings, amulets, gloves, body armours, helmets, quarterstaves — all unidentified). With ritual, essence, and breach active, the inventory can fill within 2–3 minutes of map entry, leaving 40–50% of the map’s loot uncollected.
With this feature:
-
Bot hits 80% inventory → pauses → IDs everything in ~15–20 seconds (10 clicks at
AI_clicks_per_second=10fromsystem.ini) -
Drops garbage rares (wrong base, wrong mods)
-
Recovers 6–12 slots
-
Continues farming the remaining 40–50% of the map at full efficiency
-
Exits the map with a full, pre-filtered inventory instead of a full inventory of mixed trash
Related/Prior Requests
- Preroll Items before Item Check and Vendor — related concept of bot doing item evaluation mid-session rather than deferring everything to town. This request is the logical in-map extension of that idea.
Configuration I’m Working With
-
Bot: ExiledBot2 v0.9.4f Premium
-
Pickit: Custom optimised_martial_artist.ipd (409 rules loaded per lastrun.log)
-
Map profile: ExcelTest.ipd (T14–T16 Rare maps)
-
keep_id_scroll_number=40(full stack maintained) -
Scroll pickup range: 60 units
Happy to test any implementation of this feature and report results. Thanks for the consideration — this bot is already incredibly capable and this would push map-farming efficiency significantly further.