diff --git a/.github/ISSUE_TEMPLATE/Bug Report.yml b/.github/ISSUE_TEMPLATE/Bug Report.yml new file mode 100755 index 00000000..891c6d7c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Bug Report.yml @@ -0,0 +1,55 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: [bug] +# assignees: +# - dandruff +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the bug you encountered. + options: + - label: I have searched the existing issues + required: true + - type: input + id: wow-version + attributes: + label: WoW version + description: | + What is the version of your World of Warcraft retail? + Found either below the "Play" button in the Battle.NET launcher, or bottom left corner of login screen. + placeholder: ex. 9.1.0.39291 + validations: + required: true + - type: input + id: xct-version + attributes: + label: xCT+ version + description: | + What is the version of your xCT+? + Found at the top of the xCT+ configuratin window (`/xct`). + If you can't open the config, look in the `interface/AddOns/xCT+/xCT+.toc`. + placeholder: ex. 4.5.5 + validations: + required: true + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: textarea + id: errors + attributes: + label: Related Errors + description: Please paste any errors you're seeing from xCT+ related to this issue + placeholder: | + Message: Interface\AddOns\xCT+\... + render: lua diff --git a/.github/ISSUE_TEMPLATE/Feature Request.yml b/.github/ISSUE_TEMPLATE/Feature Request.yml new file mode 100755 index 00000000..ec6b0b86 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Feature Request.yml @@ -0,0 +1,26 @@ +name: Feature Request +description: Request a feature +title: "[feature]: " +labels: [feature] +# assignees: +# - dandruff +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to request a feature! + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the feature you're requesting. + options: + - label: I have searched the existing issues + required: true + - type: textarea + id: what-happened + attributes: + label: Feature request + description: What feature would you like to request + placeholder: It would be great if.... + validations: + required: true diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 00000000..7dde6dd8 --- /dev/null +++ b/.github/README.md @@ -0,0 +1,89 @@ +# xCT+ + +Created for optimal performance in the toughest fights, a rugged combat text add-on is finally ready to be put to the +test! + +## Overview + +xCT+ is immensely based off the add-on xCT by braindump (aka Affli). It strives to be as minimalistic as possible while +maintaining ease of use. That is why, introduced in version 3, you can now configure all settings while in-game. + +Overall, xCT+ is a replacement for Blizzard’s scrolling combat text. It is superior to the default combat text because +xCT+ organizes incoming healing, incoming damage, and outgoing damage/healing into their own frames, while minimizing +spam. + +## Features + +For those that have used Affli’s xCT Add-On, xCT+ expands the functionality of its predecessor. New features include: + +* An In-Game Configuration Tool +* Frames for tracking Criticals, Loot and Money, Spell Procs and Unit Power (e.g. Mana) +* A grid when positioning the frames +* Tons of new options and features +* A redesigned Spell Merger to cut down on the spam +* Profiles +* And many more exciting new features! + +## The future of xCT+ in Midnight + +I recently gained access to the Midnight beta and tested some things: +- Listening for event `COMBAT_LOG_EVENT_UNFILTERED` is gone. Thats how this addon got almost all of its information. +- Same for `COMBAT_LOG_EVENT` +- I can register a handler for `UNIT_COMBAT` event and it gives me some data but its really lackluster: + - No source unit of the damage? (e. g. Did I do that or did another player do that? Who damaged me?) + - No spell ID (was it a melee attack or a spell?) + - Is dependent on your Combat Log filter (see your chat box). +- `C_CombatText.GetCurrentEventInfo()` is supposed to provide these informations as `(secret value)`, but it just returns `nil` at the moment. + +Currently I'm not optimistic that xCT+ will work in any capacity in the WoW Midnight expansion. +If something changes I'll look at it again. Even a reduced form of xCT+ would be fine for me but that does not +seem possible right now. + +If anybody knows more and could help me bring some functionality to Midnight, please feel free to contact me via Github or ingame. + +## The future of xCT+ in TWW and beyond + +As of TWW Season 1, [Dandruff](https://www.curseforge.com/members/tdandruff) (Dandruff-Stormreaver US) resigned from addon development and gave [RedAces](https://www.curseforge.com/members/redaces) (Feylynn-Antonidas EU) the +permission to develop xCT+ further. He has aided development since mid Dragonflight and will continue to fix and +enhance xCT+. + +### Version 4.9.0 +Version 4.9.0 shapes up to be a major rewrite of the whole addon. The following features are currently in it: + +* a lot of cleanup (!) +* a lot of bugfixes (!) +* use more headers in the options GUI because the descriptions are sometimes only displayed as "..." +* allow hiding the auto attack icons for outgoing attacks +* only register xCT as LibSink target if any other addon has loaded LibSink. Remove LibSink from embedded libraries +* show fully absorbed outgoing damage events as normal damage events (if enabled) +* add partially absorbed outgoing damage to the amount to show the full damage we did (if enabled) +* fix the handling of DK runes coming off CD +* The spell value filter now works AFTER merging! + * e. g. if the spell filter is set for >= 100k damage, then 2x 60k damage events will be merged and displayed as 120k (x2) + * Before this change, nothing was displayed because each damage event was filtered before merging +* add notification for profession skill ups (if enabled) +* replace "OnUpdate" function for delayed loot display with a AceTimer schedule +* add new frame "outgoing" healing + * Spam Merger now wont merge heal + damage if the Spell ID is the same (e. g. DK consumption, Death Strike) +* Major overhaul of the spam merger + * cleanup merges of older expansions and rearrange them + * let the player set the merge interval for everything we are currently merging + * fix dispell merging + * Spam merger now should display more OnUpdate in order to show all waiting messages +* modernize spell filter options: you can now delete an entry completely via an select (unsorted for now) +* Split xCT into a main addon and an options addon to reduce the footprint. + * The main addon has a RAM footprint of about 800 KB, and the options of 1,8 MB ... wow! + +Feel free to try the alpha and beta versions and provide feedback in GitHub! + +## Download + +* [CurseForge](https://www.curseforge.com/wow/addons/xct-plus) +* [GitHub](https://github.com/dandruff/xCT) + +## Support + +Feel free to use the comments below for quick and dirty questions. If you think that you have a question that is more +involved, you should create a ticket on the [GitHub issue tracker](https://github.com/dandruff/xCT/issues/new). + +All contributions (pull requests, testing, bug reports, ...) are welcome! diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b956fcee --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,38 @@ +# description of this workflow, can be anything you want +name: Package and release + +# we need to let GitHub know _when_ we want to release. +# this is typically only when we create a new tag. +# make sure your tags are annotated! +on: + push: + tags: + - '**' + +# a workflow is built up as jobs, and within these jobs are steps +jobs: + + # "release" is a job, you can name it anything you want + release: + + # we can run our steps on pretty much anything, but the "ubuntu-latest" image is a safe bet + runs-on: ubuntu-latest + + # specify the environment variables used by the packager, matching the secrets for the project on GitHub + env: + CF_API_KEY: ${{ secrets.CF_API_KEY }} + GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} # this secret is pre-provided for the workflow and does not + # need to be added yourself, we just reference it here. + + # "steps" holds a list of all the steps needed to package and release our AddOn + steps: + + # we first have to clone the AddOn project, this is a required step + - name: Clone project + uses: actions/checkout@v4 + with: + fetch-depth: 0 # gets entire git history, needed for automatic changelogs + + # once cloned, we just run the GitHub Action + - name: Package and release + uses: BigWigsMods/packager@v2 diff --git a/.gitignore b/.gitignore new file mode 100755 index 00000000..9fdb4520 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.DS_Store +/.idea +/scripts diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 00000000..2b65ff2c --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,4 @@ +indent_type = "Spaces" +indent_width = 4 +column_width = 180 +line_endings = "Unix" diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..fe0b2240 --- /dev/null +++ b/TODO.md @@ -0,0 +1,6 @@ +- add icon +- refactor options (no more #info-1 stuff) +- completly redo the mapping of events to frames? + - allow X frames and let the user decide which event type goes to which frame +- more languages! +- Show abbreviated spell name (Blood Boil => BB?) diff --git a/config.lua b/config.lua deleted file mode 100644 index 288d7f9e..00000000 --- a/config.lua +++ /dev/null @@ -1,47 +0,0 @@ -local addon, ns=... -ns.config={ ---------------------------------------------------------------------------------- --- use ["option"] = true/false, to set options. --- options --- blizz damage options. - ["blizzheadnumbers"] = false, -- use blizzard damage/healing output (above mob/player head) - ["damagestyle"] = true, -- change default damage/healing font above mobs/player heads. you need to restart WoW to see changes! has no effect if blizzheadnumbers = false --- xCT outgoing damage/healing options - ["damage"] = true, -- show outgoing damage in it's own frame - ["healing"] = true, -- show outgoing healing in it's own frame - ["showhots"] = true, -- show periodic healing effects in xCT healing frame. - ["damagecolor"] = true, -- display damage numbers depending on school of magic, see http://www.wowwiki.com/API_COMBAT_LOG_EVENT - ["critprefix"] = "|cffFF0000*|r", -- symbol that will be added before amount, if you deal critical strike/heal. leave "" for empty. default is red * - ["critpostfix"] = "|cffFF0000*|r", -- postfix symbol, "" for empty. - ["icons"] = true, -- show outgoing damage icons - ["iconsize"] = 28, -- icon size of spells in outgoing damage frame, also has effect on dmg font size if it's set to "auto" - ["petdamage"] = true, -- show your pet damage. - ["dotdamage"] = true, -- show damage from your dots. someone asked an option to disable lol. - ["treshold"] = 1, -- minimum damage to show in outgoing damage frame - ["healtreshold"] = 1, -- minimum healing to show in incoming/outgoing healing messages. - --- appearence - ["font"] = "Interface\\Addons\\xCT\\HOOGE.TTF", -- "Fonts\\ARIALN.ttf" is default WoW font. - ["fontsize"] = 12, - ["fontstyle"] = "OUTLINE", -- valid options are "OUTLINE", "MONOCHROME", "THICKOUTLINE", "OUTLINE,MONOCHROME", "THICKOUTLINE,MONOCHROME" - ["damagefont"] = "Interface\\Addons\\xCT\\HOOGE.TTF", -- "Fonts\\FRIZQT__.ttf" is default WoW damage font - ["damagefontsize"] = "auto", -- size of xCT damage font. use "auto" to set it automatically depending on icon size, or use own value, 16 for example. if it's set to number value icons will change size. - ["timevisible"] = 3, -- time (seconds) a single message will be visible. 3 is a good value. - ["scrollable"] = false, -- allows you to scroll frame lines with mousewheel. - ["maxlines"] = 64, -- max lines to keep in scrollable mode. more lines=more memory. nom nom nom. - --- justify messages in frames, valid values are "RIGHT" "LEFT" "CENTER" - ["justify_1"] = "LEFT", -- incoming damage justify - ["justify_2"] = "RIGHT", -- incoming healing justify - ["justify_3"] = "CENTER", -- various messages justify (mana, rage, auras, etc) - ["justify_4"] = "RIGHT", -- outgoing damage/healing justify - --- class modules and goodies - ["stopvespam"] = false, -- automaticly turns off healing spam for priests in shadowform. HIDE THOSE GREEN NUMBERS PLX! - ["dkrunes"] = true, -- show deatchknight rune recharge - ["mergeaoespam"] = true, -- merges multiple aoe spam into single message, can be useful for dots too. - ["mergeaoespamtime"] = 3, -- time in seconds aoe spell will be merged into single message. minimum is 1. - ["killingblow"] = true, -- tells you about your killingblows (works only with ["damage"] = true,) - ["dispel"] = true, -- tells you about your dispels (works only with ["damage"] = true,) - ["interrupt"] = true, -- tells you about your interrupts (works only with ["damage"] = true,) -} diff --git a/pkgmeta.yaml b/pkgmeta.yaml new file mode 100644 index 00000000..ec68ab90 --- /dev/null +++ b/pkgmeta.yaml @@ -0,0 +1,28 @@ +package-as: xCT+ + +ignore: + - .github + - .gitignore + - .stylua.toml + - libs/LibStub/tests + - pkgmeta.yaml + +# We want to have 2 folders: xCT+ and xCT+Options +move-folders: + xCT+/xCT+: xCT+ + xCT+/xCT+Options: xCT+Options + +externals: + xCT+/libs/AceAddon-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceAddon-3.0 + xCT+/libs/AceConfig-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceConfig-3.0 + xCT+/libs/AceConsole-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceConsole-3.0 + xCT+/libs/AceDB-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceDB-3.0 + xCT+/libs/AceDBOptions-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceDBOptions-3.0 + xCT+/libs/AceEvent-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceEvent-3.0 + xCT+/libs/AceGUI-3.0-SharedMediaWidgets: https://repos.curseforge.com/wow/ace-gui-3-0-shared-media-widgets/trunk/AceGUI-3.0-SharedMediaWidgets + xCT+/libs/AceGUI-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceGUI-3.0 + xCT+/libs/AceTimer-3.0: https://repos.curseforge.com/wow/ace3/trunk/AceTimer-3.0 + xCT+/libs/CallbackHandler-1.0: https://repos.curseforge.com/wow/callbackhandler/trunk/CallbackHandler-1.0 + xCT+/libs/LibSharedMedia-3.0: https://repos.curseforge.com/wow/libsharedmedia-3-0/trunk/LibSharedMedia-3.0 + xCT+/libs/LibStub: https://repos.curseforge.com/wow/libstub/trunk + xCT+/Libs/AceLocale-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0 diff --git a/xCT+/config/merge_basic_spells.lua b/xCT+/config/merge_basic_spells.lua new file mode 100644 index 00000000..a6bd8731 --- /dev/null +++ b/xCT+/config/merge_basic_spells.lua @@ -0,0 +1,26 @@ +--[[ ____ ______ + /\ _`\ /\__ _\ __ + __ _\ \ \/\_\/_/\ \/ /_\ \___ +/\ \/'\\ \ \/_/_ \ \ \/\___ __\ +\/> Blade Dance + alias(391374, 199552) -- Blade Dance + alias(391378, 199552) -- Blade Dance + alias(200685, 199552) -- Blade Dance + alias(393035, 185123) -- Throw Glaive (Havoc) + alias(337819, 185123) -- Throw Glaive (Havoc) + alias(201428, 201427) -- Annihilation (Chaos Strike in Metamorphosis) + alias(227518, 201427) -- Annihilation (Chaos Strike in Metamorphosis) + alias(444979, 185123) -- Hero Talent: Preemptive Strike => Throw Glaive (Havoc) + alias(390181, 185123) -- Talent: Soulscar => Throw Glaive (Havoc) + + spec(581) -- Vengeance + spell(204157, 1.5) -- Throw Glaive (Vengeance) + spell(204598, 2.5) -- Sigil of Flame + spell(203794, 1.5) -- Consume Soul + spell(207771, 2.5) -- Talent: Burning Alive + spell(218677, 1.5) -- Talent: Spirit Bomb (Frailty Heal) + spell(213011, 2.5) -- Artifact: Charred Warblades + spell(207407, 1.5) -- Artifact: Soul Carver (DoT) + spell(212105, 1.5) -- Talent: Fel Devastation + alias(212106, 212105) -- Talent: Fel Devastation + alias(212084, 212105) -- Talent: Fel Devastation + alias(225919, 263642) -- Talent: Fracture + alias(225921, 263642) -- Talent: Fracture +end + +class("DRUID") +do + spec(0) -- All Specs + spell(164812, 2.5) -- Moonfire + spell(164815, 2.5) -- Sunfire + + spec(102) -- Balance + spell(191037, 2.0) -- Starfall + spell(202347, 2.5) -- Talent: Stellar Flare + spell(202497, 2.5) -- Talent: Shooting Stars + spell(211545, 2.5) -- Talent: Fury of Elune + alias(226104, 191037) -- Artifact: Echoing Stars + + spec(103) -- Feral + spell(106830, 2.5) -- Thrash (Cat) + spell(155722, 2.5) -- Rake + spell(1079, 2.5) -- Rip + spell(155625, 2.5) -- Talent: Lunar Inspiration + spell(210723, 1.5) -- Artifact: Ashamane's Frenzy + alias(1822, 155722) -- [DD/DoT Merger] Rake + + spec(104) -- Guardian + spell(227034, 1.5) -- Mastery: Nature's Guardian + spell(22842, 1.5) -- Frenzied Regeneration + spell(77758, 2.5) -- Thrash (Bear) + spell(213709, 2.5) -- Talent: Brambles + spell(204069, 2.5) -- Talent: Lunar Beam + spell(400360, 1.0) -- Talent: Moonless Night + spell(371982, 1.0) -- Talent: After the Wildfire + spell(219432, 2.5) -- Artifact: Rage of the Sleeper + alias(192090, 77758) -- [DD/DoT Merger] Thrash + alias(203958, 213709) -- [Barkskin Merger] Brambles + + spec(105) -- Restoration + spell(290754, 1.5) -- Lifebloom (Honor Talent) + spell(81269, 1.5) -- Efflorescence + spell(33763, 1.5) -- Lifebloom + spell(774, 3.5) -- Rejuvenation + spell(8936, 2.5) -- Regrowth + spell(157982, 2.5) -- Tranquility + spell(48438, 2.5) -- Wild Growth (Instant) + spell(42231, 2.5) -- Hurricane + spell(200389, 3.5) -- Talent: Cultivation + spell(364686, 5.0) -- Tier[id=188849]: Renewing Bloom (every 1s) + alias(189800, 48438) -- [HoT/Artifact Merger] Nature's Essence + alias(155777, 774) -- [HoT/HoT Merger] Talent: Germination + alias(207386, 81269) -- [Heal/HoT Merger] Talent: Spring Blossom +end + +class("HUNTER") +do + spec(0) -- All Specs + spell(136, 2.5) -- Mend Pet + spell(131900, 2.5) -- Talent: A Murder of Crows + spell(120361, 1.5) -- Talent: Barrage + spell(199483, 5.0) -- Camouflage + spell(339400, 8.5) -- Rejuvenating Wind (every 1s for 8s) + alias(214303, 136) -- Mend Pet + + spec(253) -- Beast Mastery + spell(118459, 2.5) -- Pet: Beast Cleave + spell(207097, 1.5) -- Artifact: Titan's Thunder + spell(217200, 4.5) -- Barbed Shot (Seems every 2s over 8s) + alias(171457, 171454) -- [Cleave Merger] Chimaera Shot + + spec(254) -- Marksmanship + spell(214581, 1.5) -- Talent: Sidewinders + spell(257045, 2.0) -- Rapid Fire + spell(257620, 2.0) -- Multi shot + spell(269576, 5.0) -- Master Marksman + spell(324149, 4.5) -- Flayed Shot (every 2s for 18s plus, can be extended) + alias(191043, 19434) -- Windburst + + spec(255) -- Survival + spell(185855, 2.5) -- Lacerate + spell(13812, 2.5) -- Explosive Trap + spell(164857, 4.5) -- Survivalist (HoT) + spell(194279, 2.5) -- Talent: Caltrops + spell(203415, 2.5) -- Artifact: Fury of the Eagle (Bugged Icon Fix) + spell(204081, 2.5) -- Artifact: On the Trail + spell(265157, 2.5) -- Wildfire Bomb + spell(259491, 2.5) -- Serpent Sting + alias(269747, 265157) -- Wildfire Bomb (DOT) + alias(203525, 203563) -- Talen Strike (2x Hits) + alias(194858, 194859) -- Talent: Dragonsfire Grenade (DoT) + alias(203413, 203415) -- Artifact: Fury of the Eagle (Bugged Icon Fix) +end + +class("MAGE") +do + spec(0) -- All Specs + spell(122, 1.5) -- Frost Nova + + spec(62) -- Arcane + spell(7268, 2.5) -- Arcane Missiles + spell(44425, 1.0) -- Arcane Barrage (Cleave) + spell(114923, 2.5) -- Talent: Nether Tempest + spell(153640, 2.5) -- Talent: Arcane Orb + spell(211088, 2.5) -- Artifact: Mark of Aluneth (DoT) + alias(210817, 44425) -- [DD/Splash Merger] Arcane Rebound + alias(114954, 114923) -- [DD/DoT Merger] Arcane Rebound + alias(211076, 211088) -- [DD/Splash Merger] Arcane Rebound + + spec(63) -- Fire + spell(235314, 1.5) -- Blazing Barrier (DMG) + spell(2120, 1.5) -- Flamestrike (Longer for talent) + spell(12654, 2.5) -- Ignite (DoT) + spell(11366, 2.5) -- Pyroblast + spell(205345, 2.5) -- Talent: Conflagration + spell(88082, 2.0) -- Talent: Mirror Images + spell(198928, 1.5) -- Talent: Cinderstorm + spell(217694, 3.5) -- Talent: Living Bomb (DoT) + spell(155158, 2.5) -- Talent: Meteor (DoT) + spell(194522, 2.5) -- Artifact: Blast Furnace + spell(215775, 1.5) -- Artifact: Phoenix Reborn + alias(257542, 257541) -- [DD/Splash Merger] Phoenix's Flames + alias(226757, 205345) -- [DD/Splash Merger] Conflagration + alias(205472, 2120) -- [DD/DoT Merger] Talent: Flame Patch + alias(244813, 217694) -- [DD/DoT Merger] multi target living bomb + alias(277703, 11366) -- [DD/Splash Merger] Pyroblast + + spec(64) -- Frost + spell(84721, 1.5) -- Frozen Orb + spell(228354, 1.0) -- Flurry + spell(148022, 1.5) -- Icicle + spell(190357, 2.5) -- Blizzard + spell(153596, 2.5) -- Talent: Comet Storm + spell(59638, 2.0) -- Talent: Mirror Images + spell(228598, 1.0) -- Talent: Spliting Ice + spell(113092, 1.0) -- Talent: Frost Bomb +end + +class("MONK") +do + spec(0) -- All Specs + spell(130654, 1.0) -- Talent: Chi Burst (Healing) + spell(148135, 1.0) -- Talent: Chi Burst (Damage) + spell(132467, 1.0) -- Talent: Chi Wave (Damage) + spell(132463, 1.0) -- Talent: Chi Wave (Healing) + spell(148187, 1.0) -- Talent: Rushing Jade Wind + spell(107270, 1.0) -- Spinning Crane Kick + spell(100784, 1.0) -- Blackout Kick + spell(450620, 2.0) -- Hero Talent BrM / WW: Flurry Strikes (dmg unleashed in rougly 1.5 - 1.6 seconds) + alias(451250, 450620) -- Hero Talent BrM / WW: Flurry Strikes + alias(450617, 450620) -- Hero Talent BrM / WW: Flurry Strikes + + spec(268) -- Brewmaster + spell(124255, 1.0) -- Damage Taken: Stagger + spell(216521, 1.0) -- Celestial Fortune + spell(387621, 1.0) -- Talent: Dragonfire Brew + alias(123725, 115181) -- Talent: Breath of Fire (DoT) + alias(388867, 325153) -- Talent: Exploding Keg + + spec(269) -- Windwalker + spell(122470, 3.0) -- Touch of Karma + spell(117418, 1.0) -- Fists of Fury + alias(124280, 122470) -- Touch of Karma + alias(205414, 222029) -- Talent: Strike of the Windlord + + spec(270) -- Mistweaver + spell(115175, 3.0) -- Soothing Mist + spell(124682, 3.0) -- Enveloping Mist + spell(191840, 3.0) -- Essence Font + spell(119611, 3.0) -- Renewing Mists + spell(124081, 1.0) -- Talent: Zen Pulse + spell(162530, 3.0) -- Talent: Refreshing Jade Wind + spell(198756, 2.5) -- Talent: Invoke Chi'Ji + spell(199668, 2.0) -- Artifact: Blessing of Yu'lon + spell(199656, 2.0) -- Artifact: Celestial Breath + alias(344006, 191840) -- Essence Font (Faeline Stomp) + alias(198533, 115175) -- [Statue Merger] Talent: Jade Serpent Statue + alias(228649, 100784) -- [Passive Merger] Teachings of the Monastery +end + +class("PALADIN") +do + spec(0) -- All Specs + spell(81297, 2.5) -- Consecration + spell(183811, 2.5) -- Talent: Judgment of Light + spell(403460, 1.0) -- Talent: Lightforged Blessing + spell(377129, 2.5) -- Talent: Golden Path + alias(384906, 377129) -- Talent: Seal of Mercy (merged into Golden Path) + alias(407467, 403460) -- Talent: Lightforged Blessing + + spec(65) -- Holy + spell(53652, 1.5) -- Beacon of Light + spell(119952, 2.5) -- Talent: Light's Hammer (Heal) + spell(114919, 2.5) -- Talent: Light's Hammer (Damage) + spell(210291, 2.5) -- Talent: Aura of Mercy + spell(200654, 2.5) -- Artifact: Tyr's Deliverance + + spec(66) -- Protection + spell(31935, 1.5) -- Avenger's Shield + spell(204301, 2.5) -- Blessed Hammer + spell(204241, 2.0) -- Talent: Consecrated Ground + spell(378286, 1.5) -- Talent: Tyr's Enforcer + + spec(70) -- Retribution + spell(203539, 5.5) -- Greater Blessings of Wisdom + spell(20271, 1.5) -- Talent: Greater Judgment + spell(198137, 2.5) -- Talent: Divine Hammer + spell(199435, 1.0) -- Talent (PvP): Luminescence + spell(157122, 1.5) -- Talent: Holy Shield + spell(405345, 2.0) -- Talent: Wake of Ashes + spell(224239, 1.5) -- Artifact: Echo of the Highlord (Divine Storm) + spell(224266, 1.25) -- Artifact: Echo of the Highlord (Templar's Verdict) + spell(224239, 1.5) -- Artifact: Divine Tempest (Divine Storm) + spell(215257, 1.75) -- Artifact: Healing Storm + alias(228288, 20271) -- [Bounce Merger] Judgment + alias(216527, 20271) -- [Pvp Talent - Bounce Merger]: Lawbringer + alias(184575, 404358) -- Talent: Blade of Vengeance into Blade of Justice + alias(255937, 405345) -- Talent: Wake of Ashes + alias(405350, 405345) -- Talent: Wake of Ashes + alias(224239, 53385) -- Divine Storm + alias(423593, 53385) -- Divine Storm +end + +class("PRIEST") +do + spec(0) -- All Specs + spell(589, 2.5) -- Shadow Word: Pain + spell(122128, 2.5) -- Talent: Divine Star (Damage) + spell(110745, 2.5) -- Talent: Divine Star (Heal) + spell(120696, 2.0) -- Talent: Halo (Damage) + spell(120692, 2.0) -- Talent: Halo (Heal) + + spec(256) -- Discipline + spell(81751, 2.5) -- Atonement + spell(47666, 2.5) -- Penance (Heal) + spell(47750, 2.5) -- Talent: Penance (Damage) + spell(204213, 2.5) -- Talent: Purge the Wicked (DoT) + alias(204197, 204213) -- Talent: Purge the Wicked (Instant) + + spec(257) -- Holy + spell(585, 1.0) -- Smite + Artifact: Invoke the Naaru + spell(139, 3.0) -- Renew + spell(14914, 2.5) -- Holy Fire + spell(132157, 1.0) -- Holy Nova + spell(64844, 2.5) -- Divine Hymn + spell(77489, 3.5) -- Mastery: Echo of Light + spell(196810, 1.0) -- Artifact: Invoke the Naaru (Prayer of Healing & Sanctify) + spell(196809, 1.0) -- Artifact: Invoke the Naaru (Heal, Flash Heal & Serenity) + spell(196813, 1.0) -- Artifact: Invoke the Naaru (Divine Hymn & Prayer of Mending) + alias(196816, 139) -- Artifact: Invoke the Naaru (Renew) + alias(196811, 585) -- Artifact: Invoke the Naaru (Smite, Holy Fire & Chastise) + alias(196812, 132157) -- Artifact: Invoke the Naaru (Holy Nova) + + spec(258) -- Shadow + spell(228360, 1.0) -- Void Eruption + spell(34914, 2.5) -- Vampiric Touch + spell(148859, 2.5) -- Shadowy Apparition + spell(15407, 2.0) -- Mind Flay + spell(263165, 3.9) -- Talent: Void Torrent + spell(204778, 2.5) -- Honor Talent: Void Shield + spell(346111, 2.0) -- Mastery: Shadow Weaving (Shadowfiend/Mindbender extra mastery damage) + alias(228361, 228360) -- Void Eruption Merger + alias(263446, 228360) -- Void Eruption Merger +end + +class("ROGUE") +do + spec(0) -- All Specs + spell(185311, 2.5) -- Crimson Vial + + spec(259) -- Assassination + spell(2818, 3.5) -- Deadly Poison (DoT) + spell(192660, 2.5) -- Poison Bomb + spell(121411, 2.5) -- Talent: Crimson Tempest (DoT) + alias(192380, 113780) -- Artifact: Poison Knives + alias(27576, 5374) -- Mutilate (OH) + + spec(260) -- Outlaw + spell(199804, 2.0) -- Between the Eyes + spell(86392, 1.0) -- Main Gauche + spell(22482, 1.5) -- Blade Flurry + spell(57841, 3.5) -- Killing Spree + spell(185779, 2.0) -- Talent: Cannonball Barrage + spell(202822, 1.0) -- Artifact: Greed + alias(202823, 202822) -- [MH/OH Merger] Artifact: Greed + alias(197834, 193315) -- [Proc Merger] Saber Slash + + spec(261) -- Sublety + spell(121473, 1.5) -- Shadowblades + spell(185438, 1.5) -- Shadowstrike + spell(195452, 2.5) -- Nightblade (DoT) + spell(158188, 2.5) -- Talent: Soothing Darkness + spell(220893, 2.5) -- Artifact: Akaari's Soul + alias(121474, 121473) -- [MH/OH Merger] Artifact: Greed +end + +class("SHAMAN") +do + spec(262) -- Elemental + spell(285452, 1.0) -- Elemental Blast + spell(51505, 1.0) -- Lavaburst (Elemental) + spell(188196, 1.0) -- Lightning Bolt (Elemental) + spell(188443, 1.5) -- Chain Lightning (Elemental) + spell(77478, 1.5) -- Earthquake + spell(188389, 2.5) -- Flame Shock + spell(192231, 2.5) -- Talent: Liquid Magma Totem + spell(210714, 1.0) -- Talent: Ice Fury + spell(170379, 2.0) -- Talent: Earthn Rage + spell(191732, 1.5) -- Artifact: Lightning Elemental (Chain Lightning) + spell(205533, 1.5) -- Artifact: Volcanic Inferno + alias(285466, 285452) -- [Mastery Merger] Elemental Blast Overload + alias(219271, 210714) -- [Mastery Merger] Ice Fury Overload + alias(77451, 51505) -- [Mastery Merger] Lavaburst Overload + alias(45297, 188443) -- [Mastery Merger] Chain Lightning Overload + alias(45284, 188196) -- [Mastery Merger] Lightning Bolt Overload + + spec(263) -- Enhancement + spell(195256, 1.5) -- Stormlash (Gets Spammy!) + spell(192592, 1.5) -- Stormstrike: Crash Lightning (TODO: Not working?) + spell(10444, 1.5) -- Flametongue + spell(198483, 1.5) -- Artifact: Doom Wolves + spell(199116, 2.0) -- Artifact: Doom Vortex + spell(210801, 2.5) -- Talent: Crashing Storm + spell(197385, 2.5) -- Talent: Fury of Air + spell(197214, 2.5) -- Talent: Sundering + alias(32176, 32175) -- [MH/OH Merger] Stormstrike + alias(199053, 199054) -- [MH/OH Merger] Artifact: Unleash Weapons + + spec(264) -- Restoration + spell(73921, 2.5) -- Healing Rain + spell(61295, 3.5) -- Riptide + spell(52042, 3.0) -- Healing Stream Totem + spell(114942, 2.5) -- Healing Tide Totem + spell(197997, 2.5) -- Talent: Wellspring + spell(114911, 2.5) -- Talent: Ancestral Guidance + spell(114083, 1.5) -- Talent: Ascendance + spell(201633, 2.5) -- Talent: Earthen Shield + spell(209069, 2.5) -- Artifact: Tidal Pools + spell(208899, 3.0) -- Artifact: Queen's Decree +end + +class("WARLOCK") +do + spec(0) -- All Specs + spell(217979, 2.0) -- Heath Funnel (You) + spell(85692, 2.0) -- Doomguard (Doom Bolt) + + spec(265) -- Affliction + spell(198590, 1.5) -- Drain Soul + spell(980, 2.5) -- Agony + spell(146739, 2.5) -- Corruption + spell(233490, 1.5) -- Unstable Affliction + spell(20153, 1.5) -- Infernal: Immolation + spell(63106, 3.0) -- Talent: Siphon Life (Heal / Damage has same ID) + spell(205246, 1.5) -- Talent: Phantom Singularity + spell(205260, 2.5) -- Talent: Soul Effigy + spell(278350, 1.0) -- Talent Vile Taint + alias(231489, 233490) -- Unstable Affliction (Artifact: Compounding Horror) + + spec(266) -- Demonology + spell(89753, 2.5) -- Felguard: Felstorm + spell(104318, 1.5) -- Wild Imp: Fel Firebolt + spell(271971, 1.5) -- Call Dreadstalker + spell(193439, 1.5) -- Demonwrath + spell(211720, 2.5) -- Artifact: Thal'kiel's Discord + spell(108447, 2.5) -- Soul Link Heal + spell(108446, 2.5) -- Soul Link dmgs + alias(267971, 267215) -- Talent Demonic Consump + alias(211727, 211720) -- Artifact: Thal'kiel's Discord + + spec(267) -- Destruction + spell(157736, 3.5) -- Immolate + spell(42223, 2.5) -- Rain of Fire + spell(196448, 1.5) -- Talent: Channel Demonfire + spell(187394, 1.5) -- Artifact: Dimensional Rift + alias(348, 157736) -- [DD/DoT Merger] Immolate +end + +class("WARRIOR") +do + spec(0) -- All Specs + spell(156287, 2.5) -- Ravager + spell(5308, 1.0) -- Execute + spell(199658, 1.0) -- Whirlwind + alias(44949, 199658) -- Whirlwind + alias(199667, 199658) -- Whirlwind + alias(199850, 199658) -- Whirlwind + alias(199851, 199658) -- Whirlwind + alias(199852, 199658) -- Whirlwind + alias(385233, 199658) -- Whirlwind + alias(163558, 5308) -- Execute (OH - Fury) + alias(280849, 5308) -- Execute (OH - Fury) + + spec(71) -- Arms + spell(772, 3.5) -- Talent: Rend + spell(215537, 2.5) -- Talent: Trauma + spell(209577, 2.5) -- Talent: Warbreaker + spell(262115, 3.0) -- Mastery: Deep Wounds (DoT over 6s) + + spec(72) -- Fury + spell(184367, 2.5) -- Rampage + spell(96103, 1.0) -- Raging Blow + spell(113344, 2.5) -- Talent: Bloodbath + spell(50622, 2.5) -- Talent: Bladestorm + alias(85384, 96103) -- [MH/OH] Raging Blow + alias(335100, 96103) -- Talent: Reckless Abandon (Crushing Blow merged into Raging Blow) + alias(335098, 96103) -- Talent: Reckless Abandon (Crushing Blow merged into Raging Blow) + alias(95738, 50622) -- [MH/OH] Bladestorm + alias(218617, 184367) -- Rampage (1st Hit) + alias(184707, 184367) -- Rampage (2nd Hit) + alias(184709, 184367) -- Rampage (3rd Hit) + alias(201364, 184367) -- Rampage (4th Hit) + alias(201363, 184367) -- Rampage (5th Hit) + alias(385060, 385059) -- Talent: Odyns Fury + alias(385061, 385059) -- Talent: Odyns Fury + alias(385062, 385059) -- Talent: Odyns Fury + + spec(73) -- Protection + spell(115767, 3.5) -- Deep Wounds + spell(222944, 3.0) -- Talent: Inspiring Presence + spell(203526, 3.5) -- Artifact: Neltharion's Fury +end + +class("EVOKER") +do + spec(0) -- All Specs + + spec(1467) -- Devastation + + spec(1468) -- Preservation + spell(363502, 3.0) -- Talent: Dream Flight + alias(367231, 367230) -- Talent: Spiritbloom Cleave via Empowered Spell + alias(409895, 367230) -- Talent: Spiritbloom Cleave via Empowered Spell + + spec(1473) -- Augmentation +end diff --git a/xCT+/config/merge_dragonflight.lua b/xCT+/config/merge_dragonflight.lua new file mode 100644 index 00000000..77666a1d --- /dev/null +++ b/xCT+/config/merge_dragonflight.lua @@ -0,0 +1,28 @@ +--[[ ____ ______ + /\ _`\ /\__ _\ __ + __ _\ \ \/\_\/_/\ \/ /_\ \___ +/\ \/'\\ \ \/_/_ \ \ \/\___ __\ +\/> Weapon Fyr'alath + alias(413584, 417134) -- Explosive Rage -> Weapon Fyr'alath + + alias(426527, 426535) -- Amirdrassil Head Enchant (Melee) - 2nd Effect +end diff --git a/xCT+/config/merge_helpers.lua b/xCT+/config/merge_helpers.lua new file mode 100644 index 00000000..0459d3ed --- /dev/null +++ b/xCT+/config/merge_helpers.lua @@ -0,0 +1,83 @@ +--[[ ____ ______ + /\ _`\ /\__ _\ __ + __ _\ \ \/\_\/_/\ \/ /_\ \___ +/\ \/'\\ \ \/_/_ \ \ \/\___ __\ +\/> |r", + + -- events from a player's character + PLAYER = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 0, + + enableNameColor = true, + removeRealmName = true, + enableCustomNameColor = false, + customNameColor = { 1, 1, 1 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from a npc + NPC = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 0, + + enableNameColor = true, -- Always On (Not in Options) + removeRealmName = false, -- Always Off (Not in Options) + enableCustomNameColor = true, -- Always On (Not in Options) + customNameColor = { 0.3, 0, 0.3 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from the environment + ENVIRONMENT = { + nameType = 0, + }, + }, + + -- icons + iconsEnabled = true, + iconsSize = 16, + iconsEnabledAutoAttack = true, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- special tweaks + enableAutoAttack_Outgoing = true, -- OLD: enableAutoAttack + enablePetAutoAttack_Outgoing = true, + + enableOutDmg = true, + enablePetDmg = true, + enableVehicleDmg = true, + enableDotDmg = true, + enableImmunes = true, + enableMisses = true, + enableAbsorbs = true, + enablePartialMisses = false, + showHighestPartialMiss = false, + enableKillCommand = false, + }, + + critical = { + enabledFrame = true, + secondaryFrame = 0, + insertText = "bottom", + alpha = 100, + megaDamage = true, + + -- position + X = 192, + Y = 0, + Width = 256, + Height = 140, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 24, + fontOutline = "2OUTLINE", + fontJustify = "RIGHT", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- name formatting + names = { + + -- appearance + namePrefix = " |cffFFFFFF<|r", + namePostfix = "|cffFFFFFF>|r", + + -- events from a player's character + PLAYER = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 0, + + enableNameColor = true, + removeRealmName = true, + enableCustomNameColor = false, + customNameColor = { 1, 1, 1 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from a npc + NPC = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 0, + + enableNameColor = true, -- Always On (Not in Options) + removeRealmName = false, -- Always Off (Not in Options) + enableCustomNameColor = true, -- Always On (Not in Options) + customNameColor = { 0.3, 0, 0.3 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from the environment + ENVIRONMENT = { + nameType = 0, -- NOT SHOWN + }, + }, + + -- icons + iconsEnabled = true, + iconsSize = 16, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- special tweaks + enableAutoAttack_Critical = true, -- OLD: showSwing + prefixAutoAttack_Critical = true, -- OLD: prefixSwing + petCrits = false, + }, + + outgoing_healing = { + enabledFrame = false, + secondaryFrame = 2, + insertText = "bottom", + alpha = 100, + megaDamage = true, + + -- position + X = 400, + Y = 0, + Width = 164, + Height = 512, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 18, + fontOutline = "2OUTLINE", + fontJustify = "RIGHT", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- name formatting + names = { + -- appearance + namePrefix = " |cffFFFFFF<|r", + namePostfix = "|cffFFFFFF>|r", + + -- events from a player's character + PLAYER = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 0, + + enableNameColor = true, + removeRealmName = true, + enableCustomNameColor = false, + customNameColor = { 1, 1, 1 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from a npc + NPC = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 0, + + enableNameColor = true, -- Always On (Not in Options) + removeRealmName = false, -- Always Off (Not in Options) + enableCustomNameColor = true, -- Always On (Not in Options) + customNameColor = { 0.3, 0, 0.3 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from the environment + ENVIRONMENT = { + nameType = 0, + }, + }, + + -- icons + iconsEnabled = true, + iconsSize = 16, + iconsEnabledAutoAttack = true, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- special tweaks + enableAutoAttack_Outgoing = true, -- OLD: enableAutoAttack + enablePetAutoAttack_Outgoing = true, + + enableOutHeal = true, + enableHots = true, + enableImmunes = true, + enableMisses = true, + + enableOverhealing = true, + enableOverhealingFormat = false, + enableOverhealingSubtraction = false, + overhealingPrefix = " |cffFFFFFF(O: ", + overhealingPostfix = ")|r", + hideAbsorbedOutgoingHeals = false, + }, + + damage = { + enabledFrame = true, + secondaryFrame = 0, + insertText = "top", + alpha = 100, + megaDamage = true, + + -- position + X = -288, + Y = -80, + Width = 448, + Height = 160, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 18, + fontOutline = "2OUTLINE", + fontJustify = "LEFT", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- name formatting + names = { + + -- appearance + namePrefix = " |cffFFFFFF<|r", + namePostfix = "|cffFFFFFF>|r", + + -- events from a player's character + PLAYER = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 2, + + enableNameColor = true, + removeRealmName = true, + enableCustomNameColor = false, + customNameColor = { 1, 1, 1 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from a npc + NPC = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 2, + + enableNameColor = true, -- Always On (Not in Options) + removeRealmName = false, -- Always Off (Not in Options) + enableCustomNameColor = true, -- Always On (Not in Options) + customNameColor = { 0.3, 0, 0.3 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from the environment + ENVIRONMENT = { + -- Name Types: + -- 0 = None + -- 1 = Environment + -- 2 = Environment Type + -- 3 = Both ("Environment - Environment Type") + -- 4 = Both ("Environment Type - Environment") + nameType = 2, + + enableNameColor = true, + enableCustomNameColor = true, + removeRealmName = false, -- Always Off (Not in Options) + customNameColor = { 0.32, 0.317, 0.1 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + }, + + -- icons + iconsEnabled = true, + iconsSize = 14, + iconsEnabledAutoAttack = true, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- Special Tweaks + showDodgeParryMiss = true, + showDamageReduction = true, + }, + + healing = { + enabledFrame = true, + secondaryFrame = 0, + insertText = "bottom", + alpha = 100, + megaDamage = true, + + -- positioon + X = -288, + Y = 88, + Width = 448, + Height = 144, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 18, + fontOutline = "2OUTLINE", + fontJustify = "LEFT", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- name formatting + names = { + + -- appearance + namePrefix = " |cffFFFFFF<|r", + namePostfix = "|cffFFFFFF>|r", + + -- events from a player's character + PLAYER = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 1, + + enableNameColor = true, + removeRealmName = true, + enableCustomNameColor = false, + customNameColor = { 1, 1, 1 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from a npc + NPC = { + -- Name Types: + -- 0 = None + -- 1 = Source Name + -- 2 = Spell Name + -- 3 = Both ("Source Name - Spell Name") + -- 4 = Both ("Spell Name - Source Name") + nameType = 2, + + enableNameColor = true, -- Always On (Not in Options) + removeRealmName = false, -- Always On (Not in Options) + enableCustomNameColor = true, -- Always On (Not in Options) + customNameColor = { 0.3, 0, 0.3 }, + + enableSpellColor = true, + enableCustomSpellColor = false, + customSpellColor = { 1, 1, 1 }, + }, + + -- events from the environment + ENVIRONMENT = { + nameType = 0, -- NOT SHOWN + }, + }, + + -- icons + iconsEnabled = true, + iconsSize = 16, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- special tweaks + enableOverHeal = true, + hideAbsorbedHeals = false, + enableSelfAbsorbs = true, + showOnlyMyHeals = false, + showOnlyPetHeals = false, + }, + + --[[class = { + enabledFrame = true, + alpha = 100, + + -- position + X = 0, + Y = 64, + Width = 64, + Height = 64, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 64, + fontOutline = "2OUTLINE", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + },]] + + power = { + enabledFrame = true, + secondaryFrame = 0, + insertText = "bottom", + alpha = 100, + megaDamage = true, + + -- position + X = 0, + Y = -16, + Width = 128, + Height = 96, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 17, + fontOutline = "2OUTLINE", + fontJustify = "CENTER", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- special tweaks + showEnergyGains = true, + showEnergyType = true, + + -- Generated from "Blizzard Add-On's/Constants.lua" + disableResource_MANA = false, + disableResource_RAGE = false, + disableResource_FOCUS = false, + disableResource_ENERGY = false, + + disableResource_RUNES = true, + disableResource_RUNIC_POWER = false, + disableResource_SOUL_SHARDS = false, + disableResource_LUNAR_POWER = true, + + disableResource_CHI_POWER = true, + disableResource_HOLY_POWER = false, + disableResource_INSANITY_POWER = false, + disableResource_MAELSTROM_POWER = true, + + disableResource_ARCANE_CHARGES = false, + disableResource_FURY = false, + disableResource_PAIN = false, + }, + + procs = { + enabledFrame = true, + secondaryFrame = 0, + insertText = "top", + alpha = 100, + + -- position + X = 0, + Y = -256, + Width = 294, + Height = 64, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 24, + fontOutline = "2OUTLINE", + fontJustify = "CENTER", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- icons + iconsEnabled = true, + iconsSize = 16, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + }, + + loot = { + enabledFrame = true, + secondaryFrame = 0, + insertText = "top", + alpha = 100, + + -- position + X = 0, + Y = -352, + Width = 512, + Height = 128, + + -- fonts + font = "Condensed Bold (xCT+)", + fontSize = 18, + fontOutline = "2OUTLINE", + fontJustify = "CENTER", + + -- font shadow + enableFontShadow = true, + fontShadowColor = { 0, 0, 0, 0.6 }, + fontShadowOffsetX = 2, + fontShadowOffsetY = -2, + + -- font colors + customColor = false, + fontColor = { 1.00, 1.00, 1.00 }, + + -- icons + iconsEnabled = true, + iconsSize = 16, + spacerIconsEnabled = true, + + -- scrollable + enableScrollable = false, + scrollableLines = 10, + scrollableInCombat = false, + + -- fading text + enableCustomFade = true, + enableFade = true, + fadeTime = 0.3, + visibilityTime = 5, + + -- special tweaks + showItems = true, + showItemTypes = true, + showMoney = true, + showItemTotal = true, + showCrafted = true, + showQuest = true, + showPurchased = false, + colorBlindMoney = false, + filterItemQuality = 3, + }, + }, + + spells = { + enableMerger = true, -- enable/disable spam merger + mergeEverythingInterval = 0.5, + mergeIncomingHealingInterval = 5, + mergeIncomingDamageInterval = 1, + mergeIncomingMissesInterval = 3, + mergeOutgoingDamageMissesInterval = 3, + mergeDispellInterval = 1, + mergeReputationInterval = 3, + mergePetInterval = 3, + mergeVehicle = true, + mergePetColor = { 1, 0.5, 0 }, + mergeVehicleColor = { 0, 0.5, 1 }, + + -- Only one of these can be true + mergeDontMergeCriticals = true, + mergeCriticalsWithOutgoing = false, + mergeCriticalsByThemselves = false, + mergeHideMergedCriticals = false, + + -- Abbreviate or Groups Settings + formatAbbreviate = false, + formatGroups = true, + + -- This gets dynamically generated + merge = {}, + + -- yes this is supposed to be blank :P + -- it is dynamically generated in core.lua + items = {}, + }, + + spellFilter = { + whitelistBuffs = false, + whitelistDebuffs = false, + whitelistSpells = false, + whitelistProcs = false, + whitelistItems = false, + whitelistDamage = false, + whitelistHealing = false, + trackSpells = true, + + listSpells = {}, -- Used to filter outgoing spells (Spell ID) + listBuffs = {}, -- Used to filter gains/fades of buffs (Spell Name) + listDebuffs = {}, -- Used to filter gains/fades of debuffs (Spell Name) + listProcs = {}, -- Used to filter spell procs (Proc Name) + listItems = {}, -- Used to filter Items (Item ID) + listDamage = {}, -- Used to filter incoming damage (Spell ID) + listHealing = {}, -- Used to filter incoming healing (Spell ID) + + -- Minimal Spell Amount + filterPowerValue = 0, + + filterOutgoingDamageValue = 0, + filterOutgoingDamageCritEnabled = false, + filterOutgoingDamageCritValue = 0, + + filterOutgoingHealingValue = 0, + filterOutgoingHealingCritEnabled = false, + filterOutgoingHealingCritValue = 0, + + filterIncomingDamageValue = 0, + filterIncomingDamageCritEnabled = false, + filterIncomingDamageCritValue = 0, + + filterIncomingHealingValue = 0, + filterIncomingHealingCritEnabled = false, + filterIncomingHealingCritValue = 0, + }, + + Colors = { + -- General + combatEntering = { + enabled = false, + desc = "Entering Combat", + category = "general", + default = { 1.00, 0.10, 0.10 }, + }, + combatLeaving = { + enabled = false, + desc = "Leaving Combat", + category = "general", + default = { 0.10, 1.00, 0.10 }, + }, + interrupts = { + enabled = false, + desc = "Interrupts", + category = "general", + default = { 1.00, 0.50, 0.00 }, + }, + killingBlow = { + enabled = false, + desc = "Killing Blows", + category = "general", + default = { 0.20, 1.00, 0.20 }, + }, + buffsGained = { + enabled = false, + desc = "Buffs Gained", + category = "general", + default = { 1.00, 0.50, 0.50 }, + }, + buffsFaded = { + enabled = false, + desc = "Buffs Faded", + category = "general", + default = { 0.50, 0.50, 0.50 }, + }, + debuffsGained = { + enabled = false, + desc = "Debuffs Gained", + category = "general", + default = { 1.00, 0.10, 0.10 }, + }, + debuffsFaded = { + enabled = false, + desc = "Debuffs Faded", + category = "general", + default = { 0.50, 0.50, 0.50 }, + }, + dispellBuffs = { + enabled = false, + desc = "Buffs", + category = "general", + default = { 0.00, 1.00, 0.50 }, + }, + dispellDebuffs = { + enabled = false, + desc = "Debuffs", + category = "general", + default = { 1.00, 0.00, 0.50 }, + }, + dispellStolen = { + enabled = false, + desc = "Spell Stolen", + category = "general", + default = { 0.31, 0.71, 1.00 }, + }, + lowResourcesHealth = { + enabled = false, + desc = "Low Health", + category = "general", + default = { 1.00, 0.10, 0.10 }, + }, + lowResourcesMana = { + enabled = false, + desc = "Low Mana", + category = "general", + default = { 1.00, 0.10, 0.10 }, + }, + + -- Outgoing Damage + melee = { + enabled = false, + desc = "Auto Attack Damage", + category = "outgoing_damage", + default = { 1.00, 1.00, 1.00 }, + }, + misstypesOut = { + enabled = false, + desc = "Missed Attacks", + category = "outgoing_damage", + default = { 0.50, 0.50, 0.50 }, + }, + + -- Outgoing Healing + healingOut = { + enabled = false, + desc = "Healing", + category = "outgoing_healing", + default = { 0.10, 0.75, 0.10 }, + }, + healingOutPeriodic = { + enabled = false, + desc = "Healing (Periodic)", + category = "outgoing_healing", + default = { 0.10, 0.50, 0.10 }, + }, + + -- Outgoing (Criticals) + meleeCrit = { + enabled = false, + desc = "Auto Attack Damage (Critical)", + category = "outgoing_criticals", + default = { 1.00, 1.00, 0.00 }, + }, + healingOutCritical = { + enabled = false, + desc = "Healing (Critical)", + category = "outgoing_criticals", + default = { 0.10, 1.00, 0.10 }, + }, + + -- Incoming Damage + damageTaken = { + enabled = false, + desc = "Physical Damage", + category = "incoming_damage", + default = { 0.75, 0.10, 0.10 }, + }, + damageTakenCritical = { + enabled = false, + desc = "Critical Physical Damage", + category = "incoming_damage", + default = { 1.00, 0.10, 0.10 }, + }, + spellDamageTaken = { + enabled = false, + desc = "Spell Damage", + category = "incoming_damage", + default = { 0.75, 0.30, 0.85 }, + }, + spellDamageTakenCritical = { + enabled = false, + desc = "Critical Spell Damage", + category = "incoming_damage", + default = { 0.75, 0.30, 0.85 }, + }, + missTypeMiss = { + enabled = false, + desc = "Missed", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeDodge = { + enabled = false, + desc = "Dodged", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeParry = { + enabled = false, + desc = "Parry", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeEvade = { + enabled = false, + desc = "Evade", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeDeflect = { + enabled = false, + desc = "Deflect", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeImmune = { + enabled = false, + desc = "Immune", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeReflect = { + enabled = false, + desc = "Reflect", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeResist = { + enabled = false, + desc = "Resisted", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeBlock = { + enabled = false, + desc = "Blocked", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeAbsorb = { + enabled = false, + desc = "Absorbed", + category = "incoming_damage", + default = { 0.50, 0.50, 0.50 }, + }, + missTypeResistPartial = { + enabled = false, + desc = "Resisted |cff798BDD(Partial)|r", + category = "incoming_damage", + default = { 0.75, 0.50, 0.50 }, + }, + missTypeBlockPartial = { + enabled = false, + desc = "Blocked |cff798BDD(Partial)|r", + category = "incoming_damage", + default = { 0.75, 0.50, 0.50 }, + }, + missTypeAbsorbPartial = { + enabled = false, + desc = "Absorbed |cff798BDD(Partial)|r", + category = "incoming_damage", + default = { 0.75, 0.50, 0.50 }, + }, + + -- Incoming Healing + healingTaken = { + enabled = false, + desc = "Healing", + category = "incoming_healing", + default = { 0.10, 0.75, 0.10 }, + }, + healingTakenCritical = { + enabled = false, + desc = "Critical Healing", + category = "incoming_healing", + default = { 0.10, 1.00, 0.10 }, + }, + healingTakenPeriodic = { + enabled = false, + desc = "Periodic Healing", + category = "incoming_healing", + default = { 0.10, 0.50, 0.10 }, + }, + healingTakenPeriodicCritical = { + enabled = false, + desc = "Critical Periodic Healing", + category = "incoming_healing", + default = { 0.10, 0.50, 0.10 }, + }, + + -- Class Power + -- https://github.com/Gethe/wow-ui-source/blob/e337b8949ffad2876ea0489d8331db2414342d32 + -- /AddOns/Blizzard_CombatLog/Blizzard_CombatLog.lua#L1797 + color_MANA = { + enabled = false, + desc = MANA, + category = "class_power", + default = { 0.00, 0.00, 1.00 }, + }, + color_RAGE = { + enabled = false, + desc = RAGE, + category = "class_power", + default = { 1.00, 0.00, 0.00 }, + }, + color_FURY = { + enabled = false, + desc = FURY, + category = "class_power", + default = { 0.788, 0.259, 0.992 }, + }, + color_PAIN = { + enabled = false, + desc = PAIN, + category = "class_power", + default = { 1.000, 0.612, 0.000 }, + }, + color_FOCUS = { + enabled = false, + desc = FOCUS, + category = "class_power", + default = { 1.00, 0.50, 0.25 }, + }, + color_RUNES = { + enabled = false, + desc = RUNES, + category = "class_power", + default = { 0.50, 0.50, 0.50 }, + }, + color_ENERGY = { + enabled = false, + desc = ENERGY, + category = "class_power", + default = { 1.00, 1.00, 0.00 }, + }, + color_CHI_POWER = { + enabled = false, + desc = CHI_POWER, + category = "class_power", + default = { 0.71, 1.00, 0.92 }, + }, + color_HOLY_POWER = { + enabled = false, + desc = HOLY_POWER, + category = "class_power", + default = { 0.95, 0.90, 0.60 }, + }, + color_RUNIC_POWER = { + enabled = false, + desc = RUNIC_POWER, + category = "class_power", + default = { 0.00, 0.82, 1.00 }, + }, + color_SOUL_SHARDS = { + enabled = false, + desc = SOUL_SHARDS, + category = "class_power", + default = { 0.50, 0.32, 0.55 }, + }, + color_LUNAR_POWER = { + enabled = false, + desc = LUNAR_POWER, + category = "class_power", + default = { 0.30, 0.52, 0.90 }, + }, + color_INSANITY_POWER = { + enabled = false, + desc = INSANITY_POWER, + category = "class_power", + default = { 0.40, 0.00, 0.80 }, + }, + color_MAELSTROM_POWER = { + enabled = false, + desc = MAELSTROM_POWER, + category = "class_power", + default = { 0.00, 0.50, 1.00 }, + }, + color_ALTERNATE_POWER = { + enabled = false, + desc = ALTERNATE_POWER_TEXT, + category = "class_power", + default = { 0.10, 0.10, 0.98 }, + }, + color_ARCANE_CHARGES_POWER = { + enabled = false, + desc = ARCANE_CHARGES_POWER, + category = "class_power", + default = { 0.10, 0.10, 0.98 }, + }, + -- TODO Vigor (Skyriding) & Evoker + + -- Procs + spellProc = { + enabled = false, + desc = "Spell Procs", + category = "procs", + default = { 1.00, 0.82, 0.00 }, + }, + spellReactive = { + enabled = false, + desc = "Spell Reactive", + category = "procs", + default = { 1.00, 0.82, 0.00 }, + }, + + -- Loot, Currency & Money + honorGains = { + enabled = false, + desc = "Honor Gained", + category = "loot", + default = { 0.10, 0.10, 1.00 }, + }, + reputationGain = { + enabled = false, + desc = "Reputation Gained", + category = "loot", + default = { 0.10, 0.10, 1.00 }, + }, + reputationLoss = { + enabled = false, + desc = "Reputation Lost", + category = "loot", + default = { 1.00, 0.10, 0.10 }, + }, + }, + }, +} diff --git a/xCT+/init.lua b/xCT+/init.lua new file mode 100644 index 00000000..8d056b9c --- /dev/null +++ b/xCT+/init.lua @@ -0,0 +1,19 @@ +--[[ ____ ______ + /\ _`\ /\__ _\ __ + __ _\ \ \/\_\/_/\ \/ /_\ \___ +/\ \/'\\ \ \/_/_ \ \ \/\___ __\ +\/> +