Help fund my AI overlords' coffee addiction so they can keep generating more plugins instead of taking over the world
☕ Support development on Ko-fi
XA and I have created some Plugins and Guides here at -> aethertek.io
https://aethertek.io/x.json
https://raw.githubusercontent.com/McVaxius/TheDumpsterFire/refs/heads/master/repo.json
FFXIV Dalamud plugin for automated proximity-based emote reactions.
- Preset System: Create multiple emote presets with custom configurations
- Distance-Based Triggers: Emotes trigger when specific players are within range
- Emote-Based Triggers: React to incoming emotes, including
COPYCATmode - Configurable Timing: Set wait times and repeat intervals per emote line
- Pulse Titles: Optional glow/color nameplate pulse tied to the triggering response
- Loop-Aware COPYCAT: Repeated looping emotes are detected so COPYCAT can fall back instead of endlessly mirroring
- Media Triggers: Use
media:,video:,audio:, orsound:commands to launch local files - DTR Bar Integration: Click to toggle on/off, shows current status and active preset
- Slash Commands: Full command-line control
- Import/Export: Share presets via base64 encoding
/hfh- Toggle config window- Right-click DTR bar entry
/hfh onor/hfh enable- Enable the plugin/hfh offor/hfh disable- Disable the plugin- Left-click DTR bar entry - Toggle on/off
/hfh preset <id>- Switch to preset by cardinality (0, 1, 2, etc.)- Use the config UI to create, delete, and edit presets
- New: Create a new preset (uses DEFAULT PRESET as template)
- Delete: Hold CTRL and click to delete selected preset (DEFAULT PRESET cannot be deleted)
- Preset List: Click to select, shows cardinality [0], [1], etc.
- Export: Copy preset to clipboard as base64
- Import: Paste base64 preset to load
- Reset Default: (DEFAULT PRESET only) Reset to factory defaults
Each line has 5 fields:
- Name: Target player name (without @server)
- Emote: Slash command to execute (e.g.,
/wave,/bow) - Wait: Seconds to wait after executing this emote
- Repeat: Seconds before this emote can trigger again
- Distance: Maximum distance (yalms) to trigger
Lines show in red if incomplete/invalid and won't be saved until properly filled.
- Every second, the plugin checks all valid emote lines in the active preset
- For each line, it checks if the target player is within distance
- If the repeat interval has elapsed since last execution, the line becomes valid
- When multiple lines are valid, one is chosen randomly
- The plugin targets the player, executes the slash command, then waits
- No other emotes execute until the wait time expires
- Uses
ICommandManager.ProcessCommand()for slash commands (learned from FrenRider) - Distance calculation via
Vector3.Distance()between player positions - Randomized execution order prevents predictable patterns
- Per-line cooldown tracking ensures repeat intervals are respected
- Global wait state prevents spam
0.0.0.1