diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 27a70c7e477..258f15a0d78 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,7 +64,7 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles + profiles/CI.simc .git key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} @@ -130,7 +130,7 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles + profiles/CI.simc .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..a1cf5d13d65 100644 --- a/.github/workflows/spec_test.yml +++ b/.github/workflows/spec_test.yml @@ -38,7 +38,7 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles + profiles/CI.simc .git key: ${{ inputs.cache-key }} @@ -368,52 +368,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/.github/workflows/ubuntu_test.yml b/.github/workflows/ubuntu_test.yml index 8191aaa9343..68b71c3889e 100644 --- a/.github/workflows/ubuntu_test.yml +++ b/.github/workflows/ubuntu_test.yml @@ -36,7 +36,7 @@ jobs: path: | ${{ runner.workspace }}/b/ninja/simc ActionPriorityLists - profiles + profiles/CI.simc .git key: ${{ env.CACHE_KEY }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 317eb3d307e..d5913d3e72c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,10 +12,9 @@ The mantra is: Just check it in. Don't ask for permission. If the code needs to 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. +SimulationCraft used to contain a set of sample profiles for the current raid tier. +These have been moved to the [SimC Profile](https://github.com/simulationcraft/simc-profile) repository. +Information on how to contribute to profiles and what they are used for can be found there. ## Action Priority List (APL) SimulationCraft includes a set of default action priority lists for each specialization, to offer users a ready-to-use 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/generate_profiles.bat b/generate_profiles.bat deleted file mode 100755 index 8f4130a4bfb..00000000000 --- a/generate_profiles.bat +++ /dev/null @@ -1,27 +0,0 @@ -@echo off -if exist simc_cache.dat del /s simc_cache.dat - -if exist simc.exe goto 32 -goto exit - -:32 -cd "profiles" -:: PreRaids doesn't match the typical pattern -cd "PreRaids" -echo Running PR_Generate.simc in %cd% -"%~dp0simc.exe" PR_Generate.simc -cd ..\ -:: MIDX profiles generation -for %%g in (MID1) do ( - cd %%g - echo Running %%g_Generate.simc in %cd% - "%~dp0simc.exe" %%g_Generate.simc - cd ..\ -) -goto pause - -:exit -echo "This file requires the CLI (simc.exe) to be located in the same folder" - -:pause -pause diff --git a/generate_profiles.sh b/generate_profiles.sh deleted file mode 100755 index d69e50c2e9e..00000000000 --- a/generate_profiles.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env sh - -SIMC=${SIMC:-../../engine/simc} - -if [ ! -d "profiles" ]; then - echo 'You must run this script with simc root as current working directory.' - exit 0 -fi -cd 'profiles' -# PreRaids doesn't match the typical pattern -PROFDIR='PreRaids' -echo "---$PROFDIR---" -if [ -d $PROFDIR ]; then - cd $PROFDIR/ - ${SIMC} "../generators/$PROFDIR/PR_Generate.simc" - cd ../ -else - echo 'Skipped PreRaids, directory not found.' -fi -# MIDX profiles generation -for season in MID1 -do - PROFDIR="$season" - echo "---$PROFDIR---" - if [ ! -d $PROFDIR ]; then - echo "Skipped $PROFDIR, directory not found." - continue - fi - cd $PROFDIR/ - ${SIMC} '../generators/'$season'/'$season'_Generate.simc' - cd ../ -done -echo 'done' 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