promotional bannermobile promotional banner

Combat Mode - Action Combat

Combat Mode brings modern action-game controls to World of Warcraft, replacing traditional tab-targeting with intuitive aiming, more engaging controls, and immersive combat.
Back to Files

CombatMode-4.3.3

File nameCombatMode-4.3.3.zip
Uploader
sampconradsampconrad
Uploaded
Aug 21, 2026
Downloads
895
Size
693.2 KB
Flavors
Retail
File ID
8696830
Type
R
Release
Supported game versions
  • 12.1.0

What's new

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/2.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [4.3.3] - 2026-08-20

### Fixed

- Fixed issue where upgrading items would cause a Lua error due to `StaticPopup_Show` hook + dismiss loop.

## [4.3.2] - 2026-08-20

### Fixed

- Experimental camera features popup now reliably suppressed on every login/reload. Replaced `UIParent:UnregisterEvent` with a `StaticPopup_Show` hook so the popup is intercepted before it can appear — works regardless of addon load timing.
- Camera no longer jumps or zooms erratically when "Disable with Mouse Look" toggles mouse look on and off. Added `ConfigActionCameraMouselookDisable` which only toggles behavioral Action Camera CVars (shoulder offset, head tracking, pitch, motion sickness); preference CVars (zoom, FOV, zoom speed, turn speed) are left unchanged so zoom/fov survive mouse look toggles.

### Changed

- Sticky Targeting moved from the Action Camera tab to Reticle Targeting.
- Mouse Look Turn Speed moved from the Action Camera tab to General > Mouse Look.

## [4.3.1] - 2026-08-20

### Added

- Four new adjustable Action Camera CVars in the Action Camera options tab: Field of View (50–90°), Max Zoom Distance (15–39 yards), Zoom Scroll Speed (1–50 inc/s), and Head Tracking Strength (0–2). Each slider applies immediately and only shows when the Action Camera preset is on (disabled when DynamicCam is loaded).
- Frame name to Vignette effect: `CombatModeVignetteFrame`.
- Added Alliance's version of Traveler's Tundra Mammoth to the Unlock Mount list.

### Changed

- Camera presets now apply adjustable CVars (FOV, max zoom, scroll speed, head tracking) on top of the base Action Camera preset values at enable time.

## [4.3.0] - 2026-08-19

### Added

- Vignette Effect option under Action Camera > Additional Features: Darkens the edges of the screen to reduce visual distractions. On by default.
- Vignette Fade with Mouse Look toggle: Vignette fades out when Mouse Look is off and fades in when engaged. On by default.
- `CM.IsMouselooking()` public API: tracks Combat Mode's own intentional mouselook, distinct from Blizzard's `IsMouselooking`. Combines an internal flag with the Blizzard API so external addons starting or stopping mouselook are also handled safely.

### Changed

- Crosshair while mounted now shows an inactive dot texture instead of being hidden; the "Hide While Mounted" option was removed.
- Target Lock now always prefers your current target, falling back to the unit under the crosshair when no target exists. The "Lock Selected Target" option was removed; both the Target Lock keybind and the click-cast Toggle Focus bindings share this behavior.
- Target Lock sound cues are now always on; the sound cue toggle was removed from the options.
- Toggle Focus Any / Toggle Focus Enemy bindable actions now use the same target-first macros as the Target Lock keybind, and CM macros are refreshed on every load so existing installs pick up the updated behavior.
- Reticle Targeting in Enemies Only mode now ignores a friendly Target Lock for hostile casts, so locking a party member as focus no longer redirects your attacks; the friendly focus is still honored when Enemies Only is off.
- Default click-cast binds for Alt+Left / Alt+Right mouse now use Toggle Focus (Enemy / Any) instead of Focus Target / Clear Focus.
- Vendor Mount auto-unlock renamed to Unlock Mounts. It is now a customizable multi-select field, pre-populated with the current vendor mount list so users can add their own mounts that force a cursor unlock.
- Vignette, crosshair, animations, assisted highlight, and party radial now use `CM.IsMouselooking()` instead of the raw Blizzard API, so they only respond to Combat Mode's intentional mouselook — not right-click-drag camera turn or other addon mouselook.

### Removed

