diff --git a/.github/workflows/scheduled_release.yml b/.github/workflows/scheduled_release.yml index 75cc604ba9..6227242bd5 100644 --- a/.github/workflows/scheduled_release.yml +++ b/.github/workflows/scheduled_release.yml @@ -3,7 +3,7 @@ name: Scheduled Release on: workflow_dispatch: schedule: - - cron: '0 10 * * 1' + - cron: '0 10 * * *' jobs: schedule: diff --git a/assets/database/db.bin b/assets/database/db.bin index e3098915f4..6638f35f2d 100644 Binary files a/assets/database/db.bin and b/assets/database/db.bin differ diff --git a/assets/database/db.json b/assets/database/db.json index edbe6439f5..7076088e14 100644 --- a/assets/database/db.json +++ b/assets/database/db.json @@ -6616,7 +6616,7 @@ {"effectId":3601,"spellId":54793,"name":"Frag Belt","type":8,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3603,"spellId":54998,"name":"Hand-Mounted Pyro Rocket","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3604,"spellId":54999,"name":"Hyperspeed Accelerators","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, -{"effectId":3605,"spellId":55002,"name":"Flexweave Underlay","type":4,"stats":[0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, +{"effectId":3605,"spellId":55002,"name":"Flexweave Underlay","type":4,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3607,"itemId":41146,"spellId":55076,"name":"Sun Scope","type":14,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":3608,"itemId":41167,"spellId":55135,"name":"Heartseeker Scope","type":14,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":3718,"itemId":41601,"spellId":55630,"name":"Shining Spellthread","type":9,"stats":[0,0,0,0,12,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, @@ -9969,6 +9969,7 @@ {"id":87532,"name":"Shadowy Apparition","icon":"spell_shadow_unholyfrenzy"}, {"id":87934,"name":"Serpent Spread","icon":"ability_hunter_serpentswiftness"}, {"id":87935,"name":"Serpent Spread","icon":"ability_hunter_serpentswiftness"}, +{"id":88148,"name":"Flamestrike","icon":"spell_fire_selfdestruct","hasBuff":true}, {"id":88423,"name":"Nature's Cure","icon":"ability_shaman_cleansespirit"}, {"id":88446,"name":"Demonic Rebirth","icon":"spell_shadow_demonictactics"}, {"id":88447,"name":"Demonic Rebirth","icon":"spell_shadow_demonictactics"}, diff --git a/assets/database/leftover_db.bin b/assets/database/leftover_db.bin index e456fc85a7..a7dc2feb1c 100644 Binary files a/assets/database/leftover_db.bin and b/assets/database/leftover_db.bin differ diff --git a/assets/database/leftover_db.json b/assets/database/leftover_db.json index 76e1cdc90d..8f69b7d7e4 100644 --- a/assets/database/leftover_db.json +++ b/assets/database/leftover_db.json @@ -28576,7 +28576,7 @@ {"effectId":3601,"spellId":54793,"name":"Frag Belt","type":8,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3603,"spellId":54998,"name":"Hand-Mounted Pyro Rocket","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3604,"spellId":54999,"name":"Hyperspeed Accelerators","type":7,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, -{"effectId":3605,"spellId":55002,"name":"Flexweave Underlay","type":4,"stats":[0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, +{"effectId":3605,"spellId":55002,"name":"Flexweave Underlay","type":4,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":1,"requiredProfession":4}, {"effectId":3607,"itemId":41146,"spellId":55076,"name":"Sun Scope","type":14,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":3608,"itemId":41167,"spellId":55135,"name":"Heartseeker Scope","type":14,"stats":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, {"effectId":3718,"itemId":41601,"spellId":55630,"name":"Shining Spellthread","type":9,"stats":[0,0,0,0,12,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"quality":3}, diff --git a/package-lock.json b/package-lock.json index 82420191b5..3e9f82a966 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@types/golang-wasm-exec": "^1.15.2", "@types/pako": "^2.0.0", "bootstrap": "^5.3.0", + "clsx": "^2.1.1", "pako": "^2.0.4", "tippy.js": "^6.3.7", "tsx-vanilla": "^1.0.0", @@ -54,22 +55,13 @@ "node": ">=18" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.6", "picocolors": "^1.0.0" }, "engines": { @@ -77,21 +69,21 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.6", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -172,9 +164,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.1.tgz", - "integrity": "sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", + "integrity": "sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==", "dev": true, "funding": [ { @@ -190,13 +182,13 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-tokenizer": "^2.3.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.4.tgz", - "integrity": "sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz", + "integrity": "sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==", "dev": true, "funding": [ { @@ -213,9 +205,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.9.tgz", - "integrity": "sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz", + "integrity": "sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==", "dev": true, "funding": [ { @@ -231,14 +223,14 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, "node_modules/@csstools/selector-specificity": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz", - "integrity": "sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", "dev": true, "funding": [ { @@ -830,6 +822,7 @@ }, "node_modules/@protobuf-ts/plugin": { "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.1.tgz", "integrity": "sha512-svkFSyFgTtaLdDFPGvd6cTu8qK5Nul5RizDCTcv0xWRzcPWtMiqbuCLKCv6E9gdpnAs3MPeQTnSABB2+NhfWBg==", "dev": true, "dependencies": { @@ -911,9 +904,9 @@ "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.2.tgz", - "integrity": "sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", "cpu": [ "arm" ], @@ -924,9 +917,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.2.tgz", - "integrity": "sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", "cpu": [ "arm64" ], @@ -937,9 +930,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.2.tgz", - "integrity": "sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", "cpu": [ "arm64" ], @@ -950,9 +943,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.2.tgz", - "integrity": "sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", "cpu": [ "x64" ], @@ -963,9 +956,22 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.2.tgz", - "integrity": "sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", "cpu": [ "arm" ], @@ -976,9 +982,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.2.tgz", - "integrity": "sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", "cpu": [ "arm64" ], @@ -989,9 +995,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.2.tgz", - "integrity": "sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", "cpu": [ "arm64" ], @@ -1002,9 +1008,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.2.tgz", - "integrity": "sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", "cpu": [ "ppc64" ], @@ -1015,9 +1021,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.2.tgz", - "integrity": "sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", "cpu": [ "riscv64" ], @@ -1028,9 +1034,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.2.tgz", - "integrity": "sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", "cpu": [ "s390x" ], @@ -1041,9 +1047,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.2.tgz", - "integrity": "sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", "cpu": [ "x64" ], @@ -1054,9 +1060,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.2.tgz", - "integrity": "sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", "cpu": [ "x64" ], @@ -1067,9 +1073,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.2.tgz", - "integrity": "sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", "cpu": [ "arm64" ], @@ -1080,9 +1086,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.2.tgz", - "integrity": "sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", "cpu": [ "ia32" ], @@ -1093,9 +1099,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.2.tgz", - "integrity": "sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", "cpu": [ "x64" ], @@ -1107,6 +1113,7 @@ }, "node_modules/@types/bootstrap": { "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.10.tgz", "integrity": "sha512-F2X+cd6551tep0MvVZ6nM8v7XgGN/twpdNDjqS1TUM7YFNEtQYWk+dKAnH+T1gr6QgCoGMPl487xw/9hXooa2g==", "dev": true, "dependencies": { @@ -1169,8 +1176,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.19.31", - "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -1183,9 +1191,9 @@ "dev": true }, "node_modules/@types/pako": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.0.tgz", - "integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.3.tgz", + "integrity": "sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==" }, "node_modules/@types/semver": { "version": "7.5.8", @@ -1201,6 +1209,7 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { @@ -1234,6 +1243,7 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { @@ -1692,6 +1702,7 @@ }, "node_modules/bootstrap": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { @@ -1718,12 +1729,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1845,6 +1856,14 @@ "node": ">= 6" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1946,9 +1965,9 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", - "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", "dev": true, "engines": { "node": ">=12 || >=16" @@ -2390,6 +2409,7 @@ }, "node_modules/eslint": { "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { @@ -2444,6 +2464,7 @@ }, "node_modules/eslint-config-prettier": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { @@ -2501,6 +2522,7 @@ }, "node_modules/eslint-plugin-import": { "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { @@ -2561,6 +2583,7 @@ }, "node_modules/eslint-plugin-json": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-3.1.0.tgz", "integrity": "sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==", "dev": true, "dependencies": { @@ -2573,6 +2596,7 @@ }, "node_modules/eslint-plugin-prettier": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, "dependencies": { @@ -2602,6 +2626,7 @@ }, "node_modules/eslint-plugin-simple-import-sort": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", "dev": true, "peerDependencies": { @@ -2610,6 +2635,7 @@ }, "node_modules/eslint-plugin-unused-imports": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", "dev": true, "dependencies": { @@ -2853,9 +2879,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3037,7 +3063,9 @@ }, "node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -3140,12 +3168,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -3343,6 +3372,7 @@ }, "node_modules/http-server": { "version": "13.0.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-13.0.1.tgz", "integrity": "sha512-ke9rphoNuqsOCHy4tA3b3W4Yuxy7VUIXcTHSLz6bkMDAJPQD4twjEatquelJBIPwNhZuC3+FYj/+dSaGHdKTCw==", "dev": true, "dependencies": { @@ -3376,9 +3406,9 @@ } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", "dev": true }, "node_modules/import-fresh": { @@ -3430,6 +3460,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -4011,12 +4042,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -4267,17 +4298,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -4325,9 +4356,9 @@ } }, "node_modules/pako": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", - "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, "node_modules/parent-module": { "version": "1.0.1", @@ -4402,9 +4433,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -4509,6 +4540,7 @@ }, "node_modules/postcss-scss": { "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, "funding": [ @@ -4533,9 +4565,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -4562,6 +4594,7 @@ }, "node_modules/prettier": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { @@ -4898,6 +4931,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -4913,6 +4947,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -4930,9 +4965,9 @@ } }, "node_modules/rollup": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.2.tgz", - "integrity": "sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -4945,21 +4980,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.14.2", - "@rollup/rollup-android-arm64": "4.14.2", - "@rollup/rollup-darwin-arm64": "4.14.2", - "@rollup/rollup-darwin-x64": "4.14.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.14.2", - "@rollup/rollup-linux-arm64-gnu": "4.14.2", - "@rollup/rollup-linux-arm64-musl": "4.14.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.14.2", - "@rollup/rollup-linux-riscv64-gnu": "4.14.2", - "@rollup/rollup-linux-s390x-gnu": "4.14.2", - "@rollup/rollup-linux-x64-gnu": "4.14.2", - "@rollup/rollup-linux-x64-musl": "4.14.2", - "@rollup/rollup-win32-arm64-msvc": "4.14.2", - "@rollup/rollup-win32-ia32-msvc": "4.14.2", - "@rollup/rollup-win32-x64-msvc": "4.14.2", + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", "fsevents": "~2.3.2" } }, @@ -5022,8 +5058,9 @@ } }, "node_modules/sass": { - "version": "1.75.0", - "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", + "version": "1.77.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", + "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -5044,13 +5081,10 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5228,9 +5262,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/string-width": { @@ -5351,6 +5385,7 @@ }, "node_modules/stylelint": { "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", "dev": true, "dependencies": { @@ -5408,6 +5443,7 @@ }, "node_modules/stylelint-prettier": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-4.1.0.tgz", "integrity": "sha512-dd653q/d1IfvsSQshz1uAMe+XDm6hfM/7XiFH0htYY8Lse/s5ERTg7SURQehZPwVvm/rs7AsFhda9EQ2E9TS0g==", "dev": true, "dependencies": { @@ -5423,6 +5459,7 @@ }, "node_modules/stylelint-scss": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", "dev": true, "dependencies": { @@ -5721,15 +5758,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", + "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -5743,8 +5780,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.30.3", - "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -5843,6 +5881,7 @@ }, "node_modules/tsx-vanilla": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tsx-vanilla/-/tsx-vanilla-1.0.0.tgz", "integrity": "sha512-Rz7BhCMYZm2uaRC8HlqIR+u2aw69Ibvy4orp8BwqzDo3E4CuADEH6JnZ16OvzUsIdnxHuEOJ1a40Qvb+Y4Z/fw==", "dependencies": { "csstype": "^3.1.2" @@ -5947,6 +5986,7 @@ }, "node_modules/typescript": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { @@ -5959,6 +5999,7 @@ }, "node_modules/typescript-formatter": { "version": "7.2.2", + "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-7.2.2.tgz", "integrity": "sha512-V7vfI9XArVhriOTYHPzMU2WUnm5IMdu9X/CPxs8mIMGxmTBFpDABlbkBka64PZJ9/xgQeRpK8KzzAG4MPzxBDQ==", "dev": true, "dependencies": { @@ -6061,8 +6102,9 @@ } }, "node_modules/vite": { - "version": "5.2.8", - "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", + "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", "dev": true, "dependencies": { "esbuild": "^0.20.1", @@ -6324,6 +6366,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index a865f43aec..03e675444e 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,11 @@ "@types/golang-wasm-exec": "^1.15.2", "@types/pako": "^2.0.0", "bootstrap": "^5.3.0", + "clsx": "^2.1.1", "pako": "^2.0.4", "tippy.js": "^6.3.7", "tsx-vanilla": "^1.0.0", - "uuid": "^9.0.1" + "uuid": "^9.0.1" }, "devDependencies": { "@protobuf-ts/plugin": "2.9.1", @@ -41,8 +42,8 @@ "@protobuf-ts/runtime": "2.9.1", "@types/bootstrap": "^5.2.0", "@types/eslint": "^8.56.10", - "@types/node": "^18.16.1", "@types/glob": "^8.0.3", + "@types/node": "^18.16.1", "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", @@ -65,6 +66,6 @@ "typescript": "5.2.2", "typescript-formatter": "^7.2.2", "vite": "^5.0.0", - "vite-plugin-checker": "^0.6.4" + "vite-plugin-checker": "^0.6.4" } } diff --git a/proto/api.proto b/proto/api.proto index 947dda497a..1887bf826c 100644 --- a/proto/api.proto +++ b/proto/api.proto @@ -231,6 +231,7 @@ enum ResourceType { ResourceTypeDeathRune = 11; ResourceTypeSolarEnergy = 12; ResourceTypeLunarEnergy = 13; + ResourceTypeHolyPower = 14; } message ResourceMetrics { diff --git a/proto/apl.proto b/proto/apl.proto index c67fea760d..e561cd4cba 100644 --- a/proto/apl.proto +++ b/proto/apl.proto @@ -118,6 +118,7 @@ message APLValue { APLValueCurrentRunicPower current_runic_power = 25; APLValueCurrentSolarEnergy current_solar_energy = 68; APLValueCurrentLunarEnergy current_lunar_energy = 69; + APLValueCurrentHolyPower current_holy_power = 75; // Unit values APLValueUnitIsMoving unit_is_moving = 72; @@ -413,6 +414,7 @@ message APLValueCurrentComboPoints {} message APLValueCurrentRunicPower {} message APLValueCurrentSolarEnergy {} message APLValueCurrentLunarEnergy {} +message APLValueCurrentHolyPower {} enum APLValueRuneType { RuneUnknown = 0; diff --git a/proto/druid.proto b/proto/druid.proto index 278e53b096..1547bf574b 100644 --- a/proto/druid.proto +++ b/proto/druid.proto @@ -138,6 +138,8 @@ message BalanceDruid { message Options { DruidOptions class_options = 1; float okf_uptime = 2; + bool start_in_solar = 3; + int32 mastery_snapshot = 4; } Options options = 3; } diff --git a/proto/paladin.proto b/proto/paladin.proto index 9c95347910..55e44952c8 100644 --- a/proto/paladin.proto +++ b/proto/paladin.proto @@ -129,15 +129,14 @@ enum PaladinAura { } enum PaladinSeal { - Vengeance = 0; - Command = 1; - Righteousness = 2; + Truth = 0; + Justice = 1; + Insight = 2; } enum PaladinJudgement { - JudgementOfWisdom = 0; - JudgementOfLight = 1; - NoJudgement = 2; + Judgement = 0; + NoJudgement = 1; } message PaladinOptions { diff --git a/sim/common/cata/other_effects.go b/sim/common/cata/other_effects.go index 552ec59907..55ebf98005 100644 --- a/sim/common/cata/other_effects.go +++ b/sim/common/cata/other_effects.go @@ -79,7 +79,7 @@ func init() { Label: "Vengful Wisp - 2", }, NumberOfTicks: 5, - TickLength: 3, + TickLength: 3 * time.Second, AffectedByCastSpeed: false, OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, isRollover bool) { dot.Snapshot(target, 1176) @@ -119,7 +119,7 @@ func init() { Label: "Vengful Wisp - 1", }, NumberOfTicks: 5, - TickLength: 3, + TickLength: 3 * time.Second, AffectedByCastSpeed: false, OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, isRollover bool) { dot.Snapshot(target, 1176) diff --git a/sim/common/cata/stat_bonus_cds.go b/sim/common/cata/stat_bonus_cds.go index 14ffc6705f..8419eccf71 100644 --- a/sim/common/cata/stat_bonus_cds.go +++ b/sim/common/cata/stat_bonus_cds.go @@ -33,8 +33,8 @@ func init() { // AGILITY shared.NewAgilityActive(63840, 1095, time.Second*15, time.Second*90) // Juju of Nimbleness shared.NewAgilityActive(63843, 1095, time.Second*15, time.Second*90) // Blood-Soaked Ale Mug - shared.NewAgilityActive(52199, 1425, time.Second*20, time.Second*90) // Figurine - Demon Panther shared.NewAgilityActive(64687, 1520, time.Second*20, time.Second*90) // Bloodthirsty Gladiator's Badge of Conquest + shared.NewAgilityActive(52199, 1425, time.Second*20, time.Minute*2) // Figurine - Demon Panther shared.NewAgilityActive(62468, 1605, time.Second*20, time.Minute*2) // Unsolvable Riddle (Alliance) shared.NewAgilityActive(62463, 1605, time.Second*20, time.Minute*2) // Unsolvable Riddle (Horde) shared.NewAgilityActive(68709, 1605, time.Second*20, time.Minute*2) // Unsolvable Riddle (No Faction) diff --git a/sim/common/cata/stat_bonus_procs.go b/sim/common/cata/stat_bonus_procs.go index 1590b29f74..568454eb50 100644 --- a/sim/common/cata/stat_bonus_procs.go +++ b/sim/common/cata/stat_bonus_procs.go @@ -555,7 +555,7 @@ func init() { shared.NewProcStatBonusEffect(shared.ProcStatBonusEffect{ Name: "Stump of Time (Aliance)", ID: 62470, - AuraID: 91048, + AuraID: 91047, Bonus: stats.Stats{stats.SpellPower: 1926}, Duration: time.Second * 15, Callback: core.CallbackOnSpellHitDealt | core.CallbackOnPeriodicDamageDealt, diff --git a/sim/core/buffs.go b/sim/core/buffs.go index 6572f0aa3b..295bd9f72a 100644 --- a/sim/core/buffs.go +++ b/sim/core/buffs.go @@ -1655,7 +1655,7 @@ func InnervateManaThreshold(character *Character) float64 { // Mages burn mana really fast so they need a higher threshold. return character.MaxMana() * 0.7 } else { - return 1000 + return 5000 } } @@ -1670,7 +1670,7 @@ func registerInnervateCD(agent Agent, numInnervates int32) { character := agent.GetCharacter() character.Env.RegisterPostFinalizeEffect(func() { innervateThreshold = InnervateManaThreshold(character) - innervateAura = InnervateAura(character, -1, false) + innervateAura = InnervateAura(character, -1, 0.05) }) registerExternalConsecutiveCDApproximation( @@ -1693,7 +1693,7 @@ func registerInnervateCD(agent Agent, numInnervates int32) { numInnervates) } -func InnervateAura(character *Character, actionTag int32, isSelfCast bool) *Aura { +func InnervateAura(character *Character, actionTag int32, reg float64) *Aura { actionID := ActionID{SpellID: 29166, Tag: actionTag} manaMetrics := character.NewManaMetrics(actionID) return character.GetOrRegisterAura(Aura{ @@ -1702,7 +1702,6 @@ func InnervateAura(character *Character, actionTag int32, isSelfCast bool) *Aura ActionID: actionID, Duration: InnervateDuration, OnGain: func(aura *Aura, sim *Simulation) { - reg := TernaryFloat64(isSelfCast, 0.2, 0.05) manaPerTick := aura.Unit.MaxMana() * reg / 10.0 StartPeriodicAction(sim, PeriodicActionOptions{ Period: InnervateDuration / 10, diff --git a/sim/core/character.go b/sim/core/character.go index ecce558681..89da383fe5 100644 --- a/sim/core/character.go +++ b/sim/core/character.go @@ -404,7 +404,7 @@ func (character *Character) MeleeCritMultiplier(primaryModifiers float64, second return character.calculateCritMultiplier(2.0, primaryModifiers, secondaryModifiers) } func (character *Character) HealingCritMultiplier(primaryModifiers float64, secondaryModifiers float64) float64 { - return character.calculateHealingCritMultiplier(1.5, primaryModifiers, secondaryModifiers) + return character.calculateHealingCritMultiplier(2.0, primaryModifiers, secondaryModifiers) } func (character *Character) DefaultSpellCritMultiplier() float64 { return character.SpellCritMultiplier(1, 0) @@ -597,7 +597,13 @@ func (character *Character) GetProcMaskForItem(itemID int32) ProcMask { func (character *Character) GetProcMaskForTypes(weaponTypes ...proto.WeaponType) ProcMask { return character.getProcMaskFor(func(weapon *Item) bool { - return weapon == nil || slices.Contains(weaponTypes, weapon.WeaponType) + return weapon != nil && slices.Contains(weaponTypes, weapon.WeaponType) + }) +} + +func (character *Character) GetProcMaskForTypesAndHand(twohand bool, weaponTypes ...proto.WeaponType) ProcMask { + return character.getProcMaskFor(func(weapon *Item) bool { + return weapon != nil && (weapon.HandType == proto.HandType_HandTypeTwoHand) == twohand && slices.Contains(weaponTypes, weapon.WeaponType) }) } diff --git a/sim/core/debuffs.go b/sim/core/debuffs.go index 49fd761c4c..b89f0a32d6 100644 --- a/sim/core/debuffs.go +++ b/sim/core/debuffs.go @@ -41,6 +41,7 @@ func applyDebuffEffects(target *Unit, targetIdx int, debuffs *proto.Debuffs, rai // +4% Phsyical Damage if debuffs.BloodFrenzy && targetIdx < 4 { MakePermanent(BloodFrenzyAura(target, 2)) + MakePermanent(TraumaAura(target, 2)) } if debuffs.SavageCombat { @@ -323,9 +324,7 @@ func spellDamageEffect(aura *Aura, multiplier float64) *ExclusiveEffect { } func BloodFrenzyAura(target *Unit, points int32) *Aura { - baseAura := bloodFrenzySavageCombatAura(target, "Blood Frenzy", ActionID{SpellID: 29859}, points) - bleedDamageEffect(baseAura, 1.3) - return baseAura + return bloodFrenzySavageCombatAura(target, "Blood Frenzy", ActionID{SpellID: 29859}, points) } func SavageCombatAura(target *Unit, points int32) *Aura { return bloodFrenzySavageCombatAura(target, "Savage Combat", ActionID{SpellID: 58413}, points) diff --git a/sim/core/pet.go b/sim/core/pet.go index 001b9fa616..10932bfa9c 100644 --- a/sim/core/pet.go +++ b/sim/core/pet.go @@ -176,7 +176,11 @@ func (pet *Pet) Enable(sim *Simulation, petAgent PetAgent) { } else { sim.AddPendingAction(&PendingAction{ NextActionAt: 0, - OnAction: pet.AutoAttacks.EnableAutoSwing, + OnAction: func(sim *Simulation) { + if pet.enabled { + pet.AutoAttacks.EnableAutoSwing(sim) + } + }, }) } diff --git a/sim/core/professions.go b/sim/core/professions.go index 0dc4b714e1..4ebfb9e75c 100644 --- a/sim/core/professions.go +++ b/sim/core/professions.go @@ -10,39 +10,44 @@ import ( // This is just the static bonuses. Most professions are handled elsewhere. func (character *Character) applyProfessionEffects() { if character.HasProfession(proto.Profession_Mining) { - character.AddStat(stats.Stamina, 60) + character.AddStat(stats.Stamina, 120) } if character.HasProfession(proto.Profession_Skinning) { - character.AddStats(stats.Stats{stats.MeleeCrit: 40, stats.SpellCrit: 40}) + character.AddStats(stats.Stats{stats.MeleeCrit: 80, stats.SpellCrit: 80}) } if character.HasProfession(proto.Profession_Herbalism) { - actionID := ActionID{SpellID: 55503} - healthMetrics := character.NewHealthMetrics(actionID) + actionID := ActionID{SpellID: 74497} + + aura := character.NewTemporaryStatsAura( + "Lifeblood", + actionID, + stats.Stats{stats.MeleeHaste: 480, stats.SpellHaste: 480}, + time.Second*20, + ) spell := character.RegisterSpell(SpellConfig{ ActionID: actionID, SpellSchool: SpellSchoolNature, + ProcMask: ProcMaskSpellHealing, Cast: CastConfig{ CD: Cooldown{ Timer: character.NewTimer(), - Duration: time.Minute * 3, + Duration: time.Minute * 2, }, }, - ApplyEffects: func(sim *Simulation, _ *Unit, _ *Spell) { - amount := (3600 + character.MaxHealth()*0.016) / 5 - StartPeriodicAction(sim, PeriodicActionOptions{ - Period: time.Second, - NumTicks: 5, - OnAction: func(sim *Simulation) { - character.GainHealth(sim, amount*character.PseudoStats.HealingTakenMultiplier, healthMetrics) - }, - }) + DamageMultiplier: 1, + ThreatMultiplier: 1, + CritMultiplier: character.DefaultHealingCritMultiplier(), + ApplyEffects: func(sim *Simulation, _ *Unit, spell *Spell) { + amount := sim.RollWithLabel(720, 2160, "Healing Roll") + spell.CalcAndDealHealing(sim, spell.Unit, amount, spell.OutcomeHealingCrit) + aura.Activate(sim) }, }) character.AddMajorCooldown(MajorCooldown{ - Type: CooldownTypeSurvival, + Type: CooldownTypeDPS, Spell: spell, }) } diff --git a/sim/core/racials.go b/sim/core/racials.go index 3c331625f2..47317f28f6 100644 --- a/sim/core/racials.go +++ b/sim/core/racials.go @@ -31,6 +31,12 @@ func applyRaceEffects(agent Agent) { } else if character.HasManaBar() { actionID = ActionID{SpellID: 28730} resourceMetrics = character.NewManaMetrics(actionID) + } else if character.HasRageBar() { + actionID = ActionID{SpellID: 69179} + resourceMetrics = character.NewRageMetrics(actionID) + } else if character.HasFocusBar() { + actionID = ActionID{SpellID: 80483} + resourceMetrics = character.NewFocusMetrics(actionID) } } @@ -50,6 +56,10 @@ func applyRaceEffects(agent Agent) { spell.Unit.AddEnergy(sim, 15.0, resourceMetrics) } else if spell.Unit.HasManaBar() { spell.Unit.AddMana(sim, spell.Unit.MaxMana()*0.06, resourceMetrics) + } else if spell.Unit.HasRageBar() { + spell.Unit.AddRage(sim, 15.0, resourceMetrics) + } else if spell.Unit.HasFocusBar() { + spell.Unit.AddFocus(sim, 15.0, resourceMetrics) } }, }) @@ -63,6 +73,10 @@ func applyRaceEffects(agent Agent) { return character.CurrentRunicPower() <= character.maxRunicPower-15 } else if spell.Unit.HasEnergyBar() { return character.CurrentEnergy() <= character.maxEnergy-15 + } else if spell.Unit.HasRageBar() { + return character.CurrentRage() <= MaxRage-15 + } else if spell.Unit.HasFocusBar() { + return character.CurrentFocus() <= character.maxFocus-15 } return true }, @@ -118,6 +132,8 @@ func applyRaceEffects(agent Agent) { case proto.Race_RaceGnome: character.PseudoStats.ReducedArcaneHitTakenChance += 0.02 character.MultiplyStat(stats.Mana, 1.05) + applyOneHandWeaponSpecialization(character, 3*ExpertisePerQuarterPercentReduction, + proto.WeaponType_WeaponTypeSword, proto.WeaponType_WeaponTypeDagger) case proto.Race_RaceHuman: character.MultiplyStat(stats.Spirit, 1.03) applyWeaponSpecialization(character, 3*ExpertisePerQuarterPercentReduction, @@ -249,3 +265,17 @@ func applyWeaponSpecialization(character *Character, expertiseBonus float64, wea }) } } + +func applyOneHandWeaponSpecialization(character *Character, expertiseBonus float64, weaponTypes ...proto.WeaponType) { + mask := character.GetProcMaskForTypesAndHand(false, weaponTypes...) + + if mask == ProcMaskMelee || (mask == ProcMaskMeleeMH && !character.HasOHWeapon()) { + character.AddStat(stats.Expertise, expertiseBonus) + } else { + character.OnSpellRegistered(func(spell *Spell) { + if spell.ProcMask.Matches(mask) { + spell.BonusExpertiseRating += expertiseBonus + } + }) + } +} diff --git a/sim/core/spell_mod.go b/sim/core/spell_mod.go index 92da5b1361..16e7fadffd 100644 --- a/sim/core/spell_mod.go +++ b/sim/core/spell_mod.go @@ -77,8 +77,6 @@ func (unit *Unit) AddStaticMod(config SpellModConfig) { mod.Activate() } -// Never use dynamic mods for Auras that have ExpireNever and activate on reset -// Those mods will be overwritten potentilly during sim reset func (unit *Unit) AddDynamicMod(config SpellModConfig) *SpellMod { return buildMod(unit, config) } diff --git a/sim/core/spell_outcome.go b/sim/core/spell_outcome.go index 5008bd0b75..f7c70c2c11 100644 --- a/sim/core/spell_outcome.go +++ b/sim/core/spell_outcome.go @@ -34,8 +34,10 @@ func (dot *Dot) OutcomeTickPhysicalCrit(sim *Simulation, result *SpellResult, at if dot.Spell.PhysicalCritCheck(sim, attackTable) { result.Outcome = OutcomeCrit result.Damage *= dot.Spell.CritMultiplier + dot.Spell.SpellMetrics[result.Target.UnitIndex].Crits++ } else { result.Outcome = OutcomeHit + dot.Spell.SpellMetrics[result.Target.UnitIndex].Hits++ } } diff --git a/sim/core/spell_resistances.go b/sim/core/spell_resistances.go index ad1cbe7caa..707c27490a 100644 --- a/sim/core/spell_resistances.go +++ b/sim/core/spell_resistances.go @@ -68,9 +68,11 @@ func (at *AttackTable) GetArmorDamageModifier(spell *Spell) float64 { return 1.0 } + ignoreArmorFactor := Clamp(at.ArmorIgnoreFactor, 0.0, 1.0) + // Assume target > 80 armorConstant := float64(at.Attacker.Level)*2167.5 - 158167.5 - defenderArmor := at.Defender.Armor() + defenderArmor := at.Defender.Armor() - (at.Defender.Armor() * ignoreArmorFactor) return 1 - defenderArmor/(defenderArmor+armorConstant) } diff --git a/sim/core/target.go b/sim/core/target.go index 79aa72afe9..f80da766cb 100644 --- a/sim/core/target.go +++ b/sim/core/target.go @@ -216,6 +216,7 @@ type AttackTable struct { HauntSEDamageTakenMultiplier float64 HealingDealtMultiplier float64 IgnoreArmor bool // Ignore defender's armor for specifically this attacker's attacks + ArmorIgnoreFactor float64 // Percentage of armor to ignore for this attacker's attacks BonusCritRating float64 // crit rating modifier // This is for "Apply Aura: Mod Damage Done By Caster" effects. diff --git a/sim/death_knight/blood/TestBlood.results b/sim/death_knight/blood/TestBlood.results index 76ac31be81..2db9943767 100644 --- a/sim/death_knight/blood/TestBlood.results +++ b/sim/death_knight/blood/TestBlood.results @@ -37,1448 +37,1448 @@ character_stats_results: { dps_results: { key: "TestBlood-AllItems-AgileShadowspiritDiamond" value: { - dps: 13685.78673 - tps: 65473.66851 + dps: 14187.66894 + tps: 67858.60806 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-Althor'sAbacus-50366" value: { - dps: 13546.59836 - tps: 64719.42035 - hps: 4910.12222 + dps: 14043.08078 + tps: 67075.04465 + hps: 4912.39092 } } dps_results: { key: "TestBlood-AllItems-Anhuur'sHymnal-55889" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Anhuur'sHymnal-56407" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-AustereShadowspiritDiamond" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BaubleofTrueBlood-50726" value: { - dps: 13546.59836 - tps: 64719.42035 - hps: 4869.62569 + dps: 14043.08078 + tps: 67075.04465 + hps: 4871.6611 } } dps_results: { key: "TestBlood-AllItems-BedrockTalisman-58182" value: { - dps: 13571.8526 - tps: 64858.76353 + dps: 14069.19597 + tps: 67219.19808 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BellofEnragingResonance-59326" value: { - dps: 13763.7478 - tps: 65885.05572 + dps: 14268.30356 + tps: 68284.37673 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BellofEnragingResonance-65053" value: { - dps: 13787.09131 - tps: 66011.84462 + dps: 14292.49862 + tps: 68415.80881 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BindingPromise-67037" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 13673.91289 - tps: 65228.18073 + dps: 14175.4879 + tps: 67604.15545 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodofIsiset-55995" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodofIsiset-56414" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 13756.26844 - tps: 65606.11299 + dps: 14261.13766 + tps: 67997.205 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 14048.55146 - tps: 66860.14972 + dps: 14562.82044 + tps: 69289.06445 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 13758.84281 - tps: 65857.74316 + dps: 14263.27613 + tps: 68256.32643 hps: 4887.66972 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4887.66972 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4887.66972 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 13668.55075 - tps: 65277.97597 + dps: 14169.91126 + tps: 67655.9425 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 13981.01355 - tps: 66743.59617 + dps: 14492.77509 + tps: 69169.28285 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BottledLightning-66879" value: { - dps: 13630.36619 - tps: 65111.26716 + dps: 14129.98737 + tps: 67481.4628 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-BracingShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 63348.14236 + dps: 14028.37632 + tps: 65653.99988 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 14326.86299 - tps: 68135.07553 + dps: 14846.24078 + tps: 70583.89952 hps: 4946.09503 } } dps_results: { key: "TestBlood-AllItems-BurningShadowspiritDiamond" value: { - dps: 13649.71268 - tps: 65276.88085 + dps: 14150.15193 + tps: 67653.9489 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 13688.91061 - tps: 65487.46377 + dps: 14190.8165 + tps: 67872.40333 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-CoreofRipeness-58184" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-CorpseTongueCoin-50349" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-CrushingWeight-59506" value: { - dps: 14432.7148 - tps: 69149.98562 + dps: 14961.94412 + tps: 71669.2728 hps: 4918.49692 } } dps_results: { key: "TestBlood-AllItems-CrushingWeight-65118" value: { - dps: 14518.5194 - tps: 69686.37784 + dps: 15050.98712 + tps: 72226.65327 hps: 4873.14065 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4888.87474 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 14245.05603 - tps: 68214.86697 + dps: 14755.14044 + tps: 70634.96632 hps: 4776.60428 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 13987.17803 - tps: 67028.4353 + dps: 14489.24894 + tps: 69412.85766 hps: 4776.60428 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 13583.78137 - tps: 64945.90286 + dps: 14080.26379 + tps: 67301.52716 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Deathbringer'sWill-50363" value: { - dps: 13890.30963 - tps: 66472.10582 + dps: 14399.77653 + tps: 68894.09557 hps: 4815.66304 } } dps_results: { key: "TestBlood-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 13569.51681 - tps: 64839.62473 + dps: 14066.90444 + tps: 67199.96651 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-DislodgedForeignObject-50348" value: { - dps: 13821.51592 - tps: 66182.73711 + dps: 14328.44048 + tps: 68594.14369 hps: 4824.94021 } } dps_results: { key: "TestBlood-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 64640.96159 + dps: 14028.37632 + tps: 66993.87743 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-EmberShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 64640.96159 + dps: 14028.37632 + tps: 66993.87743 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 13569.51681 - tps: 64839.62473 + dps: 14066.90444 + tps: 67199.96651 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-EssenceoftheCyclone-59473" value: { - dps: 13900.15818 - tps: 66484.62951 + dps: 14410.12426 + tps: 68907.45497 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-EssenceoftheCyclone-65140" value: { - dps: 13949.13911 - tps: 66677.35544 + dps: 14460.85962 + tps: 69106.85377 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-EternalShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 64640.96159 + dps: 14028.37632 + tps: 66993.87743 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-FallofMortality-59500" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-FallofMortality-65124" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Figurine-DemonPanther-52199" value: { - dps: 13737.98217 - tps: 65510.71765 + dps: 14199.8582 + tps: 67737.37041 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Figurine-DreamOwl-52354" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4975.2598 } } dps_results: { key: "TestBlood-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Figurine-KingofBoars-52351" value: { - dps: 14017.17939 - tps: 66726.35413 + dps: 14530.33671 + tps: 69150.68821 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-FleetShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 64640.96159 + dps: 14028.37632 + tps: 66993.87743 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-FluidDeath-58181" value: { - dps: 13727.34625 - tps: 65752.86752 + dps: 14231.05859 + tps: 68149.82971 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ForlornShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 64640.96159 + dps: 14028.37632 + tps: 66993.87743 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-FuryofAngerforge-59461" value: { - dps: 14262.98104 - tps: 68665.95477 + dps: 14784.63525 + tps: 71161.02299 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-GaleofShadows-56138" value: { - dps: 13727.85242 - tps: 65468.22799 + dps: 14231.6822 + tps: 67854.6701 hps: 4818.18213 } } dps_results: { key: "TestBlood-AllItems-GaleofShadows-56462" value: { - dps: 13796.66611 - tps: 65601.80851 + dps: 14302.9384 + tps: 67991.84404 hps: 4844.49665 } } dps_results: { key: "TestBlood-AllItems-GearDetector-61462" value: { - dps: 13799.28855 - tps: 65894.33582 + dps: 14305.73982 + tps: 68296.58634 hps: 4818.94052 } } dps_results: { key: "TestBlood-AllItems-GlowingTwilightScale-54589" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4852.90291 } } dps_results: { key: "TestBlood-AllItems-GraceoftheHerald-55266" value: { - dps: 13735.69197 - tps: 65610.26516 + dps: 14239.54046 + tps: 68000.47079 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-GraceoftheHerald-56295" value: { - dps: 13821.05841 - tps: 66078.00544 + dps: 14328.27741 + tps: 68486.61334 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-HarmlightToken-63839" value: { - dps: 13626.70067 - tps: 65147.18721 + dps: 14121.41993 + tps: 67496.73721 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 13863.42428 - tps: 66287.27512 + dps: 14370.90081 + tps: 68697.02317 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-HeartofIgnacious-59514" value: { - dps: 13622.71987 - tps: 65201.2145 + dps: 14121.98683 + tps: 67575.35303 hps: 4792.85618 } } dps_results: { key: "TestBlood-AllItems-HeartofIgnacious-65110" value: { - dps: 13662.76724 - tps: 65381.20646 + dps: 14163.82805 + tps: 67763.07645 hps: 4851.63392 } } dps_results: { key: "TestBlood-AllItems-HeartofRage-59224" value: { - dps: 14194.60136 - tps: 67834.46932 + dps: 14714.83595 + tps: 70303.62813 hps: 4815.90675 } } dps_results: { key: "TestBlood-AllItems-HeartofRage-65072" value: { - dps: 14289.2761 - tps: 68326.36744 + dps: 14812.71939 + tps: 70812.13117 hps: 4815.90675 } } dps_results: { key: "TestBlood-AllItems-HeartofSolace-55868" value: { - dps: 13727.85242 - tps: 65468.22799 + dps: 14231.6822 + tps: 67854.6701 hps: 4818.18213 } } dps_results: { key: "TestBlood-AllItems-HeartofSolace-56393" value: { - dps: 14299.48379 - tps: 67921.59981 + dps: 14823.81185 + tps: 70393.59535 hps: 4844.49665 } } dps_results: { key: "TestBlood-AllItems-HeartofThunder-55845" value: { - dps: 13563.51968 - tps: 64812.7857 + dps: 14060.57897 + tps: 67171.63306 hps: 4830.47259 } } dps_results: { key: "TestBlood-AllItems-HeartofThunder-56370" value: { - dps: 13568.98324 - tps: 64842.93154 + dps: 14066.2288 + tps: 67202.81956 hps: 4844.32923 } } dps_results: { key: "TestBlood-AllItems-HeartoftheVile-66969" value: { - dps: 13752.79396 - tps: 65768.53255 + dps: 14257.30505 + tps: 68164.96871 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 13569.51681 - tps: 64839.62473 + dps: 14066.90444 + tps: 67199.96651 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-ImpatienceofYouth-62464" value: { - dps: 14076.6212 - tps: 66979.86156 + dps: 14591.88483 + tps: 69412.87477 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ImpatienceofYouth-62469" value: { - dps: 14076.6212 - tps: 66979.86156 + dps: 14591.88483 + tps: 69412.87477 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ImpetuousQuery-55881" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ImpetuousQuery-56406" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4826.3211 } } dps_results: { key: "TestBlood-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-JarofAncientRemedies-59354" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-JarofAncientRemedies-65029" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-JujuofNimbleness-63840" value: { - dps: 13673.91289 - tps: 65228.18073 + dps: 14175.4879 + tps: 67604.15545 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 13636.10985 - tps: 65192.22295 + dps: 14136.17272 + tps: 67566.75936 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 13696.13239 - tps: 65422.16639 + dps: 14198.59617 + tps: 67805.90053 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-KvaldirBattleStandard-59685" value: { - dps: 14076.91472 - tps: 66989.98192 + dps: 14593.12409 + tps: 69428.38297 hps: 4810.53017 } } dps_results: { key: "TestBlood-AllItems-KvaldirBattleStandard-59689" value: { - dps: 14076.91472 - tps: 66989.98192 + dps: 14593.12409 + tps: 69428.38297 hps: 4810.53017 } } dps_results: { key: "TestBlood-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 13754.76565 - tps: 65589.22957 + dps: 14259.4401 + tps: 67979.32998 hps: 4799.60074 } } dps_results: { key: "TestBlood-AllItems-LastWord-50708" value: { - dps: 14248.16298 - tps: 67241.65778 + dps: 14765.50161 + tps: 69662.07669 hps: 4953.16173 } } dps_results: { key: "TestBlood-AllItems-LeadenDespair-55816" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4929.62965 } } dps_results: { key: "TestBlood-AllItems-LeadenDespair-56347" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4975.2598 } } dps_results: { key: "TestBlood-AllItems-LeftEyeofRajh-56102" value: { - dps: 13786.18763 - tps: 65960.62027 + dps: 14292.21354 + tps: 68365.81698 hps: 4779.93587 } } dps_results: { key: "TestBlood-AllItems-LeftEyeofRajh-56427" value: { - dps: 13788.51576 - tps: 65848.23522 + dps: 14294.67945 + tps: 68249.25987 hps: 4815.90675 } } dps_results: { key: "TestBlood-AllItems-LicensetoSlay-58180" value: { - dps: 14029.22538 - tps: 67176.46995 + dps: 14542.49294 + tps: 69617.62068 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MagmaPlatedBattlearmor" value: { - dps: 13270.58921 - tps: 63631.42122 + dps: 13757.13969 + tps: 65949.05496 hps: 4341.18356 } } dps_results: { key: "TestBlood-AllItems-MagmaPlatedBattlegear" value: { - dps: 14514.22731 - tps: 69639.90047 + dps: 15048.64673 + tps: 72188.09502 hps: 4566.87316 } } dps_results: { key: "TestBlood-AllItems-MagnetiteMirror-55814" value: { - dps: 14140.48136 - tps: 66961.5525 + dps: 14658.45945 + tps: 69396.28705 hps: 4768.58666 } } dps_results: { key: "TestBlood-AllItems-MagnetiteMirror-56345" value: { - dps: 14268.1508 - tps: 67329.56394 + dps: 14790.89469 + tps: 69777.79526 hps: 4815.90675 } } dps_results: { key: "TestBlood-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MarkofKhardros-56132" value: { - dps: 13887.79551 - tps: 66407.87933 + dps: 14396.11773 + tps: 68821.79075 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MarkofKhardros-56458" value: { - dps: 13932.47609 - tps: 66628.98706 + dps: 14442.34876 + tps: 69050.53131 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MightoftheOcean-55251" value: { - dps: 13862.00785 - tps: 65793.79352 + dps: 14369.7025 + tps: 68185.8743 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MightoftheOcean-56285" value: { - dps: 14134.12584 - tps: 66720.7037 + dps: 14651.4938 + tps: 69144.23713 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MirrorofBrokenImages-62466" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-MoonwellChalice-70142" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Oremantle'sFavor-61448" value: { - dps: 13957.77969 - tps: 66660.76442 + dps: 14468.85665 + tps: 69084.44059 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 13561.06304 - tps: 64799.23092 + dps: 14058.03858 + tps: 67157.61035 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 13683.40117 - tps: 65451.94018 + dps: 14185.04315 + tps: 67835.3521 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-PorcelainCrab-55237" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-PorcelainCrab-56280" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 13532.37867 - tps: 64640.96159 + dps: 14028.37632 + tps: 66993.87743 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 14106.52491 - tps: 67402.7677 + dps: 14625.24565 + tps: 69865.01431 hps: 4860.04427 } } dps_results: { key: "TestBlood-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 14218.41195 - tps: 68315.5103 + dps: 14741.40288 + tps: 70813.21834 hps: 4857.68772 } } dps_results: { key: "TestBlood-AllItems-Rainsong-55854" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Rainsong-56377" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 13723.45456 - tps: 65642.1301 + dps: 14226.45386 + tps: 68031.81467 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 13649.71268 - tps: 65276.88085 + dps: 14150.15193 + tps: 67653.9489 hps: 4752.37404 } } dps_results: { key: "TestBlood-AllItems-RightEyeofRajh-56100" value: { - dps: 13851.21279 - tps: 66207.72304 + dps: 14358.30283 + tps: 68614.88182 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-RightEyeofRajh-56431" value: { - dps: 13861.18166 - tps: 66278.88088 + dps: 14368.65072 + tps: 68688.96361 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 13682.01722 - tps: 65450.18543 + dps: 14183.91639 + tps: 67835.04034 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-SeaStar-55256" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-SeaStar-56290" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Shadowmourne-49623" value: { - dps: 14905.65313 - tps: 71156.91239 + dps: 15445.73297 + tps: 73713.60541 hps: 5029.53549 } } dps_results: { key: "TestBlood-AllItems-ShardofWoe-60233" value: { - dps: 14080.91778 - tps: 67152.16061 + dps: 14598.67458 + tps: 69604.87515 hps: 4842.53282 } } dps_results: { key: "TestBlood-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 14045.46913 - tps: 67210.74061 + dps: 14560.29355 + tps: 69658.05855 hps: 4799.62779 } } dps_results: { key: "TestBlood-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4901.1108 } } dps_results: { key: "TestBlood-AllItems-Skardyn'sGrace-56115" value: { - dps: 13688.41258 - tps: 65483.86263 + dps: 14190.56757 + tps: 67870.06463 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Skardyn'sGrace-56440" value: { - dps: 13703.68244 - tps: 65563.45345 + dps: 14206.44823 + tps: 67952.83908 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Sorrowsong-55879" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Sorrowsong-56400" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Soul'sAnguish-66994" value: { - dps: 13862.00785 - tps: 65793.79352 + dps: 14369.7025 + tps: 68185.8743 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-SoulCasket-58183" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Stonemother'sKiss-61411" value: { - dps: 13660.48419 - tps: 65342.64347 + dps: 14161.19098 + tps: 67721.42837 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-StumpofTime-62465" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-StumpofTime-62470" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-SymbioticWorm-59332" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4999.39113 } } dps_results: { key: "TestBlood-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 14020.00278 - tps: 67028.34504 + dps: 14533.57011 + tps: 69466.95125 hps: 4837.77915 } } dps_results: { key: "TestBlood-AllItems-TearofBlood-55819" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-TearofBlood-56351" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Theralion'sMirror-59519" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Theralion'sMirror-65105" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Throngus'sFinger-56121" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Throngus'sFinger-56449" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Tia'sGrace-55874" value: { - dps: 13693.58517 - tps: 65553.8743 + dps: 14195.94706 + tps: 67942.87676 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Tia'sGrace-56394" value: { - dps: 13706.87003 - tps: 65622.2443 + dps: 14209.76332 + tps: 68013.98157 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-TinyAbominationinaJar-50706" value: { - dps: 13746.76668 - tps: 65489.51718 + dps: 14250.79854 + tps: 67873.60073 hps: 4822.29916 } } dps_results: { key: "TestBlood-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 13550.79218 - tps: 64748.32113 + dps: 14047.2746 + tps: 67103.94543 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-UnheededWarning-59520" value: { - dps: 13889.35855 - tps: 66590.79632 + dps: 14398.54699 + tps: 69016.04926 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-UnquenchableFlame-67101" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-UnsolvableRiddle-62463" value: { - dps: 13721.65255 - tps: 65488.61162 + dps: 14225.13714 + tps: 67875.00357 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-UnsolvableRiddle-62468" value: { - dps: 13721.65255 - tps: 65488.61162 + dps: 14225.13714 + tps: 67875.00357 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-UnsolvableRiddle-68709" value: { - dps: 13721.65255 - tps: 65488.61162 + dps: 14225.13714 + tps: 67875.00357 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 8030.12208 - tps: 36326.93149 + dps: 8305.56614 + tps: 37545.00882 hps: 4721.12722 } } dps_results: { key: "TestBlood-AllItems-VialofStolenMemories-59515" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4999.39113 } } dps_results: { key: "TestBlood-AllItems-VialofStolenMemories-65109" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 5026.59373 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 13721.65255 - tps: 65488.61162 + dps: 14225.13714 + tps: 67875.00357 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 14076.6212 - tps: 66979.86156 + dps: 14591.88483 + tps: 69412.87477 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4893.40826 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 13820.86077 - tps: 66049.18288 + dps: 14327.98103 + tps: 68456.16002 hps: 4953.81228 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 13766.56067 - tps: 65896.70193 + dps: 14271.19907 + tps: 68296.33944 hps: 4893.40826 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 13671.98419 - tps: 65301.22322 + dps: 14173.48662 + tps: 67680.36738 hps: 4921.95006 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4893.40826 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4893.40826 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 13674.91236 - tps: 65317.05164 + dps: 14176.52734 + tps: 67696.58119 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 13979.18416 - tps: 66757.06872 + dps: 14490.6517 + tps: 69182.45293 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-WitchingHourglass-55787" value: { - dps: 13605.36472 - tps: 64942.05277 + dps: 14103.9084 + tps: 67305.77641 hps: 4824.83178 } } dps_results: { key: "TestBlood-AllItems-WitchingHourglass-56320" value: { - dps: 13710.32014 - tps: 65503.90664 + dps: 14213.19515 + tps: 67890.43253 hps: 4800.53519 } } dps_results: { key: "TestBlood-AllItems-World-QuellerFocus-63842" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4932.26215 } } dps_results: { key: "TestBlood-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4932.26215 } } dps_results: { key: "TestBlood-Average-Default" value: { - dps: 13501.74136 - tps: 64745.6486 + dps: 13997.14657 + tps: 67106.31281 hps: 4754.31545 } } dps_results: { key: "TestBlood-Settings-Goblin-p1-Basic-simple-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 17163.94254 - tps: 82257.41131 + dps: 17661.96332 + tps: 84598.58155 hps: 4860.93792 } } dps_results: { key: "TestBlood-Settings-Goblin-p1-Basic-simple-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 13425.26652 - tps: 64130.44981 + dps: 13917.4981 + tps: 66465.99182 hps: 4766.5552 } } dps_results: { key: "TestBlood-Settings-Goblin-p1-Basic-simple-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 18993.14985 - tps: 78235.55995 + dps: 19707.96374 + tps: 81120.00022 hps: 8503.49867 } } @@ -1509,24 +1509,24 @@ dps_results: { dps_results: { key: "TestBlood-Settings-Worgen-p1-Basic-simple-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 17488.75437 - tps: 83926.91701 + dps: 17994.50227 + tps: 86308.46375 hps: 4874.48114 } } dps_results: { key: "TestBlood-Settings-Worgen-p1-Basic-simple-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 13546.59836 - tps: 64719.42035 + dps: 14043.08078 + tps: 67075.04465 hps: 4787.91291 } } dps_results: { key: "TestBlood-Settings-Worgen-p1-Basic-simple-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19127.51703 - tps: 78718.78467 + dps: 19846.78573 + tps: 81617.93716 hps: 8469.7759 } } @@ -1557,8 +1557,8 @@ dps_results: { dps_results: { key: "TestBlood-SwitchInFrontOfTarget-Default" value: { - dps: 12434.48946 - tps: 59905.22454 + dps: 12887.30167 + tps: 62072.5853 hps: 4626.32857 } } diff --git a/sim/death_knight/death_knight.go b/sim/death_knight/death_knight.go index c9e18ad584..9b6e623cc3 100644 --- a/sim/death_knight/death_knight.go +++ b/sim/death_knight/death_knight.go @@ -147,7 +147,7 @@ func NewDeathKnight(character *core.Character, inputs DeathKnightInputs, talents } core.FillTalentsProto(dk.Talents.ProtoReflect(), talents, TalentTreeSizes) - maxRunicPower := 100.0 + 15.0*float64(dk.Talents.RunicPowerMastery) + maxRunicPower := 100.0 + 10.0*float64(dk.Talents.RunicPowerMastery) currentRunicPower := math.Min(maxRunicPower, dk.Inputs.StartingRunicPower) dk.EnableRunicPowerBar( diff --git a/sim/death_knight/frost/TestFrost.results b/sim/death_knight/frost/TestFrost.results index 0e28217131..02a82390cb 100644 --- a/sim/death_knight/frost/TestFrost.results +++ b/sim/death_knight/frost/TestFrost.results @@ -37,1367 +37,1367 @@ character_stats_results: { dps_results: { key: "TestFrost-AllItems-AgileShadowspiritDiamond" value: { - dps: 21998.85907 - tps: 19401.86587 + dps: 22061.73159 + tps: 19400.99709 } } dps_results: { key: "TestFrost-AllItems-Althor'sAbacus-50366" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Anhuur'sHymnal-55889" value: { - dps: 21071.15353 - tps: 18668.28771 + dps: 21043.90236 + tps: 18607.55855 } } dps_results: { key: "TestFrost-AllItems-Anhuur'sHymnal-56407" value: { - dps: 21092.88396 - tps: 18688.2805 + dps: 21072.95877 + tps: 18648.28523 } } dps_results: { key: "TestFrost-AllItems-AustereShadowspiritDiamond" value: { - dps: 21702.86883 - tps: 19107.66598 + dps: 21761.98339 + tps: 19106.34769 } } dps_results: { key: "TestFrost-AllItems-BaubleofTrueBlood-50726" value: { - dps: 20732.84077 - tps: 18412.44622 - hps: 87.71129 + dps: 20642.19248 + tps: 18318.02091 + hps: 95.30298 } } dps_results: { key: "TestFrost-AllItems-BedrockTalisman-58182" value: { - dps: 20767.29959 - tps: 18446.90505 + dps: 20676.49914 + tps: 18352.32758 } } dps_results: { key: "TestFrost-AllItems-BellofEnragingResonance-59326" value: { - dps: 20996.6409 - tps: 18638.41734 + dps: 20912.40478 + tps: 18554.52713 } } dps_results: { key: "TestFrost-AllItems-BellofEnragingResonance-65053" value: { - dps: 21022.71089 - tps: 18660.9626 + dps: 20944.73588 + tps: 18581.21461 } } dps_results: { key: "TestFrost-AllItems-BindingPromise-67037" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 20982.31203 - tps: 18661.91749 + dps: 20896.94564 + tps: 18572.77408 } } dps_results: { key: "TestFrost-AllItems-BloodofIsiset-55995" value: { - dps: 20919.753 - tps: 18599.35846 + dps: 20828.48239 + tps: 18504.31082 } } dps_results: { key: "TestFrost-AllItems-BloodofIsiset-56414" value: { - dps: 20944.2296 - tps: 18623.83506 + dps: 20852.87749 + tps: 18528.70593 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 20932.19779 - tps: 18570.26628 + dps: 20840.41871 + tps: 18476.22588 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 21583.53986 - tps: 19136.84103 + dps: 21498.35967 + tps: 19031.61766 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 20985.70885 - tps: 18629.50388 + dps: 20905.50136 + tps: 18548.50702 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 20908.33759 - tps: 18560.8059 + dps: 20814.46453 + tps: 18467.02952 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 21543.01838 - tps: 19090.39878 + dps: 21449.76699 + tps: 18997.01575 } } dps_results: { key: "TestFrost-AllItems-BottledLightning-66879" value: { - dps: 20847.06197 - tps: 18510.65844 + dps: 20774.55579 + tps: 18432.05114 } } dps_results: { key: "TestFrost-AllItems-BracingShadowspiritDiamond" value: { - dps: 21691.52782 - tps: 18714.39847 + dps: 21750.65831 + tps: 18713.12215 } } dps_results: { key: "TestFrost-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 22106.44158 - tps: 19496.97883 + dps: 22168.94136 + tps: 19498.82036 } } dps_results: { key: "TestFrost-AllItems-BurningShadowspiritDiamond" value: { - dps: 21980.30066 - tps: 19385.0978 + dps: 22042.56587 + tps: 19386.93017 } } dps_results: { key: "TestFrost-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 22035.78195 - tps: 19436.67312 + dps: 22097.70852 + tps: 19434.85839 } } dps_results: { key: "TestFrost-AllItems-CoreofRipeness-58184" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-CorpseTongueCoin-50349" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-CrushingWeight-59506" value: { - dps: 21806.34922 - tps: 19290.64191 + dps: 21724.4566 + tps: 19211.21753 } } dps_results: { key: "TestFrost-AllItems-CrushingWeight-65118" value: { - dps: 22163.25989 - tps: 19566.17795 + dps: 21999.60181 + tps: 19407.44213 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 21786.47532 - tps: 19394.53365 + dps: 21944.65365 + tps: 19540.21882 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 21186.74859 - tps: 18851.02827 + dps: 21364.79976 + tps: 19012.33501 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 21032.56139 - tps: 18712.16685 + dps: 20939.72568 + tps: 18615.55412 } } dps_results: { key: "TestFrost-AllItems-Deathbringer'sWill-50363" value: { - dps: 21119.09186 - tps: 18703.5499 + dps: 21092.31093 + tps: 18629.00124 } } dps_results: { key: "TestFrost-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 21744.08976 - tps: 19144.98092 + dps: 21803.08804 + tps: 19140.23791 } } dps_results: { key: "TestFrost-AllItems-DislodgedForeignObject-50348" value: { - dps: 20676.15158 - tps: 18495.03636 + dps: 20574.898 + tps: 18408.83303 } } dps_results: { key: "TestFrost-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 21691.52782 - tps: 19096.32497 + dps: 21750.65831 + tps: 19095.02261 } } dps_results: { key: "TestFrost-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-EmberShadowspiritDiamond" value: { - dps: 21691.52782 - tps: 19096.32497 + dps: 21750.65831 + tps: 19095.02261 } } dps_results: { key: "TestFrost-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 21744.08976 - tps: 19144.98092 + dps: 21803.08804 + tps: 19140.23791 } } dps_results: { key: "TestFrost-AllItems-EssenceoftheCyclone-59473" value: { - dps: 21158.86578 - tps: 18785.96009 + dps: 21075.2837 + tps: 18696.91895 } } dps_results: { key: "TestFrost-AllItems-EssenceoftheCyclone-65140" value: { - dps: 21186.61385 - tps: 18813.00619 + dps: 21084.48173 + tps: 18705.62882 } } dps_results: { key: "TestFrost-AllItems-EternalShadowspiritDiamond" value: { - dps: 21691.52782 - tps: 19096.32497 + dps: 21750.65831 + tps: 19095.02261 } } dps_results: { key: "TestFrost-AllItems-FallofMortality-59500" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-FallofMortality-65124" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Figurine-DemonPanther-52199" value: { - dps: 21264.55721 - tps: 18816.04636 + dps: 21219.00266 + tps: 18763.18069 } } dps_results: { key: "TestFrost-AllItems-Figurine-DreamOwl-52354" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Figurine-KingofBoars-52351" value: { - dps: 21749.44658 - tps: 19310.64177 + dps: 21663.04562 + tps: 19205.21426 } } dps_results: { key: "TestFrost-AllItems-FleetShadowspiritDiamond" value: { - dps: 21732.89802 - tps: 19137.69516 + dps: 21792.01646 + tps: 19136.38076 } } dps_results: { key: "TestFrost-AllItems-FluidDeath-58181" value: { - dps: 21212.30899 - tps: 18787.59783 + dps: 21210.9159 + tps: 18773.75079 } } dps_results: { key: "TestFrost-AllItems-ForlornShadowspiritDiamond" value: { - dps: 21691.52782 - tps: 19096.32497 + dps: 21750.65831 + tps: 19095.02261 } } dps_results: { key: "TestFrost-AllItems-FuryofAngerforge-59461" value: { - dps: 21814.86905 - tps: 19416.61406 + dps: 21745.69288 + tps: 19335.51971 } } dps_results: { key: "TestFrost-AllItems-GaleofShadows-56138" value: { - dps: 21021.81498 - tps: 18664.30628 + dps: 20872.08758 + tps: 18487.13592 } } dps_results: { key: "TestFrost-AllItems-GaleofShadows-56462" value: { - dps: 20995.47865 - tps: 18534.25939 + dps: 20908.06644 + tps: 18421.25768 } } dps_results: { key: "TestFrost-AllItems-GearDetector-61462" value: { - dps: 20926.05888 - tps: 18472.51176 + dps: 21012.24687 + tps: 18576.74582 } } dps_results: { key: "TestFrost-AllItems-GlowingTwilightScale-54589" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-GraceoftheHerald-55266" value: { - dps: 20895.78027 - tps: 18554.3697 + dps: 20805.33963 + tps: 18456.3875 } } dps_results: { key: "TestFrost-AllItems-GraceoftheHerald-56295" value: { - dps: 21019.04576 - tps: 18659.74991 + dps: 20904.14096 + tps: 18544.50198 } } dps_results: { key: "TestFrost-AllItems-HarmlightToken-63839" value: { - dps: 20837.38418 - tps: 18516.98964 + dps: 20733.06547 + tps: 18408.8939 } } dps_results: { key: "TestFrost-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 21422.26477 - tps: 19041.69153 + dps: 21324.83699 + tps: 18940.67212 } } dps_results: { key: "TestFrost-AllItems-HeartofIgnacious-59514" value: { - dps: 20891.75224 - tps: 18592.97529 + dps: 20914.73519 + tps: 18605.91995 } } dps_results: { key: "TestFrost-AllItems-HeartofIgnacious-65110" value: { - dps: 21030.86749 - tps: 18680.58422 + dps: 20949.56883 + tps: 18571.28047 } } dps_results: { key: "TestFrost-AllItems-HeartofRage-65072" value: { - dps: 22202.08233 - tps: 19569.94452 + dps: 22309.96058 + tps: 19625.80032 } } dps_results: { key: "TestFrost-AllItems-HeartofSolace-55868" value: { - dps: 21021.81498 - tps: 18664.30628 + dps: 20872.08758 + tps: 18487.13592 } } dps_results: { key: "TestFrost-AllItems-HeartofSolace-56393" value: { - dps: 21968.52182 - tps: 19265.83864 + dps: 21885.93202 + tps: 19144.36796 } } dps_results: { key: "TestFrost-AllItems-HeartofThunder-55845" value: { - dps: 20755.92952 - tps: 18435.53498 + dps: 20665.17928 + tps: 18341.00771 } } dps_results: { key: "TestFrost-AllItems-HeartofThunder-56370" value: { - dps: 20763.38443 - tps: 18442.98988 + dps: 20672.60126 + tps: 18348.4297 } } dps_results: { key: "TestFrost-AllItems-HeartoftheVile-66969" value: { - dps: 20932.84027 - tps: 18584.16253 + dps: 20849.42325 + tps: 18493.16128 } } dps_results: { key: "TestFrost-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 21744.08976 - tps: 19144.98092 + dps: 21803.08804 + tps: 19140.23791 } } dps_results: { key: "TestFrost-AllItems-ImpatienceofYouth-62464" value: { - dps: 21878.95353 - tps: 19425.19163 + dps: 21793.06414 + tps: 19318.34945 } } dps_results: { key: "TestFrost-AllItems-ImpatienceofYouth-62469" value: { - dps: 21878.95353 - tps: 19425.19163 + dps: 21793.06414 + tps: 19318.34945 } } dps_results: { key: "TestFrost-AllItems-ImpetuousQuery-55881" value: { - dps: 20919.753 - tps: 18599.35846 + dps: 20828.48239 + tps: 18504.31082 } } dps_results: { key: "TestFrost-AllItems-ImpetuousQuery-56406" value: { - dps: 20944.2296 - tps: 18623.83506 + dps: 20852.87749 + tps: 18528.70593 } } dps_results: { key: "TestFrost-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 20876.73352 - tps: 18556.33897 + dps: 20785.60614 + tps: 18461.43457 } } dps_results: { key: "TestFrost-AllItems-JarofAncientRemedies-59354" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-JarofAncientRemedies-65029" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-JujuofNimbleness-63840" value: { - dps: 20982.31203 - tps: 18661.91749 + dps: 20896.94564 + tps: 18572.77408 } } dps_results: { key: "TestFrost-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 21107.41268 - tps: 18701.77926 + dps: 21065.99124 + tps: 18642.15188 } } dps_results: { key: "TestFrost-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 21241.52709 - tps: 18821.92156 + dps: 21214.04191 + tps: 18774.92731 } } dps_results: { key: "TestFrost-AllItems-KvaldirBattleStandard-59685" value: { - dps: 21142.46138 - tps: 18718.16074 + dps: 21196.74088 + tps: 18779.02857 } } dps_results: { key: "TestFrost-AllItems-KvaldirBattleStandard-59689" value: { - dps: 21142.46138 - tps: 18718.16074 + dps: 21196.74088 + tps: 18779.02857 } } dps_results: { key: "TestFrost-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 20868.52132 - tps: 18422.25743 + dps: 20751.34634 + tps: 18278.58341 } } dps_results: { key: "TestFrost-AllItems-LastWord-50708" value: { - dps: 22106.44158 - tps: 19496.97883 + dps: 22168.94136 + tps: 19498.82036 } } dps_results: { key: "TestFrost-AllItems-LeadenDespair-55816" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-LeadenDespair-56347" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-LeftEyeofRajh-56102" value: { - dps: 21093.31288 - tps: 18707.84679 + dps: 21078.04613 + tps: 18650.66312 } } dps_results: { key: "TestFrost-AllItems-LeftEyeofRajh-56427" value: { - dps: 21162.7504 - tps: 18770.38438 + dps: 21173.51092 + tps: 18740.41554 } } dps_results: { key: "TestFrost-AllItems-MagmaPlatedBattlearmor" value: { - dps: 18256.05466 - tps: 15983.83909 + dps: 18167.22373 + tps: 15922.09896 } } dps_results: { key: "TestFrost-AllItems-MagmaPlatedBattlegear" value: { - dps: 20051.19808 - tps: 17565.91017 + dps: 20019.54623 + tps: 17535.11102 } } dps_results: { key: "TestFrost-AllItems-MagnetiteMirror-55814" value: { - dps: 21412.7099 - tps: 19034.165 + dps: 21389.48731 + tps: 18969.05271 } } dps_results: { key: "TestFrost-AllItems-MagnetiteMirror-56345" value: { - dps: 21650.64848 - tps: 19263.95447 + dps: 21685.30486 + tps: 19251.32244 } } dps_results: { key: "TestFrost-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-MarkofKhardros-56132" value: { - dps: 21502.17072 - tps: 19116.96835 + dps: 21412.44815 + tps: 19023.66841 } } dps_results: { key: "TestFrost-AllItems-MarkofKhardros-56458" value: { - dps: 21603.71587 - tps: 19210.02676 + dps: 21514.12694 + tps: 19116.88661 } } dps_results: { key: "TestFrost-AllItems-MightoftheOcean-55251" value: { - dps: 21285.21722 - tps: 18866.41372 + dps: 21348.02867 + tps: 18904.88795 } } dps_results: { key: "TestFrost-AllItems-MightoftheOcean-56285" value: { - dps: 21712.8281 - tps: 19308.22464 + dps: 21692.64924 + tps: 19267.9757 } } dps_results: { key: "TestFrost-AllItems-MirrorofBrokenImages-62466" value: { - dps: 20970.93135 - tps: 18650.5368 + dps: 20879.49034 + tps: 18555.31877 } } dps_results: { key: "TestFrost-AllItems-MirrorofBrokenImages-62471" value: { - dps: 20970.93135 - tps: 18650.5368 + dps: 20879.49034 + tps: 18555.31877 } } dps_results: { key: "TestFrost-AllItems-MoonwellChalice-70142" value: { - dps: 21014.6592 - tps: 18694.26466 + dps: 20917.12909 + tps: 18592.95752 } } dps_results: { key: "TestFrost-AllItems-Oremantle'sFavor-61448" value: { - dps: 21381.23607 - tps: 18984.22925 + dps: 21310.7429 + tps: 18903.98189 } } dps_results: { key: "TestFrost-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 20752.57749 - tps: 18432.18295 + dps: 20661.84205 + tps: 18337.67049 } } dps_results: { key: "TestFrost-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 20876.82809 - tps: 18536.84589 + dps: 20792.15587 + tps: 18449.87717 } } dps_results: { key: "TestFrost-AllItems-PorcelainCrab-55237" value: { - dps: 20877.60213 - tps: 18557.20759 + dps: 20786.42592 + tps: 18462.25436 } } dps_results: { key: "TestFrost-AllItems-PorcelainCrab-56280" value: { - dps: 21000.58828 - tps: 18680.19374 + dps: 20899.37585 + tps: 18575.20429 } } dps_results: { key: "TestFrost-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 21691.52782 - tps: 19096.32497 + dps: 21750.65831 + tps: 19095.02261 } } dps_results: { key: "TestFrost-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 21192.43485 - tps: 18742.63385 + dps: 21160.07028 + tps: 18711.72475 } } dps_results: { key: "TestFrost-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 21353.13794 - tps: 18862.0616 + dps: 21249.94697 + tps: 18741.72399 } } dps_results: { key: "TestFrost-AllItems-Rainsong-55854" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Rainsong-56377" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 22106.44158 - tps: 19496.97883 + dps: 22168.94136 + tps: 19498.82036 } } dps_results: { key: "TestFrost-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 21980.30066 - tps: 19385.0978 + dps: 22042.56587 + tps: 19386.93017 } } dps_results: { key: "TestFrost-AllItems-RightEyeofRajh-56100" value: { - dps: 21711.32308 - tps: 19272.79103 + dps: 21673.67981 + tps: 19208.86217 } } dps_results: { key: "TestFrost-AllItems-RightEyeofRajh-56431" value: { - dps: 21784.69867 - tps: 19371.45242 + dps: 21794.50372 + tps: 19332.6361 } } dps_results: { key: "TestFrost-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 20990.41304 - tps: 18648.41613 + dps: 20898.65046 + tps: 18554.86615 } } dps_results: { key: "TestFrost-AllItems-SeaStar-55256" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-SeaStar-56290" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Shadowmourne-49623" value: { - dps: 22106.44158 - tps: 19496.97883 + dps: 22168.94136 + tps: 19498.82036 } } dps_results: { key: "TestFrost-AllItems-ShardofWoe-60233" value: { - dps: 20953.22008 - tps: 18601.51982 + dps: 20980.91755 + tps: 18627.42622 } } dps_results: { key: "TestFrost-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 21434.31004 - tps: 18997.14455 + dps: 21409.07387 + tps: 18951.2015 } } dps_results: { key: "TestFrost-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Skardyn'sGrace-56115" value: { - dps: 21059.23794 - tps: 18714.8449 + dps: 20967.48961 + tps: 18621.90036 } } dps_results: { key: "TestFrost-AllItems-Skardyn'sGrace-56440" value: { - dps: 21100.6368 - tps: 18752.1865 + dps: 21003.8641 + tps: 18654.22839 } } dps_results: { key: "TestFrost-AllItems-Sorrowsong-55879" value: { - dps: 20919.753 - tps: 18599.35846 + dps: 20828.48239 + tps: 18504.31082 } } dps_results: { key: "TestFrost-AllItems-Sorrowsong-56400" value: { - dps: 20944.2296 - tps: 18623.83506 + dps: 20852.87749 + tps: 18528.70593 } } dps_results: { key: "TestFrost-AllItems-Soul'sAnguish-66994" value: { - dps: 21403.48385 - tps: 19000.61803 + dps: 21373.71988 + tps: 18937.37607 } } dps_results: { key: "TestFrost-AllItems-SoulCasket-58183" value: { - dps: 20970.93135 - tps: 18650.5368 + dps: 20879.49034 + tps: 18555.31877 } } dps_results: { key: "TestFrost-AllItems-Stonemother'sKiss-61411" value: { - dps: 20862.56666 - tps: 18523.59168 + dps: 20762.33816 + tps: 18422.95652 } } dps_results: { key: "TestFrost-AllItems-StumpofTime-62465" value: { - dps: 21040.48313 - tps: 18639.23107 + dps: 21044.47102 + tps: 18624.24355 } } dps_results: { key: "TestFrost-AllItems-StumpofTime-62470" value: { - dps: 21040.48313 - tps: 18639.23107 + dps: 21044.47102 + tps: 18624.24355 } } dps_results: { key: "TestFrost-AllItems-SymbioticWorm-59332" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-SymbioticWorm-65048" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 20878.60519 - tps: 18558.21065 + dps: 20786.18798 + tps: 18462.01642 } } dps_results: { key: "TestFrost-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 21494.48629 - tps: 19020.59436 + dps: 21471.77091 + tps: 18990.25359 } } dps_results: { key: "TestFrost-AllItems-TearofBlood-55819" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-TearofBlood-56351" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 20892.30954 - tps: 18571.91499 + dps: 20801.1303 + tps: 18476.95873 } } dps_results: { key: "TestFrost-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 20944.2296 - tps: 18623.83506 + dps: 20852.87749 + tps: 18528.70593 } } dps_results: { key: "TestFrost-AllItems-Theralion'sMirror-59519" value: { - dps: 20910.4214 - tps: 18590.02686 + dps: 20819.06074 + tps: 18494.88918 } } dps_results: { key: "TestFrost-AllItems-Theralion'sMirror-65105" value: { - dps: 20952.86196 - tps: 18632.46742 + dps: 20861.78508 + tps: 18537.61352 } } dps_results: { key: "TestFrost-AllItems-Throngus'sFinger-56121" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Throngus'sFinger-56449" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-Tia'sGrace-55874" value: { - dps: 21048.16449 - tps: 18702.82446 + dps: 20958.40279 + tps: 18611.75796 } } dps_results: { key: "TestFrost-AllItems-Tia'sGrace-56394" value: { - dps: 21085.85733 - tps: 18736.61274 + dps: 20996.2568 + tps: 18645.65218 } } dps_results: { key: "TestFrost-AllItems-TinyAbominationinaJar-50706" value: { - dps: 20927.9677 - tps: 18636.17849 + dps: 20899.59846 + tps: 18623.09725 } } dps_results: { key: "TestFrost-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 20758.7865 - tps: 18440.50702 + dps: 20705.81409 + tps: 18367.54786 } } dps_results: { key: "TestFrost-AllItems-UnheededWarning-59520" value: { - dps: 21179.07093 - tps: 18828.1773 + dps: 21075.82647 + tps: 18723.09759 } } dps_results: { key: "TestFrost-AllItems-UnquenchableFlame-67101" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-UnsolvableRiddle-62463" value: { - dps: 21143.30733 - tps: 18790.73398 + dps: 21071.24288 + tps: 18708.74655 } } dps_results: { key: "TestFrost-AllItems-UnsolvableRiddle-62468" value: { - dps: 21143.30733 - tps: 18790.73398 + dps: 21071.24288 + tps: 18708.74655 } } dps_results: { key: "TestFrost-AllItems-UnsolvableRiddle-68709" value: { - dps: 21143.30733 - tps: 18790.73398 + dps: 21071.24288 + tps: 18708.74655 } } dps_results: { key: "TestFrost-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 18423.96876 - tps: 15803.65068 + dps: 18401.22669 + tps: 15757.66228 } } dps_results: { key: "TestFrost-AllItems-VialofStolenMemories-59515" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-VialofStolenMemories-65109" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 20904.34077 - tps: 18551.76742 + dps: 20833.10677 + tps: 18470.61044 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 21631.11185 - tps: 19177.34995 + dps: 21546.23744 + tps: 19071.52275 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 21070.62847 - tps: 18669.28879 + dps: 21024.578 + tps: 18604.79658 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 21052.583 - tps: 18665.81025 + dps: 20958.80996 + tps: 18546.99163 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 21010.2044 - tps: 18649.73362 + dps: 20929.52603 + tps: 18569.47722 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 21028.41081 - tps: 18645.33337 + dps: 21095.2432 + tps: 18680.28412 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 20985.02394 - tps: 18664.62939 + dps: 20893.536 + tps: 18569.36444 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 20920.76047 - tps: 18570.51211 + dps: 20816.71095 + tps: 18464.88679 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 20732.84077 - tps: 18412.44622 + dps: 20642.19248 + tps: 18318.02091 } } dps_results: { key: "TestFrost-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 21587.17324 - tps: 19138.5174 + dps: 21503.84557 + tps: 19054.67772 } } dps_results: { key: "TestFrost-AllItems-WitchingHourglass-55787" value: { - dps: 20800.69553 - tps: 18407.22449 + dps: 20756.6565 + tps: 18368.55771 } } dps_results: { key: "TestFrost-AllItems-WitchingHourglass-56320" value: { - dps: 20866.21446 - tps: 18502.83585 + dps: 20898.67808 + tps: 18499.48988 } } dps_results: { key: "TestFrost-AllItems-World-QuellerFocus-63842" value: { - dps: 20895.2764 - tps: 18574.88185 + dps: 20804.08728 + tps: 18479.91571 } } dps_results: { key: "TestFrost-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 20893.46553 - tps: 18573.07099 + dps: 20805.74017 + tps: 18481.56861 } } dps_results: { key: "TestFrost-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 20893.46553 - tps: 18573.07099 + dps: 20805.74017 + tps: 18481.56861 } } dps_results: { key: "TestFrost-Average-Default" value: { - dps: 22049.9151 - tps: 19388.11074 + dps: 22006.72451 + tps: 19342.37076 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-2h-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62256.95078 - tps: 59823.68233 + dps: 61792.00392 + tps: 59335.02715 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-2h-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 21851.83304 - tps: 19365.84742 + dps: 21895.62765 + tps: 19330.87779 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-2h-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29836.6826 - tps: 23974.79748 + dps: 29703.35447 + tps: 23753.63776 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-2h-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40579.58773 - tps: 38645.44892 + dps: 40487.72037 + tps: 38538.39779 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-2h-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14927.51007 - tps: 12974.09241 + dps: 14875.10707 + tps: 12896.70646 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-2h-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19490.14069 - tps: 14238.30724 + dps: 19391.60486 + tps: 14175.16023 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-dw-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62077.98341 - tps: 59640.21877 + dps: 61645.88334 + tps: 59189.42947 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-dw-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 21850.30292 - tps: 19364.31729 + dps: 21894.09753 + tps: 19329.34767 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-dw-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29836.6826 - tps: 23974.79748 + dps: 29703.35447 + tps: 23753.63776 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-dw-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40497.87201 - tps: 38563.42602 + dps: 40415.48941 + tps: 38465.51001 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-dw-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14929.38483 - tps: 12979.71109 + dps: 14872.40329 + tps: 12900.52729 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-dw-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19489.14069 - tps: 14239.89345 + dps: 19394.37085 + tps: 14179.30469 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-masterfrost-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 77036.33149 - tps: 75199.47269 + dps: 90484.71938 + tps: 88411.08002 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-masterfrost-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 23901.90136 - tps: 21449.11367 + dps: 23935.28849 + tps: 21485.51762 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-masterfrost-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 31241.3567 - tps: 24759.2165 + dps: 31230.5161 + tps: 24756.26524 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-masterfrost-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 50950.00118 - tps: 49150.83035 + dps: 60111.18552 + tps: 58348.59336 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-DefaultTalents-Basic-masterfrost-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15862.70445 - tps: 14012.94315 + dps: 15871.1517 + tps: 14025.71369 } } dps_results: { @@ -1410,246 +1410,246 @@ dps_results: { dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-2h-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 72081.19907 - tps: 69463.67785 + dps: 70997.9569 + tps: 68336.03564 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-2h-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29625.08268 - tps: 26922.00319 + dps: 29569.09692 + tps: 26860.39744 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-2h-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39451.00546 - tps: 33168.93513 + dps: 39100.31155 + tps: 32804.09975 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-2h-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 47478.32225 - tps: 45426.69838 + dps: 47022.74221 + tps: 44899.97501 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-2h-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20327.66043 - tps: 18211.12287 + dps: 20319.41316 + tps: 18231.72312 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-2h-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 25608.89536 - tps: 20150.55969 + dps: 25469.98632 + tps: 20035.50718 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-dw-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 71087.76459 - tps: 68503.19379 + dps: 70243.17687 + tps: 67608.29796 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-dw-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29611.85485 - tps: 26908.77536 + dps: 29533.09984 + tps: 26809.62504 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-dw-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39451.00546 - tps: 33168.93513 + dps: 39110.20211 + tps: 32774.80058 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-dw-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 46852.81434 - tps: 44789.7539 + dps: 46426.78871 + tps: 44313.43109 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-dw-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20307.03537 - tps: 18190.07333 + dps: 20281.08083 + tps: 18190.30668 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-dw-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 25531.34011 - tps: 20068.94118 + dps: 25427.68386 + tps: 19969.129 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-masterfrost-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 101093.93152 - tps: 98908.48499 + dps: 102548.55515 + tps: 100278.66487 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-masterfrost-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 31085.86628 - tps: 28323.48587 + dps: 31202.31731 + tps: 28406.31235 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-masterfrost-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 40137.27132 - tps: 32619.43051 + dps: 40084.90956 + tps: 32597.48657 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-masterfrost-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 67232.12884 - tps: 65110.96226 + dps: 68477.09917 + tps: 66343.6733 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-masterfrost-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20815.13802 - tps: 18755.03512 + dps: 20845.09787 + tps: 18789.43524 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-Masterfrost-Basic-masterfrost-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 25046.67687 - tps: 19834.68131 + dps: 25054.09979 + tps: 19858.70312 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-2h-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62256.95078 - tps: 59823.68233 + dps: 61792.00392 + tps: 59335.02715 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-2h-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 21851.83304 - tps: 19365.84742 + dps: 21895.62765 + tps: 19330.87779 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-2h-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29836.6826 - tps: 23974.79748 + dps: 29703.35447 + tps: 23753.63776 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-2h-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40579.58773 - tps: 38645.44892 + dps: 40487.72037 + tps: 38538.39779 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-2h-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14927.51007 - tps: 12974.09241 + dps: 14875.10707 + tps: 12896.70646 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-2h-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19490.14069 - tps: 14238.30724 + dps: 19391.60486 + tps: 14175.16023 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-dw-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62077.98341 - tps: 59640.21877 + dps: 61645.88334 + tps: 59189.42947 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-dw-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 21850.30292 - tps: 19364.31729 + dps: 21894.09753 + tps: 19329.34767 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-dw-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29836.6826 - tps: 23974.79748 + dps: 29703.35447 + tps: 23753.63776 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-dw-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40497.87201 - tps: 38563.42602 + dps: 40415.48941 + tps: 38465.51001 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-dw-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14929.38483 - tps: 12979.71109 + dps: 14872.40329 + tps: 12900.52729 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-dw-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19489.14069 - tps: 14239.89345 + dps: 19394.37085 + tps: 14179.30469 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-masterfrost-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 77036.33149 - tps: 75199.47269 + dps: 90484.71938 + tps: 88411.08002 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-masterfrost-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 23901.90136 - tps: 21449.11367 + dps: 23935.28849 + tps: 21485.51762 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-masterfrost-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 31241.3567 - tps: 24759.2165 + dps: 31230.5161 + tps: 24756.26524 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-masterfrost-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 50950.00118 - tps: 49150.83035 + dps: 60111.18552 + tps: 58348.59336 } } dps_results: { key: "TestFrost-Settings-Human-p1.dw-TwoHand-Basic-masterfrost-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15862.70445 - tps: 14012.94315 + dps: 15871.1517 + tps: 14025.71369 } } dps_results: { @@ -1662,120 +1662,120 @@ dps_results: { dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-2h-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62558.17321 - tps: 60028.58168 + dps: 62415.01614 + tps: 59839.03453 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-2h-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 22108.16003 - tps: 19498.69729 + dps: 22170.47197 + tps: 19500.35097 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-2h-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30212.41035 - tps: 24173.10432 + dps: 30179.84321 + tps: 24059.03355 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-2h-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40916.5114 - tps: 38910.48486 + dps: 40811.63533 + tps: 38764.96403 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-2h-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15036.91747 - tps: 12988.89089 + dps: 14957.03785 + tps: 12909.08373 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-2h-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19763.13225 - tps: 14370.04417 + dps: 19734.22691 + tps: 14367.48755 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-dw-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62317.37693 - tps: 59779.02862 + dps: 62192.71232 + tps: 59615.87143 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-dw-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 22106.44158 - tps: 19496.97883 + dps: 22168.94136 + tps: 19498.82036 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-dw-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30212.41035 - tps: 24173.10432 + dps: 30179.84321 + tps: 24059.03355 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-dw-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40835.15839 - tps: 38830.09513 + dps: 40732.31605 + tps: 38685.65324 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-dw-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15013.27617 - tps: 12976.56422 + dps: 14936.08304 + tps: 12891.76598 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-dw-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19773.26092 - tps: 14382.6591 + dps: 19715.88594 + tps: 14350.46195 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-masterfrost-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 76955.11707 - tps: 75102.57594 + dps: 91009.24279 + tps: 89006.78755 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-masterfrost-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 24166.07192 - tps: 21602.12577 + dps: 24150.90618 + tps: 21602.05533 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-masterfrost-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 31725.4712 - tps: 25068.41584 + dps: 31714.23368 + tps: 25065.46455 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-masterfrost-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 51194.10382 - tps: 49366.48525 + dps: 60253.48332 + tps: 58370.52857 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-DefaultTalents-Basic-masterfrost-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15979.75396 - tps: 14148.6198 + dps: 16001.08062 + tps: 14162.89471 } } dps_results: { @@ -1788,246 +1788,246 @@ dps_results: { dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-2h-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 72302.6289 - tps: 69674.74539 + dps: 71634.61123 + tps: 68866.08216 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-2h-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29962.30972 - tps: 27132.89155 + dps: 29911.05772 + tps: 27104.7724 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-2h-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39818.46142 - tps: 33323.79968 + dps: 39358.3349 + tps: 32866.77607 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-2h-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 47918.11829 - tps: 45748.75849 + dps: 47571.33192 + tps: 45373.31071 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-2h-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20549.57932 - tps: 18351.39436 + dps: 20466.41447 + tps: 18304.9052 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-2h-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 25847.129 - tps: 20254.44652 + dps: 25878.33988 + tps: 20273.83337 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-dw-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 71680.30065 - tps: 68983.67711 + dps: 71082.27978 + tps: 68331.17398 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-dw-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29945.25894 - tps: 27115.84077 + dps: 29866.63684 + tps: 27050.7717 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-dw-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39818.46142 - tps: 33323.79968 + dps: 39370.22289 + tps: 32837.47155 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-dw-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 47218.82748 - tps: 45057.96282 + dps: 46895.70541 + tps: 44698.42033 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-dw-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20552.62299 - tps: 18351.85495 + dps: 20409.00621 + tps: 18249.58394 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-dw-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 25800.65069 - tps: 20185.28602 + dps: 25796.08562 + tps: 20194.17954 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-masterfrost-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 101661.17859 - tps: 99355.33599 + dps: 103479.43436 + tps: 101171.63183 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-masterfrost-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 31382.06422 - tps: 28512.84905 + dps: 31438.69265 + tps: 28507.46382 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-masterfrost-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 40577.15995 - tps: 32866.54814 + dps: 40609.76416 + tps: 32931.60752 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-masterfrost-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 67852.51846 - tps: 65655.97065 + dps: 68830.07604 + tps: 66617.7905 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-masterfrost-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20996.09584 - tps: 18821.69802 + dps: 21017.33445 + tps: 18853.14458 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-Masterfrost-Basic-masterfrost-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 25210.2152 - tps: 19851.83272 + dps: 25173.0745 + tps: 19827.46792 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-2h-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62558.17321 - tps: 60028.58168 + dps: 62415.01614 + tps: 59839.03453 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-2h-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 22108.16003 - tps: 19498.69729 + dps: 22170.47197 + tps: 19500.35097 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-2h-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30212.41035 - tps: 24173.10432 + dps: 30179.84321 + tps: 24059.03355 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-2h-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40916.5114 - tps: 38910.48486 + dps: 40811.63533 + tps: 38764.96403 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-2h-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15036.91747 - tps: 12988.89089 + dps: 14957.03785 + tps: 12909.08373 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-2h-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19763.13225 - tps: 14370.04417 + dps: 19734.22691 + tps: 14367.48755 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-dw-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 62317.37693 - tps: 59779.02862 + dps: 62192.71232 + tps: 59615.87143 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-dw-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 22106.44158 - tps: 19496.97883 + dps: 22168.94136 + tps: 19498.82036 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-dw-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30212.41035 - tps: 24173.10432 + dps: 30179.84321 + tps: 24059.03355 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-dw-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 40835.15839 - tps: 38830.09513 + dps: 40732.31605 + tps: 38685.65324 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-dw-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15013.27617 - tps: 12976.56422 + dps: 14936.08304 + tps: 12891.76598 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-dw-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19773.26092 - tps: 14382.6591 + dps: 19715.88594 + tps: 14350.46195 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-masterfrost-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 76955.11707 - tps: 75102.57594 + dps: 91009.24279 + tps: 89006.78755 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-masterfrost-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 24166.07192 - tps: 21602.12577 + dps: 24150.90618 + tps: 21602.05533 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-masterfrost-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 31725.4712 - tps: 25068.41584 + dps: 31714.23368 + tps: 25065.46455 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-masterfrost-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 51194.10382 - tps: 49366.48525 + dps: 60253.48332 + tps: 58370.52857 } } dps_results: { key: "TestFrost-Settings-Orc-p1.dw-TwoHand-Basic-masterfrost-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 15979.75396 - tps: 14148.6198 + dps: 16001.08062 + tps: 14162.89471 } } dps_results: { @@ -2040,7 +2040,7 @@ dps_results: { dps_results: { key: "TestFrost-SwitchInFrontOfTarget-Default" value: { - dps: 20521.47421 - tps: 18036.58326 + dps: 20568.35375 + tps: 18066.32565 } } diff --git a/sim/death_knight/unholy/TestUnholy.results b/sim/death_knight/unholy/TestUnholy.results index bc01559fc4..2ddf914afc 100644 --- a/sim/death_knight/unholy/TestUnholy.results +++ b/sim/death_knight/unholy/TestUnholy.results @@ -37,1269 +37,1269 @@ character_stats_results: { dps_results: { key: "TestUnholy-AllItems-AgileShadowspiritDiamond" value: { - dps: 33064.54417 - tps: 23898.02404 + dps: 33931.96122 + tps: 24409.56908 } } dps_results: { key: "TestUnholy-AllItems-Althor'sAbacus-50366" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Anhuur'sHymnal-55889" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Anhuur'sHymnal-56407" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-AustereShadowspiritDiamond" value: { - dps: 32818.82068 - tps: 23657.24253 + dps: 33680.36085 + tps: 24163.56397 } } dps_results: { key: "TestUnholy-AllItems-BaubleofTrueBlood-50726" value: { - dps: 31091.62817 - tps: 22594.65777 - hps: 88.43435 + dps: 31907.26679 + tps: 23077.64469 + hps: 96.7093 } } dps_results: { key: "TestUnholy-AllItems-BedrockTalisman-58182" value: { - dps: 31129.31984 - tps: 22632.18813 + dps: 31945.64176 + tps: 23115.85835 } } dps_results: { key: "TestUnholy-AllItems-BellofEnragingResonance-59326" value: { - dps: 31563.12119 - tps: 22955.79853 + dps: 32392.19101 + tps: 23447.62616 } } dps_results: { key: "TestUnholy-AllItems-BellofEnragingResonance-65053" value: { - dps: 31624.81845 - tps: 23009.79827 + dps: 32455.75749 + tps: 23503.06317 } } dps_results: { key: "TestUnholy-AllItems-BindingPromise-67037" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 31556.15814 - tps: 23030.7022 + dps: 32381.90825 + tps: 23521.55044 } } dps_results: { key: "TestUnholy-AllItems-BloodofIsiset-55995" value: { - dps: 31430.76002 - tps: 22965.74268 + dps: 32250.21559 + tps: 23452.54654 } } dps_results: { key: "TestUnholy-AllItems-BloodofIsiset-56414" value: { - dps: 31475.23684 - tps: 23014.40383 + dps: 32295.19225 + tps: 23501.70753 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 31420.31074 - tps: 22811.28513 + dps: 32249.09667 + tps: 23302.93715 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 32460.58088 - tps: 23579.1423 + dps: 33304.2277 + tps: 24076.51803 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 31534.71788 - tps: 22934.56825 + dps: 32363.0795 + tps: 23425.98836 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 31351.05772 - tps: 22780.05369 + dps: 32177.07353 + tps: 23270.45645 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 32423.06966 - tps: 23512.85188 + dps: 33268.23737 + tps: 24010.96654 } } dps_results: { key: "TestUnholy-AllItems-BottledLightning-66879" value: { - dps: 31262.66208 - tps: 22732.91018 + dps: 32082.67296 + tps: 23219.07002 } } dps_results: { key: "TestUnholy-AllItems-BracingShadowspiritDiamond" value: { - dps: 32806.4693 - tps: 23172.05096 + dps: 33667.78427 + tps: 23668.02527 } } dps_results: { key: "TestUnholy-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 34590.4614 - tps: 25156.55124 + dps: 35497.31328 + tps: 25699.35443 } } dps_results: { key: "TestUnholy-AllItems-BurningShadowspiritDiamond" value: { - dps: 33012.37405 - tps: 23862.18594 + dps: 33877.70429 + tps: 24372.29746 } } dps_results: { key: "TestUnholy-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 33102.1928 - tps: 23930.24675 + dps: 33970.06147 + tps: 24442.19755 } } dps_results: { key: "TestUnholy-AllItems-CoreofRipeness-58184" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-CorpseTongueCoin-50349" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-CrushingWeight-59506" value: { - dps: 32784.84601 - tps: 23752.35771 + dps: 33647.87085 + tps: 24261.34659 } } dps_results: { key: "TestUnholy-AllItems-CrushingWeight-65118" value: { - dps: 33140.08583 - tps: 24017.66326 + dps: 34013.04377 + tps: 24532.85418 } } dps_results: { key: "TestUnholy-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 32623.17206 - tps: 23730.06405 + dps: 33467.61248 + tps: 24225.5249 } } dps_results: { key: "TestUnholy-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 31664.83257 - tps: 23055.35481 + dps: 32490.0397 + tps: 23542.78805 } } dps_results: { key: "TestUnholy-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 31546.47705 - tps: 23108.74092 + dps: 32366.97773 + tps: 23596.5899 } } dps_results: { key: "TestUnholy-AllItems-Deathbringer'sWill-50363" value: { - dps: 31834.86095 - tps: 23132.20802 + dps: 32671.54568 + tps: 23626.96082 } } dps_results: { key: "TestUnholy-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 32892.50659 - tps: 23709.15827 + dps: 33756.25587 + tps: 24216.98968 } } dps_results: { key: "TestUnholy-AllItems-DislodgedForeignObject-50348" value: { - dps: 31367.15189 - tps: 22798.22126 + dps: 32190.41209 + tps: 23286.68304 } } dps_results: { key: "TestUnholy-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 32806.4693 - tps: 23644.94996 + dps: 33667.78427 + tps: 24151.04619 } } dps_results: { key: "TestUnholy-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-EmberShadowspiritDiamond" value: { - dps: 32806.4693 - tps: 23644.94996 + dps: 33667.78427 + tps: 24151.04619 } } dps_results: { key: "TestUnholy-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 32892.50659 - tps: 23709.15827 + dps: 33756.25587 + tps: 24216.98968 } } dps_results: { key: "TestUnholy-AllItems-EssenceoftheCyclone-59473" value: { - dps: 31812.5732 - tps: 23100.0301 + dps: 32650.58708 + tps: 23597.24098 } } dps_results: { key: "TestUnholy-AllItems-EssenceoftheCyclone-65140" value: { - dps: 32015.50243 - tps: 23298.45728 + dps: 32858.58715 + tps: 23799.55638 } } dps_results: { key: "TestUnholy-AllItems-EternalShadowspiritDiamond" value: { - dps: 32806.4693 - tps: 23644.94996 + dps: 33667.78427 + tps: 24151.04619 } } dps_results: { key: "TestUnholy-AllItems-FallofMortality-59500" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-FallofMortality-65124" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Figurine-DemonPanther-52199" value: { - dps: 31399.01218 - tps: 22794.66678 + dps: 32136.23615 + tps: 23236.97825 } } dps_results: { key: "TestUnholy-AllItems-Figurine-DreamOwl-52354" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Figurine-KingofBoars-52351" value: { - dps: 32774.91072 - tps: 23955.63008 + dps: 33621.23544 + tps: 24456.53493 } } dps_results: { key: "TestUnholy-AllItems-FleetShadowspiritDiamond" value: { - dps: 32882.60186 - tps: 23728.19669 + dps: 33744.78078 + tps: 24235.15688 } } dps_results: { key: "TestUnholy-AllItems-FluidDeath-58181" value: { - dps: 31386.54627 - tps: 22792.94704 + dps: 32213.98161 + tps: 23283.86554 } } dps_results: { key: "TestUnholy-AllItems-ForlornShadowspiritDiamond" value: { - dps: 32806.4693 - tps: 23644.94996 + dps: 33667.78427 + tps: 24151.04619 } } dps_results: { key: "TestUnholy-AllItems-FuryofAngerforge-59461" value: { - dps: 33001.39365 - tps: 23965.11426 + dps: 33870.3761 + tps: 24477.01386 } } dps_results: { key: "TestUnholy-AllItems-GaleofShadows-56138" value: { - dps: 31385.07149 - tps: 22776.81473 + dps: 32211.38234 + tps: 23265.02058 } } dps_results: { key: "TestUnholy-AllItems-GaleofShadows-56462" value: { - dps: 31438.97313 - tps: 22764.63978 + dps: 32266.71586 + tps: 23251.94169 } } dps_results: { key: "TestUnholy-AllItems-GearDetector-61462" value: { - dps: 31654.29079 - tps: 22970.30013 + dps: 32487.34985 + tps: 23463.43728 } } dps_results: { key: "TestUnholy-AllItems-GlowingTwilightScale-54589" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-GraceoftheHerald-55266" value: { - dps: 31391.92898 - tps: 22820.11707 + dps: 32217.83312 + tps: 23310.07078 } } dps_results: { key: "TestUnholy-AllItems-GraceoftheHerald-56295" value: { - dps: 31555.96217 - tps: 22932.80987 + dps: 32386.79685 + tps: 23425.74884 } } dps_results: { key: "TestUnholy-AllItems-HarmlightToken-63839" value: { - dps: 31230.10773 - tps: 22733.13732 + dps: 32048.12543 + tps: 23218.50333 } } dps_results: { key: "TestUnholy-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 32254.84929 - tps: 23510.07576 + dps: 33095.59148 + tps: 24007.50444 } } dps_results: { key: "TestUnholy-AllItems-HeartofIgnacious-59514" value: { - dps: 31583.80811 - tps: 22874.82098 + dps: 32417.08319 + tps: 23366.81324 } } dps_results: { key: "TestUnholy-AllItems-HeartofIgnacious-65110" value: { - dps: 31550.1361 - tps: 22894.56548 + dps: 32380.42958 + tps: 23384.5807 } } dps_results: { key: "TestUnholy-AllItems-HeartofRage-59224" value: { - dps: 32826.85679 - tps: 23741.33703 + dps: 33684.83669 + tps: 24246.70754 } } dps_results: { key: "TestUnholy-AllItems-HeartofSolace-55868" value: { - dps: 31385.07149 - tps: 22776.81473 + dps: 32211.38234 + tps: 23265.02058 } } dps_results: { key: "TestUnholy-AllItems-HeartofSolace-56393" value: { - dps: 32915.61032 - tps: 23729.21886 + dps: 33777.81546 + tps: 24233.7416 } } dps_results: { key: "TestUnholy-AllItems-HeartofThunder-55845" value: { - dps: 31116.88306 - tps: 22619.80457 + dps: 31932.97951 + tps: 23103.24933 } } dps_results: { key: "TestUnholy-AllItems-HeartofThunder-56370" value: { - dps: 31125.03736 - tps: 22627.92398 + dps: 31941.28165 + tps: 23111.51657 } } dps_results: { key: "TestUnholy-AllItems-HeartoftheVile-66969" value: { - dps: 31428.482 - tps: 22827.10493 + dps: 32256.05545 + tps: 23317.73007 } } dps_results: { key: "TestUnholy-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 32892.50659 - tps: 23709.15827 + dps: 33756.25587 + tps: 24216.98968 } } dps_results: { key: "TestUnholy-AllItems-ImpatienceofYouth-62464" value: { - dps: 32989.93755 - tps: 24130.22734 + dps: 33840.1543 + tps: 24633.41139 } } dps_results: { key: "TestUnholy-AllItems-ImpatienceofYouth-62469" value: { - dps: 32989.93755 - tps: 24130.22734 + dps: 33840.1543 + tps: 24633.41139 } } dps_results: { key: "TestUnholy-AllItems-ImpetuousQuery-55881" value: { - dps: 31430.76002 - tps: 22965.74268 + dps: 32250.21559 + tps: 23452.54654 } } dps_results: { key: "TestUnholy-AllItems-ImpetuousQuery-56406" value: { - dps: 31475.23684 - tps: 23014.40383 + dps: 32295.19225 + tps: 23501.70753 } } dps_results: { key: "TestUnholy-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 31352.62608 - tps: 22880.25445 + dps: 32171.20314 + tps: 23366.17982 } } dps_results: { key: "TestUnholy-AllItems-JarofAncientRemedies-59354" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-JarofAncientRemedies-65029" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-JujuofNimbleness-63840" value: { - dps: 31556.15814 - tps: 23030.7022 + dps: 32381.90825 + tps: 23521.55044 } } dps_results: { key: "TestUnholy-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 31265.92427 - tps: 22703.45934 + dps: 32088.53474 + tps: 23190.79832 } } dps_results: { key: "TestUnholy-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 31337.92078 - tps: 22762.88748 + dps: 32163.4111 + tps: 23252.60359 } } dps_results: { key: "TestUnholy-AllItems-KvaldirBattleStandard-59685" value: { - dps: 31930.52404 - tps: 23230.8716 + dps: 32765.64261 + tps: 23724.48533 } } dps_results: { key: "TestUnholy-AllItems-KvaldirBattleStandard-59689" value: { - dps: 31930.52404 - tps: 23230.8716 + dps: 32765.64261 + tps: 23724.48533 } } dps_results: { key: "TestUnholy-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 31287.47823 - tps: 22631.89949 + dps: 32111.41037 + tps: 23117.02988 } } dps_results: { key: "TestUnholy-AllItems-LastWord-50708" value: { - dps: 34077.12997 - tps: 24729.4436 + dps: 34976.88432 + tps: 25266.34545 } } dps_results: { key: "TestUnholy-AllItems-LeadenDespair-55816" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-LeadenDespair-56347" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-LeftEyeofRajh-56102" value: { - dps: 31438.27961 - tps: 22833.10244 + dps: 32266.47443 + tps: 23324.39758 } } dps_results: { key: "TestUnholy-AllItems-LeftEyeofRajh-56427" value: { - dps: 31517.86083 - tps: 22899.54691 + dps: 32348.82499 + tps: 23393.11967 } } dps_results: { key: "TestUnholy-AllItems-MagmaPlatedBattlearmor" value: { - dps: 27575.6409 - tps: 19812.65962 + dps: 28293.52081 + tps: 20229.44309 } } dps_results: { key: "TestUnholy-AllItems-MagmaPlatedBattlegear" value: { - dps: 30246.73282 - tps: 21903.6011 + dps: 31034.35847 + tps: 22367.25003 } } dps_results: { key: "TestUnholy-AllItems-MagnetiteMirror-55814" value: { - dps: 32015.26289 - tps: 23321.71766 + dps: 32852.39726 + tps: 23816.69746 } } dps_results: { key: "TestUnholy-AllItems-MagnetiteMirror-56345" value: { - dps: 32359.17598 - tps: 23577.81952 + dps: 33203.95008 + tps: 24076.41837 } } dps_results: { key: "TestUnholy-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-MarkofKhardros-56132" value: { - dps: 32444.79961 - tps: 23700.66384 + dps: 33287.64337 + tps: 24199.37396 } } dps_results: { key: "TestUnholy-AllItems-MarkofKhardros-56458" value: { - dps: 32624.02723 - tps: 23847.75427 + dps: 33470.44547 + tps: 24348.53527 } } dps_results: { key: "TestUnholy-AllItems-MightoftheOcean-55251" value: { - dps: 31668.44671 - tps: 23045.59111 + dps: 32497.10802 + tps: 23535.35203 } } dps_results: { key: "TestUnholy-AllItems-MightoftheOcean-56285" value: { - dps: 32166.09407 - tps: 23434.63163 + dps: 33005.99064 + tps: 23930.23679 } } dps_results: { key: "TestUnholy-AllItems-MirrorofBrokenImages-62466" value: { - dps: 31523.77462 - tps: 23067.50633 + dps: 32344.2753 + tps: 23555.35531 } } dps_results: { key: "TestUnholy-AllItems-MirrorofBrokenImages-62471" value: { - dps: 31523.77462 - tps: 23067.50633 + dps: 32344.2753 + tps: 23555.35531 } } dps_results: { key: "TestUnholy-AllItems-MoonwellChalice-70142" value: { - dps: 31626.07631 - tps: 23185.63094 + dps: 32446.55063 + tps: 23673.45357 } } dps_results: { key: "TestUnholy-AllItems-Oremantle'sFavor-61448" value: { - dps: 32152.19399 - tps: 23374.99627 + dps: 32993.82161 + tps: 23872.83137 } } dps_results: { key: "TestUnholy-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 31113.21655 - tps: 22616.15376 + dps: 31929.24654 + tps: 23099.53205 } } dps_results: { key: "TestUnholy-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 31325.64812 - tps: 22772.39722 + dps: 32148.45963 + tps: 23260.15242 } } dps_results: { key: "TestUnholy-AllItems-PorcelainCrab-55237" value: { - dps: 31355.15881 - tps: 22880.9259 + dps: 32173.66262 + tps: 23366.77802 } } dps_results: { key: "TestUnholy-AllItems-PorcelainCrab-56280" value: { - dps: 31570.56574 - tps: 23113.96036 + dps: 32391.66028 + tps: 23602.40321 } } dps_results: { key: "TestUnholy-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 32806.4693 - tps: 23644.94996 + dps: 33667.78427 + tps: 24151.04619 } } dps_results: { key: "TestUnholy-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 31766.29267 - tps: 23054.2035 + dps: 32607.84766 + tps: 23553.58434 } } dps_results: { key: "TestUnholy-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 31964.22212 - tps: 23144.89379 + dps: 32811.99687 + tps: 23646.60221 } } dps_results: { key: "TestUnholy-AllItems-Rainsong-55854" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Rainsong-56377" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 33222.5284 - tps: 24009.70439 + dps: 34093.03154 + tps: 24522.50772 } } dps_results: { key: "TestUnholy-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 33012.37405 - tps: 23862.18594 + dps: 33877.70429 + tps: 24372.29746 } } dps_results: { key: "TestUnholy-AllItems-RightEyeofRajh-56100" value: { - dps: 32080.40237 - tps: 23263.33134 + dps: 32919.13918 + tps: 23758.06044 } } dps_results: { key: "TestUnholy-AllItems-RightEyeofRajh-56431" value: { - dps: 32196.9854 - tps: 23350.06272 + dps: 33038.54473 + tps: 23845.85604 } } dps_results: { key: "TestUnholy-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 31531.93855 - tps: 22991.66831 + dps: 32357.96672 + tps: 23482.46614 } } dps_results: { key: "TestUnholy-AllItems-SeaStar-55256" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-SeaStar-56290" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Shadowmourne-49623" value: { - dps: 35713.1491 - tps: 25906.43743 + dps: 36653.27083 + tps: 26465.94975 } } dps_results: { key: "TestUnholy-AllItems-ShardofWoe-60233" value: { - dps: 31574.13502 - tps: 22802.8824 + dps: 32406.35945 + tps: 23291.32191 } } dps_results: { key: "TestUnholy-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 32247.46013 - tps: 23389.9076 + dps: 33095.01262 + tps: 23890.10704 } } dps_results: { key: "TestUnholy-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Skardyn'sGrace-56115" value: { - dps: 31688.5974 - tps: 23167.85611 + dps: 32515.87944 + tps: 23659.85981 } } dps_results: { key: "TestUnholy-AllItems-Skardyn'sGrace-56440" value: { - dps: 31764.9848 - tps: 23243.6847 + dps: 32593.70933 + tps: 23736.88909 } } dps_results: { key: "TestUnholy-AllItems-Sorrowsong-55879" value: { - dps: 31430.76002 - tps: 22965.74268 + dps: 32250.21559 + tps: 23452.54654 } } dps_results: { key: "TestUnholy-AllItems-Sorrowsong-56400" value: { - dps: 31475.23684 - tps: 23014.40383 + dps: 32295.19225 + tps: 23501.70753 } } dps_results: { key: "TestUnholy-AllItems-Soul'sAnguish-66994" value: { - dps: 31668.44671 - tps: 23045.59111 + dps: 32497.10802 + tps: 23535.35203 } } dps_results: { key: "TestUnholy-AllItems-SoulCasket-58183" value: { - dps: 31523.77462 - tps: 23067.50633 + dps: 32344.2753 + tps: 23555.35531 } } dps_results: { key: "TestUnholy-AllItems-Stonemother'sKiss-61411" value: { - dps: 31433.78159 - tps: 22845.72789 + dps: 32258.4267 + tps: 23334.465 } } dps_results: { key: "TestUnholy-AllItems-StumpofTime-62465" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-StumpofTime-62470" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-SymbioticWorm-59332" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-SymbioticWorm-65048" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 31348.76978 - tps: 22873.55523 + dps: 32167.36057 + tps: 23359.49433 } } dps_results: { key: "TestUnholy-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 32355.26074 - tps: 23427.58834 + dps: 33205.20492 + tps: 23927.62633 } } dps_results: { key: "TestUnholy-AllItems-TearofBlood-55819" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-TearofBlood-56351" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 31380.91044 - tps: 22911.20158 + dps: 32199.80558 + tps: 23397.44502 } } dps_results: { key: "TestUnholy-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 31475.23684 - tps: 23014.40383 + dps: 32295.19225 + tps: 23501.70753 } } dps_results: { key: "TestUnholy-AllItems-Theralion'sMirror-59519" value: { - dps: 31599.82422 - tps: 23154.00883 + dps: 32421.61161 + tps: 23643.14452 } } dps_results: { key: "TestUnholy-AllItems-Theralion'sMirror-65105" value: { - dps: 31685.95617 - tps: 23239.58502 + dps: 32507.96844 + tps: 23728.94559 } } dps_results: { key: "TestUnholy-AllItems-Throngus'sFinger-56121" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Throngus'sFinger-56449" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-Tia'sGrace-55874" value: { - dps: 31666.82718 - tps: 23129.09787 + dps: 32495.72543 + tps: 23622.43594 } } dps_results: { key: "TestUnholy-AllItems-Tia'sGrace-56394" value: { - dps: 31751.57556 - tps: 23203.24408 + dps: 32582.58451 + tps: 23698.1014 } } dps_results: { key: "TestUnholy-AllItems-TinyAbominationinaJar-50706" value: { - dps: 31705.12406 - tps: 23086.00557 + dps: 32537.54133 + tps: 23581.16923 } } dps_results: { key: "TestUnholy-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 31093.63238 - tps: 22616.16288 + dps: 31909.271 + tps: 23099.1498 } } dps_results: { key: "TestUnholy-AllItems-UnheededWarning-59520" value: { - dps: 31660.58878 - tps: 23083.21507 + dps: 32491.47868 + tps: 23578.1363 } } dps_results: { key: "TestUnholy-AllItems-UnquenchableFlame-67101" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-UnsolvableRiddle-62463" value: { - dps: 31771.79979 - tps: 23238.49989 + dps: 32602.22148 + tps: 23733.18862 } } dps_results: { key: "TestUnholy-AllItems-UnsolvableRiddle-62468" value: { - dps: 31771.79979 - tps: 23238.49989 + dps: 32602.22148 + tps: 23733.18862 } } dps_results: { key: "TestUnholy-AllItems-UnsolvableRiddle-68709" value: { - dps: 31771.79979 - tps: 23238.49989 + dps: 32602.22148 + tps: 23733.18862 } } dps_results: { key: "TestUnholy-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 23507.78817 - tps: 15945.01437 + dps: 24081.32544 + tps: 16221.81177 } } dps_results: { key: "TestUnholy-AllItems-VialofStolenMemories-59515" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-VialofStolenMemories-65109" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 31338.16582 - tps: 22764.16381 + dps: 32163.66594 + tps: 23253.93097 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 32537.13415 - tps: 23634.19571 + dps: 33382.34723 + tps: 24132.37608 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 31497.88204 - tps: 22831.07946 + dps: 32329.22742 + tps: 23322.1178 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 31594.8307 - tps: 22984.25193 + dps: 32424.71588 + tps: 23476.69348 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 31140.59552 - tps: 22628.82611 + dps: 31957.80126 + tps: 23113.04024 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 31549.3992 - tps: 23095.54006 + dps: 32370.18766 + tps: 23583.67683 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 31377.84214 - tps: 22798.80446 + dps: 32204.92932 + tps: 23289.95725 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 31091.62817 - tps: 22594.65777 + dps: 31907.26679 + tps: 23077.64469 } } dps_results: { key: "TestUnholy-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 32478.21424 - tps: 23567.11089 + dps: 33325.14709 + tps: 24066.14904 } } dps_results: { key: "TestUnholy-AllItems-WitchingHourglass-55787" value: { - dps: 31302.53498 - tps: 22688.68563 + dps: 32125.06883 + tps: 23173.59584 } } dps_results: { key: "TestUnholy-AllItems-WitchingHourglass-56320" value: { - dps: 31510.95609 - tps: 22838.15215 + dps: 32340.68945 + tps: 23327.89957 } } dps_results: { key: "TestUnholy-AllItems-World-QuellerFocus-63842" value: { - dps: 31386.29865 - tps: 22917.09698 + dps: 32205.25438 + tps: 23403.401 } } dps_results: { key: "TestUnholy-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 31411.88337 - tps: 22951.17757 + dps: 32230.36398 + tps: 23437.00648 } } dps_results: { key: "TestUnholy-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 31411.88337 - tps: 22951.17757 + dps: 32230.36398 + tps: 23437.00648 } } dps_results: { key: "TestUnholy-Average-Default" value: { - dps: 33454.25991 - tps: 24208.27327 + dps: 34326.19123 + tps: 24721.30978 } } dps_results: { key: "TestUnholy-Settings-Goblin-p1-Basic-st-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 59449.78149 - tps: 70285.11356 + dps: 60318.46338 + tps: 70794.6042 } } dps_results: { key: "TestUnholy-Settings-Goblin-p1-Basic-st-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 33170.24689 - tps: 23922.75842 + dps: 34039.53237 + tps: 24433.22462 } } dps_results: { key: "TestUnholy-Settings-Goblin-p1-Basic-st-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 44206.73935 - tps: 27558.79431 + dps: 45392.51152 + tps: 28197.72835 } } dps_results: { @@ -1326,22 +1326,22 @@ dps_results: { dps_results: { key: "TestUnholy-Settings-Worgen-p1-Basic-st-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 59938.74978 - tps: 70979.65375 + dps: 60811.9555 + tps: 71494.47098 } } dps_results: { key: "TestUnholy-Settings-Worgen-p1-Basic-st-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 33222.5284 - tps: 24009.70439 + dps: 34093.03154 + tps: 24522.50772 } } dps_results: { key: "TestUnholy-Settings-Worgen-p1-Basic-st-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 44667.53548 - tps: 27947.03706 + dps: 45862.80686 + tps: 28594.09848 } } dps_results: { @@ -1368,7 +1368,7 @@ dps_results: { dps_results: { key: "TestUnholy-SwitchInFrontOfTarget-Default" value: { - dps: 31460.92265 - tps: 22882.59948 + dps: 32272.73824 + tps: 23360.33675 } } diff --git a/sim/druid/balance/balance.go b/sim/druid/balance/balance.go index 47cdab8193..2b841431cf 100644 --- a/sim/druid/balance/balance.go +++ b/sim/druid/balance/balance.go @@ -106,4 +106,8 @@ func (moonkin *BalanceDruid) ApplyTalents() { func (moonkin *BalanceDruid) Reset(sim *core.Simulation) { moonkin.Druid.Reset(sim) //moonkin.RebirthTiming = moonkin.Env.BaseDuration.Seconds() * sim.RandomFloat("Rebirth Timing") + + if moonkin.Options.StartInSolar { + moonkin.Druid.ForceSolarEclipse(sim, float64(moonkin.Options.MasterySnapshot)) + } } diff --git a/sim/druid/druid.go b/sim/druid/druid.go index e8c7c99500..cee8c15d2c 100644 --- a/sim/druid/druid.go +++ b/sim/druid/druid.go @@ -267,7 +267,7 @@ func (druid *Druid) Initialize() { // } druid.registerFaerieFireSpell() // druid.registerRebirthSpell() - // druid.registerInnervateCD() + druid.registerInnervateCD() // druid.registerFakeGotw() druid.applyOmenOfClarity() } @@ -328,14 +328,22 @@ func (druid *Druid) RegisterFeralTankSpells() { } func (druid *Druid) Reset(_ *core.Simulation) { - druid.eclipseEnergyBar.reset() druid.BleedsActive = 0 druid.form = druid.StartingForm druid.disabledMCDs = []*core.MajorCooldown{} druid.RebirthUsed = false - // druid.LunarICD.Timer.Reset() - // druid.SolarICD.Timer.Reset() +} + +func (druid *Druid) ForceSolarEclipse(sim *core.Simulation, mastery float64) { + mastery -= druid.GetStat(stats.Mastery) + if mastery > 0 { + druid.AddStatDynamic(sim, stats.Mastery, mastery) + } + druid.eclipseEnergyBar.ForceEclipse(SolarEclipse, sim) + if mastery > 0 { + druid.AddStatDynamic(sim, stats.Mastery, -mastery) + } } func New(char *core.Character, form DruidForm, selfBuffs SelfBuffs, talents string) *Druid { diff --git a/sim/druid/eclipse.go b/sim/druid/eclipse.go index e4fc49a305..e56180efdb 100644 --- a/sim/druid/eclipse.go +++ b/sim/druid/eclipse.go @@ -201,6 +201,18 @@ func (eb *eclipseEnergyBar) addLunarEnergy(amount float64, sim *core.Simulation, metrics.AddEvent(amount, gain) } +func (eb *eclipseEnergyBar) ForceEclipse(eclipse Eclipse, sim *core.Simulation) { + eb.reset() + + if eclipse == SolarEclipse { + eb.solarEnergy = 100 + } else if eclipse == LunarEclipse { + eb.lunarEnergy = 100 + } + + eb.SetEclipse(eclipse, sim) +} + func (eb *eclipseEnergyBar) SetEclipse(eclipse Eclipse, sim *core.Simulation) { if eb.currentEclipse == eclipse { return diff --git a/sim/druid/feral/TestFeral.results b/sim/druid/feral/TestFeral.results index 169bf44976..5dafa37f70 100644 --- a/sim/druid/feral/TestFeral.results +++ b/sim/druid/feral/TestFeral.results @@ -37,1255 +37,1262 @@ character_stats_results: { dps_results: { key: "TestFeral-AllItems-AgileShadowspiritDiamond" value: { - dps: 24529.48332 - tps: 33134.11649 + dps: 25506.29607 + tps: 34436.83337 } } dps_results: { key: "TestFeral-AllItems-Althor'sAbacus-50366" value: { - dps: 22827.49441 - tps: 30590.91563 + dps: 23736.6612 + tps: 31794.12782 } } dps_results: { key: "TestFeral-AllItems-Anhuur'sHymnal-55889" value: { - dps: 23096.10039 - tps: 31233.5041 + dps: 24015.59978 + tps: 32460.28045 } } dps_results: { key: "TestFeral-AllItems-Anhuur'sHymnal-56407" value: { - dps: 23096.99376 - tps: 31238.01093 + dps: 24016.49314 + tps: 32464.78728 } } dps_results: { key: "TestFeral-AllItems-AustereShadowspiritDiamond" value: { - dps: 23957.14383 - tps: 32337.49693 + dps: 24911.11053 + tps: 33608.57545 } } dps_results: { key: "TestFeral-AllItems-BaubleofTrueBlood-50726" value: { - dps: 22827.49441 - tps: 30591.21393 - hps: 88.43435 + dps: 23736.6612 + tps: 31794.42613 + hps: 96.7093 } } dps_results: { key: "TestFeral-AllItems-BedrockTalisman-58182" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-BellofEnragingResonance-59326" value: { - dps: 23113.22696 - tps: 30986.09313 + dps: 24033.46242 + tps: 32203.26674 } } dps_results: { key: "TestFeral-AllItems-BellofEnragingResonance-65053" value: { - dps: 23164.16861 - tps: 30869.24179 + dps: 24086.60414 + tps: 32082.56301 } } dps_results: { key: "TestFeral-AllItems-BindingPromise-67037" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 23767.29365 - tps: 31534.23403 + dps: 24714.1291 + tps: 32775.52877 } } dps_results: { key: "TestFeral-AllItems-BloodofIsiset-55995" value: { - dps: 23089.95035 - tps: 30990.93762 + dps: 24009.61539 + tps: 32210.13876 } } dps_results: { key: "TestFeral-AllItems-BloodofIsiset-56414" value: { - dps: 23124.31959 - tps: 31043.28239 + dps: 24045.35939 + tps: 32264.57732 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 24006.40798 - tps: 32078.17058 + dps: 24962.36086 + tps: 33338.95664 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 23225.32823 - tps: 31057.71635 + dps: 24150.37073 + tps: 32279.4004 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 23093.44955 - tps: 30966.12366 + dps: 24012.89391 + tps: 32182.49634 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 24043.27408 - tps: 32026.8722 + dps: 25001.05504 + tps: 33287.40028 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 23265.53769 - tps: 31118.07965 + dps: 24192.18784 + tps: 32342.17457 } } dps_results: { key: "TestFeral-AllItems-BottledLightning-66879" value: { - dps: 22898.50447 - tps: 30728.99893 + dps: 23810.39012 + tps: 31937.10675 } } dps_results: { key: "TestFeral-AllItems-BracingShadowspiritDiamond" value: { - dps: 23957.58881 - tps: 31693.10535 + dps: 24911.55551 + tps: 32938.7623 } } dps_results: { key: "TestFeral-AllItems-BurningShadowspiritDiamond" value: { - dps: 24386.74466 - tps: 32889.83928 + dps: 25357.84204 + tps: 34182.74751 } } dps_results: { key: "TestFeral-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 24381.72457 - tps: 32967.91825 + dps: 25352.72076 + tps: 34264.45113 } } dps_results: { key: "TestFeral-AllItems-CoreofRipeness-58184" value: { - dps: 22828.02254 - tps: 30593.30205 + dps: 23737.18934 + tps: 31796.51425 } } dps_results: { key: "TestFeral-AllItems-CorpseTongueCoin-50349" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-CrushingWeight-59506" value: { - dps: 23754.06726 - tps: 32141.61768 + dps: 24699.93259 + tps: 33404.9543 } } dps_results: { key: "TestFeral-AllItems-CrushingWeight-65118" value: { - dps: 23740.41989 - tps: 31563.23711 + dps: 24685.59423 + tps: 32802.77021 } } dps_results: { key: "TestFeral-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 23493.07876 - tps: 31677.47309 + dps: 24420.06056 + tps: 32909.75113 } } dps_results: { key: "TestFeral-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 24200.60473 - tps: 32543.77801 + dps: 25155.91126 + tps: 33811.21366 } } dps_results: { key: "TestFeral-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 22828.02254 - tps: 30593.30205 + dps: 23737.18934 + tps: 31796.51425 } } dps_results: { key: "TestFeral-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 23156.52833 - tps: 31602.31516 + dps: 24078.50834 + tps: 32843.71186 } } dps_results: { key: "TestFeral-AllItems-Deathbringer'sWill-50363" value: { - dps: 23508.83127 - tps: 31680.20317 + dps: 24445.05427 + tps: 32925.93723 } } dps_results: { key: "TestFeral-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 23952.44999 - tps: 32415.95671 + dps: 24906.30877 + tps: 33690.57895 } } dps_results: { key: "TestFeral-AllItems-DislodgedForeignObject-50348" value: { - dps: 23002.83029 - tps: 31252.54555 + dps: 23919.13667 + tps: 32482.81523 } } dps_results: { key: "TestFeral-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 23957.14383 - tps: 32337.49693 + dps: 24911.11053 + tps: 33608.57545 } } dps_results: { key: "TestFeral-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 22828.41263 - tps: 30620.64266 + dps: 23737.59668 + tps: 31823.63297 } } dps_results: { key: "TestFeral-AllItems-EmberShadowspiritDiamond" value: { - dps: 23957.58881 - tps: 32339.61225 + dps: 24911.55551 + tps: 33610.69077 } } dps_results: { key: "TestFeral-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 23952.44999 - tps: 32415.95671 + dps: 24906.30877 + tps: 33690.57895 } } dps_results: { key: "TestFeral-AllItems-EssenceoftheCyclone-59473" value: { - dps: 24372.93784 - tps: 32426.25618 + dps: 25343.7047 + tps: 33701.75589 } } dps_results: { key: "TestFeral-AllItems-EssenceoftheCyclone-65140" value: { - dps: 24389.02472 - tps: 32793.2061 + dps: 25360.0692 + tps: 34081.54042 } } dps_results: { key: "TestFeral-AllItems-EternalShadowspiritDiamond" value: { - dps: 23957.14383 - tps: 32337.49693 + dps: 24911.11053 + tps: 33608.57545 } } dps_results: { key: "TestFeral-AllItems-FallofMortality-59500" value: { - dps: 22828.02254 - tps: 30593.30205 + dps: 23737.18934 + tps: 31796.51425 } } dps_results: { key: "TestFeral-AllItems-FallofMortality-65124" value: { - dps: 22828.02254 - tps: 30593.22921 + dps: 23737.18934 + tps: 31796.4414 } } dps_results: { key: "TestFeral-AllItems-Figurine-DemonPanther-52199" value: { - dps: 24182.38055 - tps: 32372.84359 + dps: 25013.68569 + tps: 33612.37694 } } dps_results: { key: "TestFeral-AllItems-Figurine-DreamOwl-52354" value: { - dps: 22828.02254 - tps: 30593.36449 + dps: 23737.18934 + tps: 31796.57668 } } dps_results: { key: "TestFeral-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 22828.02254 - tps: 30593.36449 + dps: 23737.18934 + tps: 31796.57668 } } dps_results: { key: "TestFeral-AllItems-Figurine-KingofBoars-52351" value: { - dps: 23501.73079 - tps: 31486.86333 + dps: 24437.83175 + tps: 32725.72503 } } dps_results: { key: "TestFeral-AllItems-FleetShadowspiritDiamond" value: { - dps: 24016.03599 - tps: 32427.17528 + dps: 24972.35837 + tps: 33701.84094 } } dps_results: { key: "TestFeral-AllItems-FluidDeath-58181" value: { - dps: 24368.97584 - tps: 33107.47041 + dps: 25339.40685 + tps: 34409.29904 } } dps_results: { key: "TestFeral-AllItems-ForlornShadowspiritDiamond" value: { - dps: 23957.58881 - tps: 32339.65204 + dps: 24911.55551 + tps: 33610.73056 } } dps_results: { key: "TestFeral-AllItems-FuryofAngerforge-59461" value: { - dps: 23706.07568 - tps: 31744.18239 + dps: 24649.99438 + tps: 32991.52608 } } dps_results: { key: "TestFeral-AllItems-GaleofShadows-56138" value: { - dps: 23109.39305 - tps: 32082.24592 + dps: 24030.07184 + tps: 33346.22149 } } dps_results: { key: "TestFeral-AllItems-GaleofShadows-56462" value: { - dps: 23122.0629 - tps: 31044.05508 + dps: 24043.05215 + tps: 32265.5463 } } dps_results: { key: "TestFeral-AllItems-GearDetector-61462" value: { - dps: 23750.89478 - tps: 32717.91864 + dps: 24695.94402 + tps: 34000.83978 } } dps_results: { key: "TestFeral-AllItems-GlowingTwilightScale-54589" value: { - dps: 22827.49441 - tps: 30590.89482 + dps: 23736.6612 + tps: 31794.10701 } } dps_results: { key: "TestFeral-AllItems-GraceoftheHerald-55266" value: { - dps: 23574.82533 - tps: 31496.68789 + dps: 24513.5492 + tps: 32734.42855 } } dps_results: { key: "TestFeral-AllItems-GraceoftheHerald-56295" value: { - dps: 24018.75712 - tps: 31992.9457 + dps: 24975.41479 + tps: 33251.43163 } } dps_results: { key: "TestFeral-AllItems-HarmlightToken-63839" value: { - dps: 22857.27465 - tps: 30815.05367 + dps: 23765.32678 + tps: 31929.75224 } } dps_results: { key: "TestFeral-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 23363.31218 - tps: 31290.44354 + dps: 24293.88 + tps: 32521.46647 } } dps_results: { key: "TestFeral-AllItems-HeartofIgnacious-59514" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-HeartofIgnacious-65110" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-HeartofRage-59224" value: { - dps: 23431.36521 - tps: 31414.38008 + dps: 24364.4429 + tps: 32649.28155 } } dps_results: { key: "TestFeral-AllItems-HeartofRage-65072" value: { - dps: 23522.40544 - tps: 31497.65656 + dps: 24459.11079 + tps: 32735.81933 } } dps_results: { key: "TestFeral-AllItems-HeartofSolace-55868" value: { - dps: 23109.39305 - tps: 32082.24592 + dps: 24030.07184 + tps: 33346.22149 } } dps_results: { key: "TestFeral-AllItems-HeartofSolace-56393" value: { - dps: 23637.56379 - tps: 31662.15986 + dps: 24579.13406 + tps: 32908.18016 } } dps_results: { key: "TestFeral-AllItems-HeartofThunder-55845" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-HeartofThunder-56370" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-HeartoftheVile-66969" value: { - dps: 23733.2784 - tps: 31828.73799 + dps: 24678.37315 + tps: 33079.92372 } } dps_results: { key: "TestFeral-AllItems-Heartpierce-50641" value: { - dps: 24963.3273 - tps: 33960.49376 + dps: 25957.28445 + tps: 35295.13596 } } dps_results: { key: "TestFeral-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 23952.44999 - tps: 32415.95671 + dps: 24906.30877 + tps: 33690.57895 } } dps_results: { key: "TestFeral-AllItems-ImpatienceofYouth-62464" value: { - dps: 23587.52946 - tps: 31600.88505 + dps: 24527.0579 + tps: 32844.28532 } } dps_results: { key: "TestFeral-AllItems-ImpatienceofYouth-62469" value: { - dps: 23587.52946 - tps: 31600.88505 + dps: 24527.0579 + tps: 32844.28532 } } dps_results: { key: "TestFeral-AllItems-ImpetuousQuery-55881" value: { - dps: 23089.95035 - tps: 30990.93762 + dps: 24009.61539 + tps: 32210.13876 } } dps_results: { key: "TestFeral-AllItems-ImpetuousQuery-56406" value: { - dps: 23124.31959 - tps: 31043.28239 + dps: 24045.35939 + tps: 32264.57732 } } dps_results: { key: "TestFeral-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 23039.12401 - tps: 30901.66288 + dps: 23956.72764 + tps: 32117.12997 } } dps_results: { key: "TestFeral-AllItems-JarofAncientRemedies-59354" value: { - dps: 22827.49441 - tps: 30591.41579 + dps: 23736.6612 + tps: 31794.62799 } } dps_results: { key: "TestFeral-AllItems-JarofAncientRemedies-65029" value: { - dps: 22827.49441 - tps: 30591.41579 + dps: 23736.6612 + tps: 31794.62799 } } dps_results: { key: "TestFeral-AllItems-JujuofNimbleness-63840" value: { - dps: 23767.29365 - tps: 31534.23403 + dps: 24714.1291 + tps: 32775.52877 } } dps_results: { key: "TestFeral-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 24129.66398 - tps: 32383.99656 + dps: 25090.70985 + tps: 33657.84613 } } dps_results: { key: "TestFeral-AllItems-KvaldirBattleStandard-59685" value: { - dps: 23183.21916 - tps: 31140.55574 + dps: 24106.75881 + tps: 32366.43354 } } dps_results: { key: "TestFeral-AllItems-KvaldirBattleStandard-59689" value: { - dps: 23183.21916 - tps: 31140.55574 + dps: 24106.75881 + tps: 32366.43354 } } dps_results: { key: "TestFeral-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 22998.47914 - tps: 31557.38777 + dps: 23914.11314 + tps: 32797.3446 } } dps_results: { key: "TestFeral-AllItems-LastWord-50708" value: { - dps: 24689.83706 - tps: 33351.32376 + dps: 25673.04701 + tps: 34662.64413 } } dps_results: { key: "TestFeral-AllItems-LeadenDespair-55816" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-LeadenDespair-56347" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-LeftEyeofRajh-56102" value: { - dps: 23945.0172 - tps: 31959.94619 + dps: 24898.66704 + tps: 33216.80049 } } dps_results: { key: "TestFeral-AllItems-LeftEyeofRajh-56427" value: { - dps: 24131.92548 - tps: 32362.39383 + dps: 25092.89827 + tps: 33634.5779 } } dps_results: { key: "TestFeral-AllItems-LicensetoSlay-58180" value: { - dps: 23618.69579 - tps: 31942.73642 + dps: 24559.00604 + tps: 33197.41572 } } dps_results: { key: "TestFeral-AllItems-MagnetiteMirror-55814" value: { - dps: 23121.4521 - tps: 31008.66217 + dps: 24042.1342 + tps: 32227.31646 } } dps_results: { key: "TestFeral-AllItems-MagnetiteMirror-56345" value: { - dps: 23206.36607 - tps: 31094.60442 + dps: 24130.43934 + tps: 32316.66952 } } dps_results: { key: "TestFeral-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-MarkofKhardros-56132" value: { - dps: 23399.43746 - tps: 31304.56284 + dps: 24331.41951 + tps: 32535.97529 } } dps_results: { key: "TestFeral-AllItems-MarkofKhardros-56458" value: { - dps: 23473.65741 - tps: 31398.42425 + dps: 24408.60378 + tps: 32633.56881 } } dps_results: { key: "TestFeral-AllItems-MightoftheOcean-55251" value: { - dps: 23234.6786 - tps: 31394.68433 + dps: 24159.69306 + tps: 32627.77049 } } dps_results: { key: "TestFeral-AllItems-MightoftheOcean-56285" value: { - dps: 23393.55157 - tps: 31564.35346 + dps: 24324.83453 + tps: 32803.7911 } } dps_results: { key: "TestFeral-AllItems-MirrorofBrokenImages-62466" value: { - dps: 23161.81329 - tps: 31100.38577 + dps: 24084.35285 + tps: 32323.96484 } } dps_results: { key: "TestFeral-AllItems-MirrorofBrokenImages-62471" value: { - dps: 23161.81329 - tps: 31100.38577 + dps: 24084.35285 + tps: 32323.96484 } } dps_results: { key: "TestFeral-AllItems-MoonwellChalice-70142" value: { - dps: 23091.86553 - tps: 30969.39334 + dps: 24011.58605 + tps: 32187.65051 } } dps_results: { key: "TestFeral-AllItems-Oremantle'sFavor-61448" value: { - dps: 23255.8778 - tps: 31290.31472 + dps: 24181.80091 + tps: 32519.56604 } } dps_results: { key: "TestFeral-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 22958.3089 - tps: 30664.14669 + dps: 23872.6482 + tps: 31869.97363 } } dps_results: { key: "TestFeral-AllItems-PorcelainCrab-55237" value: { - dps: 23027.87467 - tps: 30855.34286 + dps: 23945.05667 + tps: 32069.12022 } } dps_results: { key: "TestFeral-AllItems-PorcelainCrab-56280" value: { - dps: 23199.23238 - tps: 31110.19259 + dps: 24123.2687 + tps: 32334.16393 } } dps_results: { key: "TestFeral-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 23957.14383 - tps: 32337.49693 + dps: 24911.11053 + tps: 33608.57545 } } dps_results: { key: "TestFeral-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 24335.6247 - tps: 32946.30899 + dps: 25304.65287 + tps: 34241.36148 } } dps_results: { key: "TestFeral-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 24607.07671 - tps: 32973.64949 + dps: 25587.32738 + tps: 34271.63346 } } dps_results: { key: "TestFeral-AllItems-Rainsong-55854" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-Rainsong-56377" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 24462.30035 - tps: 32989.74185 + dps: 25436.43139 + tps: 34286.70059 } } dps_results: { key: "TestFeral-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 24386.25963 - tps: 32887.48392 + dps: 25357.35701 + tps: 34180.39216 } } dps_results: { key: "TestFeral-AllItems-RightEyeofRajh-56100" value: { - dps: 23528.50678 - tps: 31813.76582 + dps: 24465.26116 + tps: 33063.54632 } } dps_results: { key: "TestFeral-AllItems-RightEyeofRajh-56431" value: { - dps: 23596.00404 - tps: 31885.34516 + dps: 24535.42266 + tps: 33137.80899 } } dps_results: { key: "TestFeral-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 23832.84241 - tps: 31799.84793 + dps: 24782.15975 + tps: 33051.09094 } } dps_results: { key: "TestFeral-AllItems-SeaStar-55256" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-SeaStar-56290" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-ShardofWoe-60233" value: { - dps: 23123.6484 - tps: 31163.46894 + dps: 24044.41126 + tps: 32388.44041 } } dps_results: { key: "TestFeral-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 23466.83955 - tps: 31645.15563 + dps: 24400.91141 + tps: 32887.12921 } } dps_results: { key: "TestFeral-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-Skardyn'sGrace-56115" value: { - dps: 23873.83867 - tps: 31893.40208 + dps: 24824.79098 + tps: 33148.36023 } } dps_results: { key: "TestFeral-AllItems-Skardyn'sGrace-56440" value: { - dps: 24018.37791 - tps: 32078.28627 + dps: 24975.10286 + tps: 33340.59404 } } dps_results: { key: "TestFeral-AllItems-Sorrowsong-55879" value: { - dps: 23089.95035 - tps: 30990.93762 + dps: 24009.61539 + tps: 32210.13876 } } dps_results: { key: "TestFeral-AllItems-Sorrowsong-56400" value: { - dps: 23124.31959 - tps: 31043.28239 + dps: 24045.35939 + tps: 32264.57732 } } dps_results: { key: "TestFeral-AllItems-Soul'sAnguish-66994" value: { - dps: 23235.57197 - tps: 31399.19116 + dps: 24160.58643 + tps: 32632.27732 } } dps_results: { key: "TestFeral-AllItems-SoulCasket-58183" value: { - dps: 23161.81329 - tps: 31100.38577 + dps: 24084.35285 + tps: 32323.96484 } } dps_results: { key: "TestFeral-AllItems-Stonemother'sKiss-61411" value: { - dps: 22866.32311 - tps: 30631.82094 + dps: 23777.04306 + tps: 31836.67112 } } dps_results: { key: "TestFeral-AllItems-Stormrider'sBattlegarb" value: { - dps: 23356.00511 - tps: 31730.46505 + dps: 24286.31469 + tps: 32979.20789 + } +} +dps_results: { + key: "TestFeral-AllItems-Stormrider'sRegalia" + value: { + dps: 18467.60585 + tps: 24890.62341 } } dps_results: { key: "TestFeral-AllItems-StumpofTime-62465" value: { - dps: 23096.99376 - tps: 31238.01093 + dps: 24016.49314 + tps: 32464.78728 } } dps_results: { key: "TestFeral-AllItems-StumpofTime-62470" value: { - dps: 23096.99376 - tps: 31238.01093 + dps: 24016.49314 + tps: 32464.78728 } } dps_results: { key: "TestFeral-AllItems-SymbioticWorm-59332" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-SymbioticWorm-65048" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 22848.76193 - tps: 30628.25582 + dps: 23758.7583 + tps: 31832.86014 } } dps_results: { key: "TestFeral-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 23531.65569 - tps: 32033.90211 + dps: 24468.42436 + tps: 33291.94443 } } dps_results: { key: "TestFeral-AllItems-TearofBlood-55819" value: { - dps: 22828.02254 - tps: 30593.48589 + dps: 23737.18934 + tps: 31796.69809 } } dps_results: { key: "TestFeral-AllItems-TearofBlood-56351" value: { - dps: 22828.02254 - tps: 30593.36449 + dps: 23737.18934 + tps: 31796.57668 } } dps_results: { key: "TestFeral-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 23051.41516 - tps: 30932.24803 + dps: 23969.53878 + tps: 32149.10159 } } dps_results: { key: "TestFeral-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 23124.31959 - tps: 31043.28239 + dps: 24045.35939 + tps: 32264.57732 } } dps_results: { key: "TestFeral-AllItems-Theralion'sMirror-59519" value: { - dps: 22854.87395 - tps: 30626.99601 + dps: 23765.1148 + tps: 31831.55597 } } dps_results: { key: "TestFeral-AllItems-Theralion'sMirror-65105" value: { - dps: 22856.20125 - tps: 30628.76408 + dps: 23766.4952 + tps: 31833.39767 } } dps_results: { key: "TestFeral-AllItems-Throngus'sFinger-56121" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-Throngus'sFinger-56449" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-Tia'sGrace-55874" value: { - dps: 24098.07248 - tps: 32225.88537 + dps: 25057.98115 + tps: 33494.07646 } } dps_results: { key: "TestFeral-AllItems-Tia'sGrace-56394" value: { - dps: 24282.76565 - tps: 32486.38675 + dps: 25250.01564 + tps: 33764.75557 } } dps_results: { key: "TestFeral-AllItems-TinyAbominationinaJar-50706" value: { - dps: 23173.83313 - tps: 31871.43001 + dps: 24096.71763 + tps: 33125.1209 } } dps_results: { key: "TestFeral-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 22053.06279 - tps: 30085.39343 + dps: 22930.40956 + tps: 31265.69834 } } dps_results: { key: "TestFeral-AllItems-UnheededWarning-59520" value: { - dps: 24439.00033 - tps: 32614.37287 + dps: 25412.46999 + tps: 33897.71252 } } dps_results: { key: "TestFeral-AllItems-UnquenchableFlame-67101" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-UnsolvableRiddle-62463" value: { - dps: 24266.20012 - tps: 32545.16808 + dps: 25232.53439 + tps: 33824.60398 } } dps_results: { key: "TestFeral-AllItems-UnsolvableRiddle-68709" value: { - dps: 24266.20012 - tps: 32545.16808 + dps: 25232.53439 + tps: 33824.60398 } } dps_results: { key: "TestFeral-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 20740.86876 - tps: 28700.44947 + dps: 21566.20314 + tps: 29826.16266 } } dps_results: { key: "TestFeral-AllItems-VialofStolenMemories-59515" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-VialofStolenMemories-65109" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 23918.13778 - tps: 32011.06539 + dps: 24870.54956 + tps: 33269.13719 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 23247.57551 - tps: 31083.80366 + dps: 24173.5058 + tps: 32306.52067 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 23096.99376 - tps: 31238.01093 + dps: 24016.49314 + tps: 32464.78728 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 23194.47298 - tps: 30934.75724 + dps: 24118.89158 + tps: 32154.5502 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 23125.78422 - tps: 31002.92322 + dps: 24046.52196 + tps: 32220.77279 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 22852.76279 - tps: 30725.78238 + dps: 23762.73813 + tps: 31933.34864 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 23181.60164 - tps: 31130.52367 + dps: 24104.93273 + tps: 32355.30825 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 24102.84218 - tps: 32213.74806 + dps: 25062.7222 + tps: 33480.33382 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 22827.49441 - tps: 30591.21393 + dps: 23736.6612 + tps: 31794.42613 } } dps_results: { key: "TestFeral-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 23322.89085 - tps: 31180.48449 + dps: 24251.84413 + tps: 32407.12064 } } dps_results: { key: "TestFeral-AllItems-WitchingHourglass-55787" value: { - dps: 22814.38906 - tps: 30773.26356 + dps: 23722.81724 + tps: 31982.67742 } } dps_results: { key: "TestFeral-AllItems-WitchingHourglass-56320" value: { - dps: 22861.39477 - tps: 30646.22309 + dps: 23771.773 + tps: 31850.92806 } } dps_results: { key: "TestFeral-AllItems-World-QuellerFocus-63842" value: { - dps: 23055.58112 - tps: 30938.59285 + dps: 23973.87139 + tps: 32155.7002 } } dps_results: { key: "TestFeral-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 23020.96452 - tps: 30803.78253 + dps: 23937.84178 + tps: 32015.3344 } } dps_results: { key: "TestFeral-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 23020.96452 - tps: 30803.78253 + dps: 23937.84178 + tps: 32015.3344 } } dps_results: { key: "TestFeral-Average-Default" value: { - dps: 24725.67056 - tps: 33608.14916 + dps: 25710.40875 + tps: 34930.20309 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 73757.33549 - tps: 103193.54631 + dps: 74119.18225 + tps: 104000.07327 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 16712.27177 - tps: 28601.23473 + dps: 17380.76264 + tps: 29744.38321 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-aoe-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 19330.56117 - tps: 25712.33329 + dps: 20103.78362 + tps: 26740.11404 } } dps_results: { @@ -1312,22 +1319,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 31758.09328 - tps: 46789.21075 + dps: 32906.71729 + tps: 48300.3829 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 29346.51828 - tps: 39222.20705 + dps: 30515.96759 + tps: 40768.19338 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 35907.50708 - tps: 34941.40251 + dps: 37341.15715 + tps: 36325.21044 } } dps_results: { @@ -1354,22 +1361,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 28103.18902 - tps: 19955.52484 + dps: 29227.31658 + tps: 20753.65541 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 28491.93044 - tps: 20229.27061 + dps: 29631.60766 + tps: 21038.44144 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-DefaultTalents-ExternalBleed-monocat-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 35408.85952 - tps: 25140.29026 + dps: 36825.21391 + tps: 26145.90187 } } dps_results: { @@ -1396,22 +1403,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 73002.87205 - tps: 102839.59015 + dps: 73357.5604 + tps: 103620.87115 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 16424.04413 - tps: 28095.4789 + dps: 17081.00589 + tps: 29218.4511 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-aoe-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 19336.66867 - tps: 25773.224 + dps: 20110.13542 + tps: 26803.55054 } } dps_results: { @@ -1438,22 +1445,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 31273.74626 - tps: 46476.03058 + dps: 32389.19895 + tps: 47929.205 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 28507.05766 - tps: 38016.46662 + dps: 29643.26075 + tps: 39515.96666 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 35117.95997 - tps: 33070.77909 + dps: 36521.11309 + tps: 34385.34117 } } dps_results: { @@ -1480,22 +1487,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 27266.94827 - tps: 19361.79391 + dps: 28357.6262 + tps: 20136.17524 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 27618.34075 - tps: 19609.02193 + dps: 28723.07438 + tps: 20393.38281 } } dps_results: { key: "TestFeral-Settings-Tauren-p1-HybridTalents-ExternalBleed-monocat-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 34451.75909 - tps: 24460.74895 + dps: 35829.82945 + tps: 25439.17891 } } dps_results: { @@ -1522,22 +1529,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 62764.03054 - tps: 90502.82326 + dps: 63062.43385 + tps: 91182.22628 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 13654.56567 - tps: 24782.51774 + dps: 14200.7483 + tps: 25772.91658 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-aoe-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 16578.10242 - tps: 26851.18825 + dps: 17241.22652 + tps: 27924.37367 } } dps_results: { @@ -1564,22 +1571,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 26941.37917 - tps: 41132.2418 + dps: 27902.15201 + tps: 42417.57179 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 24529.48332 - tps: 33134.11649 + dps: 25506.29607 + tps: 34436.83337 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 32128.02999 - tps: 28330.6837 + dps: 33411.44575 + tps: 29454.93146 } } dps_results: { @@ -1606,22 +1613,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 23420.01479 - tps: 16630.47114 + dps: 24356.81538 + tps: 17295.59956 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 23709.84991 - tps: 16833.99344 + dps: 24658.24391 + tps: 17507.35317 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-DefaultTalents-ExternalBleed-monocat-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 31703.13102 - tps: 22509.22302 + dps: 32971.25626 + tps: 23409.59195 } } dps_results: { @@ -1648,22 +1655,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 61688.39425 - tps: 92032.59827 + dps: 61984.62736 + tps: 92712.91881 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-aoe-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 13528.50145 - tps: 24562.52759 + dps: 14069.64151 + tps: 25544.17643 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-aoe-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 16620.13541 - tps: 26846.17869 + dps: 17284.94083 + tps: 27919.31479 } } dps_results: { @@ -1690,22 +1697,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 26455.82908 - tps: 41066.9761 + dps: 27384.84705 + tps: 42319.79544 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 23755.13009 - tps: 32588.89015 + dps: 24700.81828 + tps: 33869.15544 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 31299.88904 - tps: 28095.52672 + dps: 32550.17917 + tps: 29210.40816 } } dps_results: { @@ -1732,22 +1739,22 @@ dps_results: { dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 22733.32544 - tps: 16142.9217 + dps: 23642.65846 + tps: 16788.54815 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-monocat-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 22953.59388 - tps: 16297.05166 + dps: 23871.73764 + tps: 16948.93372 } } dps_results: { key: "TestFeral-Settings-Tauren-preraid-HybridTalents-ExternalBleed-monocat-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 30906.02157 - tps: 21943.27531 + dps: 32142.26243 + tps: 22821.00633 } } dps_results: { @@ -1774,7 +1781,7 @@ dps_results: { dps_results: { key: "TestFeral-SwitchInFrontOfTarget-Default" value: { - dps: 21499.27281 - tps: 29809.37795 + dps: 22354.89998 + tps: 30979.25459 } } diff --git a/sim/druid/glyphs.go b/sim/druid/glyphs.go index 816c479d80..fd94db44cd 100644 --- a/sim/druid/glyphs.go +++ b/sim/druid/glyphs.go @@ -50,4 +50,21 @@ func (druid *Druid) ApplyGlyphs() { // range mod? } + + if druid.HasPrimeGlyph(proto.DruidPrimeGlyph_GlyphOfStarsurge) { + druid.RegisterAura(core.Aura{ + ActionID: core.ActionID{SpellID: 62971}, + Label: "Glyph of Starsurge", + Duration: core.NeverExpires, + OnReset: func(aura *core.Aura, sim *core.Simulation) { + aura.Activate(sim) + }, + + OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + if spell.ClassSpellMask == DruidSpellStarsurge && !druid.Starfall.CD.IsReady(sim) { + druid.Starfall.CD.Reduce(time.Second * 5) + } + }, + }) + } } diff --git a/sim/druid/guardian/TestGuardian.results b/sim/druid/guardian/TestGuardian.results index 769f8c8c43..b374161452 100644 --- a/sim/druid/guardian/TestGuardian.results +++ b/sim/druid/guardian/TestGuardian.results @@ -37,1256 +37,1263 @@ character_stats_results: { dps_results: { key: "TestGuardian-AllItems-AgileShadowspiritDiamond" value: { - dps: 7437.63425 - tps: 37253.31125 + dps: 7705.54073 + tps: 38592.84363 } } dps_results: { key: "TestGuardian-AllItems-Althor'sAbacus-50366" value: { - dps: 7246.84319 - tps: 36299.25177 + dps: 7507.48277 + tps: 37602.44969 } } dps_results: { key: "TestGuardian-AllItems-Anhuur'sHymnal-55889" value: { - dps: 7538.02611 - tps: 37757.36515 + dps: 7809.38938 + tps: 39114.18149 } } dps_results: { key: "TestGuardian-AllItems-Anhuur'sHymnal-56407" value: { - dps: 7563.69026 - tps: 37885.48503 + dps: 7836.06222 + tps: 39247.34486 } } dps_results: { key: "TestGuardian-AllItems-AustereShadowspiritDiamond" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BaubleofTrueBlood-50726" value: { - dps: 7261.10738 - tps: 36370.66023 - hps: 89.07313 + dps: 7522.38294 + tps: 37677.03805 + hps: 98.46889 } } dps_results: { key: "TestGuardian-AllItems-BedrockTalisman-58182" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BellofEnragingResonance-59326" value: { - dps: 7335.6515 - tps: 36743.57169 + dps: 7599.84191 + tps: 38064.5237 } } dps_results: { key: "TestGuardian-AllItems-BellofEnragingResonance-65053" value: { - dps: 7304.11272 - tps: 36586.25799 + dps: 7566.97313 + tps: 37900.56004 } } dps_results: { key: "TestGuardian-AllItems-BindingPromise-67037" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 7507.95904 - tps: 37605.03166 + dps: 7778.60139 + tps: 38958.24339 } } dps_results: { key: "TestGuardian-AllItems-BloodofIsiset-55995" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BloodofIsiset-56414" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 7710.16039 - tps: 38616.17092 + dps: 7988.59077 + tps: 40008.32281 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 7406.88458 - tps: 37099.54622 + dps: 7673.6528 + tps: 38433.38735 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 7311.11041 - tps: 36620.6562 + dps: 7574.33552 + tps: 37936.78175 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 7589.57858 - tps: 38013.06872 + dps: 7863.3835 + tps: 39382.09333 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 7377.6213 - tps: 36953.22981 + dps: 7643.25887 + tps: 38281.4177 } } dps_results: { key: "TestGuardian-AllItems-BottledLightning-66879" value: { - dps: 7321.24392 - tps: 36671.26587 + dps: 7584.83259 + tps: 37989.20919 } } dps_results: { key: "TestGuardian-AllItems-BracingShadowspiritDiamond" value: { - dps: 7252.30604 - tps: 35600.33216 + dps: 7513.14778 + tps: 36878.4567 } } dps_results: { key: "TestGuardian-AllItems-BurningShadowspiritDiamond" value: { - dps: 7366.86526 - tps: 36899.42294 + dps: 7632.01126 + tps: 38225.15297 } } dps_results: { key: "TestGuardian-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 7386.80802 - tps: 36999.01073 + dps: 7652.75053 + tps: 38328.72326 } } dps_results: { key: "TestGuardian-AllItems-CoreofRipeness-58184" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-CorpseTongueCoin-50349" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-CrushingWeight-59506" value: { - dps: 7510.00337 - tps: 37616.17683 + dps: 7780.94869 + tps: 38970.90346 } } dps_results: { key: "TestGuardian-AllItems-CrushingWeight-65118" value: { - dps: 7484.19611 - tps: 37487.16573 + dps: 7754.12152 + tps: 38836.79278 } } dps_results: { key: "TestGuardian-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 7642.65353 - tps: 38278.00076 + dps: 7908.61053 + tps: 39607.78577 } } dps_results: { key: "TestGuardian-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 7772.74112 - tps: 38928.84145 + dps: 8043.74599 + tps: 40283.8658 } } dps_results: { key: "TestGuardian-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 7275.75243 - tps: 36495.71736 + dps: 7536.29288 + tps: 37798.41959 } } dps_results: { key: "TestGuardian-AllItems-Deathbringer'sWill-50363" value: { - dps: 7409.3651 - tps: 37111.94321 + dps: 7676.39994 + tps: 38447.11741 } } dps_results: { key: "TestGuardian-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 7270.5008 - tps: 36417.4746 + dps: 7532.07487 + tps: 37725.34498 } } dps_results: { key: "TestGuardian-AllItems-DislodgedForeignObject-50348" value: { - dps: 7273.31582 - tps: 36431.74119 + dps: 7535.08002 + tps: 37740.56218 } } dps_results: { key: "TestGuardian-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 7265.30599 - tps: 36419.94529 + dps: 7526.73314 + tps: 37727.08106 } } dps_results: { key: "TestGuardian-AllItems-EmberShadowspiritDiamond" value: { - dps: 7252.30604 - tps: 36326.62686 + dps: 7513.14778 + tps: 37630.83558 } } dps_results: { key: "TestGuardian-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 7270.5008 - tps: 36417.4746 + dps: 7532.07487 + tps: 37725.34498 } } dps_results: { key: "TestGuardian-AllItems-EssenceoftheCyclone-59473" value: { - dps: 7702.5489 - tps: 38579.32136 + dps: 7980.45015 + tps: 39968.82762 } } dps_results: { key: "TestGuardian-AllItems-EssenceoftheCyclone-65140" value: { - dps: 7702.76705 - tps: 38580.54588 + dps: 7980.61217 + tps: 39969.7715 } } dps_results: { key: "TestGuardian-AllItems-EternalShadowspiritDiamond" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-FallofMortality-59500" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-FallofMortality-65124" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-Figurine-DemonPanther-52199" value: { - dps: 7970.16943 - tps: 39918.50778 + dps: 8122.81774 + tps: 40681.64307 } } dps_results: { key: "TestGuardian-AllItems-Figurine-DreamOwl-52354" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-Figurine-KingofBoars-52351" value: { - dps: 7397.7735 - tps: 37053.99084 + dps: 7664.19844 + tps: 38386.11552 } } dps_results: { key: "TestGuardian-AllItems-FleetShadowspiritDiamond" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-FluidDeath-58181" value: { - dps: 7981.39598 - tps: 39974.84219 + dps: 8269.74414 + tps: 41416.58299 } } dps_results: { key: "TestGuardian-AllItems-ForlornShadowspiritDiamond" value: { - dps: 7252.30604 - tps: 36326.62686 + dps: 7513.14778 + tps: 37630.83558 } } dps_results: { key: "TestGuardian-AllItems-FuryofAngerforge-59461" value: { - dps: 7481.7147 - tps: 37473.88769 + dps: 7751.33096 + tps: 38821.96898 } } dps_results: { key: "TestGuardian-AllItems-GaleofShadows-56138" value: { - dps: 7373.46663 - tps: 36932.93105 + dps: 7639.26927 + tps: 38261.94424 } } dps_results: { key: "TestGuardian-AllItems-GaleofShadows-56462" value: { - dps: 7319.69083 - tps: 36664.09416 + dps: 7583.30519 + tps: 37982.16596 } } dps_results: { key: "TestGuardian-AllItems-GearDetector-61462" value: { - dps: 7469.74231 - tps: 37414.78945 + dps: 7739.01012 + tps: 38761.12849 } } dps_results: { key: "TestGuardian-AllItems-GlowingTwilightScale-54589" value: { - dps: 7246.84319 - tps: 36299.25177 + dps: 7507.48277 + tps: 37602.44969 } } dps_results: { key: "TestGuardian-AllItems-GraceoftheHerald-55266" value: { - dps: 7458.88483 - tps: 37359.67517 + dps: 7727.61963 + tps: 38703.3492 } } dps_results: { key: "TestGuardian-AllItems-GraceoftheHerald-56295" value: { - dps: 7612.39112 - tps: 38127.54412 + dps: 7887.24663 + tps: 39501.82171 } } dps_results: { key: "TestGuardian-AllItems-HarmlightToken-63839" value: { - dps: 7351.22581 - tps: 36821.16904 + dps: 7601.08202 + tps: 38070.45011 } } dps_results: { key: "TestGuardian-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 7353.98438 - tps: 36835.04526 + dps: 7618.71601 + tps: 38158.70336 } } dps_results: { key: "TestGuardian-AllItems-HeartofIgnacious-59514" value: { - dps: 7321.55429 - tps: 36673.68622 + dps: 7585.3086 + tps: 37992.45777 } } dps_results: { key: "TestGuardian-AllItems-HeartofIgnacious-65110" value: { - dps: 7265.20322 - tps: 36391.92046 + dps: 7526.68562 + tps: 37699.33246 } } dps_results: { key: "TestGuardian-AllItems-HeartofRage-59224" value: { - dps: 7842.92949 - tps: 39279.91869 + dps: 8127.15217 + tps: 40701.03209 } } dps_results: { key: "TestGuardian-AllItems-HeartofRage-65072" value: { - dps: 7893.55924 - tps: 39533.77664 + dps: 8179.63749 + tps: 40964.16787 } } dps_results: { key: "TestGuardian-AllItems-HeartofSolace-55868" value: { - dps: 7470.6284 - tps: 37418.7399 + dps: 7740.08386 + tps: 38766.01721 } } dps_results: { key: "TestGuardian-AllItems-HeartofSolace-56393" value: { - dps: 7467.49935 - tps: 37403.13674 + dps: 7736.66797 + tps: 38748.97985 } } dps_results: { key: "TestGuardian-AllItems-HeartofThunder-55845" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-HeartoftheVile-66969" value: { - dps: 7540.81891 - tps: 37769.73891 + dps: 7812.85721 + tps: 39129.93041 } } dps_results: { key: "TestGuardian-AllItems-Heartpierce-50641" value: { - dps: 7425.38595 - tps: 37194.49559 + dps: 7693.46351 + tps: 38534.88336 } } dps_results: { key: "TestGuardian-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 7270.5008 - tps: 36417.4746 + dps: 7532.07487 + tps: 37725.34498 } } dps_results: { key: "TestGuardian-AllItems-ImpatienceofYouth-62464" value: { - dps: 7415.03659 - tps: 37140.30629 + dps: 7682.11197 + tps: 38475.6832 } } dps_results: { key: "TestGuardian-AllItems-ImpatienceofYouth-62469" value: { - dps: 7415.03659 - tps: 37140.30629 + dps: 7682.11197 + tps: 38475.6832 } } dps_results: { key: "TestGuardian-AllItems-ImpetuousQuery-55881" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ImpetuousQuery-56406" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-JarofAncientRemedies-59354" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-JarofAncientRemedies-65029" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-JujuofNimbleness-63840" value: { - dps: 7507.95904 - tps: 37605.03166 + dps: 7778.60139 + tps: 38958.24339 } } dps_results: { key: "TestGuardian-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 7720.51452 - tps: 38670.06197 + dps: 7998.98438 + tps: 40062.41129 } } dps_results: { key: "TestGuardian-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 7897.91929 - tps: 39557.30685 + dps: 8182.93685 + tps: 40982.39466 } } dps_results: { key: "TestGuardian-AllItems-KvaldirBattleStandard-59685" value: { - dps: 7301.1793 - tps: 36571.65692 + dps: 7563.89668 + tps: 37885.24384 } } dps_results: { key: "TestGuardian-AllItems-KvaldirBattleStandard-59689" value: { - dps: 7301.1793 - tps: 36571.65692 + dps: 7563.89668 + tps: 37885.24384 } } dps_results: { key: "TestGuardian-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 7262.35308 - tps: 36376.22893 + dps: 7523.85381 + tps: 37683.73259 } } dps_results: { key: "TestGuardian-AllItems-LastWord-50708" value: { - dps: 7305.27674 - tps: 36591.50705 + dps: 7568.19701 + tps: 37906.10837 } } dps_results: { key: "TestGuardian-AllItems-LeadenDespair-55816" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-LeftEyeofRajh-56102" value: { - dps: 7846.66151 - tps: 39298.89466 + dps: 8130.83894 + tps: 40719.78179 } } dps_results: { key: "TestGuardian-AllItems-LeftEyeofRajh-56427" value: { - dps: 8055.21887 - tps: 40342.25039 + dps: 8347.63876 + tps: 41804.34986 } } dps_results: { key: "TestGuardian-AllItems-LicensetoSlay-58180" value: { - dps: 7731.69202 - tps: 38725.15551 + dps: 8010.52732 + tps: 40119.33202 } } dps_results: { key: "TestGuardian-AllItems-MagnetiteMirror-55814" value: { - dps: 7610.85931 - tps: 38119.51301 + dps: 7886.02744 + tps: 39495.35364 } } dps_results: { key: "TestGuardian-AllItems-MagnetiteMirror-56345" value: { - dps: 7824.53738 - tps: 39188.2369 + dps: 8107.96866 + tps: 40605.3933 } } dps_results: { key: "TestGuardian-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-MarkofKhardros-56132" value: { - dps: 7361.12877 - tps: 36870.76718 + dps: 7626.12624 + tps: 38195.75454 } } dps_results: { key: "TestGuardian-AllItems-MarkofKhardros-56458" value: { - dps: 7374.22681 - tps: 36936.25738 + dps: 7639.71167 + tps: 38263.6817 } } dps_results: { key: "TestGuardian-AllItems-MightoftheOcean-55251" value: { - dps: 7559.54924 - tps: 37864.34472 + dps: 7832.06258 + tps: 39226.91144 } } dps_results: { key: "TestGuardian-AllItems-MightoftheOcean-56285" value: { - dps: 7697.97131 - tps: 38556.89032 + dps: 7975.33973 + tps: 39943.73238 } } dps_results: { key: "TestGuardian-AllItems-MirrorofBrokenImages-62466" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-MirrorofBrokenImages-62471" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-MoonwellChalice-70142" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-Oremantle'sFavor-61448" value: { - dps: 7408.99419 - tps: 37110.58992 + dps: 7675.94038 + tps: 38445.32088 } } dps_results: { key: "TestGuardian-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 7255.27761 - tps: 36341.64011 + dps: 7516.38539 + tps: 37647.17903 } } dps_results: { key: "TestGuardian-AllItems-PorcelainCrab-55237" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-PorcelainCrab-56280" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 7665.33972 - tps: 38392.31693 + dps: 7942.35881 + tps: 39777.41239 } } dps_results: { key: "TestGuardian-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 7688.57948 - tps: 38509.52533 + dps: 7966.23905 + tps: 39897.82317 } } dps_results: { key: "TestGuardian-AllItems-Rainsong-55854" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Rainsong-56377" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 7397.62443 - tps: 37053.24547 + dps: 7664.02664 + tps: 38385.25655 } } dps_results: { key: "TestGuardian-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 7375.84413 - tps: 36944.34398 + dps: 7641.43547 + tps: 38272.30068 } } dps_results: { key: "TestGuardian-AllItems-RightEyeofRajh-56100" value: { - dps: 7665.84182 - tps: 38396.44368 + dps: 7942.00587 + tps: 39777.26392 } } dps_results: { key: "TestGuardian-AllItems-RightEyeofRajh-56431" value: { - dps: 7703.45173 - tps: 38584.29242 + dps: 7981.04853 + tps: 39972.2764 } } dps_results: { key: "TestGuardian-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 7477.08909 - tps: 37450.77671 + dps: 7746.5555 + tps: 38798.10875 } } dps_results: { key: "TestGuardian-AllItems-SeaStar-55256" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-SeaStar-56290" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ShardofWoe-60233" value: { - dps: 7287.14617 - tps: 36501.81025 + dps: 7549.48994 + tps: 37813.52908 } } dps_results: { key: "TestGuardian-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 7409.14168 - tps: 37110.73027 + dps: 7676.28652 + tps: 38446.45447 } } dps_results: { key: "TestGuardian-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Skardyn'sGrace-56115" value: { - dps: 7468.16586 - tps: 37406.02472 + dps: 7737.28559 + tps: 38751.62338 } } dps_results: { key: "TestGuardian-AllItems-Skardyn'sGrace-56440" value: { - dps: 7493.81658 - tps: 37534.13583 + dps: 7763.88958 + tps: 38884.5008 } } dps_results: { key: "TestGuardian-AllItems-Sorrowsong-55879" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Sorrowsong-56400" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Soul'sAnguish-66994" value: { - dps: 7610.21217 - tps: 38118.29542 + dps: 7884.26263 + tps: 39488.54776 } } dps_results: { key: "TestGuardian-AllItems-SoulCasket-58183" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Stonemother'sKiss-61411" value: { - dps: 7288.26175 - tps: 36506.37957 + dps: 7550.47631 + tps: 37817.45238 } } dps_results: { key: "TestGuardian-AllItems-Stormrider'sBattlegarb" value: { - dps: 7972.09609 - tps: 39930.49943 + dps: 8260.69857 + tps: 41373.51181 + } +} +dps_results: { + key: "TestGuardian-AllItems-Stormrider'sRegalia" + value: { + dps: 6059.51374 + tps: 30362.02285 } } dps_results: { key: "TestGuardian-AllItems-StumpofTime-62465" value: { - dps: 7577.77229 - tps: 37955.55687 + dps: 7850.87561 + tps: 39321.07346 } } dps_results: { key: "TestGuardian-AllItems-StumpofTime-62470" value: { - dps: 7577.77229 - tps: 37955.55687 + dps: 7850.87561 + tps: 39321.07346 } } dps_results: { key: "TestGuardian-AllItems-SymbioticWorm-59332" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-SymbioticWorm-65048" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 7247.25201 - tps: 36301.30006 + dps: 7507.8916 + tps: 37604.49798 } } dps_results: { key: "TestGuardian-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 7352.45277 - tps: 36827.75053 + dps: 7617.19072 + tps: 38151.44026 } } dps_results: { key: "TestGuardian-AllItems-TearofBlood-55819" value: { - dps: 7247.25201 - tps: 36301.30006 + dps: 7507.8916 + tps: 37604.49798 } } dps_results: { key: "TestGuardian-AllItems-TearofBlood-56351" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Theralion'sMirror-59519" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-Theralion'sMirror-65105" value: { - dps: 7232.52124 - tps: 36227.73206 + dps: 7492.52254 + tps: 37527.73853 } } dps_results: { key: "TestGuardian-AllItems-Throngus'sFinger-56121" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Throngus'sFinger-56449" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Tia'sGrace-55874" value: { - dps: 7495.72669 - tps: 37543.67802 + dps: 7765.83498 + tps: 38894.2195 } } dps_results: { key: "TestGuardian-AllItems-Tia'sGrace-56394" value: { - dps: 7538.37846 - tps: 37756.89064 + dps: 7810.10614 + tps: 39115.52903 } } dps_results: { key: "TestGuardian-AllItems-TinyAbominationinaJar-50706" value: { - dps: 7450.62014 - tps: 37318.75193 + dps: 7719.37022 + tps: 38662.50237 } } dps_results: { key: "TestGuardian-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 7209.12394 - tps: 36110.74909 + dps: 7467.99966 + tps: 37405.12766 } } dps_results: { key: "TestGuardian-AllItems-UnheededWarning-59520" value: { - dps: 7643.34363 - tps: 38281.82939 + dps: 7918.92197 + tps: 39659.72111 } } dps_results: { key: "TestGuardian-AllItems-UnquenchableFlame-67101" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-UnsolvableRiddle-62463" value: { - dps: 7633.47802 - tps: 38232.92116 + dps: 7908.98802 + tps: 39610.47113 } } dps_results: { key: "TestGuardian-AllItems-UnsolvableRiddle-62468" value: { - dps: 7633.47802 - tps: 38232.92116 + dps: 7908.98802 + tps: 39610.47113 } } dps_results: { key: "TestGuardian-AllItems-UnsolvableRiddle-68709" value: { - dps: 7633.47802 - tps: 38232.92116 + dps: 7908.98802 + tps: 39610.47113 } } dps_results: { key: "TestGuardian-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 6192.09509 - tps: 31024.29463 + dps: 6411.45444 + tps: 32121.09139 } } dps_results: { key: "TestGuardian-AllItems-VialofStolenMemories-59515" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-VialofStolenMemories-65109" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 7633.47802 - tps: 38232.92116 + dps: 7908.98802 + tps: 39610.47113 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 7415.03659 - tps: 37140.30629 + dps: 7682.11197 + tps: 38475.6832 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 7548.89635 - tps: 37811.60529 + dps: 7820.75984 + tps: 39170.92273 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 7312.28888 - tps: 36627.33042 + dps: 7575.51934 + tps: 37943.48273 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 7328.88689 - tps: 36709.88965 + dps: 7592.82306 + tps: 38029.5705 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 7706.2895 - tps: 38597.22041 + dps: 7985.4317 + tps: 39992.93144 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 7634.10181 - tps: 38235.72927 + dps: 7909.51176 + tps: 39612.77903 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 7398.89409 - tps: 37059.59378 + dps: 7665.33673 + tps: 38391.80697 } } dps_results: { key: "TestGuardian-AllItems-WitchingHourglass-55787" value: { - dps: 7268.08177 - tps: 36405.52966 + dps: 7529.82224 + tps: 37714.23205 } } dps_results: { key: "TestGuardian-AllItems-WitchingHourglass-56320" value: { - dps: 7305.06995 - tps: 36590.6008 + dps: 7568.25271 + tps: 37906.51458 } } dps_results: { key: "TestGuardian-AllItems-World-QuellerFocus-63842" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 7261.10738 - tps: 36370.66023 + dps: 7522.38294 + tps: 37677.03805 } } dps_results: { key: "TestGuardian-Average-Default" value: { - dps: 12273.7455 - tps: 61447.79497 + dps: 12726.44131 + tps: 63711.27403 dtps: 6471.47554 } } dps_results: { key: "TestGuardian-Settings-Tauren-p1-Default-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 21204.15523 - tps: 106781.70534 + dps: 21595.75446 + tps: 108739.70145 } } dps_results: { key: "TestGuardian-Settings-Tauren-p1-Default-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 9869.15043 - tps: 49415.88421 + dps: 10232.6501 + tps: 51233.38256 } } dps_results: { key: "TestGuardian-Settings-Tauren-p1-Default-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 11329.41278 - tps: 56723.88681 + dps: 11750.50067 + tps: 58829.32626 } } dps_results: { @@ -1313,22 +1320,22 @@ dps_results: { dps_results: { key: "TestGuardian-Settings-Tauren-preraid-Default-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 18727.29128 - tps: 94328.69141 + dps: 19061.61368 + tps: 96000.30338 } } dps_results: { key: "TestGuardian-Settings-Tauren-preraid-Default-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 8537.26839 - tps: 42754.63548 + dps: 8849.08921 + tps: 44313.73957 } } dps_results: { key: "TestGuardian-Settings-Tauren-preraid-Default-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 9669.09343 - tps: 48419.06821 + dps: 10024.86254 + tps: 50197.91375 } } dps_results: { @@ -1355,8 +1362,8 @@ dps_results: { dps_results: { key: "TestGuardian-SwitchInFrontOfTarget-Default" value: { - dps: 13889.30903 - tps: 69532.99101 + dps: 14407.47808 + tps: 72123.83627 dtps: 5825.96244 } } diff --git a/sim/druid/guardian/tank_test.go b/sim/druid/guardian/tank_test.go index 0b4def1667..71fc7365e0 100644 --- a/sim/druid/guardian/tank_test.go +++ b/sim/druid/guardian/tank_test.go @@ -17,7 +17,7 @@ func TestGuardian(t *testing.T) { Class: proto.Class_ClassDruid, Race: proto.Race_RaceTauren, - GearSet: core.GetGearSet("../../../ui/druid/guardian/gear_sets", "preraid"), + GearSet: core.GetGearSet("../../../ui/druid/guardian/gear_sets", "preraid"), OtherGearSets: []core.GearSetCombo{ core.GetGearSet("../../../ui/druid/guardian/gear_sets", "p1"), }, @@ -88,7 +88,7 @@ var StandardGlyphs = &proto.Glyphs{ var PlayerOptionsDefault = &proto.Player_GuardianDruid{ GuardianDruid: &proto.GuardianDruid{ Options: &proto.GuardianDruid_Options{ - StartingRage: 15, + StartingRage: 15, }, }, } diff --git a/sim/druid/hurricane.go b/sim/druid/hurricane.go index 6b59c34e9b..fc646730ca 100644 --- a/sim/druid/hurricane.go +++ b/sim/druid/hurricane.go @@ -47,7 +47,7 @@ func (druid *Druid) registerHurricaneSpell() { Dot: core.DotConfig{ IsAOE: true, Aura: core.Aura{ - Label: "Hurricane", + Label: "Hurricane (Aura)", }, NumberOfTicks: 10, TickLength: time.Second * 1, diff --git a/sim/druid/_innervate.go b/sim/druid/innervate.go similarity index 65% rename from sim/druid/_innervate.go rename to sim/druid/innervate.go index c6db3f29a8..2ce7d4345d 100644 --- a/sim/druid/_innervate.go +++ b/sim/druid/innervate.go @@ -18,32 +18,17 @@ func (druid *Druid) registerInnervateCD() { innervateCD := core.InnervateCD + amount := 0.05 + if innervateTarget == &druid.Unit { + amount = 0.2 + float64(druid.Talents.Dreamstate) * 0.15 + } + var innervateAura *core.Aura - var innervateManaThreshold float64 - druid.RegisterResetEffect(func(sim *core.Simulation) { - if innervateTarget == &druid.Unit { - if druid.StartingForm.Matches(Cat) { - // double shift + innervate cost. - // Prevents not having enough mana to shift back into form if more powershift are executed - innervateManaThreshold = druid.CatForm.DefaultCast.Cost*2 + innervateSpell.DefaultCast.Cost - } else { - // Threshold can be lower when casting on self because its never mid-cast. - innervateManaThreshold = 500 - } - } else { - innervateManaThreshold = core.InnervateManaThreshold(innervateTargetChar) - } - innervateAura = core.InnervateAura(innervateTargetChar, actionID.Tag) - }) + innervateAura = core.InnervateAura(innervateTargetChar, actionID.Tag, amount) + innervateManaThreshold := core.InnervateManaThreshold(innervateTargetChar) innervateSpell = druid.RegisterSpell(Humanoid|Moonkin|Tree, core.SpellConfig{ ActionID: actionID, - Flags: SpellFlagOmenTrigger, - - ManaCost: core.ManaCostOptions{ - BaseCost: 0.04, - Multiplier: 1, - }, Cast: core.CastConfig{ DefaultCast: core.Cast{ GCD: core.GCDDefault, @@ -53,12 +38,10 @@ func (druid *Druid) registerInnervateCD() { Duration: innervateCD, }, }, - ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool { // If target already has another innervate, don't cast. - return innervateTarget.HasActiveAuraWithTag(core.InnervateAuraTag) + return !innervateTarget.HasActiveAuraWithTag(core.InnervateAuraTag) }, - ApplyEffects: func(sim *core.Simulation, _ *core.Unit, _ *core.Spell) { innervateAura.Activate(sim) }, diff --git a/sim/druid/insect_swarm.go b/sim/druid/insect_swarm.go index 991721d216..905cda8d93 100644 --- a/sim/druid/insect_swarm.go +++ b/sim/druid/insect_swarm.go @@ -13,7 +13,7 @@ func (druid *Druid) registerInsectSwarmSpell() { SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellInsectSwarm, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, ManaCost: core.ManaCostOptions{ BaseCost: 0.08, diff --git a/sim/druid/items.go b/sim/druid/items.go index b7638bf147..c5b21ca47e 100644 --- a/sim/druid/items.go +++ b/sim/druid/items.go @@ -19,7 +19,7 @@ var ItemSetStormridersBattlegarb = core.NewItemSet(core.ItemSet{ var apDepByStackCount = map[int32]*stats.StatDependency{} for i := 1; i <= 3; i++ { - apDepByStackCount[int32(i)] = druid.NewDynamicMultiplyStat(stats.AttackPower, 1.0 + 0.01*float64(i)) + apDepByStackCount[int32(i)] = druid.NewDynamicMultiplyStat(stats.AttackPower, 1.0+0.01*float64(i)) } druid.StrengthOfThePantherAura = druid.RegisterAura(core.Aura{ @@ -42,5 +42,23 @@ var ItemSetStormridersBattlegarb = core.NewItemSet(core.ItemSet{ }, }) +// T11 Balance +var ItemSetStormridersRegalia = core.NewItemSet(core.ItemSet{ + Name: "Stormrider's Regalia", + Bonuses: map[int32]core.ApplyEffect{ + 2: func(agent core.Agent) { + character := agent.GetCharacter() + character.AddStaticMod(core.SpellModConfig{ + Kind: core.SpellMod_BonusCrit_Rating, + FloatValue: 5 * core.CritRatingPerCritChance, + ClassMask: DruidSpellDoT | DruidSpellMoonfire | DruidSpellSunfire, + }) + }, + 4: func(agent core.Agent) { + + }, + }, +}) + func init() { } diff --git a/sim/druid/moonfire.go b/sim/druid/moonfire.go index 7a60dca4ea..1230904b6d 100644 --- a/sim/druid/moonfire.go +++ b/sim/druid/moonfire.go @@ -18,7 +18,7 @@ func (druid *Druid) registerMoonfireDoTSpell() { SpellSchool: core.SpellSchoolArcane, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellMoonfireDoT, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, DamageMultiplier: 1, CritMultiplier: druid.BalanceCritMultiplier(), @@ -59,7 +59,7 @@ func (druid *Druid) registerMoonfireImpactSpell() { SpellSchool: core.SpellSchoolArcane, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellMoonfire, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, ManaCost: core.ManaCostOptions{ BaseCost: 0.09, diff --git a/sim/druid/omen_of_clarity.go b/sim/druid/omen_of_clarity.go index 05a053c323..79c3f4eea0 100644 --- a/sim/druid/omen_of_clarity.go +++ b/sim/druid/omen_of_clarity.go @@ -15,13 +15,12 @@ func (druid *Druid) applyOmenOfClarity() { OnInit: func(aura *core.Aura, sim *core.Simulation) { affectedSpells = core.FilterSlice([]*DruidSpell{ // Balance - druid.Hurricane, - druid.InsectSwarm, - druid.Moonfire, - // TODO druid.Starfall, not sure how the proc chance is affected. druid.Starfire, - druid.Typhoon, druid.Wrath, + druid.Hurricane, + druid.WildMushrooms, + druid.ForceOfNature, + druid.Starsurge, // Feral druid.DemoralizingRoar, @@ -58,7 +57,7 @@ func (druid *Druid) applyOmenOfClarity() { for _, as := range affectedSpells { // Mangle (Bear) handled separately in mangle.go in order to preferentially consume Berserk procs over Clearcasting procs - if as.IsEqual(spell) && (as != druid.MangleBear) { + if as.IsEqual(spell) && (as != druid.MangleBear) && (as != druid.WildMushrooms) { aura.Deactivate(sim) break } @@ -107,6 +106,10 @@ func (druid *Druid) applyOmenOfClarity() { chanceToProc *= 0.25 } else if druid.Moonfire.IsEqual(spell) { // Add Moonfire chanceToProc *= 0.076 + } else if druid.WildMushroomsDetonate.IsEqual(spell) { + // Wild Mushroom: Detonate seems to have an 'almost' guaranteed chance to proc + // setting to 0.5 to be safe + chanceToProc = 0.5 } else { chanceToProc *= 0.666 } diff --git a/sim/druid/starfall.go b/sim/druid/starfall.go index 560b0a7817..3933f4f81e 100644 --- a/sim/druid/starfall.go +++ b/sim/druid/starfall.go @@ -20,6 +20,7 @@ func (druid *Druid) registerStarfallSpell() { SpellSchool: core.SpellSchoolArcane, ProcMask: core.ProcMaskSuppressedProc, ClassSpellMask: DruidSpellStarfall, + Flags: SpellFlagOmenTrigger, DamageMultiplier: 1, CritMultiplier: druid.BalanceCritMultiplier(), diff --git a/sim/druid/starfire.go b/sim/druid/starfire.go index e9b72f76e8..5e7d1aacff 100644 --- a/sim/druid/starfire.go +++ b/sim/druid/starfire.go @@ -17,12 +17,11 @@ func (druid *Druid) registerStarfireSpell() { ProcMask: core.ProcMaskSuppressedProc, Flags: core.SpellFlagNoLogs, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - moonfireDot := druid.Moonfire.Dot(target) + moonfireDot := druid.MoonfireDoT.Dot(target) + sunfireDot := druid.SunfireDoT.Dot(target) - if moonfireDot.IsActive() && druid.ExtendingMoonfireStacks > 0 { - druid.ExtendingMoonfireStacks -= 1 - moonfireDot.UpdateExpires(moonfireDot.ExpiresAt() + time.Second*3) - } + tryExtendDot(moonfireDot, &druid.ExtendingMoonfireStacks) + tryExtendDot(sunfireDot, &druid.ExtendingMoonfireStacks) }, }) @@ -31,7 +30,7 @@ func (druid *Druid) registerStarfireSpell() { SpellSchool: core.SpellSchoolArcane, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellStarfire, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, ManaCost: core.ManaCostOptions{ BaseCost: 0.11, @@ -72,3 +71,10 @@ func (druid *Druid) registerStarfireSpell() { }, }) } + +func tryExtendDot(dot *core.Dot, extendingStacks *int) { + if dot.IsActive() && *extendingStacks > 0 { + *extendingStacks -= 1 + dot.UpdateExpires(dot.ExpiresAt() + time.Second*3) + } +} diff --git a/sim/druid/starsurge.go b/sim/druid/starsurge.go index 627c3e3702..10530fff26 100644 --- a/sim/druid/starsurge.go +++ b/sim/druid/starsurge.go @@ -16,7 +16,7 @@ func (druid *Druid) registerStarsurgeSpell() { SpellSchool: core.SpellSchoolArcane | core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellStarsurge, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, DamageMultiplier: 1, DamageMultiplierAdditive: 1, diff --git a/sim/druid/sunfire.go b/sim/druid/sunfire.go index 875ecd9a16..4d1c2ac311 100644 --- a/sim/druid/sunfire.go +++ b/sim/druid/sunfire.go @@ -18,7 +18,7 @@ func (druid *Druid) registerSunfireDoTSpell() { SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellSunfireDoT, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, DamageMultiplier: 1, CritMultiplier: druid.BalanceCritMultiplier(), @@ -59,7 +59,7 @@ func (druid *Druid) registerSunfireImpactSpell() { SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellSunfire, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, ManaCost: core.ManaCostOptions{ BaseCost: 0.09, @@ -85,6 +85,7 @@ func (druid *Druid) registerSunfireImpactSpell() { if result.Landed() { druid.MoonfireDoT.Dot(target).Deactivate(sim) + druid.ExtendingMoonfireStacks = 3 druid.SunfireDoT.Cast(sim, target) } diff --git a/sim/druid/typhoon.go b/sim/druid/typhoon.go index 8ca37d99d9..4f8c083f39 100644 --- a/sim/druid/typhoon.go +++ b/sim/druid/typhoon.go @@ -20,7 +20,7 @@ func (druid *Druid) registerTyphoonSpell() { SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellTyphoon, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, ManaCost: core.ManaCostOptions{ BaseCost: 0.16, diff --git a/sim/druid/wild_mushrooms.go b/sim/druid/wild_mushrooms.go index 7ecdedbd73..bd35c2afe3 100644 --- a/sim/druid/wild_mushrooms.go +++ b/sim/druid/wild_mushrooms.go @@ -40,7 +40,7 @@ func (druid *Druid) registerWildMushrooms() { SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellWildMushroomDetonate, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, Cast: core.CastConfig{ CD: core.Cooldown{ diff --git a/sim/druid/wrath.go b/sim/druid/wrath.go index 5f385ff882..a572d6457e 100644 --- a/sim/druid/wrath.go +++ b/sim/druid/wrath.go @@ -15,7 +15,7 @@ func (druid *Druid) registerWrathSpell() { SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskSpellDamage, ClassSpellMask: DruidSpellWrath, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | SpellFlagOmenTrigger, MissileSpeed: 20, ManaCost: core.ManaCostOptions{ diff --git a/sim/hunter/aspects.go b/sim/hunter/aspects.go index 868ebde4f0..8fdc4927cd 100644 --- a/sim/hunter/aspects.go +++ b/sim/hunter/aspects.go @@ -35,12 +35,6 @@ func (hunter *Hunter) registerAspectOfTheHawkSpell() { } func (hunter *Hunter) registerAspectOfTheFoxSpell() { actionID := core.ActionID{SpellID: 82661} - restoreFocus := 2.0 - focusMetric := hunter.NewFocusMetrics(actionID) - - if hunter.Talents.OneWithNature > 0 { - restoreFocus += 1 * float64(hunter.Talents.OneWithNature) - } foxMod := hunter.AddDynamicMod(core.SpellModConfig{ Kind: core.SpellMod_AllowCastWhileMoving, @@ -55,11 +49,6 @@ func (hunter *Hunter) registerAspectOfTheFoxSpell() { OnExpire: func(aura *core.Aura, sim *core.Simulation) { foxMod.Deactivate() }, - OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { - if aura.IsActive() { - hunter.AddFocus(sim, restoreFocus, focusMetric) - } - }, })) hunter.applySharedAspectConfig(true, hunter.AspectOfTheFoxAura) diff --git a/sim/hunter/beast_mastery/TestBM.results b/sim/hunter/beast_mastery/TestBM.results index 87b3d52bdb..b63dad3c78 100644 --- a/sim/hunter/beast_mastery/TestBM.results +++ b/sim/hunter/beast_mastery/TestBM.results @@ -37,1318 +37,1318 @@ character_stats_results: { dps_results: { key: "TestBM-AllItems-AgileShadowspiritDiamond" value: { - dps: 21291.69637 - tps: 17969.31342 + dps: 21795.26851 + tps: 18339.99025 } } dps_results: { key: "TestBM-AllItems-Ahn'KaharBloodHunter'sBattlegear" value: { - dps: 18312.28235 - tps: 15541.22502 + dps: 18738.76223 + tps: 15856.86261 } } dps_results: { key: "TestBM-AllItems-Althor'sAbacus-50366" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Anhuur'sHymnal-55889" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-Anhuur'sHymnal-56407" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-AustereShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17515.96224 + dps: 21305.2301 + tps: 17873.98112 } } dps_results: { key: "TestBM-AllItems-BaubleofTrueBlood-50726" value: { - dps: 19926.75273 - tps: 16817.97375 - hps: 96.8761 + dps: 20397.14416 + tps: 17164.01401 + hps: 105.16583 } } dps_results: { key: "TestBM-AllItems-BedrockTalisman-58182" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BellofEnragingResonance-59326" value: { - dps: 20194.69638 - tps: 17042.95813 + dps: 20670.21849 + tps: 17392.41071 } } dps_results: { key: "TestBM-AllItems-BellofEnragingResonance-65053" value: { - dps: 20275.48715 - tps: 17108.57672 + dps: 20753.77704 + tps: 17460.19019 } } dps_results: { key: "TestBM-AllItems-BindingPromise-67037" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BlackBruise-50692" value: { - dps: 19761.85845 - tps: 16670.0235 + dps: 20227.71065 + tps: 17012.2023 } } dps_results: { key: "TestBM-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 20546.40425 - tps: 17299.88792 + dps: 21034.05472 + tps: 17657.67774 } } dps_results: { key: "TestBM-AllItems-BloodofIsiset-55995" value: { - dps: 20034.16318 - tps: 16865.03557 + dps: 20508.85102 + tps: 17212.95831 } } dps_results: { key: "TestBM-AllItems-BloodofIsiset-56414" value: { - dps: 20048.20536 - tps: 16871.19843 + dps: 20523.45489 + tps: 17219.36768 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 20768.50592 - tps: 17508.07003 + dps: 21259.16692 + tps: 17868.31359 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 20151.3964 - tps: 16999.04437 + dps: 20625.77896 + tps: 17347.33285 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 20655.46033 - tps: 17413.0434 + dps: 21142.45501 + tps: 17770.3414 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-BloodthirstyGladiator'sPursuit" value: { - dps: 18779.55085 - tps: 15838.67519 + dps: 19223.40214 + tps: 16164.89145 } } dps_results: { key: "TestBM-AllItems-BottledLightning-66879" value: { - dps: 19982.40524 - tps: 16862.70096 + dps: 20453.61037 + tps: 17209.11792 } } dps_results: { key: "TestBM-AllItems-BracingShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17165.64299 + dps: 21305.2301 + tps: 17516.50149 } } dps_results: { key: "TestBM-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 21345.89074 - tps: 18023.64956 + dps: 21849.45721 + tps: 18394.32639 } } dps_results: { key: "TestBM-AllItems-BurningShadowspiritDiamond" value: { - dps: 21071.91808 - tps: 17772.64021 + dps: 21567.44872 + tps: 18136.19974 } } dps_results: { key: "TestBM-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 21209.07909 - tps: 17908.85951 + dps: 21710.91523 + tps: 18278.68687 } } dps_results: { key: "TestBM-AllItems-CoreofRipeness-58184" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-CorpseTongueCoin-50349" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-CrushingWeight-59506" value: { - dps: 20162.27735 - tps: 17045.6188 + dps: 20638.29626 + tps: 17396.97138 } } dps_results: { key: "TestBM-AllItems-CrushingWeight-65118" value: { - dps: 20142.27738 - tps: 17017.56976 + dps: 20615.40596 + tps: 17365.71003 } } dps_results: { key: "TestBM-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 20363.20323 - tps: 17268.29285 + dps: 20831.77141 + tps: 17613.06461 } } dps_results: { key: "TestBM-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 21100.69368 - tps: 17860.73276 + dps: 21587.48028 + tps: 18217.92092 } } dps_results: { key: "TestBM-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 20063.5241 - tps: 16877.92155 + dps: 20539.38638 + tps: 17226.35972 } } dps_results: { key: "TestBM-AllItems-Deathbringer'sWill-50363" value: { - dps: 20415.13463 - tps: 17200.47078 + dps: 20899.3915 + tps: 17556.1411 } } dps_results: { key: "TestBM-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 20945.60211 - tps: 17645.38253 + dps: 21441.60207 + tps: 18009.37371 } } dps_results: { key: "TestBM-AllItems-DislodgedForeignObject-50348" value: { - dps: 19971.9684 - tps: 16859.234 + dps: 20440.55591 + tps: 17203.31213 } } dps_results: { key: "TestBM-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17515.96224 + dps: 21305.2301 + tps: 17873.98112 } } dps_results: { key: "TestBM-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-EmberShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17515.96224 + dps: 21305.2301 + tps: 17873.98112 } } dps_results: { key: "TestBM-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 20945.60211 - tps: 17645.38253 + dps: 21441.60207 + tps: 18009.37371 } } dps_results: { key: "TestBM-AllItems-EssenceoftheCyclone-59473" value: { - dps: 21042.47828 - tps: 17752.38152 + dps: 21540.19449 + tps: 18118.49386 } } dps_results: { key: "TestBM-AllItems-EssenceoftheCyclone-65140" value: { - dps: 21075.81427 - tps: 17765.2074 + dps: 21572.99116 + tps: 18129.96002 } } dps_results: { key: "TestBM-AllItems-EternalShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17515.96224 + dps: 21305.2301 + tps: 17873.98112 } } dps_results: { key: "TestBM-AllItems-FallofMortality-59500" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-FallofMortality-65124" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Figurine-DemonPanther-52199" value: { - dps: 21039.30384 - tps: 17739.49511 + dps: 21420.92902 + tps: 18019.11035 } } dps_results: { key: "TestBM-AllItems-Figurine-DreamOwl-52354" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Figurine-KingofBoars-52351" value: { - dps: 20048.20536 - tps: 16871.19843 + dps: 20523.45489 + tps: 17219.36768 } } dps_results: { key: "TestBM-AllItems-FleetShadowspiritDiamond" value: { - dps: 20839.34991 - tps: 17526.38931 + dps: 21330.30429 + tps: 17884.82527 } } dps_results: { key: "TestBM-AllItems-FluidDeath-58181" value: { - dps: 21108.34486 - tps: 17791.98851 + dps: 21606.16077 + tps: 18157.15017 } } dps_results: { key: "TestBM-AllItems-ForlornShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17515.96224 + dps: 21305.2301 + tps: 17873.98112 } } dps_results: { key: "TestBM-AllItems-FuryofAngerforge-59461" value: { - dps: 20191.32037 - tps: 17038.6044 + dps: 20666.87036 + tps: 17388.04575 } } dps_results: { key: "TestBM-AllItems-GaleofShadows-56138" value: { - dps: 20050.09482 - tps: 16899.08512 + dps: 20524.79955 + tps: 17247.74946 } } dps_results: { key: "TestBM-AllItems-GaleofShadows-56462" value: { - dps: 20136.46085 - tps: 17002.47522 + dps: 20609.93601 + tps: 17350.59095 } } dps_results: { key: "TestBM-AllItems-GearDetector-61462" value: { - dps: 20443.93315 - tps: 17248.69216 + dps: 20927.85242 + tps: 17604.8018 } } dps_results: { key: "TestBM-AllItems-Gladiator'sPursuit" value: { - dps: 18430.06234 - tps: 15523.75154 + dps: 18862.08982 + tps: 15839.52658 } } dps_results: { key: "TestBM-AllItems-GlowingTwilightScale-54589" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-GraceoftheHerald-55266" value: { - dps: 20426.90995 - tps: 17224.06385 + dps: 20906.3934 + tps: 17575.43346 } } dps_results: { key: "TestBM-AllItems-GraceoftheHerald-56295" value: { - dps: 20774.08088 - tps: 17531.10072 + dps: 21264.46074 + tps: 17891.76138 } } dps_results: { key: "TestBM-AllItems-HarmlightToken-63839" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 19983.25814 - tps: 16840.99376 + dps: 20455.90978 + tps: 17187.95483 } } dps_results: { key: "TestBM-AllItems-HeartofIgnacious-59514" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-HeartofIgnacious-65110" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-HeartofRage-59224" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-HeartofRage-65072" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-HeartofSolace-55868" value: { - dps: 20050.09482 - tps: 16899.08512 + dps: 20524.79955 + tps: 17247.74946 } } dps_results: { key: "TestBM-AllItems-HeartofSolace-56393" value: { - dps: 20136.46085 - tps: 17002.47522 + dps: 20609.93601 + tps: 17350.59095 } } dps_results: { key: "TestBM-AllItems-HeartofThunder-55845" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-HeartofThunder-56370" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-HeartoftheVile-66969" value: { - dps: 20511.03383 - tps: 17287.61637 + dps: 20993.01726 + tps: 17640.66309 } } dps_results: { key: "TestBM-AllItems-Heartpierce-50641" value: { - dps: 21420.37021 - tps: 18082.58469 + dps: 21927.51074 + tps: 18456.2138 } } dps_results: { key: "TestBM-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 20945.60211 - tps: 17645.38253 + dps: 21441.60207 + tps: 18009.37371 } } dps_results: { key: "TestBM-AllItems-ImpatienceofYouth-62464" value: { - dps: 20063.5241 - tps: 16877.92155 + dps: 20539.38638 + tps: 17226.35972 } } dps_results: { key: "TestBM-AllItems-ImpatienceofYouth-62469" value: { - dps: 20063.5241 - tps: 16877.92155 + dps: 20539.38638 + tps: 17226.35972 } } dps_results: { key: "TestBM-AllItems-ImpetuousQuery-55881" value: { - dps: 20034.16318 - tps: 16865.03557 + dps: 20508.85102 + tps: 17212.95831 } } dps_results: { key: "TestBM-AllItems-ImpetuousQuery-56406" value: { - dps: 20048.20536 - tps: 16871.19843 + dps: 20523.45489 + tps: 17219.36768 } } dps_results: { key: "TestBM-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 20035.95251 - tps: 16877.24837 + dps: 20510.55148 + tps: 17225.49918 } } dps_results: { key: "TestBM-AllItems-JarofAncientRemedies-59354" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-JarofAncientRemedies-65029" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-JujuofNimbleness-63840" value: { - dps: 20546.40425 - tps: 17299.88792 + dps: 21034.05472 + tps: 17657.67774 } } dps_results: { key: "TestBM-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 20868.09188 - tps: 17604.03762 + dps: 21358.67727 + tps: 17964.06084 } } dps_results: { key: "TestBM-AllItems-KvaldirBattleStandard-59685" value: { - dps: 19927.95688 - tps: 16798.98771 + dps: 20394.60876 + tps: 17140.48083 } } dps_results: { key: "TestBM-AllItems-KvaldirBattleStandard-59689" value: { - dps: 19927.95688 - tps: 16798.98771 + dps: 20394.60876 + tps: 17140.48083 } } dps_results: { key: "TestBM-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 19978.58966 - tps: 16873.97244 + dps: 20448.41571 + tps: 17219.6138 } } dps_results: { key: "TestBM-AllItems-LastWord-50708" value: { - dps: 21291.69637 - tps: 17969.31342 + dps: 21795.26851 + tps: 18339.99025 } } dps_results: { key: "TestBM-AllItems-LeadenDespair-55816" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-LeadenDespair-56347" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-LeftEyeofRajh-56102" value: { - dps: 20665.96015 - tps: 17412.79463 + dps: 21155.16881 + tps: 17771.87667 } } dps_results: { key: "TestBM-AllItems-LeftEyeofRajh-56427" value: { - dps: 20702.54767 - tps: 17427.19995 + dps: 21191.68882 + tps: 17785.32718 } } dps_results: { key: "TestBM-AllItems-LicensetoSlay-58180" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-Lightning-ChargedBattlegear" value: { - dps: 20380.17852 - tps: 17155.42854 + dps: 20855.36531 + tps: 17501.62533 } } dps_results: { key: "TestBM-AllItems-MagnetiteMirror-55814" value: { - dps: 19953.22599 - tps: 16840.89301 + dps: 20424.5159 + tps: 17187.6896 } } dps_results: { key: "TestBM-AllItems-MagnetiteMirror-56345" value: { - dps: 19953.22599 - tps: 16840.89301 + dps: 20424.5159 + tps: 17187.6896 } } dps_results: { key: "TestBM-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-MarkofKhardros-56132" value: { - dps: 20040.34879 - tps: 16875.25183 + dps: 20515.12361 + tps: 17223.42277 } } dps_results: { key: "TestBM-AllItems-MarkofKhardros-56458" value: { - dps: 20051.75773 - tps: 16879.7512 + dps: 20526.98891 + tps: 17228.10211 } } dps_results: { key: "TestBM-AllItems-MightoftheOcean-55251" value: { - dps: 20205.18612 - tps: 17032.3008 + dps: 20679.95719 + tps: 17380.15645 } } dps_results: { key: "TestBM-AllItems-MightoftheOcean-56285" value: { - dps: 20205.18612 - tps: 17032.3008 + dps: 20679.95719 + tps: 17380.15645 } } dps_results: { key: "TestBM-AllItems-MirrorofBrokenImages-62466" value: { - dps: 20063.5241 - tps: 16877.92155 + dps: 20539.38638 + tps: 17226.35972 } } dps_results: { key: "TestBM-AllItems-MirrorofBrokenImages-62471" value: { - dps: 20063.5241 - tps: 16877.92155 + dps: 20539.38638 + tps: 17226.35972 } } dps_results: { key: "TestBM-AllItems-MoonwellChalice-70142" value: { - dps: 20063.76438 - tps: 16876.20661 + dps: 20539.63627 + tps: 17224.57618 } } dps_results: { key: "TestBM-AllItems-Oremantle'sFavor-61448" value: { - dps: 20098.26051 - tps: 16959.55814 + dps: 20573.57479 + tps: 17309.32432 } } dps_results: { key: "TestBM-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 20087.50612 - tps: 16954.17929 + dps: 20560.8823 + tps: 17302.22239 } } dps_results: { key: "TestBM-AllItems-PorcelainCrab-55237" value: { - dps: 19975.5891 - tps: 16837.27215 + dps: 20447.93398 + tps: 17184.08436 } } dps_results: { key: "TestBM-AllItems-PorcelainCrab-56280" value: { - dps: 20013.34246 - tps: 16852.96867 + dps: 20487.19747 + tps: 17200.40873 } } dps_results: { key: "TestBM-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 20815.24011 - tps: 17515.96224 + dps: 21305.2301 + tps: 17873.98112 } } dps_results: { key: "TestBM-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 21100.76692 - tps: 17801.12486 + dps: 21601.02315 + tps: 18169.3954 } } dps_results: { key: "TestBM-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 21105.01099 - tps: 17788.05445 + dps: 21603.7403 + tps: 18154.1055 } } dps_results: { key: "TestBM-AllItems-Rainsong-55854" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Rainsong-56377" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 21071.91808 - tps: 17772.64021 + dps: 21567.44872 + tps: 18136.19974 } } dps_results: { key: "TestBM-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 21071.91808 - tps: 17772.64021 + dps: 21567.44872 + tps: 18136.19974 } } dps_results: { key: "TestBM-AllItems-RightEyeofRajh-56100" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-RightEyeofRajh-56431" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-RuthlessGladiator'sPursuit" value: { - dps: 20675.52907 - tps: 17394.30813 + dps: 21167.64427 + tps: 17755.17449 } } dps_results: { key: "TestBM-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 20544.12478 - tps: 17297.9994 + dps: 21028.46667 + tps: 17652.49627 } } dps_results: { key: "TestBM-AllItems-SeaStar-55256" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-SeaStar-56290" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Shadowmourne-49623" value: { - dps: 21491.61089 - tps: 18145.87747 + dps: 21999.10685 + tps: 18519.54409 } } dps_results: { key: "TestBM-AllItems-ShardofWoe-60233" value: { - dps: 20224.81245 - tps: 17082.33128 + dps: 20701.75107 + tps: 17433.57065 } } dps_results: { key: "TestBM-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 20084.22031 - tps: 16969.36307 + dps: 20561.2841 + tps: 17321.83257 } } dps_results: { key: "TestBM-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Skardyn'sGrace-56115" value: { - dps: 20638.77482 - tps: 17360.4268 + dps: 21126.37544 + tps: 17716.89349 } } dps_results: { key: "TestBM-AllItems-Skardyn'sGrace-56440" value: { - dps: 20774.31319 - tps: 17473.36723 + dps: 21266.85946 + tps: 17833.87566 } } dps_results: { key: "TestBM-AllItems-Sorrowsong-55879" value: { - dps: 20034.16318 - tps: 16865.03557 + dps: 20508.85102 + tps: 17212.95831 } } dps_results: { key: "TestBM-AllItems-Sorrowsong-56400" value: { - dps: 20048.20536 - tps: 16871.19843 + dps: 20523.45489 + tps: 17219.36768 } } dps_results: { key: "TestBM-AllItems-Soul'sAnguish-66994" value: { - dps: 20205.18612 - tps: 17032.3008 + dps: 20679.95719 + tps: 17380.15645 } } dps_results: { key: "TestBM-AllItems-SoulCasket-58183" value: { - dps: 20063.5241 - tps: 16877.92155 + dps: 20539.38638 + tps: 17226.35972 } } dps_results: { key: "TestBM-AllItems-Stonemother'sKiss-61411" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-StumpofTime-62465" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-StumpofTime-62470" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-SymbioticWorm-59332" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-SymbioticWorm-65048" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 19986.23901 - tps: 16864.44149 + dps: 20457.89619 + tps: 17211.22677 } } dps_results: { key: "TestBM-AllItems-TearofBlood-55819" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-TearofBlood-56351" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 20018.41891 - tps: 16858.1257 + dps: 20492.47699 + tps: 17205.77204 } } dps_results: { key: "TestBM-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 20048.20536 - tps: 16871.19843 + dps: 20523.45489 + tps: 17219.36768 } } dps_results: { key: "TestBM-AllItems-Theralion'sMirror-59519" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Theralion'sMirror-65105" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Throngus'sFinger-56121" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Throngus'sFinger-56449" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-Tia'sGrace-55874" value: { - dps: 20735.83066 - tps: 17434.40087 + dps: 21227.4301 + tps: 17793.94312 } } dps_results: { key: "TestBM-AllItems-Tia'sGrace-56394" value: { - dps: 20847.15395 - tps: 17519.85131 + dps: 21341.32496 + tps: 17880.93021 } } dps_results: { key: "TestBM-AllItems-TinyAbominationinaJar-50706" value: { - dps: 20146.85353 - tps: 16994.82668 + dps: 20620.97604 + tps: 17342.86811 } } dps_results: { key: "TestBM-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 19336.1869 - tps: 16304.99044 + dps: 19791.28185 + tps: 16638.83753 } } dps_results: { key: "TestBM-AllItems-UnheededWarning-59520" value: { - dps: 20848.1777 - tps: 17568.71062 + dps: 21340.4859 + tps: 17929.84015 } } dps_results: { key: "TestBM-AllItems-UnquenchableFlame-67101" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-UnsolvableRiddle-62463" value: { - dps: 20901.20542 - tps: 17566.97858 + dps: 21399.01581 + tps: 17931.41989 } } dps_results: { key: "TestBM-AllItems-UnsolvableRiddle-62468" value: { - dps: 20901.20542 - tps: 17566.97858 + dps: 21399.01581 + tps: 17931.41989 } } dps_results: { key: "TestBM-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 19895.48468 - tps: 16820.14285 + dps: 20363.7901 + tps: 17165.43459 } } dps_results: { key: "TestBM-AllItems-VialofStolenMemories-59515" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-VialofStolenMemories-65109" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 20758.15108 - tps: 17504.1444 + dps: 21250.23929 + tps: 17866.07235 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 20130.21752 - tps: 16973.79913 + dps: 20602.26977 + tps: 17319.59464 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 20054.94963 - tps: 16895.22745 + dps: 20527.59945 + tps: 17241.48838 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 20222.43846 - tps: 17061.47508 + dps: 20698.54938 + tps: 17411.14747 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 20071.609 - tps: 16881.46986 + dps: 20547.79467 + tps: 17230.04997 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 20753.27177 - tps: 17504.79711 + dps: 21243.66828 + tps: 17865.25464 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-ViciousGladiator'sPursuit" value: { - dps: 19475.32576 - tps: 16392.48401 + dps: 19932.88417 + tps: 16726.72874 } } dps_results: { key: "TestBM-AllItems-WitchingHourglass-55787" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-WitchingHourglass-56320" value: { - dps: 19926.93197 - tps: 16817.97375 + dps: 20397.33057 + tps: 17164.01401 } } dps_results: { key: "TestBM-AllItems-World-QuellerFocus-63842" value: { - dps: 20020.121 - tps: 16858.87271 + dps: 20494.24715 + tps: 17206.54894 } } dps_results: { key: "TestBM-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 20028.93985 - tps: 16870.75246 + dps: 20503.25832 + tps: 17218.74342 } } dps_results: { key: "TestBM-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 20028.93985 - tps: 16870.75246 + dps: 20503.25832 + tps: 17218.74342 } } dps_results: { key: "TestBM-AllItems-Zod'sRepeatingLongbow-50638" value: { - dps: 19739.17794 - tps: 16519.43358 + dps: 20215.79882 + tps: 16867.26469 } } dps_results: { key: "TestBM-Average-Default" value: { - dps: 21169.60464 - tps: 17872.29061 + dps: 21670.52248 + tps: 18241.31589 } } dps_results: { key: "TestBM-Settings-Dwarf-preraid_bm-Basic-bm-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21039.04709 - tps: 17905.75955 + dps: 21532.60209 + tps: 18273.98305 } } dps_results: { key: "TestBM-Settings-Dwarf-preraid_bm-Basic-bm-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 21039.04709 - tps: 17905.75955 + dps: 21532.60209 + tps: 18273.98305 } } dps_results: { key: "TestBM-Settings-Dwarf-preraid_bm-Basic-bm-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 25989.08298 - tps: 21937.07097 + dps: 26602.43322 + tps: 22388.34073 } } dps_results: { @@ -1375,22 +1375,22 @@ dps_results: { dps_results: { key: "TestBM-Settings-Dwarf-preraid_bm-Basic-bm_advanced-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21039.04709 - tps: 17905.75955 + dps: 21532.60209 + tps: 18273.98305 } } dps_results: { key: "TestBM-Settings-Dwarf-preraid_bm-Basic-bm_advanced-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 21039.04709 - tps: 17905.75955 + dps: 21532.60209 + tps: 18273.98305 } } dps_results: { key: "TestBM-Settings-Dwarf-preraid_bm-Basic-bm_advanced-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 25989.08298 - tps: 21937.07097 + dps: 26602.43322 + tps: 22388.34073 } } dps_results: { @@ -1417,22 +1417,22 @@ dps_results: { dps_results: { key: "TestBM-Settings-Orc-preraid_bm-Basic-bm-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21291.69637 - tps: 17969.31342 + dps: 21795.26851 + tps: 18339.99025 } } dps_results: { key: "TestBM-Settings-Orc-preraid_bm-Basic-bm-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 21291.69637 - tps: 17969.31342 + dps: 21795.26851 + tps: 18339.99025 } } dps_results: { key: "TestBM-Settings-Orc-preraid_bm-Basic-bm-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 26479.23085 - tps: 22147.83926 + dps: 27109.09763 + tps: 22604.45038 } } dps_results: { @@ -1459,22 +1459,22 @@ dps_results: { dps_results: { key: "TestBM-Settings-Orc-preraid_bm-Basic-bm_advanced-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21291.69637 - tps: 17969.31342 + dps: 21795.26851 + tps: 18339.99025 } } dps_results: { key: "TestBM-Settings-Orc-preraid_bm-Basic-bm_advanced-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 21291.69637 - tps: 17969.31342 + dps: 21795.26851 + tps: 18339.99025 } } dps_results: { key: "TestBM-Settings-Orc-preraid_bm-Basic-bm_advanced-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 26479.23085 - tps: 22147.83926 + dps: 27109.09763 + tps: 22604.45038 } } dps_results: { @@ -1501,7 +1501,7 @@ dps_results: { dps_results: { key: "TestBM-SwitchInFrontOfTarget-Default" value: { - dps: 21006.66187 - tps: 17732.58238 + dps: 21503.18709 + tps: 18098.14442 } } diff --git a/sim/hunter/marksmanship/TestMM.results b/sim/hunter/marksmanship/TestMM.results index dc9abb4eda..5f50e404f6 100644 --- a/sim/hunter/marksmanship/TestMM.results +++ b/sim/hunter/marksmanship/TestMM.results @@ -37,1471 +37,1471 @@ character_stats_results: { dps_results: { key: "TestMM-AllItems-AgileShadowspiritDiamond" value: { - dps: 20347.04615 - tps: 18112.06927 + dps: 22480.89993 + tps: 20156.52396 } } dps_results: { key: "TestMM-AllItems-Ahn'KaharBloodHunter'sBattlegear" value: { - dps: 17181.10326 - tps: 15289.16623 + dps: 18816.76693 + tps: 16849.15241 } } dps_results: { key: "TestMM-AllItems-Althor'sAbacus-50366" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Anhuur'sHymnal-55889" value: { - dps: 19326.02586 - tps: 17216.28385 + dps: 21202.26103 + tps: 19008.12934 } } dps_results: { key: "TestMM-AllItems-Anhuur'sHymnal-56407" value: { - dps: 19326.02586 - tps: 17216.28385 + dps: 21202.26103 + tps: 19008.12934 } } dps_results: { key: "TestMM-AllItems-AustereShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17711.17699 + dps: 21998.31947 + tps: 19690.21946 } } dps_results: { key: "TestMM-AllItems-BaubleofTrueBlood-50726" value: { - dps: 19098.76508 - tps: 17024.64412 - hps: 87.09767 + dps: 20944.81652 + tps: 18787.73073 + hps: 94.5854 } } dps_results: { key: "TestMM-AllItems-BedrockTalisman-58182" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-BellofEnragingResonance-59326" value: { - dps: 19483.50859 - tps: 17383.31268 + dps: 21415.97307 + tps: 19231.76933 } } dps_results: { key: "TestMM-AllItems-BellofEnragingResonance-65053" value: { - dps: 19516.02913 - tps: 17412.81345 + dps: 21451.93232 + tps: 19264.588 } } dps_results: { key: "TestMM-AllItems-BindingPromise-67037" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-BlackBruise-50692" value: { - dps: 19028.14513 - tps: 16919.30834 + dps: 20960.97789 + tps: 18767.78763 } } dps_results: { key: "TestMM-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 19713.7744 - tps: 17585.89843 + dps: 21583.44713 + tps: 19370.45612 } } dps_results: { key: "TestMM-AllItems-BloodofIsiset-55995" value: { - dps: 19220.87633 - tps: 17134.62989 + dps: 20996.05282 + tps: 18826.35652 } } dps_results: { key: "TestMM-AllItems-BloodofIsiset-56414" value: { - dps: 19315.50961 - tps: 17220.85895 + dps: 21092.05509 + tps: 18913.61841 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 19935.30023 - tps: 17779.36459 + dps: 21875.22928 + tps: 19633.05621 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 19221.33869 - tps: 17147.14571 + dps: 21067.43581 + tps: 18910.27511 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 19412.65578 - tps: 17313.26999 + dps: 21344.4963 + tps: 19161.13508 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 19851.85342 - tps: 17687.45196 + dps: 21803.98906 + tps: 19553.01155 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 19115.30135 - tps: 17041.10836 + dps: 20961.39846 + tps: 18804.23776 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-BloodthirstyGladiator'sPursuit" value: { - dps: 18016.88197 - tps: 16038.83024 + dps: 19650.43408 + tps: 17593.26029 } } dps_results: { key: "TestMM-AllItems-BottledLightning-66879" value: { - dps: 19168.32263 - tps: 17087.33035 + dps: 21034.50309 + tps: 18870.27112 } } dps_results: { key: "TestMM-AllItems-BracingShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17356.95345 + dps: 21998.31947 + tps: 19296.41507 } } dps_results: { key: "TestMM-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 20347.04615 - tps: 18112.06927 + dps: 22480.89993 + tps: 20156.52396 } } dps_results: { key: "TestMM-AllItems-BurningShadowspiritDiamond" value: { - dps: 20227.65741 - tps: 18008.33047 + dps: 22350.78004 + tps: 20042.68003 } } dps_results: { key: "TestMM-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 20263.61649 - tps: 18039.73188 + dps: 22398.71896 + tps: 20085.87896 } } dps_results: { key: "TestMM-AllItems-CoreofRipeness-58184" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-CorpseTongueCoin-50349" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-CrushingWeight-59506" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-CrushingWeight-65118" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 19537.18665 - tps: 17464.46542 + dps: 21396.07475 + tps: 19240.44467 } } dps_results: { key: "TestMM-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 20301.23613 - tps: 18140.20391 + dps: 22246.50142 + tps: 19999.02792 } } dps_results: { key: "TestMM-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 19295.85411 - tps: 17199.72923 + dps: 21070.1109 + tps: 18890.14103 } } dps_results: { key: "TestMM-AllItems-Deathbringer'sWill-50363" value: { - dps: 19639.33893 - tps: 17505.10494 + dps: 21623.25187 + tps: 19403.64851 } } dps_results: { key: "TestMM-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 19964.81908 - tps: 17740.93447 + dps: 22044.25797 + tps: 19731.41798 } } dps_results: { key: "TestMM-AllItems-DislodgedForeignObject-50348" value: { - dps: 19199.09673 - tps: 17084.47931 + dps: 20992.42922 + tps: 18793.38826 } } dps_results: { key: "TestMM-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17711.17699 + dps: 21998.31947 + tps: 19690.21946 } } dps_results: { key: "TestMM-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-EmberShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17711.17699 + dps: 21998.31947 + tps: 19690.21946 } } dps_results: { key: "TestMM-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 19964.81908 - tps: 17740.93447 + dps: 22044.25797 + tps: 19731.41798 } } dps_results: { key: "TestMM-AllItems-EssenceoftheCyclone-59473" value: { - dps: 20216.03966 - tps: 18017.83427 + dps: 22247.60113 + tps: 19961.46753 } } dps_results: { key: "TestMM-AllItems-EssenceoftheCyclone-65140" value: { - dps: 20350.36819 - tps: 18139.59384 + dps: 22365.90833 + tps: 20066.703 } } dps_results: { key: "TestMM-AllItems-EternalShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17711.17699 + dps: 21998.31947 + tps: 19690.21946 } } dps_results: { key: "TestMM-AllItems-FallofMortality-59500" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-FallofMortality-65124" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Figurine-DemonPanther-52199" value: { - dps: 20131.09608 - tps: 17940.72422 + dps: 22005.05883 + tps: 19737.85735 } } dps_results: { key: "TestMM-AllItems-Figurine-DreamOwl-52354" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 19213.6769 - tps: 17139.48392 + dps: 21059.77402 + tps: 18902.61332 } } dps_results: { key: "TestMM-AllItems-Figurine-KingofBoars-52351" value: { - dps: 19315.50961 - tps: 17220.85895 + dps: 21092.05509 + tps: 18913.61841 } } dps_results: { key: "TestMM-AllItems-FleetShadowspiritDiamond" value: { - dps: 19821.73777 - tps: 17617.32059 + dps: 21847.76111 + tps: 19555.16724 } } dps_results: { key: "TestMM-AllItems-FluidDeath-58181" value: { - dps: 20193.56809 - tps: 17977.07852 + dps: 22169.87857 + tps: 19864.72941 } } dps_results: { key: "TestMM-AllItems-ForlornShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17711.17699 + dps: 21998.31947 + tps: 19690.21946 } } dps_results: { key: "TestMM-AllItems-FuryofAngerforge-59461" value: { - dps: 19425.70062 - tps: 17325.50472 + dps: 21358.16511 + tps: 19173.96137 } } dps_results: { key: "TestMM-AllItems-GaleofShadows-56138" value: { - dps: 19237.98451 - tps: 17102.1574 + dps: 21059.93374 + tps: 18838.7363 } } dps_results: { key: "TestMM-AllItems-GaleofShadows-56462" value: { - dps: 19173.017 - tps: 17063.75777 + dps: 20981.09609 + tps: 18785.94848 } } dps_results: { key: "TestMM-AllItems-GearDetector-61462" value: { - dps: 19787.77438 - tps: 17628.76264 + dps: 21742.7503 + tps: 19497.17256 } } dps_results: { key: "TestMM-AllItems-Gladiator'sPursuit" value: { - dps: 17723.29067 - tps: 15765.51662 + dps: 19337.23939 + tps: 17301.15438 } } dps_results: { key: "TestMM-AllItems-GlowingTwilightScale-54589" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-GraceoftheHerald-55266" value: { - dps: 19676.7994 - tps: 17534.61661 + dps: 21622.05078 + tps: 19394.18068 } } dps_results: { key: "TestMM-AllItems-GraceoftheHerald-56295" value: { - dps: 19968.31417 - tps: 17791.69856 + dps: 21973.71693 + tps: 19710.03669 } } dps_results: { key: "TestMM-AllItems-HarmlightToken-63839" value: { - dps: 19104.63335 - tps: 17030.45383 + dps: 20950.84022 + tps: 18793.71413 } } dps_results: { key: "TestMM-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-HeartofIgnacious-59514" value: { - dps: 19100.1496 - tps: 17025.95662 + dps: 20946.24672 + tps: 18789.08602 } } dps_results: { key: "TestMM-AllItems-HeartofIgnacious-65110" value: { - dps: 19100.32881 - tps: 17026.13583 + dps: 20946.42593 + tps: 18789.26523 } } dps_results: { key: "TestMM-AllItems-HeartofRage-59224" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-HeartofRage-65072" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-HeartofSolace-55868" value: { - dps: 19233.13292 - tps: 17097.30581 + dps: 21055.08214 + tps: 18833.88471 } } dps_results: { key: "TestMM-AllItems-HeartofSolace-56393" value: { - dps: 19167.5652 - tps: 17058.30597 + dps: 20975.64429 + tps: 18780.49668 } } dps_results: { key: "TestMM-AllItems-HeartofThunder-55845" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-HeartofThunder-56370" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-HeartoftheVile-66969" value: { - dps: 19751.65994 - tps: 17603.68079 + dps: 21699.5738 + tps: 19465.67549 } } dps_results: { key: "TestMM-AllItems-Heartpierce-50641" value: { - dps: 20460.37461 - tps: 18212.33313 + dps: 22620.35354 + tps: 20282.3904 } } dps_results: { key: "TestMM-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 19964.81908 - tps: 17740.93447 + dps: 22044.25797 + tps: 19731.41798 } } dps_results: { key: "TestMM-AllItems-ImpatienceofYouth-62464" value: { - dps: 19291.39322 - tps: 17195.12482 + dps: 21065.72015 + tps: 18885.60101 } } dps_results: { key: "TestMM-AllItems-ImpatienceofYouth-62469" value: { - dps: 19291.39322 - tps: 17195.12482 + dps: 21065.72015 + tps: 18885.60101 } } dps_results: { key: "TestMM-AllItems-ImpetuousQuery-55881" value: { - dps: 19220.89598 - tps: 17134.64954 + dps: 20996.07248 + tps: 18826.37618 } } dps_results: { key: "TestMM-AllItems-ImpetuousQuery-56406" value: { - dps: 19315.52926 - tps: 17220.87861 + dps: 21092.07475 + tps: 18913.63807 } } dps_results: { key: "TestMM-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 19327.46453 - tps: 17257.66856 + dps: 21152.58336 + tps: 18999.99555 } } dps_results: { key: "TestMM-AllItems-JarofAncientRemedies-59354" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-JarofAncientRemedies-65029" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-JujuofNimbleness-63840" value: { - dps: 19713.7744 - tps: 17585.89843 + dps: 21583.44713 + tps: 19370.45612 } } dps_results: { key: "TestMM-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 19992.32635 - tps: 17802.32082 + dps: 22015.48203 + tps: 19737.87628 } } dps_results: { key: "TestMM-AllItems-KvaldirBattleStandard-59685" value: { - dps: 19162.45911 - tps: 17049.9531 + dps: 20972.82794 + tps: 18775.81368 } } dps_results: { key: "TestMM-AllItems-KvaldirBattleStandard-59689" value: { - dps: 19162.45911 - tps: 17049.9531 + dps: 20972.82794 + tps: 18775.81368 } } dps_results: { key: "TestMM-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 19349.39779 - tps: 17260.33364 + dps: 21220.02976 + tps: 19047.84967 } } dps_results: { key: "TestMM-AllItems-LastWord-50708" value: { - dps: 20347.04615 - tps: 18112.06927 + dps: 22480.89993 + tps: 20156.52396 } } dps_results: { key: "TestMM-AllItems-LeadenDespair-55816" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-LeadenDespair-56347" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-LeftEyeofRajh-56102" value: { - dps: 19836.6388 - tps: 17677.58436 + dps: 21836.87132 + tps: 19591.4547 } } dps_results: { key: "TestMM-AllItems-LeftEyeofRajh-56427" value: { - dps: 19939.128 - tps: 17766.23901 + dps: 21964.89733 + tps: 19705.09277 } } dps_results: { key: "TestMM-AllItems-LicensetoSlay-58180" value: { - dps: 19326.02586 - tps: 17216.28385 + dps: 21202.26103 + tps: 19008.12934 } } dps_results: { key: "TestMM-AllItems-Lightning-ChargedBattlegear" value: { - dps: 19987.35126 - tps: 17881.6243 + dps: 22030.08297 + tps: 19840.7206 } } dps_results: { key: "TestMM-AllItems-MagnetiteMirror-55814" value: { - dps: 19103.57733 - tps: 17030.30703 + dps: 20949.55469 + tps: 18793.35359 } } dps_results: { key: "TestMM-AllItems-MagnetiteMirror-56345" value: { - dps: 19103.57733 - tps: 17030.30703 + dps: 20949.55469 + tps: 18793.35359 } } dps_results: { key: "TestMM-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-MarkofKhardros-56132" value: { - dps: 19197.9629 - tps: 17115.80479 + dps: 21027.74793 + tps: 18862.3035 } } dps_results: { key: "TestMM-AllItems-MarkofKhardros-56458" value: { - dps: 19328.3907 - tps: 17257.31704 + dps: 21181.50157 + tps: 19027.58497 } } dps_results: { key: "TestMM-AllItems-MightoftheOcean-55251" value: { - dps: 19342.67809 - tps: 17235.31585 + dps: 21219.07717 + tps: 19027.42044 } } dps_results: { key: "TestMM-AllItems-MightoftheOcean-56285" value: { - dps: 19342.67809 - tps: 17235.31585 + dps: 21219.07717 + tps: 19027.42044 } } dps_results: { key: "TestMM-AllItems-MirrorofBrokenImages-62466" value: { - dps: 19291.41288 - tps: 17195.14447 + dps: 21065.73981 + tps: 18885.62067 } } dps_results: { key: "TestMM-AllItems-MirrorofBrokenImages-62471" value: { - dps: 19291.41288 - tps: 17195.14447 + dps: 21065.73981 + tps: 18885.62067 } } dps_results: { key: "TestMM-AllItems-MoonwellChalice-70142" value: { - dps: 19420.87349 - tps: 17327.59989 + dps: 21308.70325 + tps: 19131.69872 } } dps_results: { key: "TestMM-AllItems-Oremantle'sFavor-61448" value: { - dps: 19251.85343 - tps: 17166.51619 + dps: 21149.21908 + tps: 18980.46836 } } dps_results: { key: "TestMM-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 19301.83418 - tps: 17212.63992 + dps: 21188.21414 + tps: 19015.45212 } } dps_results: { key: "TestMM-AllItems-PorcelainCrab-55237" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-PorcelainCrab-56280" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 19930.50392 - tps: 17711.17699 + dps: 21998.31947 + tps: 19690.21946 } } dps_results: { key: "TestMM-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 20335.86693 - tps: 18102.90752 + dps: 22430.06913 + tps: 20108.1092 } } dps_results: { key: "TestMM-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 20492.06311 - tps: 18263.68902 + dps: 22594.97958 + tps: 20277.66026 } } dps_results: { key: "TestMM-AllItems-Rainsong-55854" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Rainsong-56377" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 20227.65741 - tps: 18008.33047 + dps: 22350.78004 + tps: 20042.68003 } } dps_results: { key: "TestMM-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 20227.65741 - tps: 18008.33047 + dps: 22350.78004 + tps: 20042.68003 } } dps_results: { key: "TestMM-AllItems-RightEyeofRajh-56100" value: { - dps: 19326.02586 - tps: 17216.28385 + dps: 21202.26103 + tps: 19008.12934 } } dps_results: { key: "TestMM-AllItems-RightEyeofRajh-56431" value: { - dps: 19326.02586 - tps: 17216.28385 + dps: 21202.26103 + tps: 19008.12934 } } dps_results: { key: "TestMM-AllItems-RuthlessGladiator'sPursuit" value: { - dps: 19717.38449 - tps: 17509.95493 + dps: 21591.06649 + tps: 19294.6407 } } dps_results: { key: "TestMM-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 19668.17946 - tps: 17528.26516 + dps: 21583.94605 + tps: 19358.43518 } } dps_results: { key: "TestMM-AllItems-SeaStar-55256" value: { - dps: 19160.44761 - tps: 17086.25463 + dps: 21006.54473 + tps: 18849.38403 } } dps_results: { key: "TestMM-AllItems-SeaStar-56290" value: { - dps: 19213.6769 - tps: 17139.48392 + dps: 21059.77402 + tps: 18902.61332 } } dps_results: { key: "TestMM-AllItems-Shadowmourne-49623" value: { - dps: 20505.64571 - tps: 18226.78721 + dps: 22656.41873 + tps: 20286.12412 } } dps_results: { key: "TestMM-AllItems-ShardofWoe-60233" value: { - dps: 19273.59437 - tps: 17134.25235 + dps: 21186.52639 + tps: 18961.64009 } } dps_results: { key: "TestMM-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-Skardyn'sGrace-56115" value: { - dps: 19939.50532 - tps: 17787.6978 + dps: 21874.02757 + tps: 19636.14774 } } dps_results: { key: "TestMM-AllItems-Skardyn'sGrace-56440" value: { - dps: 20131.62843 - tps: 17972.39834 + dps: 22104.8558 + tps: 19859.25651 } } dps_results: { key: "TestMM-AllItems-Sorrowsong-55879" value: { - dps: 19220.87633 - tps: 17134.62989 + dps: 20996.05282 + tps: 18826.35652 } } dps_results: { key: "TestMM-AllItems-Sorrowsong-56400" value: { - dps: 19315.50961 - tps: 17220.85895 + dps: 21092.05509 + tps: 18913.61841 } } dps_results: { key: "TestMM-AllItems-Soul'sAnguish-66994" value: { - dps: 19342.67809 - tps: 17235.31585 + dps: 21219.07717 + tps: 19027.42044 } } dps_results: { key: "TestMM-AllItems-SoulCasket-58183" value: { - dps: 19478.37856 - tps: 17382.11015 + dps: 21252.70548 + tps: 19072.58634 } } dps_results: { key: "TestMM-AllItems-Stonemother'sKiss-61411" value: { - dps: 19110.78262 - tps: 17036.22658 + dps: 20972.93899 + tps: 18815.40071 } } dps_results: { key: "TestMM-AllItems-StumpofTime-62465" value: { - dps: 19341.7462 - tps: 17232.00419 + dps: 21217.98137 + tps: 19023.84967 } } dps_results: { key: "TestMM-AllItems-StumpofTime-62470" value: { - dps: 19354.82071 - tps: 17245.0787 + dps: 21231.05588 + tps: 19036.92419 } } dps_results: { key: "TestMM-AllItems-SymbioticWorm-59332" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-SymbioticWorm-65048" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 19039.8173 - tps: 16964.48202 + dps: 20852.00698 + tps: 18693.65829 } } dps_results: { key: "TestMM-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-TearofBlood-55819" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-TearofBlood-56351" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 19278.95431 - tps: 17199.32329 + dps: 21099.9585 + tps: 18937.14224 } } dps_results: { key: "TestMM-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 19319.55926 - tps: 17224.9086 + dps: 21096.10474 + tps: 18917.66806 } } dps_results: { key: "TestMM-AllItems-Theralion'sMirror-59519" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Theralion'sMirror-65105" value: { - dps: 19067.81924 - tps: 16983.66093 + dps: 20877.54181 + tps: 18710.01716 } } dps_results: { key: "TestMM-AllItems-Throngus'sFinger-56121" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Throngus'sFinger-56449" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-Tia'sGrace-55874" value: { - dps: 19944.51059 - tps: 17778.78167 + dps: 21818.23768 + tps: 19565.87961 } } dps_results: { key: "TestMM-AllItems-Tia'sGrace-56394" value: { - dps: 20145.12187 - tps: 17958.77166 + dps: 22027.37829 + tps: 19753.57407 } } dps_results: { key: "TestMM-AllItems-TinyAbominationinaJar-50706" value: { - dps: 19341.35499 - tps: 17244.95798 + dps: 21206.79819 + tps: 19026.5453 } } dps_results: { key: "TestMM-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 18602.34139 - tps: 16592.26974 + dps: 20426.50846 + tps: 18336.03395 } } dps_results: { key: "TestMM-AllItems-UnheededWarning-59520" value: { - dps: 19887.06431 - tps: 17721.84314 + dps: 21827.00509 + tps: 19575.17508 } } dps_results: { key: "TestMM-AllItems-UnquenchableFlame-67101" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-UnsolvableRiddle-62463" value: { - dps: 20058.88664 - tps: 17879.30227 + dps: 21939.63777 + tps: 19672.87003 } } dps_results: { key: "TestMM-AllItems-UnsolvableRiddle-62468" value: { - dps: 20058.88664 - tps: 17879.30227 + dps: 21939.63777 + tps: 19672.87003 } } dps_results: { key: "TestMM-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 19452.19349 - tps: 17367.9703 + dps: 21378.39599 + tps: 19210.92909 } } dps_results: { key: "TestMM-AllItems-VialofStolenMemories-59515" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-VialofStolenMemories-65109" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 19863.93529 - tps: 17712.24223 + dps: 21801.86341 + tps: 19564.10262 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 19228.19398 - tps: 17154.001 + dps: 21074.2911 + tps: 18917.1304 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 19326.04552 - tps: 17216.30351 + dps: 21202.28069 + tps: 19008.149 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 19285.3569 - tps: 17174.6994 + dps: 21124.56208 + tps: 18929.90092 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 19441.64689 - tps: 17340.24796 + dps: 21376.93576 + tps: 19191.48087 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 19473.58067 - tps: 17382.57213 + dps: 21264.2929 + tps: 19089.64402 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 19098.76969 - tps: 17024.5767 + dps: 20944.8668 + tps: 18787.7061 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 19965.37011 - tps: 17784.5138 + dps: 21961.22278 + tps: 19693.13222 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 19105.1296 - tps: 17030.93662 + dps: 20951.22672 + tps: 18794.06602 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-ViciousGladiator'sPursuit" value: { - dps: 18731.83921 - tps: 16642.41132 + dps: 20489.64998 + tps: 18317.86288 } } dps_results: { key: "TestMM-AllItems-WitchingHourglass-55787" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-WitchingHourglass-56320" value: { - dps: 19098.75003 - tps: 17024.55705 + dps: 20944.84714 + tps: 18787.68644 } } dps_results: { key: "TestMM-AllItems-World-QuellerFocus-63842" value: { - dps: 19220.16971 - tps: 17141.95462 + dps: 21034.42358 + tps: 18873.07988 } } dps_results: { key: "TestMM-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 19188.31599 - tps: 17095.05512 + dps: 21023.56255 + tps: 18846.57125 } } dps_results: { key: "TestMM-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 19188.31599 - tps: 17095.05512 + dps: 21023.56255 + tps: 18846.57125 } } dps_results: { key: "TestMM-AllItems-Zod'sRepeatingLongbow-50638" value: { - dps: 18923.02236 - tps: 16725.84688 + dps: 20886.37779 + tps: 18600.71977 } } dps_results: { key: "TestMM-Average-Default" value: { - dps: 20328.09984 - tps: 18090.4729 + dps: 22389.80848 + tps: 20062.67361 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21541.7442 - tps: 19429.71859 + dps: 23616.56898 + tps: 21420.06234 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 20167.69108 - tps: 18062.56737 + dps: 22279.99746 + tps: 20090.66879 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 25736.73748 - tps: 22951.29279 + dps: 27323.50849 + tps: 24426.64601 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm-NoBuffs-5.1yards-LongMultiTarget" value: { - dps: 15259.47858 - tps: 13693.72808 + dps: 15709.65359 + tps: 14144.19173 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm-NoBuffs-5.1yards-LongSingleTarget" value: { - dps: 14234.70878 - tps: 12661.9331 + dps: 14645.17738 + tps: 13072.2046 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm-NoBuffs-5.1yards-ShortSingleTarget" value: { - dps: 15720.30741 - tps: 13985.21067 + dps: 15930.443 + tps: 14195.34626 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm_advanced-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21541.7442 - tps: 19429.71859 + dps: 23616.56898 + tps: 21420.06234 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm_advanced-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 20167.69108 - tps: 18062.56737 + dps: 22279.99746 + tps: 20090.66879 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm_advanced-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 25736.73748 - tps: 22951.29279 + dps: 27323.50849 + tps: 24426.64601 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm_advanced-NoBuffs-5.1yards-LongMultiTarget" value: { - dps: 15259.47858 - tps: 13693.72808 + dps: 15709.65359 + tps: 14144.19173 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm_advanced-NoBuffs-5.1yards-LongSingleTarget" value: { - dps: 14234.70878 - tps: 12661.9331 + dps: 14645.17738 + tps: 13072.2046 } } dps_results: { key: "TestMM-Settings-Dwarf-preraid_mm-Basic-mm_advanced-NoBuffs-5.1yards-ShortSingleTarget" value: { - dps: 15720.30741 - tps: 13985.21067 + dps: 15930.443 + tps: 14195.34626 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21750.79011 - tps: 19508.53512 + dps: 23845.5948 + tps: 21513.64961 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 20347.04615 - tps: 18112.06927 + dps: 22480.89993 + tps: 20156.52396 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 26201.26388 - tps: 23221.80764 + dps: 27822.23992 + tps: 24723.60542 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm-NoBuffs-5.1yards-LongMultiTarget" value: { - dps: 15445.12526 - tps: 13782.22142 + dps: 15897.19492 + tps: 14234.59421 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm-NoBuffs-5.1yards-LongSingleTarget" value: { - dps: 14397.62157 - tps: 12726.96943 + dps: 14809.89226 + tps: 13139.03314 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm-NoBuffs-5.1yards-ShortSingleTarget" value: { - dps: 16002.19032 - tps: 14147.56854 + dps: 16216.06608 + tps: 14361.4443 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm_advanced-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 21750.79011 - tps: 19508.53512 + dps: 23845.5948 + tps: 21513.64961 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm_advanced-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 20347.04615 - tps: 18112.06927 + dps: 22480.89993 + tps: 20156.52396 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm_advanced-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 26201.26388 - tps: 23221.80764 + dps: 27822.23992 + tps: 24723.60542 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm_advanced-NoBuffs-5.1yards-LongMultiTarget" value: { - dps: 15445.12526 - tps: 13782.22142 + dps: 15897.19492 + tps: 14234.59421 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm_advanced-NoBuffs-5.1yards-LongSingleTarget" value: { - dps: 14397.62157 - tps: 12726.96943 + dps: 14809.89226 + tps: 13139.03314 } } dps_results: { key: "TestMM-Settings-Orc-preraid_mm-Basic-mm_advanced-NoBuffs-5.1yards-ShortSingleTarget" value: { - dps: 16002.19032 - tps: 14147.56854 + dps: 16216.06608 + tps: 14361.4443 } } dps_results: { key: "TestMM-SwitchInFrontOfTarget-Default" value: { - dps: 20076.71844 - tps: 17872.0546 + dps: 22174.75545 + tps: 19881.90506 } } diff --git a/sim/hunter/mm_talents.go b/sim/hunter/mm_talents.go index df032f9c6c..30be62e976 100644 --- a/sim/hunter/mm_talents.go +++ b/sim/hunter/mm_talents.go @@ -183,7 +183,7 @@ func (hunter *Hunter) applyPiercingShots() { }, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - spell.Dot(target).ApplyOrReset(sim) + spell.Dot(target).Apply(sim) spell.CalcAndDealOutcome(sim, target, spell.OutcomeAlwaysHit) }, diff --git a/sim/hunter/multi_shot.go b/sim/hunter/multi_shot.go index 4f0d3bd4ab..cfaeac2f0b 100644 --- a/sim/hunter/multi_shot.go +++ b/sim/hunter/multi_shot.go @@ -52,6 +52,8 @@ func (hunter *Hunter) registerMultiShotSpell() { spell.DealDamage(sim, baseDamageArray[hitIndex]) if hunter.Talents.SerpentSpread > 0 { ss := hunter.SerpentSting.Dot(curTarget) + + hunter.SerpentSting.SpellMetrics[target.UnitIndex].Hits-- ss.NumberOfTicks = (3 + (hunter.Talents.SerpentSpread * 3)) / 2 ss.Apply(sim) hunter.ImprovedSerpentSting.Cast(sim, curTarget) @@ -59,7 +61,6 @@ func (hunter *Hunter) registerMultiShotSpell() { curTarget = sim.Environment.NextTargetUnit(curTarget) } }) - }, }) } diff --git a/sim/hunter/serpent_sting.go b/sim/hunter/serpent_sting.go index 228b0600b9..b92d16f485 100644 --- a/sim/hunter/serpent_sting.go +++ b/sim/hunter/serpent_sting.go @@ -93,7 +93,6 @@ func (hunter *Hunter) registerSerpentStingSpell() { hunter.ImprovedSerpentSting.Cast(sim, target) } } - spell.DealOutcome(sim, result) }) }, diff --git a/sim/hunter/survival/TestSV.results b/sim/hunter/survival/TestSV.results index 33a2517007..89b5ec68ed 100644 --- a/sim/hunter/survival/TestSV.results +++ b/sim/hunter/survival/TestSV.results @@ -37,1318 +37,1318 @@ character_stats_results: { dps_results: { key: "TestSV-AllItems-AgileShadowspiritDiamond" value: { - dps: 25829.56719 - tps: 23403.84377 + dps: 26101.76626 + tps: 23580.38873 } } dps_results: { key: "TestSV-AllItems-Ahn'KaharBloodHunter'sBattlegear" value: { - dps: 21787.01188 - tps: 19731.98177 + dps: 22019.79011 + tps: 19883.67649 } } dps_results: { key: "TestSV-AllItems-Althor'sAbacus-50366" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Anhuur'sHymnal-55889" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-Anhuur'sHymnal-56407" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-AustereShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22844.63904 + dps: 25519.4944 + tps: 23017.16461 } } dps_results: { key: "TestSV-AllItems-BaubleofTrueBlood-50726" value: { - dps: 24188.75931 - tps: 21923.55428 - hps: 88.70463 + dps: 24443.12607 + tps: 22088.49324 + hps: 96.44839 } } dps_results: { key: "TestSV-AllItems-BedrockTalisman-58182" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BellofEnragingResonance-59326" value: { - dps: 24507.12062 - tps: 22208.54148 + dps: 24764.37829 + tps: 22375.0961 } } dps_results: { key: "TestSV-AllItems-BellofEnragingResonance-65053" value: { - dps: 24558.20618 - tps: 22256.99657 + dps: 24815.97268 + tps: 22423.95479 } } dps_results: { key: "TestSV-AllItems-BindingPromise-67037" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BlackBruise-50692" value: { - dps: 23958.32806 - tps: 21700.53081 + dps: 24211.24733 + tps: 21864.39259 } } dps_results: { key: "TestSV-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 24991.62015 - tps: 22670.15179 + dps: 25253.59468 + tps: 22840.46078 } } dps_results: { key: "TestSV-AllItems-BloodofIsiset-55995" value: { - dps: 24411.49484 - tps: 22146.20201 + dps: 24665.85039 + tps: 22311.14097 } } dps_results: { key: "TestSV-AllItems-BloodofIsiset-56414" value: { - dps: 24440.61017 - tps: 22175.26916 + dps: 24694.96573 + tps: 22340.20812 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 25273.88469 - tps: 22910.5639 + dps: 25539.1849 + tps: 23082.51167 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 24484.56179 - tps: 22186.62189 + dps: 24741.66309 + tps: 22353.0457 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 25309.87051 - tps: 22928.59494 + dps: 25575.68898 + tps: 23100.36867 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-BloodthirstyGladiator'sPursuit" value: { - dps: 22780.79471 - tps: 20619.64659 + dps: 23020.89747 + tps: 20774.50356 } } dps_results: { key: "TestSV-AllItems-BottledLightning-66879" value: { - dps: 24302.26914 - tps: 22030.81985 + dps: 24557.84624 + tps: 22196.71937 } } dps_results: { key: "TestSV-AllItems-BracingShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22387.74626 + dps: 25519.4944 + tps: 22556.82132 } } dps_results: { key: "TestSV-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 25830.97722 - tps: 23405.45352 + dps: 26103.16831 + tps: 23581.99849 } } dps_results: { key: "TestSV-AllItems-BurningShadowspiritDiamond" value: { - dps: 25645.6556 - tps: 23237.21033 + dps: 25915.94195 + tps: 23412.52624 } } dps_results: { key: "TestSV-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 25696.5346 - tps: 23283.57658 + dps: 25967.37736 + tps: 23459.26839 } } dps_results: { key: "TestSV-AllItems-CoreofRipeness-58184" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-CorpseTongueCoin-50349" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-CrushingWeight-59506" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-CrushingWeight-65118" value: { - dps: 24149.20109 - tps: 21879.15068 + dps: 24403.60119 + tps: 22043.92917 } } dps_results: { key: "TestSV-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 24488.80283 - tps: 22228.36389 + dps: 24743.44109 + tps: 22393.76499 } } dps_results: { key: "TestSV-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 25534.06187 - tps: 23171.22257 + dps: 25799.18675 + tps: 23343.11629 } } dps_results: { key: "TestSV-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 24477.64528 - tps: 22212.04794 + dps: 24732.00898 + tps: 22376.9869 } } dps_results: { key: "TestSV-AllItems-Deathbringer'sWill-50363" value: { - dps: 24808.68225 - tps: 22473.45652 + dps: 25068.90272 + tps: 22641.59701 } } dps_results: { key: "TestSV-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 25299.99205 - tps: 22888.11996 + dps: 25568.02335 + tps: 23061.00031 } } dps_results: { key: "TestSV-AllItems-DislodgedForeignObject-50348" value: { - dps: 24274.68486 - tps: 22016.18757 + dps: 24528.38101 + tps: 22180.72422 } } dps_results: { key: "TestSV-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22844.63904 + dps: 25519.4944 + tps: 23017.16461 } } dps_results: { key: "TestSV-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-EmberShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22844.63904 + dps: 25519.4944 + tps: 23017.16461 } } dps_results: { key: "TestSV-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 25299.99205 - tps: 22888.11996 + dps: 25568.02335 + tps: 23061.00031 } } dps_results: { key: "TestSV-AllItems-EssenceoftheCyclone-59473" value: { - dps: 25681.71401 - tps: 23278.35293 + dps: 25950.54833 + tps: 23452.33523 } } dps_results: { key: "TestSV-AllItems-EssenceoftheCyclone-65140" value: { - dps: 25818.41736 - tps: 23398.02823 + dps: 26088.24851 + tps: 23572.33175 } } dps_results: { key: "TestSV-AllItems-EternalShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22844.63904 + dps: 25519.4944 + tps: 23017.16461 } } dps_results: { key: "TestSV-AllItems-FallofMortality-59500" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-FallofMortality-65124" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Figurine-DemonPanther-52199" value: { - dps: 25447.51552 - tps: 23068.59985 + dps: 25652.50841 + tps: 23192.31474 } } dps_results: { key: "TestSV-AllItems-Figurine-DreamOwl-52354" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Figurine-KingofBoars-52351" value: { - dps: 24440.61017 - tps: 22175.26916 + dps: 24694.96573 + tps: 22340.20812 } } dps_results: { key: "TestSV-AllItems-FleetShadowspiritDiamond" value: { - dps: 25301.60381 - tps: 22894.15603 + dps: 25569.09983 + tps: 23066.6816 } } dps_results: { key: "TestSV-AllItems-FluidDeath-58181" value: { - dps: 25676.12742 - tps: 23266.16199 + dps: 25947.08102 + tps: 23441.96711 } } dps_results: { key: "TestSV-AllItems-ForlornShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22844.63904 + dps: 25519.4944 + tps: 23017.16461 } } dps_results: { key: "TestSV-AllItems-FuryofAngerforge-59461" value: { - dps: 24507.12062 - tps: 22208.54148 + dps: 24764.37829 + tps: 22375.0961 } } dps_results: { key: "TestSV-AllItems-GaleofShadows-56138" value: { - dps: 24280.35999 - tps: 21985.61362 + dps: 24535.95951 + tps: 22150.60369 } } dps_results: { key: "TestSV-AllItems-GaleofShadows-56462" value: { - dps: 24317.4952 - tps: 22014.29008 + dps: 24575.4096 + tps: 22181.25666 } } dps_results: { key: "TestSV-AllItems-GearDetector-61462" value: { - dps: 24884.74549 - tps: 22528.32822 + dps: 25147.59583 + tps: 22698.18398 } } dps_results: { key: "TestSV-AllItems-Gladiator'sPursuit" value: { - dps: 22349.56191 - tps: 20207.60872 + dps: 22587.13962 + tps: 20360.6357 } } dps_results: { key: "TestSV-AllItems-GlowingTwilightScale-54589" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-GraceoftheHerald-55266" value: { - dps: 24944.8742 - tps: 22598.51954 + dps: 25206.7263 + tps: 22767.84491 } } dps_results: { key: "TestSV-AllItems-GraceoftheHerald-56295" value: { - dps: 25334.41253 - tps: 22951.59589 + dps: 25599.6032 + tps: 23122.75156 } } dps_results: { key: "TestSV-AllItems-HarmlightToken-63839" value: { - dps: 24195.82729 - tps: 21930.94433 + dps: 24450.91136 + tps: 22096.61623 } } dps_results: { key: "TestSV-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 24202.44835 - tps: 21937.5235 + dps: 24456.80391 + tps: 22102.46246 } } dps_results: { key: "TestSV-AllItems-HeartofIgnacious-59514" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-HeartofIgnacious-65110" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-HeartofRage-59224" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-HeartofRage-65072" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-HeartofSolace-55868" value: { - dps: 24280.35999 - tps: 21985.61362 + dps: 24535.95951 + tps: 22150.60369 } } dps_results: { key: "TestSV-AllItems-HeartofSolace-56393" value: { - dps: 24317.4952 - tps: 22014.29008 + dps: 24575.4096 + tps: 22181.25666 } } dps_results: { key: "TestSV-AllItems-HeartofThunder-55845" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-HeartofThunder-56370" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-HeartoftheVile-66969" value: { - dps: 25078.18187 - tps: 22718.23575 + dps: 25341.40472 + tps: 22888.39291 } } dps_results: { key: "TestSV-AllItems-Heartpierce-50641" value: { - dps: 25981.36792 - tps: 23539.12107 + dps: 26255.19373 + tps: 23716.63847 } } dps_results: { key: "TestSV-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 25299.99205 - tps: 22888.11996 + dps: 25568.02335 + tps: 23061.00031 } } dps_results: { key: "TestSV-AllItems-ImpatienceofYouth-62464" value: { - dps: 24472.37236 - tps: 22206.97878 + dps: 24726.72791 + tps: 22371.91773 } } dps_results: { key: "TestSV-AllItems-ImpatienceofYouth-62469" value: { - dps: 24472.37236 - tps: 22206.97878 + dps: 24726.72791 + tps: 22371.91773 } } dps_results: { key: "TestSV-AllItems-ImpetuousQuery-55881" value: { - dps: 24411.49484 - tps: 22146.20201 + dps: 24665.85039 + tps: 22311.14097 } } dps_results: { key: "TestSV-AllItems-ImpetuousQuery-56406" value: { - dps: 24440.61017 - tps: 22175.26916 + dps: 24694.96573 + tps: 22340.20812 } } dps_results: { key: "TestSV-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 24382.21083 - tps: 22118.82552 + dps: 24638.23432 + tps: 22285.50533 } } dps_results: { key: "TestSV-AllItems-JarofAncientRemedies-59354" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-JarofAncientRemedies-65029" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-JujuofNimbleness-63840" value: { - dps: 24991.62015 - tps: 22670.15179 + dps: 25253.59468 + tps: 22840.46078 } } dps_results: { key: "TestSV-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 25384.65649 - tps: 23000.43337 + dps: 25652.49401 + tps: 23174.17011 } } dps_results: { key: "TestSV-AllItems-KvaldirBattleStandard-59685" value: { - dps: 24282.93214 - tps: 22020.11303 + dps: 24537.55272 + tps: 22185.40125 } } dps_results: { key: "TestSV-AllItems-KvaldirBattleStandard-59689" value: { - dps: 24282.93214 - tps: 22020.11303 + dps: 24537.55272 + tps: 22185.40125 } } dps_results: { key: "TestSV-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 24272.83285 - tps: 21992.51268 + dps: 24526.90143 + tps: 22156.54885 } } dps_results: { key: "TestSV-AllItems-LastWord-50708" value: { - dps: 25829.56719 - tps: 23403.84377 + dps: 26101.76626 + tps: 23580.38873 } } dps_results: { key: "TestSV-AllItems-LeadenDespair-55816" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-LeadenDespair-56347" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-LeftEyeofRajh-56102" value: { - dps: 25167.7507 - tps: 22805.07554 + dps: 25431.75569 + tps: 22975.85161 } } dps_results: { key: "TestSV-AllItems-LeftEyeofRajh-56427" value: { - dps: 25343.77092 - tps: 22970.36041 + dps: 25609.26107 + tps: 23142.28337 } } dps_results: { key: "TestSV-AllItems-LicensetoSlay-58180" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-Lightning-ChargedBattlegear" value: { - dps: 24605.37008 - tps: 22335.89314 + dps: 24859.85149 + tps: 22500.95291 } } dps_results: { key: "TestSV-AllItems-MagnetiteMirror-55814" value: { - dps: 24211.23631 - tps: 21948.13428 + dps: 24467.2598 + tps: 22114.81409 } } dps_results: { key: "TestSV-AllItems-MagnetiteMirror-56345" value: { - dps: 24211.23631 - tps: 21948.13428 + dps: 24467.2598 + tps: 22114.81409 } } dps_results: { key: "TestSV-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-MarkofKhardros-56132" value: { - dps: 24379.10607 - tps: 22116.00404 + dps: 24635.12956 + tps: 22282.68385 } } dps_results: { key: "TestSV-AllItems-MarkofKhardros-56458" value: { - dps: 24401.08902 - tps: 22137.98699 + dps: 24657.11251 + tps: 22304.6668 } } dps_results: { key: "TestSV-AllItems-MightoftheOcean-55251" value: { - dps: 24453.16444 - tps: 22169.23754 + dps: 24712.05983 + tps: 22337.95626 } } dps_results: { key: "TestSV-AllItems-MightoftheOcean-56285" value: { - dps: 24453.16444 - tps: 22169.23754 + dps: 24712.05983 + tps: 22337.95626 } } dps_results: { key: "TestSV-AllItems-MirrorofBrokenImages-62466" value: { - dps: 24472.37236 - tps: 22206.97878 + dps: 24726.72791 + tps: 22371.91773 } } dps_results: { key: "TestSV-AllItems-MirrorofBrokenImages-62471" value: { - dps: 24472.37236 - tps: 22206.97878 + dps: 24726.72791 + tps: 22371.91773 } } dps_results: { key: "TestSV-AllItems-MoonwellChalice-70142" value: { - dps: 24466.82609 - tps: 22201.90124 + dps: 24721.18164 + tps: 22366.84019 } } dps_results: { key: "TestSV-AllItems-Oremantle'sFavor-61448" value: { - dps: 24388.76352 - tps: 22108.78113 + dps: 24645.14574 + tps: 22275.14444 } } dps_results: { key: "TestSV-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 24365.51623 - tps: 22077.74164 + dps: 24621.41426 + tps: 22243.3688 } } dps_results: { key: "TestSV-AllItems-PorcelainCrab-55237" value: { - dps: 24193.79399 - tps: 21928.86914 + dps: 24448.14955 + tps: 22093.8081 } } dps_results: { key: "TestSV-AllItems-PorcelainCrab-56280" value: { - dps: 24196.02672 - tps: 21931.10187 + dps: 24450.38227 + tps: 22096.04082 } } dps_results: { key: "TestSV-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 25251.99838 - tps: 22844.63904 + dps: 25519.4944 + tps: 23017.16461 } } dps_results: { key: "TestSV-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 25601.7169 - tps: 23179.93851 + dps: 25869.3599 + tps: 23351.99278 } } dps_results: { key: "TestSV-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 25722.81607 - tps: 23270.82798 + dps: 25996.34933 + tps: 23447.56966 } } dps_results: { key: "TestSV-AllItems-Rainsong-55854" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Rainsong-56377" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 25645.6556 - tps: 23237.21033 + dps: 25915.94195 + tps: 23412.52624 } } dps_results: { key: "TestSV-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 25645.6556 - tps: 23237.21033 + dps: 25915.94195 + tps: 23412.52624 } } dps_results: { key: "TestSV-AllItems-RightEyeofRajh-56100" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-RightEyeofRajh-56431" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-RuthlessGladiator'sPursuit" value: { - dps: 25034.31823 - tps: 22645.25263 + dps: 25297.33835 + tps: 22813.99439 } } dps_results: { key: "TestSV-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 24971.24891 - tps: 22623.20364 + dps: 25233.18964 + tps: 22792.4935 } } dps_results: { key: "TestSV-AllItems-SeaStar-55256" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-SeaStar-56290" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Shadowmourne-49623" value: { - dps: 26002.2783 - tps: 23526.66367 + dps: 26276.6885 + tps: 23703.42411 } } dps_results: { key: "TestSV-AllItems-ShardofWoe-60233" value: { - dps: 24231.83852 - tps: 21932.97417 + dps: 24488.8663 + tps: 22099.22777 } } dps_results: { key: "TestSV-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 24232.09063 - tps: 21967.78387 + dps: 24487.7325 + tps: 22134.03388 } } dps_results: { key: "TestSV-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Skardyn'sGrace-56115" value: { - dps: 25232.7544 - tps: 22878.64042 + dps: 25495.3056 + tps: 23048.30038 } } dps_results: { key: "TestSV-AllItems-Skardyn'sGrace-56440" value: { - dps: 25366.97174 - tps: 23003.52219 + dps: 25630.50712 + tps: 23173.79725 } } dps_results: { key: "TestSV-AllItems-Sorrowsong-55879" value: { - dps: 24411.49484 - tps: 22146.20201 + dps: 24665.85039 + tps: 22311.14097 } } dps_results: { key: "TestSV-AllItems-Sorrowsong-56400" value: { - dps: 24440.61017 - tps: 22175.26916 + dps: 24694.96573 + tps: 22340.20812 } } dps_results: { key: "TestSV-AllItems-Soul'sAnguish-66994" value: { - dps: 24453.16444 - tps: 22169.23754 + dps: 24712.05983 + tps: 22337.95626 } } dps_results: { key: "TestSV-AllItems-SoulCasket-58183" value: { - dps: 24472.37236 - tps: 22206.97878 + dps: 24726.72791 + tps: 22371.91773 } } dps_results: { key: "TestSV-AllItems-Stonemother'sKiss-61411" value: { - dps: 24200.09134 - tps: 21932.25215 + dps: 24454.5937 + tps: 22097.28105 } } dps_results: { key: "TestSV-AllItems-StumpofTime-62465" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-StumpofTime-62470" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-SymbioticWorm-59332" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-SymbioticWorm-65048" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 24254.32826 - tps: 21989.27162 + dps: 24508.68382 + tps: 22154.21057 } } dps_results: { key: "TestSV-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 24230.02001 - tps: 21962.80456 + dps: 24484.44493 + tps: 22127.72125 } } dps_results: { key: "TestSV-AllItems-TearofBlood-55819" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-TearofBlood-56351" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 24378.85037 - tps: 22113.61157 + dps: 24633.20592 + tps: 22278.55053 } } dps_results: { key: "TestSV-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 24440.61017 - tps: 22175.26916 + dps: 24694.96573 + tps: 22340.20812 } } dps_results: { key: "TestSV-AllItems-Theralion'sMirror-59519" value: { - dps: 24197.60383 - tps: 21932.67898 + dps: 24451.95938 + tps: 22097.61793 } } dps_results: { key: "TestSV-AllItems-Theralion'sMirror-65105" value: { - dps: 24230.53775 - tps: 21965.03852 + dps: 24484.8933 + tps: 22129.97748 } } dps_results: { key: "TestSV-AllItems-Throngus'sFinger-56121" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Throngus'sFinger-56449" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-Tia'sGrace-55874" value: { - dps: 25398.5277 - tps: 23032.13156 + dps: 25662.56912 + tps: 23202.78072 } } dps_results: { key: "TestSV-AllItems-Tia'sGrace-56394" value: { - dps: 25561.71252 - tps: 23182.43233 + dps: 25826.93993 + tps: 23353.75522 } } dps_results: { key: "TestSV-AllItems-TinyAbominationinaJar-50706" value: { - dps: 24232.71236 - tps: 21959.13594 + dps: 24486.86321 + tps: 22123.52413 } } dps_results: { key: "TestSV-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 23480.33541 - tps: 21290.2539 + dps: 23727.10748 + tps: 21450.60311 } } dps_results: { key: "TestSV-AllItems-UnheededWarning-59520" value: { - dps: 25277.98516 - tps: 22899.96916 + dps: 25543.06588 + tps: 23071.21165 } } dps_results: { key: "TestSV-AllItems-UnquenchableFlame-67101" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-UnsolvableRiddle-62463" value: { - dps: 25586.83639 - tps: 23228.21183 + dps: 25853.08421 + tps: 23401.31381 } } dps_results: { key: "TestSV-AllItems-UnsolvableRiddle-62468" value: { - dps: 25586.83639 - tps: 23228.21183 + dps: 25853.08421 + tps: 23401.31381 } } dps_results: { key: "TestSV-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 24013.95001 - tps: 21740.61739 + dps: 24268.85981 + tps: 21905.84448 } } dps_results: { key: "TestSV-AllItems-VialofStolenMemories-59515" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-VialofStolenMemories-65109" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 25290.84694 - tps: 22932.69111 + dps: 25557.09475 + tps: 23105.79309 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 24433.6546 - tps: 22147.53489 + dps: 24691.34266 + tps: 22314.95856 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 24448.20572 - tps: 22163.88303 + dps: 24706.72818 + tps: 22332.21299 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 24529.99925 - tps: 22230.10248 + dps: 24787.37756 + tps: 22396.72504 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 24489.13573 - tps: 22223.71441 + dps: 24743.49129 + tps: 22388.65336 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 25355.03231 - tps: 22967.64935 + dps: 25621.54227 + tps: 23139.89619 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 24189.15955 - tps: 21924.23469 + dps: 24443.5151 + tps: 22089.17365 } } dps_results: { key: "TestSV-AllItems-ViciousGladiator'sPursuit" value: { - dps: 23771.7815 - tps: 21504.4526 + dps: 24025.15659 + tps: 21668.37339 } } dps_results: { key: "TestSV-AllItems-WitchingHourglass-55787" value: { - dps: 24171.9898 - tps: 21902.20275 + dps: 24426.58085 + tps: 22067.18271 } } dps_results: { key: "TestSV-AllItems-WitchingHourglass-56320" value: { - dps: 24156.36382 - tps: 21880.88146 + dps: 24410.12329 + tps: 22044.80204 } } dps_results: { key: "TestSV-AllItems-World-QuellerFocus-63842" value: { - dps: 24382.3795 - tps: 22117.13486 + dps: 24636.73505 + tps: 22282.07382 } } dps_results: { key: "TestSV-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 24357.12313 - tps: 22094.0211 + dps: 24613.14662 + tps: 22260.70091 } } dps_results: { key: "TestSV-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 24357.12313 - tps: 22094.0211 + dps: 24613.14662 + tps: 22260.70091 } } dps_results: { key: "TestSV-AllItems-Zod'sRepeatingLongbow-50638" value: { - dps: 24453.28715 - tps: 22066.50055 + dps: 24708.74851 + tps: 22227.78785 } } dps_results: { key: "TestSV-Average-Default" value: { - dps: 25928.14427 - tps: 23492.55598 + dps: 26201.67423 + tps: 23669.82062 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-aoe-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 135140.46152 - tps: 99908.20291 + dps: 135464.02164 + tps: 100140.16515 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-aoe-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 22318.04684 - tps: 18160.52184 + dps: 22642.17881 + tps: 18392.31005 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-aoe-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 28315.49242 - tps: 22481.92882 + dps: 28750.36874 + tps: 22793.58777 } } dps_results: { @@ -1375,22 +1375,22 @@ dps_results: { dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-sv-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 28300.49618 - tps: 25983.63713 + dps: 28567.83026 + tps: 26159.54122 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-sv-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 25639.53444 - tps: 23351.31899 + dps: 25905.86968 + tps: 23527.50031 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-sv-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 32064.97834 - tps: 29035.41131 + dps: 32399.99729 + tps: 29256.121 } } dps_results: { @@ -1417,22 +1417,22 @@ dps_results: { dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-sv_advanced-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 30864.90938 - tps: 27904.54918 + dps: 31133.86345 + tps: 28081.9763 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-sv_advanced-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 25731.3254 - tps: 23437.65462 + dps: 26000.02812 + tps: 23615.69266 } } dps_results: { key: "TestSV-Settings-Dwarf-preraid_sv-Basic-sv_advanced-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 32243.63973 - tps: 29203.66129 + dps: 32576.30459 + tps: 29420.13775 } } dps_results: { @@ -1459,22 +1459,22 @@ dps_results: { dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-aoe-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 135877.27275 - tps: 100552.45672 + dps: 136207.28367 + tps: 100785.33227 } } dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-aoe-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 22507.58837 - tps: 18217.05782 + dps: 22837.71181 + tps: 18449.25498 } } dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-aoe-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 28736.00937 - tps: 22677.33442 + dps: 29180.8573 + tps: 22990.71921 } } dps_results: { @@ -1501,22 +1501,22 @@ dps_results: { dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-sv-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 28586.5149 - tps: 26129.952 + dps: 28859.14553 + tps: 26305.56461 } } dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-sv-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 25829.56719 - tps: 23403.84377 + dps: 26101.76626 + tps: 23580.38873 } } dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-sv-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 32483.31926 - tps: 29258.35707 + dps: 32827.24165 + tps: 29480.15509 } } dps_results: { @@ -1543,22 +1543,22 @@ dps_results: { dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-sv_advanced-FullBuffs-5.1yards-LongMultiTarget" value: { - dps: 31201.95591 - tps: 28109.8813 + dps: 31476.62294 + tps: 28287.45079 } } dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-sv_advanced-FullBuffs-5.1yards-LongSingleTarget" value: { - dps: 25919.81278 - tps: 23488.03498 + dps: 26194.20737 + tps: 23666.24072 } } dps_results: { key: "TestSV-Settings-Orc-preraid_sv-Basic-sv_advanced-FullBuffs-5.1yards-ShortSingleTarget" value: { - dps: 32691.95713 - tps: 29452.48127 + dps: 33032.74962 + tps: 29669.10601 } } dps_results: { @@ -1585,7 +1585,7 @@ dps_results: { dps_results: { key: "TestSV-SwitchInFrontOfTarget-Default" value: { - dps: 25673.60777 - tps: 23273.34766 + dps: 25942.49238 + tps: 23447.59669 } } diff --git a/sim/mage/arcane/TestArcane.results b/sim/mage/arcane/TestArcane.results index 7d91b930b6..56be51d08e 100644 --- a/sim/mage/arcane/TestArcane.results +++ b/sim/mage/arcane/TestArcane.results @@ -3,1302 +3,1302 @@ character_stats_results: { value: { final_stats: 637.35 final_stats: 647.85 - final_stats: 6884.71476 - final_stats: 5625.58034 + final_stats: 7024.09953 + final_stats: 5960.42701 final_stats: 211 - final_stats: 8674.13837 + final_stats: 8973.16971 final_stats: 1196.9 - final_stats: 1774.0448 - final_stats: 3442.92824 - final_stats: 3044.44085 + final_stats: 1754.178 + final_stats: 3556.97522 + final_stats: 2396.61024 final_stats: 0 final_stats: 0 - final_stats: 1774.0448 - final_stats: 2386.63346 - final_stats: 3315.5716 + final_stats: 1754.178 + final_stats: 2410.63346 + final_stats: 2656.65928 final_stats: 0 - final_stats: 103647.70507 - final_stats: 8368 + final_stats: 108670.40511 + final_stats: 8479 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 133239.00664 + final_stats: 135190.39342 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 1156.0448 + final_stats: 1712.1668 } } dps_results: { key: "TestArcane-AllItems-AgileShadowspiritDiamond" value: { - dps: 27617.05654 - tps: 27679.93324 + dps: 29457.73962 + tps: 29559.21511 } } dps_results: { key: "TestArcane-AllItems-Althor'sAbacus-50366" value: { - dps: 26680.0079 - tps: 26762.44333 + dps: 28621.59273 + tps: 28793.49585 } } dps_results: { key: "TestArcane-AllItems-Anhuur'sHymnal-55889" value: { - dps: 27285.25242 - tps: 27362.49064 + dps: 28836.0362 + tps: 28965.34027 } } dps_results: { key: "TestArcane-AllItems-Anhuur'sHymnal-56407" value: { - dps: 27614.74273 - tps: 27692.13737 + dps: 28902.8031 + tps: 29032.42748 } } dps_results: { key: "TestArcane-AllItems-AustereShadowspiritDiamond" value: { - dps: 27231.44372 - tps: 27299.60507 + dps: 29047.14316 + tps: 29153.8121 } } dps_results: { key: "TestArcane-AllItems-BaubleofTrueBlood-50726" value: { - dps: 25927.14324 - tps: 26047.55507 - hps: 90.11969 + dps: 27782.62632 + tps: 27933.67081 + hps: 99.81156 } } dps_results: { key: "TestArcane-AllItems-BedrockTalisman-58182" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-BellofEnragingResonance-59326" value: { - dps: 27353.55808 - tps: 27443.05263 - } -} -dps_results: { - key: "TestArcane-AllItems-BellofEnragingResonance-65053" - value: { - dps: 27534.50993 - tps: 27606.81324 + dps: 29354.53659 + tps: 29470.9214 } } dps_results: { key: "TestArcane-AllItems-BindingPromise-67037" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 26096.85845 - tps: 26271.8376 + dps: 28107.92412 + tps: 28276.11382 } } dps_results: { key: "TestArcane-AllItems-BloodofIsiset-55995" value: { - dps: 26262.06342 - tps: 26380.53724 + dps: 28134.65422 + tps: 28275.20958 } } dps_results: { key: "TestArcane-AllItems-BloodofIsiset-56414" value: { - dps: 26304.08879 - tps: 26422.56261 + dps: 28179.59509 + tps: 28320.15046 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 25956.73644 - tps: 26032.17108 + dps: 27844.83273 + tps: 27983.12729 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 27137.43239 - tps: 27184.65408 + dps: 29031.39024 + tps: 29145.95076 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 25958.49618 - tps: 26039.51289 + dps: 27846.05227 + tps: 27995.10055 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 26203.27679 - tps: 26317.01888 + dps: 28177.46207 + tps: 28325.34182 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 25956.21642 - tps: 26073.29151 + dps: 27808.96585 + tps: 27957.18459 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.17359 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 26721.61153 - tps: 26815.05642 + dps: 28597.63703 + tps: 28717.85082 } } dps_results: { key: "TestArcane-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-BottledLightning-66879" value: { - dps: 26872.65792 - tps: 26985.81909 + dps: 28581.82882 + tps: 28757.48958 } } dps_results: { key: "TestArcane-AllItems-BracingShadowspiritDiamond" value: { - dps: 27463.9334 - tps: 26990.71821 + dps: 29318.49883 + tps: 28851.09627 } } dps_results: { key: "TestArcane-AllItems-BurningShadowspiritDiamond" value: { - dps: 27851.83868 - tps: 27907.07874 + dps: 29736.75999 + tps: 29835.87924 } } dps_results: { key: "TestArcane-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 27655.51871 - tps: 27717.72377 + dps: 29585.94111 + tps: 29687.09186 } } dps_results: { key: "TestArcane-AllItems-CoreofRipeness-58184" value: { - dps: 27314.21276 - tps: 27429.09849 + dps: 28939.5521 + tps: 29124.56711 } } dps_results: { key: "TestArcane-AllItems-CorpseTongueCoin-50349" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-CrushingWeight-59506" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-CrushingWeight-65118" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 27159.09875 - tps: 27301.21232 + dps: 29231.55621 + tps: 29407.72556 } } dps_results: { key: "TestArcane-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 27803.97662 - tps: 27881.74943 + dps: 29355.30303 + tps: 29520.86886 } } dps_results: { key: "TestArcane-AllItems-Deathbringer'sWill-50363" value: { - dps: 26116.40064 - tps: 26232.88292 + dps: 27964.96683 + tps: 28103.50254 } } dps_results: { key: "TestArcane-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 27267.83768 - tps: 27335.3765 + dps: 29167.8084 + tps: 29274.18728 } } dps_results: { key: "TestArcane-AllItems-DislodgedForeignObject-50348" value: { - dps: 26679.17271 - tps: 26751.73703 + dps: 28546.40181 + tps: 28690.50063 } } dps_results: { key: "TestArcane-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 27231.44372 - tps: 27299.60507 + dps: 29047.14316 + tps: 29153.8121 } } dps_results: { key: "TestArcane-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 26533.20769 - tps: 26618.10812 + dps: 28323.79944 + tps: 28487.79342 } } dps_results: { key: "TestArcane-AllItems-EmberShadowspiritDiamond" value: { - dps: 27630.9236 - tps: 27719.5004 + dps: 29403.25824 + tps: 29523.17143 } } dps_results: { key: "TestArcane-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 27267.83768 - tps: 27335.3765 + dps: 29167.8084 + tps: 29274.18728 } } dps_results: { key: "TestArcane-AllItems-EssenceoftheCyclone-59473" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-EssenceoftheCyclone-65140" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-EternalShadowspiritDiamond" value: { - dps: 27231.44372 - tps: 27299.60507 + dps: 29047.14316 + tps: 29153.8121 } } dps_results: { key: "TestArcane-AllItems-FallofMortality-59500" value: { - dps: 27159.09875 - tps: 27301.21232 + dps: 29231.55621 + tps: 29407.72556 } } dps_results: { key: "TestArcane-AllItems-FallofMortality-65124" value: { - dps: 27326.25575 - tps: 27476.02574 + dps: 29315.23855 + tps: 29499.16236 } } dps_results: { key: "TestArcane-AllItems-Figurine-DemonPanther-52199" value: { - dps: 26645.97253 - tps: 26745.99659 + dps: 28198.45013 + tps: 28330.85233 } } dps_results: { key: "TestArcane-AllItems-Figurine-DreamOwl-52354" value: { - dps: 27092.11154 - tps: 27220.38717 + dps: 28757.40453 + tps: 28933.84397 } } dps_results: { key: "TestArcane-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 28196.93767 - tps: 28293.68409 + dps: 29870.52859 + tps: 30014.84526 } } dps_results: { key: "TestArcane-AllItems-Figurine-KingofBoars-52351" value: { - dps: 26326.13083 - tps: 26407.14754 + dps: 28238.00207 + tps: 28387.05035 } } dps_results: { key: "TestArcane-AllItems-Firelord'sVestments" value: { - dps: 24413.96988 - tps: 24469.49661 + dps: 26073.76319 + tps: 26123.58553 } } dps_results: { key: "TestArcane-AllItems-FleetShadowspiritDiamond" value: { - dps: 27303.35034 - tps: 27371.51169 + dps: 29123.31234 + tps: 29229.98128 } } dps_results: { key: "TestArcane-AllItems-FluidDeath-58181" value: { - dps: 26824.20316 - tps: 26907.42517 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-ForlornShadowspiritDiamond" value: { - dps: 27463.9334 - tps: 27524.87353 + dps: 29318.49883 + tps: 29422.75391 } } dps_results: { key: "TestArcane-AllItems-FuryofAngerforge-59461" value: { - dps: 26229.00968 - tps: 26342.571 + dps: 28189.1387 + tps: 28337.0402 } } dps_results: { key: "TestArcane-AllItems-GaleofShadows-56138" value: { - dps: 26079.94863 - tps: 26160.37947 + dps: 28058.92123 + tps: 28213.4543 } } dps_results: { key: "TestArcane-AllItems-GaleofShadows-56462" value: { - dps: 26146.94071 - tps: 26244.86333 + dps: 28042.19788 + tps: 28188.54735 } } dps_results: { key: "TestArcane-AllItems-GearDetector-61462" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-GlowingTwilightScale-54589" value: { - dps: 26691.12535 - tps: 26787.08084 + dps: 28638.84297 + tps: 28810.56997 } } dps_results: { key: "TestArcane-AllItems-GraceoftheHerald-55266" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-GraceoftheHerald-56295" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-HarmlightToken-63839" value: { - dps: 26868.99121 - tps: 26965.13073 + dps: 28819.07073 + tps: 28992.92844 } } dps_results: { key: "TestArcane-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-HeartofIgnacious-59514" value: { - dps: 27040.17113 - tps: 27093.35359 + dps: 29261.923 + tps: 29382.88877 } } dps_results: { key: "TestArcane-AllItems-HeartofIgnacious-65110" value: { - dps: 27120.77352 - tps: 27183.45465 + dps: 29437.60775 + tps: 29546.7569 } } dps_results: { key: "TestArcane-AllItems-HeartofRage-59224" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-HeartofRage-65072" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-HeartofSolace-55868" value: { - dps: 26079.94863 - tps: 26160.37947 + dps: 28058.92123 + tps: 28213.4543 } } dps_results: { key: "TestArcane-AllItems-HeartofSolace-56393" value: { - dps: 26146.94071 - tps: 26244.86333 + dps: 28042.19788 + tps: 28188.54735 } } dps_results: { key: "TestArcane-AllItems-HeartofThunder-55845" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-HeartofThunder-56370" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-HeartoftheVile-66969" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Heartpierce-50641" value: { - dps: 27655.51871 - tps: 27717.72377 + dps: 29736.75999 + tps: 29835.87924 } } dps_results: { key: "TestArcane-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 27267.83768 - tps: 27335.3765 + dps: 29167.8084 + tps: 29274.18728 } } dps_results: { key: "TestArcane-AllItems-ImpatienceofYouth-62464" value: { - dps: 26372.56889 - tps: 26453.58561 + dps: 28287.51152 + tps: 28436.5598 } } dps_results: { key: "TestArcane-AllItems-ImpatienceofYouth-62469" value: { - dps: 26372.56889 - tps: 26453.58561 + dps: 28287.51152 + tps: 28436.5598 } } dps_results: { key: "TestArcane-AllItems-ImpetuousQuery-55881" value: { - dps: 26262.06342 - tps: 26380.53724 + dps: 28134.65422 + tps: 28275.20958 } } dps_results: { key: "TestArcane-AllItems-ImpetuousQuery-56406" value: { - dps: 26304.08879 - tps: 26422.56261 + dps: 28179.59509 + tps: 28320.15046 } } dps_results: { key: "TestArcane-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 26605.55076 - tps: 26767.55552 + dps: 28621.23172 + tps: 28776.59745 } } dps_results: { key: "TestArcane-AllItems-JarofAncientRemedies-59354" value: { - dps: 26161.64959 - tps: 26319.2247 + dps: 27903.7127 + tps: 28097.88161 } } dps_results: { key: "TestArcane-AllItems-JarofAncientRemedies-65029" value: { - dps: 26251.83978 - tps: 26402.09285 + dps: 27933.01028 + tps: 28131.58669 } } dps_results: { key: "TestArcane-AllItems-JujuofNimbleness-63840" value: { - dps: 26096.85845 - tps: 26271.8376 + dps: 28107.92412 + tps: 28276.11382 } } dps_results: { key: "TestArcane-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 26581.84189 - tps: 26681.6236 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 26841.3229 - tps: 26932.86899 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-KvaldirBattleStandard-59685" value: { - dps: 26041.01861 - tps: 26154.99677 + dps: 27845.91091 + tps: 27987.60061 } } dps_results: { key: "TestArcane-AllItems-KvaldirBattleStandard-59689" value: { - dps: 26041.01861 - tps: 26154.99677 + dps: 27845.91091 + tps: 27987.60061 } } dps_results: { key: "TestArcane-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 26034.97665 - tps: 26139.87197 + dps: 28032.78587 + tps: 28162.32583 } } dps_results: { key: "TestArcane-AllItems-LeadenDespair-55816" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-LeadenDespair-56347" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-LeftEyeofRajh-56102" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-LeftEyeofRajh-56427" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-LicensetoSlay-58180" value: { - dps: 26824.20316 - tps: 26907.42517 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-MagnetiteMirror-55814" value: { - dps: 25816.41481 - tps: 25991.39396 + dps: 27809.43086 + tps: 27977.62056 } } dps_results: { key: "TestArcane-AllItems-MagnetiteMirror-56345" value: { - dps: 25816.41481 - tps: 25991.39396 + dps: 27809.43086 + tps: 27977.62056 } } dps_results: { key: "TestArcane-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 25956.37026 - tps: 26073.43141 + dps: 27809.21474 + tps: 27957.43063 } } dps_results: { key: "TestArcane-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 25956.37026 - tps: 26073.43141 + dps: 27809.21474 + tps: 27957.43063 } } dps_results: { key: "TestArcane-AllItems-MarkofKhardros-56132" value: { - dps: 26222.27885 - tps: 26397.258 + dps: 28232.5223 + tps: 28400.712 } } dps_results: { key: "TestArcane-AllItems-MarkofKhardros-56458" value: { - dps: 26275.16701 - tps: 26450.14615 + dps: 28287.12326 + tps: 28455.31296 } } dps_results: { key: "TestArcane-AllItems-MightoftheOcean-55251" value: { - dps: 26211.03196 - tps: 26349.27777 + dps: 28012.69945 + tps: 28180.77667 } } dps_results: { key: "TestArcane-AllItems-MightoftheOcean-56285" value: { - dps: 26475.9795 - tps: 26612.9545 + dps: 28012.69945 + tps: 28180.77667 } } dps_results: { key: "TestArcane-AllItems-MirrorofBrokenImages-62466" value: { - dps: 26349.93465 - tps: 26468.40847 + dps: 28228.6215 + tps: 28369.17686 } } dps_results: { key: "TestArcane-AllItems-MirrorofBrokenImages-62471" value: { - dps: 26349.93465 - tps: 26468.40847 + dps: 28228.6215 + tps: 28369.17686 } } dps_results: { key: "TestArcane-AllItems-MoonwellChalice-70142" value: { - dps: 28080.8804 - tps: 28195.95253 + dps: 29883.35431 + tps: 30063.42707 } } dps_results: { key: "TestArcane-AllItems-Oremantle'sFavor-61448" value: { - dps: 26382.92232 - tps: 26472.02478 + dps: 28331.06018 + tps: 28491.34885 } } dps_results: { key: "TestArcane-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 26118.62679 - tps: 26235.13083 + dps: 27970.06971 + tps: 28108.34938 } } dps_results: { key: "TestArcane-AllItems-PorcelainCrab-55237" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-PorcelainCrab-56280" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 27231.44372 - tps: 27299.60507 + dps: 29047.14316 + tps: 29153.8121 } } dps_results: { key: "TestArcane-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Rainsong-55854" value: { - dps: 25955.55492 - tps: 26072.68995 + dps: 27807.8956 + tps: 27956.12661 } } dps_results: { key: "TestArcane-AllItems-Rainsong-56377" value: { - dps: 25956.09335 - tps: 26073.17959 + dps: 27808.76673 + tps: 27956.98776 } } dps_results: { key: "TestArcane-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 27617.05654 - tps: 27679.93324 + dps: 29457.73962 + tps: 29559.21511 } } dps_results: { key: "TestArcane-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 27575.5207 - tps: 27642.71856 + dps: 29458.55537 + tps: 29560.01806 } } dps_results: { key: "TestArcane-AllItems-RightEyeofRajh-56100" value: { - dps: 26577.44131 - tps: 26668.38766 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-RightEyeofRajh-56431" value: { - dps: 26841.3229 - tps: 26932.86899 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-SeaStar-55256" value: { - dps: 26552.81387 - tps: 26616.65335 + dps: 28416.23479 + tps: 28550.65714 } } dps_results: { key: "TestArcane-AllItems-SeaStar-56290" value: { - dps: 27065.1899 - tps: 27114.28359 + dps: 28931.68348 + tps: 29051.14704 } } dps_results: { key: "TestArcane-AllItems-ShardofWoe-60233" value: { - dps: 27714.56255 - tps: 27807.22579 + dps: 29758.59723 + tps: 29806.54811 } } dps_results: { key: "TestArcane-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Skardyn'sGrace-56115" value: { - dps: 26441.05553 - tps: 26522.07224 + dps: 28384.4839 + tps: 28533.53218 } } dps_results: { key: "TestArcane-AllItems-Skardyn'sGrace-56440" value: { - dps: 26504.07848 - tps: 26585.09519 + dps: 28454.6344 + tps: 28603.68268 } } dps_results: { key: "TestArcane-AllItems-Sorrowsong-55879" value: { - dps: 26844.01808 - tps: 26942.66619 + dps: 28758.56961 + tps: 28877.03155 } } dps_results: { key: "TestArcane-AllItems-Sorrowsong-56400" value: { - dps: 26963.30608 - tps: 27059.35797 + dps: 28886.34675 + tps: 29001.9155 } } dps_results: { key: "TestArcane-AllItems-Soul'sAnguish-66994" value: { - dps: 26344.57336 - tps: 26480.28672 + dps: 28012.69945 + tps: 28180.77667 } } dps_results: { key: "TestArcane-AllItems-SoulCasket-58183" value: { - dps: 27885.6023 - tps: 27923.79716 + dps: 29809.92167 + tps: 29915.27033 } } dps_results: { key: "TestArcane-AllItems-Stonemother'sKiss-61411" value: { - dps: 26978.24649 - tps: 27065.80449 + dps: 29017.74298 + tps: 29190.19148 + } +} +dps_results: { + key: "TestArcane-AllItems-StumpofTime-62465" + value: { + dps: 28999.88208 + tps: 29118.45749 } } dps_results: { key: "TestArcane-AllItems-StumpofTime-62470" value: { - dps: 27678.04746 - tps: 27742.93296 + dps: 28999.14894 + tps: 29123.34953 } } dps_results: { key: "TestArcane-AllItems-SymbioticWorm-59332" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-SymbioticWorm-65048" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 27117.31792 - tps: 27229.9134 + dps: 29131.90288 + tps: 29308.92081 } } dps_results: { key: "TestArcane-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-TearofBlood-55819" value: { - dps: 26714.90988 - tps: 26811.43671 + dps: 28626.1669 + tps: 28797.45223 } } dps_results: { key: "TestArcane-AllItems-TearofBlood-56351" value: { - dps: 27188.61757 - tps: 27340.49834 + dps: 28990.73352 + tps: 29161.71242 } } dps_results: { key: "TestArcane-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 26866.95503 - tps: 26969.45763 + dps: 28735.42718 + tps: 28861.96944 } } dps_results: { key: "TestArcane-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 27176.89677 - tps: 27271.94346 + dps: 29070.12165 + tps: 29186.64631 } } dps_results: { key: "TestArcane-AllItems-Theralion'sMirror-59519" value: { - dps: 27753.22999 - tps: 27895.34356 + dps: 29848.02345 + tps: 30024.1928 } } dps_results: { key: "TestArcane-AllItems-Throngus'sFinger-56121" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Throngus'sFinger-56449" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-Tia'sGrace-55874" value: { - dps: 26262.06342 - tps: 26380.53724 + dps: 28134.65422 + tps: 28275.20958 } } dps_results: { key: "TestArcane-AllItems-Tia'sGrace-56394" value: { - dps: 26304.08879 - tps: 26422.56261 + dps: 28179.59509 + tps: 28320.15046 } } dps_results: { key: "TestArcane-AllItems-TinyAbominationinaJar-50706" value: { - dps: 26210.74135 - tps: 26290.12553 + dps: 27952.5726 + tps: 28101.79147 } } dps_results: { key: "TestArcane-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 27268.97241 - tps: 27458.37027 + dps: 29132.0993 + tps: 29336.22517 } } dps_results: { key: "TestArcane-AllItems-UnheededWarning-59520" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-UnquenchableFlame-67101" value: { - dps: 25959.29207 - tps: 26040.16382 + dps: 27807.36274 + tps: 27957.01024 } } dps_results: { key: "TestArcane-AllItems-UnsolvableRiddle-62463" value: { - dps: 26372.56889 - tps: 26453.58561 + dps: 28287.51152 + tps: 28436.5598 } } dps_results: { key: "TestArcane-AllItems-UnsolvableRiddle-62468" value: { - dps: 26372.56889 - tps: 26453.58561 + dps: 28287.51152 + tps: 28436.5598 } } dps_results: { key: "TestArcane-AllItems-UnsolvableRiddle-68709" value: { - dps: 26372.56889 - tps: 26453.58561 + dps: 28287.51152 + tps: 28436.5598 } } dps_results: { key: "TestArcane-AllItems-VialofStolenMemories-59515" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-VialofStolenMemories-65109" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 25958.49618 - tps: 26039.51289 + dps: 27846.05227 + tps: 27995.10055 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 27203.35974 - tps: 27248.69158 + dps: 29097.67558 + tps: 29210.30751 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 25958.49618 - tps: 26039.51289 + dps: 27846.05227 + tps: 27995.10055 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 26824.20316 - tps: 26907.42517 + dps: 28142.95158 + tps: 28286.19565 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 26301.74153 - tps: 26398.98256 + dps: 28070.37074 + tps: 28203.89528 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 26229.92146 - tps: 26342.70811 + dps: 28207.68481 + tps: 28355.65157 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 26374.13107 - tps: 26492.6049 + dps: 28254.49655 + tps: 28395.05191 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 25941.1424 - tps: 26059.61622 + dps: 27791.46937 + tps: 27932.02473 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 25941.25733 - tps: 26059.73115 + dps: 27791.46937 + tps: 27932.17359 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 26898.78448 - tps: 26994.50613 + dps: 28777.28475 + tps: 28897.74545 } } dps_results: { key: "TestArcane-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 25941.25733 - tps: 26059.73115 + dps: 27791.46937 + tps: 27933.14673 } } dps_results: { key: "TestArcane-AllItems-WitchingHourglass-55787" value: { - dps: 26779.56993 - tps: 26864.96328 + dps: 28819.59133 + tps: 28977.98672 } } dps_results: { key: "TestArcane-AllItems-WitchingHourglass-56320" value: { - dps: 27366.64405 - tps: 27486.73137 + dps: 29363.64067 + tps: 29540.50953 } } dps_results: { key: "TestArcane-AllItems-World-QuellerFocus-63842" value: { - dps: 26240.99438 - tps: 26322.0111 + dps: 28147.23475 + tps: 28296.28303 } } dps_results: { key: "TestArcane-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 26169.3907 - tps: 26344.36985 + dps: 28177.92133 + tps: 28346.11103 } } dps_results: { key: "TestArcane-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 26169.3907 - tps: 26344.36985 + dps: 28177.92133 + tps: 28346.11103 } } dps_results: { key: "TestArcane-Average-Default" value: { - dps: 28016.85308 - tps: 28090.23594 + dps: 30224.88133 + tps: 30322.31207 } } dps_results: { key: "TestArcane-Settings-Troll-p1_arcane-Arcane-arcane-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 27636.81704 - tps: 43221.35901 + dps: 29721.55395 + tps: 45793.44699 } } dps_results: { key: "TestArcane-Settings-Troll-p1_arcane-Arcane-arcane-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 27655.51871 - tps: 27717.72377 + dps: 29736.75999 + tps: 29835.87924 } } dps_results: { key: "TestArcane-Settings-Troll-p1_arcane-Arcane-arcane-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 38570.7001 - tps: 38378.28535 + dps: 44146.63617 + tps: 43904.85865 } } dps_results: { key: "TestArcane-Settings-Troll-p1_arcane-Arcane-arcane-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 17047.16409 - tps: 30494.29533 + dps: 18709.12012 + tps: 32993.98271 } } dps_results: { key: "TestArcane-Settings-Troll-p1_arcane-Arcane-arcane-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 17047.16409 - tps: 17166.6523 + dps: 18709.12012 + tps: 18840.42899 } } dps_results: { key: "TestArcane-Settings-Troll-p1_arcane-Arcane-arcane-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 22545.13825 - tps: 22551.76366 + dps: 25143.31179 + tps: 25139.85277 } } dps_results: { key: "TestArcane-SwitchInFrontOfTarget-Default" value: { - dps: 27655.51871 - tps: 27717.72377 + dps: 29736.75999 + tps: 29835.87924 } } diff --git a/sim/mage/fire/TestFire.results b/sim/mage/fire/TestFire.results index f9679400c4..cc8ba4ea14 100644 --- a/sim/mage/fire/TestFire.results +++ b/sim/mage/fire/TestFire.results @@ -3,1302 +3,1302 @@ character_stats_results: { value: { final_stats: 637.35 final_stats: 647.85 - final_stats: 6971.59953 - final_stats: 4949.43451 + final_stats: 6971.42985 + final_stats: 5404.74937 final_stats: 211 - final_stats: 8049.17796 + final_stats: 8550.0243 final_stats: 1196.9 - final_stats: 1705.178 - final_stats: 4348.26586 - final_stats: 2771.89074 + final_stats: 1749.178 + final_stats: 3753.72036 + final_stats: 3093.10835 final_stats: 0 final_stats: 0 - final_stats: 1705.178 - final_stats: 3473.80026 - final_stats: 3038.35928 + final_stats: 1749.178 + final_stats: 2756.81146 + final_stats: 3365.0716 final_stats: 0 - final_stats: 93505.51761 + final_stats: 100335.24051 final_stats: 8479 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 134455.39342 + final_stats: 134453.0179 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 final_stats: 0 - final_stats: 851 + final_stats: 829 } } dps_results: { key: "TestFire-AllItems-AgileShadowspiritDiamond" value: { - dps: 30360.94354 - tps: 29819.24529 + dps: 31250.3906 + tps: 30602.0099 } } dps_results: { key: "TestFire-AllItems-Althor'sAbacus-50366" value: { - dps: 28673.28246 - tps: 28141.95652 + dps: 28991.67634 + tps: 28375.61395 } } dps_results: { key: "TestFire-AllItems-Anhuur'sHymnal-55889" value: { - dps: 29048.33309 - tps: 28498.41506 + dps: 29533.21912 + tps: 28911.58649 } } dps_results: { key: "TestFire-AllItems-Anhuur'sHymnal-56407" value: { - dps: 29172.16853 - tps: 28623.40556 + dps: 29620.75605 + tps: 28996.11115 } } dps_results: { key: "TestFire-AllItems-AustereShadowspiritDiamond" value: { - dps: 29775.23404 - tps: 29241.15233 + dps: 30597.71293 + tps: 29959.46384 } } dps_results: { key: "TestFire-AllItems-BaubleofTrueBlood-50726" value: { - dps: 27831.4932 - tps: 27307.23974 - hps: 92.98582 + dps: 28173.43913 + tps: 27595.50275 + hps: 102.52049 } } dps_results: { key: "TestFire-AllItems-BedrockTalisman-58182" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BellofEnragingResonance-59326" value: { - dps: 29660.76603 - tps: 29109.01164 + dps: 30057.26074 + tps: 29464.74392 + } +} +dps_results: { + key: "TestFire-AllItems-BellofEnragingResonance-65053" + value: { + dps: 30238.87966 + tps: 29639.51353 } } dps_results: { key: "TestFire-AllItems-BindingPromise-67037" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 28124.80065 - tps: 27601.8501 + dps: 28340.70259 + tps: 27750.38863 } } dps_results: { key: "TestFire-AllItems-BloodofIsiset-55995" value: { - dps: 28169.88246 - tps: 27646.93192 + dps: 28408.97437 + tps: 27815.89615 } } dps_results: { key: "TestFire-AllItems-BloodofIsiset-56414" value: { - dps: 28172.58711 - tps: 27649.57364 + dps: 28451.76202 + tps: 27858.6838 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 28995.11851 - tps: 28422.76902 + dps: 29204.81706 + tps: 28594.64168 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 28154.51341 - tps: 27631.82749 + dps: 28703.35934 + tps: 28133.21452 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 28813.6924 - tps: 28265.10284 + dps: 29062.11 + tps: 28445.01395 } } dps_results: { key: "TestFire-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-BottledLightning-66879" value: { - dps: 28973.53268 - tps: 28437.29144 + dps: 29179.40695 + tps: 28572.16246 } } dps_results: { key: "TestFire-AllItems-BracingShadowspiritDiamond" value: { - dps: 30010.66279 - tps: 28884.99026 + dps: 30798.62565 + tps: 29554.39712 } } dps_results: { key: "TestFire-AllItems-BurningShadowspiritDiamond" value: { - dps: 30601.6579 - tps: 30053.6753 + dps: 31490.18855 + tps: 30838.03779 } } dps_results: { key: "TestFire-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 30399.02935 - tps: 29856.05583 + dps: 31337.4631 + tps: 30688.95319 } } dps_results: { key: "TestFire-AllItems-CoreofRipeness-58184" value: { - dps: 29098.03729 - tps: 28553.88046 + dps: 29646.8839 + tps: 29014.74579 } } dps_results: { key: "TestFire-AllItems-CorpseTongueCoin-50349" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-CrushingWeight-59506" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-CrushingWeight-65118" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 29098.03729 - tps: 28553.88046 + dps: 29646.8839 + tps: 29014.74579 } } dps_results: { key: "TestFire-AllItems-Deathbringer'sWill-50363" value: { - dps: 27993.346 - tps: 27473.40949 + dps: 28636.84021 + tps: 28059.90979 } } dps_results: { key: "TestFire-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 29779.99312 - tps: 29243.84826 + dps: 30701.29962 + tps: 30062.80826 } } dps_results: { key: "TestFire-AllItems-DislodgedForeignObject-50348" value: { - dps: 28688.68573 - tps: 28162.71663 + dps: 29283.63231 + tps: 28705.63774 } } dps_results: { key: "TestFire-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 29775.23404 - tps: 29241.15233 + dps: 30597.71293 + tps: 29959.46384 } } dps_results: { key: "TestFire-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 28541.90292 - tps: 28004.37692 + dps: 28481.04856 + tps: 27882.26837 } } dps_results: { key: "TestFire-AllItems-EmberShadowspiritDiamond" value: { - dps: 30145.28942 - tps: 29609.67475 + dps: 30798.62565 + tps: 30155.52622 } } dps_results: { key: "TestFire-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 29779.99312 - tps: 29243.84826 + dps: 30701.29962 + tps: 30062.80826 } } dps_results: { key: "TestFire-AllItems-EssenceoftheCyclone-59473" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-EssenceoftheCyclone-65140" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-EternalShadowspiritDiamond" value: { - dps: 29775.23404 - tps: 29241.15233 + dps: 30597.71293 + tps: 29959.46384 } } dps_results: { key: "TestFire-AllItems-FallofMortality-59500" value: { - dps: 29098.03729 - tps: 28553.88046 + dps: 29646.8839 + tps: 29014.74579 } } dps_results: { key: "TestFire-AllItems-FallofMortality-65124" value: { - dps: 29138.15569 - tps: 28590.74511 + dps: 29864.91558 + tps: 29227.15711 } } dps_results: { key: "TestFire-AllItems-Figurine-DemonPanther-52199" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-Figurine-DreamOwl-52354" value: { - dps: 28988.93361 - tps: 28447.16726 + dps: 29589.65515 + tps: 28961.4951 } } dps_results: { key: "TestFire-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 30240.30475 - tps: 29652.83053 + dps: 30662.19479 + tps: 30016.32446 } } dps_results: { key: "TestFire-AllItems-Figurine-KingofBoars-52351" value: { - dps: 28172.58711 - tps: 27649.57364 + dps: 28451.76202 + tps: 27858.6838 } } dps_results: { key: "TestFire-AllItems-Firelord'sVestments" value: { - dps: 26655.8886 - tps: 26179.29018 + dps: 26785.11248 + tps: 26336.89881 } } dps_results: { key: "TestFire-AllItems-FleetShadowspiritDiamond" value: { - dps: 29852.89799 - tps: 29318.81627 + dps: 30673.29942 + tps: 30035.05033 } } dps_results: { key: "TestFire-AllItems-FluidDeath-58181" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-ForlornShadowspiritDiamond" value: { - dps: 30010.66279 - tps: 29470.24996 + dps: 30798.62565 + tps: 30155.5475 } } dps_results: { key: "TestFire-AllItems-FuryofAngerforge-59461" value: { - dps: 28226.12584 - tps: 27698.30811 + dps: 28717.04024 + tps: 28146.02719 } } dps_results: { key: "TestFire-AllItems-GaleofShadows-56138" value: { - dps: 29090.57252 - tps: 28551.46998 + dps: 29643.98767 + tps: 29067.32569 } } dps_results: { key: "TestFire-AllItems-GaleofShadows-56462" value: { - dps: 29008.40098 - tps: 28458.5738 + dps: 29702.61336 + tps: 29128.24772 } } dps_results: { key: "TestFire-AllItems-GearDetector-61462" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-GlowingTwilightScale-54589" value: { - dps: 28673.58612 - tps: 28141.26008 + dps: 29085.74809 + tps: 28468.29303 } } dps_results: { key: "TestFire-AllItems-GraceoftheHerald-55266" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-GraceoftheHerald-56295" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-HarmlightToken-63839" value: { - dps: 28818.4707 - tps: 28282.19007 + dps: 29353.32518 + tps: 28726.79099 } } dps_results: { key: "TestFire-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-HeartofIgnacious-59514" value: { - dps: 29623.18032 - tps: 29081.88491 + dps: 30316.73336 + tps: 29724.66054 } } dps_results: { key: "TestFire-AllItems-HeartofIgnacious-65110" value: { - dps: 29791.11003 - tps: 29245.94273 + dps: 30755.44123 + tps: 30159.60934 } } dps_results: { key: "TestFire-AllItems-HeartofRage-59224" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-HeartofRage-65072" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-HeartofSolace-55868" value: { - dps: 28283.5305 - tps: 27760.23769 + dps: 28798.20282 + tps: 28242.31766 } } dps_results: { key: "TestFire-AllItems-HeartofSolace-56393" value: { - dps: 28089.34617 - tps: 27557.58162 + dps: 28901.63419 + tps: 28351.98837 } } dps_results: { key: "TestFire-AllItems-HeartofThunder-55845" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-HeartofThunder-56370" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-HeartoftheVile-66969" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Heartpierce-50641" value: { - dps: 30399.02935 - tps: 29856.05583 + dps: 31337.4631 + tps: 30688.95319 } } dps_results: { key: "TestFire-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 29779.99312 - tps: 29243.84826 + dps: 30701.29962 + tps: 30062.80826 } } dps_results: { key: "TestFire-AllItems-ImpatienceofYouth-62464" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-ImpatienceofYouth-62469" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-ImpetuousQuery-55881" value: { - dps: 28169.88246 - tps: 27646.93192 + dps: 28408.97437 + tps: 27815.89615 } } dps_results: { key: "TestFire-AllItems-ImpetuousQuery-56406" value: { - dps: 28172.58711 - tps: 27649.57364 + dps: 28451.76202 + tps: 27858.6838 } } dps_results: { key: "TestFire-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 28801.52424 - tps: 28256.07514 + dps: 28958.92556 + tps: 28356.17691 } } dps_results: { key: "TestFire-AllItems-JarofAncientRemedies-59354" value: { - dps: 27694.99831 - tps: 27191.69612 + dps: 28310.15844 + tps: 27736.36673 } } dps_results: { key: "TestFire-AllItems-JarofAncientRemedies-65029" value: { - dps: 27698.1624 - tps: 27195.19195 + dps: 28310.15844 + tps: 27739.16673 } } dps_results: { key: "TestFire-AllItems-JujuofNimbleness-63840" value: { - dps: 28124.80065 - tps: 27601.8501 + dps: 28340.70259 + tps: 27750.38863 } } dps_results: { key: "TestFire-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-KvaldirBattleStandard-59685" value: { - dps: 28166.73809 - tps: 27653.17338 + dps: 28530.62006 + tps: 27976.60236 } } dps_results: { key: "TestFire-AllItems-KvaldirBattleStandard-59689" value: { - dps: 28166.73809 - tps: 27653.17338 + dps: 28530.62006 + tps: 27976.60236 } } dps_results: { key: "TestFire-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 28271.95511 - tps: 27758.1021 + dps: 28100.05 + tps: 27547.85936 } } dps_results: { key: "TestFire-AllItems-LeadenDespair-55816" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-LeadenDespair-56347" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-LeftEyeofRajh-56102" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-LeftEyeofRajh-56427" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-LicensetoSlay-58180" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-MagnetiteMirror-55814" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-MagnetiteMirror-56345" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-MarkofKhardros-56132" value: { - dps: 28332.08756 - tps: 27807.0143 + dps: 28507.39046 + tps: 27914.67667 } } dps_results: { key: "TestFire-AllItems-MarkofKhardros-56458" value: { - dps: 28397.23574 - tps: 27872.16248 + dps: 28566.5855 + tps: 27973.87171 } } dps_results: { key: "TestFire-AllItems-MightoftheOcean-55251" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-MightoftheOcean-56285" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-MirrorofBrokenImages-62466" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-MirrorofBrokenImages-62471" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-MoonwellChalice-70142" value: { - dps: 29994.83144 - tps: 29447.68626 + dps: 30360.34936 + tps: 29725.60734 } } dps_results: { key: "TestFire-AllItems-Oremantle'sFavor-61448" value: { - dps: 28567.04897 - tps: 28033.5593 + dps: 28829.85913 + tps: 28231.52664 } } dps_results: { key: "TestFire-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 28963.31969 - tps: 28432.08804 + dps: 29508.1066 + tps: 28913.01228 } } dps_results: { key: "TestFire-AllItems-PorcelainCrab-55237" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-PorcelainCrab-56280" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 29775.23404 - tps: 29241.15233 + dps: 30597.71293 + tps: 29959.46384 } } dps_results: { key: "TestFire-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Rainsong-55854" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Rainsong-56377" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 30360.94354 - tps: 29819.24529 + dps: 31250.3906 + tps: 30602.0099 } } dps_results: { key: "TestFire-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 30360.94354 - tps: 29819.24529 + dps: 31250.3906 + tps: 30602.0099 } } dps_results: { key: "TestFire-AllItems-RightEyeofRajh-56100" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-RightEyeofRajh-56431" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-SeaStar-55256" value: { - dps: 28380.30143 - tps: 27830.91172 + dps: 28590.04068 + tps: 27989.78402 } } dps_results: { key: "TestFire-AllItems-SeaStar-56290" value: { - dps: 28918.59708 - tps: 28349.21755 + dps: 29127.93225 + tps: 28519.07199 } } dps_results: { key: "TestFire-AllItems-ShardofWoe-60233" value: { - dps: 28606.12131 - tps: 28079.89314 + dps: 29179.66298 + tps: 28589.48159 } } dps_results: { key: "TestFire-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Skardyn'sGrace-56115" value: { - dps: 28354.11053 - tps: 27828.6154 + dps: 28507.18218 + tps: 27915.04521 } } dps_results: { key: "TestFire-AllItems-Skardyn'sGrace-56440" value: { - dps: 28436.2729 - tps: 27911.44277 + dps: 28568.25751 + tps: 27976.12054 } } dps_results: { key: "TestFire-AllItems-Sorrowsong-55879" value: { - dps: 28963.1429 - tps: 28427.28667 + dps: 29186.69293 + tps: 28576.47869 } } dps_results: { key: "TestFire-AllItems-Sorrowsong-56400" value: { - dps: 29077.3979 - tps: 28539.83302 + dps: 29332.96161 + tps: 28720.42284 } } dps_results: { key: "TestFire-AllItems-Soul'sAnguish-66994" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-SoulCasket-58183" value: { - dps: 29778.53995 - tps: 29193.41944 + dps: 29972.47336 + tps: 29355.15684 } } dps_results: { key: "TestFire-AllItems-Stonemother'sKiss-61411" value: { - dps: 29123.91323 - tps: 28586.71016 + dps: 29672.03051 + tps: 29051.85129 } } dps_results: { key: "TestFire-AllItems-StumpofTime-62465" value: { - dps: 29024.09955 - tps: 28473.70962 + dps: 29713.40029 + tps: 29101.3594 } } dps_results: { key: "TestFire-AllItems-StumpofTime-62470" value: { - dps: 29132.91695 - tps: 28582.67217 + dps: 29727.17252 + tps: 29125.38407 } } dps_results: { key: "TestFire-AllItems-SymbioticWorm-59332" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-SymbioticWorm-65048" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 29104.79618 - tps: 28566.79332 + dps: 29571.06819 + tps: 28947.91858 } } dps_results: { key: "TestFire-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-TearofBlood-55819" value: { - dps: 28690.39317 - tps: 28154.50565 + dps: 29210.6771 + tps: 28584.47307 } } dps_results: { key: "TestFire-AllItems-TearofBlood-56351" value: { - dps: 28988.93361 - tps: 28447.16726 + dps: 29589.65515 + tps: 28961.4951 } } dps_results: { key: "TestFire-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 28896.49389 - tps: 28361.7396 + dps: 29167.4252 + tps: 28555.43684 } } dps_results: { key: "TestFire-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 29221.31507 - tps: 28679.98691 + dps: 29578.80504 + tps: 28956.23226 } } dps_results: { key: "TestFire-AllItems-Theralion'sMirror-59519" value: { - dps: 29731.98392 - tps: 29190.16365 - } -} -dps_results: { - key: "TestFire-AllItems-Theralion'sMirror-65105" - value: { - dps: 29968.20227 - tps: 29421.16129 + dps: 30193.89287 + tps: 29560.89426 } } dps_results: { key: "TestFire-AllItems-Throngus'sFinger-56121" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Throngus'sFinger-56449" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-Tia'sGrace-55874" value: { - dps: 28169.88246 - tps: 27646.93192 + dps: 28408.97437 + tps: 27815.89615 } } dps_results: { key: "TestFire-AllItems-Tia'sGrace-56394" value: { - dps: 28172.58711 - tps: 27649.57364 + dps: 28451.76202 + tps: 27858.6838 } } dps_results: { key: "TestFire-AllItems-TinyAbominationinaJar-50706" value: { - dps: 28008.23674 - tps: 27481.26941 + dps: 28596.4935 + tps: 28008.70912 } } dps_results: { key: "TestFire-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 29300.74788 - tps: 28768.50502 + dps: 29924.21989 + tps: 29314.03737 } } dps_results: { key: "TestFire-AllItems-UnheededWarning-59520" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-UnquenchableFlame-67101" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-UnsolvableRiddle-62463" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-UnsolvableRiddle-62468" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-UnsolvableRiddle-68709" value: { - dps: 28221.61285 - tps: 27698.59938 + dps: 28484.22416 + tps: 27890.89609 } } dps_results: { key: "TestFire-AllItems-VialofStolenMemories-59515" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-VialofStolenMemories-65109" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 29063.58506 - tps: 28488.57824 + dps: 29270.02699 + tps: 28658.80836 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 28237.3923 - tps: 27707.35888 + dps: 28696.49527 + tps: 28108.15731 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 28356.39241 - tps: 27828.69416 + dps: 28937.22164 + tps: 28384.77511 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 28347.91559 - tps: 27821.81827 + dps: 28703.45525 + tps: 28132.7016 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 28247.48754 - tps: 27724.47408 + dps: 28508.82894 + tps: 27915.50087 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 28808.61164 - tps: 28259.23853 + dps: 29103.77655 + tps: 28483.31111 } } dps_results: { key: "TestFire-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 27828.56827 - tps: 27305.65691 + dps: 28111.21752 + tps: 27531.85383 } } dps_results: { key: "TestFire-AllItems-WitchingHourglass-55787" value: { - dps: 29087.52487 - tps: 28559.85688 + dps: 29657.99753 + tps: 29055.2443 } } dps_results: { key: "TestFire-AllItems-WitchingHourglass-56320" value: { - dps: 29394.45931 - tps: 28858.14118 + dps: 30206.18755 + tps: 29575.32563 } } dps_results: { key: "TestFire-AllItems-World-QuellerFocus-63842" value: { - dps: 28124.80065 - tps: 27601.8501 + dps: 28340.70259 + tps: 27750.38863 } } dps_results: { key: "TestFire-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 28266.93938 - tps: 27741.86613 + dps: 28448.19269 + tps: 27855.4789 } } dps_results: { key: "TestFire-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 28266.93938 - tps: 27741.86613 + dps: 28448.19269 + tps: 27855.4789 } } dps_results: { key: "TestFire-Average-Default" value: { - dps: 30756.41843 - tps: 30208.12121 + dps: 31604.98146 + tps: 30968.49945 } } dps_results: { key: "TestFire-Settings-Troll-p1_fire-Fire-fire-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 49629.26327 - tps: 53034.89863 + dps: 49341.41077 + tps: 50599.46881 } } dps_results: { key: "TestFire-Settings-Troll-p1_fire-Fire-fire-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 30399.02935 - tps: 29856.05583 + dps: 31337.4631 + tps: 30688.95319 } } dps_results: { key: "TestFire-Settings-Troll-p1_fire-Fire-fire-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 41857.155 - tps: 40935.13482 + dps: 41006.19883 + tps: 40102.0164 } } dps_results: { key: "TestFire-Settings-Troll-p1_fire-Fire-fire-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 35037.08587 - tps: 38772.52857 + dps: 35122.32591 + tps: 38696.19469 } } dps_results: { key: "TestFire-Settings-Troll-p1_fire-Fire-fire-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 20684.97847 - tps: 20275.80823 + dps: 20807.28775 + tps: 20528.2718 } } dps_results: { key: "TestFire-Settings-Troll-p1_fire-Fire-fire-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 24228.68106 - tps: 23459.91609 + dps: 23946.86059 + tps: 23344.4295 } } dps_results: { key: "TestFire-SwitchInFrontOfTarget-Default" value: { - dps: 30399.02935 - tps: 29856.05583 + dps: 31337.4631 + tps: 30688.95319 } } diff --git a/sim/paladin/_divine_storm.go b/sim/paladin/_divine_storm.go deleted file mode 100644 index 1ff98f5e04..0000000000 --- a/sim/paladin/_divine_storm.go +++ /dev/null @@ -1,63 +0,0 @@ -package paladin - -import ( - "time" - - "github.com/wowsims/cata/sim/core" -) - -func (paladin *Paladin) registerDivineStormSpell() { - bonusDmg := core.TernaryFloat64(paladin.Ranged().ID == 45510, 235, 0) + // Libram of Discord - core.TernaryFloat64(paladin.Ranged().ID == 38362, 81, 0) // Venture Co. Libram of Retribution - numHits := min(4, paladin.Env.GetNumTargets()) - results := make([]*core.SpellResult, numHits) - - paladin.DivineStorm = paladin.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 53385}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | core.SpellFlagAPL, - - ManaCost: core.ManaCostOptions{ - BaseCost: 0.12, - Multiplier: 1 - 0.02*float64(paladin.Talents.Benediction), - }, - Cast: core.CastConfig{ - DefaultCast: core.Cast{ - GCD: core.GCDDefault, - }, - IgnoreHaste: true, // ds is on phys gcd, which cannot be hasted - CD: core.Cooldown{ - Timer: paladin.NewTimer(), - Duration: time.Second * 10, - }, - }, - - BonusCritRating: core.TernaryFloat64(paladin.HasSetBonus(ItemSetAegisBattlegear, 4), 10, 0) * core.CritRatingPerCritChance, - // base 1.1 multiplier, can be further improved by 10% via taow for a grand total of 1.21. NOTE: Unlike cs, ds tooltip IS NOT updated to reflect this. - DamageMultiplierAdditive: 1 + - paladin.getTalentTheArtOfWarBonus() + - paladin.getItemSetRedemptionBattlegearBonus2(), - DamageMultiplier: 1.1, - CritMultiplier: paladin.MeleeCritMultiplier(), - ThreatMultiplier: 1, - - ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - curTarget := target - for hitIndex := int32(0); hitIndex < numHits; hitIndex++ { - baseDamage := bonusDmg + - spell.Unit.MHWeaponDamage(sim, spell.MeleeAttackPower()) + - spell.BonusWeaponDamage() - - results[hitIndex] = spell.CalcDamage(sim, curTarget, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit) - curTarget = sim.Environment.NextTargetUnit(curTarget) - } - - curTarget = target - for hitIndex := int32(0); hitIndex < numHits; hitIndex++ { - spell.DealDamage(sim, results[hitIndex]) - curTarget = sim.Environment.NextTargetUnit(curTarget) - } - }, - }) -} diff --git a/sim/paladin/_talents.go b/sim/paladin/_talents.go new file mode 100644 index 0000000000..d2ec1d91be --- /dev/null +++ b/sim/paladin/_talents.go @@ -0,0 +1,675 @@ +package paladin + +// TODO: +// Sanctified Wrath (Damage penetration, questions over affected stats) + +func (paladin *Paladin) ToughnessArmorMultiplier() float64 { + return 1.0 + 0.02*float64(paladin.Talents.Toughness) +} + +func (paladin *Paladin) ApplyTalents() { + // paladin.AddStat(stats.MeleeCrit, float64(paladin.Talents.Conviction)*core.CritRatingPerCritChance) + // paladin.AddStat(stats.SpellCrit, float64(paladin.Talents.Conviction)*core.CritRatingPerCritChance) + // paladin.AddStat(stats.MeleeCrit, float64(paladin.Talents.SanctityOfBattle)*core.CritRatingPerCritChance) + // paladin.AddStat(stats.SpellCrit, float64(paladin.Talents.SanctityOfBattle)*core.CritRatingPerCritChance) + + // paladin.PseudoStats.BaseParry += 0.01 * float64(paladin.Talents.Deflection) + // paladin.PseudoStats.BaseDodge += 0.01 * float64(paladin.Talents.Anticipation) + + // paladin.ApplyEquipScaling(stats.Armor, paladin.ToughnessArmorMultiplier()) + + // if paladin.Talents.DivineStrength > 0 { + // paladin.MultiplyStat(stats.Strength, 1.0+0.03*float64(paladin.Talents.DivineStrength)) + // } + // if paladin.Talents.DivineIntellect > 0 { + // paladin.MultiplyStat(stats.Intellect, 1.0+0.02*float64(paladin.Talents.DivineIntellect)) + // } + + // if paladin.Talents.SheathOfLight > 0 { + // // doesn't implement HOT + // percentage := 0.10 * float64(paladin.Talents.SheathOfLight) + // paladin.AddStatDependency(stats.AttackPower, stats.SpellPower, percentage) + // } + + // if paladin.Talents.TouchedByTheLight > 0 { + // percentage := 0.20 * float64(paladin.Talents.TouchedByTheLight) + // paladin.AddStatDependency(stats.Strength, stats.SpellPower, percentage) + // } + + // if paladin.Talents.SacredDuty > 0 { + // paladin.MultiplyStat(stats.Stamina, 1.0+0.02*float64(paladin.Talents.SacredDuty)) + // } + + // if paladin.Talents.CombatExpertise > 0 { + // paladin.AddStat(stats.Expertise, core.ExpertisePerQuarterPercentReduction*2*float64(paladin.Talents.CombatExpertise)) + // paladin.AddStat(stats.MeleeCrit, core.CritRatingPerCritChance*2*float64(paladin.Talents.CombatExpertise)) + // paladin.AddStat(stats.SpellCrit, core.CritRatingPerCritChance*2*float64(paladin.Talents.CombatExpertise)) + // paladin.MultiplyStat(stats.Stamina, 1.0+0.02*float64(paladin.Talents.CombatExpertise)) + // } + + // if paladin.Talents.ShieldOfTheTemplar > 0 { + // paladin.PseudoStats.DamageTakenMultiplier *= 1 - 0.01*float64(paladin.Talents.ShieldOfTheTemplar) + // } + + // paladin.applyRedoubt() + // paladin.applyReckoning() + // paladin.applyArdentDefender() + // paladin.applyCrusade() + // paladin.applyWeaponSpecialization() + // paladin.applyVengeance() + // paladin.applyHeartOfTheCrusader() + // paladin.applyVindication() + // paladin.applyArtOfWar() + // paladin.applyJudgementsOfTheJust() + // paladin.applyJudgementsOfTheWise() + // paladin.applyRighteousVengeance() + // paladin.applyMinorGlyphOfSenseUndead() + // paladin.applyGuardedByTheLight() +} + +// func (paladin *Paladin) getTalentSealsOfThePureBonus() float64 { +// return 0.03 * float64(paladin.Talents.SealsOfThePure) +// } + +// func (paladin *Paladin) getTalentTwoHandedWeaponSpecializationBonus() float64 { +// return 0.02 * float64(paladin.Talents.TwoHandedWeaponSpecialization) +// } + +// func (paladin *Paladin) getTalentSanctityOfBattleBonus() float64 { +// return 0.05 * float64(paladin.Talents.SanctityOfBattle) +// } + +// func (paladin *Paladin) getTalentTheArtOfWarBonus() float64 { +// return 0.05 * float64(paladin.Talents.TheArtOfWar) +// } + +// func (paladin *Paladin) getMajorGlyphSealOfRighteousnessBonus() float64 { +// return core.TernaryFloat64(paladin.HasMajorGlyph(proto.PaladinMajorGlyph_GlyphOfSealOfRighteousness), .1, 0) +// } + +// func (paladin *Paladin) getMajorGlyphOfExorcismBonus() float64 { +// return core.TernaryFloat64(paladin.HasMajorGlyph(proto.PaladinMajorGlyph_GlyphOfExorcism), 0.20, 0) +// } + +// func (paladin *Paladin) getMajorGlyphOfJudgementBonus() float64 { +// return core.TernaryFloat64(paladin.HasMajorGlyph(proto.PaladinMajorGlyph_GlyphOfJudgement), 0.10, 0) +// } + +// func (paladin *Paladin) applyMinorGlyphOfSenseUndead() { +// if !paladin.HasMinorGlyph(proto.PaladinMinorGlyph_GlyphOfSenseUndead) { +// return +// } + +// var applied bool + +// paladin.RegisterResetEffect( +// func(s *core.Simulation) { +// if !applied { +// for i := int32(0); i < paladin.Env.GetNumTargets(); i++ { +// unit := paladin.Env.GetTargetUnit(i) +// if unit.MobType == proto.MobType_MobTypeUndead { +// paladin.AttackTables[unit.UnitIndex].DamageDealtMultiplier *= 1.01 +// } +// } +// applied = true +// } +// }, +// ) +// } + +// func (paladin *Paladin) applyRedoubt() { +// if paladin.Talents.Redoubt == 0 { +// return +// } + +// actionID := core.ActionID{SpellID: 20132} + +// bonusBlockRating := 10 * core.BlockRatingPerBlockChance * float64(paladin.Talents.Redoubt) + +// procAura := paladin.RegisterAura(core.Aura{ +// Label: "Redoubt Proc", +// ActionID: actionID, +// Duration: time.Second * 10, +// MaxStacks: 5, +// OnGain: func(aura *core.Aura, sim *core.Simulation) { +// paladin.AddStatDynamic(sim, stats.Block, bonusBlockRating) +// }, +// OnExpire: func(aura *core.Aura, sim *core.Simulation) { +// paladin.AddStatDynamic(sim, stats.Block, -bonusBlockRating) +// }, +// OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if result.Outcome.Matches(core.OutcomeBlock) { +// aura.RemoveStack(sim) +// } +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Redoubt", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if result.Landed() && spell.ProcMask.Matches(core.ProcMaskMeleeOrRanged) { +// if sim.RandomFloat("Redoubt") < 0.1 { +// procAura.Activate(sim) +// procAura.SetStacks(sim, 5) +// } +// } +// }, +// }) +// } + +// func (paladin *Paladin) applyReckoning() { +// if paladin.Talents.Reckoning == 0 { +// return +// } + +// actionID := core.ActionID{SpellID: 20182} +// procChance := 0.02 * float64(paladin.Talents.Reckoning) + +// var reckoningSpell *core.Spell + +// procAura := paladin.RegisterAura(core.Aura{ +// Label: "Reckoning Proc", +// ActionID: actionID, +// Duration: time.Second * 8, +// MaxStacks: 4, +// OnInit: func(aura *core.Aura, sim *core.Simulation) { +// config := *paladin.AutoAttacks.MHConfig() +// config.ActionID = actionID +// reckoningSpell = paladin.GetOrRegisterSpell(config) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if spell == paladin.AutoAttacks.MHAuto() { +// reckoningSpell.Cast(sim, result.Target) +// } +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Reckoning", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if result.Landed() && sim.RandomFloat("Reckoning") < procChance { +// procAura.Activate(sim) +// procAura.SetStacks(sim, 4) +// } +// }, +// }) +// } + +// func (paladin *Paladin) applyArdentDefender() { +// if paladin.Talents.ArdentDefender == 0 { +// return +// } + +// var ardentDamageReduction float64 +// switch paladin.Talents.ArdentDefender { +// case 1: +// ardentDamageReduction = 0.07 +// case 2: +// ardentDamageReduction = 0.13 +// case 3: +// ardentDamageReduction = 0.20 +// } + +// // 540 defense (+140) yields the full heal amount +// ardentHealAmount := max(1.0, float64(paladin.GetStat(stats.Defense))/core.DefenseRatingPerDefense/140.0) * 0.10 * float64(paladin.Talents.ArdentDefender) + +// // TBD? Buff to mark time spent fully below 35% and attribute absorbs +// // rangeAura := paladin.RegisterAura(core.Aura{ +// // Label: "Ardent Defender (Active)", +// // ActionID: core.ActionID{SpellID: 31852}, +// // Duration: core.NeverExpires, +// // }) + +// // paladin.RegisterAura(core.Aura{ +// // Label: "Ardent Defender Talent", +// // Duration: core.NeverExpires, +// // OnReset: func(aura *core.Aura, sim *core.Simulation) { +// // aura.Activate(sim) +// // }, +// // OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// // if aura.Unit.CurrentHealthPercent() < 0.35 { +// // procAura.Activate(sim) +// // } +// // }, +// // }) + +// // Debuff to show that AD has procced +// procAura := paladin.RegisterAura(core.Aura{ +// Label: "Ardent Defender", +// ActionID: core.ActionID{SpellID: 66233}, +// Duration: time.Second * 120.0, +// }) + +// // Spell to heal you when AD has procced; fire this before fatal damage so that a Death is not detected +// procHeal := paladin.RegisterSpell(core.SpellConfig{ +// ActionID: core.ActionID{SpellID: 66233}, +// SpellSchool: core.SpellSchoolHoly, +// ProcMask: core.ProcMaskSpellHealing, +// CritMultiplier: 1, // Assuming this can't really crit? +// ThreatMultiplier: 0.25, +// DamageMultiplier: 1, +// ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { +// spell.CalcAndDealHealing(sim, &paladin.Unit, ardentHealAmount*paladin.MaxHealth(), spell.OutcomeHealingCrit) +// }, +// }) + +// // >= 0.35, no effect +// // < 0.35, pro-rated DR +// // =< 0, proc death save +// paladin.AddDynamicDamageTakenModifier(func(sim *core.Simulation, _ *core.Spell, result *core.SpellResult) { +// incomingDamage := result.Damage +// if (paladin.CurrentHealth()-incomingDamage)/paladin.MaxHealth() <= 0.35 { +// //rangeAura.Activate(sim) +// result.Damage -= (paladin.MaxHealth()*0.35 - (paladin.CurrentHealth() - incomingDamage)) * ardentDamageReduction +// if sim.Log != nil { +// paladin.Log(sim, "Ardent Defender reduced damage by %d", int32(incomingDamage-result.Damage)) +// } + +// incomingDamage2 := result.Damage + +// // Now check death save, based on the reduced damage +// if (result.Damage >= paladin.CurrentHealth()) && !procAura.IsActive() { +// if paladin.CurrentHealth()+ardentHealAmount*paladin.MaxHealth() > paladin.MaxHealth() { +// // We will overheal and wind up at the wrong HP value... Let's work around this +// // TODO: Find a cleaner way to do this, using absorbs? +// procHeal.Cast(sim, &paladin.Unit) +// result.Damage = paladin.CurrentHealth() - ardentHealAmount*paladin.MaxHealth() +// if sim.Log != nil { +// paladin.Log(sim, "Ardent Defender proc reduced overkill damage by %d, compensating for overheal", int32(incomingDamage2-result.Damage)) +// } +// } else { +// // Cleanest handling for < 70% HP, includes proper healing amount in metrics +// result.Damage = paladin.CurrentHealth() +// procHeal.Cast(sim, &paladin.Unit) +// if sim.Log != nil { +// paladin.Log(sim, "Ardent Defender proc reduced overkill damage by %d", int32(incomingDamage2-result.Damage)) +// } +// } +// procAura.Activate(sim) +// } +// } +// // TODO: Metrics, attribute reduced damage as absorption +// }) +// } + +// // Because Crusade modifies unit specific attack tables, it must be applied at start of sim. +// func (paladin *Paladin) applyCrusade() { +// if paladin.Talents.Crusade == 0 { +// return +// } + +// var applied bool + +// paladin.RegisterResetEffect( +// func(s *core.Simulation) { +// if !applied { +// for i := int32(0); i < paladin.Env.GetNumTargets(); i++ { +// unit := paladin.Env.GetTargetUnit(i) +// crusadeMod := 1.0 + (0.01 * float64(paladin.Talents.Crusade)) +// switch unit.MobType { +// case proto.MobType_MobTypeHumanoid, proto.MobType_MobTypeDemon, proto.MobType_MobTypeUndead, proto.MobType_MobTypeElemental: +// paladin.AttackTables[unit.UnitIndex].DamageDealtMultiplier *= crusadeMod * crusadeMod +// default: +// paladin.AttackTables[unit.UnitIndex].DamageDealtMultiplier *= crusadeMod +// } +// } +// applied = true +// } +// }, +// ) +// } + +// // Prior to WOTLK, behavior was to double dip. +// func (paladin *Paladin) MeleeCritMultiplier() float64 { +// // return paladin.Character.MeleeCritMultiplier(paladin.crusadeMultiplier(), 0) +// return paladin.DefaultMeleeCritMultiplier() +// } +// func (paladin *Paladin) SpellCritMultiplier() float64 { +// // return paladin.Character.SpellCritMultiplier(paladin.crusadeMultiplier(), 0) +// return paladin.DefaultSpellCritMultiplier() +// } + +// // Affects all physical damage or spells that can be rolled as physical +// // It affects white, Windfury, Crusader Strike, Seals, and Judgement of Command / Blood +// func (paladin *Paladin) applyWeaponSpecialization() { +// // This impacts Crusader Strike, Melee Attacks, WF attacks +// // Seals + Judgements need to be implemented separately +// mhWeapon := paladin.GetMHWeapon() + +// if mhWeapon == nil { +// return +// } + +// switch mhWeapon.HandType { +// case proto.HandType_HandTypeTwoHand: +// paladin.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] *= 1 + 0.02*float64(paladin.Talents.TwoHandedWeaponSpecialization) +// case proto.HandType_HandTypeOneHand, proto.HandType_HandTypeMainHand: +// if paladin.Talents.OneHandedWeaponSpecialization > 0 { +// // Talent points are 4%, 7%, 10% +// paladin.PseudoStats.DamageDealtMultiplier *= 1.01 + 0.03*float64(paladin.Talents.OneHandedWeaponSpecialization) +// } +// } +// } + +// func (paladin *Paladin) maybeProcVengeance(sim *core.Simulation, result *core.SpellResult) { +// if result.DidCrit() && paladin.Talents.Vengeance > 0 { +// paladin.VengeanceAura.Activate(sim) +// paladin.VengeanceAura.AddStack(sim) +// } +// } + +// // I don't know if the new stack of vengeance applies to the crit that triggered it or not +// // Need to check this +// func (paladin *Paladin) applyVengeance() { +// if paladin.Talents.Vengeance == 0 { +// return +// } + +// bonusPerStack := 0.01 * float64(paladin.Talents.Vengeance) +// paladin.VengeanceAura = paladin.RegisterAura(core.Aura{ +// Label: "Vengeance Proc", +// ActionID: core.ActionID{SpellID: 20057}, +// Duration: time.Second * 30, +// MaxStacks: 3, +// OnStacksChange: func(aura *core.Aura, sim *core.Simulation, oldStacks int32, newStacks int32) { +// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] /= 1 + (bonusPerStack * float64(oldStacks)) +// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] /= 1 + (bonusPerStack * float64(oldStacks)) + +// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] *= 1 + (bonusPerStack * float64(newStacks)) +// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] *= 1 + (bonusPerStack * float64(newStacks)) +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Vengeance", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// paladin.maybeProcVengeance(sim, result) +// }, +// }) +// } + +// func (paladin *Paladin) applyHeartOfTheCrusader() { +// if paladin.Talents.HeartOfTheCrusader == 0 { +// return +// } + +// hotcAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { +// return core.HeartOfTheCrusaderDebuff(target, paladin.Talents.HeartOfTheCrusader) +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Heart of the Crusader", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if spell.Flags.Matches(SpellFlagSecondaryJudgement) { +// hotcAuras.Get(result.Target).Activate(sim) +// } +// }, +// }) +// } + +// func (paladin *Paladin) applyVindication() { +// if paladin.Talents.Vindication == 0 { +// return +// } + +// vindicationAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { +// return core.VindicationAura(target, paladin.Talents.Vindication) +// }) +// paladin.RegisterAura(core.Aura{ +// Label: "Vindication Talent", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// // TODO: Replace with actual proc mask / proc chance +// if result.Landed() && spell.ProcMask.Matches(core.ProcMaskMelee) { +// vindicationAuras.Get(result.Target).Activate(sim) +// } +// }, +// }) +// } + +// func (paladin *Paladin) applyArtOfWar() { +// if paladin.Talents.TheArtOfWar == 0 { +// return +// } + +// castTimeReduction := 0.5 * float64(paladin.Talents.TheArtOfWar) +// paladin.ArtOfWarInstantCast = paladin.RegisterAura(core.Aura{ +// Label: "Art Of War", +// ActionID: core.ActionID{SpellID: 53488}, +// Duration: time.Second * 15, +// OnGain: func(aura *core.Aura, sim *core.Simulation) { +// paladin.Exorcism.CastTimeMultiplier -= castTimeReduction +// }, +// OnExpire: func(aura *core.Aura, sim *core.Simulation) { +// paladin.Exorcism.CastTimeMultiplier += castTimeReduction +// }, +// OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { +// if spell == paladin.Exorcism { +// aura.Deactivate(sim) +// } +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "The Art of War", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if !spell.IsMelee() && !spell.Flags.Matches(SpellFlagSecondaryJudgement) { +// return +// } + +// if spell == paladin.HammerOfWrath { +// return +// } + +// if !result.Outcome.Matches(core.OutcomeCrit) { +// return +// } + +// paladin.ArtOfWarInstantCast.Activate(sim) +// }, +// }) +// } + +// func (paladin *Paladin) applyJudgementsOfTheJust() { +// if paladin.Talents.JudgementsOfTheJust == 0 { +// return +// } + +// jojAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { +// return core.JudgementsOfTheJustAura(target, paladin.Talents.JudgementsOfTheJust) +// }) +// // This application can proc stuff +// jojApplicationSpell := paladin.RegisterSpell(core.SpellConfig{ +// ActionID: core.ActionID{SpellID: 68055}, +// ProcMask: core.ProcMaskProc, +// ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { +// jojAuras.Get(target).Activate(sim) +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Judgements Of The Just Talent", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if result.Landed() && spell.Flags.Matches(SpellFlagPrimaryJudgement) { +// jojApplicationSpell.Cast(sim, result.Target) +// } +// }, +// }) +// } + +// func (paladin *Paladin) applyJudgementsOfTheWise() { +// if paladin.Talents.JudgementsOfTheWise == 0 { +// return +// } + +// procChance := float64(paladin.Talents.JudgementsOfTheWise) / 3 +// paladin.JowiseManaMetrics = paladin.NewManaMetrics(core.ActionID{SpellID: 31878}) +// replSrc := paladin.Env.Raid.NewReplenishmentSource(core.ActionID{SpellID: 31878}) + +// procSpell := paladin.RegisterSpell(core.SpellConfig{ +// ActionID: core.ActionID{SpellID: 31878}, +// ApplyEffects: func(sim *core.Simulation, unit *core.Unit, _ *core.Spell) { +// paladin.AddMana(sim, paladin.BaseMana*0.25, paladin.JowiseManaMetrics) +// paladin.Env.Raid.ProcReplenishment(sim, replSrc) +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Judgements of the Wise", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if !spell.Flags.Matches(SpellFlagSecondaryJudgement) || !result.Landed() { +// return +// } + +// if procChance == 1 || sim.RandomFloat("judgements of the wise") < procChance { +// procSpell.Cast(sim, nil) +// } +// }, +// }) +// } + +// func (paladin *Paladin) applyRighteousVengeance() { +// // Righteous Vengeance is a MAGIC debuff that pools 10/20/30% crit damage from Crusader Strike, Divine Storm, and Judgements. +// // It drains the pool every 2 seconds at a rate of 1/4 of the pool size. +// // And then deals that 1/4 as PHYSICAL damage. +// if paladin.Talents.RighteousVengeance == 0 { +// return +// } + +// dotActionID := core.ActionID{SpellID: 61840} // Righteous Vengeance + +// rvDot := paladin.RegisterSpell(core.SpellConfig{ +// ActionID: dotActionID.WithTag(2), +// SpellSchool: core.SpellSchoolHoly, +// ProcMask: core.ProcMaskEmpty, +// Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagMeleeMetrics | core.SpellFlagIgnoreModifiers, + +// DamageMultiplier: 1, +// CritMultiplier: paladin.MeleeCritMultiplier(), +// ThreatMultiplier: 1, + +// Dot: core.DotConfig{ +// Aura: core.Aura{ +// Label: "Righteous Vengeance", +// }, +// NumberOfTicks: 4, +// TickLength: time.Second * 2, + +// OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { +// if paladin.HasTuralyonsOrLiadrinsBattlegear2Pc { +// dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.Spell.OutcomeMeleeSpecialCritOnly) +// } else { +// dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.Spell.OutcomeAlwaysHit) +// } +// }, +// }, +// }) + +// rvSpell := paladin.RegisterSpell(core.SpellConfig{ +// ActionID: dotActionID.WithTag(1), +// SpellSchool: core.SpellSchoolHoly, +// ProcMask: core.ProcMaskProc, +// Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagIgnoreModifiers, + +// ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { +// rvDot.Dot(target).ApplyOrReset(sim) +// spell.CalcAndDealOutcome(sim, target, spell.OutcomeAlwaysHit) +// }, +// }) + +// paladin.RegisterAura(core.Aura{ +// Label: "Righteous Vengeance", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if !result.DidCrit() { +// return +// } +// if spell != paladin.CrusaderStrike && spell != paladin.DivineStorm && !spell.Flags.Matches(SpellFlagSecondaryJudgement) { +// return +// } + +// dot := rvDot.Dot(result.Target) + +// newDamage := result.Damage * (0.10 * float64(paladin.Talents.RighteousVengeance)) +// outstandingDamage := core.TernaryFloat64(dot.IsActive(), dot.SnapshotBaseDamage*float64(dot.NumberOfTicks-dot.TickCount), 0) + +// dot.SnapshotAttackerMultiplier = 1 +// dot.SnapshotBaseDamage = (outstandingDamage + newDamage) / float64(dot.NumberOfTicks) +// rvSpell.Cast(sim, result.Target) +// }, +// }) +// } + +// //nolint:unused +// func (paladin *Paladin) applyFanaticism() { +// // TODO: Possibly implement as aura. +// if paladin.Talents.Fanaticism == 0 { +// return +// } + +// paladin.PseudoStats.ThreatMultiplier *= 1 - 0.10*float64(paladin.Talents.Fanaticism) +// } + +// func (paladin *Paladin) applyGuardedByTheLight() { +// if paladin.Talents.GuardedByTheLight == 0 { +// return +// } + +// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexArcane] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) +// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexFire] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) +// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexFrost] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) +// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexHoly] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) +// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexNature] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) +// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexShadow] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) + +// paladin.RegisterAura(core.Aura{ +// Label: "Guarded By The Light", +// Duration: core.NeverExpires, +// OnReset: func(aura *core.Aura, sim *core.Simulation) { +// aura.Activate(sim) +// }, +// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { +// if !result.Landed() { +// return +// } + +// if paladin.DivinePleaAura.IsActive() { +// paladin.DivinePleaAura.Refresh(sim) +// } +// }, +// }) +// } diff --git a/sim/paladin/apl_values.go b/sim/paladin/apl_values.go new file mode 100644 index 0000000000..2ff74e1272 --- /dev/null +++ b/sim/paladin/apl_values.go @@ -0,0 +1,39 @@ +package paladin + +import ( + "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/core/proto" +) + +func (paladin *Paladin) NewAPLValue(rot *core.APLRotation, config *proto.APLValue) core.APLValue { + switch config.Value.(type) { + case *proto.APLValue_CurrentHolyPower: + return paladin.newValueCurrentHolyPower(config.GetCurrentHolyPower()) + default: + return nil + } +} + +type APLValueCurrentHolyPower struct { + core.DefaultAPLValueImpl + paladin *Paladin +} + +func (paladin *Paladin) newValueCurrentHolyPower(_ *proto.APLValueCurrentHolyPower) core.APLValue { + if !paladin.HasHolyPowerBar() { + return nil + } + + return &APLValueCurrentHolyPower{ + paladin: paladin, + } +} +func (value *APLValueCurrentHolyPower) Type() proto.APLValueType { + return proto.APLValueType_ValueTypeInt +} +func (value *APLValueCurrentHolyPower) GetInt(sim *core.Simulation) int32 { + return value.paladin.CurrentHolyPower() +} +func (value *APLValueCurrentHolyPower) String() string { + return "Current Holy Power" +} diff --git a/sim/paladin/crusader_strike.go b/sim/paladin/crusader_strike.go new file mode 100644 index 0000000000..6315c79439 --- /dev/null +++ b/sim/paladin/crusader_strike.go @@ -0,0 +1,45 @@ +package paladin + +import ( + "github.com/wowsims/cata/sim/core" +) + +func (paladin *Paladin) RegisterCrusaderStrike() { + actionId := core.ActionID{SpellID: 35395} + hpMetrics := paladin.NewHolyPowerMetrics(actionId) + + paladin.CrusaderStrike = paladin.RegisterSpell(core.SpellConfig{ + ActionID: actionId, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | core.SpellFlagAPL, + ClassSpellMask: SpellMaskCrusaderStrike | SpellMaskSpecialAttack, + + ManaCost: core.ManaCostOptions{ + BaseCost: 0.1, + }, + + Cast: core.CastConfig{ + DefaultCast: core.Cast{ + GCD: core.GCDDefault, + }, + IgnoreHaste: true, + CD: *paladin.sharedBuilderCooldown, + }, + + DamageMultiplier: 1.35, + CritMultiplier: paladin.DefaultMeleeCritMultiplier(), + ThreatMultiplier: 1, + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + baseDamage := spell.Unit.MHNormalizedWeaponDamage(sim, spell.MeleeAttackPower()) + + result := spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit) + + if result.Landed() { + paladin.GainHolyPower(sim, 1, hpMetrics) + } + }, + }) + +} diff --git a/sim/paladin/divine_storm.go b/sim/paladin/divine_storm.go new file mode 100644 index 0000000000..841a9bcb8f --- /dev/null +++ b/sim/paladin/divine_storm.go @@ -0,0 +1,61 @@ +package paladin + +import ( + "github.com/wowsims/cata/sim/core" +) + +// Divine Storm is a non-ap normalised instant attack that has a weapon damage % modifier with a 1.0 coefficient. +// It does this damage to all targets in range. +// DS also heals up to 3 party or raid members for 25% of the total damage caused. +// The heal has threat implications, but given prot paladin cannot get enough talent +// points to take DS, we'll ignore it for now. + +func (paladin *Paladin) registerDivineStorm() { + if !paladin.Talents.DivineStorm { + return + } + results := make([]*core.SpellResult, paladin.Env.GetNumTargets()) + actionId := core.ActionID{SpellID: 53385} + hpMetrics := paladin.NewHolyPowerMetrics(actionId) + + paladin.RegisterSpell(core.SpellConfig{ + ActionID: actionId, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL, + ClassSpellMask: SpellMaskDivineStorm | SpellMaskSpecialAttack, + + ManaCost: core.ManaCostOptions{ + BaseCost: 0.05, + }, + Cast: core.CastConfig{ + DefaultCast: core.Cast{ + GCD: core.GCDDefault, + }, + IgnoreHaste: true, + CD: *paladin.sharedBuilderCooldown, + }, + + DamageMultiplier: 1, + ThreatMultiplier: 1, + CritMultiplier: paladin.DefaultMeleeCritMultiplier(), + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + numHits := 0 + for idx := range results { + baseDamage := spell.Unit.MHWeaponDamage(sim, spell.MeleeAttackPower()) + results[idx] = spell.CalcDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit) + if results[idx].Landed() { + numHits += 1 + } + target = sim.Environment.NextTargetUnit(target) + } + for _, result := range results { + spell.DealDamage(sim, result) + } + if numHits >= 4 { + paladin.GainHolyPower(sim, 1, hpMetrics) + } + }, + }) +} diff --git a/sim/paladin/holy/talents.go b/sim/paladin/holy/talents.go new file mode 100644 index 0000000000..8d38399eba --- /dev/null +++ b/sim/paladin/holy/talents.go @@ -0,0 +1 @@ +package holy diff --git a/sim/paladin/holy_power.go b/sim/paladin/holy_power.go new file mode 100644 index 0000000000..a9d6780f7e --- /dev/null +++ b/sim/paladin/holy_power.go @@ -0,0 +1,66 @@ +package paladin + +import ( + "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/core/proto" +) + +type HolyPowerBar struct { + paladin *Paladin + holyPower int32 +} + +func (paladin *Paladin) CurrentHolyPower() int32 { + return paladin.holyPower +} + +func (paladin *Paladin) InitializeHolyPowerbar() { + paladin.HolyPowerBar = HolyPowerBar{ + paladin: paladin, + holyPower: 0, + } +} + +func (pb *HolyPowerBar) Reset() { + if pb.paladin == nil { + return + } + + pb.holyPower = 0 +} + +func (paladin *Paladin) HasHolyPowerBar() bool { + return paladin.HolyPowerBar.paladin != nil +} + +func (pb *HolyPowerBar) GainHolyPower(sim *core.Simulation, amountToAdd int32, metrics *core.ResourceMetrics) { + if pb.paladin == nil { + return + } + + newHolyPower := min(pb.holyPower+amountToAdd, 3) + metrics.AddEvent(float64(newHolyPower), float64(newHolyPower-pb.holyPower)) + + if sim.Log != nil { + pb.paladin.Log(sim, "Gained %d holy power from %s (%d --> %d) of %0.0f total.", newHolyPower, metrics.ActionID, pb.holyPower, newHolyPower, 3.0) + } + + pb.holyPower = newHolyPower +} + +func (pb *HolyPowerBar) SpendHolyPower(sim *core.Simulation, metrics *core.ResourceMetrics) { + if pb.paladin == nil { + return + } + + if sim.Log != nil { + pb.paladin.Log(sim, "Spent %d holy power from %s (%d --> %d) of %0.0f total.", pb.holyPower, metrics.ActionID, pb.holyPower, 0, 3.0) + } + + metrics.AddEvent(float64(-pb.holyPower), float64(-pb.holyPower)) + pb.holyPower = 0 +} + +func (unit *Paladin) NewHolyPowerMetrics(actionID core.ActionID) *core.ResourceMetrics { + return unit.Metrics.NewResourceMetrics(actionID, proto.ResourceType_ResourceTypeHolyPower) +} diff --git a/sim/paladin/judgement.go b/sim/paladin/judgement.go new file mode 100644 index 0000000000..dc9cd76822 --- /dev/null +++ b/sim/paladin/judgement.go @@ -0,0 +1,43 @@ +package paladin + +import ( + "time" + + "github.com/wowsims/cata/sim/core" +) + +func (paladin *Paladin) RegisterJudgement() { + paladin.RegisterSpell(core.SpellConfig{ + ActionID: core.ActionID{SpellID: 20271}, + SpellSchool: core.SpellSchoolHoly, + ProcMask: core.ProcMaskProc, + Flags: SpellFlagPrimaryJudgement | core.SpellFlagAPL, + + ManaCost: core.ManaCostOptions{ + BaseCost: 0.05, + }, + Cast: core.CastConfig{ + DefaultCast: core.Cast{ + GCD: core.GCDDefault, + }, + IgnoreHaste: true, + CD: core.Cooldown{ + Timer: paladin.paladin.NewTimer(), + Duration: time.Second * 10, + }, + }, + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + if paladin.CurrentSeal == nil { + return + } + // if paladin.CurrentSeal.IsActive() { + // paladin.CurrentSeal.Refresh(sim) + // } else { + // paladin.CurrentSeal.Activate(sim) + // } + + paladin.CurrentJudgement.Cast(sim, target) + }, + }) +} diff --git a/sim/paladin/paladin.go b/sim/paladin/paladin.go index 820b709900..28567293a4 100644 --- a/sim/paladin/paladin.go +++ b/sim/paladin/paladin.go @@ -1,8 +1,11 @@ package paladin import ( + "time" + "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/core/stats" ) const ( @@ -10,17 +13,49 @@ const ( SpellFlagPrimaryJudgement = core.SpellFlagAgentReserved2 ) +const ( + SpellMaskSpecialAttack int64 = 1 << iota + + SpellMaskTemplarsVerdict + SpellMaskCrusaderStrike + SpellMaskDivineStorm + SpellMaskExorcism + SpellMaskHammerOfWrath + SpellMaskJudgement + SpellMaskHolyWrath + SpellMaskConsecration + SpellMaskHammerOfTheRighteous + SpellMaskHandOfReckoning + SpellMaskShieldOfRighteousness + SpellMaskAvengersShield + SpellMaskDivinePlea + SpellMaskDivineProtection + + SpellMaskHolyShock + SpellMaskWordOfGlory + + SpellMaskSealOfTruth + SpellMaskSealOfInsight + SpellMaskSealOfRighteousness + SpellmaskSealofJustice +) + +const SpellMaskSingleTarget = SpellMaskCrusaderStrike | SpellMaskTemplarsVerdict + var TalentTreeSizes = [3]int{20, 20, 20} type Paladin struct { core.Character + HolyPowerBar PaladinAura proto.PaladinAura Talents *proto.PaladinTalents + sharedBuilderCooldown *core.Cooldown // Used for CS/DS + CurrentSeal *core.Aura - CurrentJudgement *core.Aura + CurrentJudgement *core.Spell DivinePlea *core.Spell DivineStorm *core.Spell @@ -33,24 +68,18 @@ type Paladin struct { HandOfReckoning *core.Spell ShieldOfRighteousness *core.Spell AvengersShield *core.Spell - JudgementOfWisdom *core.Spell - JudgementOfLight *core.Spell HammerOfWrath *core.Spell - SealOfVengeance *core.Spell - SealOfRighteousness *core.Spell - SealOfCommand *core.Spell AvengingWrath *core.Spell DivineProtection *core.Spell - SovDotSpell *core.Spell - // SealOfWisdom *core.Spell - // SealOfLight *core.Spell + + SealOfTruth *core.Spell HolyShieldAura *core.Aura RighteousFuryAura *core.Aura DivinePleaAura *core.Aura JudgementOfWisdomAura *core.Aura JudgementOfLightAura *core.Aura - SealOfVengeanceAura *core.Aura + SealOfTruthAura *core.Aura SealOfCommandAura *core.Aura SealOfRighteousnessAura *core.Aura AvengingWrathAura *core.Aura @@ -58,9 +87,6 @@ type Paladin struct { ForbearanceAura *core.Aura VengeanceAura *core.Aura - // SealOfWisdomAura *core.Aura - // SealOfLightAura *core.Aura - ArtOfWarInstantCast *core.Aura SpiritualAttunementMetrics *core.ResourceMetrics @@ -81,6 +107,10 @@ func (paladin *Paladin) GetCharacter() *core.Character { return &paladin.Character } +func (paladin *Paladin) HasPrimeGlyph(glyph proto.PaladinPrimeGlyph) bool { + return paladin.HasGlyph(int32(glyph)) +} + func (paladin *Paladin) HasMajorGlyph(glyph proto.PaladinMajorGlyph) bool { return paladin.HasGlyph(int32(glyph)) } @@ -119,9 +149,10 @@ func (paladin *Paladin) AddPartyBuffs(_ *proto.PartyBuffs) { } func (paladin *Paladin) Initialize() { + paladin.RegisterJudgement() + paladin.RegisterSealOfTruth() // // Update auto crit multipliers now that we have the targets. // paladin.AutoAttacks.MHConfig().CritMultiplier = paladin.MeleeCritMultiplier() - // paladin.registerSealOfVengeanceSpellAndAura() // paladin.registerSealOfRighteousnessSpellAndAura() // paladin.registerSealOfCommandSpellAndAura() @@ -131,8 +162,9 @@ func (paladin *Paladin) Initialize() { // // paladin.setupSealOfRighteousness() // // paladin.setupJudgementRefresh() - // paladin.registerCrusaderStrikeSpell() - // paladin.registerDivineStormSpell() + paladin.RegisterCrusaderStrike() + paladin.registerDivineStorm() + // paladin.registerConsecrationSpell() // paladin.registerHammerOfWrathSpell() // paladin.registerHolyWrathSpell() @@ -161,39 +193,47 @@ func (paladin *Paladin) Initialize() { func (paladin *Paladin) Reset(_ *core.Simulation) { paladin.CurrentSeal = nil paladin.CurrentJudgement = nil + paladin.HolyPowerBar.Reset() } -// maybe need to add stat dependencies func NewPaladin(character *core.Character, talentsStr string) *Paladin { paladin := &Paladin{ Character: *character, Talents: &proto.PaladinTalents{}, } - // core.FillTalentsProto(paladin.Talents.ProtoReflect(), talentsStr, TalentTreeSizes) + core.FillTalentsProto(paladin.Talents.ProtoReflect(), talentsStr, TalentTreeSizes) // // This is used to cache its effect in talents.go // paladin.HasTuralyonsOrLiadrinsBattlegear2Pc = paladin.HasSetBonus(ItemSetTuralyonsBattlegear, 2) - // paladin.PseudoStats.CanParry = true + paladin.PseudoStats.CanParry = true + + paladin.EnableManaBar() + paladin.InitializeHolyPowerbar() + + paladin.sharedBuilderCooldown = &core.Cooldown{ + // TODO: needs to interrogate ret talents for Sanctity of Battle + // and have this cooldown conditionally be reduced based on haste rating + Timer: paladin.NewTimer(), + Duration: time.Millisecond * 4500, + } - // paladin.EnableManaBar() - // paladin.AddStatDependency(stats.Strength, stats.AttackPower, 2.0) - // paladin.AddStatDependency(stats.Agility, stats.MeleeCrit, core.CritPerAgiMaxLevel[character.Class]*core.CritRatingPerCritChance) + paladin.AddStatDependency(stats.Strength, stats.AttackPower, 2) + paladin.AddStatDependency(stats.Agility, stats.MeleeCrit, core.CritPerAgiMaxLevel[character.Class]*core.CritRatingPerCritChance) + // TODO: figure out the exact tanking stat dependencies for prot pala // // Paladins get 0.0167 dodge per agi. ~1% per 59.88 // paladin.AddStatDependency(stats.Agility, stats.Dodge, (1.0/59.88)*core.DodgeRatingPerDodgeChance) - // // Paladins get more melee haste from haste than other classes // paladin.PseudoStats.MeleeHasteRatingPerHastePercent /= 1.3 - - // // Bonus Armor and Armor are treated identically for Paladins - // paladin.AddStatDependency(stats.BonusArmor, stats.Armor, 1) - // // Base dodge is unaffected by Diminishing Returns // paladin.PseudoStats.BaseDodge += 0.034943 // paladin.PseudoStats.BaseParry += 0.05 + // Bonus Armor and Armor are treated identically for Paladins + paladin.AddStatDependency(stats.BonusArmor, stats.Armor, 1) + return paladin } diff --git a/sim/paladin/protection/talents.go b/sim/paladin/protection/talents.go new file mode 100644 index 0000000000..7a8edc95fd --- /dev/null +++ b/sim/paladin/protection/talents.go @@ -0,0 +1 @@ +package protection diff --git a/sim/paladin/retribution/retribution.go b/sim/paladin/retribution/retribution.go index 0d2ef3a3e5..a84314dbb1 100644 --- a/sim/paladin/retribution/retribution.go +++ b/sim/paladin/retribution/retribution.go @@ -1,6 +1,8 @@ package retribution import ( + "time" + "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" "github.com/wowsims/cata/sim/core/stats" @@ -47,7 +49,8 @@ func NewRetributionPaladin(character *core.Character, options *proto.Player) *Re type RetributionPaladin struct { *paladin.Paladin - Seal proto.PaladinSeal + Seal proto.PaladinSeal + HoLDamage float64 } func (ret *RetributionPaladin) GetPaladin() *paladin.Paladin { @@ -56,6 +59,7 @@ func (ret *RetributionPaladin) GetPaladin() *paladin.Paladin { func (ret *RetributionPaladin) Initialize() { ret.Paladin.Initialize() + ret.RegisterSpecializationEffects() //ret.RegisterAvengingWrathCD() } @@ -79,3 +83,96 @@ func (ret *RetributionPaladin) Reset(sim *core.Simulation) { // ret.SealOfRighteousnessAura.Activate(sim) // } } + +func (ret *RetributionPaladin) RegisterSpecializationEffects() { + ret.RegisterMastery() + + // Sheath of Light + ret.AddStatDependency(stats.AttackPower, stats.SpellPower, 0.3) + ret.AddStat(stats.SpellHit, core.SpellHitRatingPerHitChance*8) + + // Two-Handed Weapon Specialization + mhWeapon := ret.GetMHWeapon() + if mhWeapon != nil && mhWeapon.HandType == proto.HandType_HandTypeTwoHand { + ret.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] *= 1.25 + } + + // Judgements of the Bold + ret.ApplyJudgmentsOfTheBold() +} + +func (ret *RetributionPaladin) RegisterMastery() { + actionId := core.ActionID{SpellID: 76672} + + // Hand of Light + handOfLight := ret.RegisterSpell(core.SpellConfig{ + ActionID: actionId, + SpellSchool: core.SpellSchoolHoly, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | core.SpellFlagNoOnCastComplete, + DamageMultiplier: 1.0, + ThreatMultiplier: 1.0, + CritMultiplier: ret.DefaultMeleeCritMultiplier(), + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + new_result := spell.CalcOutcome(sim, target, spell.OutcomeAlwaysHit) + // TODO: this damage needs to be manually boosted by inquisition when it's implemented, and also needs to be + // boosted by any 8% magic damage taken debuff present on the target. + new_result.Damage = ret.HoLDamage + new_result.Threat = spell.ThreatFromDamage(new_result.Outcome, new_result.Damage) + spell.DealDamage(sim, new_result) + }, + }) + + core.MakeProcTriggerAura(&ret.Unit, core.ProcTrigger{ + Name: "Hand of Light", + ActionID: actionId, + Callback: core.CallbackOnSpellHitDealt, + Outcome: core.OutcomeLanded, + ProcMask: core.ProcMaskMeleeSpecial, + ClassSpellMask: paladin.SpellMaskCrusaderStrike | paladin.SpellMaskDivineStorm | paladin.SpellMaskTemplarsVerdict, + ProcChance: 1.0, + + Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + ret.HoLDamage = (16.8 + 2.1*ret.GetMasteryPoints()) / 100.0 * result.Damage + handOfLight.Cast(sim, result.Target) + }, + }) +} + +func (ret *RetributionPaladin) ApplyJudgmentsOfTheBold() { + actionID := core.ActionID{SpellID: 89901} + manaMetrics := ret.NewManaMetrics(actionID) + var pa *core.PendingAction + + jotbAura := ret.RegisterAura(core.Aura{ + Label: "Judgements of the Bold", + ActionID: actionID, + Duration: time.Second * 10, + OnGain: func(aura *core.Aura, sim *core.Simulation) { + pa = core.StartPeriodicAction(sim, core.PeriodicActionOptions{ + Period: time.Second * 2, + OnAction: func(sim *core.Simulation) { + ret.AddMana(sim, 0.25*ret.BaseMana, manaMetrics) + }, + }) + }, + OnExpire: func(aura *core.Aura, sim *core.Simulation) { + pa.Cancel(sim) + }, + }) + + core.MakeProcTriggerAura(&ret.Unit, core.ProcTrigger{ + Name: "Judgements of the Bold Trigger", + ActionID: actionID, + Callback: core.CallbackOnSpellHitDealt, + Outcome: core.OutcomeLanded, + ProcMask: core.ProcMaskMeleeSpecial, + ClassSpellMask: paladin.SpellMaskJudgement, + ProcChance: 1.0, + + Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + jotbAura.Activate(sim) + }, + }) +} diff --git a/sim/paladin/retribution/talents.go b/sim/paladin/retribution/talents.go new file mode 100644 index 0000000000..3ea2cfed92 --- /dev/null +++ b/sim/paladin/retribution/talents.go @@ -0,0 +1 @@ +package retribution diff --git a/sim/paladin/sealoftruth.go b/sim/paladin/sealoftruth.go new file mode 100644 index 0000000000..d37d788f33 --- /dev/null +++ b/sim/paladin/sealoftruth.go @@ -0,0 +1,167 @@ +package paladin + +import ( + "time" + + "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/core/stats" +) + +func (paladin *Paladin) RegisterSealOfTruth() { + + // Censure DoT + censureSpell := paladin.RegisterSpell(core.SpellConfig{ + ActionID: core.ActionID{SpellID: 31803, Tag: 2}, + SpellSchool: core.SpellSchoolHoly, + ProcMask: core.ProcMaskSpellDamage, + Flags: core.SpellFlagMeleeMetrics, + + DamageMultiplier: 1, + ThreatMultiplier: 1, + + Dot: core.DotConfig{ + Aura: core.Aura{ + Label: "Censure (DoT)", + MaxStacks: 5, + }, + NumberOfTicks: 5, + HasteAffectsDuration: true, + TickLength: time.Second * 3, + OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, isRollover bool) { + tickValue := 0 + + .014*dot.Spell.SpellPower() + + .027*dot.Spell.MeleeAttackPower() + dot.SnapshotBaseDamage = tickValue * float64(dot.GetStacks()) + + dot.SnapshotAttackerMultiplier = dot.Spell.AttackerDamageMultiplier(dot.Spell.Unit.AttackTables[target.UnitIndex], true) + }, + OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { + dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.Spell.OutcomeAlwaysHit) + }, + }, + }) + + // Judegment of Truth cast on Judgement + judgementDmg := paladin.RegisterSpell(core.SpellConfig{ + ActionID: core.ActionID{SpellID: 31804}, + SpellSchool: core.SpellSchoolHoly, + ProcMask: core.ProcMaskMeleeSpecial, + Flags: core.SpellFlagMeleeMetrics | SpellFlagSecondaryJudgement, + ClassSpellMask: SpellMaskJudgement | SpellMaskSpecialAttack, + + DamageMultiplier: 1, + CritMultiplier: paladin.DefaultMeleeCritMultiplier(), + ThreatMultiplier: 1, + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + baseDamage := 1 + + .223*spell.SpellPower() + + .142*spell.MeleeAttackPower() + + baseDamage *= 1 + .2*float64(censureSpell.Dot(target).GetStacks()) + spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialCritOnly) + }, + }) + paladin.CurrentJudgement = judgementDmg + + // Seal of Truth on-hit proc + onSpecialOrSwingProc := paladin.RegisterSpell(core.SpellConfig{ + ActionID: core.ActionID{SpellID: 42463}, + SpellSchool: core.SpellSchoolHoly, + ProcMask: core.ProcMaskProc, // does proc certain spell damage-based items, e.g. Black Magic, Pendulum of Telluric Currents + Flags: core.SpellFlagMeleeMetrics, + + DamageMultiplier: 1, + CritMultiplier: paladin.DefaultMeleeCritMultiplier(), + ThreatMultiplier: 1, + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + baseDamage := .15 * paladin.MHWeaponDamage(sim, spell.MeleeAttackPower()) + + // can't miss if melee swing landed, but can crit + spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialCritOnly) + }, + }) + + paladin.SealOfTruthAura = paladin.RegisterAura(core.Aura{ + Label: "Seal of Truth", + Tag: "Seal", + ActionID: core.ActionID{SpellID: 31801}, + Duration: time.Minute * 30, + + OnGain: func(aura *core.Aura, sim *core.Simulation) { + if paladin.HasPrimeGlyph(proto.PaladinPrimeGlyph_GlyphOfSealOfTruth) { + expertise := core.ExpertisePerQuarterPercentReduction * 10 + paladin.AddStatDynamic(sim, stats.Expertise, expertise) + } + }, + + OnExpire: func(aura *core.Aura, sim *core.Simulation) { + if paladin.HasPrimeGlyph(proto.PaladinPrimeGlyph_GlyphOfSealOfTruth) { + expertise := core.ExpertisePerQuarterPercentReduction * 10 + paladin.AddStatDynamic(sim, stats.Expertise, -expertise) + } + }, + + OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + // Don't proc on misses or our own procs. + if !result.Landed() || spell == censureSpell || spell == judgementDmg || spell == onSpecialOrSwingProc { + return + } + + if spell.IsMelee() { + if censureSpell.Dot(result.Target).GetStacks() == 5 { + onSpecialOrSwingProc.Cast(sim, result.Target) + } + } + + if spell.ClassSpellMask&SpellMaskSingleTarget == 0 { + return + } + + dotResult := censureSpell.CalcOutcome(sim, result.Target, spell.OutcomeMeleeSpecialHit) + + if dotResult.Landed() { + dot := censureSpell.Dot(result.Target) + if !dot.IsActive() { + dot.Apply(sim) + } + dot.AddStack(sim) + dot.TakeSnapshot(sim, false) + dot.Activate(sim) + + } + }, + }) + + // Seal of Truth self-buff. + aura := paladin.SealOfTruthAura + paladin.RegisterSpell(core.SpellConfig{ + ActionID: core.ActionID{SpellID: 31801}, + SpellSchool: core.SpellSchoolHoly, + ProcMask: core.ProcMaskEmpty, + Flags: core.SpellFlagAPL, + + ManaCost: core.ManaCostOptions{ + BaseCost: 0.14, + Multiplier: 1, + }, + Cast: core.CastConfig{ + DefaultCast: core.Cast{ + GCD: core.GCDDefault, + }, + }, + + ThreatMultiplier: 1, + + ApplyEffects: func(sim *core.Simulation, _ *core.Unit, spell *core.Spell) { + if paladin.CurrentSeal != nil { + paladin.CurrentSeal.Deactivate(sim) + } + paladin.CurrentSeal = aura + paladin.CurrentJudgement = judgementDmg + paladin.CurrentSeal.Activate(sim) + }, + }) +} diff --git a/sim/paladin/talents.go b/sim/paladin/talents.go index d2ec1d91be..8ef67b5954 100644 --- a/sim/paladin/talents.go +++ b/sim/paladin/talents.go @@ -1,675 +1,115 @@ package paladin -// TODO: -// Sanctified Wrath (Damage penetration, questions over affected stats) +import ( + "time" -func (paladin *Paladin) ToughnessArmorMultiplier() float64 { - return 1.0 + 0.02*float64(paladin.Talents.Toughness) -} + "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/core/stats" +) func (paladin *Paladin) ApplyTalents() { - // paladin.AddStat(stats.MeleeCrit, float64(paladin.Talents.Conviction)*core.CritRatingPerCritChance) - // paladin.AddStat(stats.SpellCrit, float64(paladin.Talents.Conviction)*core.CritRatingPerCritChance) - // paladin.AddStat(stats.MeleeCrit, float64(paladin.Talents.SanctityOfBattle)*core.CritRatingPerCritChance) - // paladin.AddStat(stats.SpellCrit, float64(paladin.Talents.SanctityOfBattle)*core.CritRatingPerCritChance) - - // paladin.PseudoStats.BaseParry += 0.01 * float64(paladin.Talents.Deflection) - // paladin.PseudoStats.BaseDodge += 0.01 * float64(paladin.Talents.Anticipation) - - // paladin.ApplyEquipScaling(stats.Armor, paladin.ToughnessArmorMultiplier()) - - // if paladin.Talents.DivineStrength > 0 { - // paladin.MultiplyStat(stats.Strength, 1.0+0.03*float64(paladin.Talents.DivineStrength)) - // } - // if paladin.Talents.DivineIntellect > 0 { - // paladin.MultiplyStat(stats.Intellect, 1.0+0.02*float64(paladin.Talents.DivineIntellect)) - // } - - // if paladin.Talents.SheathOfLight > 0 { - // // doesn't implement HOT - // percentage := 0.10 * float64(paladin.Talents.SheathOfLight) - // paladin.AddStatDependency(stats.AttackPower, stats.SpellPower, percentage) - // } - - // if paladin.Talents.TouchedByTheLight > 0 { - // percentage := 0.20 * float64(paladin.Talents.TouchedByTheLight) - // paladin.AddStatDependency(stats.Strength, stats.SpellPower, percentage) - // } - - // if paladin.Talents.SacredDuty > 0 { - // paladin.MultiplyStat(stats.Stamina, 1.0+0.02*float64(paladin.Talents.SacredDuty)) - // } - - // if paladin.Talents.CombatExpertise > 0 { - // paladin.AddStat(stats.Expertise, core.ExpertisePerQuarterPercentReduction*2*float64(paladin.Talents.CombatExpertise)) - // paladin.AddStat(stats.MeleeCrit, core.CritRatingPerCritChance*2*float64(paladin.Talents.CombatExpertise)) - // paladin.AddStat(stats.SpellCrit, core.CritRatingPerCritChance*2*float64(paladin.Talents.CombatExpertise)) - // paladin.MultiplyStat(stats.Stamina, 1.0+0.02*float64(paladin.Talents.CombatExpertise)) - // } - - // if paladin.Talents.ShieldOfTheTemplar > 0 { - // paladin.PseudoStats.DamageTakenMultiplier *= 1 - 0.01*float64(paladin.Talents.ShieldOfTheTemplar) - // } - - // paladin.applyRedoubt() - // paladin.applyReckoning() - // paladin.applyArdentDefender() - // paladin.applyCrusade() - // paladin.applyWeaponSpecialization() - // paladin.applyVengeance() - // paladin.applyHeartOfTheCrusader() - // paladin.applyVindication() - // paladin.applyArtOfWar() - // paladin.applyJudgementsOfTheJust() - // paladin.applyJudgementsOfTheWise() - // paladin.applyRighteousVengeance() - // paladin.applyMinorGlyphOfSenseUndead() - // paladin.applyGuardedByTheLight() + paladin.ApplyCrusade() + paladin.ApplyRuleOfLaw() + paladin.ApplySealsOfThePure() + paladin.ApplyArbitorOfTheLight() + paladin.ApplyProtectorOfTheInnocent() + paladin.ApplyJudgementsOfThePure() } -// func (paladin *Paladin) getTalentSealsOfThePureBonus() float64 { -// return 0.03 * float64(paladin.Talents.SealsOfThePure) -// } - -// func (paladin *Paladin) getTalentTwoHandedWeaponSpecializationBonus() float64 { -// return 0.02 * float64(paladin.Talents.TwoHandedWeaponSpecialization) -// } - -// func (paladin *Paladin) getTalentSanctityOfBattleBonus() float64 { -// return 0.05 * float64(paladin.Talents.SanctityOfBattle) -// } - -// func (paladin *Paladin) getTalentTheArtOfWarBonus() float64 { -// return 0.05 * float64(paladin.Talents.TheArtOfWar) -// } - -// func (paladin *Paladin) getMajorGlyphSealOfRighteousnessBonus() float64 { -// return core.TernaryFloat64(paladin.HasMajorGlyph(proto.PaladinMajorGlyph_GlyphOfSealOfRighteousness), .1, 0) -// } - -// func (paladin *Paladin) getMajorGlyphOfExorcismBonus() float64 { -// return core.TernaryFloat64(paladin.HasMajorGlyph(proto.PaladinMajorGlyph_GlyphOfExorcism), 0.20, 0) -// } - -// func (paladin *Paladin) getMajorGlyphOfJudgementBonus() float64 { -// return core.TernaryFloat64(paladin.HasMajorGlyph(proto.PaladinMajorGlyph_GlyphOfJudgement), 0.10, 0) -// } - -// func (paladin *Paladin) applyMinorGlyphOfSenseUndead() { -// if !paladin.HasMinorGlyph(proto.PaladinMinorGlyph_GlyphOfSenseUndead) { -// return -// } - -// var applied bool - -// paladin.RegisterResetEffect( -// func(s *core.Simulation) { -// if !applied { -// for i := int32(0); i < paladin.Env.GetNumTargets(); i++ { -// unit := paladin.Env.GetTargetUnit(i) -// if unit.MobType == proto.MobType_MobTypeUndead { -// paladin.AttackTables[unit.UnitIndex].DamageDealtMultiplier *= 1.01 -// } -// } -// applied = true -// } -// }, -// ) -// } - -// func (paladin *Paladin) applyRedoubt() { -// if paladin.Talents.Redoubt == 0 { -// return -// } - -// actionID := core.ActionID{SpellID: 20132} - -// bonusBlockRating := 10 * core.BlockRatingPerBlockChance * float64(paladin.Talents.Redoubt) - -// procAura := paladin.RegisterAura(core.Aura{ -// Label: "Redoubt Proc", -// ActionID: actionID, -// Duration: time.Second * 10, -// MaxStacks: 5, -// OnGain: func(aura *core.Aura, sim *core.Simulation) { -// paladin.AddStatDynamic(sim, stats.Block, bonusBlockRating) -// }, -// OnExpire: func(aura *core.Aura, sim *core.Simulation) { -// paladin.AddStatDynamic(sim, stats.Block, -bonusBlockRating) -// }, -// OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if result.Outcome.Matches(core.OutcomeBlock) { -// aura.RemoveStack(sim) -// } -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Redoubt", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if result.Landed() && spell.ProcMask.Matches(core.ProcMaskMeleeOrRanged) { -// if sim.RandomFloat("Redoubt") < 0.1 { -// procAura.Activate(sim) -// procAura.SetStacks(sim, 5) -// } -// } -// }, -// }) -// } - -// func (paladin *Paladin) applyReckoning() { -// if paladin.Talents.Reckoning == 0 { -// return -// } - -// actionID := core.ActionID{SpellID: 20182} -// procChance := 0.02 * float64(paladin.Talents.Reckoning) - -// var reckoningSpell *core.Spell - -// procAura := paladin.RegisterAura(core.Aura{ -// Label: "Reckoning Proc", -// ActionID: actionID, -// Duration: time.Second * 8, -// MaxStacks: 4, -// OnInit: func(aura *core.Aura, sim *core.Simulation) { -// config := *paladin.AutoAttacks.MHConfig() -// config.ActionID = actionID -// reckoningSpell = paladin.GetOrRegisterSpell(config) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if spell == paladin.AutoAttacks.MHAuto() { -// reckoningSpell.Cast(sim, result.Target) -// } -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Reckoning", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if result.Landed() && sim.RandomFloat("Reckoning") < procChance { -// procAura.Activate(sim) -// procAura.SetStacks(sim, 4) -// } -// }, -// }) -// } - -// func (paladin *Paladin) applyArdentDefender() { -// if paladin.Talents.ArdentDefender == 0 { -// return -// } - -// var ardentDamageReduction float64 -// switch paladin.Talents.ArdentDefender { -// case 1: -// ardentDamageReduction = 0.07 -// case 2: -// ardentDamageReduction = 0.13 -// case 3: -// ardentDamageReduction = 0.20 -// } - -// // 540 defense (+140) yields the full heal amount -// ardentHealAmount := max(1.0, float64(paladin.GetStat(stats.Defense))/core.DefenseRatingPerDefense/140.0) * 0.10 * float64(paladin.Talents.ArdentDefender) - -// // TBD? Buff to mark time spent fully below 35% and attribute absorbs -// // rangeAura := paladin.RegisterAura(core.Aura{ -// // Label: "Ardent Defender (Active)", -// // ActionID: core.ActionID{SpellID: 31852}, -// // Duration: core.NeverExpires, -// // }) - -// // paladin.RegisterAura(core.Aura{ -// // Label: "Ardent Defender Talent", -// // Duration: core.NeverExpires, -// // OnReset: func(aura *core.Aura, sim *core.Simulation) { -// // aura.Activate(sim) -// // }, -// // OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// // if aura.Unit.CurrentHealthPercent() < 0.35 { -// // procAura.Activate(sim) -// // } -// // }, -// // }) - -// // Debuff to show that AD has procced -// procAura := paladin.RegisterAura(core.Aura{ -// Label: "Ardent Defender", -// ActionID: core.ActionID{SpellID: 66233}, -// Duration: time.Second * 120.0, -// }) - -// // Spell to heal you when AD has procced; fire this before fatal damage so that a Death is not detected -// procHeal := paladin.RegisterSpell(core.SpellConfig{ -// ActionID: core.ActionID{SpellID: 66233}, -// SpellSchool: core.SpellSchoolHoly, -// ProcMask: core.ProcMaskSpellHealing, -// CritMultiplier: 1, // Assuming this can't really crit? -// ThreatMultiplier: 0.25, -// DamageMultiplier: 1, -// ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { -// spell.CalcAndDealHealing(sim, &paladin.Unit, ardentHealAmount*paladin.MaxHealth(), spell.OutcomeHealingCrit) -// }, -// }) - -// // >= 0.35, no effect -// // < 0.35, pro-rated DR -// // =< 0, proc death save -// paladin.AddDynamicDamageTakenModifier(func(sim *core.Simulation, _ *core.Spell, result *core.SpellResult) { -// incomingDamage := result.Damage -// if (paladin.CurrentHealth()-incomingDamage)/paladin.MaxHealth() <= 0.35 { -// //rangeAura.Activate(sim) -// result.Damage -= (paladin.MaxHealth()*0.35 - (paladin.CurrentHealth() - incomingDamage)) * ardentDamageReduction -// if sim.Log != nil { -// paladin.Log(sim, "Ardent Defender reduced damage by %d", int32(incomingDamage-result.Damage)) -// } - -// incomingDamage2 := result.Damage - -// // Now check death save, based on the reduced damage -// if (result.Damage >= paladin.CurrentHealth()) && !procAura.IsActive() { -// if paladin.CurrentHealth()+ardentHealAmount*paladin.MaxHealth() > paladin.MaxHealth() { -// // We will overheal and wind up at the wrong HP value... Let's work around this -// // TODO: Find a cleaner way to do this, using absorbs? -// procHeal.Cast(sim, &paladin.Unit) -// result.Damage = paladin.CurrentHealth() - ardentHealAmount*paladin.MaxHealth() -// if sim.Log != nil { -// paladin.Log(sim, "Ardent Defender proc reduced overkill damage by %d, compensating for overheal", int32(incomingDamage2-result.Damage)) -// } -// } else { -// // Cleanest handling for < 70% HP, includes proper healing amount in metrics -// result.Damage = paladin.CurrentHealth() -// procHeal.Cast(sim, &paladin.Unit) -// if sim.Log != nil { -// paladin.Log(sim, "Ardent Defender proc reduced overkill damage by %d", int32(incomingDamage2-result.Damage)) -// } -// } -// procAura.Activate(sim) -// } -// } -// // TODO: Metrics, attribute reduced damage as absorption -// }) -// } - -// // Because Crusade modifies unit specific attack tables, it must be applied at start of sim. -// func (paladin *Paladin) applyCrusade() { -// if paladin.Talents.Crusade == 0 { -// return -// } - -// var applied bool - -// paladin.RegisterResetEffect( -// func(s *core.Simulation) { -// if !applied { -// for i := int32(0); i < paladin.Env.GetNumTargets(); i++ { -// unit := paladin.Env.GetTargetUnit(i) -// crusadeMod := 1.0 + (0.01 * float64(paladin.Talents.Crusade)) -// switch unit.MobType { -// case proto.MobType_MobTypeHumanoid, proto.MobType_MobTypeDemon, proto.MobType_MobTypeUndead, proto.MobType_MobTypeElemental: -// paladin.AttackTables[unit.UnitIndex].DamageDealtMultiplier *= crusadeMod * crusadeMod -// default: -// paladin.AttackTables[unit.UnitIndex].DamageDealtMultiplier *= crusadeMod -// } -// } -// applied = true -// } -// }, -// ) -// } - -// // Prior to WOTLK, behavior was to double dip. -// func (paladin *Paladin) MeleeCritMultiplier() float64 { -// // return paladin.Character.MeleeCritMultiplier(paladin.crusadeMultiplier(), 0) -// return paladin.DefaultMeleeCritMultiplier() -// } -// func (paladin *Paladin) SpellCritMultiplier() float64 { -// // return paladin.Character.SpellCritMultiplier(paladin.crusadeMultiplier(), 0) -// return paladin.DefaultSpellCritMultiplier() -// } - -// // Affects all physical damage or spells that can be rolled as physical -// // It affects white, Windfury, Crusader Strike, Seals, and Judgement of Command / Blood -// func (paladin *Paladin) applyWeaponSpecialization() { -// // This impacts Crusader Strike, Melee Attacks, WF attacks -// // Seals + Judgements need to be implemented separately -// mhWeapon := paladin.GetMHWeapon() - -// if mhWeapon == nil { -// return -// } - -// switch mhWeapon.HandType { -// case proto.HandType_HandTypeTwoHand: -// paladin.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] *= 1 + 0.02*float64(paladin.Talents.TwoHandedWeaponSpecialization) -// case proto.HandType_HandTypeOneHand, proto.HandType_HandTypeMainHand: -// if paladin.Talents.OneHandedWeaponSpecialization > 0 { -// // Talent points are 4%, 7%, 10% -// paladin.PseudoStats.DamageDealtMultiplier *= 1.01 + 0.03*float64(paladin.Talents.OneHandedWeaponSpecialization) -// } -// } -// } - -// func (paladin *Paladin) maybeProcVengeance(sim *core.Simulation, result *core.SpellResult) { -// if result.DidCrit() && paladin.Talents.Vengeance > 0 { -// paladin.VengeanceAura.Activate(sim) -// paladin.VengeanceAura.AddStack(sim) -// } -// } - -// // I don't know if the new stack of vengeance applies to the crit that triggered it or not -// // Need to check this -// func (paladin *Paladin) applyVengeance() { -// if paladin.Talents.Vengeance == 0 { -// return -// } - -// bonusPerStack := 0.01 * float64(paladin.Talents.Vengeance) -// paladin.VengeanceAura = paladin.RegisterAura(core.Aura{ -// Label: "Vengeance Proc", -// ActionID: core.ActionID{SpellID: 20057}, -// Duration: time.Second * 30, -// MaxStacks: 3, -// OnStacksChange: func(aura *core.Aura, sim *core.Simulation, oldStacks int32, newStacks int32) { -// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] /= 1 + (bonusPerStack * float64(oldStacks)) -// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] /= 1 + (bonusPerStack * float64(oldStacks)) - -// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexHoly] *= 1 + (bonusPerStack * float64(newStacks)) -// aura.Unit.PseudoStats.SchoolDamageDealtMultiplier[stats.SchoolIndexPhysical] *= 1 + (bonusPerStack * float64(newStacks)) -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Vengeance", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// paladin.maybeProcVengeance(sim, result) -// }, -// }) -// } - -// func (paladin *Paladin) applyHeartOfTheCrusader() { -// if paladin.Talents.HeartOfTheCrusader == 0 { -// return -// } - -// hotcAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { -// return core.HeartOfTheCrusaderDebuff(target, paladin.Talents.HeartOfTheCrusader) -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Heart of the Crusader", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if spell.Flags.Matches(SpellFlagSecondaryJudgement) { -// hotcAuras.Get(result.Target).Activate(sim) -// } -// }, -// }) -// } - -// func (paladin *Paladin) applyVindication() { -// if paladin.Talents.Vindication == 0 { -// return -// } - -// vindicationAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { -// return core.VindicationAura(target, paladin.Talents.Vindication) -// }) -// paladin.RegisterAura(core.Aura{ -// Label: "Vindication Talent", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// // TODO: Replace with actual proc mask / proc chance -// if result.Landed() && spell.ProcMask.Matches(core.ProcMaskMelee) { -// vindicationAuras.Get(result.Target).Activate(sim) -// } -// }, -// }) -// } - -// func (paladin *Paladin) applyArtOfWar() { -// if paladin.Talents.TheArtOfWar == 0 { -// return -// } - -// castTimeReduction := 0.5 * float64(paladin.Talents.TheArtOfWar) -// paladin.ArtOfWarInstantCast = paladin.RegisterAura(core.Aura{ -// Label: "Art Of War", -// ActionID: core.ActionID{SpellID: 53488}, -// Duration: time.Second * 15, -// OnGain: func(aura *core.Aura, sim *core.Simulation) { -// paladin.Exorcism.CastTimeMultiplier -= castTimeReduction -// }, -// OnExpire: func(aura *core.Aura, sim *core.Simulation) { -// paladin.Exorcism.CastTimeMultiplier += castTimeReduction -// }, -// OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { -// if spell == paladin.Exorcism { -// aura.Deactivate(sim) -// } -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "The Art of War", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if !spell.IsMelee() && !spell.Flags.Matches(SpellFlagSecondaryJudgement) { -// return -// } - -// if spell == paladin.HammerOfWrath { -// return -// } - -// if !result.Outcome.Matches(core.OutcomeCrit) { -// return -// } - -// paladin.ArtOfWarInstantCast.Activate(sim) -// }, -// }) -// } - -// func (paladin *Paladin) applyJudgementsOfTheJust() { -// if paladin.Talents.JudgementsOfTheJust == 0 { -// return -// } - -// jojAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { -// return core.JudgementsOfTheJustAura(target, paladin.Talents.JudgementsOfTheJust) -// }) -// // This application can proc stuff -// jojApplicationSpell := paladin.RegisterSpell(core.SpellConfig{ -// ActionID: core.ActionID{SpellID: 68055}, -// ProcMask: core.ProcMaskProc, -// ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { -// jojAuras.Get(target).Activate(sim) -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Judgements Of The Just Talent", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if result.Landed() && spell.Flags.Matches(SpellFlagPrimaryJudgement) { -// jojApplicationSpell.Cast(sim, result.Target) -// } -// }, -// }) -// } - -// func (paladin *Paladin) applyJudgementsOfTheWise() { -// if paladin.Talents.JudgementsOfTheWise == 0 { -// return -// } - -// procChance := float64(paladin.Talents.JudgementsOfTheWise) / 3 -// paladin.JowiseManaMetrics = paladin.NewManaMetrics(core.ActionID{SpellID: 31878}) -// replSrc := paladin.Env.Raid.NewReplenishmentSource(core.ActionID{SpellID: 31878}) - -// procSpell := paladin.RegisterSpell(core.SpellConfig{ -// ActionID: core.ActionID{SpellID: 31878}, -// ApplyEffects: func(sim *core.Simulation, unit *core.Unit, _ *core.Spell) { -// paladin.AddMana(sim, paladin.BaseMana*0.25, paladin.JowiseManaMetrics) -// paladin.Env.Raid.ProcReplenishment(sim, replSrc) -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Judgements of the Wise", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if !spell.Flags.Matches(SpellFlagSecondaryJudgement) || !result.Landed() { -// return -// } - -// if procChance == 1 || sim.RandomFloat("judgements of the wise") < procChance { -// procSpell.Cast(sim, nil) -// } -// }, -// }) -// } - -// func (paladin *Paladin) applyRighteousVengeance() { -// // Righteous Vengeance is a MAGIC debuff that pools 10/20/30% crit damage from Crusader Strike, Divine Storm, and Judgements. -// // It drains the pool every 2 seconds at a rate of 1/4 of the pool size. -// // And then deals that 1/4 as PHYSICAL damage. -// if paladin.Talents.RighteousVengeance == 0 { -// return -// } - -// dotActionID := core.ActionID{SpellID: 61840} // Righteous Vengeance - -// rvDot := paladin.RegisterSpell(core.SpellConfig{ -// ActionID: dotActionID.WithTag(2), -// SpellSchool: core.SpellSchoolHoly, -// ProcMask: core.ProcMaskEmpty, -// Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagMeleeMetrics | core.SpellFlagIgnoreModifiers, - -// DamageMultiplier: 1, -// CritMultiplier: paladin.MeleeCritMultiplier(), -// ThreatMultiplier: 1, - -// Dot: core.DotConfig{ -// Aura: core.Aura{ -// Label: "Righteous Vengeance", -// }, -// NumberOfTicks: 4, -// TickLength: time.Second * 2, - -// OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { -// if paladin.HasTuralyonsOrLiadrinsBattlegear2Pc { -// dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.Spell.OutcomeMeleeSpecialCritOnly) -// } else { -// dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.Spell.OutcomeAlwaysHit) -// } -// }, -// }, -// }) - -// rvSpell := paladin.RegisterSpell(core.SpellConfig{ -// ActionID: dotActionID.WithTag(1), -// SpellSchool: core.SpellSchoolHoly, -// ProcMask: core.ProcMaskProc, -// Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagIgnoreModifiers, - -// ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { -// rvDot.Dot(target).ApplyOrReset(sim) -// spell.CalcAndDealOutcome(sim, target, spell.OutcomeAlwaysHit) -// }, -// }) - -// paladin.RegisterAura(core.Aura{ -// Label: "Righteous Vengeance", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if !result.DidCrit() { -// return -// } -// if spell != paladin.CrusaderStrike && spell != paladin.DivineStorm && !spell.Flags.Matches(SpellFlagSecondaryJudgement) { -// return -// } - -// dot := rvDot.Dot(result.Target) - -// newDamage := result.Damage * (0.10 * float64(paladin.Talents.RighteousVengeance)) -// outstandingDamage := core.TernaryFloat64(dot.IsActive(), dot.SnapshotBaseDamage*float64(dot.NumberOfTicks-dot.TickCount), 0) - -// dot.SnapshotAttackerMultiplier = 1 -// dot.SnapshotBaseDamage = (outstandingDamage + newDamage) / float64(dot.NumberOfTicks) -// rvSpell.Cast(sim, result.Target) -// }, -// }) -// } - -// //nolint:unused -// func (paladin *Paladin) applyFanaticism() { -// // TODO: Possibly implement as aura. -// if paladin.Talents.Fanaticism == 0 { -// return -// } +// Retribution Talents first two rows +func (paladin *Paladin) ApplyCrusade() { + if paladin.Talents.Crusade == 0 { + return + } + paladin.AddStaticMod(core.SpellModConfig{ + ClassMask: SpellMaskCrusaderStrike | SpellMaskDivineStorm | SpellMaskTemplarsVerdict | SpellMaskHolyShock, + Kind: core.SpellMod_DamageDone_Flat, + FloatValue: 0.1 * float64(paladin.Talents.Crusade), + }) + + // TODO: Add Healing Mod for Holy Shock +} -// paladin.PseudoStats.ThreatMultiplier *= 1 - 0.10*float64(paladin.Talents.Fanaticism) -// } +func (paladin *Paladin) ApplyRuleOfLaw() { + if paladin.Talents.RuleOfLaw == 0 { + return + } + paladin.AddStaticMod(core.SpellModConfig{ + ClassMask: SpellMaskCrusaderStrike | SpellMaskWordOfGlory | SpellMaskHammerOfTheRighteous, + Kind: core.SpellMod_BonusCrit_Rating, + FloatValue: 5 * float64(paladin.Talents.RuleOfLaw) * core.CritRatingPerCritChance, + }) +} -// func (paladin *Paladin) applyGuardedByTheLight() { -// if paladin.Talents.GuardedByTheLight == 0 { -// return -// } +// Protection Talents first two rows +func (paladin *Paladin) ApplySealsOfThePure() { + if paladin.Talents.SealsOfThePure == 0 { + return + } + paladin.AddStaticMod(core.SpellModConfig{ + ClassMask: SpellMaskSealOfRighteousness | SpellMaskSealOfTruth | SpellmaskSealofJustice, + Kind: core.SpellMod_DamageDone_Pct, + FloatValue: 0.06 * float64(paladin.Talents.SealsOfThePure), + }) +} -// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexArcane] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) -// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexFire] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) -// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexFrost] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) -// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexHoly] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) -// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexNature] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) -// paladin.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexShadow] *= 1 - 0.03*float64(paladin.Talents.GuardedByTheLight) +// Holy Talents first two rows +func (paladin *Paladin) ApplyArbitorOfTheLight() { + if paladin.Talents.ArbiterOfTheLight == 0 { + return + } + paladin.AddStaticMod(core.SpellModConfig{ + ClassMask: SpellMaskJudgement, + Kind: core.SpellMod_BonusCrit_Rating, + FloatValue: 6 * float64(paladin.Talents.ArbiterOfTheLight) * core.CritRatingPerCritChance, + }) +} -// paladin.RegisterAura(core.Aura{ -// Label: "Guarded By The Light", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// if !result.Landed() { -// return -// } +func (paladin *Paladin) ApplyProtectorOfTheInnocent() { + if paladin.Talents.ProtectorOfTheInnocent == 0 { + return + } + // TODO: Implement as a aura +} -// if paladin.DivinePleaAura.IsActive() { -// paladin.DivinePleaAura.Refresh(sim) -// } -// }, -// }) -// } +// Might need Rework +func (paladin *Paladin) ApplyJudgementsOfThePure() { + if paladin.Talents.JudgementsOfThePure == 0 { + return + } + actionId := core.ActionID{SpellID: 53657} + + hasteAmount := 3 * float64(paladin.Talents.JudgementsOfThePure) * core.HasteRatingPerHastePercent + + jotpAura := paladin.GetOrRegisterAura(core.Aura{ + Label: "Judgements of the Pure", + ActionID: actionId, + Duration: 60 * time.Second, + OnGain: func(aura *core.Aura, sim *core.Simulation) { + + paladin.AddStatDynamic(sim, stats.SpellHaste, hasteAmount) + paladin.AddStatDynamic(sim, stats.MeleeHaste, hasteAmount) + + // TODO: Add Spirit Mod + }, + OnExpire: func(aura *core.Aura, sim *core.Simulation) { + paladin.AddStatDynamic(sim, stats.SpellHaste, -hasteAmount) + paladin.AddStatDynamic(sim, stats.MeleeHaste, -hasteAmount) + + // Todo: Remove Spirit Mod + }, + }) + + core.MakeProcTriggerAura(&paladin.Unit, core.ProcTrigger{ + Name: "Judgements of the Pure", + ActionID: actionId, + Callback: core.CallbackOnCastComplete, + ClassSpellMask: SpellMaskJudgement, + + ProcChance: 1.0, + + Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + jotpAura.Activate(sim) + }, + }) +} diff --git a/sim/priest/shadow/TestShadow.results b/sim/priest/shadow/TestShadow.results index 12a08f7e6c..a38056defa 100644 --- a/sim/priest/shadow/TestShadow.results +++ b/sim/priest/shadow/TestShadow.results @@ -74,7 +74,7 @@ dps_results: { value: { dps: 26707.24711 tps: 25358.84921 - hps: 89.19301 + hps: 97.40647 } } dps_results: { @@ -367,8 +367,8 @@ dps_results: { dps_results: { key: "TestShadow-AllItems-Figurine-DemonPanther-52199" value: { - dps: 26669.90148 - tps: 25339.14684 + dps: 26691.06438 + tps: 25351.30566 } } dps_results: { @@ -486,8 +486,8 @@ dps_results: { dps_results: { key: "TestShadow-AllItems-HarmlightToken-63839" value: { - dps: 27584.98036 - tps: 26226.37838 + dps: 27582.25225 + tps: 26211.91696 } } dps_results: { diff --git a/sim/rogue/ambush.go b/sim/rogue/ambush.go index 7a00cc5586..443f427c1b 100644 --- a/sim/rogue/ambush.go +++ b/sim/rogue/ambush.go @@ -10,13 +10,14 @@ func (rogue *Rogue) registerAmbushSpell() { baseDamage := rogue.ClassSpellScaling * 0.32699999213 rogue.Ambush = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 8676}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 8676}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ClassSpellMask: RogueSpellAmbush, EnergyCost: core.EnergyCostOptions{ - Cost: rogue.GetGeneratorCostModifier(60 - []float64{0, 7, 14, 20}[rogue.Talents.SlaughterFromTheShadows]), + Cost: 60 - []float64{0, 7, 14, 20}[rogue.Talents.SlaughterFromTheShadows], Refund: 0, }, Cast: core.CastConfig{ @@ -54,4 +55,9 @@ func (rogue *Rogue) registerAmbushSpell() { } }, }) + + rogue.RegisterOnItemSwap(func(s *core.Simulation) { + // Recalculate Ambush's multiplier in case the MH weapon changed. + rogue.Ambush.DamageMultiplier = core.TernaryFloat64(rogue.HasDagger(core.MainHand), 2.86, 1.97) + }) } diff --git a/sim/rogue/assassination/TestAssassination.results b/sim/rogue/assassination/TestAssassination.results index bcb4c68ebe..bb51d2455b 100644 --- a/sim/rogue/assassination/TestAssassination.results +++ b/sim/rogue/assassination/TestAssassination.results @@ -37,1576 +37,1576 @@ character_stats_results: { dps_results: { key: "TestAssassination-AllItems-AgileShadowspiritDiamond" value: { - dps: 29980.06751 - tps: 21285.84794 + dps: 30362.89417 + tps: 21557.65486 } } dps_results: { key: "TestAssassination-AllItems-Althor'sAbacus-50366" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Anhuur'sHymnal-55889" value: { - dps: 28216.88144 - tps: 20033.98582 + dps: 28768.59882 + tps: 20425.70516 } } dps_results: { key: "TestAssassination-AllItems-Anhuur'sHymnal-56407" value: { - dps: 28413.97963 - tps: 20173.92554 + dps: 28809.44425 + tps: 20454.70542 } } dps_results: { key: "TestAssassination-AllItems-AustereShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20926.21056 + dps: 29843.90745 + tps: 21189.17429 } } dps_results: { key: "TestAssassination-AllItems-BaubleofTrueBlood-50726" value: { - dps: 27471.67041 - tps: 19504.88599 - hps: 82.64541 + dps: 27915.19812 + tps: 19819.79067 + hps: 85.45007 } } dps_results: { key: "TestAssassination-AllItems-BedrockTalisman-58182" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-BellofEnragingResonance-59326" value: { - dps: 28030.58845 - tps: 19901.7178 + dps: 28283.91032 + tps: 20081.57633 } } dps_results: { key: "TestAssassination-AllItems-BellofEnragingResonance-65053" value: { - dps: 28049.98516 - tps: 19915.48946 + dps: 28339.02593 + tps: 20120.70841 } } dps_results: { key: "TestAssassination-AllItems-BindingPromise-67037" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 28729.98695 - tps: 20398.29073 + dps: 29145.03731 + tps: 20692.97649 } } dps_results: { key: "TestAssassination-AllItems-BloodofIsiset-55995" value: { - dps: 27872.97056 - tps: 19789.8091 + dps: 28316.44574 + tps: 20104.67648 } } dps_results: { key: "TestAssassination-AllItems-BloodofIsiset-56414" value: { - dps: 27925.52177 - tps: 19827.12045 + dps: 28368.99007 + tps: 20141.98295 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 29110.04924 - tps: 20668.13496 + dps: 29459.72262 + tps: 20916.40306 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 28028.06713 - tps: 19899.92766 + dps: 28475.48307 + tps: 20217.59298 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 28007.11669 - tps: 19885.05285 + dps: 28266.15475 + tps: 20068.96987 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 28780.02891 - tps: 20433.82052 + dps: 29179.97012 + tps: 20717.77879 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 27979.34201 - tps: 19865.33283 + dps: 28424.10098 + tps: 20181.1117 } } dps_results: { key: "TestAssassination-AllItems-BottledLightning-66879" value: { - dps: 27600.17067 - tps: 19596.12117 + dps: 28048.04285 + tps: 19914.11042 } } dps_results: { key: "TestAssassination-AllItems-BracingShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20507.68635 + dps: 29843.90745 + tps: 20765.3908 } } dps_results: { key: "TestAssassination-AllItems-BurningShadowspiritDiamond" value: { - dps: 29816.06649 - tps: 21169.40721 + dps: 30189.29336 + tps: 21434.39829 } } dps_results: { key: "TestAssassination-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 29841.67659 - tps: 21187.59038 + dps: 30184.36527 + tps: 21430.89934 } } dps_results: { key: "TestAssassination-AllItems-CoreofRipeness-58184" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-CorpseTongueCoin-50349" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-CrushingWeight-59506" value: { - dps: 28707.03366 - tps: 20381.9939 + dps: 28978.98699 + tps: 20575.08076 } } dps_results: { key: "TestAssassination-AllItems-CrushingWeight-65118" value: { - dps: 28864.81476 - tps: 20494.01848 + dps: 29174.41355 + tps: 20713.83362 } } dps_results: { key: "TestAssassination-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 28595.19808 - tps: 20302.59064 + dps: 28811.70837 + tps: 20456.31294 } } dps_results: { key: "TestAssassination-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 29371.86198 - tps: 20854.02201 + dps: 29618.21471 + tps: 21028.93245 } } dps_results: { key: "TestAssassination-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 28026.79395 - tps: 19899.02371 + dps: 28481.86203 + tps: 20222.12204 } } dps_results: { key: "TestAssassination-AllItems-Deathbringer'sWill-50363" value: { - dps: 28361.05077 - tps: 20136.34605 + dps: 28716.23201 + tps: 20388.52473 } } dps_results: { key: "TestAssassination-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 29496.14369 - tps: 20942.26202 + dps: 29837.86839 + tps: 21184.88656 } } dps_results: { key: "TestAssassination-AllItems-DislodgedForeignObject-50348" value: { - dps: 27751.54678 - tps: 19703.59822 + dps: 28124.99445 + tps: 19968.74606 } } dps_results: { key: "TestAssassination-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20926.21056 + dps: 29843.90745 + tps: 21189.17429 } } dps_results: { key: "TestAssassination-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-EmberShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20926.21056 + dps: 29843.90745 + tps: 21189.17429 } } dps_results: { key: "TestAssassination-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 29496.14369 - tps: 20942.26202 + dps: 29837.86839 + tps: 21184.88656 } } dps_results: { key: "TestAssassination-AllItems-EssenceoftheCyclone-59473" value: { - dps: 29218.00223 - tps: 20744.78158 + dps: 29551.54563 + tps: 20981.5974 } } dps_results: { key: "TestAssassination-AllItems-EssenceoftheCyclone-65140" value: { - dps: 29430.41107 - tps: 20895.59186 + dps: 29837.05577 + tps: 21184.3096 } } dps_results: { key: "TestAssassination-AllItems-EternalShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20926.21056 + dps: 29843.90745 + tps: 21189.17429 } } dps_results: { key: "TestAssassination-AllItems-FallofMortality-59500" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-FallofMortality-65124" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Figurine-DemonPanther-52199" value: { - dps: 29982.85146 - tps: 21287.82454 + dps: 30116.27363 + tps: 21382.55427 } } dps_results: { key: "TestAssassination-AllItems-Figurine-DreamOwl-52354" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Figurine-KingofBoars-52351" value: { - dps: 28456.19113 - tps: 20203.8957 + dps: 28903.19311 + tps: 20521.26711 } } dps_results: { key: "TestAssassination-AllItems-FleetShadowspiritDiamond" value: { - dps: 29567.64666 - tps: 20993.02913 + dps: 29937.66502 + tps: 21255.74217 } } dps_results: { key: "TestAssassination-AllItems-ForlornShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20926.21056 + dps: 29843.90745 + tps: 21189.17429 } } dps_results: { key: "TestAssassination-AllItems-FuryofAngerforge-59461" value: { - dps: 28702.04229 - tps: 20378.45002 + dps: 28952.3374 + tps: 20556.15955 } } dps_results: { key: "TestAssassination-AllItems-GaleofShadows-56138" value: { - dps: 27854.78139 - tps: 19776.89479 + dps: 28282.34216 + tps: 20080.46293 } } dps_results: { key: "TestAssassination-AllItems-GaleofShadows-56462" value: { - dps: 27803.80722 - tps: 19740.70313 + dps: 28311.36548 + tps: 20101.06949 } } dps_results: { key: "TestAssassination-AllItems-GearDetector-61462" value: { - dps: 28412.58644 - tps: 20172.93637 + dps: 28994.95919 + tps: 20586.42102 } } dps_results: { key: "TestAssassination-AllItems-Gladiator'sVestments" value: { - dps: 23740.44271 - tps: 16855.71433 + dps: 24055.49908 + tps: 17079.40434 } } dps_results: { key: "TestAssassination-AllItems-GlowingTwilightScale-54589" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-GraceoftheHerald-55266" value: { - dps: 28410.8524 - tps: 20171.70521 + dps: 28751.10752 + tps: 20413.28634 } } dps_results: { key: "TestAssassination-AllItems-GraceoftheHerald-56295" value: { - dps: 28819.3085 - tps: 20461.70904 + dps: 29223.00478 + tps: 20748.33339 } } dps_results: { key: "TestAssassination-AllItems-HarmlightToken-63839" value: { - dps: 27587.13956 - tps: 19586.86909 + dps: 28054.66243 + tps: 19918.81033 } } dps_results: { key: "TestAssassination-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 28171.90584 - tps: 20002.05314 + dps: 28621.04285 + tps: 20320.94043 } } dps_results: { key: "TestAssassination-AllItems-HeartofIgnacious-59514" value: { - dps: 28107.67205 - tps: 19956.44716 + dps: 28589.81708 + tps: 20298.77013 } } dps_results: { key: "TestAssassination-AllItems-HeartofIgnacious-65110" value: { - dps: 28047.80891 - tps: 19913.94433 + dps: 28594.33338 + tps: 20301.9767 } } dps_results: { key: "TestAssassination-AllItems-HeartofRage-59224" value: { - dps: 28624.02602 - tps: 20323.05847 + dps: 28966.21572 + tps: 20566.01316 } } dps_results: { key: "TestAssassination-AllItems-HeartofRage-65072" value: { - dps: 28786.11127 - tps: 20438.139 + dps: 29147.43731 + tps: 20694.68049 } } dps_results: { key: "TestAssassination-AllItems-HeartofSolace-55868" value: { - dps: 27854.78139 - tps: 19776.89479 + dps: 28282.34216 + tps: 20080.46293 } } dps_results: { key: "TestAssassination-AllItems-HeartofSolace-56393" value: { - dps: 28388.37226 - tps: 20155.7443 + dps: 28905.56173 + tps: 20522.94883 } } dps_results: { key: "TestAssassination-AllItems-HeartofThunder-55845" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-HeartofThunder-56370" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-HeartoftheVile-66969" value: { - dps: 28528.73508 - tps: 20255.40191 + dps: 28849.79756 + tps: 20483.35627 } } dps_results: { key: "TestAssassination-AllItems-Heartpierce-50641" value: { - dps: 29980.06751 - tps: 21285.84794 + dps: 30362.89417 + tps: 21557.65486 } } dps_results: { key: "TestAssassination-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 29496.14369 - tps: 20942.26202 + dps: 29837.86839 + tps: 21184.88656 } } dps_results: { key: "TestAssassination-AllItems-ImpatienceofYouth-62464" value: { - dps: 28581.83883 - tps: 20293.10557 + dps: 29029.26379 + tps: 20610.77729 } } dps_results: { key: "TestAssassination-AllItems-ImpatienceofYouth-62469" value: { - dps: 28581.83883 - tps: 20293.10557 + dps: 29029.26379 + tps: 20610.77729 } } dps_results: { key: "TestAssassination-AllItems-ImpetuousQuery-55881" value: { - dps: 27872.97056 - tps: 19789.8091 + dps: 28316.44574 + tps: 20104.67648 } } dps_results: { key: "TestAssassination-AllItems-ImpetuousQuery-56406" value: { - dps: 27925.52177 - tps: 19827.12045 + dps: 28368.99007 + tps: 20141.98295 } } dps_results: { key: "TestAssassination-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 27780.60782 - tps: 19724.23155 + dps: 28224.0951 + tps: 20039.10752 } } dps_results: { key: "TestAssassination-AllItems-JarofAncientRemedies-59354" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-JarofAncientRemedies-65029" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-JujuofNimbleness-63840" value: { - dps: 28729.98695 - tps: 20398.29073 + dps: 29145.03731 + tps: 20692.97649 } } dps_results: { key: "TestAssassination-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 29246.55745 - tps: 20765.05579 + dps: 29633.14714 + tps: 21039.53447 } } dps_results: { key: "TestAssassination-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 29796.2743 - tps: 21155.35475 + dps: 30205.20249 + tps: 21445.69377 } } dps_results: { key: "TestAssassination-AllItems-KvaldirBattleStandard-59685" value: { - dps: 27980.30246 - tps: 19866.01475 + dps: 28318.50467 + tps: 20106.13831 } } dps_results: { key: "TestAssassination-AllItems-KvaldirBattleStandard-59689" value: { - dps: 27980.30246 - tps: 19866.01475 + dps: 28318.50467 + tps: 20106.13831 } } dps_results: { key: "TestAssassination-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 27727.35269 - tps: 19686.42041 + dps: 28142.22324 + tps: 19980.9785 } } dps_results: { key: "TestAssassination-AllItems-LeadenDespair-55816" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-LeadenDespair-56347" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-LeftEyeofRajh-56102" value: { - dps: 29008.44753 - tps: 20595.99774 + dps: 29497.90516 + tps: 20943.51267 } } dps_results: { key: "TestAssassination-AllItems-LeftEyeofRajh-56427" value: { - dps: 29276.78621 - tps: 20786.51821 + dps: 29635.60969 + tps: 21041.28288 } } dps_results: { key: "TestAssassination-AllItems-LicensetoSlay-58180" value: { - dps: 29137.18865 - tps: 20687.40394 + dps: 29438.42889 + tps: 20901.28452 } } dps_results: { key: "TestAssassination-AllItems-MagnetiteMirror-55814" value: { - dps: 28128.34156 - tps: 19971.12251 + dps: 28573.53393 + tps: 20287.20909 } } dps_results: { key: "TestAssassination-AllItems-MagnetiteMirror-56345" value: { - dps: 28362.31336 - tps: 20137.24248 + dps: 28673.25591 + tps: 20358.0117 } } dps_results: { key: "TestAssassination-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-MarkofKhardros-56132" value: { - dps: 28281.70397 - tps: 20080.00982 + dps: 28729.11302 + tps: 20397.67024 } } dps_results: { key: "TestAssassination-AllItems-MarkofKhardros-56458" value: { - dps: 28388.68264 - tps: 20155.96468 + dps: 28836.59608 + tps: 20473.98322 } } dps_results: { key: "TestAssassination-AllItems-MightoftheOcean-55251" value: { - dps: 28298.8989 - tps: 20092.21822 + dps: 28871.70967 + tps: 20498.91387 } } dps_results: { key: "TestAssassination-AllItems-MightoftheOcean-56285" value: { - dps: 28875.86335 - tps: 20501.86298 + dps: 29279.2378 + tps: 20788.25884 } } dps_results: { key: "TestAssassination-AllItems-MirrorofBrokenImages-62466" value: { - dps: 27982.85036 - tps: 19867.82376 + dps: 28426.31116 + tps: 20182.68092 } } dps_results: { key: "TestAssassination-AllItems-MirrorofBrokenImages-62471" value: { - dps: 27982.85036 - tps: 19867.82376 + dps: 28426.31116 + tps: 20182.68092 } } dps_results: { key: "TestAssassination-AllItems-MoonwellChalice-70142" value: { - dps: 28140.46705 - tps: 19979.73161 + dps: 28574.83947 + tps: 20288.13602 } } dps_results: { key: "TestAssassination-AllItems-Oremantle'sFavor-61448" value: { - dps: 27988.0521 - tps: 19871.51699 + dps: 28416.91202 + tps: 20176.00753 } } dps_results: { key: "TestAssassination-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 27751.22511 - tps: 19703.36983 + dps: 28109.99797 + tps: 19958.09856 } } dps_results: { key: "TestAssassination-AllItems-PorcelainCrab-55237" value: { - dps: 27817.12343 - tps: 19750.15764 + dps: 28257.92307 + tps: 20063.12538 } } dps_results: { key: "TestAssassination-AllItems-PorcelainCrab-56280" value: { - dps: 28120.68124 - tps: 19965.68368 + dps: 28557.81901 + tps: 20276.0515 } } dps_results: { key: "TestAssassination-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 29473.536 - tps: 20926.21056 + dps: 29843.90745 + tps: 21189.17429 } } dps_results: { key: "TestAssassination-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 29318.36562 - tps: 20816.03959 + dps: 29769.36735 + tps: 21136.25082 } } dps_results: { key: "TestAssassination-AllItems-Rainsong-55854" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Rainsong-56377" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 29901.71709 - tps: 21230.21914 + dps: 30275.84649 + tps: 21495.85101 } } dps_results: { key: "TestAssassination-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 29816.06649 - tps: 21169.40721 + dps: 30189.29336 + tps: 21434.39829 } } dps_results: { key: "TestAssassination-AllItems-RightEyeofRajh-56100" value: { - dps: 28709.40657 - tps: 20383.67866 + dps: 29263.19793 + tps: 20776.87053 } } dps_results: { key: "TestAssassination-AllItems-RightEyeofRajh-56431" value: { - dps: 28959.96266 - tps: 20561.57349 + dps: 29377.17203 + tps: 20857.79214 } } dps_results: { key: "TestAssassination-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 28777.20945 - tps: 20431.81871 + dps: 29141.41696 + tps: 20690.40604 } } dps_results: { key: "TestAssassination-AllItems-SeaStar-55256" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-SeaStar-56290" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Shadowblade'sBattlegear" value: { - dps: 22482.62014 - tps: 15962.6603 + dps: 22266.55573 + tps: 15809.25457 } } dps_results: { key: "TestAssassination-AllItems-ShardofWoe-60233" value: { - dps: 28043.97759 - tps: 19911.22409 + dps: 28380.47645 + tps: 20150.13828 } } dps_results: { key: "TestAssassination-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 28353.71309 - tps: 20131.13629 + dps: 28721.52786 + tps: 20392.28478 } } dps_results: { key: "TestAssassination-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Skardyn'sGrace-56115" value: { - dps: 29008.51985 - tps: 20596.04909 + dps: 29362.3089 + tps: 20847.23932 } } dps_results: { key: "TestAssassination-AllItems-Skardyn'sGrace-56440" value: { - dps: 29195.81276 - tps: 20729.02706 + dps: 29546.87891 + tps: 20978.28402 } } dps_results: { key: "TestAssassination-AllItems-Sorrowsong-55879" value: { - dps: 27872.97056 - tps: 19789.8091 + dps: 28316.44574 + tps: 20104.67648 } } dps_results: { key: "TestAssassination-AllItems-Sorrowsong-56400" value: { - dps: 27925.52177 - tps: 19827.12045 + dps: 28368.99007 + tps: 20141.98295 } } dps_results: { key: "TestAssassination-AllItems-Soul'sAnguish-66994" value: { - dps: 28465.28526 - tps: 20210.35254 + dps: 29020.89367 + tps: 20604.83451 } } dps_results: { key: "TestAssassination-AllItems-SoulCasket-58183" value: { - dps: 27982.85036 - tps: 19867.82376 + dps: 28426.31116 + tps: 20182.68092 } } dps_results: { key: "TestAssassination-AllItems-Stonemother'sKiss-61411" value: { - dps: 27733.78348 - tps: 19690.98627 + dps: 28182.22235 + tps: 20009.37787 } } dps_results: { key: "TestAssassination-AllItems-StumpofTime-62465" value: { - dps: 28541.01414 - tps: 20264.12004 + dps: 28837.46385 + tps: 20474.59933 } } dps_results: { key: "TestAssassination-AllItems-StumpofTime-62470" value: { - dps: 28541.01414 - tps: 20264.12004 + dps: 28837.46385 + tps: 20474.59933 } } dps_results: { key: "TestAssassination-AllItems-SymbioticWorm-59332" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-SymbioticWorm-65048" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 27753.51029 - tps: 19704.9923 + dps: 28190.75381 + tps: 20015.4352 } } dps_results: { key: "TestAssassination-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 28295.49784 - tps: 20089.80346 + dps: 28717.74382 + tps: 20389.59811 } } dps_results: { key: "TestAssassination-AllItems-TearofBlood-55819" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-TearofBlood-56351" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 27814.0495 - tps: 19747.97515 + dps: 28257.5324 + tps: 20062.848 } } dps_results: { key: "TestAssassination-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 27925.52177 - tps: 19827.12045 + dps: 28368.99007 + tps: 20141.98295 } } dps_results: { key: "TestAssassination-AllItems-Theralion'sMirror-59519" value: { - dps: 28023.81808 - tps: 19896.91084 + dps: 28460.10747 + tps: 20206.6763 } } dps_results: { key: "TestAssassination-AllItems-Theralion'sMirror-65105" value: { - dps: 28102.98905 - tps: 19953.12222 + dps: 28548.55307 + tps: 20269.47268 } } dps_results: { key: "TestAssassination-AllItems-Throngus'sFinger-56121" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Throngus'sFinger-56449" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-Tia'sGrace-55874" value: { - dps: 29116.92673 - tps: 20673.01798 + dps: 29436.75674 + tps: 20900.09729 } } dps_results: { key: "TestAssassination-AllItems-Tia'sGrace-56394" value: { - dps: 29307.30349 - tps: 20808.18548 + dps: 29645.81751 + tps: 21048.53044 } } dps_results: { key: "TestAssassination-AllItems-TinyAbominationinaJar-50706" value: { - dps: 28398.69011 - tps: 20163.06998 + dps: 28969.50882 + tps: 20568.35127 } } dps_results: { key: "TestAssassination-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 27448.8337 - tps: 19488.67193 + dps: 27850.03753 + tps: 19773.52664 } } dps_results: { key: "TestAssassination-AllItems-UnheededWarning-59520" value: { - dps: 29339.15062 - tps: 20830.79694 + dps: 29687.39688 + tps: 21078.05178 } } dps_results: { key: "TestAssassination-AllItems-UnquenchableFlame-67101" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-UnsolvableRiddle-62463" value: { - dps: 29422.20458 - tps: 20889.76525 + dps: 29862.48744 + tps: 21202.36608 } } dps_results: { key: "TestAssassination-AllItems-UnsolvableRiddle-62468" value: { - dps: 29422.20458 - tps: 20889.76525 + dps: 29862.48744 + tps: 21202.36608 } } dps_results: { key: "TestAssassination-AllItems-UnsolvableRiddle-68709" value: { - dps: 29422.20458 - tps: 20889.76525 + dps: 29862.48744 + tps: 21202.36608 } } dps_results: { key: "TestAssassination-AllItems-VialofStolenMemories-59515" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-VialofStolenMemories-65109" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 28885.51517 - tps: 20508.71577 + dps: 29326.25482 + tps: 20821.64092 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 28059.18142 - tps: 19922.01881 + dps: 28506.8148 + tps: 20239.83851 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 28557.71843 - tps: 20275.98008 + dps: 28879.12708 + tps: 20504.18022 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 27982.04053 - tps: 19867.24878 + dps: 28453.1455 + tps: 20201.7333 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 28027.50305 - tps: 19899.52716 + dps: 28299.17476 + tps: 20092.41408 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 28039.39453 - tps: 19907.97011 + dps: 28327.20719 + tps: 20112.3171 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 28013.10712 - tps: 19889.30605 + dps: 28456.56396 + tps: 20204.16041 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 28815.68051 - tps: 20459.13316 + dps: 29263.65603 + tps: 20777.19578 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 27471.67041 - tps: 19504.88599 + dps: 27915.19812 + tps: 19819.79067 } } dps_results: { key: "TestAssassination-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 28018.29047 - tps: 19892.98624 + dps: 28462.83432 + tps: 20208.61237 } } dps_results: { key: "TestAssassination-AllItems-WindDancer'sRegalia" value: { - dps: 27020.05109 - tps: 19184.23628 + dps: 27306.25948 + tps: 19387.44423 } } dps_results: { key: "TestAssassination-AllItems-WitchingHourglass-55787" value: { - dps: 27739.64808 - tps: 19695.15014 + dps: 28207.50034 + tps: 20027.32524 } } dps_results: { key: "TestAssassination-AllItems-WitchingHourglass-56320" value: { - dps: 27827.13855 - tps: 19757.26837 + dps: 28402.08773 + tps: 20165.48229 } } dps_results: { key: "TestAssassination-AllItems-World-QuellerFocus-63842" value: { - dps: 27820.41935 - tps: 19752.49774 + dps: 28263.90141 + tps: 20067.37 } } dps_results: { key: "TestAssassination-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 27838.25359 - tps: 19765.16005 + dps: 28280.44174 + tps: 20079.11364 } } dps_results: { key: "TestAssassination-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 27838.25359 - tps: 19765.16005 + dps: 28280.44174 + tps: 20079.11364 } } dps_results: { key: "TestAssassination-Average-Default" value: { - dps: 29977.41848 - tps: 21283.96712 + dps: 30424.99899 + tps: 21601.74928 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-Assassination-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 29980.06751 - tps: 21285.84794 + dps: 30362.89417 + tps: 21557.65486 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-Assassination-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29980.06751 - tps: 21285.84794 + dps: 30362.89417 + tps: 21557.65486 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-Assassination-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39620.11892 - tps: 28130.28443 + dps: 39800.99923 + tps: 28258.70945 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-Assassination-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 17906.10108 - tps: 12713.33177 + dps: 17796.62129 + tps: 12635.60112 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-Assassination-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 17906.10108 - tps: 12713.33177 + dps: 17796.62129 + tps: 12635.60112 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-Assassination-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 20011.20326 - tps: 14207.95431 + dps: 19777.79439 + tps: 14042.23402 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Deadly OH Deadly-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 21872.19564 - tps: 15529.25891 + dps: 22236.37577 + tps: 15787.8268 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Deadly OH Deadly-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 21872.19564 - tps: 15529.25891 + dps: 22236.37577 + tps: 15787.8268 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Deadly OH Deadly-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 28930.49283 - tps: 20540.64991 + dps: 29173.2659 + tps: 20713.01879 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Deadly OH Deadly-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 13198.02326 - tps: 9370.59651 + dps: 13098.58409 + tps: 9299.9947 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Deadly OH Deadly-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 13198.02326 - tps: 9370.59651 + dps: 13098.58409 + tps: 9299.9947 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Deadly OH Deadly-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 15089.00004 - tps: 10713.19003 + dps: 14871.14475 + tps: 10558.51277 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Deadly-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 28527.34129 - tps: 20254.41232 + dps: 28874.31802 + tps: 20500.76579 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Deadly-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 28527.34129 - tps: 20254.41232 + dps: 28874.31802 + tps: 20500.76579 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Deadly-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 37425.88383 - tps: 26572.37752 + dps: 37700.58153 + tps: 26767.41289 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Deadly-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 17044.78636 - tps: 12101.79832 + dps: 16932.66047 + tps: 12022.18894 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Deadly-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 17044.78636 - tps: 12101.79832 + dps: 16932.66047 + tps: 12022.18894 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Deadly-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 18946.32763 - tps: 13451.89262 + dps: 18731.40985 + tps: 13299.30099 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Instant-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 16561.4577 - tps: 11758.63497 + dps: 17508.58086 + tps: 12431.09241 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Instant-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 16561.4577 - tps: 11758.63497 + dps: 17508.58086 + tps: 12431.09241 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Instant-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 20877.00757 - tps: 14822.67538 + dps: 22083.58161 + tps: 15679.34294 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Instant-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 9645.70093 - tps: 6848.44766 + dps: 9973.80118 + tps: 7081.39884 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Instant-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 9645.70093 - tps: 6848.44766 + dps: 9973.80118 + tps: 7081.39884 } } dps_results: { key: "TestAssassination-Settings-Human-p1_assassination_test-MH Instant OH Instant-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 10608.62601 - tps: 7532.12447 + dps: 10924.95844 + tps: 7756.72049 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-Assassination-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 30293.57836 - tps: 21508.44064 + dps: 30681.48407 + tps: 21783.85369 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-Assassination-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 30293.57836 - tps: 21508.44064 + dps: 30681.48407 + tps: 21783.85369 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-Assassination-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 40255.95439 - tps: 28581.72762 + dps: 40416.15481 + tps: 28695.46991 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-Assassination-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 18104.36243 - tps: 12854.09733 + dps: 17980.62686 + tps: 12766.24507 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-Assassination-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 18104.36243 - tps: 12854.09733 + dps: 17980.62686 + tps: 12766.24507 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-Assassination-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 20381.79095 - tps: 14471.07157 + dps: 20105.66597 + tps: 14275.02284 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Deadly OH Deadly-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 22080.92023 - tps: 15677.45336 + dps: 22449.09273 + tps: 15938.85584 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Deadly OH Deadly-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 22080.92023 - tps: 15677.45336 + dps: 22449.09273 + tps: 15938.85584 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Deadly OH Deadly-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29401.63216 - tps: 20875.15883 + dps: 29632.77751 + tps: 21039.27203 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Deadly OH Deadly-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 13342.45638 - tps: 9473.14403 + dps: 13234.22938 + tps: 9396.30286 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Deadly OH Deadly-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 13342.45638 - tps: 9473.14403 + dps: 13234.22938 + tps: 9396.30286 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Deadly OH Deadly-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 15369.58487 - tps: 10912.40526 + dps: 15115.30793 + tps: 10731.86863 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Deadly-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 28822.12185 - tps: 20463.70651 + dps: 29171.15378 + tps: 20711.51918 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Deadly-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 28822.12185 - tps: 20463.70651 + dps: 29171.15378 + tps: 20711.51918 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Deadly-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 38011.10317 - tps: 26987.88325 + dps: 38284.11896 + tps: 27181.72446 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Deadly-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 17228.60485 - tps: 12232.30945 + dps: 17103.25421 + tps: 12143.31049 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Deadly-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 17228.60485 - tps: 12232.30945 + dps: 17103.25421 + tps: 12143.31049 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Deadly-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19288.9731 - tps: 13695.1709 + dps: 19033.01604 + tps: 13513.44139 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Instant-mutilate-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 16729.19606 - tps: 11877.7292 + dps: 17669.06991 + tps: 12545.03964 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Instant-mutilate-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 16729.19606 - tps: 11877.7292 + dps: 17669.06991 + tps: 12545.03964 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Instant-mutilate-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 21242.98422 - tps: 15082.51879 + dps: 22440.36314 + tps: 15932.65783 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Instant-mutilate-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 9754.65016 - tps: 6925.80161 + dps: 10077.55171 + tps: 7155.06171 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Instant-mutilate-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 9754.65016 - tps: 6925.80161 + dps: 10077.55171 + tps: 7155.06171 } } dps_results: { key: "TestAssassination-Settings-Orc-p1_assassination_test-MH Instant OH Instant-mutilate-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 10824.73822 - tps: 7685.56413 + dps: 11136.96575 + tps: 7907.24568 } } dps_results: { key: "TestAssassination-SwitchInFrontOfTarget-Default" value: { - dps: 19646.84079 - tps: 13949.25696 + dps: 20040.34473 + tps: 14228.64476 } } diff --git a/sim/rogue/assassination/mutilate.go b/sim/rogue/assassination/mutilate.go index 1e12c83601..8f801802c0 100644 --- a/sim/rogue/assassination/mutilate.go +++ b/sim/rogue/assassination/mutilate.go @@ -52,13 +52,14 @@ func (sinRogue *AssassinationRogue) registerMutilateSpell() { sinRogue.MutilateOH = sinRogue.newMutilateHitSpell(false) sinRogue.Mutilate = sinRogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: MutilateSpellID, Tag: 0}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: MutilateSpellID, Tag: 0}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellMutilate, EnergyCost: core.EnergyCostOptions{ - Cost: sinRogue.GetGeneratorCostModifier(60 - core.TernaryFloat64(sinRogue.HasPrimeGlyph(proto.RoguePrimeGlyph_GlyphOfMutilate), 5, 0)), + Cost: 60 - core.TernaryFloat64(sinRogue.HasPrimeGlyph(proto.RoguePrimeGlyph_GlyphOfMutilate), 5, 0), Refund: 0.8, }, Cast: core.CastConfig{ diff --git a/sim/rogue/assassination/vendetta.go b/sim/rogue/assassination/vendetta.go index 5b0cbf0e8d..b65163cf06 100644 --- a/sim/rogue/assassination/vendetta.go +++ b/sim/rogue/assassination/vendetta.go @@ -5,6 +5,7 @@ import ( "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/rogue" ) func (sinRogue *AssassinationRogue) registerVendetta() { @@ -31,9 +32,10 @@ func (sinRogue *AssassinationRogue) registerVendetta() { }) sinRogue.Vendetta = sinRogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - SpellSchool: core.SpellSchoolPhysical, - Flags: core.SpellFlagAPL | core.SpellFlagMCD, + ActionID: actionID, + SpellSchool: core.SpellSchoolPhysical, + Flags: core.SpellFlagAPL | core.SpellFlagMCD, + ClassSpellMask: rogue.RogueSpellVendetta, Cast: core.CastConfig{ DefaultCast: core.Cast{ GCD: time.Second, diff --git a/sim/rogue/backstab.go b/sim/rogue/backstab.go index afa825752e..d9f3d5f290 100644 --- a/sim/rogue/backstab.go +++ b/sim/rogue/backstab.go @@ -15,13 +15,14 @@ func (rogue *Rogue) registerBackstabSpell() { t11Bonus := core.TernaryFloat64(rogue.HasSetBonus(Tier11, 2), 5*core.CritRatingPerCritChance, 0) rogue.Backstab = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 53}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 53}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ClassSpellMask: RogueSpellBackstab, EnergyCost: core.EnergyCostOptions{ - Cost: rogue.GetGeneratorCostModifier(60 - []float64{0, 7, 14, 20}[rogue.Talents.SlaughterFromTheShadows]), + Cost: 60 - []float64{0, 7, 14, 20}[rogue.Talents.SlaughterFromTheShadows], Refund: 0.8, }, Cast: core.CastConfig{ diff --git a/sim/rogue/combat/TestCombat.results b/sim/rogue/combat/TestCombat.results index 1fddedd549..5428b8b987 100644 --- a/sim/rogue/combat/TestCombat.results +++ b/sim/rogue/combat/TestCombat.results @@ -37,1611 +37,1611 @@ character_stats_results: { dps_results: { key: "TestCombat-AllItems-AgileShadowspiritDiamond" value: { - dps: 29425.83764 - tps: 20892.34473 + dps: 29219.14524 + tps: 20745.59312 } } dps_results: { key: "TestCombat-AllItems-Althor'sAbacus-50366" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Anhuur'sHymnal-55889" value: { - dps: 27899.20477 - tps: 19808.43539 + dps: 27632.4888 + tps: 19619.06705 } } dps_results: { key: "TestCombat-AllItems-Anhuur'sHymnal-56407" value: { - dps: 27987.55123 - tps: 19871.16137 + dps: 27663.96231 + tps: 19641.41324 } } dps_results: { key: "TestCombat-AllItems-AustereShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20494.92452 + dps: 28667.63914 + tps: 20354.02379 } } dps_results: { key: "TestCombat-AllItems-BaubleofTrueBlood-50726" value: { - dps: 27364.39693 - tps: 19428.72182 - hps: 81.89597 + dps: 27182.14086 + tps: 19299.32001 + hps: 83.99244 } } dps_results: { key: "TestCombat-AllItems-BedrockTalisman-58182" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-BellofEnragingResonance-59326" value: { - dps: 27720.62045 - tps: 19681.64052 + dps: 27531.32614 + tps: 19547.24156 } } dps_results: { key: "TestCombat-AllItems-BellofEnragingResonance-65053" value: { - dps: 27774.83435 - tps: 19720.13239 + dps: 27586.88725 + tps: 19586.68995 } } dps_results: { key: "TestCombat-AllItems-BindingPromise-67037" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-BlackBruise-50692" value: { - dps: 27153.55993 - tps: 19279.02755 + dps: 27088.42425 + tps: 19232.78122 } } dps_results: { key: "TestCombat-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 28827.33508 - tps: 20467.40791 + dps: 28617.92688 + tps: 20318.72809 } } dps_results: { key: "TestCombat-AllItems-BloodofIsiset-55995" value: { - dps: 27711.02934 - tps: 19674.83083 + dps: 27571.67067 + tps: 19575.88617 } } dps_results: { key: "TestCombat-AllItems-BloodofIsiset-56414" value: { - dps: 27903.12684 - tps: 19811.22006 + dps: 27582.63029 + tps: 19583.6675 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 29261.8919 - tps: 20775.94325 + dps: 29096.64279 + tps: 20658.61638 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 27851.7624 - tps: 19774.7513 + dps: 27653.5466 + tps: 19634.01808 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 27701.82449 - tps: 19668.29539 + dps: 27507.62876 + tps: 19530.41642 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 28678.80644 - tps: 20361.95257 + dps: 28468.77795 + tps: 20212.83235 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 27875.3967 - tps: 19791.53166 + dps: 27692.27263 + tps: 19661.51357 } } dps_results: { key: "TestCombat-AllItems-BottledLightning-66879" value: { - dps: 27506.36673 - tps: 19529.52038 + dps: 27310.83032 + tps: 19390.68953 } } dps_results: { key: "TestCombat-AllItems-BracingShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20085.02603 + dps: 28667.63914 + tps: 19946.94331 } } dps_results: { key: "TestCombat-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 29425.83764 - tps: 20892.34473 + dps: 29219.14524 + tps: 20745.59312 } } dps_results: { key: "TestCombat-AllItems-BurningShadowspiritDiamond" value: { - dps: 29202.15084 - tps: 20733.5271 + dps: 29000.91396 + tps: 20590.64891 } } dps_results: { key: "TestCombat-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 29279.78684 - tps: 20788.64866 + dps: 29076.77942 + tps: 20644.51339 } } dps_results: { key: "TestCombat-AllItems-CoreofRipeness-58184" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-CorpseTongueCoin-50349" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-CrushingWeight-59506" value: { - dps: 28564.44001 - tps: 20280.75241 + dps: 28383.1088 + tps: 20152.00725 } } dps_results: { key: "TestCombat-AllItems-CrushingWeight-65118" value: { - dps: 28640.66781 - tps: 20334.87414 + dps: 28494.23276 + tps: 20230.90526 } } dps_results: { key: "TestCombat-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 28542.16601 - tps: 20264.93787 + dps: 28408.47715 + tps: 20170.01878 } } dps_results: { key: "TestCombat-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 29271.95993 - tps: 20783.09155 + dps: 29135.8307 + tps: 20686.43979 } } dps_results: { key: "TestCombat-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 27912.15702 - tps: 19817.63149 + dps: 27695.13035 + tps: 19663.54255 } } dps_results: { key: "TestCombat-AllItems-Deathbringer'sWill-50363" value: { - dps: 28109.45121 - tps: 19957.71036 + dps: 27927.18587 + tps: 19828.30197 } } dps_results: { key: "TestCombat-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 28939.20627 - tps: 20546.83645 + dps: 28739.10824 + tps: 20404.76685 } } dps_results: { key: "TestCombat-AllItems-DislodgedForeignObject-50348" value: { - dps: 27612.21372 - tps: 19604.67174 + dps: 27510.45175 + tps: 19532.42074 } } dps_results: { key: "TestCombat-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20494.92452 + dps: 28667.63914 + tps: 20354.02379 } } dps_results: { key: "TestCombat-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-EmberShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20494.92452 + dps: 28667.63914 + tps: 20354.02379 } } dps_results: { key: "TestCombat-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 28939.20627 - tps: 20546.83645 + dps: 28739.10824 + tps: 20404.76685 } } dps_results: { key: "TestCombat-AllItems-EssenceoftheCyclone-59473" value: { - dps: 29092.03389 - tps: 20655.34406 + dps: 28865.78017 + tps: 20494.70392 } } dps_results: { key: "TestCombat-AllItems-EssenceoftheCyclone-65140" value: { - dps: 29318.69938 - tps: 20816.27656 + dps: 29087.82936 + tps: 20652.35885 } } dps_results: { key: "TestCombat-AllItems-EternalShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20494.92452 + dps: 28667.63914 + tps: 20354.02379 } } dps_results: { key: "TestCombat-AllItems-FallofMortality-59500" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-FallofMortality-65124" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Figurine-DemonPanther-52199" value: { - dps: 29794.15454 - tps: 21153.84972 + dps: 28850.35621 + tps: 20483.75291 } } dps_results: { key: "TestCombat-AllItems-Figurine-DreamOwl-52354" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Figurine-KingofBoars-52351" value: { - dps: 28359.18123 - tps: 20135.01867 + dps: 28037.93857 + tps: 19906.93638 } } dps_results: { key: "TestCombat-AllItems-FleetShadowspiritDiamond" value: { - dps: 28909.48099 - tps: 20525.7315 + dps: 28809.08206 + tps: 20454.44826 } } dps_results: { key: "TestCombat-AllItems-ForlornShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20494.92452 + dps: 28667.63914 + tps: 20354.02379 } } dps_results: { key: "TestCombat-AllItems-FuryofAngerforge-59461" value: { - dps: 28307.888 - tps: 20098.60048 + dps: 28114.71542 + tps: 19961.44795 } } dps_results: { key: "TestCombat-AllItems-GaleofShadows-56138" value: { - dps: 27638.64098 - tps: 19623.4351 + dps: 27524.12791 + tps: 19542.13081 } } dps_results: { key: "TestCombat-AllItems-GaleofShadows-56462" value: { - dps: 27822.59875 - tps: 19754.04511 + dps: 27755.94531 + tps: 19706.72117 } } dps_results: { key: "TestCombat-AllItems-GearDetector-61462" value: { - dps: 28289.50386 - tps: 20085.54774 + dps: 28157.47592 + tps: 19991.8079 } } dps_results: { key: "TestCombat-AllItems-Gladiator'sVestments" value: { - dps: 23480.31714 - tps: 16671.02517 + dps: 23326.53042 + tps: 16561.8366 } } dps_results: { key: "TestCombat-AllItems-GlowingTwilightScale-54589" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-GraceoftheHerald-55266" value: { - dps: 28251.27799 - tps: 20058.40737 + dps: 28057.74363 + tps: 19920.99798 } } dps_results: { key: "TestCombat-AllItems-GraceoftheHerald-56295" value: { - dps: 28667.08237 - tps: 20353.62848 + dps: 28458.32615 + tps: 20205.41157 } } dps_results: { key: "TestCombat-AllItems-HarmlightToken-63839" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 28037.24604 - tps: 19906.44469 + dps: 27919.919 + tps: 19823.14249 } } dps_results: { key: "TestCombat-AllItems-HeartofIgnacious-59514" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-HeartofIgnacious-65110" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-HeartofRage-59224" value: { - dps: 27998.68508 - tps: 19879.06641 + dps: 27797.93157 + tps: 19736.53141 } } dps_results: { key: "TestCombat-AllItems-HeartofRage-65072" value: { - dps: 28079.7804 - tps: 19936.64408 + dps: 27874.56758 + tps: 19790.94298 } } dps_results: { key: "TestCombat-AllItems-HeartofSolace-55868" value: { - dps: 27638.64098 - tps: 19623.4351 + dps: 27524.12791 + tps: 19542.13081 } } dps_results: { key: "TestCombat-AllItems-HeartofSolace-56393" value: { - dps: 28385.32062 - tps: 20153.57764 + dps: 28314.37638 + tps: 20103.20723 } } dps_results: { key: "TestCombat-AllItems-HeartofThunder-55845" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-HeartofThunder-56370" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-HeartoftheVile-66969" value: { - dps: 28380.02306 - tps: 20149.81637 + dps: 28180.86475 + tps: 20008.41397 } } dps_results: { key: "TestCombat-AllItems-Heartpierce-50641" value: { - dps: 29425.83764 - tps: 20892.34473 + dps: 29219.14524 + tps: 20745.59312 } } dps_results: { key: "TestCombat-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 28939.20627 - tps: 20546.83645 + dps: 28739.10824 + tps: 20404.76685 } } dps_results: { key: "TestCombat-AllItems-ImpatienceofYouth-62464" value: { - dps: 28423.55609 - tps: 20180.72483 + dps: 28207.8892 + tps: 20027.60133 } } dps_results: { key: "TestCombat-AllItems-ImpatienceofYouth-62469" value: { - dps: 28423.55609 - tps: 20180.72483 + dps: 28207.8892 + tps: 20027.60133 } } dps_results: { key: "TestCombat-AllItems-ImpetuousQuery-55881" value: { - dps: 27711.02934 - tps: 19674.83083 + dps: 27571.67067 + tps: 19575.88617 } } dps_results: { key: "TestCombat-AllItems-ImpetuousQuery-56406" value: { - dps: 27903.12684 - tps: 19811.22006 + dps: 27582.63029 + tps: 19583.6675 } } dps_results: { key: "TestCombat-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 27714.86321 - tps: 19677.55288 + dps: 27558.53566 + tps: 19566.56032 } } dps_results: { key: "TestCombat-AllItems-JarofAncientRemedies-59354" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-JarofAncientRemedies-65029" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-JujuofNimbleness-63840" value: { - dps: 28827.33508 - tps: 20467.40791 + dps: 28617.92688 + tps: 20318.72809 } } dps_results: { key: "TestCombat-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 28941.15563 - tps: 20548.2205 + dps: 28692.26936 + tps: 20371.51124 } } dps_results: { key: "TestCombat-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 29505.88905 - tps: 20949.18123 + dps: 29185.78853 + tps: 20721.90986 } } dps_results: { key: "TestCombat-AllItems-KvaldirBattleStandard-59685" value: { - dps: 27807.11222 - tps: 19743.04968 + dps: 27643.3919 + tps: 19626.80825 } } dps_results: { key: "TestCombat-AllItems-KvaldirBattleStandard-59689" value: { - dps: 27807.11222 - tps: 19743.04968 + dps: 27643.3919 + tps: 19626.80825 } } dps_results: { key: "TestCombat-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 27523.37294 - tps: 19541.59479 + dps: 27366.49814 + tps: 19430.21368 } } dps_results: { key: "TestCombat-AllItems-LastWord-50708" value: { - dps: 29425.83764 - tps: 20892.34473 + dps: 29219.14524 + tps: 20745.59312 } } dps_results: { key: "TestCombat-AllItems-LeadenDespair-55816" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-LeadenDespair-56347" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-LeftEyeofRajh-56102" value: { - dps: 28580.93723 - tps: 20292.46543 + dps: 28429.12613 + tps: 20184.67956 } } dps_results: { key: "TestCombat-AllItems-LeftEyeofRajh-56427" value: { - dps: 28762.86925 - tps: 20421.63717 + dps: 28601.79183 + tps: 20307.2722 } } dps_results: { key: "TestCombat-AllItems-LicensetoSlay-58180" value: { - dps: 28536.67889 - tps: 20261.04201 + dps: 28307.91652 + tps: 20098.62073 } } dps_results: { key: "TestCombat-AllItems-MagnetiteMirror-55814" value: { - dps: 27751.63394 - tps: 19703.6601 + dps: 27574.16013 + tps: 19577.65369 } } dps_results: { key: "TestCombat-AllItems-MagnetiteMirror-56345" value: { - dps: 27877.71111 - tps: 19793.17489 + dps: 27701.79431 + tps: 19668.27396 } } dps_results: { key: "TestCombat-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-MarkofKhardros-56132" value: { - dps: 28211.23073 - tps: 20029.97381 + dps: 27948.31311 + tps: 19843.30231 } } dps_results: { key: "TestCombat-AllItems-MarkofKhardros-56458" value: { - dps: 28379.41513 - tps: 20149.38474 + dps: 28152.81379 + tps: 19988.49779 } } dps_results: { key: "TestCombat-AllItems-MightoftheOcean-55251" value: { - dps: 28045.33873 - tps: 19912.1905 + dps: 27759.70784 + tps: 19709.39257 } } dps_results: { key: "TestCombat-AllItems-MightoftheOcean-56285" value: { - dps: 28511.50196 - tps: 20243.16639 + dps: 28194.62079 + tps: 20018.18076 } } dps_results: { key: "TestCombat-AllItems-MirrorofBrokenImages-62466" value: { - dps: 27912.15702 - tps: 19817.63149 + dps: 27695.13035 + tps: 19663.54255 } } dps_results: { key: "TestCombat-AllItems-MirrorofBrokenImages-62471" value: { - dps: 27912.15702 - tps: 19817.63149 + dps: 27695.13035 + tps: 19663.54255 } } dps_results: { key: "TestCombat-AllItems-MoonwellChalice-70142" value: { - dps: 27833.42109 - tps: 19761.72897 + dps: 27638.71476 + tps: 19623.48748 } } dps_results: { key: "TestCombat-AllItems-Oremantle'sFavor-61448" value: { - dps: 27918.04105 - tps: 19821.80914 + dps: 27717.91938 + tps: 19679.72276 } } dps_results: { key: "TestCombat-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 27538.13728 - tps: 19552.07747 + dps: 27349.95796 + tps: 19418.47015 } } dps_results: { key: "TestCombat-AllItems-PorcelainCrab-55237" value: { - dps: 27705.97258 - tps: 19671.24053 + dps: 27602.95965 + tps: 19598.10135 } } dps_results: { key: "TestCombat-AllItems-PorcelainCrab-56280" value: { - dps: 27956.69693 - tps: 19849.25482 + dps: 27740.02215 + tps: 19695.41573 } } dps_results: { key: "TestCombat-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 28866.09087 - tps: 20494.92452 + dps: 28667.63914 + tps: 20354.02379 } } dps_results: { key: "TestCombat-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 29199.01121 - tps: 20731.29796 + dps: 29027.68362 + tps: 20609.65537 } } dps_results: { key: "TestCombat-AllItems-Rainsong-55854" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Rainsong-56377" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 29286.18408 - tps: 20793.1907 + dps: 29084.62336 + tps: 20650.08258 } } dps_results: { key: "TestCombat-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 29202.15084 - tps: 20733.5271 + dps: 29000.91396 + tps: 20590.64891 } } dps_results: { key: "TestCombat-AllItems-RightEyeofRajh-56100" value: { - dps: 28375.01782 - tps: 20146.26265 + dps: 28119.5115 + tps: 19964.85317 } } dps_results: { key: "TestCombat-AllItems-RightEyeofRajh-56431" value: { - dps: 28538.12738 - tps: 20262.07044 + dps: 28227.15415 + tps: 20041.27945 } } dps_results: { key: "TestCombat-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 28552.06192 - tps: 20271.96397 + dps: 28450.3147 + tps: 20199.72344 } } dps_results: { key: "TestCombat-AllItems-SeaStar-55256" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-SeaStar-56290" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Shadowblade'sBattlegear" value: { - dps: 22329.53909 - tps: 15853.97275 + dps: 21753.7838 + tps: 15445.1865 } } dps_results: { key: "TestCombat-AllItems-Shadowmourne-49623" value: { - dps: 29425.83764 - tps: 20892.34473 + dps: 29219.14524 + tps: 20745.59312 } } dps_results: { key: "TestCombat-AllItems-ShardofWoe-60233" value: { - dps: 27860.44757 - tps: 19780.91778 + dps: 27672.01144 + tps: 19647.12813 } } dps_results: { key: "TestCombat-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 28081.47896 - tps: 19937.85006 + dps: 27993.981 + tps: 19875.72651 } } dps_results: { key: "TestCombat-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Skardyn'sGrace-56115" value: { - dps: 28716.49532 - tps: 20388.71168 + dps: 28516.93838 + tps: 20247.02625 } } dps_results: { key: "TestCombat-AllItems-Skardyn'sGrace-56440" value: { - dps: 28846.93391 - tps: 20481.32308 + dps: 28771.17466 + tps: 20427.53401 } } dps_results: { key: "TestCombat-AllItems-Sorrowsong-55879" value: { - dps: 27711.02934 - tps: 19674.83083 + dps: 27571.67067 + tps: 19575.88617 } } dps_results: { key: "TestCombat-AllItems-Sorrowsong-56400" value: { - dps: 27903.12684 - tps: 19811.22006 + dps: 27582.63029 + tps: 19583.6675 } } dps_results: { key: "TestCombat-AllItems-Soul'sAnguish-66994" value: { - dps: 28181.05322 - tps: 20008.54778 + dps: 27916.88568 + tps: 19820.98883 } } dps_results: { key: "TestCombat-AllItems-SoulCasket-58183" value: { - dps: 27912.15702 - tps: 19817.63149 + dps: 27695.13035 + tps: 19663.54255 } } dps_results: { key: "TestCombat-AllItems-Stonemother'sKiss-61411" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-StumpofTime-62465" value: { - dps: 27951.03652 - tps: 19845.23593 + dps: 27725.20454 + tps: 19684.89522 } } dps_results: { key: "TestCombat-AllItems-StumpofTime-62470" value: { - dps: 27951.03652 - tps: 19845.23593 + dps: 27725.20454 + tps: 19684.89522 } } dps_results: { key: "TestCombat-AllItems-SymbioticWorm-59332" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-SymbioticWorm-65048" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 28117.88397 - tps: 19963.69762 + dps: 27941.92559 + tps: 19838.76717 } } dps_results: { key: "TestCombat-AllItems-TearofBlood-55819" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-TearofBlood-56351" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 27751.16458 - tps: 19703.32685 + dps: 27597.53371 + tps: 19594.24894 } } dps_results: { key: "TestCombat-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 27903.12684 - tps: 19811.22006 + dps: 27582.63029 + tps: 19583.6675 } } dps_results: { key: "TestCombat-AllItems-Theralion'sMirror-59519" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Theralion'sMirror-65105" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Throngus'sFinger-56121" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Throngus'sFinger-56449" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-Tia'sGrace-55874" value: { - dps: 28854.06277 - tps: 20486.38457 + dps: 28715.48067 + tps: 20387.99128 } } dps_results: { key: "TestCombat-AllItems-Tia'sGrace-56394" value: { - dps: 29220.90843 - tps: 20746.84499 + dps: 28873.03892 + tps: 20499.85763 } } dps_results: { key: "TestCombat-AllItems-TinyAbominationinaJar-50706" value: { - dps: 29024.99926 - tps: 20607.74947 + dps: 28800.51425 + tps: 20448.36512 } } dps_results: { key: "TestCombat-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 27360.72668 - tps: 19426.11594 + dps: 27163.41874 + tps: 19286.02731 } } dps_results: { key: "TestCombat-AllItems-UnheededWarning-59520" value: { - dps: 29154.72635 - tps: 20699.85571 + dps: 28960.17306 + tps: 20561.72287 } } dps_results: { key: "TestCombat-AllItems-UnquenchableFlame-67101" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-UnsolvableRiddle-62463" value: { - dps: 29275.4784 - tps: 20785.58966 + dps: 29042.36902 + tps: 20620.08201 } } dps_results: { key: "TestCombat-AllItems-UnsolvableRiddle-62468" value: { - dps: 29275.4784 - tps: 20785.58966 + dps: 29042.36902 + tps: 20620.08201 } } dps_results: { key: "TestCombat-AllItems-UnsolvableRiddle-68709" value: { - dps: 29275.4784 - tps: 20785.58966 + dps: 29042.36902 + tps: 20620.08201 } } dps_results: { key: "TestCombat-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 25826.28737 - tps: 18336.66403 + dps: 25715.46087 + tps: 18257.97722 } } dps_results: { key: "TestCombat-AllItems-VialofStolenMemories-59515" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-VialofStolenMemories-65109" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 28727.96451 - tps: 20396.85481 + dps: 28488.45742 + tps: 20226.80477 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 27879.01639 - tps: 19794.10164 + dps: 27679.9081 + tps: 19652.73475 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 27945.24047 - tps: 19841.12073 + dps: 27785.70437 + tps: 19727.85011 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 28002.03882 - tps: 19881.44756 + dps: 27796.9908 + tps: 19735.86347 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 27748.84091 - tps: 19701.67705 + dps: 27559.69258 + tps: 19567.38173 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 28054.43282 - tps: 19918.6473 + dps: 27713.23364 + tps: 19676.39588 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 28856.05366 - tps: 20487.7981 + dps: 28661.81057 + tps: 20349.88551 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 27943.17544 - tps: 19839.65456 + dps: 27763.44583 + tps: 19712.04654 } } dps_results: { key: "TestCombat-AllItems-WindDancer'sRegalia" value: { - dps: 26664.67175 - tps: 18931.91694 + dps: 26390.7617 + tps: 18737.44081 } } dps_results: { key: "TestCombat-AllItems-WitchingHourglass-55787" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-WitchingHourglass-56320" value: { - dps: 27364.39693 - tps: 19428.72182 + dps: 27182.14086 + tps: 19299.32001 } } dps_results: { key: "TestCombat-AllItems-World-QuellerFocus-63842" value: { - dps: 27760.13019 - tps: 19709.69243 + dps: 27555.92391 + tps: 19564.70598 } } dps_results: { key: "TestCombat-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 27686.01517 - tps: 19657.07077 + dps: 27587.55614 + tps: 19587.16486 } } dps_results: { key: "TestCombat-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 27686.01517 - tps: 19657.07077 + dps: 27587.55614 + tps: 19587.16486 } } dps_results: { key: "TestCombat-Average-Default" value: { - dps: 29421.01564 - tps: 20888.9211 + dps: 29296.88626 + tps: 20800.78924 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-Combat-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 29113.81773 - tps: 20670.81059 + dps: 28871.24339 + tps: 20498.58281 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-Combat-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29425.83764 - tps: 20892.34473 + dps: 29219.14524 + tps: 20745.59312 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-Combat-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 35300.54041 - tps: 25063.38369 + dps: 35325.35414 + tps: 25081.00144 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-Combat-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 16744.79347 - tps: 11888.80336 + dps: 16593.98209 + tps: 11781.72728 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-Combat-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 16917.02447 - tps: 12011.08738 + dps: 16747.90288 + tps: 11891.01104 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-Combat-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 16913.00063 - tps: 12008.23045 + dps: 16678.24369 + tps: 11841.55302 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Deadly-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 25316.38273 - tps: 17974.63174 + dps: 25066.86796 + tps: 17797.47625 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Deadly-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 25254.97841 - tps: 17931.03467 + dps: 24989.60765 + tps: 17742.62143 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Deadly-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30378.73978 - tps: 21568.90524 + dps: 30304.9715 + tps: 21516.52976 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Deadly-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 14758.58566 - tps: 10478.59582 + dps: 14635.68074 + tps: 10391.33333 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Deadly-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14675.38591 - tps: 10419.524 + dps: 14553.44096 + tps: 10332.94308 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Deadly-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 14742.01474 - tps: 10466.83047 + dps: 14561.12444 + tps: 10338.39835 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Instant-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 28168.36278 - tps: 19999.53758 + dps: 27914.19745 + tps: 19819.08019 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Instant-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 28445.83613 - tps: 20196.54365 + dps: 28197.58035 + tps: 20020.28205 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Instant-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 34105.44702 - tps: 24214.86738 + dps: 34055.26855 + tps: 24179.24067 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Instant-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 16281.58561 - tps: 11559.92578 + dps: 16130.01492 + tps: 11452.3106 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Instant-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 16420.26995 - tps: 11658.39167 + dps: 16237.08857 + tps: 11528.33289 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Deadly OH Instant-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 16358.54359 - tps: 11614.56595 + dps: 16090.98608 + tps: 11424.60012 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Instant OH Instant-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 25642.74327 - tps: 18206.34772 + dps: 26195.98724 + tps: 18599.15094 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Instant OH Instant-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 25925.83529 - tps: 18407.34306 + dps: 26548.55506 + tps: 18849.47409 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Instant OH Instant-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 31756.95185 - tps: 22547.43581 + dps: 32785.46009 + tps: 23277.67666 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Instant OH Instant-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 14661.33675 - tps: 10409.54909 + dps: 14524.95241 + tps: 10312.71621 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Instant OH Instant-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14804.42983 - tps: 10511.14518 + dps: 14653.30489 + tps: 10403.84647 } } dps_results: { key: "TestCombat-Settings-Human-p1_combat_test-MH Instant OH Instant-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 14978.69411 - tps: 10634.87282 + dps: 14741.44882 + tps: 10466.42866 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-Combat-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 29371.97937 - tps: 20854.10535 + dps: 29127.31776 + tps: 20680.39561 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-Combat-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29686.87095 - tps: 21077.67837 + dps: 29477.75364 + tps: 20929.20509 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-Combat-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 35844.98725 - tps: 25449.94095 + dps: 35874.03484 + tps: 25470.56474 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-Combat-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 16910.36155 - tps: 12006.3567 + dps: 16767.69417 + tps: 11905.06286 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-Combat-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 17083.66466 - tps: 12129.40191 + dps: 16923.38113 + tps: 12015.6006 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-Combat-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 17247.43402 - tps: 12245.67816 + dps: 17010.76773 + tps: 12077.64509 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Deadly-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 25540.96389 - tps: 18134.08436 + dps: 25290.15412 + tps: 17956.00942 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Deadly-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 25477.56695 - tps: 18089.07254 + dps: 25210.68993 + tps: 17899.58985 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Deadly-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30851.69243 - tps: 21904.70162 + dps: 30779.51703 + tps: 21853.45709 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Deadly-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 14904.02922 - tps: 10581.86074 + dps: 14788.7627 + tps: 10500.02152 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Deadly-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14818.10686 - tps: 10520.85587 + dps: 14702.76228 + tps: 10438.96122 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Deadly-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 15033.63348 - tps: 10673.87977 + dps: 14850.82192 + tps: 10544.08356 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Instant-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 28419.2846 - tps: 20177.69207 + dps: 28161.78192 + tps: 19994.86516 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Instant-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 28698.54131 - tps: 20375.96433 + dps: 28446.62264 + tps: 20197.10207 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Instant-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 34635.09564 - tps: 24590.91791 + dps: 34586.35566 + tps: 24556.31252 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Instant-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 16440.83652 - tps: 11672.99393 + dps: 16296.32036 + tps: 11570.38745 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Instant-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 16579.86689 - tps: 11771.70549 + dps: 16403.55919 + tps: 11646.52703 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Deadly OH Instant-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 16680.74702 - tps: 11843.33038 + dps: 16411.28462 + tps: 11652.01208 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Instant OH Instant-combat-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 25872.0613 - tps: 18369.16352 + dps: 26432.93828 + tps: 18767.38618 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Instant OH Instant-combat-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 26158.06345 - tps: 18572.22505 + dps: 26787.60043 + tps: 19019.1963 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Instant OH Instant-combat-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 32266.14805 - tps: 22908.96512 + dps: 33313.83212 + tps: 23652.82081 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Instant OH Instant-combat-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 14806.21118 - tps: 10512.40994 + dps: 14677.47317 + tps: 10421.00595 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Instant OH Instant-combat-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 14949.58083 - tps: 10614.20239 + dps: 14807.03301 + tps: 10512.99344 } } dps_results: { key: "TestCombat-Settings-Orc-p1_combat_test-MH Instant OH Instant-combat-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 15288.7954 - tps: 10855.04474 + dps: 15049.71534 + tps: 10685.29789 } } dps_results: { key: "TestCombat-SwitchInFrontOfTarget-Default" value: { - dps: 27862.19692 - tps: 19782.15981 + dps: 27783.34893 + tps: 19726.17774 } } diff --git a/sim/rogue/combat/adrenaline_rush.go b/sim/rogue/combat/adrenaline_rush.go index b4dc8d1780..35dfbc5ce4 100644 --- a/sim/rogue/combat/adrenaline_rush.go +++ b/sim/rogue/combat/adrenaline_rush.go @@ -5,6 +5,7 @@ import ( "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/rogue" ) var AdrenalineRushActionID = core.ActionID{SpellID: 13750} @@ -32,7 +33,8 @@ func (comRogue *CombatRogue) registerAdrenalineRushCD() { }) comRogue.AdrenalineRush = comRogue.RegisterSpell(core.SpellConfig{ - ActionID: AdrenalineRushActionID, + ActionID: AdrenalineRushActionID, + ClassSpellMask: rogue.RogueSpellAdrenalineRush, Cast: core.CastConfig{ DefaultCast: core.Cast{ diff --git a/sim/rogue/combat/blade_flurry.go b/sim/rogue/combat/blade_flurry.go index 69a391bda7..e5631700e9 100644 --- a/sim/rogue/combat/blade_flurry.go +++ b/sim/rogue/combat/blade_flurry.go @@ -5,6 +5,7 @@ import ( "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/rogue" ) var BladeFlurryActionID = core.ActionID{SpellID: 13877} @@ -60,8 +61,9 @@ func (comRogue *CombatRogue) registerBladeFlurry() { }) comRogue.BladeFlurry = comRogue.RegisterSpell(core.SpellConfig{ - ActionID: BladeFlurryActionID, - Flags: core.SpellFlagAPL, + ActionID: BladeFlurryActionID, + Flags: core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellBladeFlurry, Cast: core.CastConfig{ IgnoreHaste: true, diff --git a/sim/rogue/combat/killing_spree.go b/sim/rogue/combat/killing_spree.go index b9646fbc8b..c2cb42ccb8 100644 --- a/sim/rogue/combat/killing_spree.go +++ b/sim/rogue/combat/killing_spree.go @@ -6,6 +6,7 @@ import ( "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/rogue" ) func (comRogue *CombatRogue) registerKillingSpreeCD() { @@ -83,8 +84,9 @@ func (comRogue *CombatRogue) registerKillingSpreeCD() { }, }) comRogue.KillingSpree = comRogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 51690}, - Flags: core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 51690}, + Flags: core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellKillingSpree, Cast: core.CastConfig{ DefaultCast: core.Cast{ @@ -107,11 +109,5 @@ func (comRogue *CombatRogue) registerKillingSpreeCD() { Spell: comRogue.KillingSpree, Type: core.CooldownTypeDPS, Priority: core.CooldownPriorityDefault, - ShouldActivate: func(sim *core.Simulation, c *core.Character) bool { - if comRogue.CurrentEnergy() > 40 || comRogue.AdrenalineRushAura.IsActive() { - return false - } - return true - }, }) } diff --git a/sim/rogue/combat/mastery.go b/sim/rogue/combat/mastery.go index 5635fc7108..508a090e34 100644 --- a/sim/rogue/combat/mastery.go +++ b/sim/rogue/combat/mastery.go @@ -3,6 +3,7 @@ package combat import ( "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/stats" + "github.com/wowsims/cata/sim/rogue" ) const masteryChancePerPoint = .02 @@ -11,10 +12,11 @@ const masteryBaseEffect = 0.16 func (comRogue *CombatRogue) applyMastery() { comRogue.mainGauche = comRogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 86392}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, // TODO Thebackstabi 3/20/2024 -- Validate if MG can proc things - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage, + ActionID: core.ActionID{SpellID: 86392}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, // TODO Thebackstabi 3/20/2024 -- Validate if MG can proc things + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage, + ClassSpellMask: rogue.RogueSpellMainGauche, DamageMultiplier: 1, CritMultiplier: comRogue.MeleeCritMultiplier(false), diff --git a/sim/rogue/combat/revealing_strike.go b/sim/rogue/combat/revealing_strike.go index a380c4ec37..5304d32308 100644 --- a/sim/rogue/combat/revealing_strike.go +++ b/sim/rogue/combat/revealing_strike.go @@ -50,10 +50,11 @@ func (comRogue *CombatRogue) registerRevealingStrike() { // Attack comRogue.RevealingStrike = comRogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | core.SpellFlagAPL | rogue.SpellFlagBuilder, + ActionID: actionID, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | core.SpellFlagAPL | rogue.SpellFlagBuilder, + ClassSpellMask: rogue.RogueSpellRevealingStrike, Cast: core.CastConfig{ DefaultCast: core.Cast{ GCD: time.Second, diff --git a/sim/rogue/envenom.go b/sim/rogue/envenom.go index d3fe4d409d..f046c17094 100644 --- a/sim/rogue/envenom.go +++ b/sim/rogue/envenom.go @@ -28,11 +28,12 @@ func (rogue *Rogue) registerEnvenom() { chanceToRetainStacks := core.TernaryFloat64(rogue.Talents.MasterPoisoner, 1, 0) rogue.Envenom = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 32645}, - SpellSchool: core.SpellSchoolNature, - ProcMask: core.ProcMaskMeleeMHSpecial, // not core.ProcMaskSpellDamage - Flags: core.SpellFlagMeleeMetrics | SpellFlagFinisher | SpellFlagColdBlooded | core.SpellFlagAPL, - MetricSplits: 6, + ActionID: core.ActionID{SpellID: 32645}, + SpellSchool: core.SpellSchoolNature, + ProcMask: core.ProcMaskMeleeMHSpecial, // not core.ProcMaskSpellDamage + Flags: core.SpellFlagMeleeMetrics | SpellFlagFinisher | SpellFlagColdBlooded | core.SpellFlagAPL, + MetricSplits: 6, + ClassSpellMask: RogueSpellEnvenom, EnergyCost: core.EnergyCostOptions{ Cost: 35, diff --git a/sim/rogue/eviscerate.go b/sim/rogue/eviscerate.go index cca4f44cf4..c2a1e97a5d 100644 --- a/sim/rogue/eviscerate.go +++ b/sim/rogue/eviscerate.go @@ -15,14 +15,14 @@ func (rogue *Rogue) registerEviscerate() { avgBaseDamage := coefficient * rogue.ClassSpellScaling damagePerComboPoint := resourceCoefficient * rogue.ClassSpellScaling baseMinDamage := avgBaseDamage * 0.5 - baseMaxDamage := avgBaseDamage * 1.5 rogue.Eviscerate = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 2098}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagFinisher | SpellFlagColdBlooded | core.SpellFlagAPL, - MetricSplits: 6, + ActionID: core.ActionID{SpellID: 2098}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagFinisher | SpellFlagColdBlooded | core.SpellFlagAPL, + MetricSplits: 6, + ClassSpellMask: RogueSpellEviscerate, EnergyCost: core.EnergyCostOptions{ Cost: 35, @@ -58,7 +58,7 @@ func (rogue *Rogue) registerEviscerate() { comboPoints := float64(rogue.ComboPoints()) baseDamage := baseMinDamage + - sim.RandomFloat("Eviscerate")*baseMaxDamage + + sim.RandomFloat("Eviscerate")*avgBaseDamage + damagePerComboPoint*comboPoints + apScalingPerComboPoint*comboPoints*spell.MeleeAttackPower() diff --git a/sim/rogue/expose_armor.go b/sim/rogue/expose_armor.go index 391207126e..cd457b6b5b 100644 --- a/sim/rogue/expose_armor.go +++ b/sim/rogue/expose_armor.go @@ -22,11 +22,12 @@ func (rogue *Rogue) registerExposeArmorSpell() { } rogue.ExposeArmor = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 8647}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | SpellFlagFinisher | core.SpellFlagAPL, - MetricSplits: 6, + ActionID: core.ActionID{SpellID: 8647}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | SpellFlagFinisher | core.SpellFlagAPL, + MetricSplits: 6, + ClassSpellMask: RogueSpellExposeArmor, EnergyCost: core.EnergyCostOptions{ Cost: 25.0, @@ -57,7 +58,7 @@ func (rogue *Rogue) registerExposeArmorSpell() { debuffAura.Activate(sim) rogue.ApplyFinisher(sim, spell) if rogue.Talents.ImprovedExposeArmor > 0 { - procChance := 0.5*float64(rogue.Talents.ImprovedExposeArmor) + procChance := 0.5 * float64(rogue.Talents.ImprovedExposeArmor) if sim.Proc(procChance, "Improved Expose Armor") { rogue.AddComboPoints(sim, 5, spell.ComboPointMetrics()) } diff --git a/sim/rogue/fan_of_knives.go b/sim/rogue/fan_of_knives.go index 8e781a4ff3..ca6770bbf5 100644 --- a/sim/rogue/fan_of_knives.go +++ b/sim/rogue/fan_of_knives.go @@ -9,10 +9,11 @@ import ( func (rogue *Rogue) registerFanOfKnives() { fokSpell := rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 51723}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskRangedSpecial, - Flags: core.SpellFlagMeleeMetrics | SpellFlagColdBlooded, + ActionID: core.ActionID{SpellID: 51723}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskRangedSpecial, + Flags: core.SpellFlagMeleeMetrics | SpellFlagColdBlooded, + ClassSpellMask: RogueSpellFanOfKnives, DamageMultiplier: 0.8 * core.TernaryFloat64(rogue.Spec == proto.Spec_SpecCombatRogue, 1.75, 1.0), CritMultiplier: rogue.MeleeCritMultiplier(false), // TODO (TheBackstabi, 3/16/2024) - Verify what crit table FoK is on diff --git a/sim/rogue/feint.go b/sim/rogue/feint.go index 3a8077ec47..21cfbaec7f 100644 --- a/sim/rogue/feint.go +++ b/sim/rogue/feint.go @@ -9,10 +9,11 @@ import ( func (rogue *Rogue) registerFeintSpell() { rogue.Feint = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 1966}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskEmpty, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 1966}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskEmpty, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagAPL, + ClassSpellMask: RogueSpellFeint, EnergyCost: core.EnergyCostOptions{ Cost: core.TernaryFloat64(rogue.HasMajorGlyph(proto.RogueMajorGlyph_GlyphOfFeint), 0, 20), diff --git a/sim/rogue/garrote.go b/sim/rogue/garrote.go index ed48b20869..14019ebbda 100644 --- a/sim/rogue/garrote.go +++ b/sim/rogue/garrote.go @@ -10,13 +10,14 @@ func (rogue *Rogue) registerGarrote() { numTicks := int32(6) rogue.Garrote = rogue.GetOrRegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 703}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | SpellFlagBuilder | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 703}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | SpellFlagBuilder | core.SpellFlagAPL, + ClassSpellMask: RogueSpellGarrote, EnergyCost: core.EnergyCostOptions{ - Cost: rogue.GetGeneratorCostModifier(45), + Cost: 45, Refund: 0.8, }, Cast: core.CastConfig{ @@ -51,7 +52,7 @@ func (rogue *Rogue) registerGarrote() { ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { rogue.BreakStealth(sim) - result := spell.CalcOutcome(sim, target, spell.OutcomeMeleeSpecialNoBlockDodgeParry) + result := spell.CalcOutcome(sim, target, spell.OutcomeMeleeSpecialNoBlockDodgeParryNoCrit) if result.Landed() { rogue.AddComboPoints(sim, 1, spell.ComboPointMetrics()) spell.Dot(target).Apply(sim) diff --git a/sim/rogue/gouge.go b/sim/rogue/gouge.go index 74c92e4caf..124da8e34c 100644 --- a/sim/rogue/gouge.go +++ b/sim/rogue/gouge.go @@ -12,13 +12,14 @@ func (rogue *Rogue) registerGougeSpell() { baseDamage := rogue.ClassSpellScaling * 0.10400000215 rogue.Gouge = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 1776}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 1776}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ClassSpellMask: RogueSpellGouge, EnergyCost: core.EnergyCostOptions{ - Cost: rogue.GetGeneratorCostModifier(45 - 15*float64(rogue.Talents.ImprovedGouge)), + Cost: 45 - 15*float64(rogue.Talents.ImprovedGouge), Refund: 0.8, }, Cast: core.CastConfig{ diff --git a/sim/rogue/poisons.go b/sim/rogue/poisons.go index 9db6d82ee5..f2104dd7e8 100644 --- a/sim/rogue/poisons.go +++ b/sim/rogue/poisons.go @@ -31,9 +31,10 @@ func (rogue *Rogue) registerPoisonAuras() { func (rogue *Rogue) registerDeadlyPoisonSpell() { rogue.DeadlyPoison = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 96648}, - SpellSchool: core.SpellSchoolNature, - ProcMask: core.ProcMaskWeaponProc, + ActionID: core.ActionID{SpellID: 96648}, + SpellSchool: core.SpellSchoolNature, + ProcMask: core.ProcMaskWeaponProc, + ClassSpellMask: RogueSpellDeadlyPoison, DamageMultiplier: 1, DamageMultiplierAdditive: 1 + 0.12*float64(rogue.Talents.VilePoisons), @@ -213,9 +214,10 @@ func (rogue *Rogue) makeInstantPoison(procSource PoisonProcSource) *core.Spell { isShivProc := procSource == ShivProc ipBaseDamage := 0.31299999356 * rogue.ClassSpellScaling return rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 8680, Tag: int32(procSource)}, - SpellSchool: core.SpellSchoolNature, - ProcMask: core.ProcMaskWeaponProc, + ActionID: core.ActionID{SpellID: 8680, Tag: int32(procSource)}, + SpellSchool: core.SpellSchoolNature, + ProcMask: core.ProcMaskWeaponProc, + ClassSpellMask: RogueSpellInstantPoison, DamageMultiplier: 1, DamageMultiplierAdditive: 1 + 0.12*float64(rogue.Talents.VilePoisons), @@ -237,9 +239,10 @@ func (rogue *Rogue) makeWoundPoison(procSource PoisonProcSource) *core.Spell { isShivProc := procSource == ShivProc wpBaseDamage := 0.24500000477 * rogue.ClassSpellScaling return rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 13218, Tag: int32(procSource)}, - SpellSchool: core.SpellSchoolNature, - ProcMask: core.ProcMaskWeaponProc, + ActionID: core.ActionID{SpellID: 13218, Tag: int32(procSource)}, + SpellSchool: core.SpellSchoolNature, + ProcMask: core.ProcMaskWeaponProc, + ClassSpellMask: RogueSpellWoundPoison, DamageMultiplier: 1, DamageMultiplierAdditive: 1 + 0.12*float64(rogue.Talents.VilePoisons), diff --git a/sim/rogue/recuperate.go b/sim/rogue/recuperate.go index d810ea1103..f8a0c25969 100644 --- a/sim/rogue/recuperate.go +++ b/sim/rogue/recuperate.go @@ -13,9 +13,10 @@ func (rogue *Rogue) registerRecuperate() { energeticRecoveryMetrics := rogue.NewEnergyMetrics(energeticRecoveryAction) rogue.Recuperate = rogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - Flags: SpellFlagFinisher | core.SpellFlagAPL, - MetricSplits: 6, + ActionID: actionID, + Flags: SpellFlagFinisher | core.SpellFlagAPL, + MetricSplits: 6, + ClassSpellMask: RogueSpellRecuperate, EnergyCost: core.EnergyCostOptions{ Cost: 30, diff --git a/sim/rogue/rogue.go b/sim/rogue/rogue.go index 232a7a666f..c7a798ff94 100644 --- a/sim/rogue/rogue.go +++ b/sim/rogue/rogue.go @@ -101,8 +101,8 @@ type Rogue struct { SavageCombatDebuffAuras core.AuraArray WoundPoisonDebuffAuras core.AuraArray - generatorCostModifier func(float64) float64 - finishingMoveEffectApplier func(sim *core.Simulation, numPoints int32) + ruthlessnessMetrics *core.ResourceMetrics + relentlessStrikesMetrics *core.ResourceMetrics } func (rogue *Rogue) GetCharacter() *core.Character { @@ -120,7 +120,19 @@ func (rogue *Rogue) AddPartyBuffs(_ *proto.PartyBuffs) {} func (rogue *Rogue) ApplyFinisher(sim *core.Simulation, spell *core.Spell) { numPoints := rogue.ComboPoints() rogue.SpendComboPoints(sim, spell.ComboPointMetrics()) - rogue.finishingMoveEffectApplier(sim, numPoints) + + if rogue.Talents.Ruthlessness > 0 && (spell.ClassSpellMask&RogueSpellProcRuthlessness != 0) { + procChance := 0.2 * float64(rogue.Talents.Ruthlessness) + if sim.Proc(procChance, "Ruthlessness") { + rogue.AddComboPoints(sim, 1, rogue.ruthlessnessMetrics) + } + } + if rogue.Talents.RelentlessStrikes > 0 { + procChance := []float64{0.0, 0.07, 0.14, 0.2}[rogue.Talents.RelentlessStrikes] * float64(numPoints) + if sim.Proc(procChance, "Relentless Strikes") { + rogue.AddEnergy(sim, 25, rogue.relentlessStrikesMetrics) + } + } } func (rogue *Rogue) HasPrimeGlyph(glyph proto.RoguePrimeGlyph) bool { @@ -135,18 +147,12 @@ func (rogue *Rogue) HasMinorGlyph(glyph proto.RogueMinorGlyph) bool { return rogue.HasGlyph(int32(glyph)) } -func (rogue *Rogue) GetGeneratorCostModifier(cost float64) float64 { - return rogue.generatorCostModifier(cost) -} - func (rogue *Rogue) Initialize() { // Update auto crit multipliers now that we have the targets. rogue.AutoAttacks.MHConfig().CritMultiplier = rogue.MeleeCritMultiplier(false) rogue.AutoAttacks.OHConfig().CritMultiplier = rogue.MeleeCritMultiplier(false) rogue.AutoAttacks.RangedConfig().CritMultiplier = rogue.MeleeCritMultiplier(false) - rogue.generatorCostModifier = rogue.makeGeneratorCostModifier() - rogue.registerStealthAura() rogue.registerVanishSpell() rogue.registerFeintSpell() @@ -170,8 +176,6 @@ func (rogue *Rogue) Initialize() { rogue.registerThistleTeaCD() rogue.registerGougeSpell() - rogue.finishingMoveEffectApplier = rogue.makeFinishingMoveEffectApplier() - rogue.SliceAndDiceBonus = 0.4 } @@ -290,3 +294,47 @@ func (rogue *Rogue) IsStealthed() bool { type RogueAgent interface { GetRogue() *Rogue } + +const ( + RogueSpellFlagNone int64 = 0 + RogueSpellAmbush int64 = 1 << iota + RogueSpellBackstab + RogueSpellEnvenom + RogueSpellEviscerate + RogueSpellExposeArmor + RogueSpellFanOfKnives + RogueSpellFeint + RogueSpellGarrote + RogueSpellGouge + RogueSpellRecuperate + RogueSpellRupture + RogueSpellShiv + RogueSpellSinisterStrike + RogueSpellSliceAndDice + RogueSpellStealth + RogueSpellTricksOfTheTrade + RogueSpellVanish + RogueSpellHemorrhage + RogueSpellPremeditation + RogueSpellPreparation + RogueSpellShadowDance + RogueSpellShadowstep + RogueSpellAdrenalineRush + RogueSpellBladeFlurry + RogueSpellKillingSpree + RogueSpellMainGauche + RogueSpellRevealingStrike + RogueSpellColdBlood + RogueSpellMutilate + RogueSpellVendetta + RogueSpellVenomousWounds + RogueSpellWoundPoison + RogueSpellInstantPoison + RogueSpellDeadlyPoison + + RogueSpellLast + RogueSpellsAll = RogueSpellLast<<1 - 1 + + RogueSpellPoisons = RogueSpellVenomousWounds | RogueSpellWoundPoison | RogueSpellInstantPoison | RogueSpellDeadlyPoison + RogueSpellProcRuthlessness = RogueSpellEnvenom | RogueSpellEviscerate | RogueSpellRupture +) diff --git a/sim/rogue/rupture.go b/sim/rogue/rupture.go index 7f5ddce305..7a6c7c72de 100644 --- a/sim/rogue/rupture.go +++ b/sim/rogue/rupture.go @@ -20,11 +20,12 @@ func (rogue *Rogue) registerRupture() { glyphTicks := core.TernaryInt32(rogue.HasPrimeGlyph(proto.RoguePrimeGlyph_GlyphOfRupture), 2, 0) rogue.Rupture = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: RuptureSpellID}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | SpellFlagFinisher | core.SpellFlagAPL, - MetricSplits: 6, + ActionID: core.ActionID{SpellID: RuptureSpellID}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | SpellFlagFinisher | core.SpellFlagAPL, + MetricSplits: 6, + ClassSpellMask: RogueSpellRupture, EnergyCost: core.EnergyCostOptions{ Cost: RuptureEnergyCost, diff --git a/sim/rogue/shiv.go b/sim/rogue/shiv.go index 36e3ae7e2f..c4028e45f4 100644 --- a/sim/rogue/shiv.go +++ b/sim/rogue/shiv.go @@ -10,14 +10,15 @@ import ( func (rogue *Rogue) registerShivSpell() { baseCost := 20.0 if ohWeapon := rogue.GetOHWeapon(); ohWeapon != nil { - baseCost = rogue.GetGeneratorCostModifier(20 + 10*ohWeapon.SwingSpeed) + baseCost = 20 + 10*ohWeapon.SwingSpeed } rogue.Shiv = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 5938}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeOHSpecial, - Flags: core.SpellFlagMeleeMetrics | SpellFlagBuilder | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 5938}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeOHSpecial, + Flags: core.SpellFlagMeleeMetrics | SpellFlagBuilder | core.SpellFlagAPL, + ClassSpellMask: RogueSpellShiv, EnergyCost: core.EnergyCostOptions{ Cost: baseCost, diff --git a/sim/rogue/sinister_strike.go b/sim/rogue/sinister_strike.go index 1a4f747fac..e1b1e1d6dc 100644 --- a/sim/rogue/sinister_strike.go +++ b/sim/rogue/sinister_strike.go @@ -13,13 +13,14 @@ func (rogue *Rogue) registerSinisterStrikeSpell() { t11Bonus := core.TernaryFloat64(rogue.HasSetBonus(Tier11, 2), 5*core.CritRatingPerCritChance, 0) rogue.SinisterStrike = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 1752}, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 1752}, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | SpellFlagBuilder | SpellFlagColdBlooded | core.SpellFlagAPL, + ClassSpellMask: RogueSpellSinisterStrike, EnergyCost: core.EnergyCostOptions{ - Cost: rogue.GetGeneratorCostModifier(45 - 2*float64(rogue.Talents.ImprovedSinisterStrike)), + Cost: 45 - 2*float64(rogue.Talents.ImprovedSinisterStrike), Refund: 0.8, }, Cast: core.CastConfig{ diff --git a/sim/rogue/slice_and_dice.go b/sim/rogue/slice_and_dice.go index 69898f96e8..e665a9c413 100644 --- a/sim/rogue/slice_and_dice.go +++ b/sim/rogue/slice_and_dice.go @@ -38,9 +38,10 @@ func (rogue *Rogue) registerSliceAndDice() { }) rogue.SliceAndDice = rogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - Flags: SpellFlagFinisher | core.SpellFlagAPL, - MetricSplits: 6, + ActionID: actionID, + Flags: SpellFlagFinisher | core.SpellFlagAPL, + MetricSplits: 6, + ClassSpellMask: RogueSpellSliceAndDice, EnergyCost: core.EnergyCostOptions{ Cost: 25, diff --git a/sim/rogue/subtlety/TestSubtlety.results b/sim/rogue/subtlety/TestSubtlety.results index eb951d9f6c..e4278bcb1e 100644 --- a/sim/rogue/subtlety/TestSubtlety.results +++ b/sim/rogue/subtlety/TestSubtlety.results @@ -37,1578 +37,1578 @@ character_stats_results: { dps_results: { key: "TestSubtlety-AllItems-AgileShadowspiritDiamond" value: { - dps: 23140.25851 - tps: 16429.58354 + dps: 23865.63641 + tps: 16944.60185 } } dps_results: { key: "TestSubtlety-AllItems-Althor'sAbacus-50366" value: { - dps: 21080.60157 - tps: 14967.22711 - hps: 135.81758 + dps: 21999.84837 + tps: 15619.89234 + hps: 145.8782 } } dps_results: { key: "TestSubtlety-AllItems-Anhuur'sHymnal-55889" value: { - dps: 21577.77003 - tps: 15320.21672 + dps: 22365.33102 + tps: 15879.38502 } } dps_results: { key: "TestSubtlety-AllItems-Anhuur'sHymnal-56407" value: { - dps: 21560.56277 - tps: 15307.99957 + dps: 22355.08676 + tps: 15872.1116 } } dps_results: { key: "TestSubtlety-AllItems-AustereShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 16006.53157 + dps: 23288.43492 + tps: 16534.78879 } } dps_results: { key: "TestSubtlety-AllItems-BaubleofTrueBlood-50726" value: { - dps: 21080.60157 - tps: 14967.22711 - hps: 86.32308 + dps: 21999.84837 + tps: 15619.89234 + hps: 92.60297 } } dps_results: { key: "TestSubtlety-AllItems-BedrockTalisman-58182" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-BellofEnragingResonance-59326" value: { - dps: 21495.9379 - tps: 15262.11591 + dps: 22466.28354 + tps: 15951.06131 } } dps_results: { key: "TestSubtlety-AllItems-BellofEnragingResonance-65053" value: { - dps: 21561.27647 - tps: 15308.50629 + dps: 22480.74199 + tps: 15961.32681 } } dps_results: { key: "TestSubtlety-AllItems-BindingPromise-67037" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 22172.84435 - tps: 15742.71949 + dps: 23180.78948 + tps: 16458.36053 } } dps_results: { key: "TestSubtlety-AllItems-BloodofIsiset-55995" value: { - dps: 21263.78132 - tps: 15097.28474 + dps: 22337.53175 + tps: 15859.64754 } } dps_results: { key: "TestSubtlety-AllItems-BloodofIsiset-56414" value: { - dps: 21423.49058 - tps: 15210.67831 + dps: 22289.69881 + tps: 15825.68615 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 22655.04799 - tps: 16085.08407 + dps: 23879.63445 + tps: 16954.54046 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 21411.5765 - tps: 15202.21932 + dps: 22354.47233 + tps: 15871.67535 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 21488.09363 - tps: 15256.54648 + dps: 22465.82215 + tps: 15950.73372 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 22073.38988 - tps: 15672.10681 + dps: 23197.30307 + tps: 16470.08518 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 21358.62984 - tps: 15164.62718 + dps: 22288.89871 + tps: 15825.11808 } } dps_results: { key: "TestSubtlety-AllItems-BottledLightning-66879" value: { - dps: 21085.48938 - tps: 14970.69746 + dps: 22099.67116 + tps: 15690.76652 } } dps_results: { key: "TestSubtlety-AllItems-BracingShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 15686.40094 + dps: 23288.43492 + tps: 16204.09301 } } dps_results: { key: "TestSubtlety-AllItems-BurningShadowspiritDiamond" value: { - dps: 22906.17928 - tps: 16263.38729 + dps: 23664.96769 + tps: 16802.12706 } } dps_results: { key: "TestSubtlety-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 23023.68953 - tps: 16346.81957 + dps: 23728.97127 + tps: 16847.5696 } } dps_results: { key: "TestSubtlety-AllItems-CoreofRipeness-58184" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-CorpseTongueCoin-50349" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-CrushingWeight-59506" value: { - dps: 22029.58178 - tps: 15641.00306 + dps: 22953.9654 + tps: 16297.31543 } } dps_results: { key: "TestSubtlety-AllItems-CrushingWeight-65118" value: { - dps: 22115.09069 - tps: 15701.71439 + dps: 22997.01842 + tps: 16327.88308 } } dps_results: { key: "TestSubtlety-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 21972.53347 - tps: 15600.49876 + dps: 22797.74934 + tps: 16186.40203 } } dps_results: { key: "TestSubtlety-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 22664.85469 - tps: 16092.04683 + dps: 23672.74032 + tps: 16807.64562 } } dps_results: { key: "TestSubtlety-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 21324.05958 - tps: 15140.08231 + dps: 22235.39765 + tps: 15787.13233 } } dps_results: { key: "TestSubtlety-AllItems-Deathbringer'sWill-50363" value: { - dps: 21843.7067 - tps: 15509.03175 + dps: 22756.33957 + tps: 16157.0011 } } dps_results: { key: "TestSubtlety-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 22657.97025 - tps: 16087.15888 + dps: 23349.9861 + tps: 16578.49013 } } dps_results: { key: "TestSubtlety-AllItems-DislodgedForeignObject-50348" value: { - dps: 21351.00683 - tps: 15159.21485 + dps: 22307.65293 + tps: 15838.43358 } } dps_results: { key: "TestSubtlety-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 16006.53157 + dps: 23288.43492 + tps: 16534.78879 } } dps_results: { key: "TestSubtlety-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-EmberShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 16006.53157 + dps: 23288.43492 + tps: 16534.78879 } } dps_results: { key: "TestSubtlety-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 22657.97025 - tps: 16087.15888 + dps: 23349.9861 + tps: 16578.49013 } } dps_results: { key: "TestSubtlety-AllItems-EssenceoftheCyclone-59473" value: { - dps: 22571.67844 - tps: 16025.89169 + dps: 23697.66725 + tps: 16825.34375 } } dps_results: { key: "TestSubtlety-AllItems-EssenceoftheCyclone-65140" value: { - dps: 23046.74739 - tps: 16363.19065 + dps: 23948.92828 + tps: 17003.73908 } } dps_results: { key: "TestSubtlety-AllItems-EternalShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 16006.53157 + dps: 23288.43492 + tps: 16534.78879 } } dps_results: { key: "TestSubtlety-AllItems-FallofMortality-59500" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-FallofMortality-65124" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Figurine-DemonPanther-52199" value: { - dps: 23179.03497 - tps: 16457.11483 + dps: 23591.35387 + tps: 16749.86124 } } dps_results: { key: "TestSubtlety-AllItems-Figurine-DreamOwl-52354" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Figurine-KingofBoars-52351" value: { - dps: 21758.7185 - tps: 15448.69013 + dps: 22636.06461 + tps: 16071.60588 } } dps_results: { key: "TestSubtlety-AllItems-FleetShadowspiritDiamond" value: { - dps: 22504.08499 - tps: 15977.90034 + dps: 23380.77537 + tps: 16600.35051 } } dps_results: { key: "TestSubtlety-AllItems-ForlornShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 16006.53157 + dps: 23288.43492 + tps: 16534.78879 } } dps_results: { key: "TestSubtlety-AllItems-FuryofAngerforge-59461" value: { - dps: 21847.28069 - tps: 15511.56929 + dps: 22830.57612 + tps: 16209.70905 } } dps_results: { key: "TestSubtlety-AllItems-GaleofShadows-56138" value: { - dps: 21375.21925 - tps: 15176.40567 + dps: 22356.88765 + tps: 15873.39023 } } dps_results: { key: "TestSubtlety-AllItems-GaleofShadows-56462" value: { - dps: 21587.33821 - tps: 15327.01013 + dps: 22446.64735 + tps: 15937.11962 } } dps_results: { key: "TestSubtlety-AllItems-GearDetector-61462" value: { - dps: 22034.10055 - tps: 15644.21139 + dps: 22877.84081 + tps: 16243.26697 } } dps_results: { key: "TestSubtlety-AllItems-Gladiator'sVestments" value: { - dps: 18255.83148 - tps: 12961.64035 + dps: 18857.68348 + tps: 13388.95527 } } dps_results: { key: "TestSubtlety-AllItems-GlowingTwilightScale-54589" value: { - dps: 21080.60157 - tps: 14967.22711 - hps: 58.826 + dps: 21999.84837 + tps: 15619.89234 + hps: 68.608 } } dps_results: { key: "TestSubtlety-AllItems-GraceoftheHerald-55266" value: { - dps: 21913.75192 - tps: 15558.76386 + dps: 23005.17524 + tps: 16333.67442 } } dps_results: { key: "TestSubtlety-AllItems-GraceoftheHerald-56295" value: { - dps: 22365.90889 - tps: 15879.79531 + dps: 23382.80142 + tps: 16601.78901 } } dps_results: { key: "TestSubtlety-AllItems-HarmlightToken-63839" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 21368.21997 - tps: 15171.43618 + dps: 22318.41807 + tps: 15846.07683 } } dps_results: { key: "TestSubtlety-AllItems-HeartofIgnacious-59514" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-HeartofIgnacious-65110" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-HeartofRage-59224" value: { - dps: 21674.30474 - tps: 15388.75637 + dps: 22623.54901 + tps: 16062.7198 } } dps_results: { key: "TestSubtlety-AllItems-HeartofRage-65072" value: { - dps: 21714.29821 - tps: 15417.15173 + dps: 22671.86058 + tps: 16097.02101 } } dps_results: { key: "TestSubtlety-AllItems-HeartofSolace-55868" value: { - dps: 21375.21925 - tps: 15176.40567 + dps: 22356.88765 + tps: 15873.39023 } } dps_results: { key: "TestSubtlety-AllItems-HeartofSolace-56393" value: { - dps: 21960.75215 - tps: 15592.13402 + dps: 22847.05165 + tps: 16221.40667 } } dps_results: { key: "TestSubtlety-AllItems-HeartofThunder-55845" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-HeartofThunder-56370" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-HeartoftheVile-66969" value: { - dps: 22039.43562 - tps: 15647.99929 + dps: 23038.77251 + tps: 16357.52848 } } dps_results: { key: "TestSubtlety-AllItems-Heartpierce-50641" value: { - dps: 23140.25851 - tps: 16429.58354 + dps: 23865.63641 + tps: 16944.60185 } } dps_results: { key: "TestSubtlety-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 22657.97025 - tps: 16087.15888 + dps: 23349.9861 + tps: 16578.49013 } } dps_results: { key: "TestSubtlety-AllItems-ImpatienceofYouth-62464" value: { - dps: 21685.47626 - tps: 15396.68814 + dps: 22605.94795 + tps: 16050.22304 } } dps_results: { key: "TestSubtlety-AllItems-ImpatienceofYouth-62469" value: { - dps: 21685.47626 - tps: 15396.68814 + dps: 22605.94795 + tps: 16050.22304 } } dps_results: { key: "TestSubtlety-AllItems-ImpetuousQuery-55881" value: { - dps: 21263.78132 - tps: 15097.28474 + dps: 22337.53175 + tps: 15859.64754 } } dps_results: { key: "TestSubtlety-AllItems-ImpetuousQuery-56406" value: { - dps: 21423.49058 - tps: 15210.67831 + dps: 22289.69881 + tps: 15825.68615 } } dps_results: { key: "TestSubtlety-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 21329.0001 - tps: 15143.59007 + dps: 22070.69966 + tps: 15670.19676 } } dps_results: { key: "TestSubtlety-AllItems-JarofAncientRemedies-59354" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-JarofAncientRemedies-65029" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-JujuofNimbleness-63840" value: { - dps: 22172.84435 - tps: 15742.71949 + dps: 23180.78948 + tps: 16458.36053 } } dps_results: { key: "TestSubtlety-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 22454.58432 - tps: 15942.75487 + dps: 23350.08398 + tps: 16578.55963 } } dps_results: { key: "TestSubtlety-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 22985.63814 - tps: 16319.80308 + dps: 23818.7597 + tps: 16911.31938 } } dps_results: { key: "TestSubtlety-AllItems-KvaldirBattleStandard-59685" value: { - dps: 21500.07105 - tps: 15265.05044 + dps: 22279.57231 + tps: 15818.49634 } } dps_results: { key: "TestSubtlety-AllItems-KvaldirBattleStandard-59689" value: { - dps: 21500.07105 - tps: 15265.05044 + dps: 22279.57231 + tps: 15818.49634 } } dps_results: { key: "TestSubtlety-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 21367.52964 - tps: 15170.94604 + dps: 22206.16701 + tps: 15766.37858 } } dps_results: { key: "TestSubtlety-AllItems-LeadenDespair-55816" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-LeadenDespair-56347" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-LeftEyeofRajh-56102" value: { - dps: 22580.15507 - tps: 16031.9101 + dps: 23489.99821 + tps: 16677.89873 } } dps_results: { key: "TestSubtlety-AllItems-LeftEyeofRajh-56427" value: { - dps: 22845.53789 - tps: 16220.3319 + dps: 23611.27878 + tps: 16764.00793 } } dps_results: { key: "TestSubtlety-AllItems-LicensetoSlay-58180" value: { - dps: 21850.20306 - tps: 15513.64417 + dps: 22734.91981 + tps: 16141.79307 } } dps_results: { key: "TestSubtlety-AllItems-MagnetiteMirror-55814" value: { - dps: 21513.24492 - tps: 15274.4039 + dps: 22440.35036 + tps: 15932.64875 } } dps_results: { key: "TestSubtlety-AllItems-MagnetiteMirror-56345" value: { - dps: 21590.85759 - tps: 15329.50889 + dps: 22520.91351 + tps: 15989.84859 } } dps_results: { key: "TestSubtlety-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-MarkofKhardros-56132" value: { - dps: 21537.01086 - tps: 15291.27771 + dps: 22331.04981 + tps: 15855.04536 } } dps_results: { key: "TestSubtlety-AllItems-MarkofKhardros-56458" value: { - dps: 21559.02563 - tps: 15306.9082 + dps: 22391.77367 + tps: 15898.1593 } } dps_results: { key: "TestSubtlety-AllItems-MightoftheOcean-55251" value: { - dps: 21530.38251 - tps: 15286.57158 + dps: 22461.7015 + tps: 15947.80806 } } dps_results: { key: "TestSubtlety-AllItems-MightoftheOcean-56285" value: { - dps: 21879.18232 - tps: 15534.21945 + dps: 22695.49547 + tps: 16113.80179 } } dps_results: { key: "TestSubtlety-AllItems-MirrorofBrokenImages-62466" value: { - dps: 21324.05958 - tps: 15140.08231 + dps: 22235.39765 + tps: 15787.13233 } } dps_results: { key: "TestSubtlety-AllItems-MirrorofBrokenImages-62471" value: { - dps: 21324.05958 - tps: 15140.08231 + dps: 22235.39765 + tps: 15787.13233 } } dps_results: { key: "TestSubtlety-AllItems-MoonwellChalice-70142" value: { - dps: 21364.35966 - tps: 15168.69536 + dps: 21915.78131 + tps: 15560.20473 } } dps_results: { key: "TestSubtlety-AllItems-Oremantle'sFavor-61448" value: { - dps: 21420.63721 - tps: 15208.65242 + dps: 22514.02064 + tps: 15984.95465 } } dps_results: { key: "TestSubtlety-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 21336.16758 - tps: 15148.67898 + dps: 22326.59772 + tps: 15851.88438 } } dps_results: { key: "TestSubtlety-AllItems-PorcelainCrab-55237" value: { - dps: 21217.12633 - tps: 15064.1597 + dps: 22075.77228 + tps: 15673.79832 } } dps_results: { key: "TestSubtlety-AllItems-PorcelainCrab-56280" value: { - dps: 21249.45389 - tps: 15087.11226 + dps: 22248.47577 + tps: 15796.41779 } } dps_results: { key: "TestSubtlety-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 22544.41066 - tps: 16006.53157 + dps: 23288.43492 + tps: 16534.78879 } } dps_results: { key: "TestSubtlety-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 22853.23473 - tps: 16225.79666 + dps: 23768.88855 + tps: 16875.91087 } } dps_results: { key: "TestSubtlety-AllItems-Rainsong-55854" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Rainsong-56377" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 22957.94984 - tps: 16300.14438 + dps: 23718.34124 + tps: 16840.02228 } } dps_results: { key: "TestSubtlety-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 22906.17928 - tps: 16263.38729 + dps: 23664.96769 + tps: 16802.12706 } } dps_results: { key: "TestSubtlety-AllItems-RightEyeofRajh-56100" value: { - dps: 21887.92154 - tps: 15540.4243 + dps: 22713.53693 + tps: 16126.61122 } } dps_results: { key: "TestSubtlety-AllItems-RightEyeofRajh-56431" value: { - dps: 21916.52337 - tps: 15560.73159 + dps: 22754.31648 + tps: 16155.5647 } } dps_results: { key: "TestSubtlety-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 21943.34666 - tps: 15579.77613 + dps: 22889.06269 + tps: 16251.23451 } } dps_results: { key: "TestSubtlety-AllItems-SeaStar-55256" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-SeaStar-56290" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Shadowblade'sBattlegear" value: { - dps: 17366.34777 - tps: 12330.10691 + dps: 17662.90856 + tps: 12540.66508 } } dps_results: { key: "TestSubtlety-AllItems-ShardofWoe-60233" value: { - dps: 21618.23163 - tps: 15348.94446 + dps: 22405.96495 + tps: 15908.23511 } } dps_results: { key: "TestSubtlety-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 21854.05064 - tps: 15516.37596 + dps: 22600.60706 + tps: 16046.43102 } } dps_results: { key: "TestSubtlety-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Skardyn'sGrace-56115" value: { - dps: 22173.58479 - tps: 15743.2452 + dps: 22885.60036 + tps: 16248.77625 } } dps_results: { key: "TestSubtlety-AllItems-Skardyn'sGrace-56440" value: { - dps: 22226.33357 - tps: 15780.69684 + dps: 23023.52882 + tps: 16346.70546 } } dps_results: { key: "TestSubtlety-AllItems-Sorrowsong-55879" value: { - dps: 21263.78132 - tps: 15097.28474 + dps: 22337.53175 + tps: 15859.64754 } } dps_results: { key: "TestSubtlety-AllItems-Sorrowsong-56400" value: { - dps: 21423.49058 - tps: 15210.67831 + dps: 22289.69881 + tps: 15825.68615 } } dps_results: { key: "TestSubtlety-AllItems-Soul'sAnguish-66994" value: { - dps: 21754.25357 - tps: 15445.52003 + dps: 22546.54636 + tps: 16008.04792 } } dps_results: { key: "TestSubtlety-AllItems-SoulCasket-58183" value: { - dps: 21324.05958 - tps: 15140.08231 + dps: 22235.39765 + tps: 15787.13233 } } dps_results: { key: "TestSubtlety-AllItems-Stonemother'sKiss-61411" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-StumpofTime-62465" value: { - dps: 21504.05355 - tps: 15267.87802 + dps: 22368.46588 + tps: 15881.61077 } } dps_results: { key: "TestSubtlety-AllItems-StumpofTime-62470" value: { - dps: 21504.05355 - tps: 15267.87802 + dps: 22368.46588 + tps: 15881.61077 } } dps_results: { key: "TestSubtlety-AllItems-SymbioticWorm-59332" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-SymbioticWorm-65048" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 21763.7589 - tps: 15452.26882 + dps: 22733.98419 + tps: 16141.12878 } } dps_results: { key: "TestSubtlety-AllItems-TearofBlood-55819" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-TearofBlood-56351" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 21321.26447 - tps: 15138.09777 + dps: 22160.01769 + tps: 15733.61256 } } dps_results: { key: "TestSubtlety-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 21423.49058 - tps: 15210.67831 + dps: 22289.69881 + tps: 15825.68615 } } dps_results: { key: "TestSubtlety-AllItems-Theralion'sMirror-59519" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Theralion'sMirror-65105" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Throngus'sFinger-56121" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Throngus'sFinger-56449" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-Tia'sGrace-55874" value: { - dps: 22316.68934 - tps: 15844.84943 + dps: 23395.28549 + tps: 16610.6527 } } dps_results: { key: "TestSubtlety-AllItems-Tia'sGrace-56394" value: { - dps: 22485.35979 - tps: 15964.60545 + dps: 23621.75153 + tps: 16771.44358 } } dps_results: { key: "TestSubtlety-AllItems-TinyAbominationinaJar-50706" value: { - dps: 21970.35379 - tps: 15598.95119 + dps: 22600.91434 + tps: 16046.64918 } } dps_results: { key: "TestSubtlety-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 21160.38401 - tps: 15023.87265 + dps: 22081.03432 + tps: 15677.53437 } } dps_results: { key: "TestSubtlety-AllItems-UnheededWarning-59520" value: { - dps: 22462.45917 - tps: 15948.34601 + dps: 23483.01346 + tps: 16672.93956 } } dps_results: { key: "TestSubtlety-AllItems-UnquenchableFlame-67101" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-UnsolvableRiddle-62463" value: { - dps: 22877.25546 - tps: 16242.85138 + dps: 23755.12776 + tps: 16866.14071 } } dps_results: { key: "TestSubtlety-AllItems-UnsolvableRiddle-62468" value: { - dps: 22877.25546 - tps: 16242.85138 + dps: 23755.12776 + tps: 16866.14071 } } dps_results: { key: "TestSubtlety-AllItems-UnsolvableRiddle-68709" value: { - dps: 22877.25546 - tps: 16242.85138 + dps: 23755.12776 + tps: 16866.14071 } } dps_results: { key: "TestSubtlety-AllItems-VialofStolenMemories-59515" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-VialofStolenMemories-65109" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 22592.55485 - tps: 16040.71395 + dps: 23428.00603 + tps: 16633.88428 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 21430.08497 - tps: 15215.36033 + dps: 22374.30327 + tps: 15885.75532 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 21466.14605 - tps: 15240.96369 + dps: 22376.10661 + tps: 15887.03569 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 21591.00306 - tps: 15329.61217 + dps: 22478.10309 + tps: 15959.45319 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 21543.65746 - tps: 15295.9968 + dps: 22455.91397 + tps: 15943.69892 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 21274.86316 - tps: 15105.15284 + dps: 22192.9064 + tps: 15756.96354 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 21342.77409 - tps: 15153.3696 + dps: 22329.41335 + tps: 15853.88348 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 22267.83321 - tps: 15810.16158 + dps: 23342.61331 + tps: 16573.25545 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 21423.09235 - tps: 15210.39557 + dps: 22366.91818 + tps: 15880.51191 } } dps_results: { key: "TestSubtlety-AllItems-WindDancer'sRegalia" value: { - dps: 20510.53998 - tps: 14562.48339 + dps: 21329.11979 + tps: 15143.67505 } } dps_results: { key: "TestSubtlety-AllItems-WitchingHourglass-55787" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-WitchingHourglass-56320" value: { - dps: 21080.60157 - tps: 14967.22711 + dps: 21999.84837 + tps: 15619.89234 } } dps_results: { key: "TestSubtlety-AllItems-World-QuellerFocus-63842" value: { - dps: 21444.28814 - tps: 15225.44458 + dps: 22176.92428 + tps: 15745.61624 } } dps_results: { key: "TestSubtlety-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 21300.96182 - tps: 15123.6829 + dps: 22084.80387 + tps: 15680.21075 } } dps_results: { key: "TestSubtlety-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 21300.96182 - tps: 15123.6829 + dps: 22084.80387 + tps: 15680.21075 } } dps_results: { key: "TestSubtlety-Average-Default" value: { - dps: 23201.40134 - tps: 16472.99495 + dps: 24080.03758 + tps: 17096.82668 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Deadly-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 20755.95835 - tps: 14736.73043 + dps: 21570.96169 + tps: 15315.3828 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Deadly-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 20755.95835 - tps: 14736.73043 + dps: 21570.96169 + tps: 15315.3828 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Deadly-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 26960.86979 - tps: 19142.21755 + dps: 28172.60725 + tps: 20002.55115 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Deadly-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 11698.93204 - tps: 8306.24175 + dps: 11847.12401 + tps: 8411.45805 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Deadly-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 11698.93204 - tps: 8306.24175 + dps: 11847.12401 + tps: 8411.45805 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Deadly-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 12723.40003 - tps: 9033.61402 + dps: 13307.8572 + tps: 9448.57861 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Instant-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 23061.27917 - tps: 16373.50821 + dps: 23966.71101 + tps: 17016.36482 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Instant-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 23061.27917 - tps: 16373.50821 + dps: 23966.71101 + tps: 17016.36482 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Instant-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29265.95909 - tps: 20778.83095 + dps: 30842.9933 + tps: 21898.52524 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Instant-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 12926.92428 - tps: 9178.11624 + dps: 13035.03081 + tps: 9254.87187 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Instant-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 12926.92428 - tps: 9178.11624 + dps: 13035.03081 + tps: 9254.87187 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Deadly OH Instant-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 13914.84182 - tps: 9879.5377 + dps: 13914.94667 + tps: 9879.61213 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Instant OH Instant-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 20620.00295 - tps: 14640.20209 + dps: 21444.11638 + tps: 15225.32263 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Instant OH Instant-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 20620.00295 - tps: 14640.20209 + dps: 21444.11638 + tps: 15225.32263 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Instant OH Instant-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 27096.57074 - tps: 19238.56522 + dps: 28799.48225 + tps: 20447.6324 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Instant OH Instant-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 11550.03119 - tps: 8200.52214 + dps: 11728.60368 + tps: 8327.30861 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Instant OH Instant-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 11550.03119 - tps: 8200.52214 + dps: 11728.60368 + tps: 8327.30861 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-MH Instant OH Instant-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 12655.64942 - tps: 8985.51109 + dps: 13093.88907 + tps: 9296.66124 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-Subtlety-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 23140.25851 - tps: 16429.58354 + dps: 23865.63641 + tps: 16944.60185 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-Subtlety-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 23140.25851 - tps: 16429.58354 + dps: 23865.63641 + tps: 16944.60185 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-Subtlety-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29634.40349 - tps: 21040.42648 + dps: 30822.69559 + tps: 21884.11387 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-Subtlety-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 12910.90462 - tps: 9166.74228 + dps: 13130.43344 + tps: 9322.60774 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-Subtlety-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 12910.90462 - tps: 9166.74228 + dps: 13130.43344 + tps: 9322.60774 } } dps_results: { key: "TestSubtlety-Settings-Human-p1_subtlety_test-Subtlety-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 13891.77369 - tps: 9863.15932 + dps: 14258.98927 + tps: 10123.88238 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Deadly-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 20947.32074 - tps: 14872.59772 + dps: 21772.88374 + tps: 15458.74746 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Deadly-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 20947.32074 - tps: 14872.59772 + dps: 21772.88374 + tps: 15458.74746 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Deadly-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 27367.77185 - tps: 19431.11801 + dps: 28609.56551 + tps: 20312.79151 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Deadly-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 11810.18882 - tps: 8385.23406 + dps: 11974.61612 + tps: 8501.97744 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Deadly-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 11810.18882 - tps: 8385.23406 + dps: 11974.61612 + tps: 8501.97744 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Deadly-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 12940.19 - tps: 9187.5349 + dps: 13527.30448 + tps: 9604.38618 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Instant-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 23306.86972 - tps: 16547.8775 + dps: 24218.07573 + tps: 17194.83377 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Instant-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 23306.86972 - tps: 16547.8775 + dps: 24218.07573 + tps: 17194.83377 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Instant-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 29701.95744 - tps: 21088.38978 + dps: 31300.90205 + tps: 22223.64045 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Instant-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 13037.68218 - tps: 9256.75435 + dps: 13152.99219 + tps: 9338.62445 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Instant-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 13037.68218 - tps: 9256.75435 + dps: 13152.99219 + tps: 9338.62445 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Deadly OH Instant-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 14138.38835 - tps: 10038.25573 + dps: 14148.12801 + tps: 10045.17088 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Instant OH Instant-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 20807.28994 - tps: 14773.17586 + dps: 21637.47713 + tps: 15362.60876 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Instant OH Instant-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 20807.28994 - tps: 14773.17586 + dps: 21637.47713 + tps: 15362.60876 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Instant OH Instant-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 27520.71986 - tps: 19539.7111 + dps: 29248.57732 + tps: 20766.4899 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Instant OH Instant-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 11665.99952 - tps: 8282.85966 + dps: 11833.46259 + tps: 8401.75844 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Instant OH Instant-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 11665.99952 - tps: 8282.85966 + dps: 11833.46259 + tps: 8401.75844 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-MH Instant OH Instant-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 12864.58003 - tps: 9133.85182 + dps: 13320.39851 + tps: 9457.48294 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-Subtlety-subtlety-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 23358.93617 - tps: 16584.84468 + dps: 24083.45228 + tps: 17099.25112 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-Subtlety-subtlety-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 23358.93617 - tps: 16584.84468 + dps: 24083.45228 + tps: 17099.25112 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-Subtlety-subtlety-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30068.69045 - tps: 21348.77022 + dps: 31282.00193 + tps: 22210.22137 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-Subtlety-subtlety-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 13025.64206 - tps: 9248.20587 + dps: 13250.36448 + tps: 9407.75878 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-Subtlety-subtlety-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 13025.64206 - tps: 9248.20587 + dps: 13250.36448 + tps: 9407.75878 } } dps_results: { key: "TestSubtlety-Settings-Orc-p1_subtlety_test-Subtlety-subtlety-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 14110.28609 - tps: 10018.30312 + dps: 14493.66938 + tps: 10290.50526 } } dps_results: { key: "TestSubtlety-SwitchInFrontOfTarget-Default" value: { - dps: 19530.45329 - tps: 13866.62184 + dps: 18830.25477 + tps: 13369.48089 } } diff --git a/sim/rogue/subtlety/find_weakness.go b/sim/rogue/subtlety/find_weakness.go index cc102f681e..95ae2da2f9 100644 --- a/sim/rogue/subtlety/find_weakness.go +++ b/sim/rogue/subtlety/find_weakness.go @@ -11,7 +11,7 @@ func (subRogue *SubtletyRogue) applyFindWeakness() { return } - debuffPower := 1 - .35*float64(subRogue.Talents.FindWeakness) + debuffPower := .35 * float64(subRogue.Talents.FindWeakness) fwDebuff := subRogue.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { return target.GetOrRegisterAura(core.Aura{ @@ -20,12 +20,10 @@ func (subRogue *SubtletyRogue) applyFindWeakness() { ActionID: core.ActionID{SpellID: 91023}, OnGain: func(aura *core.Aura, sim *core.Simulation) { - // TODO Thebackstabi 3/20/2024 -- Update to AttackTables once completed - // Also need to validate if it stacks with Expose/Sunder/Faerie. Currently bugged on beta and does nothing. - aura.Unit.PseudoStats.ArmorMultiplier *= debuffPower + subRogue.AttackTables[aura.Unit.UnitIndex].ArmorIgnoreFactor += debuffPower }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { - aura.Unit.PseudoStats.ArmorMultiplier /= debuffPower + subRogue.AttackTables[aura.Unit.UnitIndex].ArmorIgnoreFactor -= debuffPower }, }) }) diff --git a/sim/rogue/subtlety/hemorrhage.go b/sim/rogue/subtlety/hemorrhage.go index c0392b2312..171c9dd503 100644 --- a/sim/rogue/subtlety/hemorrhage.go +++ b/sim/rogue/subtlety/hemorrhage.go @@ -55,13 +55,14 @@ func (subRogue *SubtletyRogue) registerHemorrhageSpell() { }) subRogue.Rogue.Hemorrhage = subRogue.RegisterSpell(core.SpellConfig{ - ActionID: hemoActionID, - SpellSchool: core.SpellSchoolPhysical, - ProcMask: core.ProcMaskMeleeMHSpecial, - Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | rogue.SpellFlagBuilder | core.SpellFlagAPL, + ActionID: hemoActionID, + SpellSchool: core.SpellSchoolPhysical, + ProcMask: core.ProcMaskMeleeMHSpecial, + Flags: core.SpellFlagMeleeMetrics | core.SpellFlagIncludeTargetBonusDamage | rogue.SpellFlagBuilder | core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellHemorrhage, EnergyCost: core.EnergyCostOptions{ - Cost: subRogue.GetGeneratorCostModifier(35 - 2*float64(subRogue.Talents.SlaughterFromTheShadows)), + Cost: 35 - 2*float64(subRogue.Talents.SlaughterFromTheShadows), Refund: 0.8, }, Cast: core.CastConfig{ @@ -98,4 +99,9 @@ func (subRogue *SubtletyRogue) registerHemorrhageSpell() { RelatedAuras: []core.AuraArray{hemoAuras}, }) + + subRogue.RegisterOnItemSwap(func(s *core.Simulation) { + // Recalculate Hemorrhage's multiplier in case the MH weapon changed. + subRogue.Hemorrhage.DamageMultiplier = core.TernaryFloat64(subRogue.HasDagger(core.MainHand), 3.25, 2.24) + }) } diff --git a/sim/rogue/subtlety/premeditation.go b/sim/rogue/subtlety/premeditation.go index 5d5ac031ca..4634152a29 100644 --- a/sim/rogue/subtlety/premeditation.go +++ b/sim/rogue/subtlety/premeditation.go @@ -4,6 +4,7 @@ import ( "time" "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/rogue" ) func (subRogue *SubtletyRogue) registerPremeditation() { @@ -14,8 +15,9 @@ func (subRogue *SubtletyRogue) registerPremeditation() { comboMetrics := subRogue.NewComboPointMetrics(core.ActionID{SpellID: 14183}) subRogue.Premeditation = subRogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 14183}, - Flags: core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 14183}, + Flags: core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellPremeditation, Cast: core.CastConfig{ DefaultCast: core.Cast{ diff --git a/sim/rogue/subtlety/preparation.go b/sim/rogue/subtlety/preparation.go index 5aa07838ae..0a41ea606a 100644 --- a/sim/rogue/subtlety/preparation.go +++ b/sim/rogue/subtlety/preparation.go @@ -4,6 +4,7 @@ import ( "time" "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/rogue" ) func (subRogue *SubtletyRogue) registerPreparationCD() { @@ -12,8 +13,9 @@ func (subRogue *SubtletyRogue) registerPreparationCD() { } subRogue.Preparation = subRogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 14185}, - Flags: core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 14185}, + Flags: core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellPreparation, Cast: core.CastConfig{ DefaultCast: core.Cast{ GCD: time.Second, diff --git a/sim/rogue/subtlety/shadow_dance.go b/sim/rogue/subtlety/shadow_dance.go index 8eab072625..63411f096b 100644 --- a/sim/rogue/subtlety/shadow_dance.go +++ b/sim/rogue/subtlety/shadow_dance.go @@ -4,6 +4,7 @@ import ( "time" "github.com/wowsims/cata/sim/core/proto" + "github.com/wowsims/cata/sim/rogue" "github.com/wowsims/cata/sim/core" ) @@ -29,8 +30,9 @@ func (subRogue *SubtletyRogue) registerShadowDanceCD() { }) subRogue.ShadowDance = subRogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - Flags: core.SpellFlagAPL, + ActionID: actionID, + Flags: core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellShadowDance, Cast: core.CastConfig{ IgnoreHaste: true, diff --git a/sim/rogue/subtlety/shadowstep.go b/sim/rogue/subtlety/shadowstep.go index 71cd034159..0651f5b16f 100644 --- a/sim/rogue/subtlety/shadowstep.go +++ b/sim/rogue/subtlety/shadowstep.go @@ -4,11 +4,11 @@ import ( "time" "github.com/wowsims/cata/sim/core" + "github.com/wowsims/cata/sim/rogue" ) func (subRogue *SubtletyRogue) registerShadowstepCD() { actionID := core.ActionID{SpellID: 36554} - baseCost := 0.0 var affectedSpells []*core.Spell subRogue.ShadowstepAura = subRogue.RegisterAura(core.Aura{ @@ -40,18 +40,11 @@ func (subRogue *SubtletyRogue) registerShadowstepCD() { }) subRogue.Shadowstep = subRogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - Flags: core.SpellFlagAPL, - EnergyCost: core.EnergyCostOptions{ - Cost: baseCost, - Refund: 0, - }, + ActionID: actionID, + Flags: core.SpellFlagAPL, + ClassSpellMask: rogue.RogueSpellShadowstep, Cast: core.CastConfig{ - DefaultCast: core.Cast{ - Cost: baseCost, - GCD: 0, - }, IgnoreHaste: true, CD: core.Cooldown{ Timer: subRogue.NewTimer(), diff --git a/sim/rogue/talents.go b/sim/rogue/talents.go index 430e082661..09f3eefb31 100644 --- a/sim/rogue/talents.go +++ b/sim/rogue/talents.go @@ -15,6 +15,14 @@ func (rogue *Rogue) ApplyTalents() { if rogue.Talents.SavageCombat > 0 { rogue.MultiplyStat(stats.AttackPower, 1.0+0.03*float64(rogue.Talents.SavageCombat)) } + + if rogue.Talents.Ruthlessness > 0 { + rogue.ruthlessnessMetrics = rogue.NewComboPointMetrics(core.ActionID{SpellID: 14161}) + } + + if rogue.Talents.RelentlessStrikes > 0 { + rogue.relentlessStrikesMetrics = rogue.NewEnergyMetrics(core.ActionID{SpellID: 14179}) + } } // DWSMultiplier returns the offhand damage multiplier @@ -22,42 +30,3 @@ func (rogue *Rogue) DWSMultiplier() float64 { // DWS (Now named Ambidexterity) is now a Combat rogue passive return core.TernaryFloat64(rogue.Spec == proto.Spec_SpecCombatRogue, 1.75, 1) } - -func (rogue *Rogue) makeFinishingMoveEffectApplier() func(sim *core.Simulation, numPoints int32) { - ruthlessnessMetrics := rogue.NewComboPointMetrics(core.ActionID{SpellID: 14161}) - relentlessStrikesMetrics := rogue.NewEnergyMetrics(core.ActionID{SpellID: 14179}) - var mayhemMetrics *core.ResourceMetrics - if rogue.HasSetBonus(Tier10, 4) { - mayhemMetrics = rogue.NewComboPointMetrics(core.ActionID{SpellID: 70802}) - } - return func(sim *core.Simulation, numPoints int32) { - if rogue.Talents.Ruthlessness > 0 { - procChance := 0.2 * float64(rogue.Talents.Ruthlessness) - if sim.Proc(procChance, "Ruthlessness") { - rogue.AddComboPoints(sim, 1, ruthlessnessMetrics) - } - } - if rogue.Talents.RelentlessStrikes > 0 { - procChance := []float64{0.0, 0.07, 0.14, 0.2}[rogue.Talents.RelentlessStrikes] * float64(numPoints) - if sim.Proc(procChance, "Relentless Strikes") { - rogue.AddEnergy(sim, 25, relentlessStrikesMetrics) - } - } - if mayhemMetrics != nil { - if sim.RandomFloat("Mayhem") < 0.13 { - rogue.AddComboPoints(sim, 3, mayhemMetrics) - } - } - } -} - -func (rogue *Rogue) makeGeneratorCostModifier() func(baseCost float64) float64 { - // if rogue.HasSetBonus(Tier7, 4) { - // return func(baseCost float64) float64 { - // return math.RoundToEven(0.95 * baseCost) - // } - // } - return func(baseCost float64) float64 { - return baseCost - } -} diff --git a/sim/rogue/tricks_of_the_trade.go b/sim/rogue/tricks_of_the_trade.go index 6b10c63a05..a01f8e9199 100644 --- a/sim/rogue/tricks_of_the_trade.go +++ b/sim/rogue/tricks_of_the_trade.go @@ -58,8 +58,9 @@ func (rogue *Rogue) registerTricksOfTheTradeSpell() { }) rogue.TricksOfTheTrade = rogue.RegisterSpell(core.SpellConfig{ - ActionID: actionID, - Flags: core.SpellFlagAPL | core.SpellFlagHelpful, + ActionID: actionID, + Flags: core.SpellFlagAPL | core.SpellFlagHelpful, + ClassSpellMask: RogueSpellTricksOfTheTrade, EnergyCost: core.EnergyCostOptions{ Cost: energyCost, diff --git a/sim/rogue/vanish.go b/sim/rogue/vanish.go index 3d7eca43c1..c739e0b01c 100644 --- a/sim/rogue/vanish.go +++ b/sim/rogue/vanish.go @@ -9,9 +9,10 @@ import ( func (rogue *Rogue) registerVanishSpell() { rogue.Vanish = rogue.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 1856}, - SpellSchool: core.SpellSchoolPhysical, - Flags: core.SpellFlagAPL, + ActionID: core.ActionID{SpellID: 1856}, + SpellSchool: core.SpellSchoolPhysical, + Flags: core.SpellFlagAPL, + ClassSpellMask: RogueSpellVanish, Cast: core.CastConfig{ DefaultCast: core.Cast{ diff --git a/sim/shaman/elemental/TestElemental.results b/sim/shaman/elemental/TestElemental.results index 0d4c40875a..613f42d488 100644 --- a/sim/shaman/elemental/TestElemental.results +++ b/sim/shaman/elemental/TestElemental.results @@ -37,1296 +37,1296 @@ character_stats_results: { dps_results: { key: "TestElemental-AllItems-AgileShadowspiritDiamond" value: { - dps: 32073.40191 + dps: 32088.98906 tps: 565.92809 } } dps_results: { key: "TestElemental-AllItems-Althor'sAbacus-50366" value: { - dps: 30064.58592 + dps: 30078.24637 tps: 571.19014 } } dps_results: { key: "TestElemental-AllItems-Anhuur'sHymnal-55889" value: { - dps: 30904.65046 + dps: 30918.55181 tps: 570.17702 } } dps_results: { key: "TestElemental-AllItems-Anhuur'sHymnal-56407" value: { - dps: 31220.03633 + dps: 31234.86366 tps: 568.80056 } } dps_results: { key: "TestElemental-AllItems-AustereShadowspiritDiamond" value: { - dps: 31345.38531 + dps: 31360.97246 tps: 564.78527 } } dps_results: { key: "TestElemental-AllItems-BattlegearoftheRagingElements" value: { - dps: 22824.74651 + dps: 22838.28134 tps: 404.22255 } } dps_results: { key: "TestElemental-AllItems-BaubleofTrueBlood-50726" value: { - dps: 30144.18802 + dps: 30157.67562 tps: 569.27282 - hps: 90.39793 + hps: 100.70184 } } dps_results: { key: "TestElemental-AllItems-BedrockTalisman-58182" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BellofEnragingResonance-59326" value: { - dps: 31491.82835 + dps: 31507.28729 tps: 564.67153 } } dps_results: { key: "TestElemental-AllItems-BindingPromise-67037" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BlackBruise-50692" value: { - dps: 24060.63112 + dps: 24073.71811 tps: 533.3688 } } dps_results: { key: "TestElemental-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 29715.94006 + dps: 29729.42766 tps: 569.07709 } } dps_results: { key: "TestElemental-AllItems-BloodofIsiset-55995" value: { - dps: 29763.50508 + dps: 29776.99268 tps: 571.86745 } } dps_results: { key: "TestElemental-AllItems-BloodofIsiset-56414" value: { - dps: 29828.83136 + dps: 29842.31896 tps: 570.9482 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 30582.15508 + dps: 30597.02824 tps: 564.73496 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 29780.34593 + dps: 29793.83352 tps: 563.22025 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.30964 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 30571.98543 + dps: 30586.43135 tps: 565.75867 } } dps_results: { key: "TestElemental-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-BottledLightning-66879" value: { - dps: 30141.71563 + dps: 30155.37608 tps: 570.94746 } } dps_results: { key: "TestElemental-AllItems-BracingShadowspiritDiamond" value: { - dps: 31538.47291 + dps: 31554.11434 tps: 565.46838 } } dps_results: { key: "TestElemental-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 32271.97116 + dps: 32287.61258 tps: 568.32557 } } dps_results: { key: "TestElemental-AllItems-BurningShadowspiritDiamond" value: { - dps: 32271.97116 + dps: 32287.61258 tps: 568.32557 } } dps_results: { key: "TestElemental-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 32107.40382 + dps: 32122.99097 tps: 565.88118 } } dps_results: { key: "TestElemental-AllItems-CoreofRipeness-58184" value: { - dps: 30978.26502 + dps: 30992.07522 tps: 577.93417 } } dps_results: { key: "TestElemental-AllItems-CorpseTongueCoin-50349" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-CrushingWeight-59506" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-CrushingWeight-65118" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 30602.85448 + dps: 30616.66468 tps: 577.64229 } } dps_results: { key: "TestElemental-AllItems-Deathbringer'sWill-50363" value: { - dps: 29790.41353 + dps: 29803.90113 tps: 564.98201 } } dps_results: { key: "TestElemental-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 31376.81264 + dps: 31392.39979 tps: 564.73836 } } dps_results: { key: "TestElemental-AllItems-DislodgedForeignObject-50348" value: { - dps: 30443.23752 + dps: 30456.81292 tps: 566.69729 } } dps_results: { key: "TestElemental-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 31345.38531 + dps: 31360.97246 tps: 564.78527 } } dps_results: { key: "TestElemental-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 30749.91125 + dps: 30763.96867 tps: 580.70165 } } dps_results: { key: "TestElemental-AllItems-EmberShadowspiritDiamond" value: { - dps: 31538.47291 + dps: 31554.11434 tps: 573.75103 } } dps_results: { key: "TestElemental-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 31376.81264 + dps: 31392.39979 tps: 564.73836 } } dps_results: { key: "TestElemental-AllItems-EssenceoftheCyclone-59473" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-EssenceoftheCyclone-65140" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-EternalShadowspiritDiamond" value: { - dps: 31345.38531 + dps: 31360.97246 tps: 564.78527 } } dps_results: { key: "TestElemental-AllItems-FallofMortality-59500" value: { - dps: 30602.85448 + dps: 30616.66468 tps: 577.64229 } } dps_results: { key: "TestElemental-AllItems-FallofMortality-65124" value: { - dps: 30751.08128 + dps: 30764.93369 tps: 579.45195 } } dps_results: { key: "TestElemental-AllItems-Figurine-DemonPanther-52199" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-Figurine-DreamOwl-52354" value: { - dps: 30846.89725 + dps: 30860.67127 tps: 576.36724 } } dps_results: { key: "TestElemental-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 31548.78474 + dps: 31563.85771 tps: 577.107 } } dps_results: { key: "TestElemental-AllItems-Figurine-KingofBoars-52351" value: { - dps: 29828.83136 + dps: 29842.31896 tps: 570.9482 } } dps_results: { key: "TestElemental-AllItems-FleetShadowspiritDiamond" value: { - dps: 31444.33989 + dps: 31459.92704 tps: 567.08803 } } dps_results: { key: "TestElemental-AllItems-FluidDeath-58181" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-ForlornShadowspiritDiamond" value: { - dps: 31538.47291 + dps: 31554.11434 tps: 567.17955 } } dps_results: { key: "TestElemental-AllItems-FuryofAngerforge-59461" value: { - dps: 29806.61184 + dps: 29820.09944 tps: 563.22025 } } dps_results: { key: "TestElemental-AllItems-GaleofShadows-56138" value: { - dps: 30707.85401 + dps: 30721.35599 tps: 578.24411 } } dps_results: { key: "TestElemental-AllItems-GaleofShadows-56462" value: { - dps: 30865.40506 + dps: 30879.07944 tps: 580.57843 } } dps_results: { key: "TestElemental-AllItems-GearDetector-61462" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-GlowingTwilightScale-54589" value: { - dps: 30104.50985 + dps: 30118.18236 tps: 571.73275 } } dps_results: { key: "TestElemental-AllItems-GraceoftheHerald-55266" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-GraceoftheHerald-56295" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-HarmlightToken-63839" value: { - dps: 30398.19516 - tps: 732.23146 + dps: 30417.3437 + tps: 726.18101 } } dps_results: { key: "TestElemental-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-HeartofIgnacious-59514" value: { - dps: 31006.89707 + dps: 31020.43531 tps: 581.47982 } } dps_results: { key: "TestElemental-AllItems-HeartofIgnacious-65110" value: { - dps: 31215.18271 + dps: 31228.73145 tps: 581.57871 } } dps_results: { key: "TestElemental-AllItems-HeartofRage-59224" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-HeartofRage-65072" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-HeartofSolace-55868" value: { - dps: 29953.57782 + dps: 29967.06542 tps: 577.24504 } } dps_results: { key: "TestElemental-AllItems-HeartofSolace-56393" value: { - dps: 29976.92065 + dps: 29990.40825 tps: 579.73516 } } dps_results: { key: "TestElemental-AllItems-HeartofThunder-55845" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-HeartofThunder-56370" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-HeartoftheVile-66969" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Heartpierce-50641" value: { - dps: 32271.97116 + dps: 32287.61258 tps: 568.32557 } } dps_results: { key: "TestElemental-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 31376.81264 + dps: 31392.39979 tps: 564.73836 } } dps_results: { key: "TestElemental-AllItems-ImpatienceofYouth-62464" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-ImpatienceofYouth-62469" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-ImpetuousQuery-55881" value: { - dps: 29763.50508 + dps: 29776.99268 tps: 571.86745 } } dps_results: { key: "TestElemental-AllItems-ImpetuousQuery-56406" value: { - dps: 29828.83136 + dps: 29842.31896 tps: 570.9482 } } dps_results: { key: "TestElemental-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 30539.85311 + dps: 30554.2249 tps: 572.00978 } } dps_results: { key: "TestElemental-AllItems-JarofAncientRemedies-59354" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 584.8406 } } dps_results: { key: "TestElemental-AllItems-JarofAncientRemedies-65029" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 587.1224 } } dps_results: { key: "TestElemental-AllItems-JujuofNimbleness-63840" value: { - dps: 29715.94006 + dps: 29729.42766 tps: 569.07709 } } dps_results: { key: "TestElemental-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-KvaldirBattleStandard-59685" value: { - dps: 29646.69394 + dps: 29660.18153 tps: 568.22767 } } dps_results: { key: "TestElemental-AllItems-KvaldirBattleStandard-59689" value: { - dps: 29646.69394 + dps: 29660.18153 tps: 568.22767 } } dps_results: { key: "TestElemental-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 30319.03365 + dps: 30332.52124 tps: 570.48373 } } dps_results: { key: "TestElemental-AllItems-LastWord-50708" value: { - dps: 32271.97116 + dps: 32287.61258 tps: 568.32557 } } dps_results: { key: "TestElemental-AllItems-LeadenDespair-55816" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-LeadenDespair-56347" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-LeftEyeofRajh-56102" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-LeftEyeofRajh-56427" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-LicensetoSlay-58180" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-MagnetiteMirror-55814" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-MagnetiteMirror-56345" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.30779 } } dps_results: { key: "TestElemental-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.30779 } } dps_results: { key: "TestElemental-AllItems-MarkofKhardros-56132" value: { - dps: 29897.88712 + dps: 29911.37472 tps: 572.28013 } } dps_results: { key: "TestElemental-AllItems-MarkofKhardros-56458" value: { - dps: 29929.53316 + dps: 29943.02076 tps: 575.17392 } } dps_results: { key: "TestElemental-AllItems-MightoftheOcean-55251" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-MightoftheOcean-56285" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-MirrorofBrokenImages-62466" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-MirrorofBrokenImages-62471" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-MoonwellChalice-70142" value: { - dps: 31190.33627 + dps: 31204.16556 tps: 593.35414 } } dps_results: { key: "TestElemental-AllItems-Oremantle'sFavor-61448" value: { - dps: 29632.8571 + dps: 29646.3447 tps: 563.39323 } } dps_results: { key: "TestElemental-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 30445.14986 + dps: 30459.07952 tps: 563.37302 } } dps_results: { key: "TestElemental-AllItems-PorcelainCrab-55237" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-PorcelainCrab-56280" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 31345.38531 + dps: 31360.97246 tps: 564.78527 } } dps_results: { key: "TestElemental-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Rainsong-55854" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.31759 } } dps_results: { key: "TestElemental-AllItems-Rainsong-56377" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.31112 } } dps_results: { key: "TestElemental-AllItems-RegaliaoftheRagingElements" value: { - dps: 27809.22471 + dps: 27824.31436 tps: 532.89963 } } dps_results: { key: "TestElemental-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 32073.40191 + dps: 32088.98906 tps: 565.92809 } } dps_results: { key: "TestElemental-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 32073.40191 + dps: 32088.98906 tps: 565.92599 } } dps_results: { key: "TestElemental-AllItems-RightEyeofRajh-56100" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-RightEyeofRajh-56431" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-SeaStar-55256" value: { - dps: 30736.73365 + dps: 30750.91859 tps: 569.87803 } } dps_results: { key: "TestElemental-AllItems-SeaStar-56290" value: { - dps: 31145.52318 + dps: 31160.30973 tps: 569.12951 } } dps_results: { key: "TestElemental-AllItems-Shadowmourne-49623" value: { - dps: 32271.97116 + dps: 32287.61258 tps: 568.32557 } } dps_results: { key: "TestElemental-AllItems-ShardofWoe-60233" value: { - dps: 30039.96943 + dps: 30053.45703 tps: 556.52382 } } dps_results: { key: "TestElemental-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Skardyn'sGrace-56115" value: { - dps: 29790.10353 + dps: 29803.59113 tps: 571.78963 } } dps_results: { key: "TestElemental-AllItems-Skardyn'sGrace-56440" value: { - dps: 29837.66014 + dps: 29851.14774 tps: 573.81654 } } dps_results: { key: "TestElemental-AllItems-Sorrowsong-55879" value: { - dps: 30443.00452 + dps: 30456.49212 tps: 572.80466 } } dps_results: { key: "TestElemental-AllItems-Sorrowsong-56400" value: { - dps: 30586.14329 + dps: 30599.64334 tps: 577.25776 } } dps_results: { key: "TestElemental-AllItems-Soul'sAnguish-66994" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-SoulCasket-58183" value: { - dps: 31375.19109 + dps: 31390.43433 tps: 571.76383 } } dps_results: { key: "TestElemental-AllItems-Spiritwalker'sRegalia" value: { - dps: 29324.5654 + dps: 29339.80179 tps: 528.87493 } } dps_results: { key: "TestElemental-AllItems-Stonemother'sKiss-61411" value: { - dps: 30417.39831 + dps: 30431.08088 tps: 571.46933 } } dps_results: { key: "TestElemental-AllItems-StumpofTime-62465" value: { - dps: 31481.14669 + dps: 31496.47531 tps: 566.26599 } } dps_results: { key: "TestElemental-AllItems-StumpofTime-62470" value: { - dps: 31196.30087 - tps: 570.01881 + dps: 31475.6141 + tps: 568.48225 } } dps_results: { key: "TestElemental-AllItems-SymbioticWorm-59332" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-SymbioticWorm-65048" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 30649.09522 + dps: 30662.81799 tps: 583.82577 } } dps_results: { key: "TestElemental-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-TearofBlood-55819" value: { - dps: 30215.03736 + dps: 30228.74103 tps: 573.03461 } } dps_results: { key: "TestElemental-AllItems-TearofBlood-56351" value: { - dps: 30478.23388 + dps: 30492.00789 tps: 576.03865 } } dps_results: { key: "TestElemental-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 30427.01485 + dps: 30440.67665 tps: 570.40985 } } dps_results: { key: "TestElemental-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 31039.24238 + dps: 31054.22505 tps: 572.78776 } } dps_results: { key: "TestElemental-AllItems-Theralion'sMirror-59519" value: { - dps: 31211.18149 + dps: 31224.99169 tps: 590.10855 } } dps_results: { key: "TestElemental-AllItems-Theralion'sMirror-65105" value: { - dps: 31506.92022 + dps: 31520.77263 tps: 590.20856 } } dps_results: { key: "TestElemental-AllItems-Throngus'sFinger-56121" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Throngus'sFinger-56449" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-Tia'sGrace-55874" value: { - dps: 29763.50508 + dps: 29776.99268 tps: 571.86745 } } dps_results: { key: "TestElemental-AllItems-Tia'sGrace-56394" value: { - dps: 29828.83136 + dps: 29842.31896 tps: 570.9482 } } dps_results: { key: "TestElemental-AllItems-TinyAbominationinaJar-50706" value: { - dps: 29908.18354 + dps: 29921.67114 tps: 566.42729 } } dps_results: { key: "TestElemental-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 30934.6133 + dps: 30948.4235 tps: 672.79929 } } dps_results: { key: "TestElemental-AllItems-UnheededWarning-59520" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-UnquenchableFlame-67101" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.32157 } } dps_results: { key: "TestElemental-AllItems-UnsolvableRiddle-62463" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-UnsolvableRiddle-62468" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-UnsolvableRiddle-68709" value: { - dps: 29920.84058 + dps: 29934.32818 tps: 571.20998 } } dps_results: { key: "TestElemental-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 26312.54568 + dps: 26326.341 tps: 537.61661 } } dps_results: { key: "TestElemental-AllItems-VialofStolenMemories-59515" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-VialofStolenMemories-65109" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 30645.96523 + dps: 30660.91586 tps: 564.7637 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 30135.09786 + dps: 30148.58546 tps: 569.33666 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 30069.42866 + dps: 30082.91626 tps: 577.98083 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 29816.13946 + dps: 29829.62706 tps: 563.17342 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 29986.09021 + dps: 29999.5778 tps: 570.24747 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 30551.27569 + dps: 30565.71785 tps: 565.24609 } } dps_results: { key: "TestElemental-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 29451.36571 + dps: 29464.85331 tps: 563.55299 } } dps_results: { key: "TestElemental-AllItems-VolcanicRegalia" value: { - dps: 28200.34355 + dps: 28215.77191 tps: 517.77004 } } dps_results: { key: "TestElemental-AllItems-WitchingHourglass-55787" value: { - dps: 30393.54355 + dps: 30407.23214 tps: 579.95115 } } dps_results: { key: "TestElemental-AllItems-WitchingHourglass-56320" value: { - dps: 30978.22174 + dps: 30991.99576 tps: 590.53107 } } dps_results: { key: "TestElemental-AllItems-World-QuellerFocus-63842" value: { - dps: 29715.94006 + dps: 29729.42766 tps: 569.07709 } } dps_results: { key: "TestElemental-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 29896.60772 + dps: 29910.09532 tps: 572.30954 } } dps_results: { key: "TestElemental-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 29896.60772 + dps: 29910.09532 tps: 572.30954 } } dps_results: { key: "TestElemental-Average-Default" value: { - dps: 32150.92717 + dps: 32166.53347 tps: 560.61402 } } dps_results: { key: "TestElemental-Settings-Orc-p1-DefaultTalents-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 72730.4277 + dps: 72747.41371 tps: 36637.17222 } } dps_results: { key: "TestElemental-Settings-Orc-p1-DefaultTalents-Standard-aoe-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 10103.51211 + dps: 10120.4455 tps: 242.54239 } } dps_results: { key: "TestElemental-Settings-Orc-p1-DefaultTalents-Standard-aoe-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 22101.7188 + dps: 22127.62321 tps: 598.67006 } } @@ -1354,21 +1354,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Orc-p1-DefaultTalents-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 54388.44318 + dps: 54405.42721 tps: 9728.27776 } } dps_results: { key: "TestElemental-Settings-Orc-p1-DefaultTalents-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 32277.36511 + dps: 32294.34915 tps: 569.92983 } } dps_results: { key: "TestElemental-Settings-Orc-p1-DefaultTalents-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 40359.1127 + dps: 40386.22723 tps: 730.55442 } } @@ -1396,21 +1396,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Orc-p1-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 104348.81087 - tps: 70823.34186 + dps: 104450.33045 + tps: 70912.50127 } } dps_results: { key: "TestElemental-Settings-Orc-p1-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 8093.79531 + dps: 8106.03831 tps: 233.28859 } } dps_results: { key: "TestElemental-Settings-Orc-p1-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 20380.19242 + dps: 20406.08222 tps: 583.59663 } } @@ -1438,21 +1438,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Orc-p1-TalentsImprovedShields-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 45955.21787 + dps: 45967.49712 tps: 9547.84445 } } dps_results: { key: "TestElemental-Settings-Orc-p1-TalentsImprovedShields-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 30026.07423 + dps: 30038.35348 tps: 556.45217 } } dps_results: { key: "TestElemental-Settings-Orc-p1-TalentsImprovedShields-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39050.50845 + dps: 39077.59536 tps: 714.74874 } } @@ -1480,21 +1480,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Troll-p1-DefaultTalents-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 70647.52831 + dps: 70663.17152 tps: 36823.1944 } } dps_results: { key: "TestElemental-Settings-Troll-p1-DefaultTalents-Standard-aoe-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 9705.86092 + dps: 9721.45404 tps: 242.78391 } } dps_results: { key: "TestElemental-Settings-Troll-p1-DefaultTalents-Standard-aoe-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 21223.36459 + dps: 21247.1117 tps: 597.96509 } } @@ -1522,21 +1522,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Troll-p1-DefaultTalents-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 52446.95428 + dps: 52462.5957 tps: 9709.71423 } } dps_results: { key: "TestElemental-Settings-Troll-p1-DefaultTalents-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 32271.97116 + dps: 32287.61258 tps: 568.32557 } } dps_results: { key: "TestElemental-Settings-Troll-p1-DefaultTalents-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 39915.50199 + dps: 39940.38066 tps: 716.74039 } } @@ -1564,21 +1564,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Troll-p1-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 102001.11322 - tps: 71133.78631 + dps: 102101.9255 + tps: 71223.21303 } } dps_results: { key: "TestElemental-Settings-Troll-p1-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 7723.65231 + dps: 7734.92629 tps: 231.36129 } } dps_results: { key: "TestElemental-Settings-Troll-p1-TalentsImprovedShields-Standard-aoe-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 19537.16901 + dps: 19560.90263 tps: 579.0376 } } @@ -1606,21 +1606,21 @@ dps_results: { dps_results: { key: "TestElemental-Settings-Troll-p1-TalentsImprovedShields-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 44465.73801 + dps: 44477.04659 tps: 9612.06312 } } dps_results: { key: "TestElemental-Settings-Troll-p1-TalentsImprovedShields-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29748.77323 + dps: 29760.08181 tps: 558.73922 } } dps_results: { key: "TestElemental-Settings-Troll-p1-TalentsImprovedShields-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 38145.95958 + dps: 38170.81276 tps: 696.16067 } } @@ -1648,7 +1648,7 @@ dps_results: { dps_results: { key: "TestElemental-SwitchInFrontOfTarget-Default" value: { - dps: 32017.82869 + dps: 32033.27222 tps: 568.32557 } } diff --git a/sim/shaman/enhancement/TestEnhancement.results b/sim/shaman/enhancement/TestEnhancement.results index 6d1280c704..fdf7cf4f4c 100644 --- a/sim/shaman/enhancement/TestEnhancement.results +++ b/sim/shaman/enhancement/TestEnhancement.results @@ -37,1297 +37,1297 @@ character_stats_results: { dps_results: { key: "TestEnhancement-AllItems-AgileShadowspiritDiamond" value: { - dps: 29333.84099 - tps: 19422.7469 + dps: 29818.57848 + tps: 19857.04209 } } dps_results: { key: "TestEnhancement-AllItems-Althor'sAbacus-50366" value: { - dps: 27389.46537 - tps: 18164.4412 + dps: 27843.9841 + tps: 18571.39548 } } dps_results: { key: "TestEnhancement-AllItems-Anhuur'sHymnal-55889" value: { - dps: 27703.37598 - tps: 18384.02926 + dps: 28165.88574 + tps: 18798.39408 } } dps_results: { key: "TestEnhancement-AllItems-Anhuur'sHymnal-56407" value: { - dps: 27712.63653 - tps: 18377.17113 + dps: 28176.03535 + tps: 18792.48724 } } dps_results: { key: "TestEnhancement-AllItems-AustereShadowspiritDiamond" value: { - dps: 28698.74967 - tps: 18993.71665 + dps: 29171.75587 + tps: 19417.09376 } } dps_results: { key: "TestEnhancement-AllItems-BattlegearoftheRagingElements" value: { - dps: 26316.51155 - tps: 17448.86903 + dps: 26757.18034 + tps: 17843.04589 } } dps_results: { key: "TestEnhancement-AllItems-BaubleofTrueBlood-50726" value: { - dps: 27425.52606 - tps: 18128.03834 - hps: 88.47053 + dps: 27878.60561 + tps: 18533.10819 + hps: 96.77966 } } dps_results: { key: "TestEnhancement-AllItems-BedrockTalisman-58182" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-BellofEnragingResonance-59326" value: { - dps: 27683.30588 - tps: 18387.56313 + dps: 28144.66266 + tps: 18801.29029 } } dps_results: { key: "TestEnhancement-AllItems-BellofEnragingResonance-65053" value: { - dps: 27702.89375 - tps: 18374.95471 + dps: 28163.83472 + tps: 18787.87068 } } dps_results: { key: "TestEnhancement-AllItems-BindingPromise-67037" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-BlackBruise-50692" value: { - dps: 27128.76105 - tps: 17929.25279 + dps: 27558.97877 + tps: 18314.06841 } } dps_results: { key: "TestEnhancement-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 28506.91598 - tps: 18826.90379 + dps: 28972.46663 + tps: 19243.71241 } } dps_results: { key: "TestEnhancement-AllItems-BloodofIsiset-55995" value: { - dps: 27768.87144 - tps: 18347.54597 + dps: 28223.07331 + tps: 18754.1834 } } dps_results: { key: "TestEnhancement-AllItems-BloodofIsiset-56414" value: { - dps: 27821.31946 - tps: 18373.04305 + dps: 28275.52133 + tps: 18779.68047 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 28936.50419 - tps: 19199.57207 + dps: 29417.81881 + tps: 19631.06643 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 27870.92336 - tps: 18460.27846 + dps: 28333.20883 + tps: 18873.59486 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 27647.96213 - tps: 18359.54196 + dps: 28108.77924 + tps: 18772.77279 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 27425.52606 - tps: 18128.00838 + dps: 27878.60561 + tps: 18533.07823 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 28509.97168 - tps: 18886.66726 + dps: 28984.0025 + tps: 19310.4305 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 27846.73096 - tps: 18445.34888 + dps: 28307.98422 + tps: 18858.12446 } } dps_results: { key: "TestEnhancement-AllItems-BottledLightning-66879" value: { - dps: 27496.75966 - tps: 18242.38997 + dps: 27955.10385 + tps: 18652.65088 } } dps_results: { key: "TestEnhancement-AllItems-BracingShadowspiritDiamond" value: { - dps: 28702.33894 - tps: 18618.56787 + dps: 29175.34514 + tps: 19033.47744 } } dps_results: { key: "TestEnhancement-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 29184.62696 - tps: 19322.75194 + dps: 29665.62258 + tps: 19753.59662 } } dps_results: { key: "TestEnhancement-AllItems-BurningShadowspiritDiamond" value: { - dps: 29124.97294 - tps: 19290.15785 + dps: 29606.09964 + tps: 19721.29231 } } dps_results: { key: "TestEnhancement-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 29184.62696 - tps: 19322.75194 + dps: 29665.62258 + tps: 19753.59662 } } dps_results: { key: "TestEnhancement-AllItems-CoreofRipeness-58184" value: { - dps: 27325.63057 - tps: 18085.437 + dps: 27777.56507 + tps: 18489.47458 } } dps_results: { key: "TestEnhancement-AllItems-CorpseTongueCoin-50349" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-CrushingWeight-59506" value: { - dps: 28141.76458 - tps: 18627.44272 + dps: 28611.60269 + tps: 19048.14539 } } dps_results: { key: "TestEnhancement-AllItems-CrushingWeight-65118" value: { - dps: 28052.42418 - tps: 18627.49021 + dps: 28521.13642 + tps: 19047.40622 } } dps_results: { key: "TestEnhancement-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 28364.84418 - tps: 19035.94603 + dps: 28827.12017 + tps: 19449.3793 } } dps_results: { key: "TestEnhancement-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 29083.76293 - tps: 19475.9486 + dps: 29558.75602 + tps: 19901.21478 } } dps_results: { key: "TestEnhancement-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 27408.2009 - tps: 18171.14126 + dps: 27862.73159 + tps: 18578.10751 } } dps_results: { key: "TestEnhancement-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 27928.76593 - tps: 18543.79387 + dps: 28382.30185 + tps: 18949.56785 } } dps_results: { key: "TestEnhancement-AllItems-Deathbringer'sWill-50363" value: { - dps: 28103.82426 - tps: 18658.92374 + dps: 28571.76366 + tps: 19078.27269 } } dps_results: { key: "TestEnhancement-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 28758.02338 - tps: 19024.24978 + dps: 29230.88421 + tps: 19447.32999 } } dps_results: { key: "TestEnhancement-AllItems-DislodgedForeignObject-50348" value: { - dps: 27406.33523 - tps: 18177.78849 + dps: 27863.08913 + tps: 18586.84941 } } dps_results: { key: "TestEnhancement-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 28698.74967 - tps: 18993.71665 + dps: 29171.75587 + tps: 19417.09376 } } dps_results: { key: "TestEnhancement-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 27441.94922 - tps: 18165.83765 + dps: 27895.0429 + tps: 18570.92163 } } dps_results: { key: "TestEnhancement-AllItems-EmberShadowspiritDiamond" value: { - dps: 28702.33894 - tps: 18994.25415 + dps: 29175.34514 + tps: 19417.63126 } } dps_results: { key: "TestEnhancement-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 28758.02338 - tps: 19024.24978 + dps: 29230.88421 + tps: 19447.32999 } } dps_results: { key: "TestEnhancement-AllItems-EssenceoftheCyclone-59473" value: { - dps: 28866.02848 - tps: 19151.47138 + dps: 29348.79449 + tps: 19584.15759 } } dps_results: { key: "TestEnhancement-AllItems-EternalShadowspiritDiamond" value: { - dps: 28698.74967 - tps: 18993.71665 + dps: 29171.75587 + tps: 19417.09376 } } dps_results: { key: "TestEnhancement-AllItems-FallofMortality-59500" value: { - dps: 27408.2009 - tps: 18171.14126 + dps: 27862.73159 + tps: 18578.10751 } } dps_results: { key: "TestEnhancement-AllItems-FallofMortality-65124" value: { - dps: 27410.79107 - tps: 18171.74144 + dps: 27865.32175 + tps: 18578.70769 } } dps_results: { key: "TestEnhancement-AllItems-Figurine-DemonPanther-52199" value: { - dps: 29174.81107 - tps: 19324.58488 + dps: 29254.57304 + tps: 19514.54833 } } dps_results: { key: "TestEnhancement-AllItems-Figurine-DreamOwl-52354" value: { - dps: 27321.2571 - tps: 18084.45957 + dps: 27773.19161 + tps: 18488.49715 } } dps_results: { key: "TestEnhancement-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 27406.00893 - tps: 18170.60657 + dps: 27860.53961 + tps: 18577.57281 } } dps_results: { key: "TestEnhancement-AllItems-Figurine-KingofBoars-52351" value: { - dps: 28300.4414 - tps: 18664.99053 + dps: 28762.22165 + tps: 19077.88949 } } dps_results: { key: "TestEnhancement-AllItems-FleetShadowspiritDiamond" value: { - dps: 28788.04994 - tps: 19037.15389 + dps: 29261.05614 + tps: 19460.531 } } dps_results: { key: "TestEnhancement-AllItems-ForlornShadowspiritDiamond" value: { - dps: 28702.33894 - tps: 18994.42838 + dps: 29175.34514 + tps: 19417.80549 } } dps_results: { key: "TestEnhancement-AllItems-FuryofAngerforge-59461" value: { - dps: 28292.46258 - tps: 18762.17162 + dps: 28762.64209 + tps: 19183.98573 } } dps_results: { key: "TestEnhancement-AllItems-GaleofShadows-56138" value: { - dps: 27523.24664 - tps: 18276.83007 + dps: 27983.17129 + tps: 18688.84571 } } dps_results: { key: "TestEnhancement-AllItems-GaleofShadows-56462" value: { - dps: 27562.41386 - tps: 18317.30495 + dps: 28022.92008 + tps: 18729.87503 } } dps_results: { key: "TestEnhancement-AllItems-GearDetector-61462" value: { - dps: 28114.60198 - tps: 18633.65802 + dps: 28582.78794 + tps: 19052.62903 } } dps_results: { key: "TestEnhancement-AllItems-GlowingTwilightScale-54589" value: { - dps: 27390.57085 - tps: 18165.24255 + dps: 27845.08957 + tps: 18572.19684 } } dps_results: { key: "TestEnhancement-AllItems-GraceoftheHerald-55266" value: { - dps: 28220.5234 - tps: 18715.75979 + dps: 28689.44063 + tps: 19135.65875 } } dps_results: { key: "TestEnhancement-AllItems-GraceoftheHerald-56295" value: { - dps: 28634.5774 - tps: 19012.38902 + dps: 29111.00271 + tps: 19439.29571 } } dps_results: { key: "TestEnhancement-AllItems-HarmlightToken-63839" value: { - dps: 27591.30175 - tps: 18358.42146 + dps: 28037.6946 + tps: 18755.95134 } } dps_results: { key: "TestEnhancement-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 28024.88377 - tps: 18513.81906 + dps: 28484.1861 + tps: 18925.05729 } } dps_results: { key: "TestEnhancement-AllItems-HeartofIgnacious-59514" value: { - dps: 27687.38668 - tps: 18426.56705 + dps: 28150.30584 + tps: 18842.28503 } } dps_results: { key: "TestEnhancement-AllItems-HeartofIgnacious-65110" value: { - dps: 27563.78899 - tps: 18287.29396 + dps: 28025.35681 + tps: 18701.16973 } } dps_results: { key: "TestEnhancement-AllItems-HeartofRage-59224" value: { - dps: 27969.51757 - tps: 18520.87598 + dps: 28432.84201 + tps: 18935.49381 } } dps_results: { key: "TestEnhancement-AllItems-HeartofRage-65072" value: { - dps: 28049.28527 - tps: 18563.98184 + dps: 28513.92075 + tps: 18979.66955 } } dps_results: { key: "TestEnhancement-AllItems-HeartofSolace-55868" value: { - dps: 27523.24664 - tps: 18276.83007 + dps: 27983.17129 + tps: 18688.84571 } } dps_results: { key: "TestEnhancement-AllItems-HeartofSolace-56393" value: { - dps: 28089.17261 - tps: 18638.29119 + dps: 28557.57247 + tps: 19057.74181 } } dps_results: { key: "TestEnhancement-AllItems-HeartofThunder-55845" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-HeartofThunder-56370" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-HeartoftheVile-66969" value: { - dps: 28333.58683 - tps: 18783.54439 + dps: 28804.32072 + tps: 19204.9952 } } dps_results: { key: "TestEnhancement-AllItems-Heartpierce-50641" value: { - dps: 29184.62696 - tps: 19322.75194 + dps: 29665.62258 + tps: 19753.59662 } } dps_results: { key: "TestEnhancement-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 28758.02338 - tps: 19024.24978 + dps: 29230.88421 + tps: 19447.32999 } } dps_results: { key: "TestEnhancement-AllItems-ImpatienceofYouth-62464" value: { - dps: 28419.31173 - tps: 18730.21304 + dps: 28882.04925 + tps: 19143.90294 } } dps_results: { key: "TestEnhancement-AllItems-ImpatienceofYouth-62469" value: { - dps: 28419.31173 - tps: 18730.21304 + dps: 28882.04925 + tps: 19143.90294 } } dps_results: { key: "TestEnhancement-AllItems-ImpetuousQuery-55881" value: { - dps: 27768.87144 - tps: 18347.54597 + dps: 28223.07331 + tps: 18754.1834 } } dps_results: { key: "TestEnhancement-AllItems-ImpetuousQuery-56406" value: { - dps: 27821.31946 - tps: 18373.04305 + dps: 28275.52133 + tps: 18779.68047 } } dps_results: { key: "TestEnhancement-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 27676.69008 - tps: 18302.73293 + dps: 28130.89194 + tps: 18709.37035 } } dps_results: { key: "TestEnhancement-AllItems-JarofAncientRemedies-59354" value: { - dps: 27368.3593 - tps: 18157.67703 + dps: 27822.56116 + tps: 18564.31445 } } dps_results: { key: "TestEnhancement-AllItems-JarofAncientRemedies-65029" value: { - dps: 27368.3593 - tps: 18157.74007 + dps: 27822.56116 + tps: 18564.3775 } } dps_results: { key: "TestEnhancement-AllItems-JujuofNimbleness-63840" value: { - dps: 28506.91598 - tps: 18826.90379 + dps: 28972.46663 + tps: 19243.71241 } } dps_results: { key: "TestEnhancement-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 28657.79669 - tps: 18990.80589 + dps: 29135.67969 + tps: 19418.96929 } } dps_results: { key: "TestEnhancement-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 28992.69075 - tps: 19197.26354 + dps: 29477.2163 + tps: 19631.34687 } } dps_results: { key: "TestEnhancement-AllItems-KvaldirBattleStandard-59685" value: { - dps: 27629.9679 - tps: 18326.15003 + dps: 28089.9017 + tps: 18738.04003 } } dps_results: { key: "TestEnhancement-AllItems-KvaldirBattleStandard-59689" value: { - dps: 27629.9679 - tps: 18326.15003 + dps: 28089.9017 + tps: 18738.04003 } } dps_results: { key: "TestEnhancement-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 27481.17122 - tps: 18213.26367 + dps: 27939.9726 + tps: 18623.79239 } } dps_results: { key: "TestEnhancement-AllItems-LastWord-50708" value: { - dps: 29184.62696 - tps: 19322.75194 + dps: 29665.62258 + tps: 19753.59662 } } dps_results: { key: "TestEnhancement-AllItems-LeadenDespair-55816" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-LeadenDespair-56347" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-LeftEyeofRajh-56102" value: { - dps: 28448.6706 - tps: 18858.75137 + dps: 28921.41702 + tps: 19281.91828 } } dps_results: { key: "TestEnhancement-AllItems-LeftEyeofRajh-56427" value: { - dps: 28629.37193 - tps: 18992.2299 + dps: 29105.8466 + tps: 19418.97094 } } dps_results: { key: "TestEnhancement-AllItems-LicensetoSlay-58180" value: { - dps: 28262.7791 - tps: 18730.35314 + dps: 28731.35214 + tps: 19149.88321 } } dps_results: { key: "TestEnhancement-AllItems-MagnetiteMirror-55814" value: { - dps: 27706.79696 - tps: 18361.65529 + dps: 28165.84789 + tps: 18772.68567 } } dps_results: { key: "TestEnhancement-AllItems-MagnetiteMirror-56345" value: { - dps: 27816.98597 - tps: 18429.64133 + dps: 28277.61566 + tps: 18842.10198 } } dps_results: { key: "TestEnhancement-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 27425.52606 - tps: 18128.00377 + dps: 27878.60561 + tps: 18533.07362 } } dps_results: { key: "TestEnhancement-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 27425.52606 - tps: 18128.00377 + dps: 27878.60561 + tps: 18533.07362 } } dps_results: { key: "TestEnhancement-AllItems-MarkofKhardros-56132" value: { - dps: 28184.60329 - tps: 18598.91577 + dps: 28644.29797 + tps: 19010.50791 } } dps_results: { key: "TestEnhancement-AllItems-MarkofKhardros-56458" value: { - dps: 28292.43544 - tps: 18657.7601 + dps: 28752.84941 + tps: 19070.00107 } } dps_results: { key: "TestEnhancement-AllItems-MightoftheOcean-55251" value: { - dps: 27877.56513 - tps: 18526.36091 + dps: 28341.84678 + tps: 18941.99981 } } dps_results: { key: "TestEnhancement-AllItems-MightoftheOcean-56285" value: { - dps: 28176.36712 - tps: 18665.86538 + dps: 28646.5655 + tps: 19087.38449 } } dps_results: { key: "TestEnhancement-AllItems-MirrorofBrokenImages-62466" value: { - dps: 27878.53548 - tps: 18400.85804 + dps: 28332.73735 + tps: 18807.49547 } } dps_results: { key: "TestEnhancement-AllItems-MirrorofBrokenImages-62471" value: { - dps: 27878.53548 - tps: 18400.85804 + dps: 28332.73735 + tps: 18807.49547 } } dps_results: { key: "TestEnhancement-AllItems-MoonwellChalice-70142" value: { - dps: 27993.91413 - tps: 18460.46741 + dps: 28448.44481 + tps: 18867.43366 } } dps_results: { key: "TestEnhancement-AllItems-Oremantle'sFavor-61448" value: { - dps: 27905.12745 - tps: 18526.06988 + dps: 28370.55727 + tps: 18942.74388 } } dps_results: { key: "TestEnhancement-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 27538.9864 - tps: 18282.66808 + dps: 27996.39689 + tps: 18692.53436 } } dps_results: { key: "TestEnhancement-AllItems-PorcelainCrab-55237" value: { - dps: 27672.04294 - tps: 18300.62824 + dps: 28126.2448 + tps: 18707.26566 } } dps_results: { key: "TestEnhancement-AllItems-PorcelainCrab-56280" value: { - dps: 27932.21705 - tps: 18419.76153 + dps: 28386.41891 + tps: 18826.39896 } } dps_results: { key: "TestEnhancement-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 28698.74967 - tps: 18993.71665 + dps: 29171.75587 + tps: 19417.09376 } } dps_results: { key: "TestEnhancement-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 28776.14011 - tps: 19114.62222 + dps: 29257.60685 + tps: 19546.37822 } } dps_results: { key: "TestEnhancement-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 28954.69038 - tps: 19190.42094 + dps: 29438.94156 + tps: 19624.45976 } } dps_results: { key: "TestEnhancement-AllItems-Rainsong-55854" value: { - dps: 27425.52606 - tps: 18128.0282 + dps: 27878.60561 + tps: 18533.09805 } } dps_results: { key: "TestEnhancement-AllItems-Rainsong-56377" value: { - dps: 27425.52606 - tps: 18128.01207 + dps: 27878.60561 + tps: 18533.08191 } } dps_results: { key: "TestEnhancement-AllItems-RegaliaoftheRagingElements" value: { - dps: 19958.84299 - tps: 13204.10443 + dps: 20301.85938 + tps: 13507.23358 } } dps_results: { key: "TestEnhancement-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 29203.74353 - tps: 19340.62744 + dps: 29686.07159 + tps: 19772.84585 } } dps_results: { key: "TestEnhancement-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 29121.06064 - tps: 19289.34555 + dps: 29602.18733 + tps: 19720.48002 } } dps_results: { key: "TestEnhancement-AllItems-RightEyeofRajh-56100" value: { - dps: 28179.43546 - tps: 18683.99185 + dps: 28649.21609 + tps: 19104.9039 } } dps_results: { key: "TestEnhancement-AllItems-RightEyeofRajh-56431" value: { - dps: 28239.95194 - tps: 18706.82372 + dps: 28711.14148 + tps: 19129.16677 } } dps_results: { key: "TestEnhancement-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 28508.17417 - tps: 18843.59686 + dps: 28975.8387 + tps: 19262.66946 } } dps_results: { key: "TestEnhancement-AllItems-SeaStar-55256" value: { - dps: 27425.52606 - tps: 18128.03166 + dps: 27878.60561 + tps: 18533.10151 } } dps_results: { key: "TestEnhancement-AllItems-SeaStar-56290" value: { - dps: 27425.52606 - tps: 18128.01207 + dps: 27878.60561 + tps: 18533.08191 } } dps_results: { key: "TestEnhancement-AllItems-Shadowmourne-49623" value: { - dps: 29184.62696 - tps: 19322.75194 + dps: 29665.62258 + tps: 19753.59662 } } dps_results: { key: "TestEnhancement-AllItems-ShardofWoe-60233" value: { - dps: 27580.49097 - tps: 18301.42598 + dps: 28040.67978 + tps: 18713.55053 } } dps_results: { key: "TestEnhancement-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 27931.64642 - tps: 18537.43384 + dps: 28397.32485 + tps: 18954.63945 } } dps_results: { key: "TestEnhancement-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-Skardyn'sGrace-56115" value: { - dps: 28704.85197 - tps: 18957.71606 + dps: 29173.4108 + tps: 19377.60235 } } dps_results: { key: "TestEnhancement-AllItems-Skardyn'sGrace-56440" value: { - dps: 28886.49972 - tps: 19071.79897 + dps: 29356.80396 + tps: 19493.28293 } } dps_results: { key: "TestEnhancement-AllItems-Sorrowsong-55879" value: { - dps: 27768.87144 - tps: 18347.54597 + dps: 28223.07331 + tps: 18754.1834 } } dps_results: { key: "TestEnhancement-AllItems-Sorrowsong-56400" value: { - dps: 27821.31946 - tps: 18373.04305 + dps: 28275.52133 + tps: 18779.68047 } } dps_results: { key: "TestEnhancement-AllItems-Soul'sAnguish-66994" value: { - dps: 27951.57739 - tps: 18539.29604 + dps: 28417.72589 + tps: 18956.96978 } } dps_results: { key: "TestEnhancement-AllItems-SoulCasket-58183" value: { - dps: 27878.53548 - tps: 18400.85804 + dps: 28332.73735 + tps: 18807.49547 } } dps_results: { key: "TestEnhancement-AllItems-Spiritwalker'sRegalia" value: { - dps: 20217.3142 - tps: 13157.54915 + dps: 20550.78254 + tps: 13451.30996 } } dps_results: { key: "TestEnhancement-AllItems-Stonemother'sKiss-61411" value: { - dps: 27638.06226 - tps: 18352.28865 + dps: 28097.6473 + tps: 18763.72579 } } dps_results: { key: "TestEnhancement-AllItems-StumpofTime-62465" value: { - dps: 27690.40695 - tps: 18375.42002 + dps: 28150.68681 + tps: 18787.46743 } } dps_results: { key: "TestEnhancement-AllItems-StumpofTime-62470" value: { - dps: 27690.40695 - tps: 18375.42002 + dps: 28150.68681 + tps: 18787.46743 } } dps_results: { key: "TestEnhancement-AllItems-SymbioticWorm-59332" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-SymbioticWorm-65048" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 27701.86466 - tps: 18314.95993 + dps: 28156.39534 + tps: 18721.92618 } } dps_results: { key: "TestEnhancement-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 28006.68875 - tps: 18568.1078 + dps: 28473.53673 + tps: 18986.72368 } } dps_results: { key: "TestEnhancement-AllItems-TearofBlood-55819" value: { - dps: 27395.98549 - tps: 18166.32137 + dps: 27850.50422 + tps: 18573.27566 } } dps_results: { key: "TestEnhancement-AllItems-TearofBlood-56351" value: { - dps: 27406.00893 - tps: 18170.60657 + dps: 27860.53961 + tps: 18577.57281 } } dps_results: { key: "TestEnhancement-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 27710.06609 - tps: 18318.95834 + dps: 28164.26795 + tps: 18725.59577 } } dps_results: { key: "TestEnhancement-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 27821.31946 - tps: 18373.04305 + dps: 28275.52133 + tps: 18779.68047 } } dps_results: { key: "TestEnhancement-AllItems-Theralion'sMirror-59519" value: { - dps: 27980.54341 - tps: 18451.89996 + dps: 28435.0741 + tps: 18858.8662 } } dps_results: { key: "TestEnhancement-AllItems-Theralion'sMirror-65105" value: { - dps: 28074.73523 - tps: 18500.05276 + dps: 28529.26592 + tps: 18907.01901 } } dps_results: { key: "TestEnhancement-AllItems-Throngus'sFinger-56121" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-Throngus'sFinger-56449" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-Tia'sGrace-55874" value: { - dps: 28829.14661 - tps: 19043.28997 + dps: 29300.50952 + tps: 19465.74559 } } dps_results: { key: "TestEnhancement-AllItems-Tia'sGrace-56394" value: { - dps: 29033.49083 - tps: 19164.06558 + dps: 29507.29152 + tps: 19588.58758 } } dps_results: { key: "TestEnhancement-AllItems-TinyAbominationinaJar-50706" value: { - dps: 28308.33988 - tps: 18876.15257 + dps: 28783.68743 + tps: 19303.51002 } } dps_results: { key: "TestEnhancement-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 27397.98399 - tps: 18193.1742 + dps: 27851.73344 + tps: 18599.2023 } } dps_results: { key: "TestEnhancement-AllItems-UnheededWarning-59520" value: { - dps: 29042.13437 - tps: 19241.31139 + dps: 29523.23001 + tps: 19672.59576 } } dps_results: { key: "TestEnhancement-AllItems-UnquenchableFlame-67101" value: { - dps: 27425.52606 - tps: 18128.03811 + dps: 27878.60561 + tps: 18533.10796 } } dps_results: { key: "TestEnhancement-AllItems-UnsolvableRiddle-62463" value: { - dps: 29260.72745 - tps: 19306.37127 + dps: 29740.78466 + tps: 19734.86219 } } dps_results: { key: "TestEnhancement-AllItems-UnsolvableRiddle-62468" value: { - dps: 29260.72745 - tps: 19306.37127 + dps: 29740.78466 + tps: 19734.86219 } } dps_results: { key: "TestEnhancement-AllItems-UnsolvableRiddle-68709" value: { - dps: 29260.72745 - tps: 19306.37127 + dps: 29740.78466 + tps: 19734.86219 } } dps_results: { key: "TestEnhancement-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 24699.83469 - tps: 16171.52122 + dps: 25062.28486 + tps: 16494.3235 } } dps_results: { key: "TestEnhancement-AllItems-VialofStolenMemories-59515" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-VialofStolenMemories-65109" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 28727.83258 - tps: 19047.30202 + dps: 29207.88979 + tps: 19475.79295 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 27899.02727 - tps: 18477.47069 + dps: 28361.76479 + tps: 18891.16058 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 27698.50163 - tps: 18405.3022 + dps: 28159.9066 + tps: 18818.58537 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 27587.54065 - tps: 18315.11657 + dps: 28047.47514 + tps: 18727.35324 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 27674.39734 - tps: 18369.05002 + dps: 28134.69183 + tps: 18781.50689 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 27908.73283 - tps: 18415.53818 + dps: 28362.93469 + tps: 18822.1756 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 28598.01216 - tps: 18950.92281 + dps: 29073.73139 + tps: 19376.17395 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 27368.3593 - tps: 18152.84102 + dps: 27822.56116 + tps: 18559.47844 } } dps_results: { key: "TestEnhancement-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 27894.7114 - tps: 18478.33836 + dps: 28356.81715 + tps: 18891.89167 } } dps_results: { key: "TestEnhancement-AllItems-VolcanicRegalia" value: { - dps: 20157.6391 - tps: 13348.11733 + dps: 20502.52479 + tps: 13653.25283 } } dps_results: { key: "TestEnhancement-AllItems-WitchingHourglass-55787" value: { - dps: 27528.22867 - tps: 18297.10716 + dps: 27986.27331 + tps: 18707.44166 } } dps_results: { key: "TestEnhancement-AllItems-WitchingHourglass-56320" value: { - dps: 27524.9626 - tps: 18276.17565 + dps: 27983.86217 + tps: 18686.88876 } } dps_results: { key: "TestEnhancement-AllItems-World-QuellerFocus-63842" value: { - dps: 27716.42343 - tps: 18322.0489 + dps: 28170.62529 + tps: 18728.68632 } } dps_results: { key: "TestEnhancement-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 27743.18153 - tps: 18334.25803 + dps: 28197.38339 + tps: 18740.89545 } } dps_results: { key: "TestEnhancement-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 27743.18153 - tps: 18334.25803 + dps: 28197.38339 + tps: 18740.89545 } } dps_results: { key: "TestEnhancement-Average-Default" value: { - dps: 29318.46856 - tps: 19406.68763 + dps: 29803.6261 + tps: 19841.86941 } } dps_results: { key: "TestEnhancement-Settings-Draenei-p1draenei-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 29522.73022 - tps: 23474.51156 + dps: 30003.97231 + tps: 23905.86674 } } dps_results: { key: "TestEnhancement-Settings-Draenei-p1draenei-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29184.62696 - tps: 19322.75194 + dps: 29665.62258 + tps: 19753.59662 } } dps_results: { key: "TestEnhancement-Settings-Draenei-p1draenei-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 33566.07961 - tps: 21714.06059 + dps: 34143.06632 + tps: 22209.37409 } } dps_results: { @@ -1354,22 +1354,22 @@ dps_results: { dps_results: { key: "TestEnhancement-Settings-Orc-p1draenei-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 29814.93022 - tps: 23649.8139 + dps: 30302.10825 + tps: 24084.79349 } } dps_results: { key: "TestEnhancement-Settings-Orc-p1draenei-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29464.33846 - tps: 19408.83726 + dps: 29949.5806 + tps: 19841.99555 } } dps_results: { key: "TestEnhancement-Settings-Orc-p1draenei-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 34102.98125 - tps: 21958.60297 + dps: 34687.87019 + tps: 22457.69499 } } dps_results: { @@ -1396,22 +1396,22 @@ dps_results: { dps_results: { key: "TestEnhancement-Settings-Troll-p1draenei-Standard-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 29538.32971 - tps: 23436.9364 + dps: 30019.47827 + tps: 23867.87248 } } dps_results: { key: "TestEnhancement-Settings-Troll-p1draenei-Standard-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 29126.26594 - tps: 19214.41351 + dps: 29604.8169 + tps: 19642.49033 } } dps_results: { key: "TestEnhancement-Settings-Troll-p1draenei-Standard-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 33510.05 - tps: 21638.69455 + dps: 34086.45667 + tps: 22132.8213 } } dps_results: { @@ -1438,7 +1438,7 @@ dps_results: { dps_results: { key: "TestEnhancement-SwitchInFrontOfTarget-Default" value: { - dps: 27280.37542 - tps: 17634.11312 + dps: 27720.0949 + tps: 18024.69906 } } diff --git a/sim/warlock/affliction/TestAffliction.results b/sim/warlock/affliction/TestAffliction.results index 9137f6b45f..90c37e97f4 100644 --- a/sim/warlock/affliction/TestAffliction.results +++ b/sim/warlock/affliction/TestAffliction.results @@ -37,1387 +37,1387 @@ character_stats_results: { dps_results: { key: "TestAffliction-AllItems-AgileShadowspiritDiamond" value: { - dps: 26372.15486 - tps: 19473.46262 + dps: 27277.34585 + tps: 20316.88075 } } dps_results: { key: "TestAffliction-AllItems-Althor'sAbacus-50366" value: { - dps: 25212.45409 - tps: 18682.16489 + dps: 26271.44711 + tps: 19637.25986 } } dps_results: { key: "TestAffliction-AllItems-Anhuur'sHymnal-55889" value: { - dps: 25396.8833 - tps: 18734.4523 + dps: 26411.96411 + tps: 19656.48085 } } dps_results: { key: "TestAffliction-AllItems-Anhuur'sHymnal-56407" value: { - dps: 25441.74433 - tps: 18765.8509 + dps: 26446.66888 + tps: 19691.26085 } } dps_results: { key: "TestAffliction-AllItems-AustereShadowspiritDiamond" value: { - dps: 26095.76631 - tps: 19204.48687 + dps: 27033.80981 + tps: 20082.42316 } } dps_results: { key: "TestAffliction-AllItems-BaubleofTrueBlood-50726" value: { - dps: 24747.58792 - tps: 18362.26758 - hps: 89.68753 + dps: 25745.26162 + tps: 19267.81922 + hps: 99.74846 } } dps_results: { key: "TestAffliction-AllItems-BedrockTalisman-58182" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-BellofEnragingResonance-59326" value: { - dps: 26055.60483 - tps: 19219.57861 + dps: 27155.26478 + tps: 20225.53784 } } dps_results: { key: "TestAffliction-AllItems-BindingPromise-67037" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 24791.60606 - tps: 18417.63466 + dps: 25795.6698 + tps: 19309.83055 } } dps_results: { key: "TestAffliction-AllItems-BloodofIsiset-55995" value: { - dps: 24897.28121 - tps: 18493.23275 + dps: 25931.81293 + tps: 19420.42096 } } dps_results: { key: "TestAffliction-AllItems-BloodofIsiset-56414" value: { - dps: 24897.28121 - tps: 18493.23275 + dps: 25931.81293 + tps: 19420.42096 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 24687.37676 - tps: 18277.94213 + dps: 25566.60857 + tps: 19089.34578 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 25427.93907 - tps: 18798.8832 + dps: 26517.23031 + tps: 19780.50046 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 24609.17295 - tps: 18221.18711 + dps: 25638.77192 + tps: 19149.24006 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 25066.96779 - tps: 18562.95291 + dps: 26023.83137 + tps: 19428.76756 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 24761.55571 - tps: 18356.10088 + dps: 25711.42775 + tps: 19198.24092 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 24761.55571 - tps: 18356.10088 + dps: 25711.42775 + tps: 19198.24092 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 25445.49257 - tps: 18832.81971 + dps: 26502.64594 + tps: 19777.27319 } } dps_results: { key: "TestAffliction-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-BottledLightning-66879" value: { - dps: 25222.36798 - tps: 18644.24046 + dps: 26349.47887 + tps: 19641.77329 } } dps_results: { key: "TestAffliction-AllItems-BracingShadowspiritDiamond" value: { - dps: 26303.01667 - tps: 18990.74583 + dps: 27210.84002 + tps: 19795.65368 } } dps_results: { key: "TestAffliction-AllItems-BurningShadowspiritDiamond" value: { - dps: 26573.61047 - tps: 19635.03804 + dps: 27489.91516 + tps: 20463.70227 } } dps_results: { key: "TestAffliction-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 26432.65949 - tps: 19522.37102 + dps: 27345.28585 + tps: 20372.37962 } } dps_results: { key: "TestAffliction-AllItems-CoreofRipeness-58184" value: { - dps: 25616.96387 - tps: 18953.82151 + dps: 26634.11368 + tps: 19885.81107 } } dps_results: { key: "TestAffliction-AllItems-CorpseTongueCoin-50349" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-CrushingWeight-59506" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-CrushingWeight-65118" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 24761.55571 - tps: 18356.13085 + dps: 25711.42775 + tps: 19198.25424 } } dps_results: { key: "TestAffliction-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 25708.5887 - tps: 19056.48522 + dps: 26751.02553 + tps: 19982.40808 } } dps_results: { key: "TestAffliction-AllItems-Deathbringer'sWill-50363" value: { - dps: 24905.27744 - tps: 18445.77913 + dps: 25919.76756 + tps: 19364.89318 } } dps_results: { key: "TestAffliction-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 26162.72823 - tps: 19260.54672 + dps: 27065.23729 + tps: 20101.1335 } } dps_results: { key: "TestAffliction-AllItems-DislodgedForeignObject-50348" value: { - dps: 25490.30527 - tps: 18941.20408 + dps: 26466.38595 + tps: 19859.12635 } } dps_results: { key: "TestAffliction-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 26095.76631 - tps: 19204.48687 + dps: 27033.80981 + tps: 20082.42316 } } dps_results: { key: "TestAffliction-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 25003.7218 - tps: 18485.894 + dps: 26018.93007 + tps: 19424.98495 } } dps_results: { key: "TestAffliction-AllItems-EmberShadowspiritDiamond" value: { - dps: 26242.36606 - tps: 19294.39216 + dps: 27205.32633 + tps: 20240.91328 } } dps_results: { key: "TestAffliction-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 26162.72823 - tps: 19260.54672 + dps: 27065.23729 + tps: 20101.1335 } } dps_results: { key: "TestAffliction-AllItems-EssenceoftheCyclone-59473" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-EssenceoftheCyclone-65140" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-EternalShadowspiritDiamond" value: { - dps: 26095.76631 - tps: 19204.48687 + dps: 27033.80981 + tps: 20082.42316 } } dps_results: { key: "TestAffliction-AllItems-FallofMortality-59500" value: { - dps: 25708.5887 - tps: 19056.48522 + dps: 26751.02553 + tps: 19982.40808 } } dps_results: { key: "TestAffliction-AllItems-FallofMortality-65124" value: { - dps: 25948.1086 - tps: 19264.8106 + dps: 26858.88909 + tps: 20051.43285 } } dps_results: { key: "TestAffliction-AllItems-Figurine-DemonPanther-52199" value: { - dps: 24895.24297 - tps: 18459.04183 + dps: 25788.81687 + tps: 19270.97881 } } dps_results: { key: "TestAffliction-AllItems-Figurine-DreamOwl-52354" value: { - dps: 25495.29635 - tps: 18875.9813 + dps: 26567.41979 + tps: 19859.37582 } } dps_results: { key: "TestAffliction-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 24751.26256 - tps: 18301.23098 + dps: 25665.07409 + tps: 19166.74313 } } dps_results: { key: "TestAffliction-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 26272.27369 - tps: 19427.11609 + dps: 27390.68709 + tps: 20452.65697 } } dps_results: { key: "TestAffliction-AllItems-Figurine-KingofBoars-52351" value: { - dps: 24784.214 - tps: 18396.22816 + dps: 25827.88219 + tps: 19338.35033 } } dps_results: { key: "TestAffliction-AllItems-FleetShadowspiritDiamond" value: { - dps: 26196.98485 - tps: 19306.29318 + dps: 27098.98103 + tps: 20147.21507 } } dps_results: { key: "TestAffliction-AllItems-FluidDeath-58181" value: { - dps: 24869.22717 - tps: 18372.0428 + dps: 25867.81122 + tps: 19282.50502 } } dps_results: { key: "TestAffliction-AllItems-ForlornShadowspiritDiamond" value: { - dps: 26303.01667 - tps: 19371.93185 + dps: 27210.84002 + tps: 20193.36687 } } dps_results: { key: "TestAffliction-AllItems-FuryofAngerforge-59461" value: { - dps: 25043.71758 - tps: 18530.98861 + dps: 26089.62242 + tps: 19486.33543 } } dps_results: { key: "TestAffliction-AllItems-GaleofShadows-56138" value: { - dps: 25778.91006 - tps: 19193.63978 + dps: 26889.89361 + tps: 20209.89797 } } dps_results: { key: "TestAffliction-AllItems-GaleofShadows-56462" value: { - dps: 25860.52484 - tps: 19267.90779 + dps: 26908.84301 + tps: 20243.39509 } } dps_results: { key: "TestAffliction-AllItems-GearDetector-61462" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-GlowingTwilightScale-54589" value: { - dps: 25278.94904 - tps: 18731.90148 + dps: 26239.03292 + tps: 19594.12213 } } dps_results: { key: "TestAffliction-AllItems-GraceoftheHerald-55266" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-GraceoftheHerald-56295" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-HarmlightToken-63839" value: { - dps: 25387.72449 - tps: 18810.31836 + dps: 26842.02368 + tps: 20024.36619 } } dps_results: { key: "TestAffliction-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-HeartofIgnacious-59514" value: { - dps: 25914.69739 - tps: 19288.56728 + dps: 26912.72839 + tps: 20203.89696 } } dps_results: { key: "TestAffliction-AllItems-HeartofIgnacious-65110" value: { - dps: 26018.62153 - tps: 19303.73475 + dps: 26986.36434 + tps: 20298.60856 } } dps_results: { key: "TestAffliction-AllItems-HeartofRage-59224" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-HeartofRage-65072" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-HeartofSolace-55868" value: { - dps: 25128.89936 - tps: 18703.64496 + dps: 26216.65029 + tps: 19697.0151 } } dps_results: { key: "TestAffliction-AllItems-HeartofSolace-56393" value: { - dps: 25123.20234 - tps: 18711.86974 + dps: 26147.32801 + tps: 19662.80056 } } dps_results: { key: "TestAffliction-AllItems-HeartofThunder-55845" value: { - dps: 24699.38023 - tps: 18288.31539 + dps: 25715.34869 + tps: 19204.50356 } } dps_results: { key: "TestAffliction-AllItems-HeartofThunder-56370" value: { - dps: 24713.72067 - tps: 18308.43157 + dps: 25732.37228 + tps: 19222.25731 } } dps_results: { key: "TestAffliction-AllItems-HeartoftheVile-66969" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 26162.72823 - tps: 19260.54672 + dps: 27065.23729 + tps: 20101.1335 } } dps_results: { key: "TestAffliction-AllItems-ImpatienceofYouth-62464" value: { - dps: 24871.73452 - tps: 18483.74868 + dps: 25922.43732 + tps: 19432.90547 } } dps_results: { key: "TestAffliction-AllItems-ImpatienceofYouth-62469" value: { - dps: 24871.73452 - tps: 18483.74868 + dps: 25922.43732 + tps: 19432.90547 } } dps_results: { key: "TestAffliction-AllItems-ImpetuousQuery-55881" value: { - dps: 24897.28121 - tps: 18493.23275 + dps: 25931.81293 + tps: 19420.42096 } } dps_results: { key: "TestAffliction-AllItems-ImpetuousQuery-56406" value: { - dps: 24897.28121 - tps: 18493.23275 + dps: 25931.81293 + tps: 19420.42096 } } dps_results: { key: "TestAffliction-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 24701.27822 - tps: 18287.53053 + dps: 25715.34869 + tps: 19204.4492 } } dps_results: { key: "TestAffliction-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 25189.62448 - tps: 18667.54683 + dps: 26199.27477 + tps: 19565.85419 } } dps_results: { key: "TestAffliction-AllItems-JarofAncientRemedies-59354" value: { - dps: 24762.4538 - tps: 18313.76162 + dps: 25781.81017 + tps: 19264.08273 } } dps_results: { key: "TestAffliction-AllItems-JarofAncientRemedies-65029" value: { - dps: 24737.70282 - tps: 18329.7038 + dps: 25743.74784 + tps: 19250.59405 } } dps_results: { key: "TestAffliction-AllItems-JujuofNimbleness-63840" value: { - dps: 24791.60606 - tps: 18417.63466 + dps: 25795.6698 + tps: 19309.83055 } } dps_results: { key: "TestAffliction-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 24869.22717 - tps: 18372.0428 + dps: 25867.81122 + tps: 19282.50502 } } dps_results: { key: "TestAffliction-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 24869.22717 - tps: 18372.0428 + dps: 25867.81122 + tps: 19282.50502 } } dps_results: { key: "TestAffliction-AllItems-KvaldirBattleStandard-59685" value: { - dps: 24854.20154 - tps: 18489.88944 + dps: 26037.03467 + tps: 19584.91011 } } dps_results: { key: "TestAffliction-AllItems-KvaldirBattleStandard-59689" value: { - dps: 24854.20154 - tps: 18489.88944 + dps: 26037.03467 + tps: 19584.91011 } } dps_results: { key: "TestAffliction-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 24793.63483 - tps: 18364.74418 + dps: 25848.21679 + tps: 19403.88304 } } dps_results: { key: "TestAffliction-AllItems-LeadenDespair-55816" value: { - dps: 24709.14022 - tps: 18272.51956 + dps: 25639.9571 + tps: 19148.29585 } } dps_results: { key: "TestAffliction-AllItems-LeadenDespair-56347" value: { - dps: 24751.26256 - tps: 18301.23098 + dps: 25665.07409 + tps: 19166.74313 } } dps_results: { key: "TestAffliction-AllItems-LeftEyeofRajh-56102" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-LeftEyeofRajh-56427" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-LicensetoSlay-58180" value: { - dps: 24869.22717 - tps: 18372.0428 + dps: 25867.81122 + tps: 19282.50502 } } dps_results: { key: "TestAffliction-AllItems-MagnetiteMirror-55814" value: { - dps: 24616.25252 - tps: 18242.28111 + dps: 25607.03408 + tps: 19121.19483 } } dps_results: { key: "TestAffliction-AllItems-MagnetiteMirror-56345" value: { - dps: 24616.25252 - tps: 18242.28111 + dps: 25607.03408 + tps: 19121.19483 } } dps_results: { key: "TestAffliction-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-MarkofKhardros-56132" value: { - dps: 24817.84491 - tps: 18443.8735 + dps: 25816.56985 + tps: 19330.73061 } } dps_results: { key: "TestAffliction-AllItems-MarkofKhardros-56458" value: { - dps: 24854.49807 - tps: 18480.52666 + dps: 25854.66727 + tps: 19368.82802 } } dps_results: { key: "TestAffliction-AllItems-MightoftheOcean-55251" value: { - dps: 24866.5639 - tps: 18439.09839 + dps: 25835.45129 + tps: 19297.24329 } } dps_results: { key: "TestAffliction-AllItems-MightoftheOcean-56285" value: { - dps: 24866.5639 - tps: 18439.09839 + dps: 25835.45129 + tps: 19297.24329 } } dps_results: { key: "TestAffliction-AllItems-MirrorofBrokenImages-62466" value: { - dps: 24985.37241 - tps: 18581.32395 + dps: 26027.36719 + tps: 19515.97521 } } dps_results: { key: "TestAffliction-AllItems-MirrorofBrokenImages-62471" value: { - dps: 24985.37241 - tps: 18581.32395 + dps: 26027.36719 + tps: 19515.97521 } } dps_results: { key: "TestAffliction-AllItems-MoonwellChalice-70142" value: { - dps: 26032.60973 - tps: 19371.42062 + dps: 27065.43625 + tps: 20319.10329 } } dps_results: { key: "TestAffliction-AllItems-Oremantle'sFavor-61448" value: { - dps: 24836.69098 - tps: 18368.35094 + dps: 25882.01513 + tps: 19304.11509 } } dps_results: { key: "TestAffliction-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 25502.24641 - tps: 18867.53168 + dps: 26551.56017 + tps: 19817.37408 } } dps_results: { key: "TestAffliction-AllItems-PorcelainCrab-55237" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-PorcelainCrab-56280" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 26095.76631 - tps: 19204.48687 + dps: 27033.80981 + tps: 20082.42316 } } dps_results: { key: "TestAffliction-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Rainsong-55854" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Rainsong-56377" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 26372.15486 - tps: 19473.46262 + dps: 27277.34585 + tps: 20316.88075 } } dps_results: { key: "TestAffliction-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 26372.15486 - tps: 19473.46262 + dps: 27277.34585 + tps: 20316.88075 } } dps_results: { key: "TestAffliction-AllItems-RightEyeofRajh-56100" value: { - dps: 24869.22717 - tps: 18372.0428 + dps: 25867.81122 + tps: 19282.50502 } } dps_results: { key: "TestAffliction-AllItems-RightEyeofRajh-56431" value: { - dps: 24869.22717 - tps: 18372.0428 + dps: 25867.81122 + tps: 19282.50502 } } dps_results: { key: "TestAffliction-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-SeaStar-55256" value: { - dps: 25021.24932 - tps: 18511.93547 + dps: 26080.89078 + tps: 19466.94677 } } dps_results: { key: "TestAffliction-AllItems-SeaStar-56290" value: { - dps: 25376.76619 - tps: 18762.77719 + dps: 26462.32666 + tps: 19741.04668 } } dps_results: { key: "TestAffliction-AllItems-ShadowflameRegalia" value: { - dps: 24215.063 - tps: 17946.72311 + dps: 25104.46789 + tps: 18773.35443 } } dps_results: { key: "TestAffliction-AllItems-ShardofWoe-60233" value: { - dps: 25173.60964 - tps: 18614.36297 + dps: 26233.38561 + tps: 19630.76391 } } dps_results: { key: "TestAffliction-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 24697.82714 - tps: 18274.63955 + dps: 25712.53829 + tps: 19212.80238 } } dps_results: { key: "TestAffliction-AllItems-Skardyn'sGrace-56115" value: { - dps: 24836.74825 - tps: 18448.76241 + dps: 25897.47177 + tps: 19407.93991 } } dps_results: { key: "TestAffliction-AllItems-Skardyn'sGrace-56440" value: { - dps: 24878.12558 - tps: 18490.13974 + dps: 25944.50811 + tps: 19454.97625 } } dps_results: { key: "TestAffliction-AllItems-Sorrowsong-55879" value: { - dps: 25491.25717 - tps: 18938.48697 + dps: 26534.43544 + tps: 19879.17018 } } dps_results: { key: "TestAffliction-AllItems-Sorrowsong-56400" value: { - dps: 25569.03973 - tps: 18996.79407 + dps: 26613.3503 + tps: 19939.24448 } } dps_results: { key: "TestAffliction-AllItems-Soul'sAnguish-66994" value: { - dps: 24866.5639 - tps: 18439.09839 + dps: 25835.45129 + tps: 19297.24329 } } dps_results: { key: "TestAffliction-AllItems-SoulCasket-58183" value: { - dps: 25919.95897 - tps: 19226.51202 + dps: 27047.77542 + tps: 20245.01768 } } dps_results: { key: "TestAffliction-AllItems-Stonemother'sKiss-61411" value: { - dps: 25543.2127 - tps: 18902.894 + dps: 26520.65452 + tps: 19801.8177 } } dps_results: { key: "TestAffliction-AllItems-StumpofTime-62465" value: { - dps: 25568.75244 - tps: 18876.78449 + dps: 26608.05343 + tps: 19826.57515 } } dps_results: { key: "TestAffliction-AllItems-StumpofTime-62470" value: { - dps: 25619.01158 - tps: 18904.06776 + dps: 26648.17672 + tps: 19829.18412 } } dps_results: { key: "TestAffliction-AllItems-SymbioticWorm-59332" value: { - dps: 24761.34613 - tps: 18323.60323 + dps: 25764.646 + tps: 19240.09688 } } dps_results: { key: "TestAffliction-AllItems-SymbioticWorm-65048" value: { - dps: 24792.88663 - tps: 18380.05461 + dps: 25808.20413 + tps: 19278.21907 } } dps_results: { key: "TestAffliction-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 25626.49957 - tps: 19034.68811 + dps: 26610.74875 + tps: 19927.21419 } } dps_results: { key: "TestAffliction-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-TearofBlood-55819" value: { - dps: 25384.15132 - tps: 18810.387 + dps: 26356.34471 + tps: 19691.84088 } } dps_results: { key: "TestAffliction-AllItems-TearofBlood-56351" value: { - dps: 25574.21802 - tps: 18905.77072 + dps: 26586.70721 + tps: 19852.11513 } } dps_results: { key: "TestAffliction-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 25382.47071 - tps: 18830.3375 + dps: 26435.87321 + tps: 19777.51058 } } dps_results: { key: "TestAffliction-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 25508.34123 - tps: 18911.33143 + dps: 26569.59324 + tps: 19869.32506 } } dps_results: { key: "TestAffliction-AllItems-Theralion'sMirror-59519" value: { - dps: 25990.93308 - tps: 19338.82959 + dps: 27054.7787 + tps: 20286.16125 } } dps_results: { key: "TestAffliction-AllItems-Theralion'sMirror-65105" value: { - dps: 26311.13011 - tps: 19627.83211 + dps: 27265.36379 + tps: 20457.90755 } } dps_results: { key: "TestAffliction-AllItems-Throngus'sFinger-56121" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Throngus'sFinger-56449" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-Tia'sGrace-55874" value: { - dps: 24897.28121 - tps: 18493.23275 + dps: 25931.81293 + tps: 19420.42096 } } dps_results: { key: "TestAffliction-AllItems-Tia'sGrace-56394" value: { - dps: 24897.28121 - tps: 18493.23275 + dps: 25931.81293 + tps: 19420.42096 } } dps_results: { key: "TestAffliction-AllItems-TinyAbominationinaJar-50706" value: { - dps: 24844.04649 - tps: 18368.52374 + dps: 25811.4237 + tps: 19294.32851 } } dps_results: { key: "TestAffliction-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 25585.57589 - tps: 18923.70861 + dps: 26519.14175 + tps: 19874.03936 } } dps_results: { key: "TestAffliction-AllItems-UnheededWarning-59520" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-UnquenchableFlame-67101" value: { - dps: 24609.17295 - tps: 18221.18711 + dps: 25638.77192 + tps: 19149.24006 } } dps_results: { key: "TestAffliction-AllItems-UnsolvableRiddle-62463" value: { - dps: 24871.73452 - tps: 18483.74868 + dps: 25922.43732 + tps: 19432.90547 } } dps_results: { key: "TestAffliction-AllItems-UnsolvableRiddle-62468" value: { - dps: 24871.73452 - tps: 18483.74868 + dps: 25922.43732 + tps: 19432.90547 } } dps_results: { key: "TestAffliction-AllItems-UnsolvableRiddle-68709" value: { - dps: 24871.73452 - tps: 18483.74868 + dps: 25922.43732 + tps: 19432.90547 } } dps_results: { key: "TestAffliction-AllItems-VialofStolenMemories-59515" value: { - dps: 24761.34613 - tps: 18323.60323 + dps: 25764.646 + tps: 19240.09688 } } dps_results: { key: "TestAffliction-AllItems-VialofStolenMemories-65109" value: { - dps: 24792.88663 - tps: 18380.05461 + dps: 25808.20413 + tps: 19278.21907 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 24609.17295 - tps: 18221.18711 + dps: 25638.77192 + tps: 19149.24006 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 25473.72534 - tps: 18831.18857 + dps: 26566.35463 + tps: 19815.80121 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 24609.17295 - tps: 18221.18711 + dps: 25638.77192 + tps: 19149.24006 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 24901.44474 - tps: 18405.46495 + dps: 25858.4169 + tps: 19285.30683 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 25154.74824 - tps: 18670.24701 + dps: 26284.99657 + tps: 19786.97903 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 25115.08747 - tps: 18598.52287 + dps: 26097.93619 + tps: 19488.76642 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 24761.55571 - tps: 18356.2436 + dps: 25729.17446 + tps: 19213.48963 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 25026.58603 - tps: 18621.27392 + dps: 26015.29807 + tps: 19499.61325 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 24761.55571 - tps: 18356.2436 + dps: 25729.17446 + tps: 19213.48963 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 25442.30412 - tps: 18819.57513 + dps: 26485.06448 + tps: 19756.38464 } } dps_results: { key: "TestAffliction-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 24721.09882 - tps: 18317.05036 + dps: 25740.70442 + tps: 19229.31244 } } dps_results: { key: "TestAffliction-AllItems-WitchingHourglass-55787" value: { - dps: 25407.38284 - tps: 18794.64102 + dps: 26431.77105 + tps: 19749.9874 } } dps_results: { key: "TestAffliction-AllItems-WitchingHourglass-56320" value: { - dps: 25802.76578 - tps: 19101.92368 + dps: 26973.18833 + tps: 20214.81325 } } dps_results: { key: "TestAffliction-AllItems-World-QuellerFocus-63842" value: { - dps: 24784.214 - tps: 18396.22816 + dps: 25827.88219 + tps: 19338.35033 } } dps_results: { key: "TestAffliction-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 24834.03892 - tps: 18406.94982 + dps: 25871.48494 + tps: 19402.61045 } } dps_results: { key: "TestAffliction-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 24834.03892 - tps: 18406.94982 + dps: 25871.48494 + tps: 19402.61045 } } dps_results: { key: "TestAffliction-Average-Default" value: { - dps: 26777.26867 - tps: 19814.5142 + dps: 27852.20945 + tps: 20846.716 } } dps_results: { key: "TestAffliction-Settings-Goblin-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 27052.17237 - tps: 26515.13566 + dps: 28129.87639 + tps: 27462.21216 } } dps_results: { key: "TestAffliction-Settings-Goblin-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 26116.20174 - tps: 19576.38006 + dps: 27258.27247 + tps: 20596.96465 } } dps_results: { key: "TestAffliction-Settings-Goblin-p1-Affliction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 33492.70211 - tps: 22338.64774 + dps: 35258.95792 + tps: 24028.19686 } } dps_results: { key: "TestAffliction-Settings-Goblin-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17522.17739 - tps: 20901.72499 + dps: 17958.27438 + tps: 21090.23699 } } dps_results: { key: "TestAffliction-Settings-Goblin-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17522.17739 - tps: 13061.70659 + dps: 17958.27438 + tps: 13501.76997 } } dps_results: { key: "TestAffliction-Settings-Goblin-p1-Affliction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 20176.77443 - tps: 12525.89006 + dps: 20472.88201 + tps: 12858.65983 } } dps_results: { key: "TestAffliction-Settings-Human-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 26931.93462 - tps: 26352.54821 + dps: 27789.88442 + tps: 27074.28179 } } dps_results: { key: "TestAffliction-Settings-Human-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 26001.69608 - tps: 19442.42202 + dps: 26929.19791 + tps: 20285.53543 } } dps_results: { key: "TestAffliction-Settings-Human-p1-Affliction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 33068.54638 - tps: 21895.77022 + dps: 34772.19453 + tps: 23619.28307 } } dps_results: { key: "TestAffliction-Settings-Human-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17403.5542 - tps: 20685.91887 + dps: 17846.29655 + tps: 21036.49048 } } dps_results: { key: "TestAffliction-Settings-Human-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17403.5542 - tps: 12971.67616 + dps: 17846.29655 + tps: 13364.17301 } } dps_results: { key: "TestAffliction-Settings-Human-p1-Affliction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 20077.145 - tps: 12421.74788 + dps: 20506.71415 + tps: 12898.32453 } } dps_results: { key: "TestAffliction-Settings-Orc-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 27494.14685 - tps: 26540.46744 + dps: 28344.27197 + tps: 27251.00483 } } dps_results: { key: "TestAffliction-Settings-Orc-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 26573.61047 - tps: 19635.03804 + dps: 27489.91516 + tps: 20463.70227 } } dps_results: { key: "TestAffliction-Settings-Orc-p1-Affliction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 32692.58462 - tps: 22124.71344 + dps: 34800.51435 + tps: 24214.39975 } } dps_results: { key: "TestAffliction-Settings-Orc-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17790.45055 - tps: 20838.95218 + dps: 18250.59176 + tps: 21161.34998 } } dps_results: { key: "TestAffliction-Settings-Orc-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17790.45055 - tps: 13081.89846 + dps: 18250.59176 + tps: 13488.1563 } } dps_results: { key: "TestAffliction-Settings-Orc-p1-Affliction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 19622.1076 - tps: 12495.74899 + dps: 20534.01794 + tps: 13372.8714 } } dps_results: { key: "TestAffliction-Settings-Troll-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 27009.86467 - tps: 26692.66413 + dps: 28112.32034 + tps: 27537.32225 } } dps_results: { key: "TestAffliction-Settings-Troll-p1-Affliction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 26045.0791 - tps: 19473.0376 + dps: 27219.88048 + tps: 20567.6631 } } dps_results: { key: "TestAffliction-Settings-Troll-p1-Affliction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 33666.04583 - tps: 22322.05739 + dps: 35623.58405 + tps: 24186.67919 } } dps_results: { key: "TestAffliction-Settings-Troll-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17526.42134 - tps: 20931.42207 + dps: 18066.01378 + tps: 21158.30359 } } dps_results: { key: "TestAffliction-Settings-Troll-p1-Affliction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17526.42134 - tps: 13091.40366 + dps: 18066.01378 + tps: 13611.76181 } } dps_results: { key: "TestAffliction-Settings-Troll-p1-Affliction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 20564.78961 - tps: 12956.67221 + dps: 21431.69297 + tps: 13818.42166 } } dps_results: { key: "TestAffliction-SwitchInFrontOfTarget-Default" value: { - dps: 26464.52072 - tps: 19635.03804 + dps: 27375.87859 + tps: 20463.70227 } } diff --git a/sim/warlock/affliction/affliction.go b/sim/warlock/affliction/affliction.go index b4f75b28c0..c592b77235 100644 --- a/sim/warlock/affliction/affliction.go +++ b/sim/warlock/affliction/affliction.go @@ -72,7 +72,7 @@ func (affliction *AfflictionWarlock) ApplyTalents() { // Shadow Mastery affliction.AddStaticMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, - ClassMask: warlock.WarlockShadowDamage, + School: core.SpellSchoolShadow, FloatValue: 0.30, }) } diff --git a/sim/warlock/affliction/affliction_test.go b/sim/warlock/affliction/affliction_test.go index 0623765f2c..93d58a6a38 100644 --- a/sim/warlock/affliction/affliction_test.go +++ b/sim/warlock/affliction/affliction_test.go @@ -360,13 +360,12 @@ func TestAffliction(t *testing.T) { TinkerHands: proto.TinkerHands_TinkerHandsSynapseSprings, } - var afflictionTalents = "223222003013321321-03-33" var afflictionGlyphs = &proto.Glyphs{ Prime1: int32(proto.WarlockPrimeGlyph_GlyphOfHaunt), Prime2: int32(proto.WarlockPrimeGlyph_GlyphOfUnstableAffliction), Prime3: int32(proto.WarlockPrimeGlyph_GlyphOfCorruption), - Major2: int32(proto.WarlockMajorGlyph_GlyphOfShadowBolt), Major1: int32(proto.WarlockMajorGlyph_GlyphOfLifeTap), + Major2: int32(proto.WarlockMajorGlyph_GlyphOfShadowBolt), Major3: int32(proto.WarlockMajorGlyph_GlyphOfSoulSwap), } diff --git a/sim/warlock/affliction/unstable_affliction.go b/sim/warlock/affliction/unstable_affliction.go index bb3f4db81e..4ef46143c5 100644 --- a/sim/warlock/affliction/unstable_affliction.go +++ b/sim/warlock/affliction/unstable_affliction.go @@ -28,10 +28,12 @@ func (affliction *AfflictionWarlock) registerUnstableAffliction() { ThreatMultiplier: 1, Dot: core.DotConfig{ - Aura: core.Aura{Label: "UnstableAffliction"}, - NumberOfTicks: 5, - TickLength: 3 * time.Second, - BonusCoefficient: 0.20000000298, + Aura: core.Aura{Label: "UnstableAffliction"}, + NumberOfTicks: 5, + TickLength: 3 * time.Second, + AffectedByCastSpeed: true, + BonusCoefficient: 0.20000000298, + OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, _ bool) { dot.Snapshot(target, affliction.CalcScalingSpellDmg(0.23199999332)) }, diff --git a/sim/warlock/demon_soul.go b/sim/warlock/demon_soul.go index 942e71d1fb..a3bd940f96 100644 --- a/sim/warlock/demon_soul.go +++ b/sim/warlock/demon_soul.go @@ -9,8 +9,9 @@ import ( func (warlock *Warlock) registerDemonSoul() { impMod := warlock.AddDynamicMod(core.SpellModConfig{ - Kind: core.SpellMod_BonusCrit_Rating, - ClassMask: WarlockSpellShadowBolt | WarlockSpellIncinerate | WarlockSpellSoulFire | WarlockSpellChaosBolt, + Kind: core.SpellMod_BonusCrit_Rating, + ClassMask: WarlockSpellShadowBolt | WarlockSpellIncinerate | WarlockSpellSoulFire | WarlockSpellChaosBolt | + WarlockSpellImmolate | WarlockSpellImmolateDot, FloatValue: 30 * core.CritRatingPerCritChance, }) @@ -52,7 +53,7 @@ func (warlock *Warlock) registerDemonSoul() { felguardDamageMod := warlock.AddDynamicMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, - ClassMask: WarlockFireDamage | WarlockShadowDamage, + School: core.SpellSchoolShadow | core.SpellSchoolFire, FloatValue: 0.1, }) diff --git a/sim/warlock/demonology/TestDemonology.results b/sim/warlock/demonology/TestDemonology.results index 0772655255..b3dcd43460 100644 --- a/sim/warlock/demonology/TestDemonology.results +++ b/sim/warlock/demonology/TestDemonology.results @@ -37,301 +37,1387 @@ character_stats_results: { dps_results: { key: "TestDemonology-AllItems-AgileShadowspiritDiamond" value: { - dps: 25021.97889 - tps: 12931.33335 + dps: 28969.36847 + tps: 14922.3495 + } +} +dps_results: { + key: "TestDemonology-AllItems-Althor'sAbacus-50366" + value: { + dps: 27335.13041 + tps: 14130.58755 + } +} +dps_results: { + key: "TestDemonology-AllItems-Anhuur'sHymnal-55889" + value: { + dps: 27550.18261 + tps: 14297.94546 + } +} +dps_results: { + key: "TestDemonology-AllItems-Anhuur'sHymnal-56407" + value: { + dps: 27612.99308 + tps: 14330.92021 } } dps_results: { key: "TestDemonology-AllItems-AustereShadowspiritDiamond" value: { - dps: 24866.61939 - tps: 12796.35419 + dps: 28787.22728 + tps: 14818.00251 + } +} +dps_results: { + key: "TestDemonology-AllItems-BaubleofTrueBlood-50726" + value: { + dps: 26800.62342 + tps: 13877.75443 + hps: 98.1253 + } +} +dps_results: { + key: "TestDemonology-AllItems-BedrockTalisman-58182" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-BellofEnragingResonance-59326" + value: { + dps: 28453.60351 + tps: 14676.8449 + } +} +dps_results: { + key: "TestDemonology-AllItems-BindingPromise-67037" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-Blood-SoakedAleMug-63843" + value: { + dps: 25496.06231 + tps: 14107.39691 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodofIsiset-55995" + value: { + dps: 27202.97991 + tps: 14015.76558 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodofIsiset-56414" + value: { + dps: 27335.40089 + tps: 14066.42558 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" + value: { + dps: 25132.49859 + tps: 13973.10181 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" + value: { + dps: 26082.90612 + tps: 14573.81085 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" + value: { + dps: 25120.03128 + tps: 13985.24766 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" + value: { + dps: 27238.84172 + tps: 14114.52804 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" + value: { + dps: 26796.11252 + tps: 13838.74427 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" + value: { + dps: 26801.49467 + tps: 13866.82636 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" + value: { + dps: 26805.55338 + tps: 13863.62199 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" + value: { + dps: 27684.28107 + tps: 14313.0969 + } +} +dps_results: { + key: "TestDemonology-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" + value: { + dps: 26805.55338 + tps: 13863.62199 + } +} +dps_results: { + key: "TestDemonology-AllItems-BottledLightning-66879" + value: { + dps: 25780.85859 + tps: 14351.96819 } } dps_results: { key: "TestDemonology-AllItems-BracingShadowspiritDiamond" value: { - dps: 24997.11809 - tps: 12869.27878 + dps: 28972.81791 + tps: 14615.61595 } } dps_results: { key: "TestDemonology-AllItems-BurningShadowspiritDiamond" value: { - dps: 25162.58135 - tps: 12996.57791 + dps: 29179.89058 + tps: 15065.91282 } } dps_results: { key: "TestDemonology-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 25077.17578 - tps: 12961.69732 + dps: 29051.4001 + tps: 14964.00167 + } +} +dps_results: { + key: "TestDemonology-AllItems-CoreofRipeness-58184" + value: { + dps: 25988.90771 + tps: 14431.53226 + } +} +dps_results: { + key: "TestDemonology-AllItems-CorpseTongueCoin-50349" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-CrushingWeight-59506" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-CrushingWeight-65118" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-DarkmoonCard:Earthquake-62048" + value: { + dps: 26801.49467 + tps: 13866.87076 + } +} +dps_results: { + key: "TestDemonology-AllItems-DarkmoonCard:Hurricane-62049" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-DarkmoonCard:Hurricane-62051" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-DarkmoonCard:Tsunami-62050" + value: { + dps: 27777.82096 + tps: 14338.81151 + } +} +dps_results: { + key: "TestDemonology-AllItems-Deathbringer'sWill-50363" + value: { + dps: 27023.69371 + tps: 13983.31778 } } dps_results: { key: "TestDemonology-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 24910.00334 - tps: 12832.32673 + dps: 28845.99683 + tps: 14806.37704 + } +} +dps_results: { + key: "TestDemonology-AllItems-DislodgedForeignObject-50348" + value: { + dps: 27532.76834 + tps: 14370.41662 } } dps_results: { key: "TestDemonology-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 24866.61939 - tps: 12796.35419 + dps: 28787.22728 + tps: 14818.00251 + } +} +dps_results: { + key: "TestDemonology-AllItems-ElectrosparkHeartstarter-67118" + value: { + dps: 25573.86149 + tps: 14224.44656 } } dps_results: { key: "TestDemonology-AllItems-EmberShadowspiritDiamond" value: { - dps: 24997.11809 - tps: 12869.27878 + dps: 28965.59837 + tps: 14898.76961 } } dps_results: { key: "TestDemonology-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 24910.00334 - tps: 12832.32673 + dps: 28845.99683 + tps: 14806.37704 + } +} +dps_results: { + key: "TestDemonology-AllItems-EssenceoftheCyclone-59473" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-EssenceoftheCyclone-65140" + value: { + dps: 26805.71698 + tps: 13863.78559 } } dps_results: { key: "TestDemonology-AllItems-EternalShadowspiritDiamond" value: { - dps: 24866.61939 - tps: 12796.35419 + dps: 28787.22728 + tps: 14818.00251 + } +} +dps_results: { + key: "TestDemonology-AllItems-FallofMortality-59500" + value: { + dps: 27777.82096 + tps: 14338.81151 + } +} +dps_results: { + key: "TestDemonology-AllItems-FallofMortality-65124" + value: { + dps: 27910.21935 + tps: 14415.59053 + } +} +dps_results: { + key: "TestDemonology-AllItems-Figurine-DemonPanther-52199" + value: { + dps: 25386.82078 + tps: 14091.83649 + } +} +dps_results: { + key: "TestDemonology-AllItems-Figurine-DreamOwl-52354" + value: { + dps: 25938.31942 + tps: 14398.94467 + } +} +dps_results: { + key: "TestDemonology-AllItems-Figurine-EarthenGuardian-52352" + value: { + dps: 26821.83461 + tps: 13895.21472 + } +} +dps_results: { + key: "TestDemonology-AllItems-Figurine-JeweledSerpent-52353" + value: { + dps: 26854.61016 + tps: 14961.51987 + } +} +dps_results: { + key: "TestDemonology-AllItems-Figurine-KingofBoars-52351" + value: { + dps: 25598.85164 + tps: 14190.65434 } } dps_results: { key: "TestDemonology-AllItems-FleetShadowspiritDiamond" value: { - dps: 24974.07635 - tps: 12849.05077 + dps: 28907.92823 + tps: 14820.79239 + } +} +dps_results: { + key: "TestDemonology-AllItems-FluidDeath-58181" + value: { + dps: 26911.43233 + tps: 13988.96898 } } dps_results: { key: "TestDemonology-AllItems-ForlornShadowspiritDiamond" value: { - dps: 24997.11809 - tps: 12869.27878 + dps: 28972.81791 + tps: 14906.23271 + } +} +dps_results: { + key: "TestDemonology-AllItems-FuryofAngerforge-59461" + value: { + dps: 27244.73833 + tps: 14096.10943 + } +} +dps_results: { + key: "TestDemonology-AllItems-GaleofShadows-56138" + value: { + dps: 27800.15508 + tps: 14425.96165 + } +} +dps_results: { + key: "TestDemonology-AllItems-GaleofShadows-56462" + value: { + dps: 28004.29298 + tps: 14578.14432 + } +} +dps_results: { + key: "TestDemonology-AllItems-GearDetector-61462" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-GlowingTwilightScale-54589" + value: { + dps: 27350.98122 + tps: 14145.28917 + } +} +dps_results: { + key: "TestDemonology-AllItems-GraceoftheHerald-55266" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-GraceoftheHerald-56295" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-HarmlightToken-63839" + value: { + dps: 27834.12199 + tps: 14373.4316 + } +} +dps_results: { + key: "TestDemonology-AllItems-Harrison'sInsigniaofPanache-65803" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofIgnacious-59514" + value: { + dps: 27966.69642 + tps: 14554.84313 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofIgnacious-65110" + value: { + dps: 28048.52554 + tps: 14681.37239 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofRage-59224" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofRage-65072" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofSolace-55868" + value: { + dps: 27168.54054 + tps: 14093.50761 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofSolace-56393" + value: { + dps: 27285.18515 + tps: 14198.9906 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofThunder-55845" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartofThunder-56370" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-HeartoftheVile-66969" + value: { + dps: 26805.71698 + tps: 13863.78559 } } dps_results: { key: "TestDemonology-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 24910.00334 - tps: 12832.32673 + dps: 28845.99683 + tps: 14806.37704 } } dps_results: { - key: "TestDemonology-AllItems-PowerfulShadowspiritDiamond" + key: "TestDemonology-AllItems-ImpatienceofYouth-62464" value: { - dps: 24866.61939 - tps: 12796.35419 + dps: 25598.85164 + tps: 14190.65434 } } dps_results: { - key: "TestDemonology-AllItems-ReverberatingShadowspiritDiamond" + key: "TestDemonology-AllItems-ImpatienceofYouth-62469" value: { - dps: 25021.97889 - tps: 12931.33335 + dps: 25598.85164 + tps: 14190.65434 } } dps_results: { - key: "TestDemonology-AllItems-RevitalizingShadowspiritDiamond" + key: "TestDemonology-AllItems-ImpetuousQuery-55881" value: { - dps: 25020.6296 - tps: 12926.49324 + dps: 27202.70745 + tps: 14015.49312 } } dps_results: { - key: "TestDemonology-AllItems-ShadowflameRegalia" + key: "TestDemonology-AllItems-ImpetuousQuery-56406" + value: { + dps: 27335.12672 + tps: 14066.15141 + } +} +dps_results: { + key: "TestDemonology-AllItems-InsigniaofDiplomacy-61433" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-InsigniaoftheEarthenLord-61429" + value: { + dps: 25808.52775 + tps: 14307.32703 + } +} +dps_results: { + key: "TestDemonology-AllItems-JarofAncientRemedies-59354" + value: { + dps: 26790.73454 + tps: 13918.6385 + } +} +dps_results: { + key: "TestDemonology-AllItems-JarofAncientRemedies-65029" + value: { + dps: 26797.84651 + tps: 13901.13035 + } +} +dps_results: { + key: "TestDemonology-AllItems-JujuofNimbleness-63840" + value: { + dps: 25496.06231 + tps: 14107.39691 + } +} +dps_results: { + key: "TestDemonology-AllItems-KeytotheEndlessChamber-55795" + value: { + dps: 26911.43233 + tps: 13988.96898 + } +} +dps_results: { + key: "TestDemonology-AllItems-KeytotheEndlessChamber-56328" + value: { + dps: 26911.43233 + tps: 13988.96898 + } +} +dps_results: { + key: "TestDemonology-AllItems-KvaldirBattleStandard-59685" + value: { + dps: 27177.68945 + tps: 14059.69968 + } +} +dps_results: { + key: "TestDemonology-AllItems-KvaldirBattleStandard-59689" + value: { + dps: 27177.68945 + tps: 14059.69968 + } +} +dps_results: { + key: "TestDemonology-AllItems-LadyLa-La'sSingingShell-67152" + value: { + dps: 25468.34498 + tps: 14151.22947 + } +} +dps_results: { + key: "TestDemonology-AllItems-LeadenDespair-55816" + value: { + dps: 26851.25393 + tps: 13905.52811 + } +} +dps_results: { + key: "TestDemonology-AllItems-LeadenDespair-56347" + value: { + dps: 26821.81265 + tps: 13895.19276 + } +} +dps_results: { + key: "TestDemonology-AllItems-LeftEyeofRajh-56102" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-LeftEyeofRajh-56427" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-LicensetoSlay-58180" + value: { + dps: 26911.43233 + tps: 13988.96898 + } +} +dps_results: { + key: "TestDemonology-AllItems-MagnetiteMirror-55814" + value: { + dps: 25136.22772 + tps: 13953.85119 + } +} +dps_results: { + key: "TestDemonology-AllItems-MagnetiteMirror-56345" + value: { + dps: 25136.22772 + tps: 13953.85119 + } +} +dps_results: { + key: "TestDemonology-AllItems-MandalaofStirringPatterns-62467" + value: { + dps: 26811.63938 + tps: 13842.20063 + } +} +dps_results: { + key: "TestDemonology-AllItems-MandalaofStirringPatterns-62472" + value: { + dps: 26811.63938 + tps: 13842.20063 + } +} +dps_results: { + key: "TestDemonology-AllItems-MarkofKhardros-56132" + value: { + dps: 25293.89985 + tps: 13953.85119 + } +} +dps_results: { + key: "TestDemonology-AllItems-MarkofKhardros-56458" + value: { + dps: 25313.60887 + tps: 13953.85119 + } +} +dps_results: { + key: "TestDemonology-AllItems-MightoftheOcean-55251" + value: { + dps: 25451.44646 + tps: 14198.65734 + } +} +dps_results: { + key: "TestDemonology-AllItems-MightoftheOcean-56285" + value: { + dps: 25451.44646 + tps: 14198.65734 + } +} +dps_results: { + key: "TestDemonology-AllItems-MirrorofBrokenImages-62466" + value: { + dps: 27335.12672 + tps: 14066.15141 + } +} +dps_results: { + key: "TestDemonology-AllItems-MirrorofBrokenImages-62471" + value: { + dps: 27335.12672 + tps: 14066.15141 + } +} +dps_results: { + key: "TestDemonology-AllItems-MoonwellChalice-70142" + value: { + dps: 26336.06139 + tps: 14497.60765 + } +} +dps_results: { + key: "TestDemonology-AllItems-Oremantle'sFavor-61448" + value: { + dps: 25357.34595 + tps: 14141.69873 + } +} +dps_results: { + key: "TestDemonology-AllItems-PetrifiedTwilightScale-54591" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-PhylacteryoftheNamelessLich-50365" + value: { + dps: 27725.93099 + tps: 14331.99291 + } +} +dps_results: { + key: "TestDemonology-AllItems-PorcelainCrab-55237" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-PorcelainCrab-56280" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-PowerfulShadowspiritDiamond" + value: { + dps: 28787.22728 + tps: 14818.00251 + } +} +dps_results: { + key: "TestDemonology-AllItems-Prestor'sTalismanofMachination-59441" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-Prestor'sTalismanofMachination-65026" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-Rainsong-55854" + value: { + dps: 26813.77732 + tps: 13850.38717 + } +} +dps_results: { + key: "TestDemonology-AllItems-Rainsong-56377" + value: { + dps: 26803.08135 + tps: 13837.33543 + } +} +dps_results: { + key: "TestDemonology-AllItems-ReverberatingShadowspiritDiamond" + value: { + dps: 28969.36847 + tps: 14922.3495 + } +} +dps_results: { + key: "TestDemonology-AllItems-RevitalizingShadowspiritDiamond" + value: { + dps: 28964.93319 + tps: 14935.60633 + } +} +dps_results: { + key: "TestDemonology-AllItems-RightEyeofRajh-56100" + value: { + dps: 26911.43233 + tps: 13988.96898 + } +} +dps_results: { + key: "TestDemonology-AllItems-RightEyeofRajh-56431" + value: { + dps: 26911.43233 + tps: 13988.96898 + } +} +dps_results: { + key: "TestDemonology-AllItems-Schnottz'sMedallionofCommand-65805" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-SeaStar-55256" + value: { + dps: 25592.50535 + tps: 14283.59054 + } +} +dps_results: { + key: "TestDemonology-AllItems-SeaStar-56290" + value: { + dps: 26045.3337 + tps: 14555.54536 + } +} +dps_results: { + key: "TestDemonology-AllItems-ShadowflameRegalia" + value: { + dps: 26613.49526 + tps: 13686.42537 + } +} +dps_results: { + key: "TestDemonology-AllItems-ShardofWoe-60233" + value: { + dps: 27699.24744 + tps: 14321.96966 + } +} +dps_results: { + key: "TestDemonology-AllItems-Shrine-CleansingPurifier-63838" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-Sindragosa'sFlawlessFang-50364" + value: { + dps: 26848.75022 + tps: 13915.68465 + } +} +dps_results: { + key: "TestDemonology-AllItems-Skardyn'sGrace-56115" + value: { + dps: 25338.19285 + tps: 14017.15578 + } +} +dps_results: { + key: "TestDemonology-AllItems-Skardyn'sGrace-56440" + value: { + dps: 25365.46304 + tps: 14021.1443 + } +} +dps_results: { + key: "TestDemonology-AllItems-Sorrowsong-55879" + value: { + dps: 27779.82578 + tps: 14306.071 + } +} +dps_results: { + key: "TestDemonology-AllItems-Sorrowsong-56400" + value: { + dps: 27990.85744 + tps: 14395.89916 + } +} +dps_results: { + key: "TestDemonology-AllItems-Soul'sAnguish-66994" + value: { + dps: 25451.44646 + tps: 14198.65734 + } +} +dps_results: { + key: "TestDemonology-AllItems-SoulCasket-58183" + value: { + dps: 26850.82576 + tps: 14955.34303 + } +} +dps_results: { + key: "TestDemonology-AllItems-Stonemother'sKiss-61411" + value: { + dps: 27742.54259 + tps: 14355.12889 + } +} +dps_results: { + key: "TestDemonology-AllItems-StumpofTime-62465" + value: { + dps: 27733.86609 + tps: 14429.35027 + } +} +dps_results: { + key: "TestDemonology-AllItems-StumpofTime-62470" + value: { + dps: 27777.35484 + tps: 14417.03539 + } +} +dps_results: { + key: "TestDemonology-AllItems-SymbioticWorm-59332" + value: { + dps: 26914.60992 + tps: 13905.51778 + } +} +dps_results: { + key: "TestDemonology-AllItems-SymbioticWorm-65048" + value: { + dps: 26886.88877 + tps: 13892.69087 + } +} +dps_results: { + key: "TestDemonology-AllItems-TalismanofSinisterOrder-65804" + value: { + dps: 27971.09046 + tps: 14428.89771 + } +} +dps_results: { + key: "TestDemonology-AllItems-Tank-CommanderInsignia-63841" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-TearofBlood-55819" + value: { + dps: 27421.49554 + tps: 14223.38259 + } +} +dps_results: { + key: "TestDemonology-AllItems-TearofBlood-56351" + value: { + dps: 27627.11378 + tps: 14296.65671 + } +} +dps_results: { + key: "TestDemonology-AllItems-TendrilsofBurrowingDark-55810" + value: { + dps: 27791.55418 + tps: 14306.81226 + } +} +dps_results: { + key: "TestDemonology-AllItems-TendrilsofBurrowingDark-56339" + value: { + dps: 28159.397 + tps: 14470.07183 + } +} +dps_results: { + key: "TestDemonology-AllItems-Theralion'sMirror-59519" + value: { + dps: 28351.26676 + tps: 14488.86818 + } +} +dps_results: { + key: "TestDemonology-AllItems-Theralion'sMirror-65105" + value: { + dps: 28593.42336 + tps: 14625.33255 + } +} +dps_results: { + key: "TestDemonology-AllItems-Throngus'sFinger-56121" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-Throngus'sFinger-56449" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-Tia'sGrace-55874" + value: { + dps: 27202.97991 + tps: 14015.76558 + } +} +dps_results: { + key: "TestDemonology-AllItems-Tia'sGrace-56394" + value: { + dps: 27335.40089 + tps: 14066.42558 + } +} +dps_results: { + key: "TestDemonology-AllItems-TinyAbominationinaJar-50706" + value: { + dps: 26886.14602 + tps: 13961.03219 + } +} +dps_results: { + key: "TestDemonology-AllItems-Tyrande'sFavoriteDoll-64645" + value: { + dps: 26143.30431 + tps: 14572.35945 + } +} +dps_results: { + key: "TestDemonology-AllItems-UnheededWarning-59520" + value: { + dps: 26805.71698 + tps: 13863.78559 + } +} +dps_results: { + key: "TestDemonology-AllItems-UnquenchableFlame-67101" + value: { + dps: 25107.54745 + tps: 13984.05226 + } +} +dps_results: { + key: "TestDemonology-AllItems-UnsolvableRiddle-62463" + value: { + dps: 25598.85164 + tps: 14190.65434 + } +} +dps_results: { + key: "TestDemonology-AllItems-UnsolvableRiddle-62468" + value: { + dps: 25598.85164 + tps: 14190.65434 + } +} +dps_results: { + key: "TestDemonology-AllItems-UnsolvableRiddle-68709" + value: { + dps: 25598.85164 + tps: 14190.65434 + } +} +dps_results: { + key: "TestDemonology-AllItems-VialofStolenMemories-59515" + value: { + dps: 26914.60992 + tps: 13905.51778 + } +} +dps_results: { + key: "TestDemonology-AllItems-VialofStolenMemories-65109" + value: { + dps: 26886.88877 + tps: 13892.69087 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sBadgeofConquest-61033" + value: { + dps: 25120.03128 + tps: 13985.24766 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sBadgeofDominance-61035" + value: { + dps: 26136.75109 + tps: 14606.72392 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sBadgeofVictory-61034" + value: { + dps: 25120.03128 + tps: 13985.24766 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" + value: { + dps: 26925.9921 + tps: 13999.65242 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" + value: { + dps: 27480.97209 + tps: 14250.06866 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sEmblemofCruelty-61026" + value: { + dps: 27299.05517 + tps: 14147.24378 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sEmblemofProficiency-61030" + value: { + dps: 26807.97762 + tps: 13864.07775 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sEmblemofProwess-61029" + value: { + dps: 27337.87761 + tps: 14066.73808 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sEmblemofTenacity-61032" + value: { + dps: 26807.97762 + tps: 13864.07775 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sInsigniaofConquest-61047" + value: { + dps: 26805.61323 + tps: 13863.68184 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sInsigniaofDominance-61045" + value: { + dps: 27702.87855 + tps: 14311.73492 + } +} +dps_results: { + key: "TestDemonology-AllItems-ViciousGladiator'sInsigniaofVictory-61046" + value: { + dps: 26805.55338 + tps: 13863.62199 + } +} +dps_results: { + key: "TestDemonology-AllItems-WitchingHourglass-55787" + value: { + dps: 27779.32308 + tps: 14414.02336 + } +} +dps_results: { + key: "TestDemonology-AllItems-WitchingHourglass-56320" + value: { + dps: 28348.7655 + tps: 14624.09015 + } +} +dps_results: { + key: "TestDemonology-AllItems-World-QuellerFocus-63842" + value: { + dps: 25479.14655 + tps: 14139.30267 + } +} +dps_results: { + key: "TestDemonology-AllItems-Za'brox'sLuckyTooth-63742" + value: { + dps: 25319.76972 + tps: 13961.86458 + } +} +dps_results: { + key: "TestDemonology-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 22887.15216 - tps: 11752.93695 + dps: 25319.76972 + tps: 13961.86458 } } dps_results: { key: "TestDemonology-Average-Default" value: { - dps: 25394.26104 - tps: 13141.02505 + dps: 29303.90645 + tps: 15151.11148 } } dps_results: { key: "TestDemonology-Settings-Goblin-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 43766.55097 - tps: 33316.45643 + dps: 43615.60219 + tps: 37332.06187 } } dps_results: { key: "TestDemonology-Settings-Goblin-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 24651.30187 - tps: 12960.71882 + dps: 28713.84044 + tps: 15063.74491 } } dps_results: { key: "TestDemonology-Settings-Goblin-p1-Demonology Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 37082.91083 - tps: 18040.86079 + dps: 45937.78343 + tps: 22283.98757 } } dps_results: { key: "TestDemonology-Settings-Goblin-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 32062.62291 - tps: 25975.111 + dps: 29565.37514 + tps: 28832.69647 } } dps_results: { key: "TestDemonology-Settings-Goblin-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17410.70879 - tps: 9023.11709 + dps: 20093.37692 + tps: 10433.40787 } } dps_results: { key: "TestDemonology-Settings-Goblin-p1-Demonology Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 22794.97585 - tps: 9975.05804 + dps: 27878.19284 + tps: 12392.1985 } } dps_results: { key: "TestDemonology-Settings-Human-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 43602.10301 - tps: 32767.75881 + dps: 43274.73532 + tps: 36971.00938 } } dps_results: { key: "TestDemonology-Settings-Human-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 24390.97034 - tps: 12832.30442 + dps: 28372.0341 + tps: 14917.56663 } } dps_results: { key: "TestDemonology-Settings-Human-p1-Demonology Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 37016.07758 - tps: 18078.336 + dps: 45297.67021 + tps: 22066.41456 } } dps_results: { key: "TestDemonology-Settings-Human-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 31949.22691 - tps: 25874.98907 + dps: 29265.43795 + tps: 28505.03177 } } dps_results: { key: "TestDemonology-Settings-Human-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17307.57379 - tps: 8989.33879 + dps: 19836.78093 + tps: 10348.93822 } } dps_results: { key: "TestDemonology-Settings-Human-p1-Demonology Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 22613.43785 - tps: 9882.25555 + dps: 27708.64516 + tps: 12309.08273 } } dps_results: { key: "TestDemonology-Settings-Orc-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 45139.61764 - tps: 33427.73464 + dps: 44596.49313 + tps: 37635.85311 } } dps_results: { key: "TestDemonology-Settings-Orc-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 25162.58135 - tps: 12996.57791 + dps: 29179.89058 + tps: 15065.91282 } } dps_results: { key: "TestDemonology-Settings-Orc-p1-Demonology Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 38548.58363 - tps: 18453.21008 + dps: 46973.99086 + tps: 22399.7126 } } dps_results: { key: "TestDemonology-Settings-Orc-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 33123.03206 - tps: 26270.66816 + dps: 30248.59365 + tps: 28969.23454 } } dps_results: { key: "TestDemonology-Settings-Orc-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17863.34056 - tps: 9085.69137 + dps: 20446.53874 + tps: 10455.12717 } } dps_results: { key: "TestDemonology-Settings-Orc-p1-Demonology Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 23748.46328 - tps: 10107.00879 + dps: 28917.48624 + tps: 12520.01458 } } dps_results: { key: "TestDemonology-Settings-Troll-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 45153.37856 - tps: 34301.66054 + dps: 45285.75208 + tps: 38900.1369 } } dps_results: { key: "TestDemonology-Settings-Troll-p1-Demonology Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 24816.07755 - tps: 13062.32091 + dps: 28748.27453 + tps: 15161.92121 } } dps_results: { key: "TestDemonology-Settings-Troll-p1-Demonology Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 38122.23761 - tps: 18801.63696 + dps: 47227.3884 + tps: 23380.6365 } } dps_results: { key: "TestDemonology-Settings-Troll-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 32745.18388 - tps: 26664.13181 + dps: 30461.93396 + tps: 29613.6911 } } dps_results: { key: "TestDemonology-Settings-Troll-p1-Demonology Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17604.0996 - tps: 9072.02894 + dps: 20215.02847 + tps: 10629.13379 } } dps_results: { key: "TestDemonology-Settings-Troll-p1-Demonology Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 23847.42516 - tps: 10510.83129 + dps: 29194.84967 + tps: 13441.80135 } } dps_results: { key: "TestDemonology-SwitchInFrontOfTarget-Default" value: { - dps: 24931.37578 - tps: 12996.57791 + dps: 29020.83864 + tps: 15065.91282 } } diff --git a/sim/warlock/demonology/demonology.go b/sim/warlock/demonology/demonology.go index fb6ee7cb26..2633043ad3 100644 --- a/sim/warlock/demonology/demonology.go +++ b/sim/warlock/demonology/demonology.go @@ -60,7 +60,7 @@ func (demonology *DemonologyWarlock) ApplyTalents() { // Demonic Knowledge demonology.AddStaticMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, - ClassMask: warlock.WarlockShadowDamage | warlock.WarlockFireDamage, + School: core.SpellSchoolShadow | core.SpellSchoolFire, FloatValue: 0.15, }) } diff --git a/sim/warlock/demonology/demonology_test.go b/sim/warlock/demonology/demonology_test.go index 83df38733c..abd6aded49 100644 --- a/sim/warlock/demonology/demonology_test.go +++ b/sim/warlock/demonology/demonology_test.go @@ -5,6 +5,7 @@ import ( "testing" "time" + _ "github.com/wowsims/cata/sim/common" "github.com/wowsims/cata/sim/core" "github.com/wowsims/cata/sim/core/proto" "github.com/wowsims/cata/sim/core/stats" diff --git a/sim/warlock/destruction/TestDestruction.results b/sim/warlock/destruction/TestDestruction.results index 3b752cd073..2f72aa62a7 100644 --- a/sim/warlock/destruction/TestDestruction.results +++ b/sim/warlock/destruction/TestDestruction.results @@ -37,1387 +37,1387 @@ character_stats_results: { dps_results: { key: "TestDestruction-AllItems-AgileShadowspiritDiamond" value: { - dps: 27351.07904 - tps: 18036.0622 + dps: 28129.83744 + tps: 18709.18697 } } dps_results: { key: "TestDestruction-AllItems-Althor'sAbacus-50366" value: { - dps: 26137.03356 - tps: 17266.3783 + dps: 26807.07454 + tps: 17922.96063 } } dps_results: { key: "TestDestruction-AllItems-Anhuur'sHymnal-55889" value: { - dps: 26387.44824 - tps: 17388.00146 + dps: 27208.21172 + tps: 18141.88335 } } dps_results: { key: "TestDestruction-AllItems-Anhuur'sHymnal-56407" value: { - dps: 26450.40206 - tps: 17437.20392 + dps: 27254.87269 + tps: 18177.27452 } } dps_results: { key: "TestDestruction-AllItems-AustereShadowspiritDiamond" value: { - dps: 27070.69752 - tps: 17802.82271 + dps: 27843.97437 + tps: 18489.39336 } } dps_results: { key: "TestDestruction-AllItems-BaubleofTrueBlood-50726" value: { - dps: 25583.89832 - tps: 16934.56142 - hps: 90.10774 + dps: 26310.3214 + tps: 17572.04326 + hps: 100.77194 } } dps_results: { key: "TestDestruction-AllItems-BedrockTalisman-58182" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-BellofEnragingResonance-59326" value: { - dps: 27030.85211 - tps: 17788.90103 + dps: 27716.3978 + tps: 18468.99715 } } dps_results: { key: "TestDestruction-AllItems-BindingPromise-67037" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 25779.24633 - tps: 17099.65031 + dps: 26503.30693 + tps: 17757.6423 } } dps_results: { key: "TestDestruction-AllItems-BloodofIsiset-55995" value: { - dps: 25795.98406 - tps: 17072.49968 + dps: 26566.9704 + tps: 17778.68516 } } dps_results: { key: "TestDestruction-AllItems-BloodofIsiset-56414" value: { - dps: 25827.99813 - tps: 17095.83091 + dps: 26601.50084 + tps: 17804.22993 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 25601.87249 - tps: 16947.69203 + dps: 26260.98238 + tps: 17581.87728 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 26459.8982 - tps: 17470.33689 + dps: 27133.10544 + tps: 18098.99737 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 25617.60086 - tps: 16968.79568 + dps: 26259.49526 + tps: 17579.68868 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 25961.8077 - tps: 17144.13124 + dps: 26617.23823 + tps: 17799.04916 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 25532.48267 - tps: 16860.48431 + dps: 26303.28339 + tps: 17583.54105 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 25557.01933 - tps: 16884.00836 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 26344.25621 - tps: 17381.57853 + dps: 27119.51223 + tps: 18098.68206 } } dps_results: { key: "TestDestruction-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-BottledLightning-66879" value: { - dps: 26280.98353 - tps: 17373.57108 + dps: 26912.04304 + tps: 18015.69468 } } dps_results: { key: "TestDestruction-AllItems-BracingShadowspiritDiamond" value: { - dps: 27196.74069 - tps: 17540.25156 + dps: 28004.8006 + tps: 18241.06843 } } dps_results: { key: "TestDestruction-AllItems-BurningShadowspiritDiamond" value: { - dps: 27466.54534 - tps: 18098.27425 + dps: 28292.89524 + tps: 18819.27248 } } dps_results: { key: "TestDestruction-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 27387.73301 - tps: 18066.53031 + dps: 28186.98266 + tps: 18746.8759 } } dps_results: { key: "TestDestruction-AllItems-CoreofRipeness-58184" value: { - dps: 26547.58344 - tps: 17539.53599 + dps: 27208.3398 + tps: 18214.90899 } } dps_results: { key: "TestDestruction-AllItems-CorpseTongueCoin-50349" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-CrushingWeight-59506" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-CrushingWeight-65118" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 25557.01933 - tps: 16884.02501 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 26560.90739 - tps: 17528.52504 + dps: 27243.84108 + tps: 18215.28497 } } dps_results: { key: "TestDestruction-AllItems-Deathbringer'sWill-50363" value: { - dps: 25785.5438 - tps: 17053.92781 + dps: 26468.97463 + tps: 17701.06128 } } dps_results: { key: "TestDestruction-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 27114.7081 - tps: 17849.49938 + dps: 27898.6529 + tps: 18525.16067 } } dps_results: { key: "TestDestruction-AllItems-DislodgedForeignObject-50348" value: { - dps: 26405.48088 - tps: 17521.26971 + dps: 27078.94337 + tps: 18105.97258 } } dps_results: { key: "TestDestruction-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 27070.69752 - tps: 17802.82271 + dps: 27843.97437 + tps: 18489.39336 } } dps_results: { key: "TestDestruction-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 25997.15247 - tps: 17162.77404 + dps: 26659.65246 + tps: 17823.32872 } } dps_results: { key: "TestDestruction-AllItems-EmberShadowspiritDiamond" value: { - dps: 27231.61569 - tps: 17924.65665 + dps: 28004.8006 + tps: 18609.05314 } } dps_results: { key: "TestDestruction-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 27114.7081 - tps: 17849.49938 + dps: 27898.6529 + tps: 18525.16067 } } dps_results: { key: "TestDestruction-AllItems-EssenceoftheCyclone-59473" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-EssenceoftheCyclone-65140" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-EternalShadowspiritDiamond" value: { - dps: 27070.69752 - tps: 17802.82271 + dps: 27843.97437 + tps: 18489.39336 } } dps_results: { key: "TestDestruction-AllItems-FallofMortality-59500" value: { - dps: 26560.90739 - tps: 17528.52504 + dps: 27243.84108 + tps: 18215.28497 } } dps_results: { key: "TestDestruction-AllItems-FallofMortality-65124" value: { - dps: 26721.64717 - tps: 17650.31028 + dps: 27354.81571 + tps: 18288.70949 } } dps_results: { key: "TestDestruction-AllItems-Figurine-DemonPanther-52199" value: { - dps: 25763.4273 - tps: 17023.77274 + dps: 26554.3463 + tps: 17757.16874 } } dps_results: { key: "TestDestruction-AllItems-Figurine-DreamOwl-52354" value: { - dps: 26422.15769 - tps: 17471.729 + dps: 27104.16243 + tps: 18147.67751 } } dps_results: { key: "TestDestruction-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 25521.20178 - tps: 16863.59298 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 27216.09239 - tps: 17948.32811 + dps: 27924.5896 + tps: 18635.04882 } } dps_results: { key: "TestDestruction-AllItems-Figurine-KingofBoars-52351" value: { - dps: 25896.41536 - tps: 17172.08324 + dps: 26557.56009 + tps: 17800.28947 } } dps_results: { key: "TestDestruction-AllItems-FleetShadowspiritDiamond" value: { - dps: 27135.7272 - tps: 17861.34206 + dps: 27902.8356 + tps: 18532.97189 } } dps_results: { key: "TestDestruction-AllItems-FluidDeath-58181" value: { - dps: 25787.65455 - tps: 17014.89453 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-ForlornShadowspiritDiamond" value: { - dps: 27196.74069 - tps: 17884.23904 + dps: 28004.8006 + tps: 18597.691 } } dps_results: { key: "TestDestruction-AllItems-FuryofAngerforge-59461" value: { - dps: 25973.82951 - tps: 17154.16491 + dps: 26651.33357 + tps: 17825.67411 } } dps_results: { key: "TestDestruction-AllItems-GaleofShadows-56138" value: { - dps: 26520.53872 - tps: 17478.63552 + dps: 27385.47423 + tps: 18304.56524 } } dps_results: { key: "TestDestruction-AllItems-GaleofShadows-56462" value: { - dps: 26734.92959 - tps: 17649.50028 + dps: 27382.79925 + tps: 18184.8976 } } dps_results: { key: "TestDestruction-AllItems-GearDetector-61462" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-GlowingTwilightScale-54589" value: { - dps: 26160.01951 - tps: 17285.46988 + dps: 26839.28223 + tps: 17944.39063 } } dps_results: { key: "TestDestruction-AllItems-GraceoftheHerald-55266" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-GraceoftheHerald-56295" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-HarmlightToken-63839" value: { - dps: 26418.63509 - tps: 17505.80595 + dps: 27082.92885 + tps: 18196.02821 } } dps_results: { key: "TestDestruction-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-HeartofIgnacious-59514" value: { - dps: 26772.16104 - tps: 17736.83199 + dps: 27439.33457 + tps: 18355.57555 } } dps_results: { key: "TestDestruction-AllItems-HeartofIgnacious-65110" value: { - dps: 26979.92604 - tps: 17895.67059 + dps: 27658.83658 + tps: 18497.96178 } } dps_results: { key: "TestDestruction-AllItems-HeartofRage-59224" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-HeartofRage-65072" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-HeartofSolace-55868" value: { - dps: 25867.89538 - tps: 17057.91508 + dps: 26715.95243 + tps: 17866.37532 } } dps_results: { key: "TestDestruction-AllItems-HeartofSolace-56393" value: { - dps: 25992.41686 - tps: 17169.81485 + dps: 26626.2112 + tps: 17693.99944 } } dps_results: { key: "TestDestruction-AllItems-HeartofThunder-55845" value: { - dps: 25554.56398 - tps: 16902.18935 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-HeartofThunder-56370" value: { - dps: 25554.59448 - tps: 16902.1316 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-HeartoftheVile-66969" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 27114.7081 - tps: 17849.49938 + dps: 27898.6529 + tps: 18525.16067 } } dps_results: { key: "TestDestruction-AllItems-ImpatienceofYouth-62464" value: { - dps: 25931.63404 - tps: 17197.76166 + dps: 26595.21039 + tps: 17828.15483 } } dps_results: { key: "TestDestruction-AllItems-ImpatienceofYouth-62469" value: { - dps: 25931.63404 - tps: 17197.76166 + dps: 26595.21039 + tps: 17828.15483 } } dps_results: { key: "TestDestruction-AllItems-ImpetuousQuery-55881" value: { - dps: 25795.98406 - tps: 17072.49968 + dps: 26566.9704 + tps: 17778.68516 } } dps_results: { key: "TestDestruction-AllItems-ImpetuousQuery-56406" value: { - dps: 25827.99813 - tps: 17095.83091 + dps: 26601.50084 + tps: 17804.22993 } } dps_results: { key: "TestDestruction-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 25547.45474 - tps: 16896.23685 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 26262.05851 - tps: 17382.9365 + dps: 26989.85931 + tps: 18044.89922 } } dps_results: { key: "TestDestruction-AllItems-JarofAncientRemedies-59354" value: { - dps: 25650.10958 - tps: 16971.02384 + dps: 26303.28339 + tps: 17608.5238 } } dps_results: { key: "TestDestruction-AllItems-JarofAncientRemedies-65029" value: { - dps: 25677.58787 - tps: 17000.43125 + dps: 26303.28339 + tps: 17611.51005 } } dps_results: { key: "TestDestruction-AllItems-JujuofNimbleness-63840" value: { - dps: 25779.24633 - tps: 17099.65031 + dps: 26503.30693 + tps: 17757.6423 } } dps_results: { key: "TestDestruction-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 25787.65455 - tps: 17014.89453 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 25787.65455 - tps: 17014.89453 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-KvaldirBattleStandard-59685" value: { - dps: 25731.70853 - tps: 17061.44155 + dps: 26477.62136 + tps: 17757.52758 } } dps_results: { key: "TestDestruction-AllItems-KvaldirBattleStandard-59689" value: { - dps: 25731.70853 - tps: 17061.44155 + dps: 26477.62136 + tps: 17757.52758 } } dps_results: { key: "TestDestruction-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 25671.73084 - tps: 16936.27315 + dps: 26446.21143 + tps: 17650.3466 } } dps_results: { key: "TestDestruction-AllItems-LeadenDespair-55816" value: { - dps: 25580.94896 - tps: 16930.98818 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-LeadenDespair-56347" value: { - dps: 25521.20178 - tps: 16863.59298 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-LeftEyeofRajh-56102" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-LeftEyeofRajh-56427" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-LicensetoSlay-58180" value: { - dps: 25787.65455 - tps: 17014.89453 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-MagnetiteMirror-55814" value: { - dps: 25566.04456 - tps: 16943.94174 + dps: 26274.10105 + tps: 17588.04907 } } dps_results: { key: "TestDestruction-AllItems-MagnetiteMirror-56345" value: { - dps: 25566.04456 - tps: 16943.94174 + dps: 26274.10105 + tps: 17588.04907 } } dps_results: { key: "TestDestruction-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 25530.76557 - tps: 16879.53686 + dps: 26303.28339 + tps: 17583.53607 } } dps_results: { key: "TestDestruction-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 25530.76557 - tps: 16879.53686 + dps: 26303.28339 + tps: 17583.53607 } } dps_results: { key: "TestDestruction-AllItems-MarkofKhardros-56132" value: { - dps: 25835.90416 - tps: 17144.08059 + dps: 26563.22926 + tps: 17802.54504 } } dps_results: { key: "TestDestruction-AllItems-MarkofKhardros-56458" value: { - dps: 25871.24291 - tps: 17170.28925 + dps: 26601.09129 + tps: 17830.6338 } } dps_results: { key: "TestDestruction-AllItems-MightoftheOcean-55251" value: { - dps: 25780.90667 - tps: 17043.71195 + dps: 26559.16741 + tps: 17758.1451 } } dps_results: { key: "TestDestruction-AllItems-MightoftheOcean-56285" value: { - dps: 25780.90667 - tps: 17043.71195 + dps: 26559.16741 + tps: 17758.1451 } } dps_results: { key: "TestDestruction-AllItems-MirrorofBrokenImages-62466" value: { - dps: 25862.92258 - tps: 17121.28316 + dps: 26639.17041 + tps: 17832.09695 } } dps_results: { key: "TestDestruction-AllItems-MirrorofBrokenImages-62471" value: { - dps: 25862.92258 - tps: 17121.28316 + dps: 26639.17041 + tps: 17832.09695 } } dps_results: { key: "TestDestruction-AllItems-MoonwellChalice-70142" value: { - dps: 27087.90612 - tps: 17946.69716 + dps: 27757.18047 + tps: 18613.05434 } } dps_results: { key: "TestDestruction-AllItems-Oremantle'sFavor-61448" value: { - dps: 25886.99881 - tps: 17103.34687 + dps: 26505.09991 + tps: 17709.63449 } } dps_results: { key: "TestDestruction-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 26433.36125 - tps: 17450.79323 + dps: 27147.45619 + tps: 18122.18761 } } dps_results: { key: "TestDestruction-AllItems-PorcelainCrab-55237" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-PorcelainCrab-56280" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 27070.69752 - tps: 17802.82271 + dps: 27843.97437 + tps: 18489.39336 } } dps_results: { key: "TestDestruction-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Rainsong-55854" value: { - dps: 25549.27951 - tps: 16897.94253 + dps: 26303.28339 + tps: 17583.56247 } } dps_results: { key: "TestDestruction-AllItems-Rainsong-56377" value: { - dps: 25549.27951 - tps: 16897.928 + dps: 26303.28339 + tps: 17583.54504 } } dps_results: { key: "TestDestruction-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 27351.07904 - tps: 18036.0622 + dps: 28129.83744 + tps: 18709.18697 } } dps_results: { key: "TestDestruction-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 27351.27136 - tps: 18035.73089 + dps: 28129.83744 + tps: 18709.17136 } } dps_results: { key: "TestDestruction-AllItems-RightEyeofRajh-56100" value: { - dps: 25787.65455 - tps: 17014.89453 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-RightEyeofRajh-56431" value: { - dps: 25787.65455 - tps: 17014.89453 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-SeaStar-55256" value: { - dps: 26030.36735 - tps: 17200.92965 + dps: 26699.17407 + tps: 17841.00146 } } dps_results: { key: "TestDestruction-AllItems-SeaStar-56290" value: { - dps: 26382.96415 - tps: 17401.99889 + dps: 27078.50481 + tps: 18066.46959 } } dps_results: { key: "TestDestruction-AllItems-ShadowflameRegalia" value: { - dps: 24768.68249 - tps: 16273.51965 + dps: 25775.23356 + tps: 17200.60719 } } dps_results: { key: "TestDestruction-AllItems-ShardofWoe-60233" value: { - dps: 26219.14431 - tps: 17242.04355 + dps: 26816.10326 + tps: 17881.71341 } } dps_results: { key: "TestDestruction-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 25577.63415 - tps: 16927.17101 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Skardyn'sGrace-56115" value: { - dps: 25937.23454 - tps: 17202.68006 + dps: 26618.24571 + tps: 17842.1155 } } dps_results: { key: "TestDestruction-AllItems-Skardyn'sGrace-56440" value: { - dps: 25979.09133 - tps: 17233.30777 + dps: 26665.22494 + tps: 17876.48092 } } dps_results: { key: "TestDestruction-AllItems-Sorrowsong-55879" value: { - dps: 26343.63662 - tps: 17435.06031 + dps: 27156.57925 + tps: 18172.37248 } } dps_results: { key: "TestDestruction-AllItems-Sorrowsong-56400" value: { - dps: 26448.10577 - tps: 17506.43447 + dps: 27269.21169 + tps: 18250.15758 } } dps_results: { key: "TestDestruction-AllItems-Soul'sAnguish-66994" value: { - dps: 25780.90667 - tps: 17043.71195 + dps: 26559.16741 + tps: 17758.1451 } } dps_results: { key: "TestDestruction-AllItems-SoulCasket-58183" value: { - dps: 27011.53096 - tps: 17842.51055 + dps: 27716.04637 + tps: 18496.2424 } } dps_results: { key: "TestDestruction-AllItems-Stonemother'sKiss-61411" value: { - dps: 26515.92945 - tps: 17497.23321 + dps: 27129.42407 + tps: 18126.11627 } } dps_results: { key: "TestDestruction-AllItems-StumpofTime-62465" value: { - dps: 26531.38518 - tps: 17487.35409 + dps: 27343.88768 + tps: 18238.45902 } } dps_results: { key: "TestDestruction-AllItems-StumpofTime-62470" value: { - dps: 26546.9063 - tps: 17482.84394 + dps: 27361.33428 + tps: 18232.8272 } } dps_results: { key: "TestDestruction-AllItems-SymbioticWorm-59332" value: { - dps: 25540.42316 - tps: 16886.31833 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-SymbioticWorm-65048" value: { - dps: 25556.23443 - tps: 16908.23173 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 26588.1451 - tps: 17593.03918 + dps: 27235.1248 + tps: 18226.64297 } } dps_results: { key: "TestDestruction-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-TearofBlood-55819" value: { - dps: 26273.28829 - tps: 17371.10974 + dps: 26934.83291 + tps: 18008.37256 } } dps_results: { key: "TestDestruction-AllItems-TearofBlood-56351" value: { - dps: 26499.8898 - tps: 17540.41411 + dps: 27138.93815 + tps: 18145.29934 } } dps_results: { key: "TestDestruction-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 26337.46923 - tps: 17415.22274 + dps: 27114.78033 + tps: 18127.13397 } } dps_results: { key: "TestDestruction-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 26607.97572 - tps: 17587.01228 + dps: 27386.91318 + tps: 18297.62974 } } dps_results: { key: "TestDestruction-AllItems-Theralion'sMirror-59519" value: { - dps: 27001.61003 - tps: 17853.3278 + dps: 27706.78259 + tps: 18562.4973 } } dps_results: { key: "TestDestruction-AllItems-Theralion'sMirror-65105" value: { - dps: 27218.98841 - tps: 18014.69749 + dps: 27885.35987 + tps: 18682.61529 } } dps_results: { key: "TestDestruction-AllItems-Throngus'sFinger-56121" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Throngus'sFinger-56449" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-Tia'sGrace-55874" value: { - dps: 25795.98406 - tps: 17072.49968 + dps: 26566.9704 + tps: 17778.68516 } } dps_results: { key: "TestDestruction-AllItems-Tia'sGrace-56394" value: { - dps: 25827.99813 - tps: 17095.83091 + dps: 26601.50084 + tps: 17804.22993 } } dps_results: { key: "TestDestruction-AllItems-TinyAbominationinaJar-50706" value: { - dps: 25743.51917 - tps: 17016.19712 + dps: 26522.37554 + tps: 17726.54755 } } dps_results: { key: "TestDestruction-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 26252.96284 - tps: 17348.63811 + dps: 27061.57112 + tps: 18168.58483 } } dps_results: { key: "TestDestruction-AllItems-UnheededWarning-59520" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-UnquenchableFlame-67101" value: { - dps: 25606.27239 - tps: 16948.31802 + dps: 26259.49526 + tps: 17579.64584 } } dps_results: { key: "TestDestruction-AllItems-UnsolvableRiddle-62463" value: { - dps: 25931.63404 - tps: 17197.76166 + dps: 26595.21039 + tps: 17828.15483 } } dps_results: { key: "TestDestruction-AllItems-UnsolvableRiddle-62468" value: { - dps: 25931.63404 - tps: 17197.76166 + dps: 26595.21039 + tps: 17828.15483 } } dps_results: { key: "TestDestruction-AllItems-UnsolvableRiddle-68709" value: { - dps: 25931.63404 - tps: 17197.76166 + dps: 26595.21039 + tps: 17828.15483 } } dps_results: { key: "TestDestruction-AllItems-VialofStolenMemories-59515" value: { - dps: 25540.42316 - tps: 16886.31833 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-VialofStolenMemories-65109" value: { - dps: 25556.23443 - tps: 16908.23173 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 25617.60086 - tps: 16968.79568 + dps: 26259.49526 + tps: 17579.68868 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 26507.00035 - tps: 17498.38361 + dps: 27181.95864 + tps: 18128.03766 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 25617.60086 - tps: 16968.79568 + dps: 26259.49526 + tps: 17579.68868 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 25799.27864 - tps: 17027.28245 + dps: 26592.49626 + tps: 17759.33052 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 26110.56715 - tps: 17316.81815 + dps: 26676.46777 + tps: 17747.48014 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 25975.76015 - tps: 17146.47445 + dps: 26671.04292 + tps: 17839.59767 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 25557.01933 - tps: 16884.08765 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 25887.10493 - tps: 17124.50407 + dps: 26659.05158 + tps: 17846.80455 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 25557.01933 - tps: 16884.08765 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 26343.07257 - tps: 17379.17641 + dps: 27106.36656 + tps: 18076.08496 } } dps_results: { key: "TestDestruction-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 25551.51293 - tps: 16894.33394 + dps: 26303.28339 + tps: 17583.61603 } } dps_results: { key: "TestDestruction-AllItems-WitchingHourglass-55787" value: { - dps: 26444.18206 - tps: 17473.66034 + dps: 27086.46417 + tps: 18115.42303 } } dps_results: { key: "TestDestruction-AllItems-WitchingHourglass-56320" value: { - dps: 26866.73295 - tps: 17747.44734 + dps: 27545.93917 + tps: 18478.74586 } } dps_results: { key: "TestDestruction-AllItems-World-QuellerFocus-63842" value: { - dps: 25831.84779 - tps: 17125.00612 + dps: 26488.53455 + tps: 17749.20297 } } dps_results: { key: "TestDestruction-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 25783.78768 - tps: 17096.13788 + dps: 26525.36723 + tps: 17774.45628 } } dps_results: { key: "TestDestruction-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 25783.78768 - tps: 17096.13788 + dps: 26525.36723 + tps: 17774.45628 } } dps_results: { key: "TestDestruction-Average-Default" value: { - dps: 27841.28356 - tps: 18383.89813 + dps: 28569.18346 + tps: 19127.95715 } } dps_results: { key: "TestDestruction-Settings-Goblin-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 28295.4293 - tps: 32421.77044 + dps: 29712.82895 + tps: 35107.99362 } } dps_results: { key: "TestDestruction-Settings-Goblin-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 27061.60377 - tps: 18008.83259 + dps: 27959.07326 + tps: 18870.79565 } } dps_results: { key: "TestDestruction-Settings-Goblin-p1-Destruction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 36626.99345 - tps: 22551.80784 + dps: 38254.11883 + tps: 23849.95936 } } dps_results: { key: "TestDestruction-Settings-Goblin-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17723.66891 - tps: 25959.49564 + dps: 18295.95976 + tps: 25934.64788 } } dps_results: { key: "TestDestruction-Settings-Goblin-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17723.66891 - tps: 11976.61018 + dps: 18295.95976 + tps: 12515.34863 } } dps_results: { key: "TestDestruction-Settings-Goblin-p1-Destruction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 20654.40685 - tps: 12329.35681 + dps: 21251.80935 + tps: 13050.10086 } } dps_results: { key: "TestDestruction-Settings-Human-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 28191.10477 - tps: 32246.55015 + dps: 29497.45889 + tps: 35028.90074 } } dps_results: { key: "TestDestruction-Settings-Human-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 26970.55979 - tps: 17974.02896 + dps: 27769.06116 + tps: 18669.32404 } } dps_results: { key: "TestDestruction-Settings-Human-p1-Destruction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 36527.51714 - tps: 22570.78608 + dps: 38036.84838 + tps: 23645.51269 } } dps_results: { key: "TestDestruction-Settings-Human-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17641.18414 - tps: 25765.2453 + dps: 18196.65145 + tps: 25714.8201 } } dps_results: { key: "TestDestruction-Settings-Human-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17641.18414 - tps: 11888.92941 + dps: 18196.65145 + tps: 12459.38401 } } dps_results: { key: "TestDestruction-Settings-Human-p1-Destruction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 20443.6041 - tps: 12103.71161 + dps: 21210.21944 + tps: 13034.53533 } } dps_results: { key: "TestDestruction-Settings-Orc-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 28699.46869 - tps: 32416.11154 + dps: 30022.94712 + tps: 35175.61532 } } dps_results: { key: "TestDestruction-Settings-Orc-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 27466.54534 - tps: 18098.27425 + dps: 28292.89524 + tps: 18819.27248 } } dps_results: { key: "TestDestruction-Settings-Orc-p1-Destruction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 37589.98932 - tps: 22876.16243 + dps: 39114.18129 + tps: 23951.47915 } } dps_results: { key: "TestDestruction-Settings-Orc-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17996.57018 - tps: 25927.26418 + dps: 18551.42711 + tps: 25863.80408 } } dps_results: { key: "TestDestruction-Settings-Orc-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17996.57018 - tps: 11995.08107 + dps: 18551.42711 + tps: 12552.24648 } } dps_results: { key: "TestDestruction-Settings-Orc-p1-Destruction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 21134.23303 - tps: 12275.62407 + dps: 21904.6944 + tps: 13208.46034 } } dps_results: { key: "TestDestruction-Settings-Troll-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongMultiTarget" value: { - dps: 28525.0072 - tps: 32611.50074 + dps: 29848.28358 + tps: 35237.19725 } } dps_results: { key: "TestDestruction-Settings-Troll-p1-Destruction Warlock-default-FullBuffs-25.0yards-LongSingleTarget" value: { - dps: 27306.11518 - tps: 18162.42632 + dps: 28092.24122 + tps: 18946.31036 } } dps_results: { key: "TestDestruction-Settings-Troll-p1-Destruction Warlock-default-FullBuffs-25.0yards-ShortSingleTarget" value: { - dps: 37857.28161 - tps: 23376.63766 + dps: 39144.3731 + tps: 24324.12019 } } dps_results: { key: "TestDestruction-Settings-Troll-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongMultiTarget" value: { - dps: 17872.32266 - tps: 26100.28541 + dps: 18423.34724 + tps: 26162.11099 } } dps_results: { key: "TestDestruction-Settings-Troll-p1-Destruction Warlock-default-NoBuffs-25.0yards-LongSingleTarget" value: { - dps: 17872.32266 - tps: 12112.93547 + dps: 18423.34724 + tps: 12628.36767 } } dps_results: { key: "TestDestruction-Settings-Troll-p1-Destruction Warlock-default-NoBuffs-25.0yards-ShortSingleTarget" value: { - dps: 21354.78181 - tps: 12879.98199 + dps: 22139.82956 + tps: 13756.33268 } } dps_results: { key: "TestDestruction-SwitchInFrontOfTarget-Default" value: { - dps: 27459.18128 - tps: 18098.27425 + dps: 28285.23661 + tps: 18819.27248 } } diff --git a/sim/warlock/destruction/destruction.go b/sim/warlock/destruction/destruction.go index 79fa4f4d34..892504ac4d 100644 --- a/sim/warlock/destruction/destruction.go +++ b/sim/warlock/destruction/destruction.go @@ -58,8 +58,8 @@ func (destruction *DestructionWarlock) ApplyTalents() { // Mastery: Fiery Apocalypse masteryMod := destruction.AddDynamicMod(core.SpellModConfig{ - Kind: core.SpellMod_DamageDone_Pct, - ClassMask: warlock.WarlockFireDamage, + Kind: core.SpellMod_DamageDone_Pct, + School: core.SpellSchoolFire, }) destruction.AddOnMasteryStatChanged(func(sim *core.Simulation, oldMastery float64, newMastery float64) { @@ -72,7 +72,7 @@ func (destruction *DestructionWarlock) ApplyTalents() { // Cataclysm destruction.AddStaticMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, - ClassMask: warlock.WarlockFireDamage, + School: core.SpellSchoolFire, FloatValue: 0.25, }) } diff --git a/sim/warlock/pets.go b/sim/warlock/pets.go index 929a0c1c78..0bd4d1ac7a 100644 --- a/sim/warlock/pets.go +++ b/sim/warlock/pets.go @@ -213,7 +213,7 @@ func (pet *WarlockPet) registerShadowBiteSpell() { activeDots := 0 for _, spell := range pet.Owner.Spellbook { - if spell.Matches(WarlockDoT) && spell.Dot(target).IsActive() { + if spell.Dot(target) != nil && spell.Dot(target).IsActive() { activeDots++ } } diff --git a/sim/warlock/shadowburn.go b/sim/warlock/shadowburn.go index ec60ac1edf..665d3e2c78 100644 --- a/sim/warlock/shadowburn.go +++ b/sim/warlock/shadowburn.go @@ -13,7 +13,7 @@ func (warlock *Warlock) registerShadowBurnSpell() { warlock.Shadowburn = warlock.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: 17877}, - SpellSchool: core.SpellSchoolShadow, + SpellSchool: core.SpellSchoolFire | core.SpellSchoolShadow, ProcMask: core.ProcMaskSpellDamage, Flags: core.SpellFlagAPL, ClassSpellMask: WarlockSpellShadowBurn, diff --git a/sim/warlock/soul_harvest.go b/sim/warlock/soul_harvest.go new file mode 100644 index 0000000000..f53131e9f3 --- /dev/null +++ b/sim/warlock/soul_harvest.go @@ -0,0 +1,39 @@ +package warlock + +import ( + "time" + + "github.com/wowsims/cata/sim/core" +) + +func (warlock *Warlock) registerSoulHarvest() { + warlock.RegisterSpell(core.SpellConfig{ + ActionID: core.ActionID{SpellID: 79268}, + SpellSchool: core.SpellSchoolShadow, + ProcMask: core.ProcMaskSpellHealing, + Flags: core.SpellFlagChanneled | core.SpellFlagAPL, + + Cast: core.CastConfig{DefaultCast: core.Cast{GCD: core.GCDDefault}}, + ExtraCastCondition: func(sim *core.Simulation, _ *core.Unit) bool { + return sim.CurrentTime <= 0 // only usable outside of combat + }, + Dot: core.DotConfig{ + SelfOnly: true, + Aura: core.Aura{Label: "Soul Harvest"}, + NumberOfTicks: 3, + TickLength: 3 * time.Second, + AffectedByCastSpeed: true, + OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { + warlock.SoulShards = min(warlock.SoulShards+1, 3) + if warlock.SoulShards >= 3 { + // cancel since we only ever use it to fill up soul shards + dot.Deactivate(sim) + } + }, + }, + + ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + spell.AOEDot().Apply(sim) + }, + }) +} diff --git a/sim/warlock/warlock.go b/sim/warlock/warlock.go index 1af9915d94..36708dab8f 100644 --- a/sim/warlock/warlock.go +++ b/sim/warlock/warlock.go @@ -77,6 +77,7 @@ func (warlock *Warlock) Initialize() { warlock.registerShadowBolt() warlock.registerShadowflame() warlock.registerSoulFire() + warlock.registerSoulHarvest() warlock.registerSoulburn() warlock.registerSummonFelHunter() warlock.registerSummonImp() @@ -124,7 +125,7 @@ func (warlock *Warlock) AddRaidBuffs(raidBuffs *proto.RaidBuffs) { } func (warlock *Warlock) Reset(sim *core.Simulation) { - warlock.SoulShards = 4 + warlock.SoulShards = 3 } func NewWarlock(character *core.Character, options *proto.Player, warlockOptions *proto.WarlockOptions) *Warlock { @@ -215,14 +216,14 @@ const ( WarlockShadowDamage = WarlockSpellCorruption | WarlockSpellUnstableAffliction | WarlockSpellHaunt | WarlockSpellDrainSoul | WarlockSpellDrainLife | WarlockSpellBaneOfDoom | WarlockSpellBaneOfAgony | WarlockSpellShadowBolt | WarlockSpellSeedOfCorruptionExposion | WarlockSpellHandOfGuldan | - WarlockSpellShadowflame | WarlockSpellFelFlame + WarlockSpellShadowflame | WarlockSpellFelFlame | WarlockSpellChaosBolt | WarlockSpellShadowBurn WarlockPeriodicShadowDamage = WarlockSpellCorruption | WarlockSpellUnstableAffliction | WarlockSpellDrainSoul | WarlockSpellDrainLife | WarlockSpellBaneOfDoom | WarlockSpellBaneOfAgony WarlockFireDamage = WarlockSpellConflagrate | WarlockSpellImmolate | WarlockSpellIncinerate | WarlockSpellSoulFire | WarlockSpellImmolationAura | WarlockSpellHandOfGuldan | WarlockSpellSearingPain | WarlockSpellImmolateDot | - WarlockSpellShadowflameDot | WarlockSpellFelFlame + WarlockSpellShadowflameDot | WarlockSpellFelFlame | WarlockSpellChaosBolt | WarlockSpellShadowBurn WarlockDoT = WarlockSpellCorruption | WarlockSpellUnstableAffliction | WarlockSpellDrainSoul | WarlockSpellDrainLife | WarlockSpellBaneOfDoom | WarlockSpellBaneOfAgony | WarlockSpellImmolateDot | diff --git a/sim/warrior/arms/TestArms.results b/sim/warrior/arms/TestArms.results index 1ab66c2702..e9c1fd3e36 100644 --- a/sim/warrior/arms/TestArms.results +++ b/sim/warrior/arms/TestArms.results @@ -37,1366 +37,1366 @@ character_stats_results: { dps_results: { key: "TestArms-AllItems-AgileShadowspiritDiamond" value: { - dps: 26418.41359 - tps: 18187.62918 + dps: 27101.50337 + tps: 18670.69303 } } dps_results: { key: "TestArms-AllItems-Althor'sAbacus-50366" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Anhuur'sHymnal-55889" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Anhuur'sHymnal-56407" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-AustereShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17889.19126 + dps: 26678.94926 + tps: 18382.19216 } } dps_results: { key: "TestArms-AllItems-BaubleofTrueBlood-50726" value: { - dps: 24870.11347 - tps: 16905.83468 - hps: 88.43435 + dps: 25728.72011 + tps: 17500.36384 + hps: 96.7093 } } dps_results: { key: "TestArms-AllItems-BedrockTalisman-58182" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-BellofEnragingResonance-59326" value: { - dps: 25418.53589 - tps: 17299.30617 + dps: 26282.41372 + tps: 17887.46233 } } dps_results: { key: "TestArms-AllItems-BellofEnragingResonance-65053" value: { - dps: 25481.47187 - tps: 17348.36842 + dps: 26331.97755 + tps: 17928.10757 } } dps_results: { key: "TestArms-AllItems-BindingPromise-67037" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 25137.41361 - tps: 17125.44859 + dps: 26145.04324 + tps: 17622.64629 } } dps_results: { key: "TestArms-AllItems-BloodofIsiset-55995" value: { - dps: 24911.49607 - tps: 17012.4207 + dps: 25873.4122 + tps: 17589.5921 } } dps_results: { key: "TestArms-AllItems-BloodofIsiset-56414" value: { - dps: 24935.51291 - tps: 17027.70354 + dps: 25827.25078 + tps: 17612.79218 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 25324.3464 - tps: 17236.13022 + dps: 26311.61823 + tps: 17896.10654 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 26256.60091 - tps: 17931.20488 + dps: 26790.80756 + tps: 18198.90471 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 25345.41714 - tps: 17259.17274 + dps: 26241.58055 + tps: 17856.06707 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 25332.15321 - tps: 17184.69468 + dps: 26149.52358 + tps: 17784.91455 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 25688.30318 - tps: 17451.11271 + dps: 26668.327 + tps: 18144.13629 } } dps_results: { key: "TestArms-AllItems-BottledLightning-66879" value: { - dps: 25121.47674 - tps: 17040.96991 + dps: 25937.02282 + tps: 17647.8269 } } dps_results: { key: "TestArms-AllItems-BracingShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17531.49991 + dps: 26678.94926 + tps: 18014.64094 } } dps_results: { key: "TestArms-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 27003.09292 - tps: 18578.15232 + dps: 27720.26553 + tps: 19083.30169 } } dps_results: { key: "TestArms-AllItems-BurningShadowspiritDiamond" value: { - dps: 26332.13164 - tps: 18121.53543 + dps: 27037.20498 + tps: 18619.67301 } } dps_results: { key: "TestArms-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 26445.188 - tps: 18207.24012 + dps: 27133.60591 + tps: 18690.45779 } } dps_results: { key: "TestArms-AllItems-ColossalDragonplateArmor" value: { - dps: 23225.31435 - tps: 16189.45233 + dps: 23874.67794 + tps: 16514.45516 } } dps_results: { key: "TestArms-AllItems-ColossalDragonplateBattlegear" value: { - dps: 26152.66077 - tps: 18111.40419 + dps: 26954.62414 + tps: 18528.81824 } } dps_results: { key: "TestArms-AllItems-CoreofRipeness-58184" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-CorpseTongueCoin-50349" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-CrushingWeight-59506" value: { - dps: 26203.9242 - tps: 17767.63006 + dps: 26780.80836 + tps: 18144.84809 } } dps_results: { key: "TestArms-AllItems-CrushingWeight-65118" value: { - dps: 26305.40488 - tps: 17972.8559 + dps: 27316.58375 + tps: 18566.72038 } } dps_results: { key: "TestArms-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 26004.12897 - tps: 17930.47654 + dps: 26801.8182 + tps: 18441.2918 } } dps_results: { key: "TestArms-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 25059.2723 - tps: 17215.11999 + dps: 26139.31401 + tps: 17754.68823 } } dps_results: { key: "TestArms-AllItems-Deathbringer'sWill-50363" value: { - dps: 25580.33487 - tps: 17453.98152 + dps: 26503.15812 + tps: 18015.18838 } } dps_results: { key: "TestArms-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 26088.91033 - tps: 17971.65745 + dps: 26771.66747 + tps: 18450.39478 } } dps_results: { key: "TestArms-AllItems-DislodgedForeignObject-50348" value: { - dps: 25229.74832 - tps: 17181.42433 + dps: 25937.65055 + tps: 17648.77971 } } dps_results: { key: "TestArms-AllItems-EarthenBattleplate" value: { - dps: 23003.25328 - tps: 15849.19757 + dps: 23740.86591 + tps: 16331.31727 } } dps_results: { key: "TestArms-AllItems-EarthenWarplate" value: { - dps: 25084.08408 - tps: 17331.31942 + dps: 26287.9271 + tps: 17923.86901 } } dps_results: { key: "TestArms-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17889.19126 + dps: 26678.94926 + tps: 18382.19216 } } dps_results: { key: "TestArms-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-EmberShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17889.19126 + dps: 26678.94926 + tps: 18382.19216 } } dps_results: { key: "TestArms-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 26088.91033 - tps: 17971.65745 + dps: 26771.66747 + tps: 18450.39478 } } dps_results: { key: "TestArms-AllItems-EssenceoftheCyclone-59473" value: { - dps: 25855.79106 - tps: 17599.23594 + dps: 26677.55514 + tps: 18158.25049 } } dps_results: { key: "TestArms-AllItems-EssenceoftheCyclone-65140" value: { - dps: 25900.23005 - tps: 17636.56228 + dps: 26829.61723 + tps: 18224.19529 } } dps_results: { key: "TestArms-AllItems-EternalShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17889.19126 + dps: 26678.94926 + tps: 18382.19216 } } dps_results: { key: "TestArms-AllItems-FallofMortality-59500" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-FallofMortality-65124" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Figurine-DemonPanther-52199" value: { - dps: 25302.02016 - tps: 17215.75322 + dps: 26194.30441 + tps: 17838.09682 } } dps_results: { key: "TestArms-AllItems-Figurine-DreamOwl-52354" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Figurine-KingofBoars-52351" value: { - dps: 26222.38162 - tps: 17981.49114 + dps: 26806.32663 + tps: 18255.05079 } } dps_results: { key: "TestArms-AllItems-FleetShadowspiritDiamond" value: { - dps: 26002.2066 - tps: 17881.20325 + dps: 26843.01346 + tps: 18396.84338 } } dps_results: { key: "TestArms-AllItems-FluidDeath-58181" value: { - dps: 25332.50733 - tps: 17251.49975 + dps: 26228.42434 + tps: 17851.03292 } } dps_results: { key: "TestArms-AllItems-ForlornShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17889.19126 + dps: 26678.94926 + tps: 18382.19216 } } dps_results: { key: "TestArms-AllItems-FuryofAngerforge-59461" value: { - dps: 26568.43324 - tps: 18011.48481 + dps: 27601.20649 + tps: 18743.1575 } } dps_results: { key: "TestArms-AllItems-GaleofShadows-56138" value: { - dps: 25240.2919 - tps: 17248.76165 + dps: 25829.02636 + tps: 17483.92623 } } dps_results: { key: "TestArms-AllItems-GaleofShadows-56462" value: { - dps: 25327.05437 - tps: 17269.15818 + dps: 25979.67133 + tps: 17626.65181 } } dps_results: { key: "TestArms-AllItems-GearDetector-61462" value: { - dps: 25350.81908 - tps: 17330.44938 + dps: 26294.8678 + tps: 17761.60387 } } dps_results: { key: "TestArms-AllItems-GlowingTwilightScale-54589" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-GraceoftheHerald-55266" value: { - dps: 25296.60672 - tps: 17222.47745 + dps: 26137.38357 + tps: 17795.2672 } } dps_results: { key: "TestArms-AllItems-GraceoftheHerald-56295" value: { - dps: 25574.66007 - tps: 17417.0404 + dps: 26398.54204 + tps: 17989.46508 } } dps_results: { key: "TestArms-AllItems-HarmlightToken-63839" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 25795.47487 - tps: 17600.40121 + dps: 26489.80114 + tps: 17947.66146 } } dps_results: { key: "TestArms-AllItems-HeartofIgnacious-59514" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-HeartofIgnacious-65110" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-HeartofRage-59224" value: { - dps: 26042.95989 - tps: 17803.90822 + dps: 26961.88106 + tps: 18318.86028 } } dps_results: { key: "TestArms-AllItems-HeartofRage-65072" value: { - dps: 26232.44403 - tps: 17956.39627 + dps: 27103.06907 + tps: 18451.12274 } } dps_results: { key: "TestArms-AllItems-HeartofSolace-55868" value: { - dps: 25240.2919 - tps: 17248.76165 + dps: 25829.02636 + tps: 17483.92623 } } dps_results: { key: "TestArms-AllItems-HeartofSolace-56393" value: { - dps: 26346.93974 - tps: 18030.1804 + dps: 26983.43034 + tps: 18360.18741 } } dps_results: { key: "TestArms-AllItems-HeartofThunder-55845" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-HeartofThunder-56370" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-HeartoftheVile-66969" value: { - dps: 25340.1178 - tps: 17249.83883 + dps: 26226.31772 + tps: 17841.90591 } } dps_results: { key: "TestArms-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 26088.91033 - tps: 17971.65745 + dps: 26771.66747 + tps: 18450.39478 } } dps_results: { key: "TestArms-AllItems-ImpatienceofYouth-62464" value: { - dps: 26527.20757 - tps: 18304.63835 + dps: 27267.05839 + tps: 18491.80035 } } dps_results: { key: "TestArms-AllItems-ImpatienceofYouth-62469" value: { - dps: 26527.20757 - tps: 18304.63835 + dps: 27267.05839 + tps: 18491.80035 } } dps_results: { key: "TestArms-AllItems-ImpetuousQuery-55881" value: { - dps: 24911.49607 - tps: 17012.4207 + dps: 25873.4122 + tps: 17589.5921 } } dps_results: { key: "TestArms-AllItems-ImpetuousQuery-56406" value: { - dps: 24935.51291 - tps: 17027.70354 + dps: 25827.25078 + tps: 17612.79218 } } dps_results: { key: "TestArms-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 24990.64421 - tps: 17043.13424 + dps: 25989.9591 + tps: 17476.05011 } } dps_results: { key: "TestArms-AllItems-JarofAncientRemedies-59354" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-JarofAncientRemedies-65029" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-JujuofNimbleness-63840" value: { - dps: 25137.41361 - tps: 17125.44859 + dps: 26145.04324 + tps: 17622.64629 } } dps_results: { key: "TestArms-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 25213.47788 - tps: 17106.72297 + dps: 26074.7586 + tps: 17740.03655 } } dps_results: { key: "TestArms-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 25358.14748 - tps: 17223.83892 + dps: 26136.18895 + tps: 17795.35851 } } dps_results: { key: "TestArms-AllItems-KvaldirBattleStandard-59685" value: { - dps: 25903.77811 - tps: 17682.52825 + dps: 26395.62628 + tps: 17885.1285 } } dps_results: { key: "TestArms-AllItems-KvaldirBattleStandard-59689" value: { - dps: 25903.77811 - tps: 17682.52825 + dps: 26395.62628 + tps: 17885.1285 } } dps_results: { key: "TestArms-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 24891.39824 - tps: 17035.83955 + dps: 25819.97847 + tps: 17610.15009 } } dps_results: { key: "TestArms-AllItems-LastWord-50708" value: { - dps: 26782.57884 - tps: 18420.89143 + dps: 27517.43982 + tps: 18945.43787 } } dps_results: { key: "TestArms-AllItems-LeadenDespair-55816" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-LeadenDespair-56347" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-LeftEyeofRajh-56102" value: { - dps: 25188.56655 - tps: 17168.93469 + dps: 26251.7125 + tps: 17764.45518 } } dps_results: { key: "TestArms-AllItems-LeftEyeofRajh-56427" value: { - dps: 25281.46923 - tps: 17218.02652 + dps: 26240.95599 + tps: 17757.99734 } } dps_results: { key: "TestArms-AllItems-MagnetiteMirror-55814" value: { - dps: 25805.61223 - tps: 17632.807 + dps: 26494.85919 + tps: 17939.24923 } } dps_results: { key: "TestArms-AllItems-MagnetiteMirror-56345" value: { - dps: 26096.25086 - tps: 17851.44938 + dps: 26714.0202 + tps: 18083.77111 } } dps_results: { key: "TestArms-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-MarkofKhardros-56132" value: { - dps: 25933.87576 - tps: 17702.54173 + dps: 26711.62143 + tps: 18117.28419 } } dps_results: { key: "TestArms-AllItems-MarkofKhardros-56458" value: { - dps: 26220.66681 - tps: 17829.53301 + dps: 26779.13824 + tps: 18156.88281 } } dps_results: { key: "TestArms-AllItems-MightoftheOcean-55251" value: { - dps: 25501.19084 - tps: 17383.95138 + dps: 26203.45146 + tps: 17816.88187 } } dps_results: { key: "TestArms-AllItems-MightoftheOcean-56285" value: { - dps: 26045.64975 - tps: 17796.44421 + dps: 26613.02361 + tps: 18089.95625 } } dps_results: { key: "TestArms-AllItems-MirrorofBrokenImages-62466" value: { - dps: 25059.2723 - tps: 17215.11999 + dps: 26139.31401 + tps: 17754.68823 } } dps_results: { key: "TestArms-AllItems-MirrorofBrokenImages-62471" value: { - dps: 25059.2723 - tps: 17215.11999 + dps: 26139.31401 + tps: 17754.68823 } } dps_results: { key: "TestArms-AllItems-MoltenGiantBattleplate" value: { - dps: 23933.07029 - tps: 16600.39663 + dps: 24376.02377 + tps: 16875.75464 } } dps_results: { key: "TestArms-AllItems-MoltenGiantWarplate" value: { - dps: 28727.49427 - tps: 20050.64039 + dps: 29771.69864 + tps: 20726.17838 } } dps_results: { key: "TestArms-AllItems-MoonwellChalice-70142" value: { - dps: 25161.0472 - tps: 17298.29962 + dps: 25938.45345 + tps: 17641.84581 } } dps_results: { key: "TestArms-AllItems-Oremantle'sFavor-61448" value: { - dps: 25910.34038 - tps: 17543.13735 + dps: 26705.62608 + tps: 18180.06068 } } dps_results: { key: "TestArms-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 25201.77697 - tps: 17144.19554 + dps: 26031.41982 + tps: 17710.99848 } } dps_results: { key: "TestArms-AllItems-PorcelainCrab-55237" value: { - dps: 25058.81125 - tps: 17058.72438 + dps: 25825.77048 + tps: 17529.94942 } } dps_results: { key: "TestArms-AllItems-PorcelainCrab-56280" value: { - dps: 25205.00981 - tps: 17344.51645 + dps: 25949.77263 + tps: 17836.01127 } } dps_results: { key: "TestArms-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 25980.4942 - tps: 17889.19126 + dps: 26678.94926 + tps: 18382.19216 } } dps_results: { key: "TestArms-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 25620.21438 - tps: 17387.1222 + dps: 26484.27198 + tps: 18065.07677 } } dps_results: { key: "TestArms-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 25642.98326 - tps: 17497.32743 + dps: 26531.31909 + tps: 17999.52103 } } dps_results: { key: "TestArms-AllItems-Rainsong-55854" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Rainsong-56377" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 26483.72959 - tps: 18224.7041 + dps: 27191.53665 + tps: 18724.42594 } } dps_results: { key: "TestArms-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 26332.13164 - tps: 18121.53543 + dps: 27037.20498 + tps: 18619.67301 } } dps_results: { key: "TestArms-AllItems-RightEyeofRajh-56100" value: { - dps: 25633.16495 - tps: 17412.12211 + dps: 26583.28015 + tps: 18084.73488 } } dps_results: { key: "TestArms-AllItems-RightEyeofRajh-56431" value: { - dps: 25758.24828 - tps: 17504.02548 + dps: 26678.28696 + tps: 18145.38358 } } dps_results: { key: "TestArms-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 25364.50022 - tps: 17332.78807 + dps: 26112.11091 + tps: 17710.29755 } } dps_results: { key: "TestArms-AllItems-SeaStar-55256" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-SeaStar-56290" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Shadowmourne-49623" value: { - dps: 27804.8131 - tps: 19299.37236 + dps: 28916.10303 + tps: 19883.5509 } } dps_results: { key: "TestArms-AllItems-ShardofWoe-60233" value: { - dps: 25176.96718 - tps: 17230.95081 + dps: 26126.78598 + tps: 17713.66011 } } dps_results: { key: "TestArms-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 25754.82584 - tps: 17600.45527 + dps: 26507.91458 + tps: 18046.22842 } } dps_results: { key: "TestArms-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Skardyn'sGrace-56115" value: { - dps: 25471.51626 - tps: 17403.70828 + dps: 26257.14205 + tps: 17817.53031 } } dps_results: { key: "TestArms-AllItems-Skardyn'sGrace-56440" value: { - dps: 25582.14998 - tps: 17547.63078 + dps: 26347.64855 + tps: 17909.27295 } } dps_results: { key: "TestArms-AllItems-Sorrowsong-55879" value: { - dps: 24911.49607 - tps: 17012.4207 + dps: 25873.4122 + tps: 17589.5921 } } dps_results: { key: "TestArms-AllItems-Sorrowsong-56400" value: { - dps: 24935.51291 - tps: 17027.70354 + dps: 25827.25078 + tps: 17612.79218 } } dps_results: { key: "TestArms-AllItems-Soul'sAnguish-66994" value: { - dps: 25501.19084 - tps: 17383.95138 + dps: 26203.45146 + tps: 17816.88187 } } dps_results: { key: "TestArms-AllItems-SoulCasket-58183" value: { - dps: 25059.2723 - tps: 17215.11999 + dps: 26139.31401 + tps: 17754.68823 } } dps_results: { key: "TestArms-AllItems-Stonemother'sKiss-61411" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-StumpofTime-62465" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-StumpofTime-62470" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-SymbioticWorm-59332" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-SymbioticWorm-65048" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 25614.03297 - tps: 17544.33951 + dps: 26624.68911 + tps: 17988.51228 } } dps_results: { key: "TestArms-AllItems-TearofBlood-55819" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-TearofBlood-56351" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 24979.6391 - tps: 17022.04552 + dps: 25919.41424 + tps: 17454.74362 } } dps_results: { key: "TestArms-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 24935.51291 - tps: 17027.70354 + dps: 25827.25078 + tps: 17612.79218 } } dps_results: { key: "TestArms-AllItems-Theralion'sMirror-59519" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Theralion'sMirror-65105" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Throngus'sFinger-56121" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Throngus'sFinger-56449" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-Tia'sGrace-55874" value: { - dps: 25368.63459 - tps: 17326.79998 + dps: 26301.66278 + tps: 17901.83414 } } dps_results: { key: "TestArms-AllItems-Tia'sGrace-56394" value: { - dps: 25314.85515 - tps: 17326.77156 + dps: 26285.87054 + tps: 17948.91239 } } dps_results: { key: "TestArms-AllItems-TinyAbominationinaJar-50706" value: { - dps: 25638.8455 - tps: 17508.90273 + dps: 26627.96073 + tps: 18160.27016 } } dps_results: { key: "TestArms-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-UnheededWarning-59520" value: { - dps: 25794.83924 - tps: 17572.98345 + dps: 26631.59648 + tps: 18121.04467 } } dps_results: { key: "TestArms-AllItems-UnquenchableFlame-67101" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-UnsolvableRiddle-62463" value: { - dps: 25641.96452 - tps: 17611.54619 + dps: 26774.43813 + tps: 18173.5732 } } dps_results: { key: "TestArms-AllItems-UnsolvableRiddle-62468" value: { - dps: 25641.96452 - tps: 17611.54619 + dps: 26774.43813 + tps: 18173.5732 } } dps_results: { key: "TestArms-AllItems-UnsolvableRiddle-68709" value: { - dps: 25641.96452 - tps: 17611.54619 + dps: 26774.43813 + tps: 18173.5732 } } dps_results: { key: "TestArms-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 14606.84563 - tps: 9573.85157 + dps: 14788.9171 + tps: 9700.22142 } } dps_results: { key: "TestArms-AllItems-VialofStolenMemories-59515" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-VialofStolenMemories-65109" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 25497.73462 - tps: 17263.95078 + dps: 26242.00577 + tps: 17860.9414 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 26334.13475 - tps: 17988.54466 + dps: 26850.2006 + tps: 18237.96785 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 25295.06694 - tps: 17204.62706 + dps: 25966.13325 + tps: 17670.53429 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 25446.40884 - tps: 17320.43097 + dps: 26291.50764 + tps: 17895.04426 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 24912.93644 - tps: 16961.26255 + dps: 25821.72182 + tps: 17495.36058 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 25106.03449 - tps: 17176.38651 + dps: 26176.8138 + tps: 17776.5494 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 25380.20543 - tps: 17218.31136 + dps: 26282.00507 + tps: 17867.4441 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 25802.9342 - tps: 17535.81406 + dps: 26724.96316 + tps: 18184.27586 } } dps_results: { key: "TestArms-AllItems-WitchingHourglass-55787" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-WitchingHourglass-56320" value: { - dps: 24870.11347 - tps: 16905.83468 + dps: 25728.72011 + tps: 17500.36384 } } dps_results: { key: "TestArms-AllItems-World-QuellerFocus-63842" value: { - dps: 24932.59013 - tps: 16966.35183 + dps: 25909.01608 + tps: 17446.40324 } } dps_results: { key: "TestArms-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 24998.27509 - tps: 17111.97644 + dps: 25993.91851 + tps: 17675.82342 } } dps_results: { key: "TestArms-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 24998.27509 - tps: 17111.97644 + dps: 25993.91851 + tps: 17675.82342 } } dps_results: { key: "TestArms-Average-Default" value: { - dps: 26426.55001 - tps: 18157.89371 + dps: 27251.87668 + tps: 18658.04598 } } dps_results: { key: "TestArms-Settings-Orc-preraid_arms-Basic-arms-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 55920.92457 - tps: 29740.1868 + dps: 57700.22485 + tps: 30860.43171 } } dps_results: { key: "TestArms-Settings-Orc-preraid_arms-Basic-arms-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 26483.72959 - tps: 18224.7041 + dps: 27191.53665 + tps: 18724.42594 } } dps_results: { key: "TestArms-Settings-Orc-preraid_arms-Basic-arms-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 31092.16389 - tps: 21613.7219 + dps: 31655.78028 + tps: 22308.50475 } } dps_results: { key: "TestArms-Settings-Orc-preraid_arms-Basic-arms-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 35183.16633 - tps: 17443.42739 + dps: 36499.3548 + tps: 18565.35486 } } dps_results: { key: "TestArms-Settings-Orc-preraid_arms-Basic-arms-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 16072.84803 - tps: 10692.05663 + dps: 17274.77122 + tps: 11746.20432 } } dps_results: { key: "TestArms-Settings-Orc-preraid_arms-Basic-arms-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 17474.49577 - tps: 11645.2779 + dps: 18957.17517 + tps: 12909.11734 } } dps_results: { key: "TestArms-Settings-Worgen-preraid_arms-Basic-arms-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 55761.71123 - tps: 29515.98175 + dps: 57755.29914 + tps: 30704.25531 } } dps_results: { key: "TestArms-Settings-Worgen-preraid_arms-Basic-arms-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 26512.06333 - tps: 18184.0697 + dps: 27229.72045 + tps: 18742.45193 } } dps_results: { key: "TestArms-Settings-Worgen-preraid_arms-Basic-arms-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 30730.30255 - tps: 21316.25599 + dps: 31462.05546 + tps: 22135.59355 } } dps_results: { key: "TestArms-Settings-Worgen-preraid_arms-Basic-arms-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 35142.20949 - tps: 17238.7231 + dps: 36588.93004 + tps: 18515.83652 } } dps_results: { key: "TestArms-Settings-Worgen-preraid_arms-Basic-arms-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 16002.14477 - tps: 10625.81904 + dps: 17356.4599 + tps: 11772.33679 } } dps_results: { key: "TestArms-Settings-Worgen-preraid_arms-Basic-arms-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 17339.36758 - tps: 11526.86522 + dps: 18916.20533 + tps: 12873.13127 } } dps_results: { key: "TestArms-SwitchInFrontOfTarget-Default" value: { - dps: 24303.79759 - tps: 16928.18648 + dps: 24861.16629 + tps: 17178.29705 } } diff --git a/sim/warrior/arms/blood_frenzy.go b/sim/warrior/arms/blood_frenzy.go index f99869ea1b..990533467c 100644 --- a/sim/warrior/arms/blood_frenzy.go +++ b/sim/warrior/arms/blood_frenzy.go @@ -34,9 +34,9 @@ func (war *ArmsWarrior) applyBloodFrenzy() { war.AddRage(sim, 20, bfRageMetrics) }, }) - aura := core.MakeProcTriggerAura(&war.Unit, core.ProcTrigger{ + core.MakeProcTriggerAura(&war.Unit, core.ProcTrigger{ Name: "Blood Frenzy/Trauma Debuff Trigger", - Callback: core.CallbackOnSpellHitDealt, + Callback: core.CallbackOnSpellHitDealt | core.CallbackOnPeriodicDamageDealt, SpellFlags: warrior.SpellFlagBleed, Outcome: core.OutcomeLanded, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { @@ -44,22 +44,16 @@ func (war *ArmsWarrior) applyBloodFrenzy() { // Apply Blood Frenzy, it lasts as long as the dot is on the target bf := bfAuras.Get(result.Target) + + //leave the duration field in its original state but apply the aura with the modified duration + oldDuration := bf.Duration bf.Duration = dot.TickLength * time.Duration(dot.NumberOfTicks) bf.Activate(sim) + bf.Duration = oldDuration // Apply Trauma, has fixed duration regardless of bleeds trauma := traumaAuras.Get(result.Target) trauma.Activate(sim) }, }) - aura.OnReset = func(aura *core.Aura, sim *core.Simulation) { - bfAuras = war.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { - return core.BloodFrenzyAura(target, war.Talents.BloodFrenzy) - }) - - // Trauma is also applied by the Blood Frenzy talent in Cata - traumaAuras = war.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { - return core.TraumaAura(target, war.Talents.BloodFrenzy) - }) - } } diff --git a/sim/warrior/arms/talents.go b/sim/warrior/arms/talents.go index 45eaf198e1..d44311eada 100644 --- a/sim/warrior/arms/talents.go +++ b/sim/warrior/arms/talents.go @@ -122,7 +122,11 @@ func (war *ArmsWarrior) TriggerSlaughter(sim *core.Simulation, target *core.Unit rend := war.Rend.Dot(target) if rend != nil && rend.IsActive() { - rend.Refresh(sim) + if rend.NextTickAt() == sim.CurrentTime { + rend.TickOnce(sim) + } + rend.Apply(sim) + rend.TickOnce(sim) } if !war.slaughter.IsActive() { diff --git a/sim/warrior/fury/TestFury.results b/sim/warrior/fury/TestFury.results index ada20bcd7c..c379012734 100644 --- a/sim/warrior/fury/TestFury.results +++ b/sim/warrior/fury/TestFury.results @@ -37,1311 +37,1311 @@ character_stats_results: { dps_results: { key: "TestFury-AllItems-AgileShadowspiritDiamond" value: { - dps: 27066.93101 - tps: 23252.40091 + dps: 28149.60825 + tps: 24179.93959 } } dps_results: { key: "TestFury-AllItems-Althor'sAbacus-50366" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Anhuur'sHymnal-55889" value: { - dps: 25917.86721 - tps: 22189.58926 + dps: 26954.5819 + tps: 23074.55373 } } dps_results: { key: "TestFury-AllItems-Anhuur'sHymnal-56407" value: { - dps: 25885.50448 - tps: 22202.3268 + dps: 26920.92466 + tps: 23087.78823 } } dps_results: { key: "TestFury-AllItems-AustereShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 23029.01355 + dps: 27777.33802 + tps: 23947.60428 } } dps_results: { key: "TestFury-AllItems-BaubleofTrueBlood-50726" value: { - dps: 25347.11149 - tps: 21716.47342 - hps: 88.43435 + dps: 26360.99595 + tps: 22582.58718 + hps: 96.7093 } } dps_results: { key: "TestFury-AllItems-BedrockTalisman-58182" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-BellofEnragingResonance-59326" value: { - dps: 26405.59758 - tps: 22606.09865 + dps: 27461.82148 + tps: 23507.7987 } } dps_results: { key: "TestFury-AllItems-BellofEnragingResonance-65053" value: { - dps: 26290.49431 - tps: 22525.63734 + dps: 27342.11408 + tps: 23424.11402 } } dps_results: { key: "TestFury-AllItems-BindingPromise-67037" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-BlackBruise-50692" value: { - dps: 25530.41414 - tps: 21984.34636 + dps: 26551.6307 + tps: 22861.22744 } } dps_results: { key: "TestFury-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 25972.57381 - tps: 22233.12341 + dps: 27011.47677 + tps: 23119.87007 } } dps_results: { key: "TestFury-AllItems-BloodofIsiset-55995" value: { - dps: 25710.97251 - tps: 21975.12596 + dps: 26739.41142 + tps: 22851.58796 } } dps_results: { key: "TestFury-AllItems-BloodofIsiset-56414" value: { - dps: 25776.9774 - tps: 22007.76027 + dps: 26808.05649 + tps: 22885.52383 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 25986.82272 - tps: 22298.17398 + dps: 27026.29563 + tps: 23187.50841 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 26555.03177 - tps: 22681.17682 + dps: 27617.23304 + tps: 23585.87872 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 26229.52533 - tps: 22419.94531 + dps: 27278.70635 + tps: 23314.20577 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 25973.15231 - tps: 22226.00191 + dps: 27012.0784 + tps: 23112.45416 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 26313.32567 - tps: 22544.27061 + dps: 27365.85869 + tps: 23443.49626 } } dps_results: { key: "TestFury-AllItems-BottledLightning-66879" value: { - dps: 25718.42566 - tps: 21943.92779 + dps: 26747.16269 + tps: 22819.13943 } } dps_results: { key: "TestFury-AllItems-BracingShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 22568.49862 + dps: 27777.33802 + tps: 23468.71754 } } dps_results: { key: "TestFury-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 27188.37566 - tps: 23437.51925 + dps: 28275.91069 + tps: 24372.45021 } } dps_results: { key: "TestFury-AllItems-BurningShadowspiritDiamond" value: { - dps: 27015.63851 - tps: 23288.5948 + dps: 28096.26405 + tps: 24217.56878 } } dps_results: { key: "TestFury-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 27123.28217 - tps: 23328.46892 + dps: 28208.21345 + tps: 24259.03445 } } dps_results: { key: "TestFury-AllItems-ColossalDragonplateArmor" value: { - dps: 22764.31774 - tps: 19159.04934 + dps: 23674.89045 + tps: 19923.20645 } } dps_results: { key: "TestFury-AllItems-ColossalDragonplateBattlegear" value: { - dps: 25526.51309 - tps: 21759.41202 + dps: 26547.57361 + tps: 22627.36657 } } dps_results: { key: "TestFury-AllItems-CoreofRipeness-58184" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-CorpseTongueCoin-50349" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-CrushingWeight-59506" value: { - dps: 27013.91744 - tps: 23115.6255 + dps: 28094.47414 + tps: 24037.62406 } } dps_results: { key: "TestFury-AllItems-CrushingWeight-65118" value: { - dps: 27204.24772 - tps: 23376.78282 + dps: 28292.41763 + tps: 24309.17599 } } dps_results: { key: "TestFury-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 27026.95191 - tps: 23247.48342 + dps: 28085.91556 + tps: 24152.73522 } } dps_results: { key: "TestFury-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 26594.59238 - tps: 22904.61347 + dps: 27636.0567 + tps: 23795.90337 } } dps_results: { key: "TestFury-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 25919.90849 - tps: 22077.54866 + dps: 26956.70483 + tps: 22958.08282 } } dps_results: { key: "TestFury-AllItems-Deathbringer'sWill-50363" value: { - dps: 26318.37567 - tps: 22662.36437 + dps: 27371.1107 + tps: 23566.27377 } } dps_results: { key: "TestFury-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 26809.81942 - tps: 23066.16246 + dps: 27882.21219 + tps: 23986.23573 } } dps_results: { key: "TestFury-AllItems-DislodgedForeignObject-50348" value: { - dps: 25850.44751 - tps: 22173.14886 + dps: 26884.46541 + tps: 23057.47789 } } dps_results: { key: "TestFury-AllItems-EarthenBattleplate" value: { - dps: 22318.23457 - tps: 18860.37919 + dps: 23210.96395 + tps: 19612.57525 } } dps_results: { key: "TestFury-AllItems-EarthenWarplate" value: { - dps: 24893.00992 - tps: 21269.25405 + dps: 25888.73032 + tps: 22117.5517 } } dps_results: { key: "TestFury-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 23029.01355 + dps: 27777.33802 + tps: 23947.60428 } } dps_results: { key: "TestFury-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-EmberShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 23029.01355 + dps: 27777.33802 + tps: 23947.60428 } } dps_results: { key: "TestFury-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 26809.81942 - tps: 23066.16246 + dps: 27882.21219 + tps: 23986.23573 } } dps_results: { key: "TestFury-AllItems-EssenceoftheCyclone-59473" value: { - dps: 26814.53269 - tps: 23010.41633 + dps: 27887.114 + tps: 23928.21491 } } dps_results: { key: "TestFury-AllItems-EssenceoftheCyclone-65140" value: { - dps: 26872.18687 - tps: 23144.04849 + dps: 27947.07435 + tps: 24067.20811 } } dps_results: { key: "TestFury-AllItems-EternalShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 23029.01355 + dps: 27777.33802 + tps: 23947.60428 } } dps_results: { key: "TestFury-AllItems-FallofMortality-59500" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-FallofMortality-65124" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Figurine-DemonPanther-52199" value: { - dps: 26498.04725 - tps: 22688.58779 + dps: 27514.56157 + tps: 23539.70783 } } dps_results: { key: "TestFury-AllItems-Figurine-DreamOwl-52354" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Figurine-KingofBoars-52351" value: { - dps: 26943.61414 - tps: 22940.5188 + dps: 28021.35871 + tps: 23855.5927 } } dps_results: { key: "TestFury-AllItems-FleetShadowspiritDiamond" value: { - dps: 26791.32724 - tps: 23038.37682 + dps: 27862.98033 + tps: 23957.32244 } } dps_results: { key: "TestFury-AllItems-FluidDeath-58181" value: { - dps: 26631.4481 - tps: 22811.90701 + dps: 27696.70602 + tps: 23721.72385 } } dps_results: { key: "TestFury-AllItems-ForlornShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 23029.01355 + dps: 27777.33802 + tps: 23947.60428 } } dps_results: { key: "TestFury-AllItems-GaleofShadows-56138" value: { - dps: 25812.59779 - tps: 22104.91551 + dps: 26845.1017 + tps: 22986.4808 } } dps_results: { key: "TestFury-AllItems-GaleofShadows-56462" value: { - dps: 25741.86422 - tps: 22000.75538 + dps: 26771.53879 + tps: 22878.17432 } } dps_results: { key: "TestFury-AllItems-GearDetector-61462" value: { - dps: 25944.2355 - tps: 22214.17943 + dps: 26982.00492 + tps: 23100.14767 } } dps_results: { key: "TestFury-AllItems-GlowingTwilightScale-54589" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-GraceoftheHerald-55266" value: { - dps: 25799.38537 - tps: 22008.25121 + dps: 26831.36079 + tps: 22886.06016 } } dps_results: { key: "TestFury-AllItems-GraceoftheHerald-56295" value: { - dps: 26399.62086 - tps: 22639.90773 + dps: 27455.6057 + tps: 23542.93758 } } dps_results: { key: "TestFury-AllItems-HarmlightToken-63839" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 26268.0805 - tps: 22375.91948 + dps: 27318.80372 + tps: 23268.42245 } } dps_results: { key: "TestFury-AllItems-HeartofIgnacious-59514" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-HeartofIgnacious-65110" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-HeartofRage-59224" value: { - dps: 27036.91745 - tps: 23285.47552 + dps: 28118.39415 + tps: 24214.32473 } } dps_results: { key: "TestFury-AllItems-HeartofSolace-55868" value: { - dps: 25812.59779 - tps: 22104.91551 + dps: 26845.1017 + tps: 22986.4808 } } dps_results: { key: "TestFury-AllItems-HeartofSolace-56393" value: { - dps: 26876.02597 - tps: 23036.53537 + dps: 27951.06701 + tps: 23955.38551 } } dps_results: { key: "TestFury-AllItems-HeartofThunder-55845" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-HeartofThunder-56370" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-HeartoftheVile-66969" value: { - dps: 25826.12369 - tps: 22142.44887 + dps: 26859.16863 + tps: 23025.61096 } } dps_results: { key: "TestFury-AllItems-Heartpierce-50641" value: { - dps: 27188.37566 - tps: 23437.51925 + dps: 28275.91069 + tps: 24372.45021 } } dps_results: { key: "TestFury-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 26809.81942 - tps: 23066.16246 + dps: 27882.21219 + tps: 23986.23573 } } dps_results: { key: "TestFury-AllItems-ImpatienceofYouth-62464" value: { - dps: 27248.10106 - tps: 23129.82038 + dps: 28338.0251 + tps: 24052.44542 } } dps_results: { key: "TestFury-AllItems-ImpatienceofYouth-62469" value: { - dps: 27248.10106 - tps: 23129.82038 + dps: 28338.0251 + tps: 24052.44542 } } dps_results: { key: "TestFury-AllItems-ImpetuousQuery-55881" value: { - dps: 25710.97251 - tps: 21975.12596 + dps: 26739.41142 + tps: 22851.58796 } } dps_results: { key: "TestFury-AllItems-ImpetuousQuery-56406" value: { - dps: 25776.9774 - tps: 22007.76027 + dps: 26808.05649 + tps: 22885.52383 } } dps_results: { key: "TestFury-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 25651.76819 - tps: 21962.06693 + dps: 26677.83891 + tps: 22837.98553 } } dps_results: { key: "TestFury-AllItems-JarofAncientRemedies-59354" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-JarofAncientRemedies-65029" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-JujuofNimbleness-63840" value: { - dps: 25972.57381 - tps: 22233.12341 + dps: 27011.47677 + tps: 23119.87007 } } dps_results: { key: "TestFury-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 26385.50698 - tps: 22682.06119 + dps: 27440.92726 + tps: 23586.67674 } } dps_results: { key: "TestFury-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 26383.28827 - tps: 22611.00851 + dps: 27438.6198 + tps: 23512.84552 } } dps_results: { key: "TestFury-AllItems-KvaldirBattleStandard-59685" value: { - dps: 26355.38022 - tps: 22507.10936 + dps: 27409.59543 + tps: 23404.83173 } } dps_results: { key: "TestFury-AllItems-KvaldirBattleStandard-59689" value: { - dps: 26355.38022 - tps: 22507.10936 + dps: 27409.59543 + tps: 23404.83173 } } dps_results: { key: "TestFury-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 25743.96323 - tps: 22055.81407 + dps: 26773.72175 + tps: 22935.44098 } } dps_results: { key: "TestFury-AllItems-LastWord-50708" value: { - dps: 27188.37566 - tps: 23437.51925 + dps: 28275.91069 + tps: 24372.45021 } } dps_results: { key: "TestFury-AllItems-LeadenDespair-55816" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-LeadenDespair-56347" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-LeftEyeofRajh-56102" value: { - dps: 26262.19012 - tps: 22568.39474 + dps: 27312.67772 + tps: 23468.54244 } } dps_results: { key: "TestFury-AllItems-LeftEyeofRajh-56427" value: { - dps: 26396.33959 - tps: 22620.15131 + dps: 27452.19317 + tps: 23522.38711 } } dps_results: { key: "TestFury-AllItems-LicensetoSlay-58180" value: { - dps: 27058.87797 - tps: 23128.04746 + dps: 28141.23308 + tps: 24050.51717 } } dps_results: { key: "TestFury-AllItems-MagnetiteMirror-55814" value: { - dps: 26489.83037 - tps: 22769.36092 + dps: 27549.42359 + tps: 23677.56554 } } dps_results: { key: "TestFury-AllItems-MagnetiteMirror-56345" value: { - dps: 26736.58439 - tps: 22986.08211 + dps: 27806.04777 + tps: 23902.95558 } } dps_results: { key: "TestFury-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-MarkofKhardros-56132" value: { - dps: 26421.57717 - tps: 22524.02825 + dps: 27478.44025 + tps: 23422.44102 } } dps_results: { key: "TestFury-AllItems-MarkofKhardros-56458" value: { - dps: 26583.58752 - tps: 22659.01541 + dps: 27646.93102 + tps: 23562.82559 } } dps_results: { key: "TestFury-AllItems-MightoftheOcean-55251" value: { - dps: 26469.18297 - tps: 22690.47755 + dps: 27527.95029 + tps: 23595.48465 } } dps_results: { key: "TestFury-AllItems-MightoftheOcean-56285" value: { - dps: 26903.95303 - tps: 23093.86617 + dps: 27980.11115 + tps: 24014.98918 } } dps_results: { key: "TestFury-AllItems-MirrorofBrokenImages-62466" value: { - dps: 25919.90849 - tps: 22077.54866 + dps: 26956.70483 + tps: 22958.08282 } } dps_results: { key: "TestFury-AllItems-MirrorofBrokenImages-62471" value: { - dps: 25919.90849 - tps: 22077.54866 + dps: 26956.70483 + tps: 22958.08282 } } dps_results: { key: "TestFury-AllItems-MoltenGiantBattleplate" value: { - dps: 23257.8858 - tps: 19698.1768 + dps: 24188.20123 + tps: 20483.85503 } } dps_results: { key: "TestFury-AllItems-MoltenGiantWarplate" value: { - dps: 28023.77475 - tps: 23989.30873 + dps: 29126.37039 + tps: 24928.06902 } } dps_results: { key: "TestFury-AllItems-MoonwellChalice-70142" value: { - dps: 25743.83676 - tps: 21836.08275 + dps: 26773.59023 + tps: 22706.98833 } } dps_results: { key: "TestFury-AllItems-Oremantle'sFavor-61448" value: { - dps: 26484.43806 - tps: 22633.12126 + dps: 27543.81558 + tps: 23535.91045 } } dps_results: { key: "TestFury-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 25764.62657 - tps: 21991.99915 + dps: 26795.21163 + tps: 22869.13349 } } dps_results: { key: "TestFury-AllItems-PorcelainCrab-55237" value: { - dps: 25577.56881 - tps: 21853.74969 + dps: 26600.67156 + tps: 22725.35077 } } dps_results: { key: "TestFury-AllItems-PorcelainCrab-56280" value: { - dps: 25653.95531 - tps: 21913.28295 + dps: 26680.11353 + tps: 22787.24148 } } dps_results: { key: "TestFury-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 26708.97886 - tps: 23029.01355 + dps: 27777.33802 + tps: 23947.60428 } } dps_results: { key: "TestFury-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 26535.05525 - tps: 22724.47972 + dps: 27596.45747 + tps: 23630.79383 } } dps_results: { key: "TestFury-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 26909.45025 - tps: 23024.30986 + dps: 27985.82826 + tps: 23942.56908 } } dps_results: { key: "TestFury-AllItems-Rainsong-55854" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Rainsong-56377" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 27188.37566 - tps: 23437.51925 + dps: 28275.91069 + tps: 24372.45021 } } dps_results: { key: "TestFury-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 27015.63851 - tps: 23288.5948 + dps: 28096.26405 + tps: 24217.56878 } } dps_results: { key: "TestFury-AllItems-RightEyeofRajh-56100" value: { - dps: 26932.78971 - tps: 23082.02791 + dps: 28010.1013 + tps: 24002.68992 } } dps_results: { key: "TestFury-AllItems-RightEyeofRajh-56431" value: { - dps: 27011.29083 - tps: 23187.59448 + dps: 28091.74246 + tps: 24112.46662 } } dps_results: { key: "TestFury-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 25938.08036 - tps: 22120.59123 + dps: 26975.60357 + tps: 23002.86639 } } dps_results: { key: "TestFury-AllItems-SeaStar-55256" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-SeaStar-56290" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Shadowmourne-49623" value: { - dps: 27188.37566 - tps: 23437.51925 + dps: 28275.91069 + tps: 24372.45021 } } dps_results: { key: "TestFury-AllItems-ShardofWoe-60233" value: { - dps: 26163.73189 - tps: 22301.10251 + dps: 27210.28116 + tps: 23190.52701 } } dps_results: { key: "TestFury-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 26421.44168 - tps: 22615.8806 + dps: 27478.29934 + tps: 23517.93943 } } dps_results: { key: "TestFury-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Skardyn'sGrace-56115" value: { - dps: 26154.81275 - tps: 22250.25622 + dps: 27201.00526 + tps: 23137.70021 } } dps_results: { key: "TestFury-AllItems-Skardyn'sGrace-56440" value: { - dps: 26178.83825 - tps: 22275.16535 + dps: 27225.99178 + tps: 23163.63887 } } dps_results: { key: "TestFury-AllItems-Sorrowsong-55879" value: { - dps: 25710.97251 - tps: 21975.12596 + dps: 26739.41142 + tps: 22851.58796 } } dps_results: { key: "TestFury-AllItems-Sorrowsong-56400" value: { - dps: 25776.9774 - tps: 22007.76027 + dps: 26808.05649 + tps: 22885.52383 } } dps_results: { key: "TestFury-AllItems-Soul'sAnguish-66994" value: { - dps: 26465.32687 - tps: 22662.25707 + dps: 27523.93994 + tps: 23566.12825 } } dps_results: { key: "TestFury-AllItems-SoulCasket-58183" value: { - dps: 25919.90849 - tps: 22077.54866 + dps: 26956.70483 + tps: 22958.08282 } } dps_results: { key: "TestFury-AllItems-Stonemother'sKiss-61411" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-StumpofTime-62465" value: { - dps: 25852.06781 - tps: 22093.96151 + dps: 26886.15052 + tps: 22975.06779 } } dps_results: { key: "TestFury-AllItems-StumpofTime-62470" value: { - dps: 25852.06781 - tps: 22093.96151 + dps: 26886.15052 + tps: 22975.06779 } } dps_results: { key: "TestFury-AllItems-SymbioticWorm-59332" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-SymbioticWorm-65048" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 26526.83925 - tps: 22650.59117 + dps: 27587.91282 + tps: 23554.0253 } } dps_results: { key: "TestFury-AllItems-TearofBlood-55819" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-TearofBlood-56351" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 25650.80933 - tps: 21938.49102 + dps: 26676.84171 + tps: 22813.47079 } } dps_results: { key: "TestFury-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 25776.9774 - tps: 22007.76027 + dps: 26808.05649 + tps: 22885.52383 } } dps_results: { key: "TestFury-AllItems-Theralion'sMirror-59519" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Theralion'sMirror-65105" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Throngus'sFinger-56121" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Throngus'sFinger-56449" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-Tia'sGrace-55874" value: { - dps: 26319.17023 - tps: 22431.87333 + dps: 27371.93704 + tps: 23326.59707 } } dps_results: { key: "TestFury-AllItems-Tia'sGrace-56394" value: { - dps: 26373.02653 - tps: 22533.34434 + dps: 27427.94759 + tps: 23432.12663 } } dps_results: { key: "TestFury-AllItems-TinyAbominationinaJar-50706" value: { - dps: 26727.1018 - tps: 23009.75179 + dps: 27796.18587 + tps: 23927.51984 } } dps_results: { key: "TestFury-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 24481.25051 - tps: 21028.80888 + dps: 25460.50053 + tps: 21867.41606 } } dps_results: { key: "TestFury-AllItems-UnheededWarning-59520" value: { - dps: 26634.18736 - tps: 22757.71661 + dps: 27699.55486 + tps: 23665.48285 } } dps_results: { key: "TestFury-AllItems-UnquenchableFlame-67101" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-UnsolvableRiddle-62463" value: { - dps: 26134.25601 - tps: 22270.52209 + dps: 27179.62625 + tps: 23158.8002 } } dps_results: { key: "TestFury-AllItems-UnsolvableRiddle-62468" value: { - dps: 26134.25601 - tps: 22270.52209 + dps: 27179.62625 + tps: 23158.8002 } } dps_results: { key: "TestFury-AllItems-UnsolvableRiddle-68709" value: { - dps: 26134.25601 - tps: 22270.52209 + dps: 27179.62625 + tps: 23158.8002 } } dps_results: { key: "TestFury-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 24123.94676 - tps: 20766.99652 + dps: 25088.90463 + tps: 21595.1179 } } dps_results: { key: "TestFury-AllItems-VialofStolenMemories-59515" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-VialofStolenMemories-65109" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 26081.734 - tps: 22292.91837 + dps: 27125.00336 + tps: 23182.0824 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 26622.57994 - tps: 22735.12405 + dps: 27687.48314 + tps: 23641.98384 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 25915.91354 - tps: 22233.31707 + dps: 26952.55008 + tps: 23119.98991 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 25854.66685 - tps: 22180.65312 + dps: 26888.85353 + tps: 23065.22515 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 26272.26108 - tps: 22524.00801 + dps: 27323.15153 + tps: 23422.41767 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 25731.94302 - tps: 22103.71727 + dps: 26761.22074 + tps: 22985.29615 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 25943.2689 - tps: 22124.55846 + dps: 26980.99966 + tps: 23006.97531 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 25816.79595 - tps: 22090.63972 + dps: 26849.46779 + tps: 22971.72653 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 26504.00437 - tps: 22696.66294 + dps: 27564.16454 + tps: 23601.98428 } } dps_results: { key: "TestFury-AllItems-WitchingHourglass-55787" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-WitchingHourglass-56320" value: { - dps: 25347.11149 - tps: 21716.47342 + dps: 26360.99595 + tps: 22582.58718 } } dps_results: { key: "TestFury-AllItems-World-QuellerFocus-63842" value: { - dps: 25651.30442 - tps: 21922.44771 + dps: 26677.3566 + tps: 22796.79289 } } dps_results: { key: "TestFury-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 25618.51345 - tps: 21847.35428 + dps: 26643.25399 + tps: 22718.7015 } } dps_results: { key: "TestFury-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 25618.51345 - tps: 21847.35428 + dps: 26643.25399 + tps: 22718.7015 } } dps_results: { key: "TestFury-Average-Default" value: { - dps: 27382.6482 - tps: 23563.68981 + dps: 28477.95413 + tps: 24503.65674 } } dps_results: { key: "TestFury-Settings-Human-p1_fury_smf-Basic-fury-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 31467.46556 - tps: 27718.0178 + dps: 32559.06475 + tps: 28654.59134 } } dps_results: { key: "TestFury-Settings-Human-p1_fury_smf-Basic-fury-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 26844.84941 - tps: 23149.25988 + dps: 27918.64338 + tps: 24072.67579 } } dps_results: { key: "TestFury-Settings-Human-p1_fury_smf-Basic-fury-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 34138.07252 - tps: 29510.33353 + dps: 35503.59542 + tps: 30687.84914 } } dps_results: { @@ -1368,22 +1368,22 @@ dps_results: { dps_results: { key: "TestFury-Settings-Orc-p1_fury_smf-Basic-fury-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 31970.6409 - tps: 28230.97724 + dps: 33075.50303 + tps: 29181.19325 } } dps_results: { key: "TestFury-Settings-Orc-p1_fury_smf-Basic-fury-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 27188.37566 - tps: 23437.51925 + dps: 28275.91069 + tps: 24372.45021 } } dps_results: { key: "TestFury-Settings-Orc-p1_fury_smf-Basic-fury-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 34778.20631 - tps: 30098.3856 + dps: 36169.33456 + tps: 31299.4233 } } dps_results: { @@ -1410,7 +1410,7 @@ dps_results: { dps_results: { key: "TestFury-SwitchInFrontOfTarget-Default" value: { - dps: 25230.82249 - tps: 21530.80939 + dps: 26240.05539 + tps: 22389.5437 } } diff --git a/sim/warrior/protection/TestProtectionWarrior.results b/sim/warrior/protection/TestProtectionWarrior.results index 1d230b8356..6e670e5b39 100644 --- a/sim/warrior/protection/TestProtectionWarrior.results +++ b/sim/warrior/protection/TestProtectionWarrior.results @@ -37,1381 +37,1381 @@ character_stats_results: { dps_results: { key: "TestProtectionWarrior-AllItems-AgileShadowspiritDiamond" value: { - dps: 4913.97754 - tps: 29525.01032 + dps: 4647.32909 + tps: 28342.1069 } } dps_results: { key: "TestProtectionWarrior-AllItems-Althor'sAbacus-50366" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Anhuur'sHymnal-55889" value: { - dps: 4982.44285 - tps: 29860.94391 + dps: 4714.78423 + tps: 28670.91052 } } dps_results: { key: "TestProtectionWarrior-AllItems-Anhuur'sHymnal-56407" value: { - dps: 5017.13971 - tps: 30105.77498 + dps: 4750.86896 + tps: 28924.78658 } } dps_results: { key: "TestProtectionWarrior-AllItems-AustereShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BaubleofTrueBlood-50726" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BedrockTalisman-58182" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BellofEnragingResonance-59326" value: { - dps: 4986.36232 - tps: 29921.81931 + dps: 4716.67187 + tps: 28725.10127 } } dps_results: { key: "TestProtectionWarrior-AllItems-BellofEnragingResonance-65053" value: { - dps: 5004.21208 - tps: 30019.57114 + dps: 4734.29764 + tps: 28822.07329 } } dps_results: { key: "TestProtectionWarrior-AllItems-BindingPromise-67037" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BlackBruise-50692" value: { - dps: 4405.70235 - tps: 26913.51935 + dps: 4133.31851 + tps: 25699.39689 } } dps_results: { key: "TestProtectionWarrior-AllItems-Blood-SoakedAleMug-63843" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodofIsiset-55995" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodofIsiset-56414" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sBadgeofConquest-64687" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sBadgeofDominance-64688" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sBadgeofVictory-64689" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sEmblemofCruelty-64740" value: { - dps: 4978.30152 - tps: 29874.44497 + dps: 4709.07028 + tps: 28679.7402 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sEmblemofMeditation-64741" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sEmblemofTenacity-64742" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sInsigniaofConquest-64761" value: { - dps: 4957.63123 - tps: 29768.84852 + dps: 4689.13647 + tps: 28577.73637 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sInsigniaofDominance-64762" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BloodthirstyGladiator'sInsigniaofVictory-64763" value: { - dps: 5117.14775 - tps: 30761.50475 + dps: 4828.6899 + tps: 29477.23482 } } dps_results: { key: "TestProtectionWarrior-AllItems-BottledLightning-66879" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BracingShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 28705.17863 + dps: 4604.8514 + tps: 27545.20123 } } dps_results: { key: "TestProtectionWarrior-AllItems-Bryntroll,theBoneArbiter-50709" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-BurningShadowspiritDiamond" value: { - dps: 4895.58041 - tps: 29429.37927 + dps: 4628.85891 + tps: 28245.9648 } } dps_results: { key: "TestProtectionWarrior-AllItems-ChaoticShadowspiritDiamond" value: { - dps: 4916.06042 - tps: 29535.42469 + dps: 4649.32957 + tps: 28352.1093 } } dps_results: { key: "TestProtectionWarrior-AllItems-ColossalDragonplateArmor" value: { - dps: 4791.98817 - tps: 28780.68507 + dps: 4533.81213 + tps: 27633.87227 } } dps_results: { key: "TestProtectionWarrior-AllItems-ColossalDragonplateBattlegear" value: { - dps: 5729.17179 - tps: 34284.34317 + dps: 5457.97371 + tps: 33096.93103 } } dps_results: { key: "TestProtectionWarrior-AllItems-CoreofRipeness-58184" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-CorpseTongueCoin-50349" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-CrushingWeight-59506" value: { - dps: 5209.94563 - tps: 31184.58466 + dps: 4922.9559 + tps: 29905.87669 } } dps_results: { key: "TestProtectionWarrior-AllItems-CrushingWeight-65118" value: { - dps: 5310.40289 - tps: 31729.39291 + dps: 5024.9963 + tps: 30459.63721 } } dps_results: { key: "TestProtectionWarrior-AllItems-DarkmoonCard:Earthquake-62048" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-DarkmoonCard:Hurricane-62049" value: { - dps: 5292.48249 - tps: 31651.49341 + dps: 5002.206 + tps: 30357.90989 } } dps_results: { key: "TestProtectionWarrior-AllItems-DarkmoonCard:Hurricane-62051" value: { - dps: 5128.01199 - tps: 30620.37953 + dps: 4857.79066 + tps: 29419.96034 } } dps_results: { key: "TestProtectionWarrior-AllItems-DarkmoonCard:Tsunami-62050" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-DarkmoonCard:Volcano-62047" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Deathbringer'sWill-50363" value: { - dps: 5036.35869 - tps: 30175.19974 + dps: 4762.02853 + tps: 28955.35866 } } dps_results: { key: "TestProtectionWarrior-AllItems-DestructiveShadowspiritDiamond" value: { - dps: 4891.18061 - tps: 29392.94832 + dps: 4624.56139 + tps: 28209.46794 } } dps_results: { key: "TestProtectionWarrior-AllItems-DislodgedForeignObject-50348" value: { - dps: 4923.28744 - tps: 29503.9061 + dps: 4661.23541 + tps: 28341.32354 } } dps_results: { key: "TestProtectionWarrior-AllItems-EarthenBattleplate" value: { - dps: 4921.4686 - tps: 29524.26821 + dps: 4655.91438 + tps: 28344.29955 } } dps_results: { key: "TestProtectionWarrior-AllItems-EarthenWarplate" value: { - dps: 5400.67059 - tps: 32271.30104 + dps: 5143.85826 + tps: 31143.76321 } } dps_results: { key: "TestProtectionWarrior-AllItems-EffulgentShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ElectrosparkHeartstarter-67118" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-EmberShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-EnigmaticShadowspiritDiamond" value: { - dps: 4891.18061 - tps: 29392.94832 + dps: 4624.56139 + tps: 28209.46794 } } dps_results: { key: "TestProtectionWarrior-AllItems-EssenceoftheCyclone-59473" value: { - dps: 5093.40126 - tps: 30507.37351 + dps: 4821.58285 + tps: 29302.03008 } } dps_results: { key: "TestProtectionWarrior-AllItems-EssenceoftheCyclone-65140" value: { - dps: 5122.05638 - tps: 30664.75419 + dps: 4847.78859 + tps: 29447.72809 } } dps_results: { key: "TestProtectionWarrior-AllItems-EternalShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-FallofMortality-59500" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-FallofMortality-65124" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Figurine-DemonPanther-52199" value: { - dps: 5017.13971 - tps: 30105.77498 + dps: 4750.86896 + tps: 28924.78658 } } dps_results: { key: "TestProtectionWarrior-AllItems-Figurine-DreamOwl-52354" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Figurine-EarthenGuardian-52352" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Figurine-JeweledSerpent-52353" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Figurine-KingofBoars-52351" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-FleetShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-FluidDeath-58181" value: { - dps: 5177.78505 - tps: 30999.11775 + dps: 4911.99959 + tps: 29823.42181 } } dps_results: { key: "TestProtectionWarrior-AllItems-ForlornShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-FuryofAngerforge-59461" value: { - dps: 4986.36232 - tps: 29921.81931 + dps: 4716.67187 + tps: 28725.10127 } } dps_results: { key: "TestProtectionWarrior-AllItems-GaleofShadows-56138" value: { - dps: 4987.13883 - tps: 29922.47095 + dps: 4725.13959 + tps: 28762.21912 } } dps_results: { key: "TestProtectionWarrior-AllItems-GaleofShadows-56462" value: { - dps: 4936.72009 - tps: 29574.37446 + dps: 4673.48574 + tps: 28404.88648 } } dps_results: { key: "TestProtectionWarrior-AllItems-GearDetector-61462" value: { - dps: 4970.60811 - tps: 29767.6163 + dps: 4705.60269 + tps: 28590.89002 } } dps_results: { key: "TestProtectionWarrior-AllItems-GlowingTwilightScale-54589" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-GraceoftheHerald-55266" value: { - dps: 4952.15604 - tps: 29727.56574 + dps: 4683.91126 + tps: 28537.14722 } } dps_results: { key: "TestProtectionWarrior-AllItems-GraceoftheHerald-56295" value: { - dps: 5003.79817 - tps: 30008.50198 + dps: 4734.17983 + tps: 28812.12466 } } dps_results: { key: "TestProtectionWarrior-AllItems-HarmlightToken-63839" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Harrison'sInsigniaofPanache-65803" value: { - dps: 5060.29578 - tps: 30425.59382 + dps: 4777.36295 + tps: 29167.1427 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofIgnacious-59514" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofIgnacious-65110" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofRage-59224" value: { - dps: 5337.91979 - tps: 32138.49431 + dps: 5050.27566 + tps: 30865.93082 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofRage-65072" value: { - dps: 5426.06786 - tps: 32608.74824 + dps: 5138.17193 + tps: 31335.39353 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofSolace-55868" value: { - dps: 5166.60244 - tps: 30997.80756 + dps: 4889.37675 + tps: 29767.6933 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofSolace-56393" value: { - dps: 5209.73505 - tps: 31209.17575 + dps: 4922.21843 + tps: 29927.85174 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofThunder-55845" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartofThunder-56370" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-HeartoftheVile-66969" value: { - dps: 4965.53314 - tps: 29801.26607 + dps: 4696.57281 + tps: 28607.54239 } } dps_results: { key: "TestProtectionWarrior-AllItems-Heartpierce-50641" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ImpassiveShadowspiritDiamond" value: { - dps: 4891.18061 - tps: 29392.94832 + dps: 4624.56139 + tps: 28209.46794 } } dps_results: { key: "TestProtectionWarrior-AllItems-ImpatienceofYouth-62464" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ImpatienceofYouth-62469" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ImpetuousQuery-55881" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ImpetuousQuery-56406" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-InsigniaofDiplomacy-61433" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-InsigniaoftheEarthenLord-61429" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-JarofAncientRemedies-59354" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-JarofAncientRemedies-65029" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-JujuofNimbleness-63840" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-KeytotheEndlessChamber-55795" value: { - dps: 5067.12472 - tps: 30321.17026 + dps: 4798.31982 + tps: 29127.54532 } } dps_results: { key: "TestProtectionWarrior-AllItems-KeytotheEndlessChamber-56328" value: { - dps: 5112.65153 - tps: 30637.03672 + dps: 4843.63542 + tps: 29444.46958 } } dps_results: { key: "TestProtectionWarrior-AllItems-KvaldirBattleStandard-59685" value: { - dps: 4927.99579 - tps: 29555.11766 + dps: 4665.03779 + tps: 28389.10196 } } dps_results: { key: "TestProtectionWarrior-AllItems-KvaldirBattleStandard-59689" value: { - dps: 4927.99579 - tps: 29555.11766 + dps: 4665.03779 + tps: 28389.10196 } } dps_results: { key: "TestProtectionWarrior-AllItems-LadyLa-La'sSingingShell-67152" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-LastWord-50708" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-LeadenDespair-55816" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-LeadenDespair-56347" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-LeftEyeofRajh-56102" value: { - dps: 5058.10191 - tps: 30308.86015 + dps: 4792.37534 + tps: 29131.05607 } } dps_results: { key: "TestProtectionWarrior-AllItems-LeftEyeofRajh-56427" value: { - dps: 5122.30131 - tps: 30740.72741 + dps: 4858.20474 + tps: 29574.84247 } } dps_results: { key: "TestProtectionWarrior-AllItems-LicensetoSlay-58180" value: { - dps: 5380.13182 - tps: 32263.29019 + dps: 5091.23507 + tps: 30980.57763 } } dps_results: { key: "TestProtectionWarrior-AllItems-MagnetiteMirror-55814" value: { - dps: 4961.14933 - tps: 29744.3888 + dps: 4697.64152 + tps: 28575.0336 } } dps_results: { key: "TestProtectionWarrior-AllItems-MagnetiteMirror-56345" value: { - dps: 5041.49897 - tps: 30297.56497 + dps: 4781.5178 + tps: 29150.69098 } } dps_results: { key: "TestProtectionWarrior-AllItems-MandalaofStirringPatterns-62467" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-MandalaofStirringPatterns-62472" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-MarkofKhardros-56132" value: { - dps: 5074.82029 - tps: 30512.87089 + dps: 4790.63307 + tps: 29248.66588 } } dps_results: { key: "TestProtectionWarrior-AllItems-MarkofKhardros-56458" value: { - dps: 5101.44856 - tps: 30672.87887 + dps: 4814.96162 + tps: 29398.12504 } } dps_results: { key: "TestProtectionWarrior-AllItems-MightoftheOcean-55251" value: { - dps: 4945.69293 - tps: 29637.66715 + dps: 4677.81495 + tps: 28445.89437 } } dps_results: { key: "TestProtectionWarrior-AllItems-MightoftheOcean-56285" value: { - dps: 5017.13971 - tps: 30105.77498 + dps: 4750.86896 + tps: 28924.78658 } } dps_results: { key: "TestProtectionWarrior-AllItems-MirrorofBrokenImages-62466" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-MirrorofBrokenImages-62471" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-MoltenGiantBattleplate" value: { - dps: 5281.72712 - tps: 31465.11786 + dps: 5018.13814 + tps: 30298.89548 } } dps_results: { key: "TestProtectionWarrior-AllItems-MoltenGiantWarplate" value: { - dps: 5974.73427 - tps: 35747.29961 + dps: 5692.1838 + tps: 34511.94898 } } dps_results: { key: "TestProtectionWarrior-AllItems-MoonwellChalice-70142" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Oremantle'sFavor-61448" value: { - dps: 5028.01908 - tps: 30231.64475 + dps: 4747.87379 + tps: 28985.98009 } } dps_results: { key: "TestProtectionWarrior-AllItems-PetrifiedTwilightScale-54591" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-PhylacteryoftheNamelessLich-50365" value: { - dps: 4925.32928 - tps: 29581.72721 + dps: 4656.94941 + tps: 28390.16504 } } dps_results: { key: "TestProtectionWarrior-AllItems-PorcelainCrab-55237" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-PorcelainCrab-56280" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-PowerfulShadowspiritDiamond" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Prestor'sTalismanofMachination-59441" value: { - dps: 5070.16701 - tps: 30356.19259 + dps: 4806.17369 + tps: 29188.11497 } } dps_results: { key: "TestProtectionWarrior-AllItems-Prestor'sTalismanofMachination-65026" value: { - dps: 5075.31899 - tps: 30303.67508 + dps: 4810.28111 + tps: 29127.00833 } } dps_results: { key: "TestProtectionWarrior-AllItems-Rainsong-55854" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Rainsong-56377" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ReverberatingShadowspiritDiamond" value: { - dps: 4939.36744 - tps: 29692.4533 + dps: 4668.87865 + tps: 28491.76361 } } dps_results: { key: "TestProtectionWarrior-AllItems-RevitalizingShadowspiritDiamond" value: { - dps: 4895.58041 - tps: 29429.37927 + dps: 4628.85891 + tps: 28245.9648 } } dps_results: { key: "TestProtectionWarrior-AllItems-RightEyeofRajh-56100" value: { - dps: 5162.46595 - tps: 30927.02036 + dps: 4879.34213 + tps: 29665.44848 } } dps_results: { key: "TestProtectionWarrior-AllItems-RightEyeofRajh-56431" value: { - dps: 5221.58305 - tps: 31310.16474 + dps: 4938.50546 + tps: 30051.55999 } } dps_results: { key: "TestProtectionWarrior-AllItems-Schnottz'sMedallionofCommand-65805" value: { - dps: 4926.07771 - tps: 29587.06827 + dps: 4657.72777 + tps: 28395.71974 } } dps_results: { key: "TestProtectionWarrior-AllItems-SeaStar-55256" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-SeaStar-56290" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Shadowmourne-49623" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ShardofWoe-60233" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Shrine-CleansingPurifier-63838" value: { - dps: 5074.22852 - tps: 30467.24292 + dps: 4792.7269 + tps: 29214.3716 } } dps_results: { key: "TestProtectionWarrior-AllItems-Sindragosa'sFlawlessFang-50364" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Skardyn'sGrace-56115" value: { - dps: 4931.12085 - tps: 29615.48186 + dps: 4662.81631 + tps: 28424.48822 } } dps_results: { key: "TestProtectionWarrior-AllItems-Skardyn'sGrace-56440" value: { - dps: 4943.31358 - tps: 29679.88726 + dps: 4675.02777 + tps: 28489.12489 } } dps_results: { key: "TestProtectionWarrior-AllItems-Sorrowsong-55879" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Sorrowsong-56400" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Soul'sAnguish-66994" value: { - dps: 4982.44285 - tps: 29860.94391 + dps: 4714.78423 + tps: 28670.91052 } } dps_results: { key: "TestProtectionWarrior-AllItems-SoulCasket-58183" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Stonemother'sKiss-61411" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-StumpofTime-62465" value: { - dps: 5067.13734 - tps: 30390.56006 + dps: 4804.11713 + tps: 29226.47761 } } dps_results: { key: "TestProtectionWarrior-AllItems-StumpofTime-62470" value: { - dps: 5067.13734 - tps: 30390.56006 + dps: 4804.11713 + tps: 29226.47761 } } dps_results: { key: "TestProtectionWarrior-AllItems-SymbioticWorm-59332" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-TalismanofSinisterOrder-65804" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Tank-CommanderInsignia-63841" value: { - dps: 5061.28623 - tps: 30364.83943 + dps: 4780.25028 + tps: 29113.05772 } } dps_results: { key: "TestProtectionWarrior-AllItems-TearofBlood-55819" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-TearofBlood-56351" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-TendrilsofBurrowingDark-55810" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-TendrilsofBurrowingDark-56339" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Theralion'sMirror-59519" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Theralion'sMirror-65105" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Throngus'sFinger-56121" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Throngus'sFinger-56449" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Tia'sGrace-55874" value: { - dps: 4949.18915 - tps: 29712.70761 + dps: 4681.13836 + tps: 28523.25806 } } dps_results: { key: "TestProtectionWarrior-AllItems-Tia'sGrace-56394" value: { - dps: 4960.28835 - tps: 29774.5321 + dps: 4691.43089 + tps: 28581.30234 } } dps_results: { key: "TestProtectionWarrior-AllItems-TinyAbominationinaJar-50706" value: { - dps: 4939.66969 - tps: 29598.67416 + dps: 4671.86344 + tps: 28406.80551 } } dps_results: { key: "TestProtectionWarrior-AllItems-Tyrande'sFavoriteDoll-64645" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-UnheededWarning-59520" value: { - dps: 5083.40106 - tps: 30515.133 + dps: 4804.85165 + tps: 29277.97892 } } dps_results: { key: "TestProtectionWarrior-AllItems-UnquenchableFlame-67101" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-UnsolvableRiddle-62463" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-UnsolvableRiddle-62468" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-UnsolvableRiddle-68709" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Val'anyr,HammerofAncientKings-46017" value: { - dps: 3905.30346 - tps: 24445.82649 + dps: 3752.10945 + tps: 23825.92222 } } dps_results: { key: "TestProtectionWarrior-AllItems-VialofStolenMemories-59515" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sBadgeofConquest-61033" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sBadgeofDominance-61035" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sBadgeofVictory-61034" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sEmblemofAccuracy-61027" value: { - dps: 5049.78093 - tps: 30340.93695 + dps: 4785.59748 + tps: 29172.56948 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sEmblemofAlacrity-61028" value: { - dps: 4973.9847 - tps: 29750.97098 + dps: 4711.45929 + tps: 28584.63944 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sEmblemofCruelty-61026" value: { - dps: 4993.7268 - tps: 29962.09669 + dps: 4723.7056 + tps: 28763.86315 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sEmblemofProficiency-61030" value: { - dps: 5051.69063 - tps: 30398.69899 + dps: 4790.86649 + tps: 29249.03902 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sEmblemofProwess-61029" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sEmblemofTenacity-61032" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sInsigniaofConquest-61047" value: { - dps: 4962.69224 - tps: 29777.58741 + dps: 4693.7746 + tps: 28583.69822 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sInsigniaofDominance-61045" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-ViciousGladiator'sInsigniaofVictory-61046" value: { - dps: 5127.58134 - tps: 30823.08696 + dps: 4836.30686 + tps: 29525.06257 } } dps_results: { key: "TestProtectionWarrior-AllItems-WitchingHourglass-55787" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-WitchingHourglass-56320" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-World-QuellerFocus-63842" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Za'brox'sLuckyTooth-63742" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-AllItems-Za'brox'sLuckyTooth-63745" value: { - dps: 4871.47712 - tps: 29290.9918 + dps: 4604.8514 + tps: 28107.3414 } } dps_results: { key: "TestProtectionWarrior-Average-Default" value: { - dps: 13043.06331 - tps: 75043.80158 + dps: 12419.7724 + tps: 72270.77284 dtps: 8028.45683 } } dps_results: { key: "TestProtectionWarrior-Settings-Human-p1_bis-Basic-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 31262.74219 - tps: 173767.66284 + dps: 24112.00707 + tps: 138152.72312 } } dps_results: { key: "TestProtectionWarrior-Settings-Human-p1_bis-Basic-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 5470.11189 - tps: 32996.33254 + dps: 5229.14349 + tps: 31961.61557 } } dps_results: { key: "TestProtectionWarrior-Settings-Human-p1_bis-Basic-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 5925.00321 - tps: 35386.41259 + dps: 5697.23124 + tps: 34418.57458 } } dps_results: { key: "TestProtectionWarrior-Settings-Human-p1_bis-Basic-default-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 22048.60355 - tps: 122913.87489 + dps: 17134.86123 + tps: 98345.16327 } } dps_results: { key: "TestProtectionWarrior-Settings-Human-p1_bis-Basic-default-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 3642.90777 - tps: 22256.1022 + dps: 3397.71087 + tps: 21030.1177 } } dps_results: { key: "TestProtectionWarrior-Settings-Human-p1_bis-Basic-default-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 3463.85899 - tps: 21308.26215 + dps: 3216.58761 + tps: 20071.9053 } } dps_results: { key: "TestProtectionWarrior-Settings-Orc-p1_bis-Basic-default-FullBuffs-0.0yards-LongMultiTarget" value: { - dps: 31239.45744 - tps: 173601.77505 + dps: 24079.99232 + tps: 137942.49066 } } dps_results: { key: "TestProtectionWarrior-Settings-Orc-p1_bis-Basic-default-FullBuffs-0.0yards-LongSingleTarget" value: { - dps: 5462.72726 - tps: 32956.50128 + dps: 5222.25282 + tps: 31924.75335 } } dps_results: { key: "TestProtectionWarrior-Settings-Orc-p1_bis-Basic-default-FullBuffs-0.0yards-ShortSingleTarget" value: { - dps: 5896.23537 - tps: 35239.30414 + dps: 5667.78605 + tps: 34268.80089 } } dps_results: { key: "TestProtectionWarrior-Settings-Orc-p1_bis-Basic-default-NoBuffs-0.0yards-LongMultiTarget" value: { - dps: 22141.53718 - tps: 123429.91722 + dps: 17204.72123 + tps: 98745.83747 } } dps_results: { key: "TestProtectionWarrior-Settings-Orc-p1_bis-Basic-default-NoBuffs-0.0yards-LongSingleTarget" value: { - dps: 3629.90937 - tps: 22170.96227 + dps: 3385.0713 + tps: 20946.77192 } } dps_results: { key: "TestProtectionWarrior-Settings-Orc-p1_bis-Basic-default-NoBuffs-0.0yards-ShortSingleTarget" value: { - dps: 3420.65875 - tps: 21033.66228 + dps: 3172.78308 + tps: 19794.28391 } } dps_results: { key: "TestProtectionWarrior-SwitchInFrontOfTarget-Default" value: { - dps: 13914.79956 - tps: 80471.13536 + dps: 13391.46226 + tps: 78233.42737 dtps: 7433.41955 } } diff --git a/sim/warrior/rend.go b/sim/warrior/rend.go index 9dd4d5caf2..2aae4fb470 100644 --- a/sim/warrior/rend.go +++ b/sim/warrior/rend.go @@ -15,7 +15,7 @@ func (warrior *Warrior) RegisterRendSpell() { SpellSchool: core.SpellSchoolPhysical, ProcMask: core.ProcMaskMeleeMHSpecial, Flags: core.SpellFlagAPL | core.SpellFlagMeleeMetrics | SpellFlagBleed, - ClassSpellMask: SpellMaskRend | SpellMaskSpecialAttack, + ClassSpellMask: SpellMaskRend, RageCost: core.RageCostOptions{ Cost: 10, @@ -49,8 +49,7 @@ func (warrior *Warrior) RegisterRendSpell() { weaponMH := warrior.AutoAttacks.MH() avgMHDamage := weaponMH.CalculateAverageWeaponDamage(dot.Spell.MeleeAttackPower()) - ap := dot.Spell.MeleeAttackPower() / 14.0 - dot.Snapshot(target, (529+(0.25*6*(avgMHDamage+ap*weaponMH.SwingSpeed)))/float64(dot.NumberOfTicks)) + dot.Snapshot(target, (529+(0.25*6*(avgMHDamage)))/float64(dot.NumberOfTicks)) }, OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.OutcomeTickPhysicalCrit) diff --git a/tools/database/enchant_overrides.go b/tools/database/enchant_overrides.go index a2b5d14a94..0552666b4b 100644 --- a/tools/database/enchant_overrides.go +++ b/tools/database/enchant_overrides.go @@ -208,7 +208,7 @@ var EnchantOverrides = []*proto.UIEnchant{ {EffectId: 3825, SpellId: 60609, Name: "Speed", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.MeleeHaste: 15, stats.SpellHaste: 15}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack}, {EffectId: 983, SpellId: 44500, Name: "Superior Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 16}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack}, {EffectId: 1099, SpellId: 60663, Name: "Major Agility", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 22}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack}, - {EffectId: 3605, SpellId: 55002, Name: "Flexweave Underlay", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{stats.Agility: 23}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Engineering}, + {EffectId: 3605, SpellId: 55002, Name: "Flexweave Underlay", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Engineering}, {EffectId: 3722, SpellId: 55642, Name: "Lightweave Embroidery", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Tailoring}, {EffectId: 3728, SpellId: 55769, Name: "Darkglow Embroidery", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Tailoring}, {EffectId: 3730, SpellId: 55777, Name: "Swordguard Embroidery", Quality: proto.ItemQuality_ItemQualityCommon, Stats: stats.Stats{}.ToFloatArray(), Type: proto.ItemType_ItemTypeBack, RequiredProfession: proto.Profession_Tailoring}, diff --git a/ui/core/components/base_modal.tsx b/ui/core/components/base_modal.tsx index 83b892d8dc..4fa66ae21c 100644 --- a/ui/core/components/base_modal.tsx +++ b/ui/core/components/base_modal.tsx @@ -1,6 +1,5 @@ import { Modal } from 'bootstrap'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { Component } from './component'; @@ -86,10 +85,14 @@ export class BaseModal extends Component { this.modal = new Modal(this.rootElem); if (this.modalConfig.disposeOnClose) { - this.rootElem.addEventListener('hidden.bs.modal', _ => { - this.rootElem.remove(); - this.dispose(); - }); + this.rootElem.addEventListener( + 'hidden.bs.modal', + () => { + this.rootElem.remove(); + this.dispose(); + }, + { once: true }, + ); } } diff --git a/ui/core/components/boolean_picker.ts b/ui/core/components/boolean_picker.ts index d04bf154d9..7db67d7f20 100644 --- a/ui/core/components/boolean_picker.ts +++ b/ui/core/components/boolean_picker.ts @@ -32,9 +32,13 @@ export class BooleanPicker extends Input { this.init(); - this.inputElem.addEventListener('change', () => { - this.inputChanged(TypedEvent.nextEventID()); - }); + this.inputElem.addEventListener( + 'change', + () => { + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); } getInputElem(): HTMLElement { diff --git a/ui/core/components/character_stats.tsx b/ui/core/components/character_stats.tsx index 36efd57a84..bd25917aa6 100644 --- a/ui/core/components/character_stats.tsx +++ b/ui/core/components/character_stats.tsx @@ -1,6 +1,5 @@ import tippy, { Instance as TippyInstance } from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import * as Mechanics from '../constants/mechanics.js'; import { Player } from '../player.js'; @@ -158,7 +157,7 @@ export class CharacterStats extends Component { {`${this.statDisplayString(finalStats, finalStats, stat, true)} `} - {stat == Stat.StatMastery && ( + {stat === Stat.StatMastery && ( ); + tippy(statLinkElem, { content: tooltipContent, }); @@ -285,7 +285,7 @@ export class CharacterStats extends Component { private statDisplayString(stats: Stats, deltaStats: Stats, stat: Stat, includeBase?: boolean): string { let rawValue = deltaStats.getStat(stat); - rawValue *= 1; + rawValue *= 1; let displayStr = String(Math.round(rawValue)); @@ -307,10 +307,7 @@ export class CharacterStats extends Component { } else if (stat == Stat.StatBlock) { // TODO: Figure out how to display these differently for the components than the final value //displayStr += ` (${(rawValue / Mechanics.BLOCK_RATING_PER_BLOCK_CHANCE).toFixed(2)}%)`; - displayStr += ` (${( - rawValue / Mechanics.BLOCK_RATING_PER_BLOCK_CHANCE + - 5.0 - ).toFixed(2)}%)`; + displayStr += ` (${(rawValue / Mechanics.BLOCK_RATING_PER_BLOCK_CHANCE + 5.0).toFixed(2)}%)`; } else if (stat == Stat.StatDodge) { //displayStr += ` (${(rawValue / Mechanics.DODGE_RATING_PER_DODGE_CHANCE).toFixed(2)}%)`; displayStr += ` (${(stats.getPseudoStat(PseudoStat.PseudoStatDodge) * 100).toFixed(2)}%)`; @@ -339,36 +336,41 @@ export class CharacterStats extends Component { private bonusStatsLink(stat: Stat): HTMLElement { const statName = getClassStatName(stat, this.player.getClass()); + const linkRef = ref(); + const iconRef = ref(); const link = ( - - + + ); - tippy(link.children[0], { content: `Bonus ${statName}` }); - - let popover: TippyInstance | null = null; - - const picker = new NumberPicker(null, this.player, { - id: `character-bonus-stat-${stat}`, - label: `Bonus ${statName}`, - extraCssClasses: ['mb-0'], - changedEvent: (player: Player) => player.bonusStatsChangeEmitter, - getValue: (player: Player) => player.getBonusStats().getStat(stat), - setValue: (eventID: EventID, player: Player, newValue: number) => { - const bonusStats = player.getBonusStats().withStat(stat, newValue); - player.setBonusStats(eventID, bonusStats); - popover?.hide(); - }, - }); - - popover = tippy(link, { + tippy(iconRef.value!, { content: `Bonus ${statName}` }); + tippy(linkRef.value!, { interactive: true, trigger: 'click', theme: 'bonus-stats-popover', placement: 'right', - content: picker.rootElem, + onShow: instance => { + const picker = new NumberPicker(null, this.player, { + id: `character-bonus-stat-${stat}`, + label: `Bonus ${statName}`, + extraCssClasses: ['mb-0'], + changedEvent: (player: Player) => player.bonusStatsChangeEmitter, + getValue: (player: Player) => player.getBonusStats().getStat(stat), + setValue: (eventID: EventID, player: Player, newValue: number) => { + const bonusStats = player.getBonusStats().withStat(stat, newValue); + player.setBonusStats(eventID, bonusStats); + instance?.hide(); + }, + }); + instance.setContent(picker.rootElem); + }, }); return link as HTMLElement; diff --git a/ui/core/components/content_block.tsx b/ui/core/components/content_block.tsx index d7fe928487..a8af22705f 100644 --- a/ui/core/components/content_block.tsx +++ b/ui/core/components/content_block.tsx @@ -1,5 +1,5 @@ import tippy from 'tippy.js'; -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { Component } from './component.js'; diff --git a/ui/core/components/copy_button.tsx b/ui/core/components/copy_button.tsx index 55fe9a364c..351fadbef2 100644 --- a/ui/core/components/copy_button.tsx +++ b/ui/core/components/copy_button.tsx @@ -1,6 +1,5 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { Component } from './component'; @@ -28,7 +27,7 @@ export class CopyButton extends Component { const button = btnRef.value!; let clicked = false; - button.addEventListener('click', _event => { + button.addEventListener('click', () => { if (clicked) return; const data = this.config.getContent(); diff --git a/ui/core/components/detailed_results.tsx b/ui/core/components/detailed_results.tsx index a5be336076..11ac02ef93 100644 --- a/ui/core/components/detailed_results.tsx +++ b/ui/core/components/detailed_results.tsx @@ -1,4 +1,4 @@ -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { REPO_NAME } from '../constants/other'; import { DetailedResultsUpdate, SimRun, SimRunData } from '../proto/ui'; diff --git a/ui/core/components/detailed_results/log_runner.tsx b/ui/core/components/detailed_results/log_runner.tsx index 7810d98298..5769815afb 100644 --- a/ui/core/components/detailed_results/log_runner.tsx +++ b/ui/core/components/detailed_results/log_runner.tsx @@ -1,7 +1,6 @@ // @ts-expect-error import debounce from 'lodash/debounce'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { SimLog } from '../../proto_utils/logs_parser'; import { TypedEvent } from '../../typed_event.js'; @@ -11,6 +10,13 @@ export class LogRunner extends ResultComponent { private virtualScroll: CustomVirtualScroll | null = null; readonly showDebugChangeEmitter = new TypedEvent('Show Debug'); private showDebug = false; + private ui: { + search: HTMLInputElement; + actions: HTMLDivElement; + buttonToTop: HTMLButtonElement; + scrollContainer: HTMLDivElement; + contentContainer: HTMLTableSectionElement; + }; cacheOutput: { cacheKey: number | null; logs: SimLog[] | null; @@ -22,36 +28,53 @@ export class LogRunner extends ResultComponent { config.rootCssClass = 'log-runner-root'; super(config); - // Existing setup code for the component... - this.rootElem.innerHTML += ` -
- - -
-
- - - - - - - - -
Time
Event
-
- `; - const searchInput = this.rootElem.querySelector('#log-search-input') as HTMLInputElement; + const searchRef = ref(); + const actionsRef = ref(); + const buttonToTopRef = ref(); + const scrollContainerRef = ref(); + const contentContainerRef = ref(); + + this.rootElem.appendChild( + <> +
+ + +
+
+ + + + + + + + +
Time +
Event
+
+
+ , + ); + + this.ui = { + search: searchRef.value!, + actions: actionsRef.value!, + buttonToTop: buttonToTopRef.value!, + scrollContainer: scrollContainerRef.value!, + contentContainer: contentContainerRef.value!, + }; // Use the 'input' event to trigger search as the user types const onSearchHandler = () => { - this.searchLogs(searchInput.value); + this.searchLogs(this.ui.search.value); }; - searchInput.addEventListener('input', debounce(onSearchHandler, 150)); - const scrollToTopBtn = this.rootElem.querySelector('#log-runner-scroll-to-top-btn'); - scrollToTopBtn?.addEventListener('click', () => { + this.ui.search?.addEventListener('input', debounce(onSearchHandler, 150)); + this.ui.buttonToTop?.addEventListener('click', () => { this.virtualScroll?.scrollToTop(); }); - new BooleanPicker(this.rootElem.querySelector('.log-runner-actions')!, this, { + new BooleanPicker(this.ui.actions, this, { id: 'log-runner-show-debug', extraCssClasses: ['show-debug-picker'], label: 'Show Debug Statements', @@ -73,13 +96,10 @@ export class LogRunner extends ResultComponent { } private initializeClusterize(): void { - const scrollElem = this.rootElem.querySelector('#log-runner-logs-scroll') as HTMLElement; - const contentElem = this.rootElem.querySelector('#log-runner-logs') as HTMLElement; - this.virtualScroll = new CustomVirtualScroll({ - scrollContainer: scrollElem, - contentContainer: contentElem, - itemHeight: 30, + scrollContainer: this.ui.scrollContainer, + contentContainer: this.ui.contentContainer, + itemHeight: 32, }); } @@ -121,15 +141,19 @@ export class LogRunner extends ResultComponent { const validLogs = resultData.result.logs.filter(log => !log.isCastCompleted()); this.cacheOutput.cacheKey = resultData?.eventID; this.cacheOutput.logs = validLogs; - this.cacheOutput.logsAsHTML = validLogs.map(log => ( + this.cacheOutput.logsAsHTML = validLogs.map(log => this.renderItem(log)); + this.cacheOutput.logsAsText = this.cacheOutput.logsAsHTML.map(element => fragmentToString(element).trim().toLowerCase()); + + return this.cacheOutput.logsAsHTML; + } + + renderItem(log: SimLog) { + return ( {log.formattedTimestamp()} {log.toHTML(false)} - )); - this.cacheOutput.logsAsText = this.cacheOutput.logsAsHTML.map(element => fragmentToString(element).trim().toLowerCase()); - - return this.cacheOutput.logsAsHTML; + ) as HTMLTableRowElement; } } @@ -190,17 +214,17 @@ class CustomVirtualScroll { private updateVisibleItems(): void { const endIndex = this.startIndex + this.visibleItemsCount; const visibleItems = this.items.slice(this.startIndex, endIndex); + const remainingItems = this.items.length - endIndex; - // Reset content and adjust placeholders - this.contentContainer.innerHTML = ''; - this.contentContainer.appendChild(this.placeholderTop); + // Update the height of the placeholders before it's placed in the dom to prevent rerender this.placeholderTop.style.height = `${this.startIndex * this.itemHeight}px`; - const fragment = document.createDocumentFragment(); - visibleItems.forEach(item => fragment.appendChild(item)); - this.contentContainer.appendChild(fragment); - - this.contentContainer.appendChild(this.placeholderBottom); - const remainingItems = this.items.length - endIndex; this.placeholderBottom.style.height = `${remainingItems * this.itemHeight}px`; + this.contentContainer.replaceChildren( + <> + {this.placeholderTop} + {visibleItems.map(item => item)} + {this.placeholderBottom} + , + ); } } diff --git a/ui/core/components/detailed_results/metrics_table.tsx b/ui/core/components/detailed_results/metrics_table.tsx index a964b97d21..cd42226691 100644 --- a/ui/core/components/detailed_results/metrics_table.tsx +++ b/ui/core/components/detailed_results/metrics_table.tsx @@ -1,6 +1,5 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { ActionId } from '../../proto_utils/action_id.js'; import { UnitMetrics } from '../../proto_utils/sim_result'; diff --git a/ui/core/components/detailed_results/timeline.tsx b/ui/core/components/detailed_results/timeline.tsx index c19e862a01..31e432739e 100644 --- a/ui/core/components/detailed_results/timeline.tsx +++ b/ui/core/components/detailed_results/timeline.tsx @@ -1,6 +1,5 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { ResourceType } from '../../proto/api.js'; import { OtherAction } from '../../proto/common.js'; @@ -38,6 +37,8 @@ export class Timeline extends ResultComponent { private hiddenIds: Array; private hiddenIdsChangeEmitter; + private resetCallbacks: (() => void)[] = []; + constructor(config: ResultComponentConfig) { config.rootCssClass = 'timeline-root'; super(config); @@ -128,29 +129,29 @@ export class Timeline extends ResultComponent { let isMouseDown = false; let startX = 0; let scrollLeft = 0; - this.rotationTimeline.ondragstart = event => { + this.rotationTimeline.addEventListener('dragstart', event => { event.preventDefault(); - }; - this.rotationTimeline.onmousedown = event => { + }); + this.rotationTimeline.addEventListener('mousedown', event => { isMouseDown = true; startX = event.pageX - this.rotationTimeline.offsetLeft; scrollLeft = this.rotationTimeline.scrollLeft; - }; - this.rotationTimeline.onmouseleave = () => { + }); + this.rotationTimeline.addEventListener('mouseleave', () => { isMouseDown = false; this.rotationTimeline.classList.remove('active'); - }; - this.rotationTimeline.onmouseup = () => { + }); + this.rotationTimeline.addEventListener('mouseup', () => { isMouseDown = false; this.rotationTimeline.classList.remove('active'); - }; - this.rotationTimeline.onmousemove = e => { + }); + this.rotationTimeline.addEventListener('mousemove', event => { if (!isMouseDown) return; - e.preventDefault(); - const x = e.pageX - this.rotationTimeline.offsetLeft; + event.preventDefault(); + const x = event.pageX - this.rotationTimeline.offsetLeft; const walk = (x - startX) * 3; //scroll-fast this.rotationTimeline.scrollLeft = scrollLeft - walk; - }; + }); } onSimResult(resultData: SimResultData) { @@ -615,7 +616,7 @@ export class Timeline extends ResultComponent { {labelText} ); - hideElem.value!.addEventListener('click', () => { + const onClickHandler = () => { if (isHiddenLabel) { const index = this.hiddenIds.findIndex(hiddenId => hiddenId.equals(actionId)); if (index != -1) { @@ -625,12 +626,14 @@ export class Timeline extends ResultComponent { this.hiddenIds.push(actionId); } this.hiddenIdsChangeEmitter.emit(TypedEvent.nextEventID()); - }); - tippy(hideElem.value!, { + }; + hideElem.value!.addEventListener('click', onClickHandler); + const tooltip = tippy(hideElem.value!, { theme: 'timeline-tooltip', placement: 'bottom', content: isHiddenLabel ? 'Show Row' : 'Hide Row', }); + const updateHidden = () => { if (isHiddenLabel == Boolean(this.hiddenIds.find(hiddenId => hiddenId.equals(actionId)))) { labelElem.classList.remove('hide'); @@ -638,10 +641,17 @@ export class Timeline extends ResultComponent { labelElem.classList.add('hide'); } }; - this.hiddenIdsChangeEmitter.on(updateHidden); + const event = this.hiddenIdsChangeEmitter.on(updateHidden); updateHidden(); actionId.setBackgroundAndHref(labelIcon.value!); actionId.setWowheadDataset(labelIcon.value!, { useBuffAura: isAura }); + + this.addOnResetCallback(() => { + hideElem.value?.removeEventListener('click', onClickHandler); + tooltip.destroy(); + event.dispose(); + }); + return labelElem; } @@ -661,8 +671,9 @@ export class Timeline extends ResultComponent { rowElem.classList.remove('hide'); } }; - this.hiddenIdsChangeEmitter.on(updateHidden); + const event = this.hiddenIdsChangeEmitter.on(updateHidden); updateHidden(); + this.addOnResetCallback(() => event.dispose()); return rowElem; } @@ -759,10 +770,11 @@ export class Timeline extends ResultComponent { } rowElem.appendChild(resourceElem); - tippy(resourceElem, { + const tooltip = tippy(resourceElem, { placement: 'bottom', content: this.resourceTooltipElem(resourceLogGroup, startValue(resourceLogGroup), false), }); + this.addOnResetCallback(() => tooltip.destroy()); }); this.rotationTimeline.appendChild(rowElem); } @@ -920,10 +932,11 @@ export class Timeline extends ResultComponent { ); - tippy(auraElem, { + const tooltip = tippy(auraElem, { placement: 'bottom', content: tt, }); + this.addOnResetCallback(() => tooltip.destroy()); aul.stacksChange.forEach((scl, i) => { if (scl.timestamp == aul.fadedAt) { @@ -1008,7 +1021,7 @@ export class Timeline extends ResultComponent { <> - ${player.label} + {player.label} - @@ -1051,7 +1064,7 @@ export class Timeline extends ResultComponent { After: {log.threatAfter.toFixed(1)} - ${includeAuras ? this.tooltipAurasSection(log) : null} + {includeAuras ? this.tooltipAurasSection(log) : null} ); } @@ -1130,10 +1143,20 @@ export class Timeline extends ResultComponent { } render() { + this.reset(); this.dpsResourcesPlot.render(); this.rendered = true; this.updatePlot(); } + + addOnResetCallback(callback: () => void) { + this.resetCallbacks.push(callback); + } + + reset() { + this.resetCallbacks.forEach(callback => callback()); + this.resetCallbacks = []; + } } const MELEE_ACTION_CATEGORY = 1; diff --git a/ui/core/components/detailed_results/topline_results.tsx b/ui/core/components/detailed_results/topline_results.tsx index e794ddb819..858cad692c 100644 --- a/ui/core/components/detailed_results/topline_results.tsx +++ b/ui/core/components/detailed_results/topline_results.tsx @@ -1,6 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element } from 'tsx-vanilla'; - import { DeathKnight } from '../../player_classes/death_knight.js'; import { Hunter } from '../../player_classes/hunter.js'; import { Rogue } from '../../player_classes/rogue.js'; diff --git a/ui/core/components/dropdown_picker.ts b/ui/core/components/dropdown_picker.tsx similarity index 52% rename from ui/core/components/dropdown_picker.ts rename to ui/core/components/dropdown_picker.tsx index f97e845423..a1d3f4f3d7 100644 --- a/ui/core/components/dropdown_picker.ts +++ b/ui/core/components/dropdown_picker.tsx @@ -1,35 +1,38 @@ +import { Dropdown } from 'bootstrap'; +import clsx from 'clsx'; import tippy from 'tippy.js'; +import { ref } from 'tsx-vanilla'; import { TypedEvent } from '../typed_event.js'; +import { existsInDOM } from '../utils'; import { Input, InputConfig } from './input.js'; export interface DropdownValueConfig { value: V; - submenu?: Array; + submenu?: (string | V)[]; headerText?: string; tooltip?: string; - extraCssClasses?: Array; + extraCssClasses?: string[]; } export interface DropdownPickerConfig extends InputConfig { id: string; - values: Array>; + values: DropdownValueConfig[]; equals: (a: V | undefined, b: V | undefined) => boolean; - setOptionContent: (button: HTMLButtonElement, valueConfig: DropdownValueConfig, isSelectButton: boolean) => void; + setOptionContent: (button: HTMLButtonElement, valueConfig: DropdownValueConfig, isSelectButton?: boolean) => void; createMissingValue?: (val: V) => Promise>; defaultLabel: string; } interface DropdownSubmenu { - path: Array; - + path: (string | V)[]; listElem: HTMLUListElement; } /** UI Input that uses a dropdown menu. */ export class DropdownPicker extends Input { private readonly config: DropdownPickerConfig; - private valueConfigs: Array>; + private valueConfigs: DropdownValueConfig[]; private readonly buttonElem: HTMLButtonElement; private readonly listElem: HTMLUListElement; @@ -37,6 +40,8 @@ export class DropdownPicker extends Input private currentSelection: DropdownValueConfig | null; private submenus: Array>; + private resetCallbacks: (() => void)[] = []; + constructor(parent: HTMLElement, modObject: ModObject, config: DropdownPickerConfig) { super(parent, 'dropdown-picker-root', modObject, config); this.config = config; @@ -46,71 +51,109 @@ export class DropdownPicker extends Input this.rootElem.classList.add('dropdown'); - this.buttonElem = document.createElement('button'); - this.buttonElem.classList.add('dropdown-picker-button', 'btn', 'dropdown-toggle', 'open-on-click'); - this.buttonElem.setAttribute('data-bs-toggle', 'dropdown'); - this.buttonElem.setAttribute('aria-expanded', 'false'); - this.buttonElem.setAttribute('role', 'button'); - this.buttonElem.id = config.id; - this.buttonElem.textContent = config.defaultLabel; - this.rootElem.appendChild(this.buttonElem); + const buttonRef = ref(); + const listRef = ref(); + this.rootElem.appendChild( + <> + +
    + , + ); + + this.buttonElem = buttonRef.value!; + this.listElem = listRef.value!; - this.listElem = document.createElement('ul'); - this.listElem.classList.add('dropdown-picker-list', 'dropdown-menu'); - this.rootElem.appendChild(this.listElem); + this.buttonElem.addEventListener( + 'show.bs.dropdown', + () => { + this.renderDropdown(this.valueConfigs); + }, + { signal: this.signal }, + ); + this.buttonElem.addEventListener( + 'hidden.bs.dropdown', + () => { + this.resetDropdown(); + }, + { signal: this.signal }, + ); - this.buildDropdown(this.valueConfigs); this.init(); + + this.addOnDisposeCallback(() => { + this.resetDropdown(); + this.listElem.remove(); + Dropdown.getOrCreateInstance(this.buttonElem).dispose(); + this.buttonElem.remove(); + }); } - setOptions(newValueConfigs: Array>) { - this.buildDropdown(newValueConfigs); + setOptions(newValueConfigs: DropdownValueConfig[]) { + const roomExistsInDOM = existsInDOM(this.rootElem); + const listExistsInDOM = existsInDOM(this.listElem); + const buttonExistsInDOM = existsInDOM(this.buttonElem); + + if (!roomExistsInDOM || !buttonExistsInDOM || !listExistsInDOM) { + this.dispose(); + return; + } + this.valueConfigs = newValueConfigs.filter(vc => !vc.headerText); this.setInputValue(this.getSourceValue()); + return; + } + + resetDropdown() { + this.listElem.querySelectorAll('[data-bs-toggle=dropdown]').forEach(elem => Dropdown.getOrCreateInstance(elem).dispose()); + this.resetCallbacks.forEach(callback => callback()); + this.listElem.replaceChildren(<>); } - private buildDropdown(valueConfigs: Array>) { - this.listElem.innerHTML = ''; + private renderDropdown(valueConfigs: DropdownValueConfig[]) { + this.listElem.replaceChildren(); this.submenus = []; valueConfigs.forEach(valueConfig => { - const itemElem = document.createElement('li'); const containsSubmenuChildren = valueConfigs.some(vc => vc.submenu?.some(e => !(typeof e == 'string') && this.config.equals(e, valueConfig.value))); - if (valueConfig.extraCssClasses) { - itemElem.classList.add(...valueConfig.extraCssClasses); - } - if (valueConfig.headerText) { - itemElem.classList.add('dropdown-picker-header'); - - const headerElem = document.createElement('h6'); - headerElem.classList.add('dropdown-header'); - headerElem.textContent = valueConfig.headerText; - itemElem.appendChild(headerElem); - } else { - itemElem.classList.add('dropdown-picker-item'); - - const buttonElem = document.createElement('button'); - buttonElem.classList.add('dropdown-item'); - buttonElem.type = 'button'; - this.config.setOptionContent(buttonElem, valueConfig, false); + const buttonRef = ref(); + const listItemRef = ref(); + const itemElem = ( +
  • + {valueConfig.headerText &&
    {valueConfig.headerText}
    } +
  • + ); + + if (!valueConfig.headerText) { + const buttonElem = } -
    -
    -
    -
    -
    - - + + {label === SelectorModalTabs.Items && ( + + )} +
    +
    +
    +
    +
    + +
    - {label == SelectorModalTabs.Items && ( + {label === SelectorModalTabs.Items && ( <>
    -
      +
        ); @@ -1162,38 +1183,31 @@ export class ItemList { content: EP_TOOLTIP, }); - const show1HCheckbox = this.tabContent.querySelector('.selector-modal-show-1h-weapons')!; - const show2HCheckbox = this.tabContent.querySelector('.selector-modal-show-2h-weapons')!; - - makeShow1hWeaponsSelector(show1HCheckbox, player.sim); - makeShow2hWeaponsSelector(show2HCheckbox, player.sim); - if ( - !( - label == SelectorModalTabs.Items && - (currentSlot == ItemSlot.ItemSlotMainHand || (currentSlot == ItemSlot.ItemSlotOffHand && player.getClass() == Class.ClassWarrior)) - ) + label === SelectorModalTabs.Items && + (currentSlot === ItemSlot.ItemSlotMainHand || (currentSlot === ItemSlot.ItemSlotOffHand && player.getClass() === Class.ClassWarrior)) ) { - show1HCheckbox.style.display = 'none'; - show2HCheckbox.style.display = 'none'; + if (show1hWeaponRef.value) makeShow1hWeaponsSelector(show1hWeaponRef.value, player.sim); + if (show2hWeaponRef.value) makeShow2hWeaponsSelector(show2hWeaponRef.value, player.sim); } - makeShowEPValuesSelector(this.tabContent.getElementsByClassName('selector-modal-show-ep-values')[0] as HTMLElement, player.sim); + if (showEpValuesRef.value) makeShowEPValuesSelector(showEpValuesRef.value, player.sim); - makeShowMatchingGemsSelector(this.tabContent.getElementsByClassName('selector-modal-show-matching-gems')[0] as HTMLElement, player.sim); - if (!label.startsWith('Gem')) { - (this.tabContent.getElementsByClassName('selector-modal-show-matching-gems')[0] as HTMLElement).style.display = 'none'; + if (matchingGemsRef.value) { + makeShowMatchingGemsSelector(matchingGemsRef.value, player.sim); + if (!label.startsWith('Gem')) { + matchingGemsRef.value?.classList.add('hide'); + } } - makePhaseSelector(this.tabContent.getElementsByClassName('selector-modal-phase-selector')[0] as HTMLElement, player.sim); + if (phaseSelectorRef.value) makePhaseSelector(phaseSelectorRef.value, player.sim); - if (label == SelectorModalTabs.Items) { + if (label === SelectorModalTabs.Items) { const filtersMenu = new FiltersMenu(parent, player, currentSlot); - const filtersButton = this.tabContent.getElementsByClassName('selector-modal-filters-button')[0] as HTMLElement; - filtersButton.addEventListener('click', () => filtersMenu.open()); + filtersButtonRef.value?.addEventListener('click', () => filtersMenu.open()); } - this.listElem = this.tabContent.getElementsByClassName('selector-modal-list')[0] as HTMLElement; + this.listElem = modalListRef.value!; this.itemsToDisplay = []; this.scroller = new Clusterize( @@ -1223,66 +1237,70 @@ export class ItemList { }, ); - const removeButton = this.tabContent.getElementsByClassName('selector-modal-remove-button')[0] as HTMLButtonElement; - removeButton.addEventListener('click', _event => { - onRemove(TypedEvent.nextEventID()); - }); + const removeButton = removeButtonRef.value; + if (removeButton) { + removeButton.addEventListener('click', _event => { + onRemove(TypedEvent.nextEventID()); + }); - switch (label) { - case SelectorModalTabs.Enchants: - removeButton.textContent = 'Remove Enchant'; - break; - case SelectorModalTabs.Reforging: - removeButton.textContent = 'Remove Reforge'; - break; - case SelectorModalTabs.Gem1: - case SelectorModalTabs.Gem2: - case SelectorModalTabs.Gem3: - removeButton.textContent = 'Remove Gem'; - break; + switch (label) { + case SelectorModalTabs.Enchants: + removeButton.textContent = 'Remove Enchant'; + break; + case SelectorModalTabs.Reforging: + removeButton.textContent = 'Remove Reforge'; + break; + case SelectorModalTabs.Gem1: + case SelectorModalTabs.Gem2: + case SelectorModalTabs.Gem3: + removeButton.textContent = 'Remove Gem'; + break; + } } this.updateSelected(); - this.searchInput = this.tabContent.getElementsByClassName('selector-modal-search')[0] as HTMLInputElement; + this.searchInput = searchRef.value!; this.searchInput.addEventListener('input', () => this.applyFilters()); - const simAllButton = this.tabContent.getElementsByClassName('selector-modal-simall-button')[0] as HTMLButtonElement; - if (label == SelectorModalTabs.Items) { - simAllButton.hidden = !player.sim.getShowExperimental(); - player.sim.showExperimentalChangeEmitter.on(() => { + const simAllButton = simAllButtonRef.value; + if (simAllButton) { + if (label === SelectorModalTabs.Items) { simAllButton.hidden = !player.sim.getShowExperimental(); - }); - simAllButton.addEventListener('click', _event => { - if (simUI instanceof IndividualSimUI) { - const itemSpecs = Array(); - const isRangedOrTrinket = - this.slot == ItemSlot.ItemSlotRanged || this.slot == ItemSlot.ItemSlotTrinket1 || this.slot == ItemSlot.ItemSlotTrinket2; - - const curItem = this.equippedToItemFn(this.player.getEquippedItem(this.slot)); - let curEP = 0; - if (curItem != null) { - curEP = this.computeEP(curItem); - } - - for (const i of this.itemsToDisplay) { - const idata = this.itemData[i]; - if (!isRangedOrTrinket && curEP > 0 && idata.baseEP < curEP / 2) { - continue; // If we have EPs on current item, dont sim items with less than half the EP. + player.sim.showExperimentalChangeEmitter.on(() => { + simAllButton.hidden = !player.sim.getShowExperimental(); + }); + simAllButton.addEventListener('click', _event => { + if (simUI instanceof IndividualSimUI) { + const itemSpecs = Array(); + const isRangedOrTrinket = + this.slot === ItemSlot.ItemSlotRanged || this.slot === ItemSlot.ItemSlotTrinket1 || this.slot === ItemSlot.ItemSlotTrinket2; + + const curItem = this.equippedToItemFn(this.player.getEquippedItem(this.slot)); + let curEP = 0; + if (!!curItem) { + curEP = this.computeEP(curItem); } - // Add any item that is either >0 EP or a trinket/ranged item. - if (idata.baseEP > 0 || isRangedOrTrinket) { - itemSpecs.push(ItemSpec.create({ id: idata.id })); + for (const i of this.itemsToDisplay) { + const idata = this.itemData[i]; + if (!isRangedOrTrinket && curEP > 0 && idata.baseEP < curEP / 2) { + continue; // If we have EPs on current item, dont sim items with less than half the EP. + } + + // Add any item that is either >0 EP or a trinket/ranged item. + if (idata.baseEP > 0 || isRangedOrTrinket) { + itemSpecs.push(ItemSpec.create({ id: idata.id })); + } } + simUI.bt.addItems(itemSpecs); + // TODO: should we open the bulk sim UI or should we run in the background showing progress, and then sort the items in the picker? } - simUI.bt.addItems(itemSpecs); - // TODO: should we open the bulk sim UI or should we run in the background showing progress, and then sort the items in the picker? - } - }); - } else { - // always hide non-items from being added to batch. - simAllButton.hidden = true; + }); + } else { + // always hide non-items from being added to batch. + simAllButton.hidden = true; + } } } @@ -1332,15 +1350,15 @@ export class ItemList { const idx = (item as HTMLElement).dataset.idx!; const itemData = this.itemData[parseFloat(idx)]; - if (itemData.id == newItemId) item.classList.add('active'); + if (itemData.id === newItemId) item.classList.add('active'); else item.classList.remove('active'); - const epDeltaElem = item.getElementsByClassName('selector-modal-list-item-ep-delta')[0] as HTMLSpanElement; + const epDeltaElem = item.querySelector('.selector-modal-list-item-ep-delta'); if (epDeltaElem) { epDeltaElem.textContent = ''; if (itemData.item) { const listItemEP = this.computeEP(itemData.item); - if (newEP != listItemEP) { + if (newEP !== listItemEP) { formatDeltaTextElem(epDeltaElem, newEP, listItemEP, 0); } } @@ -1372,7 +1390,7 @@ export class ItemList { return false; } - if (this.searchInput.value.length > 0) { + if (!!this.searchInput.value.length) { const formatQuery = (value: string) => value.toLowerCase().replaceAll(/[^a-zA-Z0-9\s]/g, ''); const searchQuery = formatQuery(this.searchInput.value).split(' '); @@ -1390,7 +1408,7 @@ export class ItemList { return true; }); - if (this.slot == ItemSlot.ItemSlotTrinket1 || this.slot == ItemSlot.ItemSlotTrinket2) { + if ([ItemSlot.ItemSlotTrinket1, ItemSlot.ItemSlotTrinket2].includes(this.slot)) { // Trinket EP is weird so just sort by ilvl instead. this.sortBy = ItemListSortBy.ILVL; } else { @@ -1406,7 +1424,7 @@ export class ItemList { } public sort(sortBy: ItemListSortBy) { - if (this.sortBy == sortBy) { + if (this.sortBy === sortBy) { this.sortDirection = 1 - this.sortDirection; } else { this.sortDirection = SortDirection.DESC; @@ -1418,8 +1436,8 @@ export class ItemList { private sortIdxs(itemIdxs: Array): number[] { let sortFn = (itemA: T, itemB: T) => { - const first = this.sortDirection == SortDirection.DESC ? itemB : itemA; - const second = this.sortDirection == SortDirection.DESC ? itemA : itemB; + const first = this.sortDirection === SortDirection.DESC ? itemB : itemA; + const second = this.sortDirection === SortDirection.DESC ? itemA : itemB; const diff = this.computeEP(first) - this.computeEP(second); // if EP is same, sort by ilvl if (Math.abs(diff) < 0.01) return (first as unknown as Item).ilvl - (second as unknown as Item).ilvl; @@ -1428,8 +1446,8 @@ export class ItemList { switch (this.sortBy) { case ItemListSortBy.ILVL: sortFn = (itemA: T, itemB: T) => { - const first = this.sortDirection == SortDirection.DESC ? itemB : itemA; - const second = this.sortDirection == SortDirection.DESC ? itemA : itemB; + const first = this.sortDirection === SortDirection.DESC ? itemB : itemA; + const second = this.sortDirection === SortDirection.DESC ? itemA : itemB; return (first as unknown as Item).ilvl - (second as unknown as Item).ilvl; }; break; @@ -1446,8 +1464,8 @@ export class ItemList { } public hideOrShowEPValues() { - const labels = this.tabContent.getElementsByClassName('ep-label'); - const container = this.tabContent.getElementsByClassName('selector-modal-list'); + const labels = this.tabContent.querySelectorAll('.ep-label'); + const container = this.tabContent.querySelectorAll('.selector-modal-list'); const show = this.player.sim.getShowEPValues(); const display = show ? '' : 'none'; @@ -1467,7 +1485,7 @@ export class ItemList { const equippedItem = this.equippedToItemFn(this.gearData.getEquippedItem()); const equippedItemID = equippedItem - ? this.label == 'Enchants' + ? this.label === 'Enchants' ? (equippedItem as unknown as Enchant).effectId : (equippedItem as unknown as Item).id : 0; @@ -1476,9 +1494,11 @@ export class ItemList { const nameElem = ref(); const anchorElem = ref(); const iconElem = ref(); + const favoriteElem = ref(); + const favoriteIconElem = ref(); const listItemElem = ( -
      • +
      • + {this.label === SelectorModalTabs.Items && ( + <> +
        {this.getSourceInfo(itemData.item as unknown as Item, this.player.sim)}
        +
        {(itemData.item as unknown as Item).ilvl}
        + + )} + {![ItemSlot.ItemSlotTrinket1, ItemSlot.ItemSlotTrinket2].includes(this.slot) && ( +
        + + {itemEP < 9.95 ? itemEP.toFixed(1).toString() : Math.round(itemEP).toString()} + + itemData.item && equippedItemEP !== itemEP && formatDeltaTextElem(e, equippedItemEP, itemEP, 0)}> +
        + )} +
        + +
      • ); - if (this.label == SelectorModalTabs.Items) { - listItemElem.appendChild( -
        {this.getSourceInfo(itemData.item as unknown as Item, this.player.sim)}
        , - ); - listItemElem.appendChild(
        {(itemData.item as unknown as Item).ilvl}
        ); - } - - if (this.slot != ItemSlot.ItemSlotTrinket1 && this.slot != ItemSlot.ItemSlotTrinket2) { - listItemElem.appendChild( -
        - {itemEP < 9.95 ? itemEP.toFixed(1).toString() : Math.round(itemEP).toString()} - itemData.item && equippedItemEP != itemEP && formatDeltaTextElem(e, equippedItemEP, itemEP, 0)}> -
        , - ); - } - - const favoriteElem = ref(); - listItemElem.appendChild( -
        - -
        , - ); - anchorElem.value!.addEventListener('click', (event: Event) => { event.preventDefault(); if (event.target === favoriteElem.value) return false; @@ -1540,23 +1554,23 @@ export class ItemList { const setFavorite = (isFavorite: boolean) => { const filters = this.player.sim.getFilters(); - if (this.label == SelectorModalTabs.Items) { + if (this.label === SelectorModalTabs.Items) { const favId = itemData.id; if (isFavorite) { filters.favoriteItems.push(favId); } else { const favIdx = filters.favoriteItems.indexOf(favId); - if (favIdx != -1) { + if (favIdx !== -1) { filters.favoriteItems.splice(favIdx, 1); } } - } else if (this.label == 'Enchants') { + } else if (this.label === 'Enchants') { const favId = getUniqueEnchantString(itemData.item as unknown as Enchant); if (isFavorite) { filters.favoriteEnchants.push(favId); } else { const favIdx = filters.favoriteEnchants.indexOf(favId); - if (favIdx != -1) { + if (favIdx !== -1) { filters.favoriteEnchants.splice(favIdx, 1); } } @@ -1566,13 +1580,13 @@ export class ItemList { filters.favoriteGems.push(favId); } else { const favIdx = filters.favoriteGems.indexOf(favId); - if (favIdx != -1) { + if (favIdx !== -1) { filters.favoriteGems.splice(favIdx, 1); } } } - favoriteElem.value!.children[0].classList.toggle('fas'); - favoriteElem.value!.children[0].classList.toggle('far'); + favoriteIconElem.value?.classList.toggle('fas'); + favoriteIconElem.value?.classList.toggle('far'); listItemElem.dataset.fav = isFavorite.toString(); this.player.sim.setFilters(TypedEvent.nextEventID(), filters); @@ -1581,10 +1595,10 @@ export class ItemList { const isFavorite = this.isItemFavorited(itemData); if (isFavorite) { - favoriteElem.value!.children[0].classList.add('fas'); + favoriteIconElem.value?.classList.add('fas'); listItemElem.dataset.fav = 'true'; } else { - favoriteElem.value!.children[0].classList.add('far'); + favoriteIconElem.value?.classList.add('far'); listItemElem.dataset.fav = 'false'; } @@ -1592,9 +1606,9 @@ export class ItemList { } private isItemFavorited(itemData: ItemData): boolean { - if (this.label == SelectorModalTabs.Items) { + if (this.label === SelectorModalTabs.Items) { return this.currentFilters.favoriteItems.includes(itemData.id); - } else if (this.label == 'Enchants') { + } else if (this.label === 'Enchants') { return this.currentFilters.favoriteEnchants.includes(getUniqueEnchantString(itemData.item as unknown as Enchant)); } else if (this.label.startsWith('Gem')) { return this.currentFilters.favoriteGems.includes(itemData.id); @@ -1611,7 +1625,7 @@ export class ItemList { ); }; - if (!item.sources || item.sources.length == 0) { + if (!item.sources?.length) { if (item.randomSuffixOptions.length) { return makeAnchor(`${ActionId.makeItemUrl(item.id)}#dropped-by`, 'World Drop'); } else if (isPVPItem(item)) { @@ -1631,14 +1645,14 @@ export class ItemList { } let source = item.sources[0]; - if (source.source.oneofKind == 'crafted') { + if (source.source.oneofKind === 'crafted') { const src = source.source.crafted; if (src.spellId) { return makeAnchor(ActionId.makeSpellUrl(src.spellId), professionNames.get(src.profession) ?? 'Unknown'); } return makeAnchor(ActionId.makeItemUrl(item.id), professionNames.get(src.profession) ?? 'Unknown'); - } else if (source.source.oneofKind == 'drop') { + } else if (source.source.oneofKind === 'drop') { const src = source.source.drop; const zone = sim.db.getZone(src.zoneId); const npc = sim.db.getNpc(src.npcId); @@ -1667,27 +1681,27 @@ export class ItemList { ); } return makeAnchor(ActionId.makeZoneUrl(zone.id), zone.name); - } else if (source.source.oneofKind == 'quest' && source.source.quest.name) { + } else if (source.source.oneofKind === 'quest' && source.source.quest.name) { const src = source.source.quest; return makeAnchor( ActionId.makeQuestUrl(src.id), Quest - {item.factionRestriction == UIItem_FactionRestriction.ALLIANCE_ONLY && ( + {item.factionRestriction === UIItem_FactionRestriction.ALLIANCE_ONLY && ( )} - {item.factionRestriction == UIItem_FactionRestriction.HORDE_ONLY && ( + {item.factionRestriction === UIItem_FactionRestriction.HORDE_ONLY && ( )}
        {src.name}
        , ); - } else if ((source = item.sources.find(source => source.source.oneofKind == 'rep') ?? source).source.oneofKind == 'rep') { + } else if ((source = item.sources.find(source => source.source.oneofKind === 'rep') ?? source).source.oneofKind === 'rep') { const factionNames = item.sources - .filter(source => source.source.oneofKind == 'rep') + .filter(source => source.source.oneofKind === 'rep') .map(source => - source.source.oneofKind == 'rep' ? REP_FACTION_NAMES[source.source.rep.repFactionId] : REP_FACTION_NAMES[RepFaction.RepFactionUnknown], + source.source.oneofKind === 'rep' ? REP_FACTION_NAMES[source.source.rep.repFactionId] : REP_FACTION_NAMES[RepFaction.RepFactionUnknown], ); const src = source.source.rep; const npcId = REP_FACTION_QUARTERMASTERS[src.repFactionId]; @@ -1697,10 +1711,10 @@ export class ItemList { {factionNames.map(name => ( {name} - {item.factionRestriction == UIItem_FactionRestriction.ALLIANCE_ONLY && ( + {item.factionRestriction === UIItem_FactionRestriction.ALLIANCE_ONLY && ( )} - {item.factionRestriction == UIItem_FactionRestriction.HORDE_ONLY && ( + {item.factionRestriction === UIItem_FactionRestriction.HORDE_ONLY && ( )}
        @@ -1721,7 +1735,7 @@ export class ItemList { PVP
        , ); - } else if (source.source.oneofKind == 'soldBy') { + } else if (source.source.oneofKind === 'soldBy') { const src = source.source.soldBy; return makeAnchor( ActionId.makeNpcUrl(src.npcId), diff --git a/ui/core/components/icon_enum_picker.tsx b/ui/core/components/icon_enum_picker.tsx index 873a0b1a42..48bb7b2365 100644 --- a/ui/core/components/icon_enum_picker.tsx +++ b/ui/core/components/icon_enum_picker.tsx @@ -1,6 +1,5 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { ActionId } from '../proto_utils/action_id.js'; import { TypedEvent } from '../typed_event.js'; @@ -60,7 +59,7 @@ export class IconEnumPicker extends Input { this.config = config; this.currentValue = this.config.zeroValue; - this.config.changedEvent(this.modObject).on(_ => { + const event = this.config.changedEvent(this.modObject).on(() => { if (this.showWhen()) { this.restoreValue(); this.rootElem.classList.remove('hide'); @@ -70,15 +69,22 @@ export class IconEnumPicker extends Input { } }); + this.addOnDisposeCallback(() => event.dispose()); + if (config.tooltip) { - tippy(this.rootElem, { + const tooltip = tippy(this.rootElem, { content: config.tooltip, }); + this.addOnDisposeCallback(() => tooltip.destroy()); } + const buttonRef = ref(); + const dropdownRef = ref(); + const labelRef = ref(); this.rootElem.appendChild( <> extends Input { whtticon: 'false', disableWowheadTouchTooltip: 'true', }}> -
          - +
            + , ); - this.buttonElem = this.rootElem.querySelector('.icon-picker-button') as HTMLAnchorElement; - this.buttonText = this.rootElem.querySelector('label') as HTMLElement; - const dropdownMenu = this.rootElem.querySelector('.dropdown-menu') as HTMLElement; - - if (this.config.numColumns) dropdownMenu.style.gridTemplateColumns = `repeat(${this.config.numColumns}, 1fr)`; + this.buttonElem = buttonRef.value!; + this.buttonText = labelRef.value!; + const dropdownMenu = dropdownRef.value!; - if (this.config.direction == IconEnumPickerDirection.Horizontal) dropdownMenu.style.gridAutoFlow = 'column'; - - this.config.values.forEach((valueConfig, _) => { + this.config.values.forEach(valueConfig => { const optionContainer = document.createElement('li'); optionContainer.classList.add('icon-dropdown-option', 'dropdown-option'); dropdownMenu.appendChild(optionContainer); @@ -128,20 +136,26 @@ export class IconEnumPicker extends Input { } }; - this.config.changedEvent(this.modObject).on(updateOption); + const event = this.config.changedEvent(this.modObject).on(updateOption); updateOption(); - option.addEventListener('click', event => { - event.preventDefault(); - this.currentValue = valueConfig.value; - this.storedValue = undefined; - this.inputChanged(TypedEvent.nextEventID()); - }); + option.addEventListener( + 'click', + event => { + event.preventDefault(); + this.currentValue = valueConfig.value; + this.storedValue = undefined; + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); + this.addOnDisposeCallback(() => event.dispose()); if (valueConfig.tooltip) { - tippy(option, { + const tooltip = tippy(option, { content: valueConfig.tooltip, }); + this.addOnDisposeCallback(() => tooltip.destroy()); } }); diff --git a/ui/core/components/icon_picker.tsx b/ui/core/components/icon_picker.tsx index 4eb17915b5..0d0f7856b5 100644 --- a/ui/core/components/icon_picker.tsx +++ b/ui/core/components/icon_picker.tsx @@ -1,5 +1,4 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { ActionId } from '../proto_utils/action_id.js'; import { TypedEvent } from '../typed_event.js'; @@ -93,7 +92,7 @@ export class IconPicker extends Input { + const event = this.config.changedEvent(this.modObject).on(() => { this.config.actionId.fillAndSet(this.rootAnchor, true, true); if (this.showWhen()) { @@ -107,22 +106,37 @@ export class IconPicker extends Input { - event.preventDefault(); - this.handleLeftClick(); - }); - - this.rootAnchor.addEventListener('contextmenu', event => { - event.preventDefault(); - }); - this.rootAnchor.addEventListener('mousedown', event => { - const rightClick = isRightClick(event); + this.rootAnchor.addEventListener( + 'click', + event => { + event.preventDefault(); + this.handleLeftClick(); + }, + { signal: this.signal }, + ); - if (rightClick) { + this.rootAnchor.addEventListener( + 'contextmenu', + event => { event.preventDefault(); - this.handleRightClick(); - } - }); + }, + { signal: this.signal }, + ); + + this.rootAnchor.addEventListener( + 'mousedown', + event => { + const rightClick = isRightClick(event); + + if (rightClick) { + event.preventDefault(); + this.handleRightClick(); + } + }, + { signal: this.signal }, + ); + + this.addOnDisposeCallback(() => event.dispose()); } handleLeftClick() { diff --git a/ui/core/components/individual_sim_ui/apl_helpers.ts b/ui/core/components/individual_sim_ui/apl_helpers.tsx similarity index 95% rename from ui/core/components/individual_sim_ui/apl_helpers.ts rename to ui/core/components/individual_sim_ui/apl_helpers.tsx index 642dfaf0db..6aebab419d 100644 --- a/ui/core/components/individual_sim_ui/apl_helpers.ts +++ b/ui/core/components/individual_sim_ui/apl_helpers.tsx @@ -1,13 +1,15 @@ +import { ref } from 'tsx-vanilla'; + import { Player, UnitMetadata } from '../../player.js'; import { APLValueEclipsePhase, APLValueRuneSlot, APLValueRuneType } from '../../proto/apl.js'; import { ActionID, OtherAction, UnitReference, UnitReference_Type as UnitType } from '../../proto/common.js'; import { FeralDruid_Rotation_AplType } from '../../proto/druid.js'; import { ActionId, defaultTargetIcon, getPetIconFromName } from '../../proto_utils/action_id.js'; -import { EventID, TypedEvent } from '../../typed_event.js'; +import { EventID } from '../../typed_event.js'; import { bucket, randomUUID } from '../../utils.js'; import { BooleanPicker } from '../boolean_picker.js'; -import { DropdownPicker, DropdownPickerConfig, DropdownValueConfig, TextDropdownPicker } from '../dropdown_picker.js'; -import { Input, InputConfig } from '../input.js'; +import { DropdownPicker, DropdownPickerConfig, DropdownValueConfig, TextDropdownPicker } from '../dropdown_picker.jsx'; +import { Input, InputConfig } from '../input.jsx'; import { NumberPicker, NumberPickerConfig } from '../number_picker.js'; import { AdaptiveStringPicker } from '../string_picker.js'; import { UnitPicker, UnitPickerConfig, UnitValue } from '../unit_picker.js'; @@ -248,17 +250,23 @@ export class APLActionIDPicker extends DropdownPicker, ActionID, Act equals: (a, b) => (a == null) == (b == null) && (!a || a.equals(b!)), setOptionContent: (button, valueConfig) => { const actionId = valueConfig.value; - const iconElem = document.createElement('a'); + const iconRef = ref(); const isAuraType = ['auras', 'stackable_auras', 'icd_auras', 'exclusive_effect_auras'].includes(config.actionIdSet); - iconElem.classList.add('apl-actionid-item-icon'); - iconElem.dataset.whtticon = 'false'; - - actionId.setBackgroundAndHref(iconElem); - actionId.setWowheadDataset(iconElem, { useBuffAura: isAuraType }); - button.appendChild(iconElem); - - const textElem = document.createTextNode(actionId.name); - button.appendChild(textElem); + button.appendChild( + <> + + {actionId.name} + , + ); + + actionId.setBackgroundAndHref(iconRef.value!); + actionId.setWowheadDataset(iconRef.value!, { useBuffAura: isAuraType }); }, createMissingValue: value => { if (value.anyId() == 0) { @@ -287,7 +295,12 @@ export class APLActionIDPicker extends DropdownPicker, ActionID, Act } }; updateValues(); - TypedEvent.onAny([player.sim.unitMetadataEmitter, player.rotationChangeEmitter]).on(updateValues); + const unitMetaEvent = player.sim.unitMetadataEmitter.on(updateValues); + const rotationChangeEvent = player.rotationChangeEmitter.on(updateValues); + this.addOnDisposeCallback(() => { + unitMetaEvent.dispose(); + rotationChangeEvent.dispose(); + }); } } @@ -372,7 +385,10 @@ export class APLUnitPicker extends UnitPicker> { this.rootElem.classList.add('apl-unit-picker'); this.updateValues(); - player.sim.unitMetadataEmitter.on(() => this.updateValues()); + const event = player.sim.unitMetadataEmitter.on(() => this.updateValues()); + this.addOnDisposeCallback(() => { + event.dispose(); + }); } private static refToValue(ref: UnitReference | undefined, thisPlayer: Player, targetUI: boolean | undefined): UnitValue { diff --git a/ui/core/components/individual_sim_ui/apl_rotation_picker.ts b/ui/core/components/individual_sim_ui/apl_rotation_picker.ts index e1954077ab..1a2bcba562 100644 --- a/ui/core/components/individual_sim_ui/apl_rotation_picker.ts +++ b/ui/core/components/individual_sim_ui/apl_rotation_picker.ts @@ -5,7 +5,7 @@ import { APLAction, APLListItem, APLPrepullAction, APLValue } from '../../proto/ import { ActionId } from '../../proto_utils/action_id'; import { SimUI } from '../../sim_ui'; import { EventID, TypedEvent } from '../../typed_event'; -import { randomUUID } from '../../utils'; +import { existsInDOM, randomUUID } from '../../utils'; import { Component } from '../component'; import { Input, InputConfig } from '../input'; import { ListItemPickerConfig, ListPicker } from '../list_picker'; @@ -251,9 +251,15 @@ function makeListItemWarnings(itemHeaderElem: HTMLElement, player: Player, itemHeaderElem.appendChild(warningsElem); const updateWarnings = async () => { + if (!existsInDOM(warningsElem)) { + warningsTooltip?.destroy(); + warningsElem?.remove(); + player.currentStatsEmitter.off(updateWarnings); + return; + } warningsTooltip.setContent(''); const warnings = getWarnings(player); - if (warnings.length == 0) { + if (!warnings.length) { warningsElem.style.visibility = 'hidden'; } else { warningsElem.style.visibility = 'visible'; @@ -282,15 +288,21 @@ class HidePicker extends Input, boolean> { this.inputElem = ListPicker.makeActionElem('hide-picker-button', 'fa-eye'); this.iconElem = this.inputElem.childNodes[0] as HTMLElement; + + this.inputElem.addEventListener( + 'click', + () => { + this.setInputValue(!this.getInputValue()); + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); + this.rootElem.appendChild(this.inputElem); this.tooltip = tippy(this.inputElem, { content: 'Enable/Disable' }); + this.addOnDisposeCallback(() => this.tooltip.destroy()); this.init(); - - this.inputElem.addEventListener('click', () => { - this.setInputValue(!this.getInputValue()); - this.inputChanged(TypedEvent.nextEventID()); - }); } getInputElem(): HTMLElement { diff --git a/ui/core/components/individual_sim_ui/apl_values.ts b/ui/core/components/individual_sim_ui/apl_values.ts index 9d008e2bfa..2de0ba6cc9 100644 --- a/ui/core/components/individual_sim_ui/apl_values.ts +++ b/ui/core/components/individual_sim_ui/apl_values.ts @@ -25,6 +25,7 @@ import { APLValueCurrentFocus, APLValueCurrentHealth, APLValueCurrentHealthPercent, + APLValueCurrentHolyPower, APLValueCurrentLunarEnergy, APLValueCurrentMana, APLValueCurrentManaPercent, @@ -683,6 +684,14 @@ const valueKindFactories: { [f in NonNullable]: ValueKindConfig, _isPrepull: boolean) => player.getSpec() == Spec.SpecBalanceDruid, fields: [AplHelpers.eclipseTypeFieldConfig('eclipsePhase')], }), + currentHolyPower: inputBuilder({ + label: 'Holy Power', + submenu: ['Resources'], + shortDescription: 'Amount of currently available Holy Power.', + newValue: APLValueCurrentHolyPower.create, + includeIf: (player: Player, _isPrepull: boolean) => player.getClass() == Class.ClassPaladin, + fields: [], + }), // Resources Rune currentRuneCount: inputBuilder({ diff --git a/ui/core/components/individual_sim_ui/consumes_picker.ts b/ui/core/components/individual_sim_ui/consumes_picker.tsx similarity index 51% rename from ui/core/components/individual_sim_ui/consumes_picker.ts rename to ui/core/components/individual_sim_ui/consumes_picker.tsx index 47e37477a0..7d18b93093 100644 --- a/ui/core/components/individual_sim_ui/consumes_picker.ts +++ b/ui/core/components/individual_sim_ui/consumes_picker.tsx @@ -1,9 +1,11 @@ +import { ref } from 'tsx-vanilla'; + import { IndividualSimUI } from '../../individual_sim_ui'; import { Player } from '../../player'; import { TypedEvent } from '../../typed_event'; import { Component } from '../component'; import { IconEnumPicker } from '../icon_enum_picker'; -import { buildIconInput } from '../icon_inputs.js'; +import { buildIconInput } from '../icon_inputs'; import { IconPicker } from '../icon_picker'; import * as ConsumablesInputs from '../inputs/consumables'; import { relevantStatOptions } from '../inputs/stat_options'; @@ -26,16 +28,14 @@ export class ConsumesPicker extends Component { } private buildPotionsPicker() { - const fragment = document.createElement('fragment'); - fragment.innerHTML = ` -
            - -
            -
            - `; + const potionsRef = ref(); - const row = this.rootElem.appendChild(fragment.children[0] as HTMLElement); - const potionsElem = this.rootElem.querySelector('.consumes-potions') as HTMLElement; + const row = this.rootElem.appendChild( + +
            +
            , + ); + const potionsElem = potionsRef.value!; //makePrepopPotionsInput; const prePotOptions = ConsumablesInputs.makePrepopPotionsInput(relevantStatOptions(ConsumablesInputs.PRE_POTIONS_CONFIG, this.simUI), 'Prepop Potion'); @@ -47,29 +47,31 @@ export class ConsumesPicker extends Component { const conjuredOptions = ConsumablesInputs.makeConjuredInput(relevantStatOptions(ConsumablesInputs.CONJURED_CONFIG, this.simUI)); const conjuredPicker = buildIconInput(potionsElem, this.simUI.player, conjuredOptions); - TypedEvent.onAny([this.simUI.player.professionChangeEmitter]).on(() => { - this.updateRow(row, [potionsPicker, conjuredPicker, prePotPicker]); - }); + const events = TypedEvent.onAny([this.simUI.player.professionChangeEmitter]).on(() => + this.updateRow(row, [potionsPicker, conjuredPicker, prePotPicker]), + ); + this.addOnDisposeCallback(() => events.dispose()); } private buildElixirsPicker() { - const fragment = document.createElement('fragment'); - fragment.innerHTML = ` -
            - -
            -
            - or -
            -
            + const flaskRef = ref(); + const battleElixirsRef = ref(); + const guardianElixirsRef = ref(); + + this.rootElem.appendChild( + +
            +
            + or +
            +
            -
            - `; + , + ); + const flasksElem = flaskRef.value!; + const battleElixirsElem = battleElixirsRef.value!; + const guardianElixirsElem = guardianElixirsRef.value!; - const rowElem = this.rootElem.appendChild(fragment.children[0] as HTMLElement); - const flasksElem = this.rootElem.querySelector('.consumes-flasks') as HTMLElement; - const battleElixirsElem = this.rootElem.querySelector('.consumes-battle-elixirs') as HTMLElement; - const guardianElixirsElem = this.rootElem.querySelector('.consumes-guardian-elixirs') as HTMLElement; const flasksOptions = ConsumablesInputs.makeFlasksInput(relevantStatOptions(ConsumablesInputs.FLASKS_CONFIG, this.simUI)); buildIconInput(flasksElem, this.simUI.player, flasksOptions); const battleElixirOptions = ConsumablesInputs.makeBattleElixirsInput(relevantStatOptions(ConsumablesInputs.BATTLE_ELIXIRS_CONFIG, this.simUI)); @@ -79,32 +81,26 @@ export class ConsumesPicker extends Component { } private buildFoodPicker() { - const fragment = document.createElement('fragment'); - fragment.innerHTML = ` -
            - -
            -
            - `; - - const row = this.rootElem.appendChild(fragment.children[0] as HTMLElement); - const foodsElem = this.rootElem.querySelector('.consumes-food') as HTMLElement; + const foodRef = ref(); + this.rootElem.appendChild( + +
            +
            , + ); + const foodsElem = foodRef.value!; const foodOptions = ConsumablesInputs.makeFoodInput(relevantStatOptions(ConsumablesInputs.FOOD_CONFIG, this.simUI)); buildIconInput(foodsElem, this.simUI.player, foodOptions); } private buildEngPicker() { - const fragment = document.createElement('fragment'); - fragment.innerHTML = ` -
            - -
            -
            - `; - - const row = this.rootElem.appendChild(fragment.children[0] as HTMLElement); - const engiConsumesElem = this.rootElem.querySelector('.consumes-engi') as HTMLElement; + const engiConsumesRef = ref(); + const row = this.rootElem.appendChild( + +
            +
            , + ); + const engiConsumesElem = engiConsumesRef.value!; const tinkerOptions = ConsumablesInputs.makeTinkerHandsInput(relevantStatOptions(ConsumablesInputs.TINKERS_HANDS_CONFIG, this.simUI), 'Gloves Tinkers'); const tinkerPicker = buildIconInput(engiConsumesElem, this.simUI.player, tinkerOptions); @@ -112,36 +108,35 @@ export class ConsumesPicker extends Component { const explosivePicker = buildIconInput(engiConsumesElem, this.simUI.player, ConsumablesInputs.ExplosiveBigDaddy); const highpoweredBoltGunPicker = buildIconInput(engiConsumesElem, this.simUI.player, ConsumablesInputs.HighpoweredBoltGun); - // WOTLK Bombs - // const explosiveOptions = ConsumablesInputs.makeExplosivesInput(relevantStatOptions(ConsumablesInputs.EXPLOSIVES_CONFIG, this.simUI), 'Explosives'); - // const explosivePicker = buildIconInput(engiConsumesElem, this.simUI.player, explosiveOptions); - - TypedEvent.onAny([this.simUI.player.professionChangeEmitter]).on(() => this.updateRow(row, [explosivePicker, highpoweredBoltGunPicker, tinkerPicker])); + const events = TypedEvent.onAny([this.simUI.player.professionChangeEmitter]).on(() => + this.updateRow(row, [explosivePicker, highpoweredBoltGunPicker, tinkerPicker]), + ); + this.addOnDisposeCallback(() => events.dispose()); this.updateRow(row, [explosivePicker, highpoweredBoltGunPicker, tinkerPicker]); } private buildPetPicker() { if (this.simUI.individualConfig.petConsumeInputs?.length) { - const fragment = document.createElement('fragment'); - fragment.innerHTML = ` -
            - -
            -
            - `; - - this.rootElem.appendChild(fragment.children[0] as HTMLElement); - const petConsumesElem = this.rootElem.querySelector('.consumes-pet') as HTMLElement; + const petConsumesRef = ref(); + this.rootElem.appendChild( + +
            +
            , + ); + const petConsumesElem = petConsumesRef.value!; this.simUI.individualConfig.petConsumeInputs.map(iconInput => buildIconInput(petConsumesElem, this.simUI.player, iconInput)); } } - private updateRow(rowElem: HTMLElement, pickers: (IconPicker, any> | IconEnumPicker, any>)[]) { - if (!!pickers.find(p => p?.showWhen())) { - rowElem.classList.remove('hide'); - } else { - rowElem.classList.add('hide'); - } + private updateRow(rowElem: Element, pickers: (IconPicker, any> | IconEnumPicker, any>)[]) { + rowElem.classList[!!pickers.find(p => p?.showWhen()) ? 'remove' : 'add']('hide'); } } + +const ConsumeRow = ({ label, children }: { label: string; children: JSX.Element }) => ( +
            + + {children} +
            +); diff --git a/ui/core/components/individual_sim_ui/cooldowns_picker.ts b/ui/core/components/individual_sim_ui/cooldowns_picker.ts index 0e92c565da..9c47a1923b 100644 --- a/ui/core/components/individual_sim_ui/cooldowns_picker.ts +++ b/ui/core/components/individual_sim_ui/cooldowns_picker.ts @@ -4,6 +4,7 @@ import { Player } from '../../player.js'; import { ActionID as ActionIdProto, Cooldown } from '../../proto/common.js'; import { ActionId } from '../../proto_utils/action_id.js'; import { EventID, TypedEvent } from '../../typed_event.js'; +import { existsInDOM } from '../../utils'; import { Component } from '../component.js'; import { IconEnumPicker, IconEnumValueConfig } from '../icon_enum_picker.js'; import { NumberListPicker } from '../number_list_picker.js'; @@ -18,9 +19,18 @@ export class CooldownsPicker extends Component { this.player = player; this.cooldownPickers = []; - TypedEvent.onAny([this.player.rotationChangeEmitter, this.player.sim.unitMetadataEmitter]).on(eventID => { + const events = TypedEvent.onAny([this.player.rotationChangeEmitter, this.player.sim.unitMetadataEmitter]).on(() => { + if (!existsInDOM(this.rootElem)) { + this.dispose(); + return; + } this.update(); }); + this.addOnDisposeCallback(() => { + this.rootElem.remove(); + this.cooldownPickers.forEach(picker => picker.remove()); + events.dispose(); + }); this.update(); } diff --git a/ui/core/components/individual_sim_ui/gem_summary.tsx b/ui/core/components/individual_sim_ui/gem_summary.tsx index 5bf562acd6..bb61f1dd24 100644 --- a/ui/core/components/individual_sim_ui/gem_summary.tsx +++ b/ui/core/components/individual_sim_ui/gem_summary.tsx @@ -1,4 +1,4 @@ -import { element, fragment } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { setItemQualityCssClass } from '../../css_utils'; import { Player } from '../../player'; @@ -33,7 +33,7 @@ export class GemSummary extends Component { } private updateTable() { - this.container.bodyElement.innerHTML = ``; + const body = <>; const fullGemList = this.player.getGear().getAllGems(this.player.isBlacksmithing()); const hasGems = !!fullGemList.length; this.rootElem.classList[!hasGems ? 'add' : 'remove']('hide'); @@ -54,20 +54,21 @@ export class GemSummary extends Component { for (const gemName of Object.keys(gemCounts)) { const gemData = gemCounts[gemName]; + const linkRef = ref(); + const iconRef = ref(); const row = (
            - - + +
            {gemName}
            {gemData.count.toFixed(0)}
            ); + body.appendChild(row); - this.container.bodyElement.appendChild(row); - - const itemLinkElem = row.querySelector('.summary-table-link') as HTMLAnchorElement; - const iconElem = row.querySelector('.gem-icon') as HTMLImageElement; + const itemLinkElem = linkRef.value!; + const iconElem = iconRef.value!; setItemQualityCssClass(itemLinkElem, gemData.gem.quality); @@ -77,10 +78,10 @@ export class GemSummary extends Component { iconElem.src = filledId.iconUrl; filledId.setWowheadHref(itemLinkElem); }); - - this.container.bodyElement.appendChild(row); } + this.container.bodyElement.replaceChildren(body); + if (!this.container.headerElement) return; const existingResetButton = this.container.headerElement.querySelector('.summary-table-reset-button'); const resetButton = ( diff --git a/ui/core/components/individual_sim_ui/reforge_summary.tsx b/ui/core/components/individual_sim_ui/reforge_summary.tsx index 2d7f72284c..2c32127f45 100644 --- a/ui/core/components/individual_sim_ui/reforge_summary.tsx +++ b/ui/core/components/individual_sim_ui/reforge_summary.tsx @@ -1,5 +1,3 @@ -import { element, fragment } from 'tsx-vanilla'; - import { Player } from '../../player.js'; import { Stat } from '../../proto/common.js'; import { shortSecondaryStatNames } from '../../proto_utils/names.js'; @@ -32,7 +30,7 @@ export class ReforgeSummary extends Component { } private updateTable() { - this.container.bodyElement.innerHTML = ``; + const body = <>; let gear = this.player.getGear(); const totals: ReforgeSummaryTotal = {}; gear.getItemSlots().forEach(itemSlot => { @@ -65,7 +63,7 @@ export class ReforgeSummary extends Component { const value = totals[stat]; if (!value) return; - this.container.bodyElement.appendChild( + body.appendChild(
            {shortSecondaryStatNames.get(stat)}
            0 ? 'positive' : 'negative'}`}>{value}
            @@ -73,6 +71,8 @@ export class ReforgeSummary extends Component { ); }); + this.container.bodyElement.replaceChildren(body); + if (!this.container.headerElement) return; const existingResetButton = this.container.headerElement.querySelector('.summary-table-reset-button'); const resetButton = ( diff --git a/ui/core/components/input.tsx b/ui/core/components/input.tsx index e2de04ee39..7628692fa7 100644 --- a/ui/core/components/input.tsx +++ b/ui/core/components/input.tsx @@ -1,8 +1,7 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment } from 'tsx-vanilla'; import { EventID, TypedEvent } from '../typed_event.js'; +import { existsInDOM } from '../utils'; import { Component } from './component.js'; /** @@ -45,10 +44,16 @@ export abstract class Input extends Component { readonly modObject: ModObject; protected enabled = true; - readonly changeEmitter = new TypedEvent(); + readonly changeEmitter = new TypedEvent('input-change'); + // Can be used to remove any events in addEventListener + // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#add_an_abortable_listener + public abortController: AbortController; + public signal: AbortSignal; constructor(parent: HTMLElement | null, cssClass: string, modObject: ModObject, config: InputConfig) { super(parent, 'input-root', config.rootElem); + this.abortController = new AbortController(); + this.signal = this.abortController.signal; this.inputConfig = config; this.modObject = modObject; this.rootElem.classList.add(cssClass); @@ -57,10 +62,20 @@ export abstract class Input extends Component { if (config.extraCssClasses) this.rootElem.classList.add(...config.extraCssClasses); if (config.label) this.rootElem.appendChild(this.buildLabel(config)); - config.changedEvent(this.modObject).on(() => { + const event = config.changedEvent(this.modObject).on(() => { + const element = this.getInputElem(); + if (!existsInDOM(element) || !existsInDOM(this.rootElem)) { + this.dispose(); + return; + } this.setInputValue(this.getSourceValue()); this.update(); }); + + this.addOnDisposeCallback(() => { + this.abortController?.abort(); + event.dispose(); + }); } private buildLabel(config: InputConfig): JSX.Element { @@ -70,10 +85,12 @@ export abstract class Input extends Component { ); - if (config.labelTooltip) - tippy(label, { + if (config.labelTooltip) { + const tippyInstance = tippy(label, { content: config.labelTooltip, }); + this.addOnDisposeCallback(() => tippyInstance.destroy()); + } return label; } diff --git a/ui/core/components/item_swap_picker.tsx b/ui/core/components/item_swap_picker.tsx index c68ad822be..27eef0ecaf 100644 --- a/ui/core/components/item_swap_picker.tsx +++ b/ui/core/components/item_swap_picker.tsx @@ -1,6 +1,4 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment } from 'tsx-vanilla'; import { Player } from '../player.js'; import { ItemSlot, Spec } from '../proto/common.js'; diff --git a/ui/core/components/list_picker.tsx b/ui/core/components/list_picker.tsx index 3feadc146d..dcf223d831 100644 --- a/ui/core/components/list_picker.tsx +++ b/ui/core/components/list_picker.tsx @@ -1,5 +1,5 @@ +import clsx from 'clsx'; import tippy, { Instance as TippyInstance } from 'tippy.js'; -import { element, fragment } from 'tsx-vanilla'; import { EventID, TypedEvent } from '../typed_event.js'; import { Input, InputConfig } from './input.js'; @@ -90,31 +90,41 @@ export class ListPicker extends Input titleTooltip?.destroy()); } this.itemsDiv = this.rootElem.getElementsByClassName('list-picker-items')[0] as HTMLElement; if (this.actionEnabled('create')) { - let newItemButton = null; + let newItemButton: HTMLElement | null = null; let newButtonTooltip: TippyInstance | null = null; if (this.config.actions?.create?.useIcon) { newItemButton = ListPicker.makeActionElem('link-success', 'fa-plus'); - newButtonTooltip = tippy(newItemButton, { content: `New ${config.itemLabel}` }); + newButtonTooltip = tippy(newItemButton, { + allowHTML: false, + content: `New ${config.itemLabel}`, + }); + this.addOnDisposeCallback(() => newButtonTooltip?.destroy()); } else { - newItemButton = document.createElement('button'); - newItemButton.classList.add('btn', 'btn-primary'); - newItemButton.textContent = `New ${config.itemLabel}`; + newItemButton = () as HTMLButtonElement; } newItemButton.classList.add('list-picker-new-button'); - newItemButton.addEventListener('click', () => { - const newItem = this.config.newItem(); - const newList = this.config.getValue(this.modObject).concat([newItem]); - this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); - if (newButtonTooltip) { - newButtonTooltip.hide(); - } - }); + newItemButton.addEventListener( + 'click', + () => { + const newItem = this.config.newItem(); + const newList = this.config.getValue(this.modObject).concat([newItem]); + this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); + if (newButtonTooltip) { + newButtonTooltip.hide(); + } + }, + { signal: this.signal }, + ); + this.rootElem.appendChild(newItemButton); } @@ -194,81 +204,123 @@ export class ListPicker extends Input { - moveButtonTooltip.hide(); + const moveButtonTooltip = tippy(moveButton, { + allowHTML: false, + content: 'Move (Drag+Drop)', + }); + + moveButton.addEventListener( + 'click', + () => { + moveButtonTooltip.hide(); + }, + { signal: this.signal }, + ); + this.addOnDisposeCallback(() => { + moveButtonTooltip?.destroy(); }); moveButton.draggable = true; - moveButton.ondragstart = event => { - if (event.target == moveButton) { - event.dataTransfer!.dropEffect = 'move'; - event.dataTransfer!.effectAllowed = 'move'; - itemContainer.classList.add('dragfrom'); - curDragData = { - listPicker: this, - item: item, - }; - } - }; + moveButton.addEventListener( + 'dragstart', + event => { + if (event.target == moveButton) { + event.dataTransfer!.dropEffect = 'move'; + event.dataTransfer!.effectAllowed = 'move'; + itemContainer.classList.add('dragfrom'); + curDragData = { + listPicker: this, + item: item, + }; + } + }, + { signal: this.signal }, + ); let dragEnterCounter = 0; - itemContainer.ondragenter = event => { - if (!curDragData || curDragData.listPicker != this) { - return; - } - event.preventDefault(); - dragEnterCounter++; - itemContainer.classList.add('dragto'); - }; - itemContainer.ondragleave = event => { - if (!curDragData || curDragData.listPicker != this) { - return; - } - event.preventDefault(); - dragEnterCounter--; - if (dragEnterCounter <= 0) { + itemContainer.addEventListener( + 'dragenter', + event => { + if (!curDragData || curDragData.listPicker != this) { + return; + } + event.preventDefault(); + dragEnterCounter++; + itemContainer.classList.add('dragto'); + }, + { signal: this.signal }, + ); + + itemContainer.addEventListener( + 'dragleave', + event => { + if (!curDragData || curDragData.listPicker != this) { + return; + } + event.preventDefault(); + dragEnterCounter--; + if (dragEnterCounter <= 0) { + itemContainer.classList.remove('dragto'); + } + }, + { signal: this.signal }, + ); + + itemContainer.addEventListener( + 'dragover', + event => { + if (!curDragData || curDragData.listPicker != this) { + return; + } + event.preventDefault(); + }, + { signal: this.signal }, + ); + + itemContainer.addEventListener( + 'drop', + event => { + if (!curDragData || curDragData.listPicker != this) { + return; + } + event.preventDefault(); + dragEnterCounter = 0; itemContainer.classList.remove('dragto'); - } - }; - itemContainer.ondragover = event => { - if (!curDragData || curDragData.listPicker != this) { - return; - } - event.preventDefault(); - }; - itemContainer.ondrop = event => { - if (!curDragData || curDragData.listPicker != this) { - return; - } - event.preventDefault(); - dragEnterCounter = 0; - itemContainer.classList.remove('dragto'); - curDragData.item.elem.classList.remove('dragfrom'); - - const srcIdx = curDragData.item.idx; - const dstIdx = index; - const newList = this.config.getValue(this.modObject); - const arrElem = newList[srcIdx]; - newList.splice(srcIdx, 1); - newList.splice(dstIdx, 0, arrElem); - this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); - - curDragData = null; - }; + curDragData.item.elem.classList.remove('dragfrom'); + + const srcIdx = curDragData.item.idx; + const dstIdx = index; + const newList = this.config.getValue(this.modObject); + const arrElem = newList[srcIdx]; + newList.splice(srcIdx, 1); + newList.splice(dstIdx, 0, arrElem); + this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); + + curDragData = null; + }, + { signal: this.signal }, + ); } if (this.actionEnabled('copy')) { const copyButton = ListPicker.makeActionElem('list-picker-item-copy', 'fa-copy'); itemHeader.appendChild(copyButton); - const copyButtonTooltip = tippy(copyButton, { content: `Copy to New ${this.config.itemLabel}` }); - - copyButton.addEventListener('click', () => { - const newList = this.config.getValue(this.modObject).slice(); - newList.splice(index, 0, this.config.copyItem(newList[index])); - this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); - copyButtonTooltip.hide(); + const copyButtonTooltip = tippy(copyButton, { + allowHTML: false, + content: `Copy to New ${this.config.itemLabel}`, }); + + copyButton.addEventListener( + 'click', + () => { + const newList = this.config.getValue(this.modObject).slice(); + newList.splice(index, 0, this.config.copyItem(newList[index])); + this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); + copyButtonTooltip.hide(); + }, + { signal: this.signal }, + ); + this.addOnDisposeCallback(() => copyButtonTooltip?.destroy()); } if (this.actionEnabled('delete')) { @@ -277,30 +329,34 @@ export class ListPicker extends Input { - const newList = this.config.getValue(this.modObject); - newList.splice(index, 1); - this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); - deleteButtonTooltip.hide(); + const deleteButtonTooltip = tippy(deleteButton, { + allowHTML: false, + content: `Delete ${this.config.itemLabel}`, }); + + deleteButton.addEventListener( + 'click', + () => { + const newList = this.config.getValue(this.modObject); + newList.splice(index, 1); + this.config.setValue(TypedEvent.nextEventID(), this.modObject, newList); + deleteButtonTooltip.hide(); + }, + { signal: this.signal }, + ); + this.addOnDisposeCallback(() => deleteButtonTooltip?.destroy()); } } this.itemPickerPairs.push(item); } - static makeActionElem(cssClass: string, iconCssClass: string): HTMLElement { - const actionElem = document.createElement('a'); - actionElem.classList.add('list-picker-item-action', cssClass); - actionElem.href = 'javascript:void(0)'; - actionElem.setAttribute('role', 'button'); - - const icon = document.createElement('i'); - icon.classList.add('fa', 'fa-xl', iconCssClass); - actionElem.appendChild(icon); - - return actionElem; + static makeActionElem(cssClass: string, iconCssClass: string): HTMLAnchorElement { + return ( + + + + ) as HTMLAnchorElement; } static getItemHeaderElem(itemPicker: Input): HTMLElement { diff --git a/ui/core/components/multi_icon_picker.ts b/ui/core/components/multi_icon_picker.ts index 6c95f65183..ded2772a88 100644 --- a/ui/core/components/multi_icon_picker.ts +++ b/ui/core/components/multi_icon_picker.ts @@ -2,19 +2,17 @@ import { Player } from '../player.js'; import { ActionId } from '../proto_utils/action_id.js'; import { SimUI } from '../sim_ui.js'; import { TypedEvent } from '../typed_event.js'; -import { isRightClick } from '../utils.js'; - +import { existsInDOM, isRightClick } from '../utils.js'; import { Component } from './component.js'; import { IconPicker, IconPickerConfig } from './icon_picker.js'; -export interface MultiIconPickerItemConfig extends IconPickerConfig { -} +export interface MultiIconPickerItemConfig extends IconPickerConfig {} export interface MultiIconPickerConfig { - inputs: Array>, - label?: string, - categoryId?: ActionId, - showWhen?: (obj: Player) => boolean, + inputs: Array>; + label?: string; + categoryId?: ActionId; + showWhen?: (obj: Player) => boolean; } // Icon-based UI for a dropdown with multiple icon pickers. @@ -29,9 +27,16 @@ export class MultiIconPicker extends Component { private readonly pickers: Array>; + // Can be used to remove any events in addEventListener + // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#add_an_abortable_listener + public abortController: AbortController; + public signal: AbortSignal; + constructor(parent: HTMLElement, modObj: ModObject, config: MultiIconPickerConfig, simUI: SimUI) { super(parent, 'multi-icon-picker-root'); this.rootElem.classList.add('icon-picker'); + this.abortController = new AbortController(); + this.signal = this.abortController.signal; this.config = config; this.currentValue = null; @@ -60,22 +65,33 @@ export class MultiIconPicker extends Component { this.buttonElem = this.rootElem.querySelector('.icon-picker-button') as HTMLAnchorElement; this.dropdownMenu = this.rootElem.querySelector('.dropdown-menu') as HTMLElement; - this.buttonElem.addEventListener('hide.bs.dropdown', event => { - if (event.hasOwnProperty('clickEvent')) + this.buttonElem.addEventListener( + 'hide.bs.dropdown', + (event: Event) => { + if (event.hasOwnProperty('clickEvent')) event.preventDefault(); + }, + { signal: this.signal }, + ); + + this.buttonElem.addEventListener( + 'contextmenu', + (event: MouseEvent) => { event.preventDefault(); - }) - - this.buttonElem.addEventListener('contextmenu', event => { - event.preventDefault(); - }); - - this.buttonElem.addEventListener('mousedown', event => { - const rightClick = isRightClick(event); - - if (rightClick) { - this.clearPicker(); - } - }); + }, + { signal: this.signal }, + ); + + this.buttonElem.addEventListener( + 'mousedown', + event => { + const rightClick = isRightClick(event); + + if (rightClick) { + this.clearPicker(); + } + }, + { signal: this.signal }, + ); this.buildBlankOption(); @@ -87,15 +103,21 @@ export class MultiIconPicker extends Component { return new IconPicker(optionContainer, modObj, pickerConfig); }); simUI.sim.waitForInit().then(() => this.updateButtonImage()); - simUI.changeEmitter.on(() => this.updateButtonImage()); - simUI.changeEmitter.on(() => { + const event = simUI.changeEmitter.on(() => { + if (!existsInDOM(this.rootElem) || !existsInDOM(this.dropdownMenu) || !existsInDOM(this.buttonElem)) { + this.dispose(); + return; + } + this.updateButtonImage(); + const show = !this.config.showWhen || this.config.showWhen(simUI.sim.raid.getPlayer(0)!); if (show) { this.rootElem.classList.remove('hide'); } else { this.rootElem.classList.add('hide'); } - }) + }); + this.addOnDisposeCallback(() => event.dispose()); } private buildBlankOption() { @@ -106,17 +128,18 @@ export class MultiIconPicker extends Component { option.classList.add('icon-dropdown-option', 'dropdown-option'); listItem.appendChild(option); - option.addEventListener('click', () => this.clearPicker()); + const onClearPickerHandler = () => this.clearPicker(); + option.addEventListener('click', onClearPickerHandler, { signal: this.signal }); } private clearPicker() { TypedEvent.freezeAllAndDo(() => { - this.pickers.forEach((picker) => { - picker.setInputValue(null) + this.pickers.forEach(picker => { + picker.setInputValue(null); picker.inputChanged(TypedEvent.nextEventID()); }); this.updateButtonImage(); - }) + }); } private updateButtonImage() { @@ -136,7 +159,7 @@ export class MultiIconPicker extends Component { } else { this.buttonElem.style.backgroundImage = ''; } - this.buttonElem.removeAttribute("href"); + this.buttonElem.removeAttribute('href'); } } diff --git a/ui/core/components/number_list_picker.ts b/ui/core/components/number_list_picker.ts index 91a5171c23..e7c5cf4647 100644 --- a/ui/core/components/number_list_picker.ts +++ b/ui/core/components/number_list_picker.ts @@ -1,4 +1,4 @@ -import { EventID, TypedEvent } from '../typed_event.js'; +import { TypedEvent } from '../typed_event.js'; import { arrayEquals } from '../utils.js'; import { Input, InputConfig } from './input.js'; @@ -26,9 +26,13 @@ export class NumberListPicker extends Input> this.init(); - this.inputElem.addEventListener('change', () => { - this.inputChanged(TypedEvent.nextEventID()); - }); + this.inputElem.addEventListener( + 'change', + () => { + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); } getInputElem(): HTMLElement { diff --git a/ui/core/components/number_picker.ts b/ui/core/components/number_picker.ts index bdbe4167b7..16e9acf437 100644 --- a/ui/core/components/number_picker.ts +++ b/ui/core/components/number_picker.ts @@ -33,25 +33,38 @@ export class NumberPicker extends Input { this.inputElem.classList.add('form-control', 'number-picker-input'); if (this.positive) { - this.inputElem.onchange = () => { - if (this.float) { - this.inputElem.value = Math.abs(parseFloat(this.inputElem.value)).toFixed(2); - } else { - this.inputElem.value = Math.abs(parseInt(this.inputElem.value)).toString(); - } - }; + this.inputElem.addEventListener( + 'change', + () => { + if (this.float) { + this.inputElem.value = Math.abs(parseFloat(this.inputElem.value)).toFixed(2); + } else { + this.inputElem.value = Math.abs(parseInt(this.inputElem.value)).toString(); + } + }, + { signal: this.signal }, + ); } - this.rootElem.appendChild(this.inputElem); - this.init(); + this.inputElem.addEventListener( + 'change', + () => { + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); - this.inputElem.addEventListener('change', () => { - this.inputChanged(TypedEvent.nextEventID()); - }); + this.inputElem.addEventListener( + 'input', + () => { + this.updateSize(); + }, + { signal: this.signal }, + ); - this.inputElem.addEventListener('input', () => { - this.updateSize(); - }); + this.rootElem.appendChild(this.inputElem); + + this.init(); this.updateSize(); } diff --git a/ui/core/components/quick_swap.tsx b/ui/core/components/quick_swap.tsx index 51432a431d..75ded13bbe 100644 --- a/ui/core/components/quick_swap.tsx +++ b/ui/core/components/quick_swap.tsx @@ -1,6 +1,5 @@ import tippy, { hideAll, Instance as TippyInstance, Props as TippyProps } from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { setItemQualityCssClass } from '../css_utils'; import { UIEnchant as Enchant, UIGem as Gem } from '../proto/ui.js'; diff --git a/ui/core/components/raid_sim_action.tsx b/ui/core/components/raid_sim_action.tsx index d82a96677f..baaa4ff958 100644 --- a/ui/core/components/raid_sim_action.tsx +++ b/ui/core/components/raid_sim_action.tsx @@ -1,5 +1,4 @@ import tippy from 'tippy.js'; -import { element, fragment, ref } from 'tsx-vanilla'; import { DistributionMetrics as DistributionMetricsProto, ProgressMetrics, Raid as RaidProto } from '../proto/api.js'; import { Encounter as EncounterProto, Spec } from '../proto/common.js'; diff --git a/ui/core/components/results_viewer.tsx b/ui/core/components/results_viewer.tsx index 304e51351d..28df570430 100644 --- a/ui/core/components/results_viewer.tsx +++ b/ui/core/components/results_viewer.tsx @@ -1,5 +1,5 @@ import tippy, { inlinePositioning, Instance as TippyInstance, Props as TippyProps } from 'tippy.js'; -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { Component } from '../components/component.js'; import { TypedEvent } from '../typed_event.js'; @@ -104,11 +104,8 @@ export class ResultsViewer extends Component { const list = ((this.warningsTooltip?.props.content as Element)?.cloneNode(true) || <>) as HTMLElement; if (list) list.innerHTML = ''; + list.appendChild(<>{activeWarnings?.map(warning =>
          • {warning}
          • )}); - const fragment = document.createDocumentFragment(); - - activeWarnings?.forEach(warning => fragment.appendChild(
          • {warning}
          • )); - list?.appendChild(fragment); this.warningsLink.parentElement?.classList?.[activeWarnings.length ? 'remove' : 'add']('hide'); this.warningsTooltip?.setContent(list); } diff --git a/ui/core/components/settings_menu.tsx b/ui/core/components/settings_menu.tsx index 65f51241ba..0b476c5d54 100644 --- a/ui/core/components/settings_menu.tsx +++ b/ui/core/components/settings_menu.tsx @@ -1,6 +1,5 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { wowheadSupportedLanguages } from '../constants/lang.js'; import { Sim } from '../sim.js'; diff --git a/ui/core/components/sim_header.tsx b/ui/core/components/sim_header.tsx index e5ef0a901e..0dd258d417 100644 --- a/ui/core/components/sim_header.tsx +++ b/ui/core/components/sim_header.tsx @@ -1,6 +1,5 @@ import tippy, { ReferenceElement as TippyReferenceElement } from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { SimUI } from '../sim_ui'; import { isLocal,noop } from '../utils'; diff --git a/ui/core/components/sim_tab.ts b/ui/core/components/sim_tab.ts index d4c7f1f94d..c9e1202ac2 100644 --- a/ui/core/components/sim_tab.ts +++ b/ui/core/components/sim_tab.ts @@ -58,7 +58,7 @@ export abstract class SimTab extends Component { protected abstract buildTabContent(): void; protected buildColumn(index: number, customCssClass: string): HTMLElement { - let column = document.createElement('div'); + const column = document.createElement('div'); column.classList.add('tab-panel-col', `${customCssClass}-${index}`) return column; } diff --git a/ui/core/components/social_links.tsx b/ui/core/components/social_links.tsx index cfe1791a8a..347f8c6a6a 100644 --- a/ui/core/components/social_links.tsx +++ b/ui/core/components/social_links.tsx @@ -1,6 +1,4 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element } from 'tsx-vanilla'; import { Component } from './component'; diff --git a/ui/core/components/string_picker.ts b/ui/core/components/string_picker.ts index a990803c6f..d09b25a2c8 100644 --- a/ui/core/components/string_picker.ts +++ b/ui/core/components/string_picker.ts @@ -23,9 +23,13 @@ export class StringPicker extends Input { this.init(); - this.inputElem.addEventListener('input', () => { - this.inputChanged(TypedEvent.nextEventID()); - }); + this.inputElem.addEventListener( + 'input', + () => { + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); } getInputElem(): HTMLElement { @@ -59,12 +63,20 @@ export class AdaptiveStringPicker extends Input { this.init(); - this.inputElem.addEventListener('change', () => { - this.inputChanged(TypedEvent.nextEventID()); - }); - this.inputElem.addEventListener('input', () => { - this.updateSize(); - }); + this.inputElem.addEventListener( + 'change', + () => { + this.inputChanged(TypedEvent.nextEventID()); + }, + { signal: this.signal }, + ); + this.inputElem.addEventListener( + 'input', + () => { + this.updateSize(); + }, + { signal: this.signal }, + ); this.updateSize(); } diff --git a/ui/core/components/toast.tsx b/ui/core/components/toast.tsx index 644b5ce86c..928fbb2076 100644 --- a/ui/core/components/toast.tsx +++ b/ui/core/components/toast.tsx @@ -1,5 +1,4 @@ import { Toast as BootstrapToast } from 'bootstrap'; -import { element, fragment } from 'tsx-vanilla'; type ToastOptions = { title?: string; diff --git a/ui/core/components/unit_picker.ts b/ui/core/components/unit_picker.ts deleted file mode 100644 index 057108f68a..0000000000 --- a/ui/core/components/unit_picker.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { UnitReference } from '../proto/common.js'; -import { ActionId } from '../proto_utils/action_id.js'; -import { DropdownPicker, DropdownPickerConfig, DropdownValueConfig } from './dropdown_picker.js'; - -export interface UnitValue { - value: UnitReference|undefined, - text?: string, - iconUrl?: string|ActionId, - color?: string, -} - -export interface UnitValueConfig extends DropdownValueConfig {} -export interface UnitPickerConfig extends Omit, 'equals' | 'setOptionContent' | 'defaultLabel'> { - hideLabelWhenDefaultSelected?: boolean, -} - -export class UnitPicker extends DropdownPicker { - constructor(parent: HTMLElement, modObject: ModObject, config: UnitPickerConfig) { - super(parent, modObject, { - ...config, - equals: (a, b) => UnitReference.equals(a?.value || UnitReference.create(), b?.value || UnitReference.create()), - defaultLabel: 'Unit', - setOptionContent: (button: HTMLButtonElement, valueConfig: DropdownValueConfig, isSelectButton: boolean) => { - const unitConfig = valueConfig.value; - - button.className = button.className.replace(/text-[\w]*/, '') - if (unitConfig.color) { - button.classList.add(`text-${unitConfig.color}`); - } - - if (unitConfig.iconUrl) { - let icon = null; - if (unitConfig.iconUrl instanceof ActionId) { - const img = document.createElement('img'); - img.classList.add('unit-picker-item-icon'); - unitConfig.iconUrl.fill().then(filledId => { - img.src = filledId.iconUrl; - }); - icon = img; - } else if (unitConfig.iconUrl.startsWith('fa-')) { - const img = document.createElement('i'); - img.classList.add('fa', unitConfig.iconUrl, 'unit-picker-item-icon'); - icon = img; - } else { - const img = document.createElement('img'); - img.classList.add('unit-picker-item-icon'); - img.src = unitConfig.iconUrl; - icon = img; - } - button.appendChild(icon); - } - - const hideLabel = config.hideLabelWhenDefaultSelected && isSelectButton && !unitConfig.value; - if (unitConfig.text && !hideLabel) { - button.insertAdjacentText('beforeend', unitConfig.text); - } - } - }); - this.rootElem.classList.add('unit-picker-root'); - } -} diff --git a/ui/core/components/unit_picker.tsx b/ui/core/components/unit_picker.tsx new file mode 100644 index 0000000000..fe1b54dd10 --- /dev/null +++ b/ui/core/components/unit_picker.tsx @@ -0,0 +1,57 @@ +import clsx from 'clsx'; + +import { UnitReference } from '../proto/common.js'; +import { ActionId } from '../proto_utils/action_id.js'; +import { DropdownPicker, DropdownPickerConfig, DropdownValueConfig } from './dropdown_picker.jsx'; + +export interface UnitValue { + value: UnitReference | undefined; + text?: string; + iconUrl?: string | ActionId; + color?: string; +} + +export interface UnitValueConfig extends DropdownValueConfig {} +export interface UnitPickerConfig + extends Omit, 'equals' | 'setOptionContent' | 'defaultLabel'> { + hideLabelWhenDefaultSelected?: boolean; +} + +export class UnitPicker extends DropdownPicker { + constructor(parent: HTMLElement, modObject: ModObject, config: UnitPickerConfig) { + super(parent, modObject, { + ...config, + equals: (a, b) => UnitReference.equals(a?.value || UnitReference.create(), b?.value || UnitReference.create()), + defaultLabel: 'Unit', + setOptionContent: (button, valueConfig, isSelectButton) => { + const unitConfig = valueConfig.value; + + button.className = button.className.replace(/text-[\w]*/, ''); + if (unitConfig.color) { + button.classList.add(`text-${unitConfig.color}`); + } + + if (unitConfig.iconUrl) { + let icon: HTMLElement | HTMLImageElement | null = null; + if (unitConfig.iconUrl instanceof ActionId) { + icon = () as HTMLImageElement; + unitConfig.iconUrl.fill().then(filledId => { + if (icon) (icon as HTMLImageElement).src! = filledId.iconUrl; + }); + } else if (unitConfig.iconUrl.startsWith('fa-')) { + icon = () as HTMLElement; + } else { + icon = () as HTMLImageElement; + } + button.appendChild(icon); + } + + const hideLabel = config.hideLabelWhenDefaultSelected && isSelectButton && !unitConfig.value; + if (unitConfig.text && !hideLabel) { + button.insertAdjacentText('beforeend', unitConfig.text); + } + }, + }); + this.rootElem.classList.add('unit-picker-root'); + } +} diff --git a/ui/core/individual_sim_ui.tsx b/ui/core/individual_sim_ui.tsx index d68c76b776..2b49515278 100644 --- a/ui/core/individual_sim_ui.tsx +++ b/ui/core/individual_sim_ui.tsx @@ -1,6 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element } from 'tsx-vanilla'; - import { CharacterStats, StatMods, StatWrites } from './components/character_stats'; import { ContentBlock } from './components/content_block'; import { EmbeddedDetailedResults } from './components/detailed_results'; @@ -437,14 +434,14 @@ export abstract class IndividualSimUI extends SimUI { private addTopbarComponents() { this.simHeader.addImportLink('JSON', new Importers.IndividualJsonImporter(this.rootElem, this), true); - this.simHeader.addImportLink('80U', new Importers.Individual80UImporter(this.rootElem, this), true); + this.simHeader.addImportLink('85U', new Importers.Individual80UImporter(this.rootElem, this), true); this.simHeader.addImportLink('WoWHead', new Importers.IndividualWowheadGearPlannerImporter(this.rootElem, this), false); this.simHeader.addImportLink('Addon', new Importers.IndividualAddonImporter(this.rootElem, this), true); this.simHeader.addExportLink('Link', new Exporters.IndividualLinkExporter(this.rootElem, this), false); this.simHeader.addExportLink('JSON', new Exporters.IndividualJsonExporter(this.rootElem, this), true); this.simHeader.addExportLink('WoWHead', new Exporters.IndividualWowheadGearPlannerExporter(this.rootElem, this), false); - this.simHeader.addExportLink('80U EP', new Exporters.Individual80UEPExporter(this.rootElem, this), false); + this.simHeader.addExportLink('85U EP', new Exporters.Individual80UEPExporter(this.rootElem, this), false); this.simHeader.addExportLink('Pawn EP', new Exporters.IndividualPawnEPExporter(this.rootElem, this), false); this.simHeader.addExportLink('CLI', new Exporters.IndividualCLIExporter(this.rootElem, this), true); } diff --git a/ui/core/launched_sims.ts b/ui/core/launched_sims.ts index f87694315b..246ac1f3eb 100644 --- a/ui/core/launched_sims.ts +++ b/ui/core/launched_sims.ts @@ -31,15 +31,15 @@ export const simLaunchStatuses: Record = { // Death Knight [Spec.SpecBloodDeathKnight]: { phase: Phase.Phase1, - status: LaunchStatus.Alpha, + status: LaunchStatus.Beta, }, [Spec.SpecFrostDeathKnight]: { phase: Phase.Phase1, - status: LaunchStatus.Alpha, + status: LaunchStatus.Beta, }, [Spec.SpecUnholyDeathKnight]: { phase: Phase.Phase1, - status: LaunchStatus.Alpha, + status: LaunchStatus.Beta, }, // Druid [Spec.SpecBalanceDruid]: { diff --git a/ui/core/player.ts b/ui/core/player.ts index 2a080c8684..a10880a9b7 100644 --- a/ui/core/player.ts +++ b/ui/core/player.ts @@ -1137,7 +1137,7 @@ export class Player { let maxSuffixEP = 0; if (item.randomSuffixOptions.length > 0) { - const suffixEPs = item.randomSuffixOptions.map(id => this.computeRandomSuffixEP(this.sim.db.getRandomSuffixById(id)!)); + const suffixEPs = item.randomSuffixOptions.map(id => this.computeRandomSuffixEP(this.sim.db.getRandomSuffixById(id)! || 0)); maxSuffixEP = (Math.max(...suffixEPs) * item.randPropPoints) / 10000; } diff --git a/ui/core/preset_utils.ts b/ui/core/preset_utils.ts index 8a7f6a6257..e32ef0131b 100644 --- a/ui/core/preset_utils.ts +++ b/ui/core/preset_utils.ts @@ -1,3 +1,5 @@ +import * as Tooltips from './constants/tooltips.js'; +import { Player } from './player'; import { APLRotation, APLRotation_Type as APLRotationType, @@ -11,15 +13,11 @@ import { import { SavedRotation, } from './proto/ui'; - -import { Player } from './player'; import { SpecRotation, specTypeFunctions, } from './proto_utils/utils'; -import * as Tooltips from './constants/tooltips.js'; - export interface PresetGear { name: string; gear: EquipmentSpec; @@ -53,7 +51,7 @@ export function makePresetGear(name: string, gearJson: any, options?: PresetGear } function makePresetGearHelper(name: string, gear: EquipmentSpec, options: PresetGearOptions): PresetGear { - let conditions: Array<(player: Player) => boolean> = []; + const conditions: Array<(player: Player) => boolean> = []; if (options.talentTree != undefined) { conditions.push((player: Player) => player.getTalentTree() == options.talentTree); } @@ -101,7 +99,7 @@ export function makePresetSimpleRotation(name: string, sp } function makePresetRotationHelper(name: string, rotation: SavedRotation, options?: PresetRotationOptions): PresetRotation { - let conditions: Array<(player: Player) => boolean> = []; + const conditions: Array<(player: Player) => boolean> = []; if (options?.talentTree != undefined) { conditions.push((player: Player) => player.getTalentTree() == options.talentTree); } diff --git a/ui/core/proto_utils/action_id.ts b/ui/core/proto_utils/action_id.ts index bc1278bd65..bec746c083 100644 --- a/ui/core/proto_utils/action_id.ts +++ b/ui/core/proto_utils/action_id.ts @@ -815,6 +815,7 @@ export const resourceTypeToIcon: Record = { [ResourceType.ResourceTypeDeathRune]: '/cata/assets/img/death_rune.png', [ResourceType.ResourceTypeSolarEnergy]: 'https://wow.zamimg.com/images/wow/icons/large/ability_druid_eclipseorange.jpg', [ResourceType.ResourceTypeLunarEnergy]: 'https://wow.zamimg.com/images/wow/icons/large/ability_druid_eclipse.jpg', + [ResourceType.ResourceTypeHolyPower]: 'https://wow.zamimg.com/images/wow/icons/medium/spell_holy_testoffaith.jpg', }; // Use this to connect a buff row to a cast row in the timeline view diff --git a/ui/core/proto_utils/apl_utils.ts b/ui/core/proto_utils/apl_utils.ts index fcd3b37d12..f16421cbf8 100644 --- a/ui/core/proto_utils/apl_utils.ts +++ b/ui/core/proto_utils/apl_utils.ts @@ -1,12 +1,11 @@ -import { - ActionID as ActionIdProto, - Cooldowns, -} from '../proto/common.js'; - import { APLAction, APLPrepullAction, } from '../proto/apl.js'; +import { + ActionID as ActionIdProto, + Cooldowns, +} from '../proto/common.js'; export function prepullPotionAction(doAt?: string): APLPrepullAction { return APLPrepullAction.fromJsonString(`{"action":{"castSpell":{"spellId":{"otherId":"OtherActionPotion"}}},"doAtValue":{"const":{"val":"${doAt || '-1s'}"}}}`); diff --git a/ui/core/proto_utils/logs_parser.tsx b/ui/core/proto_utils/logs_parser.tsx index b896d41367..edfe916a97 100644 --- a/ui/core/proto_utils/logs_parser.tsx +++ b/ui/core/proto_utils/logs_parser.tsx @@ -1,5 +1,4 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment } from 'tsx-vanilla'; + import { RaidSimResult, ResourceType } from '../proto/api.js'; import { bucket, getEnumValues, stringComparator, sum } from '../utils.js'; @@ -781,16 +780,16 @@ export class ResourceChangedLog extends SimLog { static parse(params: SimLogParams): Promise | null { const match = params.raw.match( - /((Gained)|(Spent)) \d+\.?\d* ((health)|(mana)|(energy)|(focus)|(rage)|(combo points)|(runic power)|(blood rune)|(frost rune)|(unholy rune)|(death rune)|(solar energy)|(lunar energy)) from (.*) \((\d+\.?\d*) --> (\d+\.?\d*)\)( of (\d+\.?\d*) total)?/, + /(Gained|Spent) (\d+\.?\d*) (health|mana|energy|focus|rage|combo points|runic power|blood rune|frost rune|unholy rune|death rune|solar energy|lunar energy|holy power) from (.*?) \((\d+\.?\d*) --> (\d+\.?\d*)\)( of (\d+\.?\d*) total)?/, ); if (match) { - const resourceType = stringToResourceType(match[4]); - const total = match[22] !== undefined ? parseFloat(match[22]) : 0; - return ActionId.fromLogString(match[18]) + const resourceType = stringToResourceType(match[3]); + const total = match[8] !== undefined ? parseFloat(match[8]) : 0; + return ActionId.fromLogString(match[4]) .fill(params.source?.index) .then(cause => { params.actionId = cause; - return new ResourceChangedLog(params, resourceType, parseFloat(match[19]), parseFloat(match[20]), match[1] == 'Spent', total); + return new ResourceChangedLog(params, resourceType, parseFloat(match[5]), parseFloat(match[6]), match[1] == 'Spent', total); }); } else { return null; diff --git a/ui/core/proto_utils/names.ts b/ui/core/proto_utils/names.ts index 6dae74794b..d76873d0f3 100644 --- a/ui/core/proto_utils/names.ts +++ b/ui/core/proto_utils/names.ts @@ -251,6 +251,7 @@ export const resourceNames: Map = new Map([ [ResourceType.ResourceTypeDeathRune, 'Death Rune'], [ResourceType.ResourceTypeSolarEnergy, 'Solar Energy'], [ResourceType.ResourceTypeLunarEnergy, 'Lunar Energy'], + [ResourceType.ResourceTypeHolyPower, 'Holy Power'], ]); export const resourceColors: Map = new Map([ @@ -268,6 +269,7 @@ export const resourceColors: Map = new Map([ [ResourceType.ResourceTypeDeathRune, '#8b008b'], [ResourceType.ResourceTypeSolarEnergy, '#d2952b'], [ResourceType.ResourceTypeLunarEnergy, '#2c4f8f'], + [ResourceType.ResourceTypeHolyPower, '#ffa07b'], ]); export function stringToResourceType(str: string): ResourceType { diff --git a/ui/core/proto_utils/utils.ts b/ui/core/proto_utils/utils.ts index 0533160980..eef6138222 100644 --- a/ui/core/proto_utils/utils.ts +++ b/ui/core/proto_utils/utils.ts @@ -1907,6 +1907,7 @@ export const orderedResourceTypes: Array = [ ResourceType.ResourceTypeDeathRune, ResourceType.ResourceTypeLunarEnergy, ResourceType.ResourceTypeSolarEnergy, + ResourceType.ResourceTypeHolyPower, ]; export const AL_CATEGORY_HARD_MODE = 'Hard Mode'; diff --git a/ui/core/sim_ui.tsx b/ui/core/sim_ui.tsx index f55e2380c1..7354586bac 100644 --- a/ui/core/sim_ui.tsx +++ b/ui/core/sim_ui.tsx @@ -1,4 +1,4 @@ -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { BaseModal } from './components/base_modal.jsx'; import { Component } from './components/component.js'; diff --git a/ui/core/talents/glyphs_picker.tsx b/ui/core/talents/glyphs_picker.tsx index 10645a34b0..9f2feef0e2 100644 --- a/ui/core/talents/glyphs_picker.tsx +++ b/ui/core/talents/glyphs_picker.tsx @@ -1,5 +1,4 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { BaseModal } from '../components/base_modal.js'; import { Component } from '../components/component.js'; @@ -181,13 +180,14 @@ class GlyphPicker extends Input, number> { this.iconElem = iconElemRef.value!; this.nameElem = nameElemRef.value!; - const openGlyphSelectorModal = (event: Event) => { - event.preventDefault(); - selectorModal.openTab(this, glyphOptions); - }; - - this.anchorElem.addEventListener('click', openGlyphSelectorModal); - this.addOnDisposeCallback(() => this.anchorElem.removeEventListener('click', openGlyphSelectorModal)); + this.anchorElem.addEventListener( + 'click', + event => { + event.preventDefault(); + selectorModal.openTab(this, glyphOptions); + }, + { signal: this.signal }, + ); this.init(); } diff --git a/ui/core/talents/hunter_pet.tsx b/ui/core/talents/hunter_pet.tsx index 2f015d45bf..a308276588 100644 --- a/ui/core/talents/hunter_pet.tsx +++ b/ui/core/talents/hunter_pet.tsx @@ -1,6 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element } from 'tsx-vanilla'; - import { Component } from '../components/component.js'; import { IconEnumPicker } from '../components/icon_enum_picker'; import * as InputHelpers from '../components/input_helpers.js'; diff --git a/ui/core/talents/talents_picker.tsx b/ui/core/talents/talents_picker.tsx index 9a2287801f..bd19d80e37 100644 --- a/ui/core/talents/talents_picker.tsx +++ b/ui/core/talents/talents_picker.tsx @@ -1,6 +1,5 @@ import tippy from 'tippy.js'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { element, fragment, ref } from 'tsx-vanilla'; +import { ref } from 'tsx-vanilla'; import { Component } from '../components/component.js'; import { CopyButton } from '../components/copy_button.js'; diff --git a/ui/core/typed_event.ts b/ui/core/typed_event.ts index f2cdd46061..0a4b4b140c 100644 --- a/ui/core/typed_event.ts +++ b/ui/core/typed_event.ts @@ -14,13 +14,13 @@ export interface Listener { } interface FiredEventData { - eventID: EventID, - error: Error, + eventID: EventID; + error: Error; } interface FrozenEventData { - eventID: EventID, - event: T, + eventID: EventID; + event: T; } /** Provides a type-safe event interface. */ @@ -54,6 +54,8 @@ export class TypedEvent { const idx = this.listeners.indexOf(listener); if (idx != -1) { this.listeners.splice(idx, 1); + } else { + console.warn(`Attempted to remove non-existent listener (${this.label}):`, idx); } } diff --git a/ui/core/utils.ts b/ui/core/utils.ts index a2d6ffefae..59b222a671 100644 --- a/ui/core/utils.ts +++ b/ui/core/utils.ts @@ -7,6 +7,8 @@ export const noop = () => {}; export const sleep = (ms: number) => new Promise(r => setTimeout(r, ms)); +export const existsInDOM = (element: HTMLElement | null) => document.body.contains(element); + // Returns if the two items are equal, or if both are null / undefined. export function equalsOrBothNull(a: T, b: T, comparator?: (_a: NonNullable, _b: NonNullable) => boolean): boolean { if (a == null && b == null) return true; diff --git a/ui/druid/balance/apls/default.apl.json b/ui/druid/balance/apls/default.apl.json index 5108978254..efd159fda4 100644 --- a/ui/druid/balance/apls/default.apl.json +++ b/ui/druid/balance/apls/default.apl.json @@ -1,28 +1,29 @@ { "type": "TypeAPL", "prepullActions": [ - {"action":{"castSpell":{"spellId":{"spellId":88747}}},"doAtValue":{"const":{"val":"-4.3s"}}}, - {"action":{"castSpell":{"spellId":{"spellId":88747}}},"doAtValue":{"const":{"val":"-3.2s"}}}, - {"action":{"castSpell":{"spellId":{"spellId":88747}}},"doAtValue":{"const":{"val":"-2.1s"}}}, - {"action":{"castSpell":{"spellId":{"otherId":"OtherActionPotion"}}},"doAtValue":{"const":{"val":"-1s"}}}, - {"action":{"castSpell":{"spellId":{"spellId":78674}}},"doAtValue":{"const":{"val":"-1s"}}} + {"action":{"castSpell":{"spellId":{"spellId":88747}}},"doAtValue":{"const":{"val":"-4.3s"}}}, + {"action":{"castSpell":{"spellId":{"spellId":88747}}},"doAtValue":{"const":{"val":"-3.2s"}}}, + {"action":{"castSpell":{"spellId":{"spellId":88747}}},"doAtValue":{"const":{"val":"-2.1s"}}}, + {"action":{"castSpell":{"spellId":{"otherId":"OtherActionPotion"}}},"doAtValue":{"const":{"val":"-1s"}}}, + {"action":{"castSpell":{"spellId":{"spellId":78674}}},"doAtValue":{"const":{"val":"-1s"}}} ], "priorityList": [ - {"action":{"condition":{"cmp":{"op":"OpGt","lhs":{"currentTime":{}},"rhs":{"const":{"val":"5s"}}}},"castSpell":{"spellId":{"spellId":2825,"tag":-1}}}}, - {"action":{"condition":{"cmp":{"op":"OpEq","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"100"}}}},"autocastOtherCooldowns":{}}}, - {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"100"}}}},{"cmp":{"op":"OpEq","lhs":{"auraNumStacks":{"auraId":{"spellId":88747}}},"rhs":{"const":{"val":"3"}}}}]}},"castSpell":{"spellId":{"spellId":88751}}}}, - {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":5570}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":5570}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":5570}}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48517}}}}},{"cmp":{"op":"OpLt","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48518}}}}},{"cmp":{"op":"OpLt","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}}]}},"castSpell":{"spellId":{"spellId":5570}}}}, - {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48517}}}}},{"cmp":{"op":"OpLt","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48518}}}}},{"cmp":{"op":"OpLt","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}}]}},"castSpell":{"spellId":{"spellId":8921}}}}, - {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":5570}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":5570}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":5570}}}}}]}},{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}}]}},"castSpell":{"spellId":{"spellId":5570}}}}, - {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"auraIsActive":{"auraId":{"spellId":48518}}}]}},"castSpell":{"spellId":{"spellId":8921}}}}, - {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}},"castSpell":{"spellId":{"spellId":93402}}}}, - {"hide":true,"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":5570}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":5570}}},"rhs":{"const":{"val":"1"}}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":5570}}}}}]}},{"and":{"vals":[{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}},{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"15"}}}},{"cmp":{"op":"OpLt","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"20"}}}}]}}]}}]}},"castSpell":{"spellId":{"spellId":5570}}}}, - {"hide":true,"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"const":{"val":"1"}}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}}]}},{"and":{"vals":[{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}},{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"15"}}}},{"cmp":{"op":"OpLt","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"20"}}}}]}}]}}]}},"castSpell":{"spellId":{"spellId":8921}}}}, - {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"100"}}}},{"auraIsActive":{"auraId":{"spellId":48518}}}]}},"castSpell":{"spellId":{"spellId":48505}}}}, - {"action":{"condition":{"and":{"vals":[{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48517}}}}},{"cmp":{"op":"OpLt","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48518}}}}},{"cmp":{"op":"OpLt","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}}]}},"castSpell":{"spellId":{"spellId":78674}}}}, - {"action":{"condition":{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}},"castSpell":{"spellId":{"spellId":78674}}}}, - {"action":{"condition":{"druidCurrentEclipsePhase":{"eclipsePhase":"SolarPhase"}},"castSpell":{"spellId":{"spellId":5176}}}}, - {"action":{"condition":{"druidCurrentEclipsePhase":{"eclipsePhase":"LunarPhase"}},"castSpell":{"spellId":{"spellId":2912}}}}, - {"action":{"castSpell":{"spellId":{"spellId":2912}}}} + {"action":{"condition":{"cmp":{"op":"OpGt","lhs":{"currentTime":{}},"rhs":{"const":{"val":"5s"}}}},"castSpell":{"spellId":{"spellId":2825,"tag":-1}}}}, + {"action":{"condition":{"cmp":{"op":"OpEq","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"100"}}}},"autocastOtherCooldowns":{}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpEq","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"100"}}}},{"cmp":{"op":"OpEq","lhs":{"auraNumStacks":{"auraId":{"spellId":88747}}},"rhs":{"const":{"val":"3"}}}}]}},"castSpell":{"spellId":{"spellId":88751}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":5570}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":5570}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":5570}}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48517}}}}},{"cmp":{"op":"OpLe","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"60"}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48518}}}}},{"cmp":{"op":"OpLe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}}]}},"castSpell":{"spellId":{"spellId":5570}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48517}}}}},{"cmp":{"op":"OpLe","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"60"}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48518}}}}},{"cmp":{"op":"OpLe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}}]}},"castSpell":{"spellId":{"spellId":8921}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":5570}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":5570}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":5570}}}}}]}},{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}}]}},"castSpell":{"spellId":{"spellId":5570}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"auraIsActive":{"auraId":{"spellId":48518}}}]}},"castSpell":{"spellId":{"spellId":8921}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}},"castSpell":{"spellId":{"spellId":93402}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":5570}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":5570}}},"rhs":{"const":{"val":"3"}}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":5570}}}}}]}},{"or":{"vals":[{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"cmp":{"op":"OpLe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"20"}}}}]}},{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":48517}}},{"cmp":{"op":"OpLe","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"14"}}}}]}}]}}]}},"castSpell":{"spellId":{"spellId":5570}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"const":{"val":"3"}}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"const":{"val":"3"}}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"cmp":{"op":"OpLe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"20"}}}}]}}]}},"castSpell":{"spellId":{"spellId":8921}}}}, + {"action":{"condition":{"and":{"vals":[{"or":{"vals":[{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":8921,"tag":1}}},"rhs":{"const":{"val":"3"}}}}}},{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}]}},{"and":{"vals":[{"not":{"val":{"dotIsActive":{"spellId":{"spellId":8921,"tag":1}}}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}}}]}},{"and":{"vals":[{"cmp":{"op":"OpLt","lhs":{"dotRemainingTime":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"math":{"op":"OpMul","lhs":{"dotTickFrequency":{"spellId":{"spellId":93402,"tag":1}}},"rhs":{"const":{"val":"3"}}}}}},{"dotIsActive":{"spellId":{"spellId":93402,"tag":1}}}]}}]}},{"and":{"vals":[{"auraIsActive":{"auraId":{"spellId":48517}}},{"cmp":{"op":"OpLe","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"14"}}}}]}}]}},"castSpell":{"spellId":{"spellId":93402}}}}, + {"action":{"condition":{"and":{"vals":[{"cmp":{"op":"OpGe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"100"}}}},{"auraIsActive":{"auraId":{"spellId":48518}}}]}},"castSpell":{"spellId":{"spellId":48505}}}}, + {"action":{"condition":{"or":{"vals":[{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48517}}}}},{"cmp":{"op":"OpLe","lhs":{"currentSolarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}},{"and":{"vals":[{"not":{"val":{"auraIsActive":{"auraId":{"spellId":48518}}}}},{"cmp":{"op":"OpLe","lhs":{"currentLunarEnergy":{}},"rhs":{"const":{"val":"99"}}}}]}}]}},"castSpell":{"spellId":{"spellId":78674}}}}, + {"action":{"condition":{"or":{"vals":[{"auraIsActive":{"auraId":{"spellId":48518}}},{"auraIsActive":{"auraId":{"spellId":48517}}}]}},"castSpell":{"spellId":{"spellId":78674}}}}, + {"action":{"condition":{"druidCurrentEclipsePhase":{"eclipsePhase":"SolarPhase"}},"castSpell":{"spellId":{"spellId":5176}}}}, + {"action":{"condition":{"druidCurrentEclipsePhase":{"eclipsePhase":"LunarPhase"}},"castSpell":{"spellId":{"spellId":2912}}}}, + {"action":{"castSpell":{"spellId":{"spellId":2912}}}} ] - } +} diff --git a/ui/druid/balance/gear_sets/t11.gear.json b/ui/druid/balance/gear_sets/t11.gear.json index 67ffe01268..88a315d672 100644 --- a/ui/druid/balance/gear_sets/t11.gear.json +++ b/ui/druid/balance/gear_sets/t11.gear.json @@ -1,19 +1,21 @@ -{ "items": [ - {"id":65200,"enchant":4207,"gems":[52291,52236]}, - {"id":69882,"randomSuffix":-131}, - {"id":65203,"enchant":4200,"gems":[52208]}, - {"id":60232,"enchant":3722,"gems":[52208]}, - {"id":65045,"enchant":4102,"gems":[52207,52236]}, - {"id":65021,"enchant":4257,"gems":[0]}, - {"id":65199,"enchant":4107,"gems":[52207,0]}, - {"id":65374,"randomSuffix":-231,"gems":[52208,52207]}, - {"id":65201,"enchant":4110,"gems":[52207,52236]}, - {"id":60236,"enchant":4104,"gems":[52236,52207]}, - {"id":65123}, - {"id":65373,"randomSuffix":-131}, - {"id":65105}, - {"id":62047}, - {"id":65041,"enchant":4097}, - {"id":65133,"enchant":4091}, - {"id":64673,"gems":[52207]} -]} +{ + "items": [ + {"id":65200,"enchant":4207,"gems":[68780,52236],"reforging":141}, + {"id":65112,"reforging":162}, + {"id":65203,"enchant":4200,"gems":[52207],"reforging":162}, + {"id":60232,"enchant":4115,"gems":[52207],"reforging":162}, + {"id":65045,"enchant":4102,"gems":[52207,52207],"reforging":167}, + {"id":65021,"enchant":4257,"gems":[0],"reforging":167}, + {"id":65199,"enchant":4068,"gems":[52207,0],"reforging":141}, + {"id":65374,"randomSuffix":-231,"enchant":3601,"gems":[52208,52207]}, + {"id":65201,"enchant":4110,"gems":[52207,52236]}, + {"id":60236,"enchant":4104,"gems":[52236,52207],"reforging":167}, + {"id":65123}, + {"id":65373,"randomSuffix":-131}, + {"id":65105}, + {"id":62047,"reforging":167}, + {"id":65041,"enchant":4097}, + {"id":65133,"enchant":4091}, + {"id":64672,"gems":[52207],"reforging":141} + ] +} diff --git a/ui/druid/balance/inputs.ts b/ui/druid/balance/inputs.ts index 753674bb01..55f61f8a51 100644 --- a/ui/druid/balance/inputs.ts +++ b/ui/druid/balance/inputs.ts @@ -1,4 +1,5 @@ import * as InputHelpers from '../../core/components/input_helpers.js'; +import { Player } from '../../core/player.js'; import { Spec } from '../../core/proto/common.js'; // Configuration for spec-specific UI elements on the settings tab. @@ -10,3 +11,16 @@ export const OkfUptime = InputHelpers.makeSpecOptionsNumberInput({ + fieldName: 'startInSolar', + label: 'Start in Solar Eclipse', + labelTooltip: 'Starts the fight in solar eclipse at full energy', +}); + +export const MasterySnapshot = InputHelpers.makeSpecOptionsNumberInput({ + fieldName: 'masterySnapshot', + label: 'Mastery snapshot amount (rating)', + labelTooltip: 'Mastery amount to use when starting in Solar Eclipse', + showWhen: (player: Player) => player.getSpecOptions().startInSolar, +}); diff --git a/ui/druid/balance/presets.ts b/ui/druid/balance/presets.ts index 4fe63c6b71..fafa9b90fb 100644 --- a/ui/druid/balance/presets.ts +++ b/ui/druid/balance/presets.ts @@ -19,8 +19,10 @@ import { BalanceDruid_Options as BalanceDruidOptions, DruidMajorGlyph, DruidMino import { SavedTalents } from '../../core/proto/ui.js'; import DefaultApl from './apls/default.apl.json'; import PreraidGear from './gear_sets/preraid.gear.json'; +import T11Gear from './gear_sets/t11.gear.json' export const PreraidPresetGear = PresetUtils.makePresetGear('Pre-raid', PreraidGear); +export const T11PresetGear = PresetUtils.makePresetGear('T11', T11Gear); export const PresetRotationDefault = PresetUtils.makePresetAPLRotation('Default', DefaultApl); diff --git a/ui/druid/balance/sim.ts b/ui/druid/balance/sim.ts index 6cc695366d..f9e3e3111c 100644 --- a/ui/druid/balance/sim.ts +++ b/ui/druid/balance/sim.ts @@ -82,16 +82,18 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecBalanceDruid, { playerIconInputs: [DruidInputs.SelfInnervate()], // Buff and Debuff inputs to include/exclude, overriding the EP-based defaults. includeBuffDebuffInputs: [ - BuffDebuffInputs.MeleeHasteBuff, + BuffDebuffInputs.ReplenishmentBuff, BuffDebuffInputs.CritBuff, + BuffDebuffInputs.MP5Buff, BuffDebuffInputs.AttackPowerPercentBuff, - BuffDebuffInputs.MajorArmorDebuff, - BuffDebuffInputs.PhysicalDamageDebuff, + BuffDebuffInputs.StaminaBuff, + BuffDebuffInputs.ManaBuff, ], excludeBuffDebuffInputs: [], // Inputs to include in the 'Other' section on the settings tab. otherInputs: { - inputs: [BalanceInputs.OkfUptime, OtherInputs.TankAssignment, OtherInputs.InputDelay, OtherInputs.DistanceFromTarget, OtherInputs.DarkIntentUptime], + inputs: [BalanceInputs.OkfUptime, BalanceInputs.StartInSolar, BalanceInputs.MasterySnapshot, OtherInputs.TankAssignment, + OtherInputs.InputDelay, OtherInputs.DistanceFromTarget, OtherInputs.DarkIntentUptime], }, encounterPicker: { // Whether to include 'Execute Duration (%)' in the 'Encounter' section of the settings tab. @@ -103,7 +105,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecBalanceDruid, { talents: [Presets.StandardTalents], rotations: [Presets.PresetRotationDefault], // Preset gear configurations that the user can quickly select. - gear: [ Presets.PreraidPresetGear] + gear: [ Presets.PreraidPresetGear, Presets.T11PresetGear] }, autoRotation: (_player: Player): APLRotation => { diff --git a/ui/druid/feral/index.html b/ui/druid/feral/index.html deleted file mode 100644 index 95f07d52aa..0000000000 --- a/ui/druid/feral/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - Cataclysm feral druid simulator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ui/druid/guardian/index.html b/ui/druid/guardian/index.html deleted file mode 100644 index fcbb71baad..0000000000 --- a/ui/druid/guardian/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - Cataclysm guardian druid simulator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ui/druid/guardian/index.ts b/ui/druid/guardian/index.ts index 575a2515f8..bb7a618eca 100644 --- a/ui/druid/guardian/index.ts +++ b/ui/druid/guardian/index.ts @@ -1,9 +1,8 @@ -import { Spec } from '../../core/proto/common'; -import { Sim } from '../../core/sim'; import { Player } from '../../core/player'; import { PlayerSpecs } from '../../core/player_specs'; +import { Spec } from '../../core/proto/common'; +import { Sim } from '../../core/sim'; import { TypedEvent } from '../../core/typed_event'; - import { GuardianDruidSimUI } from './sim'; const sim = new Sim(); diff --git a/ui/druid/guardian/presets.ts b/ui/druid/guardian/presets.ts index 2db3fbf2f5..c19fdee21c 100644 --- a/ui/druid/guardian/presets.ts +++ b/ui/druid/guardian/presets.ts @@ -1,16 +1,13 @@ +import * as PresetUtils from '../../core/preset_utils.js'; import { Conjured, Consumes, Flask, Food, Glyphs, Potions, Spec, TinkerHands } from '../../core/proto/common'; -import { SavedTalents } from '../../core/proto/ui.js'; - import { - GuardianDruid_Rotation as DruidRotation, - GuardianDruid_Options as DruidOptions, - DruidPrimeGlyph, DruidMajorGlyph, DruidMinorGlyph, + DruidPrimeGlyph, + GuardianDruid_Options as DruidOptions, + GuardianDruid_Rotation as DruidRotation, } from '../../core/proto/druid.js'; - -import * as PresetUtils from '../../core/preset_utils.js'; - +import { SavedTalents } from '../../core/proto/ui.js'; // Preset options for this spec. // Eventually we will import these values for the raid sim too, so its good to // keep them in a separate file. diff --git a/ui/hunter/survival/presets.ts b/ui/hunter/survival/presets.ts index 592859245a..ff8083d836 100644 --- a/ui/hunter/survival/presets.ts +++ b/ui/hunter/survival/presets.ts @@ -42,7 +42,7 @@ export const ROTATION_PRESET_AOE = PresetUtils.makePresetAPLRotation('AOE', AoeA export const SurvivalTalents = { name: 'Survival', data: SavedTalents.create({ - talentsString: '03-2302-03203023023022121311', + talentsString: '03-2302-23203003023022121311', glyphs: Glyphs.create({ prime1: PrimeGlyph.GlyphOfExplosiveShot, prime2: PrimeGlyph.GlyphOfKillShot, diff --git a/ui/hunter/survival/sim.ts b/ui/hunter/survival/sim.ts index e7c8b63c48..f514b4093f 100644 --- a/ui/hunter/survival/sim.ts +++ b/ui/hunter/survival/sim.ts @@ -68,7 +68,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecSurvivalHunter, { if (player.getTalents().pathing) { stats = stats.addStat(Stat.StatMeleeHaste, player.getTalents().pathing * Mechanics.HASTE_RATING_PER_HASTE_PERCENT); } - return { talents: stats, }; diff --git a/ui/index.html b/ui/index.html index 094a363665..09fafede7d 100644 --- a/ui/index.html +++ b/ui/index.html @@ -75,7 +75,7 @@

            Cataclysm

            Death Knight - Alpha + Beta
            @@ -87,7 +87,7 @@

            Cataclysm

            Death Knight Blood - Alpha + Beta
            @@ -99,7 +99,7 @@

            Cataclysm

            Death Knight Frost - Alpha + Beta
            @@ -111,7 +111,7 @@

            Cataclysm

            Death Knight Unholy - Alpha + Beta
            @@ -393,7 +393,7 @@

            Cataclysm