Repository navigation
v0.2.0
BetterRations
v0.2.0 (2026-10-03)
Full Changelog Previous Releases
- fix: stop rewriting all macros at every login
GetMacroBody returns the stored body with a trailing newline after a
reload, so the first scan of every session saw three mismatches and
rewrote macros that had not changed. Compare without trailing
whitespace. - fix: rescan after landing from a flight path
A /reload in flight scanned while no item was usable and wrote the
empty macros, and nothing rescanned on landing. Scans are now deferred
while on a taxi, like in combat, and a scan runs a second after
PLAYER_CONTROL_GAINED, the same grace a level-up gets. - feat: healthstone then potion in one fight
When both a healthstone and a healing potion are picked, BR Eat becomes
a castsequence: first press in a fight uses the stone, second the
potion, reset when combat ends. With one combat item it stays a plain
/use. /br prints the sequence. - fix: only consumables count, not recipes
A potion recipe quotes the tooltip of the potion it makes and has Potion
in its name, so it was picked as the combat item. Judge by item class
before reading the tooltip: anything that is not a Consumable is marked
useless without parsing, which also spares most of the bag at login. - feat: potions in combat as an option
Off by default. With potions on, BR Eat uses the best healing potion in
combat when there is no healthstone, and BR Drink uses the best mana
potion. Potions are recognised by name and the "Restores X to Y" range
in the tooltip, ranked by the low end. /br now also lists the combat
item per macro, and /br potions toggles the setting. - fix: retry scans that could not read an item
A freshly crafted bandage was not picked up until the next bag event:
the scan right after crafting could not read the new item yet, and
nothing scheduled a second look. A scan that leaves an item unread now
retries after a second, up to three times. /br perf shows how many
items the last scan left unresolved. - perf: cheaper bag scans, guard uncached items
Read slots with GetContainerItemID instead of GetContainerItemInfo,
which built a table per slot (46.7 KB and 1.63 ms per scan with 34
items), and fetch counts with GetItemCount only for consumables. Cache
false for items with no use, so the pick loop and IsUsableItem only see
consumables. Hoist the pick list and the debounce callback out of the
hot paths.
Also skip items whose data the client has not loaded yet: the tooltip
would read "Retrieving item information" and the item would be cached
as useless for the session. Request the data and rescan on
ITEM_DATA_LOAD_RESULT. - feat: add /br perf with scan timing and memory
Counts scans and macro edits, times each update and measures what it
allocates, so the optimisation pass has before and after numbers.
Mirrors /bqt perf.