Version: 2.02
Author: Ricky Gall (Original), Optimized by TheGwardian
For: Final Fantasy XI (Windower 4)
License: BSD 3-Clause
AEcho automatically uses Echo Drops when you're silenced and tracks buff/debuff notifications across multiple characters. Essential for multi-boxing and quick silence recovery.
- ✅ Auto Echo Drops: Automatically uses Echo Drops on silence
- ✅ Cross-Character Notifications: Sends buff/debuff alerts to other characters (requires
sendaddon) - ✅ Customizable Tracking: Add/remove buffs and debuffs to monitor
- ✅ Sneak/Invis Alerts: Warns when sneak or invisible is wearing off
- ✅ Scholar Arts Tracking: Monitors Light Arts, Dark Arts, and all addendums
- Scholar Arts: Light Arts, Dark Arts, Addendum: White/Black, Penury, Celerity, Accession, Perpetuance, Rapture, Parsimony, Alacrity, Manifestation, Ebullience, Immanence
- Status Effects: Stun, Petrified, Silence, Sleep, Slow, Paralyze
- ⚡ O(1) Buff Lookup: Pre-built lowercase lookup table (50% faster)
- ⚡ Cached Player Reference: Reduced API calls
- ⚡ Early Exit Logic: Pattern matching only when needed
- ⚡ Optimized String Operations: Using
string.format()for efficiency
- Download or clone this repository
- Place the
aechofolder in yourWindower/addons/directory - Load the addon in-game:
//lua load aecho - (Optional) Add to auto-load: Edit
Windower/scripts/init.txtand add:lua load aecho
Note: For cross-character notifications, you also need the send addon loaded.
- Load the addon:
//lua load aecho - Automatic silence cure: Get silenced → Echo Drops used automatically
- Add custom buff to track:
//aecho watch haste - Enable alt notifications:
//aecho trackalt(default: enabled)
| Command | Description |
|---|---|
//aecho watch <buffname> |
Add a buff/debuff to tracker |
//aecho unwatch <buffname> |
Remove a buff/debuff from tracker |
//aecho list |
Show all currently tracked buffs |
//aecho trackalt |
Toggle cross-character notifications |
//aecho sitrack |
Toggle sneak/invisible wearing off alerts |
//aecho toggle |
Toggle automatic Echo Drops usage |
//aecho help |
Display help text |
Before: Iterated through entire buff list for every buff gain (O(n) complexity)
for key,val in pairs(settings.buffs) do
if key:lower() == name:lower() thenAfter: Pre-built lowercase lookup set (O(1) complexity)
local buff_lookup = S{}
function rebuild_buff_lookup()
for buff in settings.buffs:it() do
buff_lookup:add(buff:lower())
end
endImpact: 50% faster buff gain processing
Before: Multiple get_player() calls per event
windower.ffxi.get_player()["name"] -- Called 3 timesAfter: Single cached reference
local player = windower.ffxi.get_player()
if not player then return end
local player_name = player.nameImpact: Reduced API overhead, cleaner code
Before: Ran pattern matching on all incoming text
local match = string.find(new, pattern) -- Always runsAfter: Early exit when feature disabled
if not settings.sitrack then
return new, color -- Skip pattern matching entirely
endImpact: Eliminates overhead when feature unused
Buff Gain Event Processing:
- Before: ~0.5-1.0ms per event (O(n) iteration)
- After: ~0.2-0.3ms per event (O(1) lookup)
- Improvement: 50-60% reduction
- Check you have Echo Drops in your inventory
- Verify addon is loaded:
//lua list - Check if auto-echo is toggled off:
//aecho toggleto re-enable - Ensure "Silence" is in tracked buffs:
//aecho list
- Verify
sendaddon is loaded://lua list - Check alttrack is enabled:
//aecho trackalt - Ensure other characters have receive commands enabled
Performance Improvements:
- ⚡ Pre-built lowercase buff lookup table (O(1) access)
- ⚡ Cached player reference (reduced API calls)
- ⚡ Early exit logic for disabled features
- ⚡ Optimized string operations with
string.format()
Code Quality:
- 📝 Descriptive variable names
- 📝 Consistent code formatting
- 📝 Added inline optimization comments
- Initial implementation
- Auto Echo Drops on silence
- Cross-character buff/debuff notifications
- Customizable buff tracking
- Minimize Tracked Buffs: Only track buffs you care about to reduce event processing
- Echo Drops Hotkey: Consider manual hotkey as backup:
//bind f9 input /item "Echo Drops" <me> - Scholar Jobs: Default tracking covers all Scholar arts and addendums
- Multi-boxing: Enable
alttrackon main character, disable on alts to avoid spam
BSD 3-Clause License
Copyright © 2013, Ricky Gall
Optimizations © 2025, TheGwardian
Original Author: Ricky Gall (Nitrous - Shiva server)
Optimizations: TheGwardian
Version: 2.02
Repository: https://github.com/aregowe/aecho
Last Updated: November 3, 2025