TurboLoot - Automated INI based corpse looting, selling, banking, tributing, and destroying for EverQuest EMUs (E3Next / MacroQuest)
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 a starter INI.
| File | What It Does |
|---|---|
TurboLoot.mac |
The main macro - runs all looting and inventory management |
TurboKey.mac |
Quick-tag helper - pick up an item, run one command, and it's categorized in your INI |
TurboLoot.ini |
Your personal rulebook - tells TurboLoot what to keep, sell, bank, tribute, trash, or ignore example INI |
- Drop
TurboLoot.macandTurboKey.macinto your MQMacrosfolder (orConfigfolder - the macro checks both). - Drop
TurboLoot.iniinto the same folder. - In-game, type:
/mac TurboLoot- if it runs without errors, you're set.
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).
The INI has two sections: [Settings] and [ItemLimits].
[Settings]
; --Core--
lootRadiusFeet=50
inventoryWarnSlots=5
debug=OFF
; --Looting & Selling Rules--
lootHighValueMinPP=50
lootStackableMinPP=50
lootTribMinValue=100
sellUnlistedStackable=OFF
sellUnlistedItems=OFF
sellWildcards=OFF
bankWildcards=OFF
StopLootWhenAttacked=ON
returnToLeader=ON
; --Announcements (where messages go)--
announceDefaultTo=e3bc
announceSkipTo=gsay
announceBankSellPerItem=ON
announceLoot=ON
announceDestroy=ON
announceRunSummary=ON
autoRsayInRaid=OFF
; --Advanced--
lootNoDropPrompt=never
lootNoDropPromptReset=always| Setting | Default | What It Does |
|---|---|---|
lootRadiusFeet |
50 | How far (in feet) TurboLoot will search for corpses |
inventoryWarnSlots |
5 | Warns you when you have this many free inventory slots left |
lootHighValueMinPP |
50 | Loot non-stackables worth ≥ this many pp. 0 = disabled, 1 = loot everything |
lootStackableMinPP |
50 | Same idea but for stackable items |
sellUnlistedItems |
OFF | When selling, also sell items not in your INI (be careful with this!) |
sellUnlistedStackable |
OFF | When selling, also sell unlisted stackable items |
sellWildcards |
OFF | Auto-sell wildcard items (spell scrolls, etc.) unless marked otherwise |
bankWildcards |
ON | Auto-bank wildcard items (spell scrolls, etc.) unless marked otherwise |
StopLootWhenAttacked |
OFF | Stop looting if hostile mobs are detected nearby |
announceDefaultTo |
e3bc | Where messages go: echo (local MQ window), e3bc (MQ network), say, gsay, rsay, or t CharName |
announceSkipTo |
gsay | Where skip messages go - gsay lets your group see what was left behind |
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 |
announceBankSellPerItem |
ON | Announce each item individually during bank/sell/tribute operations |
autoRsayInRaid |
OFF | Auto-switch announcements to /rsay when in a raid |
lootNoDropPrompt |
never | No-drop behavior: prompt (ask), always (grab it), never (leave it) |
(LEGACY, not needed) followRestoreMode |
NONE | Options: FOLLOWME, CHASEME, NONE - restore follow after looting |
(LEGACY, not needed) followRestoreDriver |
AUTO | Who to follow: AUTO (group leader) or a specific character name |
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 |
Skip it completely - no announcement, no looting |
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 unload |
Full dump: bank → tribute → sell → destroy (all in one when you're in town) |
/mac turboloot report |
Preview what would be sold - no items are touched |
/mac turboloot help |
Show the 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=/squelch /mac turboloot
/turbosell=/squelch /mac turboloot sell
/turbobank=/squelch /mac turboloot bank
/turbotribute=/squelch /mac turboloot tribute
/turbounload=/squelch /mac turboloot unload
/turboreport=/squelch /mac turboloot report
/turbohelp=/squelch /mac turboloot helpNow you can just type /turboloot, /turbosell, /turboreport, etc.
Pick up an item, hit the hotkey, and it's tagged in your INI automatically.
/mac TurboKey RULE
Where RULE is one of:
/mac TurboKey KEEP/mac TurboKey SELL/mac TurboKey IGNORE/mac TurboKey BANK/mac TurboKey TRIBUTE/mac TurboKey DESTROY
What happens:
- The item on your cursor gets written into
turboloot.iniunder[ItemLimits]with that rule. - If the rule is
DESTROYorIGNORE, the item is destroyed off your cursor. - For anything else, the item goes into your inventory via
/autoinv. - If the item already had a rule, it gets overwritten and you'll see the old → new change in chat.
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.
- 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
- Run
This is the real power - TurboLoot runs automatically whenever your tank kills something.
TurboLoot.macandturboloot.iniare installed (you can verify with/mac turboLoot)
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.
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.
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 match the beginning of item names only (prefix matching).
- 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
/turboreportfirst. Before your first/turbosell, 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.)./turbounloadis 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.
