Catus: Edgy's Cat Simulator (in development)
73 posts
• Page 1 of 3 • 1, 2, 3
Catus: Edgy's Cat Simulator (in development)
Tonight I started development on my own Cat simulator. The goal of this project is simple: try to replicate the simc rotation, and then look for possible improvements to the rotation. Additionally, I want to be able to track modified bleeds more effectively (as I'm mainly interested in the DoC rotation.)
Here is a text dump of a few seconds of combat:
I'm trying to track the damage modifiers on various bleeds:
I'm also trying to accurately clip my bleeds:
And use OOC effectively:
After a few hours with a Raid Target Dummy, a bunch of gear configurations, and Recount, I felt like I was reinventing the wheel trying to figure out all the proper scaling and implementation of each attack.
I was wondering, does anyone have a comprehensive list of Feral damage equations that are up to date? simc seems to extract spell information from some database and I don't know if I can trust Rawr.
Here is a text dump of a few seconds of combat:
- Code: Select all
00:00:00.000: Pre: DOC
00:00:00.000: Pre: SR
00:00:00.000: Potion
00:00:00.000: Rake+SR+DOC+Agi(4000): HIT(18744)
00:00:00.000: Combo: 1
00:00:00.978: Melee+SR+Agi(4000): HIT(9278)
00:00:01.000: Shred+SR+DOC+BL+Agi(4000): HIT(69739)
00:00:01.000: Combo: 2
00:00:01.956: Melee+SR+Agi(4000): HIT(8752)
00:00:02.000: Shred+SR+BL+Agi(4000): HIT(47659)
00:00:02.000: Combo: 3
00:00:02.934: Melee+SR+Agi(4000): HIT(9298)
00:00:03.000: Tiger's Fury: +60
00:00:03.000: Berserk
00:00:03.000: Shred+TF+SR+BL+Agi(4000): CRIT(107075)
00:00:03.000: Searing Words
00:00:03.000: LOTP
00:00:03.000: Combo: 5
00:00:03.000: Rake(DoT)+SR+DOC+Agi(4000): HIT(18744)
00:00:03.912: Melee+TF+SR+Agi(7386): CRIT(21574)
00:00:03.912: Xuen
00:00:04.000: Rip^5+TF+SR+Agi(10415)
00:00:04.000: PS: 5
00:00:04.890: Melee+TF+SR+Agi(10415): HIT(11448)
00:00:05.000: Shred+TF+SR+BL+Agi(10415): CRIT(125876)
00:00:05.000: Combo: 2
00:00:05.868: Melee+TF+SR+Agi(10415): CRIT(22829)
00:00:06.000: Rip^5(DoT)+TF+SR+Agi(10415): CRIT(49768)
00:00:06.000: Shred+TF+SR+BL+Agi(10415): HIT(60556)
00:00:06.000: Combo: 3
00:00:06.000: Rake(DoT)+SR+DOC+Agi(4000): CRIT(38614)
00:00:06.846: Melee+TF+SR+Agi(10415): HIT(10560)
00:00:06.846: Clearcasting
00:00:07.000: Healing Touch: PS
00:00:07.824: Melee+TF+SR+Agi(10415): HIT(10482)
00:00:08.000: Rip^5(DoT)+TF+SR+Agi(10415): HIT(24159)
00:00:08.467: Thrash+TF+SR+DOC+Agi(10415): CRIT(88956)
00:00:08.802: Melee+TF+SR+Agi(10415): CRIT(24660)
00:00:09.000: Rake(DoT)+SR+DOC+Agi(4000): HIT(18744)
00:00:09.467: Clipped: Rake[2] 51893 -> 165270
00:00:09.467: Rake+SR+DOC+Agi(10415): CRIT(51093)
I'm trying to track the damage modifiers on various bleeds:
- Code: Select all
Rip^5+TF+SR+Agi(10415)
I'm also trying to accurately clip my bleeds:
- Code: Select all
Clipped: Rake[2] 51893 -> 165270
And use OOC effectively:
- Code: Select all
00:00:06.846: Clearcasting
00:00:07.000: Healing Touch: PS
00:00:07.824: Melee+TF+SR+Agi(10415): HIT(10482)
00:00:08.000: Rip^5(DoT)+TF+SR+Agi(10415): HIT(24159)
00:00:08.467: Thrash+TF+SR+DOC+Agi(10415): CRIT(88956)
After a few hours with a Raid Target Dummy, a bunch of gear configurations, and Recount, I felt like I was reinventing the wheel trying to figure out all the proper scaling and implementation of each attack.
I was wondering, does anyone have a comprehensive list of Feral damage equations that are up to date? simc seems to extract spell information from some database and I don't know if I can trust Rawr.
Last edited by raffy on Tue Feb 19, 2013 6:30 pm, edited 2 times in total.

Re: Feral Damage Equations
The Wowhead tooltips generally give the damage formulas, but the damage coefficients need to be mined from the WoW data files. Also, the formulas may be modified by server-side changes that aren't reflected in the in-game tooltips, i.e., "hotfixes" -- you'll need to read all of the patch notes to identify things where they say "base damage of Rake increased by 25%" and adjust your formulas accordingly.
Then later, when 5.1 is released, you'll need to remove all of those manual adjustments for hotfixes because the client data files will have caught up with the server-side hotfixes and the data-mined coefficients will be accurate again.
Good luck with your simulator.
Then later, when 5.1 is released, you'll need to remove all of those manual adjustments for hotfixes because the client data files will have caught up with the server-side hotfixes and the data-mined coefficients will be accurate again.
Good luck with your simulator.
Re: Feral Damage Equations
Some dumps of logs:
http://raffy.antistupid.com/wow/catsim/DumpRun1.txt
http://raffy.antistupid.com/wow/catsim/DumpRun2.txt
http://raffy.antistupid.com/wow/catsim/DumpRunBatch.txt
So far it's pretty fast. I'm doing about 250 sims of 40m dmg per second on my MBP (2.3GHz i7) with logging enabled. Once I profile it, remove the logging and string manipulation, and spread it across more cores, 100k should take less than a minute.
The code right now is a huge mess but this will change shortly. It's currently hardcoded to use the gear from my armory (Edgy/US-Suramar) with two different profiles: Solo and Raiding. I'm just focused on correctness and trying to implement as many things as possible to see what code gets repeated the most before I set anything in stone. Mostly, I've been spending my time clawing away at raid level target dummies with different gear configurations to collect data.
Current sim code (java) w/o dependancies for the curious (I'll put the project up on a github soon):
http://raffy.antistupid.com/wow/catsim/SimCode.txt
There's a bunch of cool stuff in the logs:
Here is a final Rip tick (11th tick [8+3] from a 5-combo Rip) followed by a fade event (where the 0 tells me that no rip extensions remain.)
Here is a 3-combo FB that consumed 10 extra energy, it also refreshed a Rip, that had 1 tick left (0 extensions available) and would of expired in 920ms.
Pre-combat SR properly trims its uptime to about 9.5s (to allow for 100 starting energy and no gcd).
My rotation blows at the moment. I plan to implement the simc priority list once I've got more stuff implemented.
As of right now, I have two improvements over typical analysis:
1. Since I can track all damage modifiers, I produce interesting statistics like:
http://raffy.antistupid.com/wow/catsim/ ... Detail.txt
2. Since it's feral specific, I can monitor things more closely:
http://raffy.antistupid.com/wow/catsim/DumpRun1.txt
http://raffy.antistupid.com/wow/catsim/DumpRun2.txt
http://raffy.antistupid.com/wow/catsim/DumpRunBatch.txt
So far it's pretty fast. I'm doing about 250 sims of 40m dmg per second on my MBP (2.3GHz i7) with logging enabled. Once I profile it, remove the logging and string manipulation, and spread it across more cores, 100k should take less than a minute.
The code right now is a huge mess but this will change shortly. It's currently hardcoded to use the gear from my armory (Edgy/US-Suramar) with two different profiles: Solo and Raiding. I'm just focused on correctness and trying to implement as many things as possible to see what code gets repeated the most before I set anything in stone. Mostly, I've been spending my time clawing away at raid level target dummies with different gear configurations to collect data.
Current sim code (java) w/o dependancies for the curious (I'll put the project up on a github soon):
http://raffy.antistupid.com/wow/catsim/SimCode.txt
There's a bunch of cool stuff in the logs:
Here is a final Rip tick (11th tick [8+3] from a 5-combo Rip) followed by a fade event (where the 0 tells me that no rip extensions remain.)
- Code: Select all
00:28.326 Rip`5#11+SR+TF+Agi(7386): HIT(42005)
00:28.326 -Rip`5+SR+TF+Agi(7386): 0
Here is a 3-combo FB that consumed 10 extra energy, it also refreshed a Rip, that had 1 tick left (0 extensions available) and would of expired in 920ms.
- Code: Select all
07:08.328 FB`3+En(10)+SR+BL+Agi(3029): CRIT(83445)
07:08.328 Refreshed: Rip`5+SR[1+0] (920-920)
Pre-combat SR properly trims its uptime to about 9.5s (to allow for 100 starting energy and no gcd).
- Code: Select all
00:00.000 Pre: DOC
00:00.000 Pre: SR
00:00.000 +Potion#1
00:00.000 Ravage+SR+DOC+Agi(4000): HIT(90778)
00:00.000 Combo: 1 (+1)
00:00.000 Melee+SR+Agi(4000): HIT(13076)
My rotation blows at the moment. I plan to implement the simc priority list once I've got more stuff implemented.
As of right now, I have two improvements over typical analysis:
1. Since I can track all damage modifiers, I produce interesting statistics like:
http://raffy.antistupid.com/wow/catsim/ ... Detail.txt
- Code: Select all
SR Uptime = 97.30%
SR Casts = 16
SR Clipped Time = 0ms
SR Glyph = 3
+SR (only Melee) = 97.21% (488 of 502)
+SR (except Melee) = 99.02% (605 of 611)
+TF (except Melee) = 28.15% (172 of 611)
+BL (only Shred) = 100.00% (126 of 126)
+DOC (only Rip) = 38.46% (5 of 13)
+DOC (only Rip`5) = 38.46% (5 of 13)
+DOC (only Rip Ticks) = 30.00% (54 of 180)
+DOC (only Rake) = 47.06% (16 of 34)
+DOC (only Rake Ticks) = 50.36% (70 of 139)
2. Since it's feral specific, I can monitor things more closely:
- Code: Select all
Energy Gain Haste = 5034
Energy Gain Miss = 0
Energy Gain Waste = 70
Energy Gain TF = 840 (14 of 15 possible)
Energy Gain SotF = 749 (44)
OOC = 34
OOC Shred = 9 (26%)
OOC Thrash = 18 (53%)
OOC Wasted = 0 (0 during lockout)
FB Extra Energy = 11.8
DOC Total = 76
DOC Wasted = 0
Rip Refreshes = 8
Rip Clips = 3

Re: Feral Damage Equations
NetBeans (java) project source:
http://raffy.antistupid.com/wow/catsim/Src.zip
Note: this is only for programmers at the moment or those curious (there is no interface, readme, instructions, or support)
Current features:
- full armory/item import with gem/enchant/tinker/socket bonuses support and can validate new armor configurations (currently missing set bonuses)
- multi-threaded monte carlo and brute force reforger (with objective/constraints)
Simulator features:
- scheduler/future system to make development easy
- immediate code abort on gcd/cast invocation
- full casting/stop casting/gcd support (will add simulated latency soon)
- buff modifier tracking
- accuracy (abilities have been checked to within +/- 1 damage for various gear sets)
Once I get everything a bit more polished and verify simc results, here are my plans:
First goal: Trinket Simulator (simple Upgrade simulator)
I'd like to make it so a fellow druid can enter their Character, Realm, and Country.
First, it would import their current gear/gems/enchants.
Then work through a list of valid trinket pairs (N choose 2).
Equip them and then perform optimal reforging.
Then run a large multi-threaded simulation.
Record all results and then produce a trinket pair ranking.
Obviously, this leads to a second goal: Generalized Upgrade Simulator
With support for single socket upgrades and pre-set configurations (like 5x 4-piece + offset configurations).
Newest features:
Time-spent distribution:
Tick-number tracking:
Buff/Debuff fader support (the negative prefix)
Numerical Rake/Rip clipping:
http://raffy.antistupid.com/wow/catsim/Src.zip
Note: this is only for programmers at the moment or those curious (there is no interface, readme, instructions, or support)
Current features:
- full armory/item import with gem/enchant/tinker/socket bonuses support and can validate new armor configurations (currently missing set bonuses)
- multi-threaded monte carlo and brute force reforger (with objective/constraints)
Simulator features:
- scheduler/future system to make development easy
- immediate code abort on gcd/cast invocation
- full casting/stop casting/gcd support (will add simulated latency soon)
- buff modifier tracking
- accuracy (abilities have been checked to within +/- 1 damage for various gear sets)
Once I get everything a bit more polished and verify simc results, here are my plans:
First goal: Trinket Simulator (simple Upgrade simulator)
I'd like to make it so a fellow druid can enter their Character, Realm, and Country.
First, it would import their current gear/gems/enchants.
Then work through a list of valid trinket pairs (N choose 2).
Equip them and then perform optimal reforging.
Then run a large multi-threaded simulation.
Record all results and then produce a trinket pair ranking.
Obviously, this leads to a second goal: Generalized Upgrade Simulator
With support for single socket upgrades and pre-set configurations (like 5x 4-piece + offset configurations).
Newest features:
Time-spent distribution:
- Code: Select all
Waiting 04:12.550 [ 41.02%] 0
Shred 02:37.000 [ 25.50%] 157 1.0s
HT 01:14.103 [ 12.04%] 51 1.5s
Rake 00:49.000 [ 7.96%] 49 1.0s
SR 00:22.000 [ 3.57%] 22 1.0s
Thrash 00:21.000 [ 3.41%] 21 1.0s
FB 00:20.000 [ 3.25%] 20 1.0s
Rip 00:19.000 [ 3.09%] 19 1.0s
Ravage 00:01.000 [ 0.16%] 1 1.0s
Tick-number tracking:
- Code: Select all
10:11.653 Rip`5#67 34055 hit +SR+TF+DOC+Agi(3029)
10:12.408 Melee 12861 hit +SR+Agi(3386)
10:12.437 FB`2 39701 crit +En(0)+SR+DOC+BL+Agi(3386)
10:12.437 +Blessing of the Celestials
10:12.437 BitW: Rip`5+SR+TF+DOC+Agi(3029)[5+2] (9.2s-13s)
10:12.984 Rake#1 24691 hit +SR+Agi(3386)
10:13.059 Thrash#3 28040 crit +SR+DOC
10:13.377 Melee 10207 hit /Glance+SR+Agi(6415)
10:13.653 Rip`5#68 34055 hit +SR+TF+DOC+Agi(3029)
10:14.346 Melee 23159 crit +SR+Agi(6415)
10:15.315 Melee 23364 crit +SR+Agi(6415)
10:15.456 Shred 53539 hit +SR+DOC+BL+Agi(6415)
10:15.456 Combo: 1 (+1)
10:15.653 Rip`5#69 68110 crit +SR+TF+DOC+Agi(3029)
10:15.653 Target has died: 40.00M
Buff/Debuff fader support (the negative prefix)
- Code: Select all
00:55.233 Melee 7676 hit /Glance+SR
00:55.408 Rip`5#11 22508 hit +SR+TF
00:55.408 -Rip`5+SR+TF: 0
00:56.202 Melee 11530 hit +SR
00:56.667 Thrash#5 14020 hit +SR+DOC
00:56.667 -Thrash+SR+DOC
00:57.171 Melee 11613 hit +SR
00:58.000 Rake#4 20247 hit +SR
Numerical Rake/Rip clipping:
- Code: Select all
02:00.960 Clipped: Rip`5+SR [1+0] 12958 >> Rip`5+SR+Agi(3386) 125402
...
03:08.568 Clipped: Rake +SR+DOC+Agi(6415) [1] 25721 >> +SR+Agi(3386) 100282
...
06:54.528 Clipped: Rip`5+SR+DOC+Agi(3029) [1+0] 19999 >> Rip`5+SR 103667

Re: Feral Damage Equations
I keep chipping away at this thing each evening, I've got a few updates, but no usable (interfaced) release yet.
First, my simulator supports lookahead Rake/Rip clipping:
Second, it supports active HotW casting (Wrath/Hurricane/Tranquility), including weapon swaps (with enchants and gem/meta validation) with proper GCD/swing-timer emulation:
The interface keeps going through iterations:
http://raffy.antistupid.com/wow/catsim/sim_ui.jpg
http://raffy.antistupid.com/wow/catsim/sim_ui2.png
I have the N choose 2 trinket simulator (with reforging) working, but the output is purely textual.
Theres a bunch of other options that I added under a miscellaneous header, I we can simulate the effect of various abilities (disable Omen, LotP, any individual spell, etc...). MoP bosses like to spin around, so I've implemented a spin probability thing, to try to emulate this retarded behavior. I have options for using Rake as primary generator, include one that uses Shred when clipping a Rake would be a DPS loss (which is equivalent to just setting the clip threshold of Rake near break even). Smart weaving of FF.
When you select HotW, and choose a non-passive option like Hurricane, you get support for multiple targets, however the primary cat rotation is single target. I'll probably consider multi-target support in the future.
First, my simulator supports lookahead Rake/Rip clipping:
- Code: Select all
06:21.635 -Rake+SR+DoC+TF+Agi(2539)
06:21.635 Rake 28577 Hit +SR+Agi(5568)
06:21.635 Combo: 3 (+1)
06:22.400 Melee 24250 Crit +SR+Agi(5568)
06:22.635 HT: PS
06:23.356 Melee 26659 Crit +SR+Agi(5568)
06:23.925 Thrash#4 29479 Crit +SR+TF+Agi(2539)
06:24.312 Melee 11561 Hit +SR+Agi(5568)
06:24.635 Rake#1 28577 Hit +SR+Agi(5568)
06:24.655 Clipped: Rake [4] +SR+Agi(5568) 38763 > +25.00% > +SR+DoC+Agi(5568) 48454
06:24.655 Rake 35721 Hit +SR+DoC+Agi(5568)
06:24.655 Combo: 4 (+1)
06:25.268 Melee 8642 Glance +SR+Agi(5568)
06:26.224 Melee 27250 Crit +SR+Agi(5568)
06:26.925 Thrash#5 29479 Crit +SR+TF+Agi(2539)
06:26.925 -Thrash+SR+TF+Agi(2539)
06:27.180 Melee 13331 Hit +SR+Agi(5568)
06:27.635 Rake#1 35721 Hit +SR+DoC+Agi(5568)
06:28.075 Clipped: Rake [4] +SR+DoC+Agi(5568) 48454 > +0.00% > +SR+DoC+Agi(5568) 48454 <====== Lookahead Bottle
06:28.075 Rake 71443 Crit +SR+DoC+Agi(5568)
06:28.075 Combo: 5 (+2)
06:28.136 Melee 8307 Glance +SR+Agi(5568)
06:29.016 -Bottle of Infinite Stars
06:29.075 HT: NS
Second, it supports active HotW casting (Wrath/Hurricane/Tranquility), including weapon swaps (with enchants and gem/meta validation) with proper GCD/swing-timer emulation:
- Code: Select all
00:00.000 Change Equipment: Main > Alt
00:00.000 +Heart of the Wild
00:00.000 Shapeshift: Human
00:00.000 Casting: Wrath...
00:01.928 Casted: Wrath (1.93s)
00:01.928 Wrath 101581 Hit +HotW
00:01.928 Casting: Wrath...
00:03.856 Casted: Wrath (1.93s)
00:03.856 Wrath 101492 Hit +HotW
00:03.856 Casting: Wrath...
00:05.784 Casted: Wrath (1.93s)
00:05.784 Wrath 208986 Crit +HotW
00:05.784 Casting: Wrath...
00:07.712 Casted: Wrath (1.93s)
00:07.712 Wrath 101419 Hit +HotW
00:07.712 Casting: Wrath...
00:09.590 -SR
00:09.640 Casted: Wrath (1.93s)
00:09.640 Wrath 101324 Hit +HotW
...
00:23.136 Casting: Wrath...
00:25.064 Casted: Wrath (1.93s)
00:25.064 Wrath 101685 Hit +HotW
00:25.064 Casting: Wrath...
00:26.992 Casted: Wrath (1.93s)
00:26.992 Wrath 101241 Hit +HotW
00:26.992 Casting: Wrath...
00:28.920 Casted: Wrath (1.93s)
00:28.920 Wrath 101496 Hit +HotW
00:28.920 +Bottle of Infinite Stars
00:28.920 Casting: Wrath...
00:30.000 Expect target death: 08:21.711 <7.9 min>
00:30.848 Casted: Wrath (1.93s)
00:30.848 Wrath 114259 Hit +HotW+Agi(2539)
00:30.848 Casting: Wrath...
00:32.776 Casted: Wrath (1.93s)
00:32.776 Wrath 114419 Hit +HotW+Agi(2539)
...
00:38.560 Casting: Wrath...
00:40.488 Casted: Wrath (1.93s)
00:40.488 Wrath 114211 Hit +HotW+Agi(2539)
00:40.488 Casting: Wrath...
00:42.416 Casted: Wrath (1.93s)
00:42.416 Wrath 114173 Hit +HotW+Agi(2539)
00:42.416 Casting: Wrath...
00:44.344 Casted: Wrath (1.93s)
00:44.344 Wrath 114095 Hit +HotW+Agi(2539)
00:44.344 Casting: Wrath...
00:45.000 -Heart of the Wild
00:45.000 Interrupted: Wrath (0.66/1.93s)
00:45.000 Shapeshift: Cat
00:45.000 Change Equipment: Alt > Main
00:45.956 Melee 19382 Crit +Agi(2539)
00:45.956 LOTP
00:46.500 +SR`0
00:46.912 Melee 25917 Crit +SR+Agi(2539)
The interface keeps going through iterations:
http://raffy.antistupid.com/wow/catsim/sim_ui.jpg
http://raffy.antistupid.com/wow/catsim/sim_ui2.png
I have the N choose 2 trinket simulator (with reforging) working, but the output is purely textual.
Theres a bunch of other options that I added under a miscellaneous header, I we can simulate the effect of various abilities (disable Omen, LotP, any individual spell, etc...). MoP bosses like to spin around, so I've implemented a spin probability thing, to try to emulate this retarded behavior. I have options for using Rake as primary generator, include one that uses Shred when clipping a Rake would be a DPS loss (which is equivalent to just setting the clip threshold of Rake near break even). Smart weaving of FF.
When you select HotW, and choose a non-passive option like Hurricane, you get support for multiple targets, however the primary cat rotation is single target. I'll probably consider multi-target support in the future.

Re: Feral Damage Equations
Got some work done while stuffing my face with turkey.
Here is gear configuration:
http://raffy.antistupid.com/wow/catsim/sim_ui3.png
Currently, I have it preconfigured with all the gear from http://fluiddruid.net/feral-druid-5-0mi ... gear-list/, plus whatever you import, along with the ability to load in any piece of gear by id.
I need to finish optimizing the reforger and then I should have a release ready.
Here is gear configuration:
http://raffy.antistupid.com/wow/catsim/sim_ui3.png
Currently, I have it preconfigured with all the gear from http://fluiddruid.net/feral-druid-5-0mi ... gear-list/, plus whatever you import, along with the ability to load in any piece of gear by id.
I need to finish optimizing the reforger and then I should have a release ready.

- Leafkiller
- Exalted
-
- Posts: 1127
- Joined: Fri Jun 04, 2010 4:28 am
Re: Feral Damage Equations
How close in dps is your simulator to Simulationcraft when identical action lists are used?
Re: Feral Damage Equations
I downloaded SimulationCraft to see what gear is used in the BiS T14H configuration, but I wasn't able to find the exact gear. Since my interface isn't finished yet, I started hardcoding a BiS configuration in my own code, and soon realized that describing gear configurations is kind of a complicated.
I came up with a pretty simple notation to describe gear:
Syntax:
I produced the reforging using my exhaustive reforger with the following objective/constraints:
Which produced:
For some unknown reason, I am about -900 secondary stat different from the "Gear Summary" information at the bottom of Druid_Feral_T14H.simc
My basic cat rotation currently looks the following, which is pretty close, but not yet verbatim to your script, but it's getting there.
I don't know Troll base stats yet, so these numbers are for Night Elf using the gear configuration above, for a 45-55m hp target (~7.2 minute combat time):
I need to track down that 900 secondary different, add more latency emulation, and mirror your action list better.
Edit: some detailed stats from averaging together 10 runs
Edit 2: this is DoC, open with Ravage, pre pot/SR/2xDoC, all raid buffs, 300 agi food, 1000 agi flask, heroism, but no symbosis/stormlash/skull banner/etc...
Edit 3: textual dump: http://raffy.antistupid.com/wow/catsim/Dump4.txt
I came up with a pretty simple notation to describe gear:
- Code: Select all
r = 76692 # Delicate Primordial Ruby: +160 Agility
p = 76680 # Glinting Imperial Amethyst: +80 Agility, +160 Hit
86925 >eh +76884 +p # [509] Eternal Blossom Headpiece (Heroic)
86953 # [509] Choker of the Unleashed Storm (Heroic)
86927 >em +p "Secret Tiger Claw" # [509] Eternal Blossom Spaulders (Heroic)
86963 Swordguard # [509] Legbreaker Greatcloak (Heroic)
86923 "Glorious Stats" # [509] Eternal Blossom Raiment (Heroic)
86995 >eh "Greater Agility" # [509] Smooth Beetle Wristbands (Heroic)
86924 >hm "Super Strength" Springs # [509] Eternal Blossom Grips (Heroic)
87180 >he +rr Socket Frag # [509] Stalker's Cord of Eternal Autumn (Heroic)
90504 +rp Shadowleather # [516] Legguards of Failing Purification (Heroic Elite)
86984 >ec +r Blurred # [509] Treads of Deadly Secretions (Heroic)
90503 >tm # [516] Regail's Band of the Endless (Heroic Elite)
86974 >ec # [509] Painful Thorned Ring (Heroic)
87057 # [502] Bottle of Infinite Stars (Heroic)
87167 # [509] Terror in the Mists (Heroic)
87156 >ec +89873 "Dancing Steel" # [509] Gao-Rei, Staff of the Legendary Protector (Heroic)
Syntax:
- Code: Select all
anything after # = comments
>XY = reforge from X to Y (e = exp, c = crit, h = hit, t = haste, etc...)
+key/id = add a gem by define (at top) or inline blizzard item id
any remaining text defines Enchant, Tinker, or Mod (like extra socket)
I produced the reforging using my exhaustive reforger with the following objective/constraints:
- Code: Select all
new ReforgeAlgo().atLeast(StatT.HIT, 2540).atLeast(StatT.EXP, 2540).setWeight(StatT.MASTERY, 1.00).setWeight(StatT.CRIT, 0.90).setWeight(StatT.HASTE, 0.80).dontReforge(StatT.MASTERY);
Which produced:
- Code: Select all
Critical Strike 4858
Hit 2544
Haste 825
Expertise 2544
Mastery 8239
For some unknown reason, I am about -900 secondary stat different from the "Gear Summary" information at the bottom of Druid_Feral_T14H.simc
My basic cat rotation currently looks the following, which is pretty close, but not yet verbatim to your script, but it's getting there.
- Code: Select all
if (cfg.use_hero && HEROISM.clickable() && willExpire(ttl, 60000)) {
HEROISM.click();
}
if (cfg.use_pot && pot_clickable() && (HEROISM.up() || (bitw() && BERSERK.up()) || willExpire(ttl, 45000))) {
pot_click();
berserk_macro();
}
if (bitw() && rip_tick_left > 0 && ripTimeMin() < Math.max(1000, timeToCast(FB))) {
if (combo > 0 && rip_extends == 0) tf_assist(FB);
tf_assist(generator(false));
}
final int sr_time = sr_time();
// thrash on ooc
if (oocKey.exists && (thrash_tick_left < 2)) {
if (sr_time == 0 && !willEnergyCap()) SR.click();
//wantDoC_ns_en(false, 5);
THRASH.click();
}
// free ravage consumes ooc :(
if (can_pvpRavage() && !oocKey.exists) {
RAVAGE.click();
}
// dont waste ps procs outside of berserk
if (spec.talent_doc && cfg.dont_waste_ps && doc_charges < 2 && willExpire(ps_time(), 1000) && berserk_time() == 0) {
HT.click();
}
// tf and berserk
if (TF.clickable() && sr_time > 0 && oocKey.exists ? energy <= 20 : energy + TF_ENERGY <= energyMax) {
tf_macro();
if (BERSERK.clickable() && (ttl > BERSERK_CD + BERSERK_DUR || pot_up())) {
berserk_macro();
}
}
if (willExpire(ttl, BERSERK_DUR) && BERSERK.clickable()) {
berserk_macro();
}
// agressive SR
if (ttl > 3000) {
if (sr_time == 0) {
SR.click();
} else if (sr_time < ttl && sr_time < 4000 && combo > 0 && rip_tick_left >= 2) {
SR.click();
}
}
// normal finisher
if (combo == 5) {
if (rip_tick_left == 0 || (bitw() ? ttl > 20000 && ripTickDmgAvgNew() > cfg.ripClipMultiplier * ripTickDmgAvg : maxRipTicksLeft() <= 4)) {
wantDoC_ns_en(true, -1);
RIP.click();
/*
} else if (!bitw() && maxRipTicksLeft() <= 4) {
// rip clip
if (oocKey.exists) {
THRASH.click();
} else {
RIP.click();
}
*/
} else {
FB.click();
}
}
if (RAKE.clickable()) {
if (rake_tick_left == 0) {
// initial rake
RAKE.click();
} else {
double newDmg = rakeTickDmgAvgNew();
if (newDmg > cfg.rakeClipMultiplier * rakeTickDmgAvg) {
// clip rake
RAKE.click();
} else if (rake_tick_index > 0 && newDmg >= rakeTickDmgAvg && rakeTickDmgAvgFuture(CAT_GCD) < rakeTickDmgAvg) {
// the next rake sux, shit is fading
RAKE.click();
}
}
}
// combo builder
if (combo < 5) {
if (BERSERK.up() && KOTJ.clickable()) {
KOTJ.click(); // fucking gcd
}
generator(cfg.use_rake_as_generator).click();
}
if (spec.talent_hotw && HOTW.clickable() && !BERSERK.up() && hotwLogic != null) {
altGear.equip();
HOTW.click();
top.push(hotwLogic);
}
if (shouldFF()) {
FF.click();
}
I don't know Troll base stats yet, so these numbers are for Night Elf using the gear configuration above, for a 45-55m hp target (~7.2 minute combat time):
- Code: Select all
Median = 119082
Mean = 119017 +/- 102
Min = 110224
Max = 128557
Mean Time = 7.2 min +/- 446 ms
I need to track down that 900 secondary different, add more latency emulation, and mirror your action list better.
Edit: some detailed stats from averaging together 10 runs
- Code: Select all
Rake Uptime = 92.98%
Rip Uptime = 89.59%
+SR (only Melee) = 99.81% (4769 of 4778)
+SR (except Melee) = 98.77% (6097 of 6173)
+DoC (only Rip Ticks) = 63.04% (1211 of 1921)
+DoC (only Rake Ticks) = 72.75% (964 of 1325)
Name Count Hit Crit Crit% Overall
Rip`5# 1921 43037 88999 40.81% [ 23.73%]
Melee 4778 13928 32927 40.12% [ 20.58%]
Rake# 1325 50514 106676 39.47% [ 19.25%]
Shred 1185 54262 110229 38.82% [ 18.00%]
FB`5 193 79532 175670 68.91% [ 5.62%]
Rake 374 47712 101611 40.91% [ 5.21%]
Thrash# 793 22828 47759 39.47% [ 5.18%]
Thrash 166 31755 66912 36.75% [ 1.48%]
Cobalt Frag Bomb 76 31539 65162 11.84% [ 0.54%]
Ravage 10 102571 188249 90.00% [ 0.36%]
FB`4 2 0 79065 100.00% [ 0.03%]
FB`3 1 0 59525 100.00% [ 0.01%]
FB`1 1 0 23018 100.00% [ 0.00%]
Rip`5 126 0 0 0.00% [ 0.00%] // rip application
Dancing Steel PPM 107 30.555%
Swordguard ICD 79 27.637%
Bottle of Infinite Stars ICD 89 42.333%
Terror in the Mists ICD 40 19.244%
Waiting 2.4m [ 34.32%] 0
Shred 2.0m [ 29.35%] 122 1.0s
HT 49s [ 11.80%] 35 1.4s
Rake 34s [ 8.18%] 34 1.0s
FB 21s [ 5.05%] 21 1.0s
SR 18s [ 4.33%] 18 1.0s
Thrash 16s [ 3.85%] 16 1.0s
Rip 12s [ 2.89%] 12 1.0s
Ravage 1.0s [ 0.24%] 1 1.0s
Edit 2: this is DoC, open with Ravage, pre pot/SR/2xDoC, all raid buffs, 300 agi food, 1000 agi flask, heroism, but no symbosis/stormlash/skull banner/etc...
Edit 3: textual dump: http://raffy.antistupid.com/wow/catsim/Dump4.txt

- Tinderhoof
- Exalted
-
- Posts: 1114
- Joined: Mon May 24, 2010 10:21 pm
Re: Feral Damage Equations
Hey Raffy. I had a question about your rotation. Why are you opening with Ravage in your rotation? With the limited amount of time we have with SR to open a fight it is a very expensive opener with a risky upside. It is also not really safe to try and get behind a boss stealthed pre pull.
Also for the opener what time do you have on SR, and how much energy do you start with? Have you tried your opener as Rake instead of Ravage?
Also for the opener what time do you have on SR, and how much energy do you start with? Have you tried your opener as Rake instead of Ravage?
Re: Feral Damage Equations
I just figured Ravage was better (I haven't really done any comparisons of different rotations yet, apart from playing around with lookahead Rake), but I currently implement it as an option. If you begin with "Normal Rotation", it opens with Rake. You can also open with active HotW (Wrath or Hurricane spam).
If pre-SR is enabled (and glyph is active), you still start with 100 energy, but SR is shortened by the time it takes to regen your energy back to 100 (which puts the starting SR at 9.77s in duration for the BiS setup above).
If pre-SR is enabled (and glyph is active), you still start with 100 energy, but SR is shortened by the time it takes to regen your energy back to 100 (which puts the starting SR at 9.77s in duration for the BiS setup above).
- Code: Select all
if (spec.glyph_sr && cfg.pre_sr) {
_srApply(_srDur() - timeToGainBackIfCast(SR)); // about 9 seconds
}

Re: Feral Damage Equations
Ravage seems to be a DPS gain over Rake according to my sim, but I still need to do a lot more debugging.
In my results from before, my chest piece was missing two gems, so I added an audit feature (so that doesn't happen again) and re-simulated which improved my BiS median DPS to 120301:
In my results from before, my chest piece was missing two gems, so I added an audit feature (so that doesn't happen again) and re-simulated which improved my BiS median DPS to 120301:
- Code: Select all
Sockets: (2) [Yellow, Yellow]
[gem0:Yellow] Empty
[gem1:Yellow] Empty

- Tinderhoof
- Exalted
-
- Posts: 1114
- Joined: Mon May 24, 2010 10:21 pm
Re: Feral Damage Equations
raffy wrote:If pre-SR is enabled (and glyph is active), you still start with 100 energy, but SR is shortened by the time it takes to regen your energy back to 100 (which puts the starting SR at 9.77s in duration for the BiS setup above).
I have been meaning to put this up in a more public place, but haven't got around to it yet (coming soon). You can game the glyph a little for the opening of a fight, but it will take some pratice and it will annoy any of your raid mates who play with sound on (I never do).
Savage Roar ticks like a bleed at 3 second intervals. If we refresh at the correct time it will let us keep the last 2 seconds of the pervious SR. That means that if you refresh ST at 0 combo points at 11, 8, 5, or 2 seconds the refreshed time will start at 14 seconds. If you do so our energy will be 100% by the time you hit 11 seconds and may refresh over and over until the pull begins. If the fight does not call for Wild Charge (I am finding most fights don't) you can refresh right before the tank pulls which should leave you about 11 energy by the time you reach the boss for the run in (don't forget to pre pot).
This can't really be executed perfectly every time, but it does give us a little more breathing room to get a Rip up before the SR exprires on the opener. Very importent for DoC as it wastes the 1.5 GCD for the HT. Just to make sure, your Sim is using a 1.5 GCD for HT while everything else is 1 second right?
Ravage seems to be a DPS gain over Rake according to my sim, but I still need to do a lot more debugging.
I am intersted to know by how much. The reason being is I don't think you will be able to start most fights out as soon as the tank pulls due to our slowed movment and the postional requirement of Ravage outside of Incarnation. What happens to the damage spread if you add a 3 second delay to the Ravage opener vs a Rake opener?
Re: Feral Damage Equations
3-second open delay (with SR/Pot/2xDoC applied at 0:00) drops median DPS to 119342 when using Ravage.
The SR thing is interesting. I recently noticed the same effect with Rake.
If you Rake once before Rake ticks, you get 1 extra Rake tick.
If you Rake twice before Rake ticks, you still only get 1 extra Rake tick.
I implemented this like RipShreds (or Rip/extends or whatever you guys call it) where each Rake tick grants you 1 Rake extend, such that, if you clip the Rake, instead of getting 5 ticks on the new Rake, you get 6.
Edit:
Let me simplify that, it seems like, if you have a Rake up, and re-rake, the new Rake gets 6 ticks instead of 5.
Thrash doesn't seem to be extendable however. I could not get the debuff duration to appear longer than 30 sec.
Edit 2:
Yeah, all spells (instant, casted, channelled) are implemented (and weapon swaps) and HT properly uses spell gcd, not cat gcd.
Edit 3:
I implemented the SR rollover, with a setting that controls the maximum amount of rollover (up to 3 sec).
I avoid using the SR rollover at the start to get a 14.X sec SR since it costs 25+25 energy (and after regen back to full ends up being about the same). --- oh I see, I have to wait longer, so the SR's aren't back to back, gotcha.
In game, there seems to be some probability that you get a PS proc with a SR`0, but I have no idea what it is.
Edit 4:
I made a rotation that just spams SR using 3 second rollover maximum. The first SR is just the best case of previous time + maximum rollover.
The SR thing is interesting. I recently noticed the same effect with Rake.
If you Rake once before Rake ticks, you get 1 extra Rake tick.
If you Rake twice before Rake ticks, you still only get 1 extra Rake tick.
I implemented this like RipShreds (or Rip/extends or whatever you guys call it) where each Rake tick grants you 1 Rake extend, such that, if you clip the Rake, instead of getting 5 ticks on the new Rake, you get 6.
Edit:
Let me simplify that, it seems like, if you have a Rake up, and re-rake, the new Rake gets 6 ticks instead of 5.
Thrash doesn't seem to be extendable however. I could not get the debuff duration to appear longer than 30 sec.
Edit 2:
Yeah, all spells (instant, casted, channelled) are implemented (and weapon swaps) and HT properly uses spell gcd, not cat gcd.
Edit 3:
I implemented the SR rollover, with a setting that controls the maximum amount of rollover (up to 3 sec).
I avoid using the SR rollover at the start to get a 14.X sec SR since it costs 25+25 energy (and after regen back to full ends up being about the same). --- oh I see, I have to wait longer, so the SR's aren't back to back, gotcha.
In game, there seems to be some probability that you get a PS proc with a SR`0, but I have no idea what it is.
Edit 4:
I made a rotation that just spams SR using 3 second rollover maximum. The first SR is just the best case of previous time + maximum rollover.
- Code: Select all
00:00.000 Pre: DoC
00:00.000 +Potion#1
00:00.000 +SR`0: 12.77s
00:00.000 +Prowl
00:01.000 Delayed opening
00:01.000 -Prowl
00:01.000 Ravage 183764 Crit +SR+DoC+Agi(4000)
00:01.000 Combo: 2 (+2)
00:02.000 *SR`2: 25.23s
00:02.000 PS: 2
00:03.000 *SR`0: 14.23s
00:04.000 *SR`0: 12.23s
00:05.000 *SR`0: 13.23s
00:06.497 *SR`0: 14.73s
00:08.722 *SR`0: 13.95s
00:10.947 *SR`0: 13.18s
00:13.172 *SR`0: 12.40s
00:15.397 *SR`0: 14.63s
00:17.622 *SR`0: 13.85s
00:19.847 *SR`0: 13.08s
00:22.072 *SR`0: 12.30s
00:24.297 *SR`0: 14.53s
00:25.000 -Potion#1
00:26.522 *SR`0: 13.75s
00:28.747 *SR`0: 12.98s
00:30.972 *SR`0: 12.20s
00:33.197 *SR`0: 14.43s
00:35.422 *SR`0: 13.65s
00:37.647 *SR`0: 12.88s
00:39.872 *SR`0: 12.10s

- Tinderhoof
- Exalted
-
- Posts: 1114
- Joined: Mon May 24, 2010 10:21 pm
Re: Feral Damage Equations
raffy wrote:
Let me simplify that, it seems like, if you have a Rake up, and re-rake, the new Rake gets 6 ticks instead of 5.
All DOTs work like this as of Cata. The second one isn't "extended", it just doesn't overwrite the last tick of the DOT that is already in place. The SR follows the same forumla. Rip works the same way but it ticks every 2 seconds, so you would need to refresh below 2 seconds instead of 3 like Rake.
Re: Feral Damage Equations
Tinderhoof wrote:All DOTs work like this as of Cata. The second one isn't "extended", it just doesn't overwrite the last tick of the DOT that is already in place. The SR follows the same forumla. Rip works the same way but it ticks every 2 seconds, so you would need to refresh below 2 seconds instead of 3 like Rake.
Thats good to know. I must of made a mistake with Thrash (I said 30 seconds so I must of been monitoring the wrong debuff.)
For Rake, do you know if it is 6 ticks at new damage, or keep last tick + 5 ticks at new damage? I don't have WoW on my laptop, and won't be able to test more stuff until my vacation ends.
Edit: also, do you know if this applies for BitW refresh? Meaning, we almost always get 1 extra tick on the refreshed Rip? I don't recall seeing a longer debuff time when I BitW in-game, and that would explain the bug where a BitW rip fades prematurely.

Re: Feral Damage Equations
Rake is 5 ticks, 1 every 3 seconds, over 15 seconds, and deals instant bleed damage that uses the same damage formula as a tick on application. The instant damage is not a "tick."
Re: Feral Damage Equations
aggixx wrote:Rake is 5 ticks, 1 every 3 seconds, over 15 seconds, and deals instant bleed damage that uses the same damage formula as a tick on application. The instant damage is not a "tick."
Tinderhoof wrote:All DOTs work like this as of Cata. The second one isn't "extended", it just doesn't overwrite the last tick of the DOT that is already in place. The SR follows the same forumla. Rip works the same way but it ticks every 2 seconds, so you would need to refresh below 2 seconds instead of 3 like Rake.
From that description, it sounds like the new Rake appends 5 ticks after the current tick (which would be a messy code change, so I'm trying to avoid this). So my question was (since I don't have access to WoW now):
- Code: Select all
0.000: Rake (Initial Rake Tick)
1.000: TF
1.000: Rake again (Initial Rake Tick)
3.000: Tick#1 <=================
6.000: Tick#2 +TF
9.000: Tick#3 +TF
12.000: Tick#4 +TF
15.000: Tick#5 +TF
18.000: Tick#6 +TF
Is Tick#1 damage modified by TF? So I have 6 ticks with TF?
Edit: looking at some combat logs, it appears to be TF'd, so good, I don't have to change any code.
Now, I'm mainly curious how many ticks a Rip gets after being BitW'd: 8 or 9

Re: Feral Damage Equations
Changed Thrash, Rake, Rip, Pounce, and SR so they rollover correctly and encouraged the simulator to clip during the final tick. I also figured out the base stats for the Troll and Tauren. Overall, my BiS T14H configuration is now at 124503 median dps.
Took a screenshot of the entire scrollable simulator interface: http://raffy.antistupid.com/wow/catsim/sim_ui4.png
Edit:
I'm trying to figure out what is the best way to model latency. SimC seems to provide two latency settings: World Lag and Aura Delay. I was thinking about just adding some padding to the GCD, but with WoW spell queueing, I don't think that's a good idea, considering in-game, you can pretty much align spells back to back w/o gap as long as your resources hold up. Also, since Cat's aren't GCD capped, this seemed kinda silly. Lastly, it seems like, regardless of your latency, 10 second buff still lasts for 10 seconds and I imagine all wow commands are timestamped (in some sense.) So any ideas here would be greatly appreciated.
- Code: Select all
Runs = 1000
DPS: Median = 124503
DPS: Mean = 124520 +/- 112
DPS: Range = 110493 -- 135723
Damage: Median = 49.97M
Damage: Mean = 49.97M +/- 88.99K
Damage: Range = 45.02M -- 55.00M
Time: Median = 6.7m
Time: Mean = 6.7m +/- 816ms
Time: Range = 5.7m -- 8.0m
Took a screenshot of the entire scrollable simulator interface: http://raffy.antistupid.com/wow/catsim/sim_ui4.png
Edit:
I'm trying to figure out what is the best way to model latency. SimC seems to provide two latency settings: World Lag and Aura Delay. I was thinking about just adding some padding to the GCD, but with WoW spell queueing, I don't think that's a good idea, considering in-game, you can pretty much align spells back to back w/o gap as long as your resources hold up. Also, since Cat's aren't GCD capped, this seemed kinda silly. Lastly, it seems like, regardless of your latency, 10 second buff still lasts for 10 seconds and I imagine all wow commands are timestamped (in some sense.) So any ideas here would be greatly appreciated.

Re: Feral Damage Equations
raffy wrote:in-game, you can pretty much align spells back to back w/o gap as long as your resources hold up
I don't believe this is at all true. If you look at any combat log it is never exactly 1000 milliseconds between 2 consecutive GCDs.
Edit: Here's a WoL XE query for one of my Gara'jal parses (link to query).
- Code: Select all
[20:31:35.175] Pawkets casts Savage Roar
[20:31:36.166] Pawkets casts Faerie Fire on Gara'jal the Spiritbinder
[20:31:36.442] Pawkets casts Virmen's Bite
[20:31:37.158] Pawkets casts Rake on Gara'jal the Spiritbinder
[20:31:38.844] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:39.872] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:40.876] Pawkets casts Tiger's Fury
[20:31:40.887] Pawkets casts Synapse Springs
[20:31:40.950] Pawkets casts Berserk
[20:31:41.605] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:42.077] Pawkets casts Nature's Swiftness
[20:31:42.536] Pawkets casts Healing Touch on Loq
[20:31:43.960] Pawkets casts Rip on Gara'jal the Spiritbinder
[20:31:44.999] Pawkets casts Rake on Gara'jal the Spiritbinder
[20:31:46.035] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:47.066] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:49.427] Pawkets casts Savage Roar
[20:31:50.450] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:51.451] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:52.560] Pawkets casts Shred on Gara'jal the Spiritbinder
[20:31:54.995] Pawkets casts Thrash
You can see near the end I had two shreds back to back that were 1001 ms apart from each other, but that is definitely not the norm.
Re: Feral Damage Equations
@aggixx, thanks for the data.
Any thoughts on where one should put delays or w/e to model latency?
From your data, it looks like I could either implement some fixed or random penalty onto each GCD.
I currently allow NS+HT within 0 ms, but I don't know if modeling that truthfully is worth it, considering 1 minute CD.
For my sim, I just added "Cat Stats", got basic reforger UI working, and added support for set bonuses.
http://raffy.antistupid.com/wow/catsim/sim_ui5.png
Any thoughts on where one should put delays or w/e to model latency?
From your data, it looks like I could either implement some fixed or random penalty onto each GCD.
I currently allow NS+HT within 0 ms, but I don't know if modeling that truthfully is worth it, considering 1 minute CD.
For my sim, I just added "Cat Stats", got basic reforger UI working, and added support for set bonuses.
http://raffy.antistupid.com/wow/catsim/sim_ui5.png