- "Hide While Mounted" crosshair option (new mounted crosshair state).
- "Target Lock Sound Cues" option (always on now).
- "Lock Selected Target" option (target-first behavior is now the default).

### Fixed

- Friendly Target Lock no longer hijacks abilities when Enemies Only is on: offensive spells skip the friendly focus and target hostile units instead.
- Experimental camera features popup no longer appears when applying Action Camera CVars — the `EXPERIMENTAL_CVAR_CONFIRMATION_NEEDED` unregister now runs before the CVar writes.

## [4.2.1] - 2026-08-12

### Added

- Target Lock marker now flashes red when the locked unit is casting, making it easier to track interrupt windows at a glance.

### Fixed

- Party Radial no longer produces "Unknown Unit" red errors when changing zones while in a party, even when the radial is not open. The fix disarms slice secure buttons on every zone transition so they cannot intercept stray clicks or binding-resolution events with stale/out-of-zone unit tokens.
- Settings CVar snapshot is no longer overwritten on every login, ensuring the Uninstall button correctly restores the user's pre-Combat Mode camera and targeting CVars.

## [4.2.0] - 2026-08-08

### Added

- In-game function-level profiler (`Core/Dev/FunctionProfiler.lua`): lightweight wrapper around `C_AddOnProfiler.MeasureCall` with per-key cumulative CPU and memory stats. Access via the Debug Mode toggle in the options panel — toggle ON to start profiling, toggle OFF to print a sorted report + CPU stats to chat.
- `CM.StartProfiling()` and `CM.StopAndReportProfiling()` public APIs for automated performance testing.

### Changed

- Debug Mode toggle now also drives profiling: on → start, off → report + reset.
- Optimised several hot paths:
  - `ShouldFreeLookBeOff` early-exit short circuit (-14% avg, -42% alloc per call).
  - `C_AssistedCombat.GetNextCastSpell` cached for 1 second (-31% alloc per assist tick).
  - Consolidated duplicate `IsMouselooking()` calls in the root OnUpdate (-19% root tick time).
  - Party Radial `TrackMousePosition` slice refresh throttled to 0.15s (-11% avg, -10% alloc per call).
  - Binding fingerprint uses a numeric hash instead of string allocation.
  - `UpdateFocusCycleWheelBindings` and `UpdateAllHealthBarGlowPulses` use local caching and batch operations.

## [4.1.6] - 2026-08-06

### Added

