# Enemy Spotter
Know when the enemy is near, and tell everyone else with one key.
Built for PvP realms. Enemy Spotter alerts you when an enemy player comes into view,
and its **Spot** key targets them, casts your mark (Hunter's Mark on hunters), puts
a skull over them, and announces:
> Horde Spotted: Gankmaster - Lvl 60 Undead Rogue - Crossroads, The Barrens (49.3, 58.7) near Camp Taurajo FP
## Features
- **Alerts** with sound and on-screen text when an enemy player's nameplate appears,
or when you target or mouse over one.
- **Spot key / button**: target, mark, skull and announce in one press. Spotting the
same player again within 20 seconds sends a short update: `Gankmaster moving - now ...`
- **Ctrl+H** turns alerts on and off (bound on first login if the key is free).
- **No nuisance alerts**: automatically quiet in neutral towns (Ratchet, Booty Bay,
Gadgetzan, ...), sanctuaries, instances, battlegrounds and on flight paths. Add your
own spots with `/es quiet here`.
- **Crowd mode**: several enemies at once become one summary
(`6 Horde nearby: 3 Rogue, 2 Hunter, 1 Mage`). In enemy-faction zones you get at most
one summary every 20 seconds.
- **Louder at home**: enemies in your own faction's zones get a bigger alert.
- **Kill on sight**: `/es kos` puts your target on your KOS list (add a note:
`/es kos camps Crossroads FP`). KOS players get a big alert of their own, even in
quiet towns: `KOS: Gankmaster (60 Undead Rogue) - camps Crossroads FP`.
- **Killed by?** When you die, a popup offers the likely killer(s) for your KOS list.
- **Shared KOS** (opt-in): guildmates running Enemy Spotter share their KOS lists.
- **No double announcements**: if a groupmate or guildmate with Enemy Spotter just
announced someone, your Spot sends the short "moving" update instead.
- **Sightings log**: the last 100 enemies seen, in chat or in a window.
- **Kill order**: with two or more enemies in view, a skull, cross and moon go over the
top three threats (healers first, anyone seen healing on top), and move up when the
skull target dies. Groupmates running Enemy Spotter see the same order. Spot adds it
to the announcement: `... - Kill: Fleshy (Priest, healing), Burny (Mage), Stabby (Rogue)`.
- **Danger flag** on enemies 5+ levels above you.
- **Doesn't pile on**: if someone nearby just called the same enemy, Spot adds at most a
short "moving" line every 8 seconds instead of another full announcement.
- Per-player cooldown, optional low-level filter, announce in yell / say / group / guild.
- Minimap button and addon compartment entry showing ON / OFF / QUIET. Right-click for
settings and the sightings log.
## Setup
1. Turn on enemy nameplates (default **Ctrl+V**). Detection uses them.
2. Bind **Spot** under *Options > Keybindings > AddOns > Enemy Spotter*, or use the
on-screen button (shift-drag to move it).
3. Options are under *Options > AddOns > Enemy Spotter* (or `/es settings`); `/es`
lists every chat command.
## Limits
- Stealthed players can't be detected until they're revealed. The game doesn't send
their information to your client.
- Detection range is your nameplate range (about 40-60 yards).
- Coordinates are yours. The game doesn't reveal enemy positions to addons.
- If you have a hostile NPC targeted, Spot won't switch away from it; press Esc first.
- The skull goes on whatever you have targeted when Spot can't find an enemy player
(for example a friendly target), because the game doesn't allow conditions on marker
macros.
- Built-in quiet-town names are English; on other languages use `/es quiet here`.
- The game hides the combat log from addons, so "Killed by?" guesses: the death recap
where the client has one, otherwise enemies who had you targeted in your last 15
seconds, then your target. A stealthed killer you never saw may be missing.
- Kill-order icons are drawn by the addon, so only you and groupmates running Enemy
Spotter see them. The game doesn't let addons place real raid markers; Spot's skull is
real because it comes from your own key press, on your target.
- Talents can't be read from enemy players, so Priests, Druids, Paladins and Shamans rank
as likely healers by class. A heal you see confirms it; cat or bear form lowers a druid.
- Duplicate-announcement checks and KOS sharing only reach other Enemy Spotter users,
and addon messages are off in instances and battlegrounds.
## Commands
`/es` help - `/es on|off` - `/es quiet here|zone` - `/es unquiet here|zone` -
`/es quiet list` - `/es channel yell|say|group|guild` - `/es mark <spell>|none|default` -
`/es skull on|off` - `/es level <n>|off` - `/es crowd <n>` - `/es cooldown <sec>` -
`/es home on|off` - `/es button show|hide|lock|unlock|reset` - `/es minimap show|hide` -
`/es nameplates` - `/es test` - `/es test kos` - `/es spot` - `/es settings`
KOS: `/es kos [note]` - `/es kos <name> <note>` (with no enemy targeted, or a name you've
seen) - `/es kos remove <name>` - `/es kos list` - `/es kos share on|off` -
`/es kos ignore|unignore <player>` - `/es kos killer on|off`
Log: `/es log [n]` - `/es log window` - `/es log clear`
Kill order: `/es icons on|off` - `/es killorder on|off` - `/es priority <classes>|reset` -
`/es danger <n>|off`
## Development
- Version lives in `EnemySpotter.toc` (`## Version`); record changes in `CHANGELOG.md`.
- Tests: `py -m pip install lupa`, then `py tests/run_tests.py`.
- Release zip: `py tools/package.py` (writes `dist/EnemySpotter-<version>.zip`).
- Icon: `py tools/make_icon.py`.

