Code Monkey home page Code Monkey logo

sl-shadow-priest's Introduction

Shadowlands Shadow Priest Sims

This repo includes scripts and sims for shadow priests.

Important Links

Discussion

How to Run

All scripts are run built with python3, but should be able to be run with python2 (results may vary).

Prepare your environment

  1. Run pip install -r requirements.txt in order for the scripts to work.
  2. Edit and confirm config in config.yml, this controls how profiles are built, sims are ran, and aggregated. See the wiki for more information.

Full Suite

To run every folder of sims for composite and dungeons, you can simply run python suite.py. This will go through each and every sim folder and sim for each type based on config.yml for each sim. By default this currently excludes apl, gear, and talent-builds (can be altered by passing a list to --exclude). This script keeps track of state via internal/suite.csv to know which sims it has run already for that suite run. This means if you start the suite and then stop/restart it later it will pick up where it left off. To start a new, clean run you just pash the --fresh argument. When using this command there is no reason to run the other two scripts below unless you are looking to do one off sims.

Create profiles

  1. Run python profiles.py dir/ [--ptr, --dungeons, --talents [am, hv], --covenant [kyrian, necrolord, night_fae, venthyr]] for the directory you want to sim. Current talent options are indicated by the config keys under: builds. If you don't specify talents or covenant and that sim uses it based on config, all combinations will be automatically generated.

Simulate

Use raidbots

  1. To run the sim in Raidbots create api_secrets.py inside the root directory. Set api_key = 'XXX'.
  2. By default if a file already exists in output/ or if the weight in internal/weights.py is 0, sim.py will skip it.
  3. To run the sims use python sim.py dir/ [--iterations 10000, --dungeons, --talents [am, hv]] where dir/ is the sim directory you want to sim. If you don't specify talents or covenant and that sim uses it based on config, all combinations will be automatically generated.
  4. Based on config keys in analyze markdown, csv, and json will be generated for the aggregated sims. These will output separate files for Composite, Single Target, or Dungeon sims. You can find all output files in the results/ folder in any sim folder.

Use local simc

  1. To run with a local simc you have three options:
  • use the simc you have on your Path ( nothing to setup here )
  • use a simc located in a separated folder, create a local_secrets.py inside the root directory and set simc_path = '{"nightly": "path/to/executable", "rework": "another/path"}'
  • add the --auto_download parameter to download the latest simc nightly build into the auto_download/ folder. This will override any choice in config.yml with the path to the newly downloaded version. (note: this is only supported on windows currently)

We use a dict here to support different simcVersions like raidbots, you can so define a different simc installation by every key you define. If you don't supply the local_secrets.py we will use the simc on the path for every different simcVersion defined in config.yml.

  1. By default if a file already exists in output/ or if the weight in internal/weights.py is 0, sim.py will skip it.
  2. To run the sims use python sim.py dir/ [--iterations 10000, --dungeons, --talents [am, hv] --local] where dir/ is the sim directory you want to sim. If you don't specify talents or covenant and that sim uses it based on config, all combinations will be automatically generated.
  3. Based on config keys in analyze markdown, csv, and json will be generated for the aggregated sims. These will output separate files for Composite, Single Target, or Dungeon sims. You can find all output files in the results/ folder in any sim folder.

General Order of sims to run

