mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Document the exact-mechanic CC types
Each [cc:type] is now one 1.12 DBC mechanic, so the reference table lists the mechanic ID alongside every name and marks which names are aliases. knockout, sap, fumble, turn and interrupt were reachable but undocumented; distract and pacify were missing too. Call out that stun no longer covers Gouge and Sap, since that breaks existing macros, and give both ways back: [cc:stun/knockout/sap] or bare [cc]. The loss-of-control set was also wrong — it omitted root, knockout and sap. Split the [immune] CC types into their own list. That set is a subset of the [cc] names and the two have diverged, and bleed immunity is a damage school rather than a CC mechanic, so one combined table could not describe either accurately. Immunity-Tracking gains what the learner refuses to record: DR-generated immunes and casts with no queryable unit. Both are deliberate, so someone hitting them should find them documented rather than file a bug.
+5
-1
@@ -15,7 +15,7 @@ These always evaluate against the player. Cannot be redirected with `@unit`.
|
||||
| Conditional | Description | No | Multi | Example | Addon |
|
||||
|-------------|-------------|:--:|:-----:|---------|-------|
|
||||
| `bg` | Player is in an active battleground | ✅ | — | `[bg]` `[nobg]` | |
|
||||
| `button` | Mouse button held (1=Left, 2=Right, 3=Middle, 4/5=extra; bare = any) | ✅ | ✅ | `[button:1]` `[button:1/2]` `[nobutton]` | |
|
||||
| `button` | Button that invoked the action (1=Left, 2=Right, 3=Middle, 4/5=extra; bare = invoked by a click) | ✅ | ✅ | `[button:2]` `[button:1/2]` `[nobutton]` | |
|
||||
| `cdgcd` | Spell/item CD remaining (includes GCD) | ✅ | ✅ | `[cdgcd:Sprint>0]` | |
|
||||
| `channeled` | Player is channeling | ✅ | ✅ | `[channeled]` `[channeled:Arcane_Missiles]` | |
|
||||
| `checkcasting` | True if NOT casting (specific spell) | — | ✅ | `[checkcasting]` `[checkcasting:Frostbolt]` | |
|
||||
@@ -91,6 +91,8 @@ These always evaluate against the player. Cannot be redirected with `@unit`.
|
||||
|
||||
> **Note on `myspellhaste`:** the value is a percentage of cast-speed change, not a multiplier — `0` unhasted, positive when casts are sped up (Berserking, Mind Quickening Gem), negative while slowed (Curse of Tongues). A signed amount can't be written, so test for being slowed at all with `[myspellhaste:<0]` rather than a specific negative threshold.
|
||||
|
||||
> **Note on `button`:** this is the button that *invoked* the action, not one held down as a modifier — the same meaning it has on retail. A keybind press activates through the left-click path and so counts as button 1: `[button:1]` passes for a keybind and a left-click alike, while `[button:2] Rejuvenation; Regrowth` casts Regrowth from a keybind and Rejuvenation only from an actual right-click. Because the answer is a property of the activation rather than a live state, the icon does not change as you hold a mouse button — it shows whatever button 1 resolves to. For "hold something to change the spell", use `[mod:]`. Bare `[button]` / `[nobutton]` are an extension retail has no equivalent for: they ask whether a click drove the action at all, making `[nobutton]` the "activated by a keybind" test.
|
||||
|
||||
> **Note on `totem`:** an empty slot counts as having no time left, the same way a missing buff does for `[mybuff:X<5]`. So `[totem:Searing_Totem<5]` is true both while the totem is expiring *and* while it is absent, which makes `/cast [totem:Searing_Totem<5] Searing Totem` a complete recast macro on its own — no `[nototem]` needed. Bare `[totem]` takes the action as its argument (again like `[mybuff]`), so `/cast [nototem] Searing Totem` is the drop-if-missing form. A totem is either up or it isn't, so stack comparisons read `1` when out: `[totem:fire#1]`. Only your own totems are tracked — another shaman's are invisible — and a totem that is *killed* can read as still up for up to a quarter second, where one that expires on its timer is exact. See [[Reference Tables]] for the slots.
|
||||
|
||||
## Target Conditionals (default @target)
|
||||
@@ -99,6 +101,8 @@ These default to checking the current target. Most can be redirected with `@unit
|
||||
|
||||
> **Note on `mana`/`rage`/`energy` for other units:** these read a *specific* power slot rather than the unit's primary power, so they work regardless of form (a druid's mana in Cat Form, etc.). For units other than the player, vanilla only broadcasts the unit's *active* power, so a non-primary slot may read stale/empty — a unit with no such pool fails the check. The reliable case is reading the slot that *is* that unit's primary power (e.g. `[@target,mana:<15]` on a caster to catch it near OOM).
|
||||
|
||||
> **Note on `cc` (and `mycc`):** each CC type is one exact 1.12 DBC mechanic, so `[cc:stun]` is Stun alone — Gouge is `knockout` and Sap is `sap`, both their own types. `stun` used to cover all three; write `[cc:stun/knockout/sap]` for that, or use bare `[cc]`, which matches any loss-of-control mechanic and so covers all three already. Naming a mechanic that isn't crowd control at all (`bleed`, `disarm`, `interrupt`) still works as a plain "does this effect exist on the unit" test, it just isn't part of what bare `[cc]` looks at. See [[Reference Tables]] for every type and which ones `[immune]` accepts.
|
||||
|
||||
| Conditional | Description | No | Multi | Example | Addon |
|
||||
|-------------|-------------|:--:|:-----:|---------|-------|
|
||||
| `alive` | Unit is alive | ✅ | — | `[alive]` | |
|
||||
|
||||
+29
-1
@@ -6,7 +6,7 @@ Auto-learns NPC immunities from combat. When a spell fails with "immune", the ad
|
||||
|
||||
| Usage | What it checks |
|
||||
|-------|----------------|
|
||||
| `[noimmune]` | Auto-detects spell's school from action |
|
||||
| `[noimmune]` | Auto-detects the spell's school **and** CC mechanic from the action |
|
||||
| `[noimmune:fire]` | Fire immunity specifically |
|
||||
| `[noimmune:bleed]` | Bleed immunity specifically |
|
||||
| `[noimmune:stun]` | Stun CC immunity |
|
||||
@@ -15,10 +15,19 @@ Auto-learns NPC immunities from combat. When a spell fails with "immune", the ad
|
||||
|
||||
```lua
|
||||
/cast [noimmune] Rake -- Checks physical AND bleed
|
||||
/cast [noimmune] Gouge -- Checks knockout immunity
|
||||
/cast [noimmune:stun] Cheap Shot -- Checks stun immunity
|
||||
/cast [noimmune:shadow] Corruption -- Checks shadow immunity
|
||||
```
|
||||
|
||||
Bare `[noimmune]` on a CC spell resolves that spell's DBC mechanic, so it
|
||||
answers for mechanic immunity as well as school immunity — you rarely need to
|
||||
name the CC type explicitly.
|
||||
|
||||
CC types are exact DBC mechanics: `stun` does **not** cover Gouge or Sap. Those
|
||||
are `knockout` and `sap`. See [CC types for `[immune]`](Reference-Tables#cc-types-for-immune)
|
||||
for the full list and its aliases.
|
||||
|
||||
## Manual Immunity Commands
|
||||
|
||||
```lua
|
||||
@@ -30,3 +39,22 @@ Auto-learns NPC immunities from combat. When a spell fails with "immune", the ad
|
||||
/cleveroid clearccimmune [type] -- Clear CC immunities
|
||||
/cleveroid removeccimmune "Boss Name" type -- Remove specific CC immunity
|
||||
```
|
||||
|
||||
## What does and does not get learned
|
||||
|
||||
Two cases are deliberately **not** recorded, because a wrong permanent entry
|
||||
suppresses the spell against that NPC for good:
|
||||
|
||||
- **Diminishing returns.** Landing three stuns on the same target inside 20
|
||||
seconds makes the fourth return `IMMUNE` from DR, not from real immunity.
|
||||
That result is discarded. Controlled stuns, triggered stuns and Kidney Shot
|
||||
are tracked as separate DR chains, and a gap longer than 20 seconds starts
|
||||
the chain over. DR is only ever used to reject a false learn — there is no
|
||||
DR conditional.
|
||||
- **Casts with no queryable unit.** A CC cast at a mouseover that is not your
|
||||
current target can come back `IMMUNE` without being learned, because the
|
||||
addon cannot check whether the NPC merely had a temporary immunity buff up.
|
||||
Target the mob, or add it by hand with `addccimmune`.
|
||||
|
||||
Everything learned is stored per exact mechanic, so a mob that resists Gouge is
|
||||
recorded as `knockout`-immune and your Kidney Shot macros are unaffected.
|
||||
|
||||
+49
-19
@@ -2,27 +2,57 @@
|
||||
|
||||
## CC Types
|
||||
|
||||
For use with `[cc]`, `[mycc]`, `[immune]` conditionals.
|
||||
For use with `[cc]` and `[mycc]`.
|
||||
|
||||
| Type | Examples |
|
||||
|------|----------|
|
||||
| `stun` | Cheap Shot, Kidney Shot, HoJ, Bash, Gouge, Sap |
|
||||
| `fear` | Fear, Psychic Scream, Howl of Terror |
|
||||
| `root` | Entangling Roots, Frost Nova |
|
||||
| `snare` / `slow` | Hamstring, Wing Clip, Crippling Poison |
|
||||
| `sleep` | Hibernate, Wyvern Sting |
|
||||
| `charm` | Mind Control, Seduction |
|
||||
| `polymorph` | Polymorph (all variants) |
|
||||
| `banish` | Banish |
|
||||
| `horror` | Death Coil, Intimidating Shout |
|
||||
| `disorient` | Scatter Shot, Blind |
|
||||
| `silence` | Silence, Counterspell |
|
||||
| `disarm` | Disarm |
|
||||
| `daze` | Daze effects |
|
||||
| `freeze` | Freeze effects |
|
||||
| `shackle` | Shackle Undead |
|
||||
Each name is one exact 1.12 DBC mechanic, so `[cc:stun]` means Stun and nothing
|
||||
else. Names sharing a mechanic ID are aliases of each other.
|
||||
|
||||
**Loss-of-control** (checked by bare `[cc]`): stun, fear, sleep, charm, polymorph, banish, horror, freeze, disorient, shackle
|
||||
| Mechanic | Type | Examples |
|
||||
|---:|------|----------|
|
||||
| 1 | `charm` | Mind Control, Seduction |
|
||||
| 2 | `disorient` / `disoriented` | Scatter Shot, Blind |
|
||||
| 3 | `disarm` | Disarm, Riposte disarm |
|
||||
| 4 | `distract` | Distract |
|
||||
| 5 | `fear` | Fear, Psychic Scream, Howl of Terror |
|
||||
| 6 | `fumble` / `grip` | Fumble effects |
|
||||
| 7 | `root` | Entangling Roots, Frost Nova |
|
||||
| 8 | `pacify` | Pacify effects |
|
||||
| 9 | `silence` | Silence, Kick, Counterspell |
|
||||
| 10 | `sleep` | Hibernate, Wyvern Sting |
|
||||
| 11 | `snare` / `slow` | Hamstring, Wing Clip, Crippling Poison |
|
||||
| 12 | `stun` | Cheap Shot, Kidney Shot, Hammer of Justice, Bash |
|
||||
| 13 | `freeze` | Frozen effects |
|
||||
| 14 | `knockout` | Gouge, Repentance |
|
||||
| 15 | `bleed` | Rend, Garrote, Deep Wounds |
|
||||
| 17 | `polymorph` | Polymorph (all variants) |
|
||||
| 18 | `banish` | Banish |
|
||||
| 20 | `shackle` | Shackle Undead |
|
||||
| 23 | `turn` | Turn effects |
|
||||
| 24 | `horror` | Death Coil, Intimidating Shout |
|
||||
| 26 | `interrupt` | Interrupt mechanic |
|
||||
| 27 | `daze` | Daze effects |
|
||||
| 30 | `sap` | Sap |
|
||||
|
||||
**Loss-of-control** (what bare `[cc]` and `[cc:any]` match): charm, disorient,
|
||||
fear, root, sleep, stun, freeze, knockout, polymorph, banish, shackle, horror,
|
||||
sap.
|
||||
|
||||
> **Changed:** `stun` previously also matched Gouge and Sap. Each is now its own
|
||||
> type. For the old behavior use `[cc:stun/knockout/sap]`, or bare `[cc]`, which
|
||||
> covers all three.
|
||||
|
||||
### CC types for `[immune]`
|
||||
|
||||
`[immune]` / `[noimmune]` and the `ccimmune` commands accept this subset — the
|
||||
mechanics NPCs are actually tracked as immune to:
|
||||
|
||||
`stun`, `freeze`, `knockout`, `sap`, `fear`, `root`, `silence`, `sleep`,
|
||||
`charm`, `polymorph`, `banish`, `shackle`, `horror`, `disorient`, `daze`,
|
||||
`snare`
|
||||
|
||||
`incap`, `incapacitate` and `incapacitated` are accepted as aliases of
|
||||
`knockout`. `bleed` immunity is a damage school rather than a CC mechanic — see
|
||||
below.
|
||||
|
||||
## Damage Schools
|
||||
|
||||
|
||||
Reference in New Issue
Block a user