Add equipment slots to the companion loot screen.
Items can be equipped directly from player or companion inventory. This also allows switching between party members so you can manage all companion's inventories easily. Does not allow equipping items that would otherwise be disallowed.
Also:
Calls HOOK_UNWIELD when adding/removing equipment, meaning mods like npc armor work
Uses HOOK_CANUSE for weapon use checks
Ctrl-click to equip is not implemented since it already transfers items between the two inventories. I tried making it work only for equippable items (and otherwise transfer), but that felt awkward and random. Ctrl-click unequip is implemented.
* handle unimplemented fs_copy/fs_create/fs_find more gracefully from the script point of view
* chore: auto-format with clang-format
* moved to sfall_opcodes
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add offset tracking to --scan-unimplemented
* Add a bunch of missing opcodes
* Hardcode a list of implemented hooks to avoid filtering a long list of hooks that are already done
* Add tracking of specific offsets accessed in unsafe scripting so we can plan replacements
Sample output
```
OFFSET write_int (0x81d1 - 0x1d1 - 465):
0x5190f8 (5345528):
- ./mods/InventoryFilter.dat/scripts/gl_InvenFilter_debug.int
- ./mods/InventoryFilter.dat/scripts/release_gl_InvenFilter.int
0x59e95c (5892444):
- ./mods/InventoryFilter.dat/scripts/gl_InvenFilter_debug.int
- ./mods/InventoryFilter.dat/scripts/release_gl_InvenFilter.int
```
Then we can corrlated it with source:
```
// 0x5190F8 curr_rot
static int gInventoryWindowDudeRotation = 0;
```
* PR feedback
* Grow ability for `ce-dat-tool` to extract a list of files
This is needed for Et Tu installation, which selectively extracts files from fo1's master.dat. (It doesn't work if everything is extracted)
* cache entry list to avoid O(n) cost when extracting many files
Currently it isn't playing at all, since we're not doing renderPresent() during the animation loop.
This fixes that. Also, it optimizes the time the animation takes by starting it before the interface combat start/end animation. This saves half a second or so.
* Remove hidden items when trading with Goris
Also, fix the fix to allow looting with Goris
This adds major simplification and deduplication to inventory.cc, including the start of an "InventoryScroller" class that can manage inventory events without duplicate handling everywhere. This is needed as we add more complexity to the page.