Re: Feral Damage Equations
Since NS is off the GCD there isn't any harm in not having a delay on it. As far as what to do to model latency, I would hop into SimC IRC and see if someone could give you a brief explanation on what they do and why.
Re: Feral Damage Equations
Any special reason you didn't want to start working on SimC? 
I tried to test your Simulation: Downloaded the source archive you posted a while ago, built it with 'ant' and then tried to run the Sim2.jar in /dist. Error Message is:
So the problem seems to lie in the JSON package. Any ideas why that happens?
Oh and I use java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
Oh and just for the record: <----- complete Java N00b.
I tried to test your Simulation: Downloaded the source archive you posted a while ago, built it with 'ant' and then tried to run the Sim2.jar in /dist. Error Message is:
- Code: Select all
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONValue
at sim2.API.json(API.java:65)
at sim2.API.json_char(API.java:61)
at sim2.API.loadChar(API.java:274)
at sim2.Main.main(Main.java:42)
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONValue
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 4 more
So the problem seems to lie in the JSON package. Any ideas why that happens?
Oh and I use java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
Oh and just for the record: <----- complete Java N00b.
Re: Feral Damage Equations
@Caltiom, "Note: this is only for programmers" :p but thanks for the interest. I'll have a more usable update available soon.
I didn't want to work on Simc because:
1. I wanted to independently verify the Simc results (I'm pretty close to them right now)
2. Implement a DPS rotation that doesn't use a singular action list (for both speed and dynamic complexity)
3. Track a lot of Feral specific things, like:
Figuring out % of Rake/Rip ticks that have DoC (or any combination of procs)
Here is a DPS breakdown, where I have the typical breakdown at the top, and then a super detailed breakout of all the modifiers that were active when damage was recorded: http://raffy.antistupid.com/wow/catsim/Dump7.txt
Right now all my analysis stuff is textual. I'm working on getting a release out before doing anything fancy.
Last night, I added a simc importer, and with the help of aggixx, was able to evaluate the current feral simc script in my simulator:
I didn't want to work on Simc because:
1. I wanted to independently verify the Simc results (I'm pretty close to them right now)
2. Implement a DPS rotation that doesn't use a singular action list (for both speed and dynamic complexity)
3. Track a lot of Feral specific things, like:
Figuring out % of Rake/Rip ticks that have DoC (or any combination of procs)
- Code: Select all
+DoC (only Rip) = 45.16% (1254 of 2777)
+DoC (only Rip`5) = 45.16% (1254 of 2777)
+DoC (only Rip Ticks) = 47.89% (21237 of 44343)
+DoC (only Rake) = 72.72% (6665 of 9165)
+DoC (only Rake Ticks) = 82.52% (27413 of 33219)
Here is a DPS breakdown, where I have the typical breakdown at the top, and then a super detailed breakout of all the modifiers that were active when damage was recorded: http://raffy.antistupid.com/wow/catsim/Dump7.txt
Right now all my analysis stuff is textual. I'm working on getting a release out before doing anything fancy.
Last night, I added a simc importer, and with the help of aggixx, was able to evaluate the current feral simc script in my simulator:
- Code: Select all
DPS: Median = 126388
DPS: Mean = 126464 +/- 71
DPS: Range = 114452 -- 136870
Damage: Median = 50.13M
Damage: Mean = 50.12M +/- 64.34K
Damage: Range = 45.01M -- 55.25M
Time: Median = 6.6m
Time: Mean = 6.6m +/- 567ms
Time: Range = 5.6m -- 7.7m

- Leafkiller
- Exalted
-
- Posts: 1127
- Joined: Fri Jun 04, 2010 4:28 am
Re: Feral Damage Equations
I was talking to Yawning a few months ago bemoaning the loss of Mew as a tool we could use and he said good things about Simulationcraft and the people who work on it. He said he developed Mew because he was interested in creating a simulator and the classic "NIH" ("not invented here").
I found it faster to optimize the rotation in Mew for a few reasons:
1. Rather than deal with gear, I was able to enter stat values. This made it much easier to play with different stat combinations and draw meaningful conclusions about relative stat values. Ideally, both methods of character input should be supported, gear and raw stat values.
2. It was easier to work on the rotation in Java because I could implement basic things like if/else structures and functions (not to mention Java is closer to Lua which is what the Ovale scripts use). aggixx will confirm that there are things that are much easier to express in my Ovale script than they are in the simc script.
3. It was easier to get changes made to Mew to support new ideas in the rotation. For instance, we are still handicapped by the lack of a way to get the total damage ratios for overwriting DoTs in simc which Raffy already has support for in his simulator. Early on I was the most active user of Mew, and Yawning added a lot of features as I requested them.
@Raffy - as a side note, did you ever look at the source code for Mew? It is written in Java and could give you some ideas of how to address some of the issues you are talking (such as latency, etc.). https://code.google.com/p/mew-wow-druid ... e/checkout
I found it faster to optimize the rotation in Mew for a few reasons:
1. Rather than deal with gear, I was able to enter stat values. This made it much easier to play with different stat combinations and draw meaningful conclusions about relative stat values. Ideally, both methods of character input should be supported, gear and raw stat values.
2. It was easier to work on the rotation in Java because I could implement basic things like if/else structures and functions (not to mention Java is closer to Lua which is what the Ovale scripts use). aggixx will confirm that there are things that are much easier to express in my Ovale script than they are in the simc script.
3. It was easier to get changes made to Mew to support new ideas in the rotation. For instance, we are still handicapped by the lack of a way to get the total damage ratios for overwriting DoTs in simc which Raffy already has support for in his simulator. Early on I was the most active user of Mew, and Yawning added a lot of features as I requested them.
@Raffy - as a side note, did you ever look at the source code for Mew? It is written in Java and could give you some ideas of how to address some of the issues you are talking (such as latency, etc.). https://code.google.com/p/mew-wow-druid ... e/checkout
73 posts
• Page 1 of 3 • 1, 2, 3
Who is online
Users browsing this forum: chiwhisox, Frogged, Google [Bot], Google Feedfetcher and 2 guests


