update rake to use the idol duration change andd addd bash talent duration change

This commit is contained in:
Jrc13245
2025-11-18 17:37:38 -05:00
parent 77be86cf17
commit f59b66a7b6
2 changed files with 121 additions and 22 deletions
+94 -13
View File
@@ -36,8 +36,12 @@ Check slash command and all conditional lists for new usages!
* `/cleveroid addimmune "<NPC>" <school> [buff]` - Add manual immunity
* `/cleveroid removeimmune "<NPC>" <school>` - Remove immunity
* `/cleveroid clearimmune [school]` - Clear immunity data
* `/cleveroid combotrack` - Show combo point tracking info (Rip, Rupture, Kidney Shot)
* `/cleveroid comboclear` - Clear combo tracking data
* `/cleveroid talents` - Show all current talent ranks
* `/cleveroid testtalent <spellID>` - Test talent modifier calculation for a spell
* `/cleveroid testequip <spellID>` - Test equipment modifier calculation for a spell
* `/combotrack show` - Show combo point tracking info (Rip, Rupture, Kidney Shot)
* `/combotrack clear` - Clear combo tracking data
* `/combotrack debug` - Toggle combo tracking debug output
---
@@ -125,7 +129,7 @@ SuperCleveRoidMacros includes a built-in **debuff timer tracking system** that a
### Features
* ✅ **Auto-Learning** - Automatically learns debuff durations as you cast them
* ✅ **Accurate Tracking** - Only tracks debuffs that successfully land (no false timers on misses)
* ✅ **329+ Debuffs Pre-configured** - Extensive database of vanilla 1.12.1 spell IDs
* ✅ **335+ Debuffs Pre-configured** - Extensive database of vanilla 1.12.1 spell IDs
* ✅ **Per-Caster Storage** - Handles talent variations by tracking per player GUID
* ✅ **GUID-Based** - Correctly handles multiple mobs with the same name
* ✅ **No pfUI Required** - Fully independent debuff tracking system
@@ -163,7 +167,7 @@ SuperCleveRoidMacros includes a built-in **debuff timer tracking system** that a
```
### Supported Debuffs
The system includes pre-configured durations for 329+ debuffs across all classes:
The system includes pre-configured durations for 335+ debuffs across all classes:
- **Warrior:** Sunder Armor, Rend, Hamstring, Thunder Clap, Demoralizing Shout, etc.
- **Rogue:** Rupture, Garrote, Expose Armor, Poisons, etc.
- **Hunter:** Serpent Sting, Hunter's Mark, Wing Clip, Wyvern Sting, etc.
@@ -171,16 +175,21 @@ The system includes pre-configured durations for 329+ debuffs across all classes
- **Warlock:** Corruption, Curses, Immolate, Siphon Life, etc.
- **Mage:** Polymorph (all variants), Slow effects, etc.
- **Priest:** Shadow Word: Pain, Devouring Plague, Mind Flay, etc.
- **Paladin:** Judgements, Hammer of Justice, etc.
- **Paladin:** Judgement of the Crusader (all 6 ranks), Hammer of Justice, etc.
- **Shaman:** Flame Shock, Frost Shock, etc.
### Combo Point Scaling
The addon automatically tracks combo point finishers that scale duration with combo points:
- **Rogue Rupture** (all ranks): 8s base + 2s per combo point (8s @ 1 CP, 16s @ 5 CP)
- **Rogue Kidney Shot**: Rank 1: 1s + 1s per CP, Rank 2: 2s + 1s per CP
- **Druid Rip** (all ranks): 12s base + 4s per combo point (12s @ 1 CP, 28s @ 5 CP)
- **Druid Rip** (all ranks): 10s base + 2s per combo point (10s @ 1 CP, 18s @ 5 CP)
The system automatically detects combo points at cast time and calculates the correct duration **regardless of how you cast the spell**:
- ✅ Clicking spell in spellbook
- ✅ Clicking ability on action bars
- ✅ Using macros (`/cast Rip`)
- ✅ Direct Lua calls (`CastSpellByName("Rip")`)
The system automatically detects combo points at cast time and calculates the correct duration:
```lua
-- Will show accurate duration based on combo points used
/cast [nodebuff:Rip] Rip
@@ -191,14 +200,86 @@ The system automatically detects combo points at cast time and calculates the co
/cast [debuff:Rupture<2] Rupture
```
Use `/cleveroid combotrack` to see recent combo finisher casts and their calculated durations.
Use `/combotrack show` to see recent combo finisher casts and their calculated durations.
### Talent Modifiers
The addon automatically applies talent-based duration modifications to debuffs. Talent modifiers layer on top of combo point calculations for finisher abilities.
**IF YOUR TALENT DEBUFF DURATION MODIFIER IS MISSING, PLEASE MAKE A BUG REPORT!!!**
**Calculation Order:** `final_duration = (base + combo_points) + talent_modifier`
**Supported Talent Modifiers:**
- **Rogue:**
- **Taste for Blood** (3 ranks): +2s per rank to Rupture duration
- **Improved Gouge** (3 ranks): +0.5s per rank to Gouge duration
- **Priest:**
- **Improved Shadow Word: Pain** (2 ranks): +3s per rank to SW:P duration
- **Druid:**
- **Brutal Impact** (2 ranks): +0.5s per rank to Bash and Pounce stun duration
**Example:** Rupture with 5 CP and Taste for Blood 3/3:
1. Base duration: 8s
2. Combo point modifier: 8s + (5-1)×2 = 16s
3. Talent modifier: 16s + (3×2) = **22s final**
Use `/cleveroid talents` to view your current talent ranks, and `/cleveroid testtalent <spellID>` to test calculations.
### Equipment Modifiers
The addon supports item-based duration modifications.
**IF YOUR EQUIPMENT DEBUFF DURATION MODIFIER IS MISSING, PLEASE MAKE A BUG REPORT!!!**
**Calculation Order:** `final_duration = ((base + combo_points) + talent_modifier) × equipment_modifier`
**Supported Equipment Modifiers:**
- **Idol of Savagery** (Item ID: 61699, Druid Idol): Reduces the time between periodic ticks and the duration of Rake and Rip by 10% (×0.9 multiplier)
**Example:** Rip with 5 CP and Idol of Savagery equipped:
1. Base duration: 10s
2. Combo point modifier: 10s + (5-1)×2 = 18s
3. Talent modifier: 18s + 0 = 18s (if no talent)
4. Equipment modifier: 18s × 0.9 = **16.2s final**
Use `/cleveroid testequip <spellID>` to test equipment modifier calculations.
### Immunity Tracking System
The addon automatically learns and tracks NPC immunities from combat log messages:
**Features:**
- ✅ **Auto-learning** from combat log: "X's Spell fails. Y is immune."
- ✅ **Damage school tracking**: fire, frost, nature, shadow, arcane, holy, physical
- ✅ **Buff-based immunity detection**: Tracks temporary immunities (e.g., boss immune during shield phase)
- ✅ **Automatic spell school detection** via tooltip scanning
**Usage in Macros:**
```lua
-- Check immunity before casting
/cast [noimmune:fire] Fireball; Frostbolt
/cast [noimmune:"Flame Shock"] Flame Shock; Lightning Bolt
-- Check if target is immune (any school)
/cast [immune] Shoot; Arcane Shot
```
**Manual Control:**
```lua
/cleveroid listimmune [school] -- List all or specific immunities
/cleveroid addimmune "NPC Name" fire -- Add manual immunity
/cleveroid removeimmune "NPC Name" fire -- Remove immunity
/cleveroid clearimmune [school] -- Clear immunity data
```
### Technical Details
- Uses **UNIT_CASTEVENT** for precise cast detection (only tracks successful hits)
- Uses **RAW_COMBATLOG** to detect when debuffs fade
- Stores durations in **SavedVariables** (persists between sessions)
- Falls back to static database for unknown spells
- No dependency on pfUI or other addons
- **Combo point tracking:**
- Hooks `CastSpell`, `UseAction`, and `CastSpellByName` at addon load time
- Pre-captures combo points before spell execution
- Works universally across all casting methods (spellbook, action bars, macros, Lua calls)
- Integrates with pfUI's debuff timer display
- **Debuff duration tracking:**
- Uses **UNIT_CASTEVENT** for precise cast detection (only tracks successful hits)
- Uses **RAW_COMBATLOG** to detect when debuffs fade
- Stores durations in **SavedVariables** (persists between sessions)
- Falls back to static database for unknown spells
- **No dependency on pfUI or other addons** (but integrates with pfUI if present)
---
# Usage
+27 -9
View File
@@ -1420,6 +1420,17 @@ CleveRoids.talentModifiers[10892] = { talent = "Improved Shadow Word: Pain", mod
CleveRoids.talentModifiers[10893] = { talent = "Improved Shadow Word: Pain", modifier = function(base, rank) return base + (rank * 3) end } -- SW:P Rank 7
CleveRoids.talentModifiers[10894] = { talent = "Improved Shadow Word: Pain", modifier = function(base, rank) return base + (rank * 3) end } -- SW:P Rank 8
-- DRUID talent modifiers
-- Brutal Impact: Increases Bash and Pounce stun duration by 0.5 seconds per rank (2 ranks max)
-- Talent Spell IDs: 16940 (Rank 1), 16941 (Rank 2)
CleveRoids.talentModifiers[5211] = { talent = "Brutal Impact", modifier = function(base, rank) return base + (rank * 0.5) end } -- Bash Rank 1
CleveRoids.talentModifiers[6798] = { talent = "Brutal Impact", modifier = function(base, rank) return base + (rank * 0.5) end } -- Bash Rank 2
CleveRoids.talentModifiers[8983] = { talent = "Brutal Impact", modifier = function(base, rank) return base + (rank * 0.5) end } -- Bash Rank 3
CleveRoids.talentModifiers[9005] = { talent = "Brutal Impact", modifier = function(base, rank) return base + (rank * 0.5) end } -- Pounce Rank 1
CleveRoids.talentModifiers[9823] = { talent = "Brutal Impact", modifier = function(base, rank) return base + (rank * 0.5) end } -- Pounce Rank 2
CleveRoids.talentModifiers[9827] = { talent = "Brutal Impact", modifier = function(base, rank) return base + (rank * 0.5) end } -- Pounce Rank 3
-- Function to get talent rank for a talent by name
-- Returns 0 if talent not found or not learned
function CleveRoids.GetTalentRank(talentName)
@@ -1493,22 +1504,29 @@ end
CleveRoids.equipmentModifiers = CleveRoids.equipmentModifiers or {}
-- DRUID equipment modifiers
-- Black Morass Idol: Reduces Rip duration by 10% (multiplicative)
-- Idol of Savagery (Black Morass Idol): Reduces Rip and Rake duration by 10% (multiplicative)
-- Item ID: 61699, Slot: 18 (Ranged/Relic)
local ripIdolModifier = function(duration, itemID)
local ripRakeIdolModifier = function(duration, itemID)
if itemID == 61699 then
-- Black Morass: 10% reduction (multiply by 0.9)
-- Idol of Savagery: 10% reduction (multiply by 0.9)
return duration * 0.9
end
return duration
end
CleveRoids.equipmentModifiers[1079] = { slot = 18, modifier = ripIdolModifier } -- Rip Rank 1
CleveRoids.equipmentModifiers[9492] = { slot = 18, modifier = ripIdolModifier } -- Rip Rank 2
CleveRoids.equipmentModifiers[9493] = { slot = 18, modifier = ripIdolModifier } -- Rip Rank 3
CleveRoids.equipmentModifiers[9752] = { slot = 18, modifier = ripIdolModifier } -- Rip Rank 4
CleveRoids.equipmentModifiers[9894] = { slot = 18, modifier = ripIdolModifier } -- Rip Rank 5
CleveRoids.equipmentModifiers[9896] = { slot = 18, modifier = ripIdolModifier } -- Rip Rank 6
-- Rip (all ranks)
CleveRoids.equipmentModifiers[1079] = { slot = 18, modifier = ripRakeIdolModifier } -- Rip Rank 1
CleveRoids.equipmentModifiers[9492] = { slot = 18, modifier = ripRakeIdolModifier } -- Rip Rank 2
CleveRoids.equipmentModifiers[9493] = { slot = 18, modifier = ripRakeIdolModifier } -- Rip Rank 3
CleveRoids.equipmentModifiers[9752] = { slot = 18, modifier = ripRakeIdolModifier } -- Rip Rank 4
CleveRoids.equipmentModifiers[9894] = { slot = 18, modifier = ripRakeIdolModifier } -- Rip Rank 5
CleveRoids.equipmentModifiers[9896] = { slot = 18, modifier = ripRakeIdolModifier } -- Rip Rank 6
-- Rake (all ranks)
CleveRoids.equipmentModifiers[1822] = { slot = 18, modifier = ripRakeIdolModifier } -- Rake Rank 1
CleveRoids.equipmentModifiers[1823] = { slot = 18, modifier = ripRakeIdolModifier } -- Rake Rank 2
CleveRoids.equipmentModifiers[1824] = { slot = 18, modifier = ripRakeIdolModifier } -- Rake Rank 3
CleveRoids.equipmentModifiers[9904] = { slot = 18, modifier = ripRakeIdolModifier } -- Rake Rank 4
-- Function to get equipped item ID in a specific slot
function CleveRoids.GetEquippedItemID(slotID)