 |
01/30/09, 2:31 PM
|
#106
|
|
King Hippo
Leito
Troll Rogue
No WoW Account
|
Originally Posted by dedmonwakeen
EDIT: So.... there is pooling to prevent wasted energy on low-priority actions..... and there is pooling to maximize up-times of things like Rupture, etc. Could you provide some more examples of the second kind?
|
For example:
You have 4+ combo points.
There is lots of time left on slice and dice and hunger for blood.
Rupture is ticking, but it has a remaining duration short enough such that if you envenom, you wouldn't get 4+ combo points before rupture runs out.
In this case it is best to pool energy until rupture drops, then use the combo points you have to reapply it.
This removes some of the cycle instability since the pooled energy lets you quickly get the combo points to perform your next finisher soon after rupturing.
If you want a hard number to use for the logic, I'd as long as slice and dice has at least 12 seconds left, it would be safe to pool energy for rupture if rupture will run out before you cap energy. If rupture will not run out, it is better to envenom then rupture as the next finisher (pooling where necessary).
I believe Chalon's logic on the first page accounts for this, though it may be in the advanced section, so more difficult to quantify.
|
Rogue at heart.
|
|
|
01/30/09, 2:34 PM
|
#107
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
SampleOutputMelee updated.....
I'm going to make the following conditionals available to all rogue actions:
energy>=
energy<=
cp>=
cp<=
hfb>=
hfb<=
snd>=
snd<=
rup>=
rup<=
env>=
env<=
And then I'll try to come up with priority lists based upon the feedback so far.....
EDIT: For those getting the source via SVN, these conditionals are now available as of r1453.
Last edited by dedmonwakeen : 01/31/09 at 1:26 PM.
|
|
|
|
02/05/09, 5:57 PM
|
#108
|
|
Von Kaiser
Human Rogue
Wrathbringer (EU)
|
I found a bug in the rogue code. HaT can be triggered by the rogue who specced HaT.
sc_rogue.cpp @ line 3012 (r1478)
The condition should be removed.
I currently have no time to spend on debugging, but I like to see someone puting so much effort into something like this. So I'll try to support it as good as I can. There was also a possible bug with Shadowstep that I want to investigate... so, more to come I guess 
|
|
|
|
|
02/05/09, 11:36 PM
|
#109
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
Originally Posted by Cooljo
I found a bug in the rogue code. HaT can be triggered by the rogue who specced HaT.
I currently have no time to spend on debugging, but I like to see someone puting so much effort into something like this. So I'll try to support it as good as I can. There was also a possible bug with Shadowstep that I want to investigate... so, more to come I guess 
|
Thanks for the catch! Fixed in r1479.
If you are interested in making changes to the codebase, simply PM a Google ID and I'll set you up with commit access.
|
|
|
|
02/10/09, 8:25 AM
|
#110
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
SimulationCraft r1501 is now available for public download, containing 3.0.9 support for Rogues.
The main thread is found here: http://elitistjerks.com/f31/t33457-s...l_development/
Now that we are over the initial development hurdle, perhaps we should continue discussion there? I don't mind tracking multiple threads, but I've already picked up a "spam" infraction for putting the same update/announcement post in more than one thread so I need to be careful.
(This post is already scary-close to the one in the "simulationcraft for hunters" thread, but hopefully they'll let me skate by this time on the grounds I'm trying to reduce threads......)
|
|
|
|
02/10/09, 3:14 PM
|
#111
|
|
Glass Joe
|
Awesome update! I went back through the thread, but couldn't find the old numbers. Do you still have them? I'm just curious as to how much of a bump each rogue spec got from the new patch.
|
|
|
|
|
02/10/09, 3:30 PM
|
#112
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
Originally Posted by Bobbled
Awesome update! I went back through the thread, but couldn't find the old numbers. Do you still have them? I'm just curious as to how much of a bump each rogue spec got from the new patch.
|
Sadly, I don't. Usually, I'm good about keeping a one-patch "history" so that the two patch levels can be compared, but I'm afraid I was a bit lazy this time and just made the changes instead of enclosing them inside a "if( patch >= 3.0.9 )" conditional.
I've been evaluating different ways of making the config files more convenient to exercise, and if I put out another release soon then I will add the aforementioned conditionals into the code.
While I'm on the subject....... I'm a UNIX developer that has gotten quite friendly with command-line invocation over the years. This means that SimulationCraft is incredibly painful for Windows folks to use. I've tried to address that without having to put together an entire GUI.
Recently I shipped a SIMCRAFT.BAT file into which a config file can be dragged-and-dropped. However, given the number of config files shipped with the executable I find this cumbersome. I've considered changing the file extensions on the config files from .txt to .simcraft so that they could be double-clicked for easy sim execution. But.......... then it makes it harder for someone to open the file for edit. Bah!
Opinions welcome..................
|
|
|
|
02/13/09, 1:37 AM
|
#113
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
How close should a good Combat rogue come to a good Assassination rogue?
I'm seeing a good 14% difference in my sims...... which leads me to believe my modeling is off. When I compare the output to WWS, the individual actions seem to generate the right numbers, but I fear my AI is just not quite right.
Here is the latest Combat Rogue profile: http://simulationcraft.googlecode.co...51_05.simcraft
|
|
|
|
02/13/09, 2:52 AM
|
#114
|
|
Piston Honda
Human Priest
Sporeggar (EU)
|
Maybe just mutilate is a bit too high? 
On a side note, I checked mutilate and... can't see where is the damage increase against poisoned targets... and the 2 combo points it should generate...
|
|
|
|
|
02/13/09, 3:15 AM
|
#115
|
|
Glass Joe
Blood Elf Death Knight
Eredar (EU)
|
Originally Posted by dedmonwakeen
How close should a good Combat rogue come to a good Assassination rogue?
I'm seeing a good 14% difference in my sims...... which leads me to believe my modeling is off. When I compare the output to WWS, the individual actions seem to generate the right numbers, but I fear my AI is just not quite right.
Here is the latest Combat Rogue profile: http://simulationcraft.googlecode.co...51_05.simcraft
|
Using Vulajin's spreadsheet (modified with the current 3.0.9 changes) it appears to be better to use Wound Poison in main- and offhand. But that should only enhance the damage by approximately 0.5%.
I just checked if you applied the patch 3.0.9 changes. By trying to find some hints, I found that poison calculation hasn't been updated from 3.0.8 to 3.0.9. It shows that Hunger For Blood is set to 3% each application instead of 5% (It looks ok for "void rogue_attack_t::player_buff()"). Slice and Dice and Mutilate bonus damage versus poisoned targets look ok too. For deeper analyses of Mutilate, I lack of theory craft knowledge.

