# 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