TurboLoot - Automated INI based corpse looting, selling, banking, tributing, destroying, collecting, distributing for EverQuest EMUs (E3Next / MacroQuest)
On this page: Download · Install · How loot chooses · INI · Commands · TurboKey / TurboGive · Workflow · Auto-loot · Multi-looter · Wildcards · Tips
For most users, the easiest way to get started is to download the latest release:
👉 https://github.com/drel-git/TurboLoot/releases/latest
This includes the latest macros and INI files:
TurboLoot.ini- minimal template (safe starting point).Example TurboLoot.ini- heavy sample with lots of items; use for ideas or diff against your own INI.
Rename or copy the template to turboloot.ini where TurboLoot expects it (Config or Macros- see Install).
| File | What It Does |
|---|---|
TurboLoot.mac |
The main macro - runs all looting and inventory management |
TurboGive.mac |
Companion macro - distributes items between characters using [GiveList] in the same INI |
TurboKey.mac |
Quick-tag helper - pick up an item, run one command, and it's categorized in your INI |
TurboLoot.ini |
Starter template- copy to Config/Macros as turboloot.ini and customize |
Example TurboLoot.ini |
Large sample- same layout with many [ItemLimits] / [GiveList] examples |
TurboGive Getting Started.md |
TurboGive quick start + full command tables |
PATCH_NOTES.md |
Release highlights, plain-English FastLootMode explanation, and TurboGive overview |
- Drop
TurboLoot.mac,TurboKey.mac, and (if you use handouts)TurboGive.macinto your MQMacrosfolder (orConfig- TurboLoot checks both for the INI path; the.macfiles usually live inMacrosper your MQ setup). - Copy
TurboLoot.ini(template) toturboloot.iniinConfig(preferred) orMacros. TurboLoot and TurboKey load../Config/turboloot.inifirst, then../Macros/turboloot.ini. (Optional: browseExample TurboLoot.inifor a filled-out reference.) - In-game, type:
/mac TurboLoot- if it runs without errors, you're set. Use/mac TurboGive helpto verify TurboGive if you installed it.
<-------------------------------------> I recommend using a good text editor like Notepad++ or VSCodium <------------------------------------->
TurboLoot checks items in this order:
- Exact item name in
[ItemLimits]- if it finds a rule for the item, it follows that rule. - Wildcard matches - spell scrolls (
SPELL:), skill-ups (SKILL:), tomes, songs are handled by wildcard settings. - Value-based rules - if the item isn't listed, it checks against your minimum platinum thresholds:
lootHighValueMinPP- loot non-stackable items worth this many pp or more (default: 50)lootStackableMinPP- loot stackable items worth this many pp or more (default: 50)
- Everything else - skipped and announced (or silently ignored, depending on your settings).
One file, several sections:
| Section | Used by | Purpose |
|---|---|---|
[Settings] |
TurboLoot | Radius, announcements, FastLootMode, sell/bank toggles, etc. |
[Wildcards] |
TurboLoot | Prefix rules for spells, skills, tomes, customs - §9 Wildcards |
[ItemLimits] |
TurboLoot, TurboKey | Per-item loot rules (SELL, BANK, …) |
[GiveList] |
TurboGive | Who receives which items / patterns - see §5 and TurboGive Getting Started.md |
[Settings]
; --Core--
lootRadiusFeet=100
inventoryWarnSlots=5
debug=OFF
logToFile=OFF
; logLevel: DEBUG, INFO, WARN, or ERROR. Controls minimum level written to file when logToFile=ON.
; DEBUG=everything, INFO=operations (default), WARN=warnings only, ERROR=errors only.
; logLevel=INFO
; --Looting & Selling Rules--
lootHighValueMinPP=50
lootStackableMinPP=50
sellUnlistedStackable=OFF
sellUnlistedItems=OFF
sellWildcards=OFF
bankWildcards=ON
StopLootWhenAttacked=OFF
returnToLeader=ON
dropLevBeforeNav=OFF
; OFF = default (fast and reliable). Set ON if you have a setup that can handle it (fastest, but can skip loot if you have a bad connection)
FastLootMode=OFF
; --Announcements--
announceDefaultTo=e3bc
announceDoneLootingTo=e3bc
announceSkipTo=gsay
announceBankSellPerItem=ON
announceLoot=ON
announceDestroy=ON
announceRunSummary=ON
autoRsayInRaid=OFF
; --Advanced--
corpseHideMode=LOOTED
lootNoDropPrompt=never
lootNoDropPromptReset=always| Setting | Default | What It Does |
|---|---|---|
lootRadiusFeet |
100 | How far (in feet) TurboLoot will search for corpses |
inventoryWarnSlots |
5 | Warns you when you have this many free inventory slots left |
debug |
OFF | Enable debug output (echo) |
logToFile |
OFF | Append to Logs/TurboLoot.mac.log when ON (see also logLevel in sample INI) |
lootHighValueMinPP |
50 | Loot non-stackables worth ≥ this many pp. 0 = disabled |
lootStackableMinPP |
50 | Same but for stackable items |
sellUnlistedStackable |
OFF | When selling, also sell unlisted stackable items |
sellUnlistedItems |
OFF | When selling, also sell items not in your INI (be careful!) |
sellWildcards |
OFF | Auto-sell wildcard items unless marked otherwise |
bankWildcards |
ON | Auto-bank wildcard items unless marked otherwise |
StopLootWhenAttacked |
OFF | Stop looting if hostile mobs are detected nearby |
returnToLeader |
ON | Return to group leader after looting |
corpseHideMode |
LOOTED | After loot: LOOTED, ALL, GROUP, SELF, or OFF - see sample INI comments |
announceDefaultTo |
e3bc | Where messages go: echo, e3bc, say, gsay, rsay, t CharName |
announceSkipTo |
gsay | Where skip messages go - gsay lets your group see what was left behind - use gsay if you use the LazBiS lua |
announceBankSellPerItem |
ON | Announce each item individually during bank/sell/tribute operations |
announceLoot |
ON | Announce when items are looted |
announceDestroy |
ON | Announce when items are destroyed |
announceRunSummary |
ON | Show a summary at the end of each loot run |
autoRsayInRaid |
OFF | Auto-switch announcements to /rsay when in a raid |
announceDoneLootingTo |
e3bc | Where DONE LOOTING messages go: echo, e3bc, say, gsay, rsay, t CharName. Solo: echo, t/tell, say, rsay; gsay / e3bc need a group. Use a space after t / tell. |
lootNoDropPrompt |
never | No-drop behavior: prompt (ask), always (grab it), never (leave it) |
lootNoDropPromptReset |
always | Whether to reset no-drop prompt setting after each run |
FastLootMode |
OFF | Default OFF for reliability. Set ON for faster, more aggressive loot timing |
This is where you tell TurboLoot exactly what to do with specific items. Add one line per item:
[ItemLimits]
Item Name=RULE| Rule | What Happens |
|---|---|
KEEP |
Always loot, never sell/bank/destroy |
5 (any number) |
Loot up to that many, then stop - alerts you when the limit is reached |
SELL |
Loot it, then sell it when you run the sell command |
BANK |
Loot it, then bank it when you run the bank command |
TRIBUTE |
Loot it, then tribute it when you run the tribute command |
DESTROY |
Loot it and destroy it immediately |
IGNORE |
Skipped on corpses (not looted). Skip lines may still go to your announce skip channel if configured. |
Note:
ALLstill works as a legacy alias forKEEP, butKEEPis the preferred keyword going forward.
Examples:
[ItemLimits]
Kunark Green Pinot Gris=5
Emerald=KEEP
Junk Item=SELL
Mystery Orb=BANK
Some Tribute Item=TRIBUTE
Useless Trash=DESTROY
Rusty Dagger=IGNOREUse /e3bct LOOTERCHARACTERNAME before any command below to have a bot run it instead of you.
| Command | What It Does |
|---|---|
/mac turboloot |
Loot mode - runs to nearby corpses and loots based on your rules |
/mac turboloot sell |
Sells all items marked SELL (must be at a vendor) |
/mac turboloot bank |
Banks all items marked BANK (must be at a banker) |
/mac turboloot tribute |
Tributes all items marked TRIBUTE (must be at a tribute master) |
/mac turboloot destroy |
Destroys items marked DESTROY (bags; main-inv slots may need moving - macro prints notices) |
/mac turboloot unload |
Full dump: bank → tribute → sell → destroy (all in one when you're in town) |
/mac turboloot sell dryrun |
Preview what would be sold (detailed; same family as report) |
/mac turboloot report |
Preview what would be sold - no items are touched |
/mac turboloot help |
Show the full command list in-game |
Instead of typing the full commands every time, set up short aliases. Open your MacroQuest.ini in your E3Next Config folder and add these under [Aliases]:
[Aliases]
/turboloot=/mac turboloot
/turbosell=/mac turboloot sell
/turbobank=/mac turboloot bank
/turbotribute=/mac turboloot tribute
/turbounload=/mac turboloot unload
/turboreport=/mac turboloot report
/turbodestroy=/mac turboloot destroy
/turbohelp=/mac turboloot help
/tg=/mac turbogiveNow you can just type /turboloot, /turbosell, /turboreport, etc.
Instead of manually editing your INI, pick up an item and run:
/mac TurboKey RULE
| Rule | Written to [ItemLimits] |
What happens to the cursor item |
|---|---|---|
KEEP |
Yes | /autoinv |
SELL |
Yes | /autoinv |
BANK |
Yes | /autoinv |
TRIBUTE |
Yes | /autoinv |
IGNORE |
Yes | /destroy (confirmation if the game asks) |
SKIP |
Stored as skip-like rule; TurboLoot treats like IGNORE for loot | /destroy (same as ignore for the item on cursor) |
DESTROY |
Yes | /destroy (confirmation if the game asks) |
Example: /mac TurboKey SELL - adds the cursor item as SELL and puts it in your bags.
Overwrite: If that item name already had a rule, it’s replaced; chat shows old → new.
TurboGive uses the same turboloot.ini and writes [GiveList] (who gets what). It does not replace TurboLoot on corpses - it’s for moving loot to the right characters after the fact.
| Do this | Command |
|---|---|
| Full in-repo guide | TurboGive Getting Started.md |
| Every command | /mac TurboGive help |
| Add cursor item for target character | /mac TurboGive add |
| Distribute to group (coordinated) | /mac TurboGive |
| Collect from group | /mac TurboGive collect |
Patterns: Only in [GiveList] lines like _prefix1=Char:Spell:* - Text*, *Text, *Text* - not in [Wildcards] (loot prefix-only). Details in TurboGive Getting Started.md
Example: You loot a "Cracked Staff" and want to sell them from now on:
- Pick it up (it's on your cursor)
- Type
/mac TurboKey SELL - Done - next time TurboLoot sees a Cracked Staff, it marks it for selling and will auto sell when you /mac turboloot sell or /mac turboloot unload.
- Kill mobs → Run
/turboloot(or set up auto-looting below) - While grinding, use
/mac TurboKey RULEto categorize new items as you see them - Before selling for the first time, run
/turboreportto preview what would be sold - When bags are full, head to town:
- Run
/turbounloadnear a banker, tribute master, and vendor to handle everything at once - Or run the individual commands (
/turbobank,/turbotribute,/turbosell) one at a time (note: remember to set up Aliases in your MacroQuest.ini and hotkeys for ease of use)
- Run
Set up TurboLoot to run automatically after kills
TurboLoot.macandturboloot.iniare installed (you can verify with/mac turboLoot)- TurboLoot loads
../Config/turboloot.inifirst, otherwise../Macros/turboloot.ini. Debug/log lines show which file was used- edit that copy when changing settings (includingannounceDoneLootingTo).
Paste these into your tank's character INI:
Under [EventRegMatches]:
Tloot=slainUnder [Events]:
Tloot=/timed 10 /if (!${Spawn[npc radius 50].Aggressive} && ${Turbo} && ${SpawnCount[npccorpse radius 50]}) /e3bct YOUR_LOOTER_NAME /mac turboLootReplace
YOUR_LOOTER_NAMEwith the character name of whoever should do the looting. Change the number after radius to whatever works for you.
How it works: When the game says something was "slain," the tank waits 1 second, checks that no aggressive mobs are within 50 units, checks that the Turbo toggle is on, checks that there's a corpse nearby, and then tells the looter character to run TurboLoot.
If you want auto-loot on by default when you load E3Next, add this to your tank's INI:
Under [Startup Commands]:
Command=/e3varset Turbo TrueYou need a way to flip auto-looting on and off. Choose one of these methods:
If you use Button Master, create a button with:
Button Label (enable "Evaluate Label"):
return 'Auto: ' .. (tostring(mq.TLO.MQ2Mono.Query('e3, Turbo')()) == 'true' and "Loot ON" or "Loot OFF")Button Body:
/docommand ${If[${Bool[${MQ2Mono.Query[e3,Turbo]}]},/e3bcaa /e3varset Turbo false,/e3bcaa /e3varset Turbo true]}
This gives you a single button that shows "Auto: Loot ON" or "Auto: Loot OFF" and toggles the state across all characters when clicked.
Just make two in-game hotkeys:
Hotkey 1 - Enable Auto-Loot:
/e3varset Turbo true
Hotkey 2 - Disable Auto-Loot:
/e3varset Turbo false
Press one to turn it on, the other to turn it off. Simple.
-
Check the toggle status:
/echo ${Bool[${MQ2Mono.Query[e3,Turbo]}]}Should return
TRUEorFALSE. -
Toggle to Loot ON (via button or hotkey).
-
Kill a mob - when you see the "slain" message, the looter should automatically run TurboLoot and start grabbing items.
-
Toggle to Loot OFF - kill another mob and confirm looting does not trigger.
By default, every character shares the same turboloot.ini. That works fine if you only have one looter or if all your looters follow the same rules. But if you want multiple characters looting with different rules (e.g., your bard loots gems to sell, your mage banks tradeskill mats), you can run separate copies of the macro with their own INI files.
-
Copy the three files and rename them with a suffix:
TurboLoot.mac->TurboLoot2.macTurboKey.mac->TurboKey2.macturboloot.ini->turboloot2.ini
-
Edit
TurboLoot2.mac- find the lines that referenceturboloot.iniand change them toturboloot2.ini:../Config/turboloot.ini -> ../Config/turboloot2.ini ../Macros/turboloot.ini -> ../Macros/turboloot2.ini -
Edit
TurboKey2.mac- same thing, update the INI path toturboloot2.ini. -
Edit
turboloot2.iniwith your second looter's specific[Settings]and[ItemLimits]. -
Run it: Your second looter uses
/mac turboloot2instead of/mac turboloot, and/mac TurboKey2 RULEto tag items into their own INI.
All files live in the same Macros (or Config) folder - no need for separate MQ installations.
If you want the tank to trigger multiple looters, add a separate event for each. In your tank's E3Next INI:
Under [EventRegMatches]:
Tloot=slain
Tloot2=slainUnder [Events]:
Tloot=/timed 10 /if (!${Spawn[npc radius 50].Aggressive} && ${Turbo} && ${SpawnCount[npccorpse radius 50]}) /e3bct LOOTER_ONE /mac turboLoot
Tloot2=/timed 20 /if (!${Spawn[npc radius 50].Aggressive} && ${Turbo} && ${SpawnCount[npccorpse radius 50]}) /e3bct LOOTER_TWO /mac turboLoot2The second looter uses
/timed 20(2 seconds) so they don't both try to loot the same corpse at the exact same time. Note the second event runs/mac turboLoot2so it uses the second looter's INI and rules.
If all your looters should follow the same rules, you don't need any of this. Just use one set of files and point the auto-loot event at whichever character you want doing the looting.
TurboLoot [Wildcards] only does prefix matching (name starts with your text). The Text* / *Text / *Text* pattern style exists only in [GiveList] _prefixN=Char:pattern for TurboGive (handouts), not for corpse looting-* in a Wildcard1= value is a literal character, not “ends with” or “contains.”
The five defaults work exactly like before. To disable one, just change it to OFF:
[Wildcards]
Spell:=ON
Skill:=ON
Song:=OFF
Tome =ON
Tome of =ONUse Wildcard1= through Wildcard20=. The value is the prefix to match (the beginning of the item name):
[Wildcards]
Spell:=ON
Skill:=ON
Song:=ON
Tome =ON
Tome of =ON
Wildcard1=Rune of
Wildcard2=Distillate of
Wildcard3=Draught of This would auto-loot any item whose name starts with "Rune of", "Distillate of", or "Draught of".
Tip: Include a trailing space after your prefix to avoid false matches.
Rune of(with space) matches "Rune of Fire" but won't match "Runestone". Without the space,Rune ofwould still work but could theoretically match "Rune offering" if such an item existed.
Comment out or remove every line in [Wildcards]. TurboLoot will only loot items in your [ItemLimits] or caught by value thresholds.
| What you want | What to do |
|---|---|
| Disable a built-in wildcard | Song:=OFF |
| Add a custom wildcard | Wildcard1=Rune of |
| Remove a custom wildcard | Delete the line or comment it out with ; |
| Disable ALL wildcards | Comment out everything in [Wildcards] |
| Check what's loaded | Set debug=ON and run the macro |
| Multiple looters | Each INI (turboloot.ini, turboloot2.ini) has its own [Wildcards] section |
- Wildcards for looting match the beginning of item names only (prefix matching).
- Performance: After
[Wildcards]is loaded, TurboLoot builds a tiny first-letter index so items whose names cannot match any configured prefix skip the full wildcard walk - Matching is case-insensitive -
Spell:matches "SPELL: Gate" and "Spell: Gate". - Items explicitly listed in
[ItemLimits]always take priority over wildcard matching. If you setSpell: Gate=IGNOREin ItemLimits, it will be ignored even though it matches theSpell:wildcard. - The
bankWildcardsandsellWildcardssettings in[Settings]still control what happens to wildcard-matched items during bank/sell operations.
- Start simple. Don't fill out the whole INI upfront if you're overwhelmed. Just set your
lootHighValueMinPPthreshold and use TurboKey to categorize items as you encounter them. - Use
/mac turboloot reportfirst. Before your first/mac turboloot sellor/mac turboloot unload, run the report to preview what would be sold. Better safe than sorry. announceDefaultTo=e3bcis great for multiboxing - all your characters see loot announcements in the MQ window.announceSkipTo=gsaylets your group see what's being left on corpses, handy for anyone who wants to grab something. Also good to trigger lazbis.IGNOREis your friend for spammy items you never want to see again (Bone Chips in your 50s, etc.)./mac turboloot unloadis the town command. Park near a banker, tribute master, and vendor, then run it to handle bank -> tribute -> sell -> destroy all at once.bankWildcards=ONandsellWildcards=ONmeans spell scrolls, tomes, and skill-ups get auto banked or sold unless you've given them a different rule - great for alts.logToFile=ONappends forever until you clear/rename the log (/mqlog clearin macro context, or deleteLogs/TurboLoot.mac.log). Use only when encountering issues and send me the log for help.