- Reset Mouse Look keybind to recover a macOS stuck-cursor freeze after switching windows (macOS only, PR #179, thanks Roman Kitaev).
- GitHub Sponsors button in the config panel header.

## [4.1.5] - 2026-08-05

### Added

- Scale sliders for Interaction HUD, Combat Assist, and Party Radial (0.5–1.5); each scales the full companion / radial chrome.
- Added Discord & GitHub repository links to the config panel.

### Changed

- Crosshair Size is now Scale (0.5–1.5, default 1.0); existing pixel sizes migrate to the equivalent scale.
- Added new Combat Mode theme to celebrate the release of version 4.

### Fixed

- While Target Lock is held (and the marker option is on), the center reticle stays on the locked dot even if the focus nameplate is not visible.
- Cycling Target Lock with the mouse wheel no longer briefly flashes the reactive crosshair; the locked dot stays up across focus swaps.

## [4.1.4] - 2026-08-03

### Added

- Target Lock Marker option (on by default): turn off to keep the normal reactive crosshair while locked, with no nameplate hit marker.

### Changed

- Party Radial runtime is split into focused submodules under `Core/PartyRadial/` (`PartyData` → `SecureBindings` → `HealthBars` → `RoleIcons` → `Visual` → `Lifecycle` → façade; behavior unchanged).
- Shared crosshair cast-break VFX tuning and companion side offset live in `Constants/Assets.lua` (`CrosshairCastBreak`, `CrosshairCompanionOffsetX`); cast-break flash red reuses hostile reaction color.
- Party Radial Show Health Bars is on by default for new installs.
- Target Lock (keybind, mouse-wheel cycle, marker, and sound cues) is fully disabled when Reticle Targeting is off, matching the options panel.

### Fixed

- Crosshair cast feedback and Combat Assist cast swipe/break no longer error in instances when cast GUIDs are secret under taint.
- Hardened several patterns across the code base against possibly secret or tainted value comparisons.
- Target Lock no longer leaves the center reticle stuck on a static Dot when the focus nameplate never appears; the plate marker still shows if the plate arrives later.
- Party Radial no longer blanket-enables slice mouse when the feature is disabled; inactive slices also collapse hit rects out of combat to reduce free-cursor click-steal.

## [4.1.3] - 2026-08-02

### Added

- Cycle Target Lock with Mouse Wheel (on by default): while Mouse Look is on and a Target Lock is set, mouse wheel cycles nearby enemies and moves the lock. Without a lock (or with Mouse Look off), the wheel zooms the camera as usual.
- Target Lock Sound Cues (on by default): play distinct cues when a Target Lock is set, cleared, or cycled to another enemy.
- Target Lock nameplate marker: while locked, the center reticle becomes a static Dot and a hit marker (the Active texture for your selected crosshair Appearance) appears on the locked unit's nameplate health bar.

### Changed

- Combat Assist animations & appearance reworked to be more subtle/less annoying.
- Sheath Weapons with Mouse Look now waits briefly before sheathing after unlock, so rapid Mouse Look toggles (e.g. while single-pulling) no longer flash sheath/unsheath. Unsheath on lock is still immediate.
- Combat Assist and Interaction HUD runtime code are split into focused submodules under `Core/Crosshair/AssistedHighlight/` and `Core/Crosshair/InteractionHUD/` (behavior unchanged).
- Party Radial slices have been expanded to provide more information.

### Fixed

- Binding another action to an Interact key that already includes Alt (for example Alt+Mouse Button 3) no longer leaves Interact as Alt+Alt+key.
- Rapid Single-Button Assistant presses no longer spam Combat Assist cast-success press/pulse animations (repeats are coalesced while feedback is already playing).
- Click-cast binding refresh no longer loops when Blizzard's Single-Button Assistant rewrites its action slot.

## [4.1.2] - 2026-08-01

### Added

- Combat Mode is now also published on [Wago Addons](https://addons.wago.io/addons/combat-mode); GitHub releases upload to both CurseForge and Wago.

## [4.1.1] - 2026-08-01

### Fixed

- Combat Assist no longer plays its cast-success animation twice when using the Single-Button Assistant action (the assisted-action event and `UNIT_SPELLCAST_SUCCEEDED` are coalesced into one).

## [4.1.0] - 2026-07-30

### Added

- Crosshair Cast Feedback: the crosshair grows while channeling, explodes on a successful cast, and shakes on cancel or interrupt.
- Sheath Weapons with Mouse Look (on by default): unsheath when Mouse Look turns on; sheath when it turns off or Auto Cursor Unlock opens a panel. Temporary unlocks (hold, Party Radial, ground spells, OPie) keep weapons drawn.
- Redesigned Combat Assist HUD with improved animations and custom keyboard/mouse icons for Click Casting bindings.
- Redesigned Interaction HUD with Left/Right placement, fixed icon size, and opacity independent of the crosshair opacity slider.
- Redesigned Party Radial with rebuilt health bars, smooth fade in/out, and greyed role icons for dead members.

### Changed

- Combat Assist, Interaction HUD, and Party Radial options streamlined for a fixed, more controllable layout.
- Clicking a Party Radial slice now also hard-targets that party member.
- Clicking the Party Radial center close (X) clears the current target.

### Fixed

- Rebinding Mouse Look, Party Radial, or Target Lock now clears leftover Interact Alt+key chords and refreshes Target Lock overrides immediately (no reload required when stealing a key).

## [4.0.3] - 2026-07-28

### Added

- Character-specific options now show a blue © mark beside the title; hover it for a tooltip explaining they are saved per character.
- Interact Unit option (Crosshair Unit or Soft Targeted Unit) under the Interact keybind; switching units rebinds the key and keeps ALT+key on the other command to avoid Blizzard's interact warning.
- Excluded Spells and Cast at Crosshair input fields under Reticle Targeting now use a pill multi-selector: type a name or ID for suggestions from your spellbook, then pick to add it to the list.

### Changed

- Cast-at-crosshair and excluded-spell lists are stored as spell IDs. Legacy name tokens migrate when the options UI loads.

## [4.0.2] - 2026-07-27

### Added

- Uninstall button in the options sidebar: restores your pre-Combat Mode camera and targeting CVars, resets Left/Right Click to the default camera binds, disables the addon, and reloads.
- Combat Mode now snapshots your CVars before changing them, so Uninstall can restore *your* settings instead of only hard-coded Blizzard defaults.
- Changelog window now has a left-hand version list; click a version to scroll to that section.

### Changed

- Welcome popup now clarifies the difference between deleting the addon folder and and fully uninstalling.

### Removed

- `/undocm` slash command — use the Uninstall button in options instead.

## [4.0.1] - 2026-07-27

### Added

- Excluded Spells and Cast at Crosshair now accept spell IDs as well as names (including mixed lists such as `Heroic Leap, #6544`).

### Fixed

- Keybind options can no longer bind Left or Right Mouse Button, which previously could clear Camera Or Select Or Move from `BUTTON1`.

### Changed

- Clarified helper text on several options.

## [4.0.0] - 2026-07-25

### Changed

- **Breaking:** rebuilt the settings UI as a standalone, movable Combat Mode window with a sidebar layout. Open it with `/cm` or `/combatmode`, or from Escape > Options > AddOns > Combat Mode.
- **Breaking:** Crosshair can no longer be edited through Edit Mode; its settings live under the Crosshair tab in the new options window.
- Healing Radial renamed to Party Radial, with a live preview while adjusting visual settings.
- Action Camera options moved into a dedicated Action Camera section.

### Removed

- Ace3 / LibStub dependency stack in favor of native Combat Mode modules. SavedVariables (`CombatModeDB`) and slash commands are unchanged.

### Fixed

- Rapidly toggling OPie rings could leave the cursor stuck and visible while Mouse Look was active.
- Reloading could leave the cursor visible while still in the Mouse Look state after the loading screen.

## [3.3.1] - 2026-07-18

### Changed

- Improved cursor unlock performance by caching compiled custom conditions and checking open Blizzard UI panels before scanning watched frames.

## [3.3.0] - 2026-04-24

### Added

- Combat Assist spell icon suggestion on the Crosshair (Retail Assisted Combat highlight).
- Edit Mode controls for the assisted highlight widget: enable/disable, size, position (X/Y), keybind display, and keybind anchor.

## [3.2.2] - 2026-03-28

### Added

- Changelog popup on first login after updating the addon.

## [3.2.1] - 2026-03-27

### Fixed

- Cast @cursor whitelist not applying correctly.

## [3.2.0] - 2026-03-27

### Added

- Reticle Targeting CVar editor for customizing Combat Mode Reticle Targeting CVars.
- Targeting macro prelines editor for customizing injected prelines when Reticle Targeting is enabled.

## [3.1.10] - 2026-03-26

### Added

- Third-party action bar policy: when Bartender4, Dominos, or ElvUI is detected, Combat Mode forces `macroInjectionClickCastOnly=true` and locks that toggle; Blizzard default bars keep full reticle targeting macro injection.

## [3.1.9] - 2026-03-26

### Changed

- Action bar binding overrides now derive the canonical action-slot id from the binding prefix and button index instead of `MultiBar*ButtonN` frames, whose `action` attribute can be ambiguous with Bartender4, Dominos, ElvUI, and similar addons.

## [3.1.8] - 2026-03-25

### Fixed

- Reticle Targeting with ElvUI and Bartender4.

## [3.1.7] - 2026-03-24

### Fixed

- Sticky crosshair table name.

## [3.1.6] - 2026-03-24

### Added

- GitHub package release workflow.

## [3.1.5] - 2026-03-23

### Changed

- Cursor freelook centering is tied to the Crosshair being active, not Reticle Targeting.
- Crosshair reactivity no longer requires Reticle Targeting.
- Interaction HUD range check adjusted so the Crosshair and Interaction HUD can be used independently of Reticle Targeting configuration.

## [3.1.4] - 2026-03-23

### Changed

- Performance improvements.
- Split `Constants.lua` into smaller files under `/Constants`.

## [3.1.3] - 2026-03-23

### Fixed

- Interaction HUD errors from secret values in dungeons.

### Changed

- Interaction HUD and Healing Radial fonts are no longer tied to a specific client language.
- Updated LibEditMode.

## [3.1.2] - 2026-03-22

### Added

- LibEditMode in the `Libs` folder.

## [3.1.1] - 2026-03-22

### Added

- Edit Mode support: adjust the Crosshair from Blizzard’s Edit Mode.
- Interaction HUD option for the crosshair: shows interactable NPCs and objects to the right of the crosshair when enabled.

### Changed

- Crosshair vertical positioning limit removed.
- Crosshair behavior aligns more closely with config options, including more reliable cursor centering.
- Reorganized project structure into smaller, easier-to-maintain files.

### Fixed

- Reticle Targeting blacklist not excluding spells from targeting macro injection, which broke Hold To Cast and empowered spell options (e.g. Hold & Release). Excluding a spell by name on the list now restores expected behavior.

[Unreleased]: https://github.com/djsmithdev/combatmode/compare/4.3.3...HEAD
[4.3.3]: https://github.com/djsmithdev/combatmode/compare/4.3.2...4.3.3
[4.3.2]: https://github.com/djsmithdev/combatmode/compare/4.3.1...4.3.2
[4.3.1]: https://github.com/djsmithdev/combatmode/compare/4.3.0...4.3.1
[4.3.0]: https://github.com/djsmithdev/combatmode/compare/4.2.1...4.3.0
[4.2.1]: https://github.com/djsmithdev/combatmode/compare/4.2.0...4.2.1
[4.2.0]: https://github.com/djsmithdev/combatmode/compare/4.1.6...4.2.0
[4.1.6]: https://github.com/djsmithdev/combatmode/compare/4.1.5...4.1.6
[4.1.5]: https://github.com/djsmithdev/combatmode/compare/4.1.4...4.1.5
[4.1.4]: https://github.com/djsmithdev/combatmode/compare/4.1.3...4.1.4
[4.1.3]: https://github.com/djsmithdev/combatmode/compare/4.1.2...4.1.3
[4.1.2]: https://github.com/djsmithdev/combatmode/compare/4.1.1...4.1.2
[4.1.1]: https://github.com/djsmithdev/combatmode/compare/4.1.0...4.1.1
[4.1.0]: https://github.com/djsmithdev/combatmode/compare/4.0.3...4.1.0
[4.0.3]: https://github.com/djsmithdev/combatmode/compare/4.0.2...4.0.3
[4.0.2]: https://github.com/djsmithdev/combatmode/compare/4.0.1...4.0.2
[4.0.1]: https://github.com/djsmithdev/combatmode/compare/4.0.0...4.0.1
[4.0.0]: https://github.com/djsmithdev/combatmode/compare/3.3.1...4.0.0
[3.3.1]: https://github.com/djsmithdev/combatmode/compare/3.3.0...3.3.1
[3.3.0]: https://github.com/djsmithdev/combatmode/compare/3.2.2...3.3.0
[3.2.2]: https://github.com/djsmithdev/combatmode/compare/3.2.1...3.2.2
[3.2.1]: https://github.com/djsmithdev/combatmode/compare/3.2.0...3.2.1
[3.2.0]: https://github.com/djsmithdev/combatmode/compare/3.1.10...3.2.0
[3.1.10]: https://github.com/djsmithdev/combatmode/compare/3.1.9...3.1.10
[3.1.9]: https://github.com/djsmithdev/combatmode/compare/3.1.8...3.1.9
[3.1.8]: https://github.com/djsmithdev/combatmode/compare/3.1.7...3.1.8
[3.1.7]: https://github.com/djsmithdev/combatmode/compare/3.1.6...3.1.7
[3.1.6]: https://github.com/djsmithdev/combatmode/compare/3.1.5...3.1.6
[3.1.5]: https://github.com/djsmithdev/combatmode/compare/3.1.4...3.1.5
[3.1.4]: https://github.com/djsmithdev/combatmode/compare/3.1.3...3.1.4
[3.1.3]: https://github.com/djsmithdev/combatmode/compare/3.1.2...3.1.3
[3.1.2]: https://github.com/djsmithdev/combatmode/compare/3.1.1...3.1.2
[3.1.1]: https://github.com/djsmithdev/combatmode/releases/tag/3.1.1

This mod has no related projects