The following is a rough order to follow when running sims. Generally the things on the same row can be run at the same time since they do not influence each other.

  1. Talents
  2. Consumables, Enchants, Stats, Trinkets, and Racials
  3. Conduits
  4. Legendaries (update conduits as needed from #2)
  5. Soulbinds & Soulbinds-Launch (update conduits and legendaries as needed from #2 and #3)
  6. Covenants & Covenant-Choice (update conduits, legendaries, and soulbinds as needed from #2, #3, and #4)
  7. Weights (add top covenant builds from #5)

Output Formats

Based on config.yml sim results will output in up to 3 different formats: Markdown, CSV, and JSON. The files are all located in the results/ folder of each sim type. The following sections go over how the data is listed here. Each output file is made up into various sections based on how the sim is configured. There are several layers of results.

Layers

  • Sim Type
    • Composite
    • Dungeons
    • Single
  • Talents
  • Covenant

These layers are used to create the file name. So if a sim is run with default setup without talent builds or covenants it will just be Results_SIMTYPE i.e. Results_Composite.md. If the sim is ran with talents this is augmented with that talent build (see config for current builds) i.e.Results_Composite_am.md. The last layer is Covenant ability, which sims for each individual covenant on top of this i.e. Results_Composite_am_kyrian.

Markdown

The markdown files are broken up and contain easy layer name at the top as a header. Each file is just a simple table broken up by Actor, DPS, and the Increase of that actor against the Base actor.

CSV

The CSV files are the simplest of the bunch, the only trick is that we parse the sim type profile as the start of the row. So a row is simply profile,actor,DPS,increase,.

JSON

JSON files contain the most rich information about the results. The basic structure is as follows:

{
    "name": "SIMTYPE - TALENT - COVENANT",
    "data": {
        "ACTOR": {
            "DPS": 1234
        },
    },
    "ids": {
        "ACTOR": null,
    },
    "simulated_steps": [
        "DPS"
    ],
    "sorted_data_keys": [
        "ACTOR",
    ],
    "last_updated": "YYYY-MM-DD"
}
  • Name: simple name of the sim containing all relevant information about the data
  • Data: this contains the sorted result list of each actor. The content of this will depend on the data itself as defined in config. For most sims this will just be a single entry for DPS as the step, but for things like trinkets this will be a step for each ilevel i.e. 420, 425.
  • IDs: This will contain rich information for each actor to be used to generate tooltip data. There are several different ways to lookup this data, namely spell, item, or none. This lookupType is defined for each type of sim in config. Spell type will use this file that links actor names to spell IDs to populate this. The item type searches in .simc files of the sim for the corresponding actor name and adds the ID it finds on that line.
  • Simulated Steps: This just enumerates the steps used in data
  • Sorted Data Keys: This list is sorted by maximum dps in order.
  • Last Updated: simply contains the timestamp that the chart was generated

sl-shadow-priest's People

Contributors

cixel avatar dependabot[bot] avatar lgkern avatar lutzmor avatar psykzz avatar saeldur avatar seanpeters86 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

sl-shadow-priest's Issues

Start building base gear for Mythic Castle Nathria

Now that some more raid gear is populated we can start building the base gear set we will use for in our sims. I had a throwaway gear/ folder i did top gear sims with in bfa-shadow-priest we can re-use or just test on patchwerk for now and do more complex testing later.

Simple gear filter to start with: https://shadowlands.wowhead.com/items/min-req-level:50/class:5?filter=166;9;0#items:0-2+18

ACs:

  • Gear set chosen from basic patchwerk/movement/adds fights
  • Gear set updated in base for all sims

Shadowy Apparitions Rework

Shadowy Apparitions has been re-designed. Here is what we know so far:

The Shadowy Apparitions effect has been reworked: when you use Mind Blast, Devouring Plague, or Void Bolt, you create your own ghostly copies that move towards all enemies affected by your Vampiric Touch and deal damage to them from dark magic. On a critical strike, two Apparitions appear.

ACs:

  • New SA implemented
  • Old SA references removed (if needed)
  • check interaction with shimmering apparitions (might go into a new ticket since we have to level now)

Build 35598 Spell and Class Changes

Magic Changes (verify only)

  • dark thoughts is now 3% chance per DoT
  • Mind Flay now generates 18 insanity over the duration
  • Psychic Link is now 50% down from 60%
  • Void Torrent now gives 30 insanity down from 60
  • Ascended Blast now gives 6 insanity down from 12
  • Mindgames insanity maybe changed? need to verify
  • Courageous Ascension conduit was changed back to 1% per stack
  • Shattered Perceptions spell data updated to be 0s

Manual Changes (implementation required)

  • Shadowfiend rank2 (TODO: check if this also affects mindbender)
  • Void Eruption no longer has a requirement of insanity to cast (TODO: does this give insanity when cast?)
  • Legacy of the void now gives 1% haste every 2s and Void Bolt now also works with Devouring Plague (TBD on the DP integration)
  • Searing Nightmare damage increase is now in spell data/needs to be un-hardcoded
  • Shadow Crash is redesigned
  • Surrender to Madness no longer generates insanity (TODO: figure out how it interacts if you currently have voidform active)
  • Unfurling Darkness is now an 8s buff but with a 15s ICD
  • Dissonant Echoes conduit reworked to also function outside of Voidform
  • Shimmering Apparitions renamed/reworked into Haunting Apparitions

Remove implemenation of Dark Thoughts Bug once fixed in-game

In the future the ready() method in mind_blast_t will need to be overriden to allow the casting of mindblast while you do not have a full charge if you have a buff. Currently it's being bypassed by the fact that if you have the buff you always have a blast charge since getting a proc currently resets the charge.

APL Testing

As we get closer to launch we can start doing more testing around parts of the APL. This is not an exhaustive list, just a good place to start

ACs:

  • hold void bolt out of voidform with HV to line up with cds if coming soon
  • Use Unholy Nova before Void Eruption on AoE? Probably not worth for Single Target but with Lead by Example the burst could be useful
  • delay VoiT in non-opener for PI
  • voidform sync/optimization with niya's grove invigoration
  • check if any shadowlands trinkets should have custom conditions
  • vampiric touch target cap
  • racial sims
  • Shadow Crash optimization + target cap?
  • Mind Blast APL with Mind Devourer
  • Boon of the Ascended with Hungering Void/single target in general + dungeonslice
  • check if we should delay certain CDs with hungering void talented
  • Dissonant echoes is a dps loss, probably due to void bolting out of voidform being weird value wise (gets worse at higher ranks)
  • Dark Thoughts Overflow in Voidform (tried to fix with this commit)
  • Check PI + Voidform sync
    • delay voidform for PI (current implementation)
    • delaying PI for Voidform
    • don't delay at all (test with a higher base sim duration)
    • if the fight timings change this, we should support several fight durations
  • raid_event.movement optimizations (i.e. void torrent)
  • Potion usage
  • Dungeon Slice optimization
  • Fae Guardians (DungeonSlice is particularly bad)
  • S2M + Mindbender + Legendary APL for DungeonSlice
  • target cap on mindgames (when not taking theotars final ability)
  • delay mindgames for voidform with theotar?
  • SW:D with Painbreaker Psalm
  • target cap on Void Torrent
  • Searing Nightmare target cutoff
  • Arcane Torrent usage while moving
  • Adjust Mind Blast usage if using Talbadar's
  • check SW:D on the move vs. SW:P
  • target cap on Mind Blast (current TODO in the apl)
  • prepull action
  • check if we want a dots check on mindbender for opener
  • target cap on SW:D
  • target cap on DP without SN
  • Voidform and Power Infusion CD sync
  • Mindbender/Shadowfiend
  • Void Torrent
  • Unholy Nova DungeonSlice
  • Actor casts SW:P to make sure wrathful is applied after casting Fae Guardians
  • Void Bolt target cutoff

Verify Dispersion

Blizzard created a rank 2 for Dispersion that makes it stop insanity drain, we should make sure it is still doing this with the new spell data.

ACs:

  • dispersion fixed with the new rank info

Verify Spell changes Automagically happened

Some changes we got should be picked up automagically in SimC. Using this ticket to track that things were updated correctly from spell data.

ACs:

  • Void Eruption cast time reduced by 40%
  • Mind Blast CD should be fixed
  • Devouring Plague (should auto populate changes)
  • Change Devouring Plague Ticks to crit = true

Searing Nightmare Segmentation fault LM-SA

This only happens on a LightMovement sim with a raid event with 3 adds. The 3 adds likely isnt super important since that's just crossing the threshold for searing nightmare to be used in the APL. But I cannot reproduce this by using Patchwerk or HeavyMovement fight styles...which is really weird.

Profile:

priest="Base"
level=60
role=spell
position=back
spec=shadow
talents=0030000
spec=shadow

default_actions=1

head=,id=173218
neck=,id=158075,bonus_id=6316/4932/4933/1560,azerite_level=92
shoulder=,id=178071,bonus_id=6707,drop_level=58
back=,id=173215
chest=,id=173214
wrist=,id=173222
hands=,id=173217
waist=,id=173221
legs=,id=175431,bonus_id=6707,drop_level=58
feet=,id=173216
finger1=,id=175710,enchant_id=6165,bonus_id=6706,drop_level=57
finger2=,id=178077,enchant_id=6165,bonus_id=6707,drop_level=58
trinket1=,id=174500,gem_id=168639,bonus_id=4824/1517/4786/6514
trinket2=,id=175722,bonus_id=6707,drop_level=54
main_hand=,id=158321,enchant_id=6229,gem_id=168639,bonus_id=6536/6578/1543/4786/6476/6470/6514
off_hand=,id=172190,gem_id=168639,bonus_id=4824/1517/4786/6514/6482/6470

fight_style="LightMovement"
raid_events+=/adds,count=3,first=45,cooldown=45,duration=10,distance=5
desired_targets=1
iterations=10000
sim_signal_handler: Segmentation fault! Iteration=674 Seed=3151644859788401181 TargetHealth=422326.0

Surrender to Madness output looks to be generating too much insanity...

Something is causing the actor to be able to cast a Devouring Plague without consuming insanity after using StM according to the example actions. Need to debug why.

bug

Profile:

debug=0

priest="Base"
level=60
role=spell
position=back
talents=1111123
spec=shadow
default_actions=1
covenant=venthyr

head=,id=173218
neck=,id=158075,bonus_id=6316/4932/4933/1560,azerite_level=92
shoulder=,id=178071,bonus_id=6707,drop_level=58
back=,id=173215
chest=,id=173214
wrist=,id=173222
hands=,id=173217
waist=,id=173221
legs=,id=175431,bonus_id=6707,drop_level=58
feet=,id=173216
finger1=,id=175710,enchant_id=6165,bonus_id=6706,drop_level=57
finger2=,id=178077,enchant_id=6165,bonus_id=6707,drop_level=58
trinket1=,id=174500,gem_id=168639,bonus_id=4824/1517/4786/6514
trinket2=,id=175722,bonus_id=6707,drop_level=54
main_hand=,id=158321,enchant_id=6229,gem_id=168639,bonus_id=6536/6578/1543/4786/6476/6470/6514
off_hand=,id=172190,gem_id=168639,bonus_id=4824/1517/4786/6514/6482/6470

optimal_raid=0
override.bloodlust=0
single_actor_batch=1
desired_targets=1
iterations=10000
# raid_events+=/adds,count=1,first=45,cooldown=45,duration=30,distance=5


# Gear Summary
# gear_ilvl=145.56
# gear_stamina=665
gear_intellect=553
gear_crit_rating=491
gear_haste_rating=536
gear_mastery_rating=55

Add in Devouring Plague

Need to add current implementation for Devouring Plague

ACs:

  • Devouring Plague added to module
  • APL updated to use Devouring Plague
  • mastery properly affects Devouring Plague

Verify Mind Sear Dark Thoughts implementation

Dark thoughts was recently implemented and works for Mind Flay. Need to validate the same code works correctly for Mind Sear and matches in game + APL is modified accordingly.

ACs:

  • Mind Sear implemenation validated
  • Mind Sear implementation matches in-game
  • APL correctly uses Dark Thought proc's while channeling Mind Sear in AoE

Boon of the Ascended is being refreshed

Right now if the APL uses Ascended Nova it is refreshing the duration of the Boon of the Ascended buff...somehow.

If you just test without using Ascended Nova you cannot reproduce the problem.

ascended nova bug

We set the refresh behavior correctly here: https://github.com/simulationcraft/simc/blob/shadowlands/engine/class_modules/priest/sc_priest.cpp#L749

so no idea why this is happening.

ACs:

  • bug fixed

Profile:

debug=0

priest="Base"
level=60
role=spell
position=back
talents=1111123
spec=shadow
default_actions=1

head=,id=173218
neck=,id=158075,bonus_id=6316/4932/4933/1560,azerite_level=92
shoulder=,id=178071,bonus_id=6707,drop_level=58
back=,id=173215
chest=,id=173214
wrist=,id=173222
hands=,id=173217
waist=,id=173221
legs=,id=175431,bonus_id=6707,drop_level=58
feet=,id=173216
finger1=,id=175710,enchant_id=6165,bonus_id=6706,drop_level=57
finger2=,id=178077,enchant_id=6165,bonus_id=6707,drop_level=58
trinket1=,id=174500,gem_id=168639,bonus_id=4824/1517/4786/6514
trinket2=,id=175722,bonus_id=6707,drop_level=54
main_hand=,id=158321,enchant_id=6229,gem_id=168639,bonus_id=6536/6578/1543/4786/6476/6470/6514
off_hand=,id=172190,gem_id=168639,bonus_id=4824/1517/4786/6514/6482/6470

gear_intellect=553
gear_crit_rating=491
gear_haste_rating=536
gear_mastery_rating=55

copy="Kyrian_bugged_profile","Base"
covenant=kyrian

copy="Kyrian_No_Nova","Base"
covenant=kyrian
priest_use_ascended_nova=0

optimal_raid=0
override.bloodlust=0
single_actor_batch=1
desired_targets=1
iterations=10000

Add in Dark Thoughts

Dark Thoughts is a new passive that resembles our now old talent Shadowy Insight.

Dark Thoughts (Passive) (Level 16): For every damage over time you cast on the target, Mind Flay and Mind Sear have a 2% chance to gain a Mind Blast charge and make it instant cast. For the next 6 sec. Mind Blast can be cast while channeling Mind Flay or Mind Sear.
The effect of "Dark Thoughts" can stack up to 5 times if it procs several times in

ACs:

  • Verify if proc only lasts 6s, or you only have 6s to cast it while channeling (i.e. can it be cast by itself?)
  • Add in new passive + buff for Dark Thoughts tracking
  • Add in reaction for Mind Blast to cast while channeling

should retry all 5xx from raidbots

right now we just retry when polling, should add this logic to the addition get after the sim is done

also when we get a 502 we should log more so it is obvious...maybe log the whole response object

Void Torrent reworked

depends on #19

Void Torrent: No longer pauses Insanity Drain on cast, but now refreshes the duration of your Shadow damage over time effects when channeling.

ACs:

  • verify insanity is no longer paused (should have been done with #19)
  • Verify refresh behavior
  • Implement Refresh behavior

Bugs:

  • Void Torrent currently puts dots to their default durations (non-pandemic / non-increased)

Shadowflame Prism isn't giving Mindbender proper reduction

Shadowflame Prism is allowing the actor to cast Mindbender more often, but the report is not reflecting this change accurately.
Sample Profile:

debug=0

priest="Base"
level=60
role=spell
position=back
spec=shadow
covenant=venthyr
talents=3121121
spec=shadow
default_actions=0

actions=mindbender
actions+=/mind_flay

head=,id=173218
neck=,id=158075,bonus_id=6316/4932/4933/1560,azerite_level=92
shoulder=,id=178071,bonus_id=6707,drop_level=58
back=,id=173215
chest=,id=173214
wrist=,id=173222
hands=,id=173217
waist=,id=173221
legs=,id=175431,bonus_id=6707,drop_level=58
feet=,id=173216
finger1=,id=175710,enchant_id=6165,bonus_id=6706,drop_level=57
finger2=,id=178077,enchant_id=6165,bonus_id=6707,drop_level=58
trinket1=,id=174500,gem_id=168639,bonus_id=4824/1517/4786/6514
trinket2=,id=175722,bonus_id=6707,drop_level=54
main_hand=,id=158321,enchant_id=6229,gem_id=168639,bonus_id=6536/6578/1543/4786/6476/6470/6514
off_hand=,id=172190,gem_id=168639,bonus_id=4824/1517/4786/6514/6482/6470

gear_intellect=550
gear_crit_rating=500
gear_haste_rating=650
gear_mastery_rating=200

# Shadowflame Prism
copy="Shadowflame_Prism","Base"
head=,id=173218,bonus_id=6982

From a debug log, you can see that mindbender is hitting for the same amount regardless of the legendary or not.

Without Legendary:

1.253 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 1022.8764000000001 shadow damage (crit)
2.216 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
3.179 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
4.142 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
5.105 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
6.068 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
7.031 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
7.994 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
8.957 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
9.920 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
10.883 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
11.846 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
12.809 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
13.772 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
14.735 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)

With Legendary:

1.253 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 1022.8764000000001 shadow damage (crit)
2.216 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
3.179 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
4.142 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
5.105 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 1022.8764000000001 shadow damage (crit)
6.068 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
7.031 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
7.994 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 1022.8764000000001 shadow damage (crit)
8.957 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
9.920 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
10.826 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 1022.8764000000001 shadow damage (crit)
11.732 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
12.638 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
13.544 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)
14.450 player 'Base_mindbender' melee hits player 'Fluffy_Pillow' for 511.43820000000005 shadow damage (hit)

Void Torrent bug

Void Torrent is not refreshing dot's to full pandemic duration in beta

Unfurling Darkness Implementation

depends on #19

New Talent: Unfurling Darkness: After casting Vampiric Touch, your next Vampiric Touch is instant and deals 155% of your Shadow damage immediately. This effect can be triggered no more than once every 15 s

ACs:

  • talent implemented
  • APL updated just to validate it works

Script should inspect results and throw away/retry if it gets an error

{"error": {"signal": null, "code": 11, "type": "advanced-error", "soft": true}, "simbot": {"title": "undefined - advanced - Patchwerk - shadowlands - undefined - talents/lm_sa_1 [chunk 1]", "simId": "rwvgvzHxQmDWAoryhKF3FU", "simcVersion": "shadowlands", "timeLimit": 57600000, "concurrency": 2, "isConcurrencyEligible": true, "userConcurrency": 2, "apiKey": "969d3bd9c17818bb8a4b7af590161fc8c8dac2805baf4f6ceba2d15cf7916e08", "smart": false, "smartHighPrecision": true, "usePubSub": false, "publicTitle": "talents/lm_sa_1", "simType": "advanced", "fightStyle": "Patchwerk", "totalIterations": 820000, "userLevel": "SimC Dev", "numProfilesets": 81, "jobSubmitted": 1598544653890, "chunkSizes": [16, 64, 256], "numChunks": 6, "stage": 0, "numStages": 1, "stageTarget": null, "stageActors": 82, "jobFirstStart": 1598544660708, "host": "zz9s", "hostStart": 1598467728695, "meta": {}, "parentSimId": "pfXUUjJKa8VNnW23hf8NAY", "parentJobId": "30431063", "fromFlightmaster": true, "flightChunk": true, "saveHtml": false, "source": "advanced", "input": "target_error=\"100\"\nsingle_actor_batch=\"1\"\nreport_details=\"0\"\niterations=\"10000\"\nmax_time=\"300\"\npriest=\"Base\"\nlevel=\"60\"\nrole=\"spell\"\npoDaMtion=\"back\"\nspec=\"shadow\"\ndefault_actions=\"1\"\nhead=\"cowl_of_unspeakable_horrors,id=174116,ilevel=135\"\nneck=\"heart_of_azeroth,id=158075,bonus_id=4929/5814/4936/1600\"\nshoulder=\"spaulders_of_miasmic_myceDMa,id=174117,ilevel=135\"\nback=\"ashjrakamas_shroud_of_resolve,id=169223,bonus_id=6286\"\nchest=\"robe_of_the_fallen_keeper,id=174115,ilevel=135\"\nwrist=\"voiddrenched_wristwraps,id=174122,ilevel=130\"\nhands=\"emberscale_gloves,id=174125,ilevel=130\"\nwaist=\"manainfused_sash,id=174124,ilevel=130\"\nlegs=\"trousers_of_pecuDMar_potency,id=174121,ilevel=130\"\nfeet=\"psychics_subtle_sDMppers,id=174123,ilevel=130\"\nfinger1=\"ring_of_collective_consciousness,id=174530,ilevel=130,enchant=accord_of_haste\"\nfinger2=\"ring_of_cosmic_potential,id=174533,ilevel=140,enchant=accord_of_haste\"\ntrinket1=\"psyche_shredder,id=174060,ilevel=130\"\ntrinket2=\"forbidden_obDaMdian_claw,id=173944,ilevel=130\"\nmain_hand=\"vorzz_yoqal,id=172196,ilevel=130,enchant=quick_navigation\"\noff_hand=\"uhnish_vwah,id=172190,ilevel=130\"\nfight_style=\"LightMovement\"\nraid_events+=\"/adds,count=3,first=45,cooldown=45,duration=10,distance=5\"\ndesired_targets=\"1\"\nprofileset.\"UD_Mis_PL_DM_AM\"+=\"talents=3121211\"\nprofileset.\"FotM_SN_PL_DM_AM\"+=\"talents=1131211\"\nprofileset.\"DaM_SN_PL_DM_AM\"+=\"talents=2131211\"\nprofileset.\"UD_SN_PL_DM_AM\"+=\"talents=3131211\"\nprofileset.\"FotM_ToF_SC_DM_AM\"+=\"talents=1111311\"\nprofileset.\"DaM_ToF_SC_DM_AM\"+=\"talents=2111311\"\nprofileset.\"UD_ToF_SC_DM_AM\"+=\"talents=3111311\"\nprofileset.\"FotM_Mis_SC_DM_AM\"+=\"talents=1121311\"\nprofileset.\"DaM_Mis_SC_DM_AM\"+=\"talents=2121311\"\nprofileset.\"UD_Mis_SC_DM_AM\"+=\"talents=3121311\"\nprofileset.\"FotM_SN_SC_DM_AM\"+=\"talents=1131311\"\nprofileset.\"DaM_SN_SC_DM_AM\"+=\"talents=2131311\"\nprofileset.\"UD_SN_SC_DM_AM\"+=\"talents=3131311\"\nprofileset.\"FotM_ToF_AS_MB_AM\"+=\"talents=1111121\"\nprofileset.\"UD_Mis_PL_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"FotM_SN_PL_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"DaM_SN_PL_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"UD_SN_PL_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"FotM_ToF_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"DaM_ToF_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"UD_ToF_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"FotM_Mis_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"DaM_Mis_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"UD_Mis_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"FotM_SN_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"DaM_SN_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"UD_SN_SC_DM_AM\"+=\"target_error=0.05\"\nprofileset.\"FotM_ToF_AS_MB_AM\"+=\"target_error=0.05\"\n", "date": 1598544664909, "skippedHtml": true, "mem": {"max": 230032, "samples": [181096, 229940, 230032]}}}

Script will still try and parse this and fail

Add Priority target option for the APL

Right now when simming, the default APL assumes you want to do MAX total DPS, and doesn't really care about maximizing priority target damage. We should add a specific option to toggle this.

After investigating #40 there are some thing we can do right away for a priority target increase, that didn't make it to the default APL.

Add in Covenant Abilities

Need to add in the new Covenant abilities. This might be partially blocked as we wait for generic SimC module support to be done. We could still build the spells and just not link them in yet though, TBD.

ACs:

  • Unholy Nova implemented and added to the APL
  • Mindgames implemented and added to the APL
  • Boon of the Ascended implemented and added to the APL (along with Ascended Nova and Ascended Blast)
  • Fae Blessings implemented and added to the APL
  • Add option to fae blessings to reduce CDR chance from 100%
  • Add Unholy Transfusion to Unholy Nova
  • Make Mindgames insanity configurable

Fae Blessings reworked into Fae Guardians

We need to rework the Fae Blessings covenant ability into the new Fae Guardians


Fae Guardians 1.5 min cooldown
Call forth three faerie guardians to attend your targets for 20 seconds.

Wrathful Faerie: Direct attacks against the target restore 1% Mana or 6 Insanity. Follows your Shadow Word: Pain.

Guardian Faerie: Reduces damage taken by 10%. Follows your Power Word: Shield.

Benevolent Faerie: Increases the cooldown recovery rate of a major ability by 100%. Follows your Shadow Mend.

ACs:

  • Verify Cooldown behavior (does CD start when you press the button?) - EDIT: yes
  • Fae Blessings reworked into Fae Guardians
  • Blessing of Plenty conduit changed to Fae Fermata
  • add an option to toggle the benevolent faerie CDR off (i.e. you cast shadow mend on someone else, but you still get the insanity)
  • Verify what can/cannot proc the Wrathful Faerie insanity
  • Wrathful Faerie has an ICD
  • Wrathful Faerie swaps targets when the actor SW:P's something

Damnation Implemented

depends on #19

New Talent Damnation: Instantly and at no resource cost, hits the target with Shadow Word: Pain, Vampiric Touch, and Devouring Plague. 45 sec cooldown.

ACs:

  • ability implemented
  • verify refresh behavior

Bugs:
depends on #20
Damnation consumes buff from Unfurling Darkness

Remove references to old talents and start new ones

We have a lot of talent changes, this ticket will be the first in starting this work.

Level 15

  • Shadowy Insight Removed
  • Shadow Word: Void Removed
  • Death and Madness moved to level 15
  • Add placeholder for Unfurling Darkness at level 15

Level 30

  • Dark Void renamed to Searing Nightmare (keep the code around since the spells are similar)

Level 40

  • Add placeholder for Psychic Link at level 40

Level 45

  • Lingering Insanity Removed
  • Add placeholder for Damnation
  • Remove insanity pause from Void Torrent (will add refresh later)

Level 50

  • Dark Ascension removed
  • Add placeholder for Ancient Madness
  • Leave LotV for now

Should we SW:P off targets when using Psychic Link/ToF?

When you have Psychic Link talented you want to always VT off targets for sure, but if you don't have Misery talented, should you also use the GCD to cast SWP on the off targets as well? If so what is the target cutoff?

Legacy of the Void Reworked

depends on #19

The Legacy of the Void talent has been reworked: Voidform no longer has a duration, but while you assume Voidform, your madness will begin to decrease at an increasing rate. When it reaches 0, Voidform will expire. Spell damage in Voidform is increased by an additional 5%.

ACs:

  • re-use old Voidform/insanity drain code
  • Spell damage modifier left in place

Support Death and Madness in SimC

Need to support the new baseline SW:D and the new talent that replaces SW:D, Death and Madness

ACs

  • Swap SW:D from a talent to the baseline version
  • Add in Death and Madness as a new talent
  • Add in SW:D to the base APL
  • Add conditional to the SW:D line in the APL to use if target will die in more than the CD of the spell + 1s or less than 20%
  • Wire up death and madness debuff/buffs

Voidform Rework

Voidform has been completely redesigned and now has a cooldown baseline to the spec. We should just create new spells for this and leave the old ones in place to potentially re-use for Legacy of the Void implementation.

Voidform
Now has a 90 second cooldown and increases the damage done by 20%. Lasts 15 sec.
Voidform no longer reduces the cooldown of Mind Blast, but instantly restores the spell upon cast, and grants you 2 charges while in Voidform.
While in Voidform, you no longer gain a Haste bonus every 0.5 sec.

ACs:

  • New Voidform created
  • Cooldown added
  • Mind Blast CD Reduction
  • Mind Blast Extra Charge during VF
  • No more stacking haste
  • Mind blast should be on CD when exiting VF if you have 0 or 1 charges when exiting

Searing Nightmare Implemented

depends on #19

New Talent Searing Nightmare: Instantly inflicts Shadow damage to all enemies near the target and applies Shadow Word: Pain to them. If the enemy is already affected by your Shadow Word: Pain, Searing Nightmare deals double damage. Can only be cast while channeling Mind Sear.

ACs:

  • Dark Void code re-used to spread pain
  • initial damage component added
  • If pain on target it refreshes to full pandemic and deals double damage
  • Verify range of the ability
  • Add a ready condition to only allow casting while channeling Mind Sear
  • Adjust APL condition/Mind Sear as needed to let it be cast this way

Ancient Hysteria Implemented

depends on #19

New Talent: Ancient Madness: When you cast Voidform, your critical strike chance is increased by 30% for 15 sec. This increase gradually decreases by 2% per second.

ACs:

  • ability implemented (can reference chorus of insanity)
  • add_invalidate(CACHE_CRIT) added to voidform

Create Tier26 in SimC

requires #48

Once we have a base set of gear we can start building default profiles for simc Tier sims.

ACs:
-[ ] new tier added into simc

  • file for shadow priest created
  • start scoping out rules for the first tier and pre-raid profiles

Build 35679 Spell Changes

Magic Changes

  • ICD of Wrathful Faerie is 2s in spell data, but no longer in game?
  • Searing Nightmare nerfed
  • Shadow Crash CD is now 45s and range is 10-60

Manual Changes

  • Reworked Mastery into: Shadow Weaving
  • Shadow Crash CD is hasted
  • Shadowflame Prism CD is in spell data

Verify what mastery affects once it is more stable

Right now in simc we are treating the mastery as a flat modifying to all damage spells...not just priest ones. This is hard to test in game because the mastery is so buggy and inconsistent, so we should follow up with this later.

If Mastery continues to not work with trinkets but does work for all priest spells we need to verify if this is truely all of our spells or not.

ACs:

  • Check how Mastery interacts with trinkets/spells

Update Surrender to Madness

S2M has been reworked again, need to implement the newer version...thanks blizz

ACs:

  • new version of S2M added
  • APL update accordingly (might be better to do this in a separate issue)

Mind Blast CD Reduction

Mind Blast's base CD has been changed, we might need to pull in a new spell ID for this rank to make sure this is still working

ACs:

  • verify mind blast and SW:V CDs in SimC match in-game
  • adjust SimC accordingly
  • make this easily adjusted from spell data if/when blizzard fixes this

Psychic Link Implementation

depends on #19

New Talent: Psychic Link: Mind Blast deals 60% damage to all targets within 40 yards affected by your Vampiric Touch.

ACs:

  • talent implemented
  • Sim ran with multiple targets to ensure we get multiple mind blasts at the proper dmg amount

Add in Priest Conduits

Need to add the priest specific conduits into simc:

Shadow Specific:

Covenant Specific (blocked until #11 is complete):

Maybe sorta do this:

  • Implement "PI Someone else mode" where you still can cast PI, but you actually only get the effect if you are using the PI legendary
  • If using the PI legendary and the sim "casts" it on someone else and yourself and then we implement the Power Unto Others conduit to reduce the CD.

APL Work:

  • Dont cast Mind Blast if Mind Devourer buff is active, should cast DP first
  • Make sure and cast Devouring Plague if Mind Devourer is about to expire, even if not in refreshable range

Verify Power Infusion in SimC

I added Power Infusion back to SimC earlier, but need to verify it is working correctly

ACs:

  • added to default APL
  • verify implementation gives haste
  • uptime is properly tracked in the sim data

Damnation + Unfurling Darkness + Misery Bugs

On the opener Damnation is consuming Unfurling Darkness that it proc'd on itself, also when using Damnation and Misery the actor is casting SW:P twice, need to see if this matches in-game, although it doesn't do any damage on initial hit, so its probably fine to remove the 2nd for performance reasons.

Example Profile:

debug=1

priest="Base"
level=60
role=spell
position=back
talents=3121312
spec=shadow
default_actions=0

actions.precombat=mind_blast

actions=damnation
actions+=/vampiric_touch,if=refreshable|buff.unfurling_darkness.up
actions+=/mind_flay

covenant=night_fae

head=,id=173245,bonus_id=6716/6649/6647
neck=heart_of_azeroth,id=158075,bonus_id=4929/5814/4936/1600
shoulder=spaulders_of_miasmic_mycelia,id=174117,ilevel=135
back=ashjrakamas_shroud_of_resolve,id=169223,bonus_id=6286
chest=robe_of_the_fallen_keeper,id=174115,ilevel=135
wrists=voiddrenched_wristwraps,id=174122,ilevel=130
hands=emberscale_gloves,id=174125,ilevel=130
waist=manainfused_sash,id=174124,ilevel=130
legs=trousers_of_peculiar_potency,id=174121,ilevel=130
feet=psychics_subtle_slippers,id=174123,ilevel=130
finger1=ring_of_collective_consciousness,id=174530,ilevel=130,enchant=accord_of_haste
finger2=ring_of_cosmic_potential,id=174533,ilevel=140,enchant=accord_of_haste
main_hand=vorzz_yoqal,id=172196,ilevel=130,enchant=quick_navigation
off_hand=uhnish_vwah,id=172190,ilevel=130

optimal_raid=0
override.bloodlust=0
single_actor_batch=1
desired_targets=1

Example Debug

0.000 Base schedules execute for damnation
0.000 Base performs shadow_word_pain (9999.0)
0.000 Base performs vampiric_touch (9999.0)
0.000 Base performs shadow_word_pain (9999.0) (THIS IS THE MISERY ACTION)
0.000 player 'Base' gains unfurling_darkness_1 (value=-2.2250738585072014e-308)
0.000 player 'Base' gains unfurling_darkness_cd_1 (value=-2.2250738585072014e-308)
0.000 Base performs devouring_plague (9999.0)
0.000 Base starts cooldown for damnation (damnation, 1/1). Duration=-9223372036854776.000 Delay=0.000. Will be ready at 45.000
...
1.370 Base performs vampiric_touch (9999.0)
1.370 Base performs unfurling_darkness (9999.0)
1.370 player 'Base' loses unfurling_darkness

The debug output looks totally fine, but in the html output it is missing the buff:
damnation weirdness

ACs:

  • Misery should properly trigger
  • Damnation shouldn't trigger SW:P twice
  • Sample action list should properly show buff/fix bug with Damnation

Build 35522 Spell Changes

Master list of things to update from changes today

Magic Changes

  • Mind Flay buffed and is now 4.5s channel magic
  • Vampiric Touch now 5 insanity on cast magic
  • Void Bolt is now 15 insanity on cast magic
  • Mind Blast now generates 8 insanity magic
  • Mind Sear channel is now 4.5s magic

Manual Changes Needed

  • Death and Madness insanity is now divisible by 100 instead of 55, should remain unchanged in amount
  • Talbadar's Stratagem: While you have Shadow Word: Pain, Devouring Plague, and Vampiric Touch active on the same target, your Mind Blast deals 30% more damage.
  • Fae Blessings reworked into Fae Guardians
  • Verify new range on Unholy Nova
  • Courageous Ascension conduit now 2% per stack (this was hardcoded)
  • Blessing of Plenty conduit changed to Fae Fermata
  • UD only lasts 15s and doesn't consume, but generates UD -> should be child of VT damage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.