diff --git a/README.md b/README.md new file mode 100644 index 0000000..439cdb2 --- /dev/null +++ b/README.md @@ -0,0 +1,144 @@ +# Heimdall WoW Addon + +Heimdall is a comprehensive World of Warcraft addon designed to provide advanced player tracking, notification, and group management features. + +## Overview + +Heimdall is a multi-module addon that offers various functionalities to enhance player interaction and awareness in the game. It consists of several key modules, each with a specific purpose: + +### 1. Spotter Module (`Spotter.lua`) +- Tracks and reports player sightings in real-time +- Configurable notification settings: + - Detect players by faction (Alliance, Horde) + - Identify hostile players + - Mark "stinky" players (predefined list) +- Sends notifications to a specified channel when players are spotted +- Provides detailed information about spotted players: + - Name + - Race + - Faction + - Health + - Location +- Example report: + - "I see (Hostile) Atomickitty of race Blood Elf (Horde) with health 6.8M/6.8M at Orgrimmar (Valley of Strength)" + - "I see () of race () with health / at " +- Configuration: + - `enabled` - Whether the module is enabled + - `everyone` - Whether to report to everyone in the channel + - `hostile` - Whether to report hostile players (regardless of faction, ie. when a horde becomes alliance) + - `alliance` - Whether to report alliance players + - `stinky` - Whether to report only stinky players + - `notifyChannel` - The channel to report to (by name) + - `zoneOverride` - The zone to override the zone of the player to report (defaults to current zone/subzone) + - `throttleTime` - The time to throttle the reports to (in seconds) +- Configuration example: +``` +/run Heimdall_Data.config.spotter = {enabled=true,everyone=false,hostile=true,alliance=true,stinky=true,notifyChannel="Agent",zoneOverride=nil,throttleTime=10} +``` + +### 2. Whoer Module (`Whoer.lua`) +- Advanced player tracking and logging system +- Periodically performs WHO queries in specific zones +- Maintains a persistent database of player information: + - First seen + - Last seen + - Seen count + - Zone history +- Sends notifications when: + - New players are detected + - Players change zones + - Players disappear from tracking +- Supports whisper notifications to predefined contacts +- Plays sound alerts for "stinky" players +- Example report: + - Player appeared: + - "Любящаядева of class Mage, race Human (Alliance) and guild Анонимное сообщество in Valley of Trials, first seen: 2024-12-27T15:54:38, last seen: never, times seen: 0" + - " of class , race () and guild in , first seen: , last seen: , times seen: " + - Player changed zone: + - "Thekinglord of class Paladin (Human - Alliance) and guild Caminantes Nocturnos R moved to Durotar" + - " of class () and guild moved to " + - Player disappeared: + - "Thekinglord of class Paladin and guild Caminantes Nocturnos R left Valley of Trials" + - " of class and guild left " +- Configuration: + - `enabled` - Whether the module is enabled + - `notifyChannel` - The channel to report to (by name) + - `ttl` - The time to live for a player (in seconds) + - `doWhisper` - Whether to whisper to predefined contacts + - `zoneNotifyFor` - Whether to notify for players in specific zones +- Configuration example: +``` +/run Heimdall_Data.config.who = {enabled=true,notifyChannel="Agent",ttl=20,doWhisper=true,zoneNotifyFor={["Orgrimmar"]=true,["Thunder Bluff"]=true,["Undercity"]=true,["Durotar"]=true,["Echo Isles"]=true,["Valley of Trials"]=true}} +``` + +### 3. Messenger Module (`Messenger.lua`) +- Centralized message queuing and sending system +- Manages message delivery across different chat channels +- Handles channel joining and message routing +- Provides a reliable messaging infrastructure for other modules +- Configuration: + - `enabled` - Whether the module is enabled +- Configuration example: +``` +/run Heimdall_Data.config.messenger = {enabled=true} +``` + +### 4. Inviter Module (`Inviter.lua`) +- Automated group invitation system +- Listens to a specific channel for invitation requests +- Supports a configurable keyword for invitations +- Automatically promotes channel members to assistants in raid groups +- Configuration: + - `enabled` - Whether the module is enabled + - `keyword` - The keyword to listen for + - `updateInterval` - The interval to update the list of channel members (in seconds) + - `listeningChannel` - The channel to listen for invitations +- Configuration example: +``` +/run Heimdall_Data.config.inviter = {enabled=true,keyword="+",updateInterval=10,listeningChannel="Agent"} +``` + +### 5. Death Reporter Module (`DeathReporter.lua`) +- Tracks and reports player deaths in combat +- Captures detailed death information: + - Killer + - Victim + - Killing spell + - Location +- Implements throttling to prevent spam +- Handles duel detection to avoid reporting duel-related deaths +- Sends notifications to a specified channel and optional whisper contacts +- Example report: +- Configuration: + - `enabled` - Whether the module is enabled + - `notifyChannel` - The channel to report to (by name) + - `doWhisper` - Whether to whisper to predefined contacts +- Example report: + - "Euotuie killed Wild Mature Swine with Demon's Bite in Durotar (The Dranosh'ar Blockade)" + - " killed with in ()" +- Configuration example: +``` +/run Heimdall_Data.config.deathReporter = {enabled=true,notifyChannel="Agent",doWhisper=true} +``` + +### 6. Core Module (`Heimdall.lua`) +- Initializes and configures all other modules +- Manages global configuration and data persistence +- Provides utility functions for: + - UTF-8 string handling + - String padding + - Data retrieval with defaults + +## Stinky Players + +The addon maintains a list of "stinky" players - users of interest that trigger special notifications and tracking. + +## Slash Commands + +- `/has [PlayerName]`: Toggle a player's "stinky" status + + +## Installation +1. Download the [addon](https://git.site.quack-lab.dev/dave/wow-Heimdall/media/branch/master/Heimdall.zip) +2. Extract the addon to your World of Warcraft `Interface/AddOns` directory +3. Ensure the addon is enabled in the character selection screen