BABUNI.DEV

MeleeStartAttack / Overview

MeleeStartAttack: Overview

Melee Start Attack

A minimal auto-attack companion for Vanilla World of Warcraft

Project creator: Babuni.dev
Version: 1.3.1
Client declared in manifest: World of Warcraft 1.12 / interface 11200 (the project describes 1.12.1)
Source: MeleeStartAttack.lua · MeleeStartAttack.toc
Verification: source and dated Git history reviewed October 26, 2026. No in-game tests performed here.

Melee Start Attack connects the player's intention to fight to the game's ordinary auto-attacks. If you press a configured ability as a Paladin, Warrior or Shaman against a living, attackable target, the addon can start your basic melee swing before the original ability executes—even when a spell is on cooldown or you don't have enough mana or rage. It does not cast abilities for you, select targets, analyze combat performance, or replace the original game action.

Unlike the earlier WarriorStartAttack, this version has class-specific built-in ability lists, runtime controls and a learn-the-next-ability feature that saves additional start/stop behaviors by class.

Install

Copy both committed files into the AddOns directory with this folder name:

Interface/AddOns/MeleeStartAttack/
  MeleeStartAttack.toc
  MeleeStartAttack.lua

Restart or reload the game, enable Melee Start Attack, and look for the chat message Melee Start Attack loaded. A printed load message verifies Lua execution, not successful interception of every action API.

The TOC defines SavedVariables MeleeStartAttackDB; learned abilities survive reloads/logins, but the simple on/off toggle is reset to enabled at every load.

Put WoW's ordinary Attack action (from the General spellbook tab) on any action bar. The addon scans slots 1–120, remembers an Attack action slot and uses IsCurrentAction to check whether basic swings are on. If there is no Attack action present, it uses an in-memory flag updated through combat events and its own calls.

This fallback is less precise: being in combat isn't necessarily identical to actively auto-attacking. Repeated presses are designed to avoid toggling attacks off, but that behavior has not been verified on an actual client during this audit.

Supported default ability families

Class Built-in start-attack actions
Paladin — 7 icons Seal of Righteousness, Seal of the Crusader, Seal of Light, Seal of Wisdom, Seal of Justice, Seal of Command, Judgement
Warrior — 20 icons Bloodthirst, Cleave, Demoralizing Shout, Disarm, Execute, Hamstring, Heroic Strike, Intercept, Mortal Strike, Mocking Blow, Overpower, Pummel, Rend, Revenge, Shield Bash, Slam, Sunder Armor, Taunt, Thunder Clap, Whirlwind
Shaman — 5 icons Earth Shock, Flame Shock, Frost Shock, Stormstrike, Lightning Strike (custom-ability mapping)

The implementation uses 32 class-scoped icon mappings, not unique spell identifiers. Some ability names are historical source/README labels; the game client must supply matching internal icon textures. Vanilla/custom-client icon collisions or changed textures can produce unexpected matches or omissions.

Built-in stop-attack exception: Warrior Intimidating Shout. Additional stop actions can be learned for the current class.

Commands

The primary command aliases are /meleeattack and /msa:

Command Result
/msa or /msa toggle Toggle automatic start/stop behavior
/msa on / /msa off Enable or disable automatic triggering for this session
/msa status Report whether enabled and which auto-attack detection mode is active
/msa learn or /msa learn start Learn the next recognized ability for starting auto-attack
/msa learn stop Learn the next recognized ability for stopping auto-attack
/msa list List learned abilities for your current class
/msa unlearn <spell name> Remove the first matching learned localized spell name for your class
/msa reset Remove all learned entries for your current class; built-in icons remain
/start_auto_attack Manually start swings if a living hostile/attackable target exists and attack seems off
/stop_auto_attack Manually stop swings if attack seems active

For example, type /msa learn stop and press a spell the addon can identify by an internal icon and spellbook name. It will save a class-specific entry with icon, localized spellName and action stop. The learned entry follows the ability's icon if you move it between action-bar slots. The same press that completes learning also passes through regular start/stop matching; it is not a read-only capture event.

The manual /start_auto_attack and /stop_auto_attack commands are independent of the automatic enable toggle. The current code also permits learning entries for a class beyond the three with default lists, because learned entries are keyed by whatever class token the client returns; three classes is the declared built-in coverage, not a hard runtime restriction for custom learning.

How ability recognition works

  1. Action bar: wrap UseAction and query GetActionTexture.
  2. Spellbook: wrap CastSpell and query GetSpellTexture.
  3. Macros and other addon commands: wrap CastSpellByName, find the locally named ability in the spellbook, then compare its icon.

These wrappers call the original function after checking the icon. The effect occurs before the client can reject a spell for low resources or cooldown. They do not guarantee that a spell succeeded; they do not deliberately auto-cast, queue an ability or change the target.

An icon can be whitelisted and learned at the same time. In the current source stop takes precedence over start when a texture is recognized in both lists; learning an opposite behavior does not consistently erase a built-in mapping.

Persistence and version migrations

MeleeStartAttackDB stores customAbilities by class, not separate profiles for individual characters. Different characters of the same class using one account SavedVariables table may share learned entries, even if localized names or abilities differ. Earlier version 1.1.2 stored customStartIcons; the current code migrates these to records with action start and placeholder name (legacy learned icon), then clears the legacy table. To give an old entry a usable name, use learning again on its ability.

No other preferences are saved in the source (in particular, enabled/disabled state and cached Attack-action slot are session-only).

Known limitations and next checks

The roadmap gives a reproducible target-client test matrix. Everything above describes current code, not proven gameplay performance.

Portfolio and development record

The repository began August 22, 2026 as a broader class-based alternative. On August 29 it added custom ability learning and direct cast/macro interception; on August 30 it improved attack-state detection; on August 31 it gained per-class saved start and stop choices, including migration from older data. September 18 made naming provider-neutral. October 26 brought Babuni.dev author credit and structured documentation.

View source