From deb563a08ce565501c34e95c2dea67ee53f3d08c Mon Sep 17 00:00:00 2001 From: Kate Martin <51387586+renanthera@users.noreply.github.com> Date: Mon, 18 May 2026 01:08:34 -0600 Subject: [PATCH 1/6] [profiles] Initial pass to remove profiles from the SimC repository. TODO: Create a new home for them. --- .github/workflows/build.yml | 2 - .github/workflows/generate_files.yml | 9 - .github/workflows/main.yml | 27 +- .github/workflows/spec_test.yml | 50 - CONTRIBUTING.md | 6 - Dockerfile | 4 +- cli/cli.pro | 6 +- gui/gui.pro | 12 +- profiles/MID1/MID1_Death_Knight_Blood.simc | 113 - .../MID1_Death_Knight_Blood_Deathbringer.simc | 112 - profiles/MID1/MID1_Death_Knight_Frost.simc | 158 -- .../MID1/MID1_Death_Knight_Frost_Rider.simc | 158 -- profiles/MID1/MID1_Death_Knight_Unholy.simc | 129 - .../MID1_Death_Knight_Unholy_San'layn.simc | 129 - profiles/MID1/MID1_Demon_Hunter_Devourer.simc | 131 - ...D1_Demon_Hunter_Devourer_Void-Scarred.simc | 131 - profiles/MID1/MID1_Demon_Hunter_Havoc.simc | 186 -- .../MID1/MID1_Demon_Hunter_Vengeance.simc | 323 --- ...emon_Hunter_Vengeance_Aldrachi_Reaver.simc | 323 --- profiles/MID1/MID1_Druid_Balance.simc | 184 -- profiles/MID1/MID1_Druid_Feral.simc | 221 -- profiles/MID1/MID1_Druid_Guardian.simc | 115 - profiles/MID1/MID1_Evoker_Devastation.simc | 163 -- profiles/MID1/MID1_Evoker_Devastation_FS.simc | 163 -- profiles/MID1/MID1_Hunter_Beast_Mastery.simc | 121 - profiles/MID1/MID1_Hunter_Marksmanship.simc | 133 - profiles/MID1/MID1_Hunter_Survival.simc | 131 - profiles/MID1/MID1_Mage_Arcane.simc | 155 -- profiles/MID1/MID1_Mage_Arcane_Sunfury.simc | 155 -- profiles/MID1/MID1_Mage_Fire.simc | 191 -- profiles/MID1/MID1_Mage_Fire_Frostfire.simc | 191 -- profiles/MID1/MID1_Mage_Frost.simc | 194 -- profiles/MID1/MID1_Mage_Frost_Frostfire.simc | 194 -- profiles/MID1/MID1_Monk_Brewmaster.simc | 125 - profiles/MID1/MID1_Monk_Windwalker.simc | 217 -- .../MID1/MID1_Monk_Windwalker_Conduit.simc | 218 -- profiles/MID1/MID1_Paladin_Protection.simc | 89 - .../MID1_Paladin_Protection_Lightsmith.simc | 89 - profiles/MID1/MID1_Paladin_Retribution.simc | 97 - .../MID1/MID1_Paladin_Retribution_Herald.simc | 97 - profiles/MID1/MID1_Priest_Shadow.simc | 140 -- profiles/MID1/MID1_Priest_Shadow_Archon.simc | 140 -- profiles/MID1/MID1_Rogue_Assassination.simc | 144 -- profiles/MID1/MID1_Rogue_Outlaw.simc | 128 - .../MID1/MID1_Rogue_Outlaw_Trickster.simc | 128 - profiles/MID1/MID1_Rogue_Subtlety.simc | 118 - profiles/MID1/MID1_Shaman_Elemental.simc | 142 -- profiles/MID1/MID1_Shaman_Enhancement.simc | 169 -- .../MID1_Shaman_Enhancement_Stormbringer.simc | 169 -- profiles/MID1/MID1_Warlock_Affliction.simc | 187 -- .../MID1_Warlock_Affliction_Hellcaller.simc | 187 -- profiles/MID1/MID1_Warlock_Demonology.simc | 122 - profiles/MID1/MID1_Warlock_Destruction.simc | 139 -- .../MID1_Warlock_Destruction_Diabolist.simc | 139 -- .../MID1_Warlock_Destruction_Hellcaller.simc | 139 -- profiles/MID1/MID1_Warrior_Arms.simc | 226 -- profiles/MID1/MID1_Warrior_Fury.simc | 178 -- profiles/MID1/MID1_Warrior_Protection.simc | 135 - profiles/MID1_Raid.simc | 73 - profiles/PR_Raid.simc | 50 - profiles/generators/MID1/MID1_Generate.simc | 57 - .../MID1/MID1_Generate_Deathknight.simc | 160 -- .../MID1/MID1_Generate_Demonhunter.simc | 174 -- .../generators/MID1/MID1_Generate_Druid.simc | 110 - .../generators/MID1/MID1_Generate_Evoker.simc | 54 - .../generators/MID1/MID1_Generate_Hunter.simc | 140 -- .../generators/MID1/MID1_Generate_Mage.simc | 201 -- .../generators/MID1/MID1_Generate_Monk.simc | 79 - .../MID1/MID1_Generate_Paladin.simc | 105 - .../generators/MID1/MID1_Generate_Priest.simc | 51 - .../generators/MID1/MID1_Generate_Rogue.simc | 108 - .../generators/MID1/MID1_Generate_Shaman.simc | 108 - .../MID1/MID1_Generate_Warlock.simc | 163 -- .../MID1/MID1_Generate_Warrior.simc | 80 - profiles/generators/PreRaids/PR_Generate.simc | 50 - .../PreRaids/PR_Generate_Deathknight.simc | 79 - .../PreRaids/PR_Generate_Demonhunter.simc | 53 - .../PreRaids/PR_Generate_Druid.simc | 83 - .../PreRaids/PR_Generate_Evoker.simc | 24 - .../PreRaids/PR_Generate_Hunter.simc | 79 - .../generators/PreRaids/PR_Generate_Mage.simc | 80 - .../generators/PreRaids/PR_Generate_Monk.simc | 54 - .../PreRaids/PR_Generate_Paladin.simc | 81 - .../PreRaids/PR_Generate_Priest.simc | 25 - .../PreRaids/PR_Generate_Rogue.simc | 83 - .../PreRaids/PR_Generate_Shaman.simc | 110 - .../PreRaids/PR_Generate_Warlock.simc | 82 - .../PreRaids/PR_Generate_Warrior.simc | 79 - profiles/tests/talent_combinations.simc | 2193 ----------------- profiles/tests/trinkets_bfa_agi.simc | 144 -- profiles/tests/trinkets_bfa_int.simc | 135 - profiles/tests/trinkets_bfa_str.simc | 138 -- profiles/tests/trinkets_dragonflight_agi.simc | 117 - profiles/tests/trinkets_dragonflight_int.simc | 120 - profiles/tests/trinkets_dragonflight_str.simc | 123 - profiles/tests/trinkets_legion_agi.simc | 165 -- profiles/tests/trinkets_legion_int.simc | 174 -- profiles/tests/trinkets_legion_str.simc | 156 -- profiles/tests/trinkets_shadowlands_agi.simc | 162 -- profiles/tests/trinkets_shadowlands_int.simc | 159 -- profiles/tests/trinkets_shadowlands_str.simc | 159 -- qt/MainWindow.cpp | 6 - qt/sc_SampleProfilesTab.cpp | 157 -- qt/sc_SampleProfilesTab.hpp | 22 - qt/sc_window.cpp | 1 - source_files/QT_gui.pri | 2 - source_files/VS_gui.props | 9 - source_files/cmake_gui.txt | 2 - 108 files changed, 18 insertions(+), 14783 deletions(-) delete mode 100644 profiles/MID1/MID1_Death_Knight_Blood.simc delete mode 100644 profiles/MID1/MID1_Death_Knight_Blood_Deathbringer.simc delete mode 100644 profiles/MID1/MID1_Death_Knight_Frost.simc delete mode 100644 profiles/MID1/MID1_Death_Knight_Frost_Rider.simc delete mode 100644 profiles/MID1/MID1_Death_Knight_Unholy.simc delete mode 100644 profiles/MID1/MID1_Death_Knight_Unholy_San'layn.simc delete mode 100644 profiles/MID1/MID1_Demon_Hunter_Devourer.simc delete mode 100644 profiles/MID1/MID1_Demon_Hunter_Devourer_Void-Scarred.simc delete mode 100644 profiles/MID1/MID1_Demon_Hunter_Havoc.simc delete mode 100644 profiles/MID1/MID1_Demon_Hunter_Vengeance.simc delete mode 100644 profiles/MID1/MID1_Demon_Hunter_Vengeance_Aldrachi_Reaver.simc delete mode 100644 profiles/MID1/MID1_Druid_Balance.simc delete mode 100644 profiles/MID1/MID1_Druid_Feral.simc delete mode 100644 profiles/MID1/MID1_Druid_Guardian.simc delete mode 100644 profiles/MID1/MID1_Evoker_Devastation.simc delete mode 100644 profiles/MID1/MID1_Evoker_Devastation_FS.simc delete mode 100644 profiles/MID1/MID1_Hunter_Beast_Mastery.simc delete mode 100644 profiles/MID1/MID1_Hunter_Marksmanship.simc delete mode 100644 profiles/MID1/MID1_Hunter_Survival.simc delete mode 100644 profiles/MID1/MID1_Mage_Arcane.simc delete mode 100644 profiles/MID1/MID1_Mage_Arcane_Sunfury.simc delete mode 100644 profiles/MID1/MID1_Mage_Fire.simc delete mode 100644 profiles/MID1/MID1_Mage_Fire_Frostfire.simc delete mode 100644 profiles/MID1/MID1_Mage_Frost.simc delete mode 100644 profiles/MID1/MID1_Mage_Frost_Frostfire.simc delete mode 100644 profiles/MID1/MID1_Monk_Brewmaster.simc delete mode 100644 profiles/MID1/MID1_Monk_Windwalker.simc delete mode 100644 profiles/MID1/MID1_Monk_Windwalker_Conduit.simc delete mode 100644 profiles/MID1/MID1_Paladin_Protection.simc delete mode 100644 profiles/MID1/MID1_Paladin_Protection_Lightsmith.simc delete mode 100644 profiles/MID1/MID1_Paladin_Retribution.simc delete mode 100644 profiles/MID1/MID1_Paladin_Retribution_Herald.simc delete mode 100644 profiles/MID1/MID1_Priest_Shadow.simc delete mode 100644 profiles/MID1/MID1_Priest_Shadow_Archon.simc delete mode 100644 profiles/MID1/MID1_Rogue_Assassination.simc delete mode 100644 profiles/MID1/MID1_Rogue_Outlaw.simc delete mode 100644 profiles/MID1/MID1_Rogue_Outlaw_Trickster.simc delete mode 100644 profiles/MID1/MID1_Rogue_Subtlety.simc delete mode 100644 profiles/MID1/MID1_Shaman_Elemental.simc delete mode 100644 profiles/MID1/MID1_Shaman_Enhancement.simc delete mode 100644 profiles/MID1/MID1_Shaman_Enhancement_Stormbringer.simc delete mode 100644 profiles/MID1/MID1_Warlock_Affliction.simc delete mode 100644 profiles/MID1/MID1_Warlock_Affliction_Hellcaller.simc delete mode 100644 profiles/MID1/MID1_Warlock_Demonology.simc delete mode 100644 profiles/MID1/MID1_Warlock_Destruction.simc delete mode 100644 profiles/MID1/MID1_Warlock_Destruction_Diabolist.simc delete mode 100644 profiles/MID1/MID1_Warlock_Destruction_Hellcaller.simc delete mode 100644 profiles/MID1/MID1_Warrior_Arms.simc delete mode 100644 profiles/MID1/MID1_Warrior_Fury.simc delete mode 100644 profiles/MID1/MID1_Warrior_Protection.simc delete mode 100644 profiles/MID1_Raid.simc delete mode 100644 profiles/PR_Raid.simc delete mode 100644 profiles/generators/MID1/MID1_Generate.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Deathknight.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Demonhunter.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Druid.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Evoker.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Hunter.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Mage.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Monk.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Paladin.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Priest.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Rogue.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Shaman.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Warlock.simc delete mode 100644 profiles/generators/MID1/MID1_Generate_Warrior.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Deathknight.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Demonhunter.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Druid.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Evoker.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Hunter.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Mage.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Monk.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Paladin.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Priest.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Rogue.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Shaman.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Warlock.simc delete mode 100644 profiles/generators/PreRaids/PR_Generate_Warrior.simc delete mode 100644 profiles/tests/talent_combinations.simc delete mode 100644 profiles/tests/trinkets_bfa_agi.simc delete mode 100644 profiles/tests/trinkets_bfa_int.simc delete mode 100644 profiles/tests/trinkets_bfa_str.simc delete mode 100644 profiles/tests/trinkets_dragonflight_agi.simc delete mode 100644 profiles/tests/trinkets_dragonflight_int.simc delete mode 100644 profiles/tests/trinkets_dragonflight_str.simc delete mode 100644 profiles/tests/trinkets_legion_agi.simc delete mode 100644 profiles/tests/trinkets_legion_int.simc delete mode 100644 profiles/tests/trinkets_legion_str.simc delete mode 100644 profiles/tests/trinkets_shadowlands_agi.simc delete mode 100644 profiles/tests/trinkets_shadowlands_int.simc delete mode 100644 profiles/tests/trinkets_shadowlands_str.simc delete mode 100644 qt/sc_SampleProfilesTab.cpp delete mode 100644 qt/sc_SampleProfilesTab.hpp diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 27a70c7e477..8508a911fa0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,7 +64,6 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles .git key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} @@ -130,7 +129,6 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles .git key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} diff --git a/.github/workflows/generate_files.yml b/.github/workflows/generate_files.yml index 290d19b10ab..8b728546df1 100644 --- a/.github/workflows/generate_files.yml +++ b/.github/workflows/generate_files.yml @@ -14,7 +14,6 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles .git key: ubuntu-clang++-15-for_run-${{ github.sha }}-cpp-17 @@ -36,13 +35,6 @@ jobs: pattern: apl-${{ github.sha }}-* merge-multiple: true - - name: Download Profiles - uses: actions/download-artifact@v8 - with: - path: profiles - pattern: profiles-${{ github.sha }}-* - merge-multiple: true - - name: Dump Spell Data if: steps.cache.outputs.cache-hit == 'true' env: @@ -72,4 +64,3 @@ jobs: with: name: | apl-${{ github.sha }}-* - profiles-${{ github.sha }}-* diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bfeeebb8c84..2fdf28fa83e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,7 +12,6 @@ on: - "casc_extract/**" env: - SIMC_PROFILE: profiles/CI.simc CCACHE_GENERATION: 0 # bump if you need to "clean" ccache # Most CI jobs only run if you are either: @@ -110,43 +109,43 @@ jobs: local file="$1" case "$file" in - engine/class_modules/sc_death_knight.cpp|engine/class_modules/apl/apl_death_knight.*|profiles/generators/*/*_Generate_Deathknight.simc) + engine/class_modules/sc_death_knight.cpp|engine/class_modules/apl/apl_death_knight.*) mark_class_changed deathknight ;; - engine/class_modules/sc_demon_hunter.cpp|engine/class_modules/apl/apl_demon_hunter.*|engine/class_modules/apl/demon_hunter/*|profiles/generators/*/*_Generate_Demonhunter.simc) + engine/class_modules/sc_demon_hunter.cpp|engine/class_modules/apl/apl_demon_hunter.*|engine/class_modules/apl/demon_hunter/*) mark_class_changed demonhunter ;; - engine/class_modules/sc_druid.cpp|engine/class_modules/apl/druid/*|profiles/generators/*/*_Generate_Druid.simc) + engine/class_modules/sc_druid.cpp|engine/class_modules/apl/druid/*) mark_class_changed druid ;; - engine/class_modules/sc_evoker.cpp|engine/class_modules/apl/apl_evoker.*|profiles/generators/*/*_Generate_Evoker.simc) + engine/class_modules/sc_evoker.cpp|engine/class_modules/apl/apl_evoker.*) mark_class_changed evoker ;; - engine/class_modules/sc_hunter.cpp|engine/class_modules/apl/hunter/*|engine/class_modules/apl/apl_hunter.*|profiles/generators/*/*_Generate_Hunter.simc) + engine/class_modules/sc_hunter.cpp|engine/class_modules/apl/hunter/*|engine/class_modules/apl/apl_hunter.*) mark_class_changed hunter ;; - engine/class_modules/sc_mage.cpp|engine/class_modules/apl/mage.*|profiles/generators/*/*_Generate_Mage.simc) + engine/class_modules/sc_mage.cpp|engine/class_modules/apl/mage.*) mark_class_changed mage ;; - engine/class_modules/monk/*|engine/class_modules/apl/apl_monk.*|profiles/generators/*/*_Generate_Monk.simc) + engine/class_modules/monk/*|engine/class_modules/apl/apl_monk.*) mark_class_changed monk ;; - engine/class_modules/paladin/*|engine/class_modules/apl/apl_paladin.*|profiles/generators/*/*_Generate_Paladin.simc) + engine/class_modules/paladin/*|engine/class_modules/apl/apl_paladin.*) mark_class_changed paladin ;; - engine/class_modules/priest/*|engine/class_modules/apl/apl_priest.*|profiles/generators/*/*_Generate_Priest.simc) + engine/class_modules/priest/*|engine/class_modules/apl/apl_priest.*) mark_class_changed priest ;; - engine/class_modules/sc_rogue.cpp|engine/class_modules/apl/rogue/*|engine/class_modules/apl/apl_rogue.*|profiles/generators/*/*_Generate_Rogue.simc) + engine/class_modules/sc_rogue.cpp|engine/class_modules/apl/rogue/*|engine/class_modules/apl/apl_rogue.*) mark_class_changed rogue ;; - engine/class_modules/sc_shaman.cpp|engine/class_modules/apl/apl_shaman.*|engine/class_modules/apl/shaman/*|profiles/generators/*/*_Generate_Shaman.simc) + engine/class_modules/sc_shaman.cpp|engine/class_modules/apl/apl_shaman.*|engine/class_modules/apl/shaman/*) mark_class_changed shaman ;; - engine/class_modules/warlock/*|engine/class_modules/apl/warlock.*|profiles/generators/*/*_Generate_Warlock.simc) + engine/class_modules/warlock/*|engine/class_modules/apl/warlock.*) mark_class_changed warlock ;; - engine/class_modules/sc_warrior.cpp|engine/class_modules/apl/apl_warrior.*|profiles/generators/*/*_Generate_Warrior.simc) + engine/class_modules/sc_warrior.cpp|engine/class_modules/apl/apl_warrior.*) mark_class_changed warrior ;; *) diff --git a/.github/workflows/spec_test.yml b/.github/workflows/spec_test.yml index 3ee66e9444f..2ee2ab73c24 100644 --- a/.github/workflows/spec_test.yml +++ b/.github/workflows/spec_test.yml @@ -38,7 +38,6 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles .git key: ${{ inputs.cache-key }} @@ -368,52 +367,3 @@ jobs: path: | ActionPriorityLists/*/${{ matrix.spec }}.simc retention-days: 1 - - - name: Generate Profiles - id: generate_profiles - if: github.event_name == 'push' && !failure() && !inputs.is-ptr - continue-on-error: true - shell: bash - run: | - cd profiles - for dir in generators/*; do - if [ -d $dir ]; then - SEASON=${dir##*/} - GENERATOR=${SEASON}_Generate_${{ env.CLASS_STR_CAP }}.simc - if [ -f $dir/$GENERATOR ]; then - cd $SEASON - echo "---$SEASON---${{ env.CLASS_STR_CAP }}---$GENERATOR---" - ${{ runner.workspace }}/b/ninja/simc $dir/$GENERATOR - cd .. - fi - fi - done - - - name: Check Profile Changes - id: check_profile_changes - if: steps.generate_profiles.outcome == 'success' - continue-on-error: true - shell: bash - run: | - CHANGED=$(git status --porcelain -- profiles/*/*.simc | sed 's/^...//') - if [ -n "$CHANGED" ]; then - echo "changed=true" >> "$GITHUB_OUTPUT" - echo "Changed profile files:" - echo "$CHANGED" - mkdir -p /tmp/changed_profiles - echo "$CHANGED" | while read -r f; do - cp --parents "$f" /tmp/changed_profiles/ - done - else - echo "changed=false" >> "$GITHUB_OUTPUT" - echo "No profile files changed" - fi - - - name: Upload Profiles - if: steps.check_profile_changes.outputs.changed == 'true' - continue-on-error: true - uses: actions/upload-artifact@v6 - with: - name: profiles-${{ github.sha }}-${{ matrix.spec }} - path: /tmp/changed_profiles/profiles/ - retention-days: 1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 317eb3d307e..7371042fefb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,12 +11,6 @@ initiative and help out wherever needed. GitHub provides considerable utilities The mantra is: Just check it in. Don't ask for permission. If the code needs to be changed for functional (or artistic!) reasons, someone will revert/modify as needed. -## Profiles -SimulationCraft includes a set of sample profiles for the current raiding tier, which are located in /profiles. -If you want to improve those profiles, please note to the following: - * Change character profile settings like talents & gear in the files you can find at /profiles/generators. - The files in /profiles are auto-generated and will be overriden. - ## Action Priority List (APL) SimulationCraft includes a set of default action priority lists for each specialization, to offer users a ready-to-use simulation experience once they import their character. This APL is the main factor defining if a character performs just ok diff --git a/Dockerfile b/Dockerfile index 750b33c51c8..b94acb15c2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,6 @@ # To reduce the footprint of this image all SimulationCraft files are # removed except: # - ./simc -# - ./profiles/* # # build image @@ -75,9 +74,8 @@ RUN \ libgcc \ libstdc++ -# get compiled simc and profiles +# get compiled simc COPY --from=build /app/SimulationCraft/engine/simc /app/SimulationCraft/ -COPY --from=build /app/SimulationCraft/profiles/ /app/SimulationCraft/profiles/ WORKDIR /app/SimulationCraft diff --git a/cli/cli.pro b/cli/cli.pro index c927d0a964d..0c79b2c5d5e 100644 --- a/cli/cli.pro +++ b/cli/cli.pro @@ -27,15 +27,11 @@ unix { # Deployment for Linux unix:!macx { DISTFILES += CHANGES COPYING - INSTALLS += target Profiles + INSTALLS += target # Disable strip QMAKE_STRIP = echo target.path = $$DESTDIR$$PREFIX/bin/ - - Profiles.files = $$files(../profiles/*, recursive=true) - Profiles.path = $$SHAREPATH/profiles - Profiles.commands = @echo Installing profiles to $$SHAREPATH/profiles } include(../source_files/QT_engine_main.pri) diff --git a/gui/gui.pro b/gui/gui.pro index 649e5213c90..ac30261159c 100755 --- a/gui/gui.pro +++ b/gui/gui.pro @@ -33,8 +33,6 @@ CONFIG(debug, debug|release): LIBS += -L../lib/debug -lsimcengine Resources.files = ../qt/Welcome.html ../qt/Welcome.png ../qt/Error.html ../qt/jquery.js Localization.files = $$files(../qt/locale/*.qm) -Profiles.files = $$files(../profiles/*, recursive=true) - macx { ICON = ../qt/icon/Simcraft2.icns @@ -47,10 +45,9 @@ macx { } Resources.path = Contents/Resources - Profiles.path = Contents/Resources/profiles Localization.path = Contents/Resources/locale - QMAKE_BUNDLE_DATA += Profiles Resources Localization + QMAKE_BUNDLE_DATA += Resources Localization } win32 { @@ -62,19 +59,16 @@ win32 { } } -# Deplopyment for Linux, note, the cli project also copies profiles +# Deplopyment for Linux, note unix:!macx { DISTFILES += CHANGES COPYING - INSTALLS += target Profiles Resources icon Localization + INSTALLS += target Resources icon Localization # Disable strip QMAKE_STRIP = echo target.path = $$DESTDIR$$PREFIX/bin/ - Profiles.path = $$SHAREPATH/profiles - profiles.commands = @echo Installing profiles to $$SHAREPATH/profiles - Resources.path = $$SHAREPATH data.commands = @echo Installing global files to $$SHAREPATH diff --git a/profiles/MID1/MID1_Death_Knight_Blood.simc b/profiles/MID1/MID1_Death_Knight_Blood.simc deleted file mode 100644 index 9b46b6d9bd7..00000000000 --- a/profiles/MID1/MID1_Death_Knight_Blood.simc +++ /dev/null @@ -1,113 +0,0 @@ -deathknight="MID1_Death_Knight_Blood_San'layn" -source=default -spec=blood -level=90 -race=mechagnome -role=tank -position=front -talents=CoPAAAAAAAAAAAAAAAAAAAAAAwYWmZmxMmZmhZZmZmmZxMjxMAAAAAzMzMzwMDzYMDAjZmZGAAADMwM20YZDklBsBYGzAAAmZwgB - -# Default consumables -potion=draught_of_rampant_abandon_2 -flask=flask_of_the_shattered_sun_2 -food=silvermoon_parade -augmentation=void_touched -temporary_enchant=main_hand:thalassian_phoenix_oil_2 - -# This default action priority list is automatically created based on your character. -# It is a attempt to provide you with a action list that is both simple and practicable, -# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps. -# Feel free to edit, adapt and improve it to your own needs. -# SimulationCraft is always looking for updates and improvements to the default action lists. - -# Executed before combat begins. Accepts non-harmful actions only. -actions.precombat=snapshot_stats -actions.precombat+=/deaths_caress - -# Executed every time the actor is available. -actions=auto_attack -actions+=/use_items -actions+=/use_item,name=light_company_guidon,use_off_gcd=1,if=cooldown.dancing_rune_weapon.remains>78|fight_remains<15 -actions+=/use_item,name=algethar_puzzle_box,if=fight_remains>122|cooldown.dancing_rune_weapon.remains>78|fight_remains<25 -actions+=/fireblood,if=fight_remains>120|cooldown.dancing_rune_weapon.remains>78|fight_remains<8 -actions+=/blood_fury,if=fight_remains>120|cooldown.dancing_rune_weapon.remains>78|fight_remains<12 -actions+=/berserking,if=cooldown.dancing_rune_weapon.remains>78|fight_remains<=15 -actions+=/ancestral_call,if=fight_remains>120|cooldown.dancing_rune_weapon.remains>78|fight_remains<15 -actions+=/potion,if=cooldown.dancing_rune_weapon.remains>78|fight_remains<=30 -actions+=/vampiric_blood,if=!buff.vampiric_blood.up -actions+=/call_action_list,name=high_prio_actions -actions+=/run_action_list,name=deathbringer,if=hero_tree.deathbringer -actions+=/run_action_list,name=san_gift,if=hero_tree.sanlayn&buff.gift_of_the_sanlayn.up -actions+=/run_action_list,name=sanlayn,if=hero_tree.sanlayn - -actions.deathbringer=death_strike,if=(runic_power.deficit<20|(runic_power.deficit<26&buff.dancing_rune_weapon.up)) -actions.deathbringer+=/death_and_decay,if=!buff.death_and_decay.up -actions.deathbringer+=/reapers_mark -actions.deathbringer+=/marrowrend,if=buff.exterminate.up -actions.deathbringer+=/deaths_caress,if=(!buff.bone_shield.up|buff.bone_shield.remains<3|buff.bone_shield.stack<6)&rune<4 -actions.deathbringer+=/marrowrend,if=!buff.bone_shield.up|buff.bone_shield.remains<3|buff.bone_shield.stack<6 -actions.deathbringer+=/death_strike -actions.deathbringer+=/blood_boil -actions.deathbringer+=/consumption,empower_to=1,if=!buff.dancing_rune_weapon.up -actions.deathbringer+=/heart_strike -actions.deathbringer+=/consumption,empower_to=1 -actions.deathbringer+=/arcane_torrent,if=runic_power.deficit>20 - -actions.high_prio_actions=raise_dead,use_off_gcd=1 -actions.high_prio_actions+=/death_strike,if=buff.coagulopathy.up&buff.coagulopathy.remains<=gcd -actions.high_prio_actions+=/dancing_rune_weapon,if=!buff.exterminate.up&!debuff.reapers_mark_debuff.up&!buff.dancing_rune_weapon.up&(fight_remains>95|fight_remains<25|time>300) - -actions.san_gift=heart_strike,if=buff.essence_of_the_blood_queen.remains<1.5&buff.essence_of_the_blood_queen.remains -actions.san_gift+=/death_strike,if=runic_power.deficit<36 -actions.san_gift+=/blood_boil,if=!drw.bp_ticking -actions.san_gift+=/any_dnd,if=buff.crimson_scourge.remains -actions.san_gift+=/heart_strike,if=buff.essence_of_the_blood_queen.stack<7 -actions.san_gift+=/death_strike -actions.san_gift+=/blood_boil,if=buff.boiling_point.up&!buff.boiling_point_echo.up -actions.san_gift+=/heart_strike -actions.san_gift+=/blood_boil - -actions.sanlayn=deaths_caress,if=!buff.bone_shield.up|buff.bone_shield.remains<1.5|buff.bone_shield.stack<=1 -actions.sanlayn+=/blood_boil,if=dot.blood_plague.remains<3 -actions.sanlayn+=/heart_strike,if=(buff.essence_of_the_blood_queen.remains<1.5&buff.essence_of_the_blood_queen.remains&buff.vampiric_strike.remains) -actions.sanlayn+=/death_strike,if=runic_power.deficit<20 -actions.sanlayn+=/deaths_caress,if=buff.bone_shield.stack<6 -actions.sanlayn+=/marrowrend,if=buff.bone_shield.stack<6 -actions.sanlayn+=/any_dnd,if=buff.crimson_scourge.remains -actions.sanlayn+=/heart_strike,if=buff.vampiric_strike.up -actions.sanlayn+=/death_strike -actions.sanlayn+=/blood_boil,if=buff.boiling_point.up&!buff.boiling_point_echo.up -actions.sanlayn+=/consumption,empower_to=1 -actions.sanlayn+=/heart_strike,if=rune>=2 -actions.sanlayn+=/blood_boil -actions.sanlayn+=/heart_strike - -head=relentless_riders_crown,id=249970,ilevel=289,gem_id=240983 -neck=eternal_voidsong_chain,id=249368,ilevel=289,gem_id=240890/240890 -shoulders=relentless_riders_dreadthorns,id=249968,ilevel=289 -back=adherents_silken_shroud,id=239656,ilevel=285,embellishment=arcanoweave_lining,crafted_stats=32/36 -chest=relentless_riders_cuirass,id=249973,ilevel=289,enchant=enchant_chest__mark_of_the_worldsoul_2 -wrists=spellbreakers_bracers,id=237834,ilevel=285,gem_id=240910,embellishment=arcanoweave_lining,crafted_stats=32/36 -hands=voidclaw_gauntlets,id=151332,ilevel=289 -waist=ezzoraks_gloombind,id=249331,ilevel=289,gem_id=240908 -legs=relentless_riders_legguards,id=249969,ilevel=289,enchant=forest_hunters_armor_kit_2 -feet=greaves_of_the_unformed,id=249381,ilevel=289,enchant=enchant_boots__farstriders_hunt_2 -finger1=occlusion_of_void,id=251217,ilevel=289,gem_id=240910/240908,enchant=enchant_ring__eyes_of_the_eagle_2 -finger2=omission_of_light,id=251093,ilevel=289,gem_id=240910/240908,enchant=enchant_ring__eyes_of_the_eagle_2 -trinket1=gaze_of_the_alnseer,id=249343,ilevel=289 -trinket2=algethar_puzzle_box,id=193701,ilevel=289 -main_hand=alahendal_the_dawnsong,id=249296,ilevel=289,enchant=rune_of_sanguination - -# Gear Summary -# gear_ilvl=288.47 -# gear_strength=1243 -# gear_stamina=17604 -# gear_crit_rating=670 -# gear_haste_rating=1290 -# gear_mastery_rating=501 -# gear_versatility_rating=114 -# gear_speed_rating=11 -# gear_armor=1863 -# set_bonus=voidlight_bindings_2pc=1 -# set_bonus=midnight_season_1_2pc=1 -# set_bonus=midnight_season_1_4pc=1 diff --git a/profiles/MID1/MID1_Death_Knight_Blood_Deathbringer.simc b/profiles/MID1/MID1_Death_Knight_Blood_Deathbringer.simc deleted file mode 100644 index b3529ce5fed..00000000000 --- a/profiles/MID1/MID1_Death_Knight_Blood_Deathbringer.simc +++ /dev/null @@ -1,112 +0,0 @@ -deathknight="MID1_Death_Knight_Blood_Deathbringer" -source=default -spec=blood -level=90 -race=mechagnome -role=tank -position=front -talents=CoPAAAAAAAAAAAAAAAAAAAAAAwYWmZmxMmZmhZZmZmmZxMjxMAAAAAzMzMzwMDzYMDAjZmZGAAgxsNwAWCWGmADLAmxMAAMzAMYA - -# Default consumables -potion=draught_of_rampant_abandon_2 -flask=flask_of_the_shattered_sun_2 -food=silvermoon_parade -augmentation=void_touched -temporary_enchant=main_hand:thalassian_phoenix_oil_2 - -# This default action priority list is automatically created based on your character. -# It is a attempt to provide you with a action list that is both simple and practicable, -# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps. -# Feel free to edit, adapt and improve it to your own needs. -# SimulationCraft is always looking for updates and improvements to the default action lists. - -# Executed before combat begins. Accepts non-harmful actions only. -actions.precombat=snapshot_stats -actions.precombat+=/deaths_caress - -# Executed every time the actor is available. -actions=auto_attack -actions+=/use_items -actions+=/use_item,name=light_company_guidon,use_off_gcd=1,if=cooldown.dancing_rune_weapon.remains>78|fight_remains<15 -actions+=/use_item,name=algethar_puzzle_box,if=fight_remains>122|cooldown.dancing_rune_weapon.remains>78|fight_remains<25 -actions+=/fireblood,if=fight_remains>120|cooldown.dancing_rune_weapon.remains>78|fight_remains<8 -actions+=/blood_fury,if=fight_remains>120|cooldown.dancing_rune_weapon.remains>78|fight_remains<12 -actions+=/berserking,if=cooldown.dancing_rune_weapon.remains>78|fight_remains<=15 -actions+=/ancestral_call,if=fight_remains>120|cooldown.dancing_rune_weapon.remains>78|fight_remains<15 -actions+=/potion,if=cooldown.dancing_rune_weapon.remains>78|fight_remains<=30 -actions+=/vampiric_blood,if=!buff.vampiric_blood.up -actions+=/call_action_list,name=high_prio_actions -actions+=/run_action_list,name=deathbringer,if=hero_tree.deathbringer -actions+=/run_action_list,name=san_gift,if=hero_tree.sanlayn&buff.gift_of_the_sanlayn.up -actions+=/run_action_list,name=sanlayn,if=hero_tree.sanlayn - -actions.deathbringer=death_strike,if=(runic_power.deficit<20|(runic_power.deficit<26&buff.dancing_rune_weapon.up)) -actions.deathbringer+=/death_and_decay,if=!buff.death_and_decay.up -actions.deathbringer+=/reapers_mark -actions.deathbringer+=/marrowrend,if=buff.exterminate.up -actions.deathbringer+=/deaths_caress,if=(!buff.bone_shield.up|buff.bone_shield.remains<3|buff.bone_shield.stack<6)&rune<4 -actions.deathbringer+=/marrowrend,if=!buff.bone_shield.up|buff.bone_shield.remains<3|buff.bone_shield.stack<6 -actions.deathbringer+=/death_strike -actions.deathbringer+=/blood_boil -actions.deathbringer+=/consumption,empower_to=1,if=!buff.dancing_rune_weapon.up -actions.deathbringer+=/heart_strike -actions.deathbringer+=/consumption,empower_to=1 -actions.deathbringer+=/arcane_torrent,if=runic_power.deficit>20 - -actions.high_prio_actions=raise_dead,use_off_gcd=1 -actions.high_prio_actions+=/death_strike,if=buff.coagulopathy.up&buff.coagulopathy.remains<=gcd -actions.high_prio_actions+=/dancing_rune_weapon,if=!buff.exterminate.up&!debuff.reapers_mark_debuff.up&!buff.dancing_rune_weapon.up&(fight_remains>95|fight_remains<25|time>300) - -actions.san_gift=heart_strike,if=buff.essence_of_the_blood_queen.remains<1.5&buff.essence_of_the_blood_queen.remains -actions.san_gift+=/death_strike,if=runic_power.deficit<36 -actions.san_gift+=/blood_boil,if=!drw.bp_ticking -actions.san_gift+=/any_dnd,if=buff.crimson_scourge.remains -actions.san_gift+=/heart_strike,if=buff.essence_of_the_blood_queen.stack<7 -actions.san_gift+=/death_strike -actions.san_gift+=/blood_boil,if=buff.boiling_point.up&!buff.boiling_point_echo.up -actions.san_gift+=/heart_strike -actions.san_gift+=/blood_boil - -actions.sanlayn=deaths_caress,if=!buff.bone_shield.up|buff.bone_shield.remains<1.5|buff.bone_shield.stack<=1 -actions.sanlayn+=/blood_boil,if=dot.blood_plague.remains<3 -actions.sanlayn+=/heart_strike,if=(buff.essence_of_the_blood_queen.remains<1.5&buff.essence_of_the_blood_queen.remains&buff.vampiric_strike.remains) -actions.sanlayn+=/death_strike,if=runic_power.deficit<20 -actions.sanlayn+=/deaths_caress,if=buff.bone_shield.stack<6 -actions.sanlayn+=/marrowrend,if=buff.bone_shield.stack<6 -actions.sanlayn+=/any_dnd,if=buff.crimson_scourge.remains -actions.sanlayn+=/heart_strike,if=buff.vampiric_strike.up -actions.sanlayn+=/death_strike -actions.sanlayn+=/blood_boil,if=buff.boiling_point.up&!buff.boiling_point_echo.up -actions.sanlayn+=/consumption,empower_to=1 -actions.sanlayn+=/heart_strike,if=rune>=2 -actions.sanlayn+=/blood_boil -actions.sanlayn+=/heart_strike - -head=relentless_riders_crown,id=249970,ilevel=289,gem_id=240983 -neck=eternal_voidsong_chain,id=249368,ilevel=289,gem_id=240902/240902 -shoulders=relentless_riders_dreadthorns,id=249968,ilevel=289 -back=adherents_silken_shroud,id=239656,ilevel=285,embellishment=arcanoweave_lining,crafted_stats=32/49 -chest=relentless_riders_cuirass,id=249973,ilevel=289,enchant=enchant_chest__mark_of_the_worldsoul_2 -wrists=spellbreakers_bracers,id=237834,ilevel=285,gem_id=240902,embellishment=arcanoweave_lining,crafted_stats=32/40 -hands=voidclaw_gauntlets,id=151332,ilevel=289 -waist=relentless_riders_chain,id=249967,ilevel=289,gem_id=240902 -legs=relentless_riders_legguards,id=249969,ilevel=289,enchant=forest_hunters_armor_kit_2 -feet=sabatons_of_furious_revenge,id=251091,ilevel=289,enchant=enchant_boots__farstriders_hunt_2 -finger1=platinum_star_band,id=193708,ilevel=289,gem_id=240902/240902,enchant=enchant_ring__eyes_of_the_eagle_2 -finger2=sindorei_band_of_hope,id=249919,ilevel=289,gem_id=240902/240902,enchant=enchant_ring__eyes_of_the_eagle_2 -trinket1=gaze_of_the_alnseer,id=249343,ilevel=289 -trinket2=dragon_games_equipment,id=193719,ilevel=289 -main_hand=liferippers_cutlass,id=251168,ilevel=289,enchant=rune_of_sanguination - -# Gear Summary -# gear_ilvl=288.47 -# gear_strength=1243 -# gear_stamina=17604 -# gear_crit_rating=880 -# gear_haste_rating=649 -# gear_mastery_rating=798 -# gear_versatility_rating=245 -# gear_speed_rating=11 -# gear_armor=1863 -# set_bonus=midnight_season_1_2pc=1 -# set_bonus=midnight_season_1_4pc=1 diff --git a/profiles/MID1/MID1_Death_Knight_Frost.simc b/profiles/MID1/MID1_Death_Knight_Frost.simc deleted file mode 100644 index 477e9d532a4..00000000000 --- a/profiles/MID1/MID1_Death_Knight_Frost.simc +++ /dev/null @@ -1,158 +0,0 @@ -deathknight="MID1_Death_Knight_Frost" -source=default -spec=frost -level=90 -race=pandaren -role=attack -position=back -talents=CsPAAAAAAAAAAAAAAAAAAAAAAMDwMjZMDY2mZmZmZZmZkZMmZYGGPgZGMzMzMDAAAAAAAAAjZbgBsAWGmQGLYmxMzAzAYYmBYmBD -omnium_talents=rune_of_unleashed_fire/rune_of_lynxlike_reflexes/rune_of_lingering/rune_of_critical_power/rune_of_overload - -# Default consumables -potion=potion_of_recklessness_2 -flask=flask_of_the_shattered_sun_2 -food=silvermoon_parade -augmentation=void_touched -temporary_enchant=main_hand:thalassian_phoenix_oil_2/off_hand:thalassian_phoenix_oil_2 - -# This default action priority list is automatically created based on your character. -# It is a attempt to provide you with a action list that is both simple and practicable, -# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps. -# Feel free to edit, adapt and improve it to your own needs. -# SimulationCraft is always looking for updates and improvements to the default action lists. - -# Executed before combat begins. Accepts non-harmful actions only. -# Snapshot raid buffed stats before combat begins and pre-potting is done. -actions.precombat=snapshot_stats -# Evaluates a trinkets cooldown, divided by pillar of frost, empower rune weapon, or breath of sindragosa's cooldown. If it's value has no remainder return 1, else return 0.5. -actions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.1.cooldown.duration%%cooldown.pillar_of_frost.duration=0)|talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.1.cooldown.duration=0)) -actions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.2.cooldown.duration%%cooldown.pillar_of_frost.duration=0)|talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.2.cooldown.duration=0)) -actions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_cooldown&!trinket.1.is.improvised_seaforium_pacemaker&(trinket.1.has_use_buff|trinket.1.has_buff.strength|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit) -actions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_cooldown&!trinket.2.is.improvised_seaforium_pacemaker&(trinket.2.has_use_buff|trinket.2.has_buff.strength|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit) -actions.precombat+=/variable,name=trinket_1_duration,value=trinket.1.proc.any_dps.duration -actions.precombat+=/variable,name=trinket_2_duration,value=trinket.2.proc.any_dps.duration, -actions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown|!trinket.1.has_cooldown)|variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync)*(1+((trinket.2.ilvl-trinket.1.ilvl)%100)))>((trinket.1.cooldown.duration%variable.trinket_1_duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync)*(1+((trinket.1.ilvl-trinket.2.ilvl)%100))) -actions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl -actions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.unyielding_netherprism -actions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.unyielding_netherprism - -# Executed every time the actor is available. -actions=auto_attack -# Choose Action list to run -actions+=/call_action_list,name=variables -actions+=/call_action_list,name=trinkets -actions+=/call_action_list,name=high_prio_actions -actions+=/call_action_list,name=cooldowns -actions+=/call_action_list,name=racials -actions+=/run_action_list,name=aoe,if=active_enemies>=3 -actions+=/run_action_list,name=single_target - -# Aoe Rotation -actions.aoe=frostscythe,if=buff.killing_machine.react=2&active_enemies>=variable.frostscythe_priority -actions.aoe+=/frost_strike,target_if=max:(talent.shattering_blade&debuff.razorice.react=5),if=debuff.razorice.react=5&buff.frostbane.react -actions.aoe+=/frostscythe,if=buff.killing_machine.react&rune>=3&active_enemies>=variable.frostscythe_priority -actions.aoe+=/obliterate,target_if=max:(hero_tree.rider_of_the_apocalypse&debuff.chains_of_ice_trollbane_slow.react),if=buff.killing_machine.react=2|(buff.killing_machine.react&rune>=3) -actions.aoe+=/howling_blast,if=buff.rime.react&talent.frostbound_will|!dot.frost_fever.ticking -actions.aoe+=/frost_strike,target_if=max:(talent.shattering_blade&debuff.razorice.react=5),if=debuff.razorice.react=5&talent.shattering_blade&active_enemies<5&!variable.rp_pooling&!talent.frostbane -actions.aoe+=/frostscythe,if=buff.killing_machine.react&!variable.rune_pooling&active_enemies>=variable.frostscythe_priority -actions.aoe+=/obliterate,target_if=max:(hero_tree.rider_of_the_apocalypse&debuff.chains_of_ice_trollbane_slow.react),if=buff.killing_machine.react&!variable.rune_pooling -actions.aoe+=/howling_blast,if=buff.rime.react -actions.aoe+=/glacial_advance,if=!variable.rp_pooling -actions.aoe+=/frostscythe,if=!variable.rune_pooling&!(talent.obliteration&buff.pillar_of_frost.up)&active_enemies>=variable.frostscythe_priority -actions.aoe+=/obliterate,target_if=max:(hero_tree.rider_of_the_apocalypse&debuff.chains_of_ice_trollbane_slow.react),if=!variable.rune_pooling&!(talent.obliteration&buff.pillar_of_frost.up) -actions.aoe+=/howling_blast,if=!buff.killing_machine.react&(talent.obliteration&buff.pillar_of_frost.up) - -# Cooldowns -actions.cooldowns=remorseless_winter,if=variable.sending_cds&(active_enemies>1|talent.gathering_storm)|(buff.gathering_storm.stack=10&buff.remorseless_winter.remains10 -actions.cooldowns+=/reapers_mark,target_if=first:debuff.reapers_mark_debuff.down,if=cooldown.pillar_of_frost.remains<=gcd.max&(!talent.breath_of_sindragosa|cooldown.breath_of_sindragosa.remains>20|cooldown.breath_of_sindragosa.remains=40)|fight_remains<20 -actions.cooldowns+=/pillar_of_frost,if=variable.sending_cds&(!hero_tree.deathbringer|cooldown.reapers_mark.remains>10)&(!talent.breath_of_sindragosa|cooldown.breath_of_sindragosa.remains>20|cooldown.breath_of_sindragosa.up&runic_power>=60)|fight_remains<20 -actions.cooldowns+=/breath_of_sindragosa,use_off_gcd=1,if=!buff.breath_of_sindragosa.up&(buff.pillar_of_frost.up|fight_remains<20) -actions.cooldowns+=/frostwyrms_fury,if=((talent.apocalypse_now|talent.chosen_of_frostbrood)&!buff.chosen_of_frostbrood_fwf.up)&variable.sending_cds&(!talent.breath_of_sindragosa&buff.pillar_of_frost.up|buff.breath_of_sindragosa.up)&!debuff.reapers_mark_debuff.up&!buff.exterminate.up|(fight_remains<20&!buff.chosen_of_frostbrood_haste.up) -actions.cooldowns+=/frostwyrms_fury,if=buff.chosen_of_frostbrood_fwf.up&variable.fwf_buffs -actions.cooldowns+=/frostwyrms_fury,if=!(talent.apocalypse_now|talent.chosen_of_frostbrood)&active_enemies=1&(talent.pillar_of_frost&buff.pillar_of_frost.up&!talent.obliteration|!talent.pillar_of_frost)&(!raid_event.adds.exists|raid_event.adds.in>cooldown.frostwyrms_fury.duration+raid_event.adds.duration)&variable.fwf_buffs|fight_remains<3 -actions.cooldowns+=/frostwyrms_fury,if=!(talent.apocalypse_now|talent.chosen_of_frostbrood)&active_enemies>=2&(talent.pillar_of_frost&buff.pillar_of_frost.up|raid_event.adds.exists&raid_event.adds.up&raid_event.adds.incooldown.frostwyrms_fury.duration+raid_event.adds.duration) -actions.cooldowns+=/raise_dead,use_off_gcd=1 -actions.cooldowns+=/empower_rune_weapon,if=(rune<2|!buff.killing_machine.react)&runic_power<35+(talent.icy_onslaught*buff.icy_onslaught.stack*5) -actions.cooldowns+=/empower_rune_weapon,if=cooldown.empower_rune_weapon.full_recharge_time<=6&buff.killing_machine.react<2-(talent.killing_streak) -actions.cooldowns+=/empower_rune_weapon,if=talent.breath_of_sindragosa&(cooldown.empower_rune_weapon.full_recharge_time-30<=cooldown.breath_of_sindragosa.remains+6)&(cooldown.breath_of_sindragosa.remains<=6)&(buff.killing_machine.react<2-(talent.killing_streak)) -actions.cooldowns+=/empower_rune_weapon,if=talent.obliteration&buff.pillar_of_frost.remains>4*gcd.max&rune<=2&buff.killing_machine.react=1 - -# High Priority Actions -actions.high_prio_actions=mind_freeze,if=target.debuff.casting.react -# Use Power Infusion while Pillar of Frost is up -actions.high_prio_actions+=/invoke_external_buff,name=power_infusion,if=variable.cooldown_check -actions.high_prio_actions+=/antimagic_shell,if=runic_power.deficit>40&death_knight.first_ams_cast