// =========================================================================
// Rogue Poisons
// =========================================================================
// rogue_poison_t::player_buff =============================================
void rogue_poison_t::player_buff()
{
rogue_t* p = player -> cast_rogue();
spell_t::player_buff();
player_power = p -> composite_attack_power();
power_multiplier = p -> composite_attack_power_multiplier();
if( p -> buffs_cold_blood )
{
player_crit += 1.0;
}
if( p -> buffs_hunger_for_blood )
{
player_multiplier *= 1.0 + p -> buffs_hunger_for_blood * 0.03;
}
if( p -> buffs_master_of_subtlety )
{
player_multiplier *= 1.0 + p -> buffs_master_of_subtlety * 0.01;
}
if( p -> talents.murder )
{
int target_race = sim -> target -> race;
if( target_race == RACE_BEAST ||
target_race == RACE_DRAGONKIN ||
target_race == RACE_GIANT ||
target_race == RACE_HUMANOID )
{
player_multiplier *= 1.0 + p -> talents.murder * 0.02;
player_crit_multiplier *= 1.0 + p -> talents.murder * 0.02;
}
}
if( p -> buffs_shadowstep )
{
player_multiplier *= 1.2;
}
if( p -> talents.hunger_for_blood )
{
p -> uptimes_hunger_for_blood -> update( p -> buffs_hunger_for_blood == 3 );
}
p -> uptimes_tricks_of_the_trade -> update( p -> buffs.tricks_of_the_trade != 0 );
}
Edit: Another thing I've found, that may lower combat damage after you switch to double wound poison: There is only one position in the code, where the talents Master Poisoner and Savage Combat are applied. This only happens when using deadly poison. But it should also happen when using wound poison, mind numbing poison and crippling poison. I am not 100% sure about crippling poison and bosses, but would guess it will not work bosses, because most of them are immune to movement slows. In fact I cannot think of even one not immune. Maybe crippling poison goes one step to far and should be excluded of this. Any other opinion on this?
// trigger_deadly_poison ====================================================
static void trigger_deadly_poison( rogue_t* p )
{
p -> procs_deadly_poison -> occur();
if( p -> buffs_poison_doses == 0 )
{
// Target about to become poisoned.
target_t* t = p -> sim -> target;
if( p -> talents.master_poisoner ) t -> debuffs.master_poisoner++;
if( p -> talents.savage_combat ) t -> debuffs.savage_combat++;
t -> debuffs.poisoned++;
}
}
// consume_deadly_poison ====================================================
static void consume_deadly_poison( rogue_t* p )
{
if( p -> buffs_poison_doses == 0 )
{
// Target no longer poisoned.
target_t* t = p -> sim -> target;
if( p -> talents.master_poisoner ) t -> debuffs.master_poisoner--;
if( p -> talents.savage_combat ) t -> debuffs.savage_combat--;
t -> debuffs.poisoned--;
}
}
Last edited by Lokkun : 02/13/09 at 4:05 AM.
Reason: master poisoner & savage combat bug found
|
|
|
|
|
02/13/09, 7:25 AM
|
#116
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
Originally Posted by Loot
Maybe just mutilate is a bit too high? 
On a side note, I checked mutilate and... can't see where is the damage increase against poisoned targets... and the 2 combo points it should generate...
|
Heh. Possibly!
Setting 'adds_combo_points=true" in the mutilate_t constructor will add a CP whenever rogue_attack_t::execute() gets called, which happens twice in mutilate_t::execute(). (provided first one hits)
Actions override the "player_buff()" method when they have specific bonuses.
virtual void player_buff()
{
rogue_t* p = player -> cast_rogue();
rogue_attack_t::player_buff();
if( sim -> target -> debuffs.poisoned ) player_multiplier *= 1.20;
trigger_dirty_deeds( this );
}
Originally Posted by Lokkun
Using Vulajin's spreadsheet (modified with the current 3.0.9 changes) it appears to be better to use Wound Poison in main- and offhand. But that should only enhance the damage by approximately 0.5%.
I just checked if you applied the patch 3.0.9 changes. By trying to find some hints, I found that poison calculation hasn't been updated from 3.0.8 to 3.0.9. It shows that Hunger For Blood is set to 3% each application instead of 5% (It looks ok for "void rogue_attack_t::player_buff()"). Slice and Dice and Mutilate bonus damage versus poisoned targets look ok too. For deeper analyses of Mutilate, I lack of theory craft knowledge.
|
Thanks for the detailed review. Looks like I only made the HfB change for rogue_attack_t and not rogue_poison_t. I'll look into the poison triggers.
EDIT: Changing to wound/wound for Combat definitely helped, but the gap stayed the same because of the bug-fix to HfB on poisons.
Does this AI look okay?
actions=flask,type=endless_rage/food,type=fish_feast/apply_poison,main_hand=wound,off_hand=wound
actions+=/auto_attack/pool_energy/slice_and_dice,min_combo_points=4,refresh_at=5/tricks_of_the_trade
actions+=/killing_spree/blade_flurry
actions+=/rupture,min_combo_points=5,time_to_die>=10
actions+=/eviscerate,min_combo_points=5,rup>=5
actions+=/eviscerate,min_combo_points=5,time_to_die<=10
actions+=/eviscerate,min_combo_points=1,time_to_die<=2
actions+=/sinister_strike,max_combo_points=4
actions+=/adrenaline_rush
Last edited by dedmonwakeen : 02/13/09 at 7:53 AM.
|
|
|
|
02/13/09, 8:16 AM
|
#117
|
|
Piston Honda
Human Priest
Sporeggar (EU)
|
*shrugs*
- "slice_and_dice,min_combo_points=4" what does that mean? S&D with <5 is actually wasting precious energy, how often it happens to get 4 points s&d? Also "refresh_at=5" means refreshing when 5 seconds remain and min 4 combo points? That looks like a waste to energy too. I refresh at <1 second left, pooling energy when having 5CP ready
- "sinister_strike,max_combo_points=4", max 4? max 5...
|
|
|
|
|
02/13/09, 10:50 AM
|
#118
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
Originally Posted by Loot
*shrugs*
- "slice_and_dice,min_combo_points=4" what does that mean? S&D with <5 is actually wasting precious energy, how often it happens to get 4 points s&d? Also "refresh_at=5" means refreshing when 5 seconds remain and min 4 combo points? That looks like a waste to energy too. I refresh at <1 second left, pooling energy when having 5CP ready
- "sinister_strike,max_combo_points=4", max 4? max 5...
|
The conditionals separated by commas after the action must all evaluate to true in order for the action to fire.
I added the refresh_at=5 because SnD was falling off. So I need to make sure that I don't "waste" those CPs on Rupture or Eviscerate if SnD is about to expire.
I do have "snd<" and "snd>" options for all the Rogue actions. So I should be able to make a pool_energy action with the right conditionals and/or add SnD conditionals to the subsequent Rupture/Eviscerate calls.
The max_combo_points=4 conditional was simply to make sure SS did not get used if we are already at max CPs.
|
|
|
|
02/13/09, 11:12 AM
|
#119
|
|
Bald Bull
Night Elf Rogue
Wrathbringer (EU)
|
I haven't used a 5cp SnD for quite some time now, actually I'm down to 3 at the moment (3s/5r/5e with 15/51/5).
So you may lower that to 3 even.
However, refresh at 5 seems a bit early. Don't refresh it based on remaining duration, but on energy situation.
You could also try to remove Tricks of the Trade, and see if it changes anything.
I think it's easier if I write some pseudo code for a 15/51/5 build:
actions += /auto_attack/pool_energy/slice_and_dice, min_combo_points=3, refresh_at<=2, refresh_at_energy>=70
actions += /killing_spree, energy<=50/blade_flurry
actions += /rupture, min_combo_points=5, time_to_die>=10, no_refresh -- (no_overwrite)
actions += /eviscerate, min_combo_points=5, rup>=5, slice_and_dice>=5
actions += /eviscerate, min_combo_points=4, rup>=5, slice_and_dice<5, slice_and_dice>3, energy>=40
actions += /eviscerate, min_combo_points=5, time_to_die<=10
actions += /eviscerate, min_combo_points=1, time_to_die<=2 -- (just SS)
actions += /sinister_strike, max_combo_points=4
actions += /adrenaline_rush, energy<=40
Not sure if I have the order right though.
And of course use KS, BF and AR only if Sunder Armor is up on the boss (not at second 0). BF depending on fight length and on Heroism/Blood Lust usage: wait for Heroism if total length < 2 minutes, or more accurate if reaching ~35% is taking less than 1 minute + 45 seconds (that would be a first use on second 0, and a 2nd on second 120, where Heroism is exactly running for another 15 seconds).
|
|
|
|
02/13/09, 11:33 AM
|
#120
|
|
Bald Bull
dedmonwakeen
Undead Priest
No WoW Account
|
Originally Posted by sp00n
I think it's easier if I write some pseudo code for a 15/51/5 build:
|
Thanks. This is exceptionally helpful.
A question regarding the "energy>=70" conditional on slice_and_dice:
Is the intent here that once the duration of SnD gets below X, pool energy until 1sec remaing OR energy will cap.
If I'm understanding this, what is a good value for X? 5sec?
|
|
|
|
|