Jump to content


Photo

SimulationCraft - for fur and feather wearers


  • This topic is locked This topic is locked
269 replies to this topic

#41 Starfox

Starfox

    King Hippo

  • Members
  • 578 posts

Posted 12 March 2009 - 07:31 PM

Is Omen of Clarity getting a double-bonus?

I'm looking into some unexpected Ferocious Bite behavior (limiting the energy it consumes is decreasing DPS), and I may have found the problem with hit rating while doing so.

The relevant code:

// druid_attack_t::cost ====================================================

double druid_attack_t::cost()
{
  druid_t* p = player -> cast_druid();
  double c = attack_t::cost();
  if ( c == 0 ) return 0;
  if ( p -> _buffs.omen_of_clarity ) return 0;
  if ( p -> _buffs.berserk) c *= 0.5;
  return c;
}

// druid_attack_t::consume_resource ========================================

void druid_attack_t::consume_resource()
{
  druid_t* p = player -> cast_druid();
  attack_t::consume_resource();
  if( p -> _buffs.omen_of_clarity )
  {
    // Treat the savings like a energy gain.
    double amount = attack_t::cost();
    if( amount > 0 )
    {
      p -> gains_omen_of_clarity -> add( amount );
      p -> _buffs.omen_of_clarity = 0;
      p -> aura_loss( "Omen of Clarity" );
    }
  }
}

In cost(), it looks like you make the cost of the attack 0. In consume_resource(), it looks like you're adding energy. If you are doing both, then you're doing something wrong! Although I'm not sure if these are two different implementations which are separate for cat and moonkin.

Edit: Crit ticks are still 5% too high.

OoC let the sim subtract 0 resource from yout current one.
p -> gains_omen_of_clarity -> add( amount );
Means that you can see in the report under Gains how much energy saved by OoC, this is for statistical purposes only here and does not really add that amount of resource back to that player.
Hello.
Light the fuse.
For all my homies.
Do not run, we are your friends.
SimulationCraft Druid Guy

#42 dedmonwakeen

dedmonwakeen

    Bald Bull

  • Members
  • 1,302 posts

Posted 12 March 2009 - 08:01 PM

Edit: Crit ticks are still 5% too high.


Do the rip/rake crit ticks also suffer from boss "crit depression" like standard melee attacks?

#43 Allev

Allev

    King Hippo

  • Members
  • 545 posts

Posted 12 March 2009 - 09:24 PM

It hasn't been tested as far as I know, but why wouldn't they? Do caster dots not get reduced by crit depression?

#44 Starfox

Starfox

    King Hippo

  • Members
  • 578 posts

Posted 12 March 2009 - 10:10 PM

It hasn't been tested as far as I know, but why wouldn't they? Do caster dots not get reduced by crit depression?

Nope, caster only get their miss chance/partial resists increased.
Hello.
Light the fuse.
For all my homies.
Do not run, we are your friends.
SimulationCraft Druid Guy

#45 Allev

Allev

    King Hippo

  • Members
  • 545 posts

Posted 12 March 2009 - 10:58 PM

So, I think I found a bug.

I've got two profiles:

First one is this:

#!simcraft max_time=300 optimal_raid=1

patch=3.1.0
druid=Druid_T8_00_55_16
level=80
talents=http://ptr.wowhead.com/?talent=0ZEGMcfrz0eR0huVkbAczb
actions=flask,type=endless_rage/food,type=blackened_dragonfin
actions+=/cat_form
actions+=/auto_attack
actions+=/shred,omen_of_clarity=1
actions+=/tigers_fury,energy<=40
actions+=/berserk,tigers_fury=1
actions+=/savage_roar,cp>=1,savage_roar<=4
actions+=/rip,cp>=5,time_to_die>=10
actions+=/ferocious_bite,cp>=5,rip>=5,savage_roar>=6
actions+=/rake
actions+=/shred,rake>=2
actions+=/shred,cp<=4,energy>=60
actions+=/shred,energy>=80
Melee_T7_Base_Gear.simcraft
gear_expertise_rating=200
# Not fair to use the same stats for all melee since Feral 

Druid needs less expertise.
# Trade expertise for ivalue-equal amount of attack power
enchant_attack_power=+160
enchant_expertise_rating=-80
glyph_rip=1
glyph_savage_roar=1
glyph_shred=1
idol_of_worship=1
main_hand=staff,dps=222.9,speed=2.4,enchant=berserking

Second one is this:

#!simcraft max_time=300 optimal_raid=1

patch=3.1.0
druid=Druid_T8_00_55_16_Modified
level=80
talents=http://ptr.wowhead.com/?talent=0ZEGMcfrz0eR0huVkbAczb
actions=flask,type=endless_rage/food,type=blackened_dragonfin
actions+=/cat_form
actions+=/auto_attack
actions+=/shred,omen_of_clarity=1
actions+=/tigers_fury,energy<=40
actions+=/berserk,tigers_fury=1
actions+=/savage_roar,cp>=1,savage_roar<=4
actions+=/rip,cp>=5,time_to_die>=10
actions+=/rip,cp>=5,time_to_die>=10
actions+=/ferocious_bite,cp>=5,rip>=5,savage_roar>=6
actions+=/rake
actions+=/shred,rake>=2
actions+=/shred,cp<=4,energy>=60
actions+=/shred,energy>=80
Melee_T7_Base_Gear.simcraft
gear_expertise_rating=200
# Not fair to use the same stats for all melee since Feral Druid 

needs less expertise.
# Trade expertise for ivalue-equal amount of attack power
enchant_attack_power=+160
enchant_expertise_rating=-80
glyph_rip=1
glyph_savage_roar=1
glyph_shred=1
idol_of_worship=1
main_hand=staff,dps=222.9,speed=2.4,enchant=berserking

The only difference is, I repeated the Rip line. The second profile somehow consistently beats out the first, every time I run the simulation.

BTW, the first profile regularly tops 7400 DPS. It's a work in progress still, though.

#46 Starfox

Starfox

    King Hippo

  • Members
  • 578 posts

Posted 13 March 2009 - 12:42 AM

So, I think I found a bug.

I've got two profiles:

First one is this:

Second one is this:

The only difference is, I repeated the Rip line. The second profile somehow consistently beats out the first, every time I run the simulation.

BTW, the first profile regularly tops 7400 DPS. It's a work in progress still, though.


Oh, nice find. What this thos is:
It runs like normal (one-rip-profile)
Then it performs the first rip, and this first one gets set to 'ready when rip faded'
But the second line stays active, and gets executed before the first rip is fallen off:
7.12     Druid_T8_00_55_16 performs rip
27.12    Executing event: Action Tick
27.12    rip ticks (10 of 13)
27.12    rip ticks (10 of 13)
29.11    Druid_T8_00_55_16 performs rip <= Here the old rip would have fallen off, if not for glyph of shred
29.12    rip ticks (11 of 13)
31.11    rip ticks (1 of 10)
31.12    rip ticks (12 of 13)
33.11    rip ticks (2 of 10)
There seems to be a problem with extending the duration on dots.
Hello.
Light the fuse.
For all my homies.
Do not run, we are your friends.
SimulationCraft Druid Guy

#47 dedmonwakeen

dedmonwakeen

    Bald Bull

  • Members
  • 1,302 posts

Posted 13 March 2009 - 01:52 AM

There seems to be a problem with extending the duration on dots.


Add following line to end of action_t::refresh_duration() and action_t::extend_duration():

player -> share_duration( duration_group, duration_ready );

#48 melth

melth

    Glass Joe

  • Members
  • 12 posts

Posted 13 March 2009 - 09:36 AM

Hey Starfox,

thanks for your effort!

What I'm missing is an option to cast Insect Swarm at the end of Lunar Eclipse if there is no time to squeeze in another Starfire. So something like lunar_eclipse_left <= 1.5
Same for Moonfire.
I know that has been asked before but it's kinda important so I wanted to suggest it again.

#49 Starfox

Starfox

    King Hippo

  • Members
  • 578 posts

Posted 13 March 2009 - 10:36 AM

Hey Starfox,

thanks for your effort!

What I'm missing is an option to cast Insect Swarm at the end of Lunar Eclipse if there is no time to squeeze in another Starfire. So something like lunar_eclipse_left <= 1.5
Same for Moonfire.
I know that has been asked before but it's kinda important so I wanted to suggest it again.


#don't cast while unter eclipse
actions+=/moonfire,skip_on_eclipse=1
actions+=/insect_swarm,skip_on_eclipse=1
#if eclipseduration > SF casttime => starfire
actions+=/starfire,eclipse=benefit
#Here is the trick, if MF/IS are NOT UP, eclipse is up, but your starfire won't hit in time of the buff, cast IS/MF
actions+=/moonfire
actions+=/insect_swarm
Did you mean something like that?
Oh, I think I'll have to add a check for eclipse=benefit, so the cast is not started if eclipse_duration < cast_time.
Will be done in a few minutes. (done)
Hello.
Light the fuse.
For all my homies.
Do not run, we are your friends.
SimulationCraft Druid Guy

#50 melth

melth

    Glass Joe

  • Members
  • 12 posts

Posted 13 March 2009 - 10:49 AM

Oh, I think I'll have to add a check for eclipse=benefit, so the cast is not started if eclipse_duration < cast_time.
Will be done in a few minutes.


That's what I was looking for thanks - although your solution is much simpler than mine :D

#51 Allev

Allev

    King Hippo

  • Members
  • 545 posts

Posted 13 March 2009 - 03:50 PM

I'm looking to maximize the druid mangle cycle right now, and I'm running a modified Druid_T8.simcraft profile. Is there a way to turn off the tank-mangling in the perfect raid, without running all the other players through a sim? I tried setting "mangle=0" in the globals file, but to no avail.

#52 dedmonwakeen

dedmonwakeen

    Bald Bull

  • Members
  • 1,302 posts

Posted 13 March 2009 - 04:39 PM

I'm looking to maximize the druid mangle cycle right now, and I'm running a modified Druid_T8.simcraft profile. Is there a way to turn off the tank-mangling in the perfect raid, without running all the other players through a sim? I tried setting "mangle=0" in the globals file, but to no avail.

Edit: Also, specific things like energy thresholds get different values during Berserk, so I'd like to specify certain sequences inside a berserk but not outside. Similar to the "tigers_fury=1" condition. Good behavior inside a berserk is not necessarily good behavior outside a berserk-- for instance, you want to spend all your energy inside a berserk, but pool for the next finisher cycle outside of it; FB at any energy outside of it, but only at very low energy inside of it; and so on.


Unfortunately, the buff/debuff settings are a union of "optimal_raid" and each specific type.

So.... you can't really just turn a buff "off".

You have to set optimal_raid=0 and then set each buff/debuff individually, omitting mangle.

The optimal_raid=1 setting will show up in the simcraft.bat file and in the CLASS_T8.simcraft files.

Buffs:
  if( sim -> optimal_raid || sim -> overrides.battle_shout           ) buffs.battle_shout = 548;
  if( sim -> optimal_raid || sim -> overrides.blessing_of_kings      ) buffs.blessing_of_kings = 1;
  if( sim -> optimal_raid || sim -> overrides.blessing_of_might      ) buffs.blessing_of_might = 688;
  if( sim -> optimal_raid || sim -> overrides.blessing_of_wisdom     ) buffs.blessing_of_wisdom = 91;
  if( sim -> optimal_raid || sim -> overrides.sanctified_retribution ) buffs.sanctified_retribution = 1;
  if( sim -> optimal_raid || sim -> overrides.swift_retribution      ) buffs.swift_retribution = 1;
  if( sim -> optimal_raid || sim -> overrides.arcane_brilliance      ) buffs.arcane_brilliance = 60;
  if( sim -> optimal_raid || sim -> overrides.divine_spirit          ) buffs.divine_spirit = 80;
  if( sim -> optimal_raid || sim -> overrides.fortitude              ) buffs.fortitude = 215;
  if( sim -> optimal_raid || sim -> overrides.improved_divine_spirit ) buffs.improved_divine_spirit = 80;
  if( sim -> optimal_raid || sim -> overrides.improved_moonkin_aura  ) buffs.improved_moonkin_aura = 1;
  if( sim -> optimal_raid || sim -> overrides.leader_of_the_pack     ) buffs.leader_of_the_pack = 1;
  if( sim -> optimal_raid || sim -> overrides.mana_spring            ) buffs.mana_spring = 42.5;
  if( sim -> optimal_raid || sim -> overrides.mark_of_the_wild       ) buffs.mark_of_the_wild = 52;
  if( sim -> optimal_raid || sim -> overrides.moonkin_aura           ) buffs.moonkin_aura = 1;
  if( sim -> optimal_raid || sim -> overrides.replenishment          ) buffs.replenishment = 1;
  if( sim -> optimal_raid || sim -> overrides.strength_of_earth      ) buffs.strength_of_earth = 99;
  if( sim -> optimal_raid || sim -> overrides.totem_of_wrath         ) buffs.totem_of_wrath = 280;
  if( sim -> optimal_raid || sim -> overrides.trueshot_aura          ) buffs.trueshot_aura = 1;
  if( sim -> optimal_raid || sim -> overrides.unleashed_rage         ) buffs.unleashed_rage = 1;
  if( sim -> optimal_raid || sim -> overrides.windfury_totem         ) buffs.windfury_totem = 0.20;
  if( sim -> optimal_raid || sim -> overrides.wrath_of_air           ) buffs.wrath_of_air = 1;

Debuffs:
  if( sim -> overrides.affliction_effects ) debuffs.affliction_effects = sim -> overrides.affliction_effects;
  else if( sim -> optimal_raid ) debuffs.affliction_effects = 12;

  if( sim -> optimal_raid || sim -> overrides.blood_frenzy          ) debuffs.blood_frenzy = 1;
  if( sim -> optimal_raid || sim -> overrides.crypt_fever           ) debuffs.crypt_fever = 1;
  if( sim -> optimal_raid || sim -> overrides.curse_of_elements     ) debuffs.curse_of_elements = 13;
  if( sim -> optimal_raid || sim -> overrides.earth_and_moon        ) debuffs.earth_and_moon = 13;
  if( sim -> optimal_raid || sim -> overrides.faerie_fire           ) debuffs.faerie_fire = sim -> P309 ? 1260 : 0.05;
  if( sim -> optimal_raid || sim -> overrides.ferocious_inspiration ) debuffs.ferocious_inspiration = 1;
  if( sim -> optimal_raid || sim -> overrides.hunters_mark          ) debuffs.hunters_mark = 450;
  if( sim -> optimal_raid || sim -> overrides.improved_scorch       ) debuffs.improved_scorch = 5;
  if( sim -> optimal_raid || sim -> overrides.judgement_of_wisdom   ) debuffs.judgement_of_wisdom = 1;
  if( sim -> optimal_raid || sim -> overrides.mangle                ) debuffs.mangle = 1;
  if( sim -> optimal_raid || sim -> overrides.master_poisoner       ) debuffs.master_poisoner = 1;
  if( sim -> optimal_raid || sim -> overrides.misery                ) { debuffs.misery = 3; debuffs.misery_stack = 1; }
  if( sim -> optimal_raid || sim -> overrides.poisoned              ) debuffs.poisoned = 1;
  if( sim -> optimal_raid || sim -> overrides.razorice              ) debuffs.razorice = 1;
  if( sim -> optimal_raid || sim -> overrides.savage_combat         ) debuffs.savage_combat = 1;
  if( sim -> optimal_raid || sim -> overrides.snare                 ) debuffs.snare = 1;
  if( sim -> optimal_raid || sim -> overrides.sunder_armor          ) debuffs.sunder_armor = sim -> P309 ? 3925 : 0.20;
  if( sim -> optimal_raid || sim -> overrides.thunder_clap          ) debuffs.thunder_clap = 1;
  if( sim -> optimal_raid || sim -> overrides.totem_of_wrath        ) debuffs.totem_of_wrath = 1;
  if( sim -> optimal_raid || sim -> overrides.winters_chill         ) debuffs.winters_chill = 5;

Other...
 if( sim -> optimal_raid || sim -> overrides.bloodlust )  { ... stuff happens ... }

So simply take the name after "overrides." and set it to 1 to get the buff/debuff.

#53 Allev

Allev

    King Hippo

  • Members
  • 545 posts

Posted 13 March 2009 - 06:15 PM

Thanks, that worked out fine.

Another issue: specific things like energy thresholds get different values during Berserk, so I'd like to specify certain sequences inside a berserk but not outside. Similar to the "tigers_fury=1" condition. Good behavior inside a berserk is not necessarily good behavior outside a berserk-- for instance, you want to spend all your energy inside a berserk, but pool for the next finisher cycle outside of it; FB at any energy outside of it, but only at very low energy inside of it; and so on.

#54 dedmonwakeen

dedmonwakeen

    Bald Bull

  • Members
  • 1,302 posts

Posted 13 March 2009 - 06:33 PM

Thanks, that worked out fine.

Another issue: specific things like energy thresholds get different values during Berserk, so I'd like to specify certain sequences inside a berserk but not outside. Similar to the "tigers_fury=1" condition. Good behavior inside a berserk is not necessarily good behavior outside a berserk-- for instance, you want to spend all your energy inside a berserk, but pool for the next finisher cycle outside of it; FB at any energy outside of it, but only at very low energy inside of it; and so on.


Someday I'd like to provide a more powerful AI, but for now there is no control flow: if { berserk } { do_this; } else { do_that; }

You'll have to duplicate the action lines, including berserk=1 as a conditional and lower the energy reqs.

Not pretty, but that's all we've got......

#55 Allev

Allev

    King Hippo

  • Members
  • 545 posts

Posted 13 March 2009 - 07:03 PM

Oh, didn't know I could do that-- thanks. it should be enough to work with.

#56 Starfox

Starfox

    King Hippo

  • Members
  • 578 posts

Posted 19 March 2009 - 04:52 AM

Current changes in trunk:
tier8_2pc_balance is in
tier8_4pc_balance is in with 15% chance and no cooldown, had to use some numbers ;)
Starfire got a new option (instant=1) to make use of the 4 piece proc
idol_of_the_crying_wind=1: Druid T8 Balance Relic -- Increases the spell power of your Insect Swarm by 374.

tier8_2pc_feral is not in, need numbers on %/cooldown etc.
tier8_4pc_feral was in cince the bonus got public
idol_of_the_corruptor=1: Druid T8 Feral Relic -- Your Mangle ability has a chance to grant 153 agility for 12 sec.
I just nailed it to 50% chance, would be glad to here from PTR tests
Hello.
Light the fuse.
For all my homies.
Do not run, we are your friends.
SimulationCraft Druid Guy

#57 a civilian

a civilian

    Piston Honda

  • Members
  • 181 posts

Posted 19 March 2009 - 05:12 AM

idol_of_the_corruptor=1: Druid T8 Feral Relic -- Your Mangle ability has a chance to grant 153 agility for 12 sec.
I just nailed it to 50% chance, would be glad to here from PTR tests


If it helps, the previous version, , has an 85% chance to proc but cannot overwrite itself (i.e. 10 second internal cooldown).

#58 folderol

folderol

    Von Kaiser

  • Members
  • 41 posts

Posted 19 March 2009 - 05:15 PM

I just checked on the latest PTR build and primal gore DoT crits seem to have a 1.5 base crit multiplier instead of the SimulationCraft assumed 2.0 multiplier.

In Cat DPS Spec, I get on a dummy with no RED meta:
rake Tick=2525 CritTick=3872
rip Tick=2444 CritTick=3594.

SimulationCraft predicts:
rake Tick=2486 CritTick=5640|5899|48.9%
rip Tick=2406 CritTick=5454|5591|49.4%

I didn't spend a lot of time testing so a second confirmation could be useful.

EDIT: I've done a second test without trying to maintain SR so just rip/rake/mangle unbuffed on a dummy and the results are more in line with what SC predicts.
Wow Web Stats
So base 2.0 multiplier seems ok, maybe I should upgrade my Recount on PTR

#59 ramenchef

ramenchef

    Piston Honda

  • Members
  • 166 posts

Posted 19 March 2009 - 05:20 PM

Hrm, did they nerf it back down to 150% multiplier?

#60 Starfox

Starfox

    King Hippo

  • Members
  • 578 posts

Posted 19 March 2009 - 05:37 PM

Balance 4/5 T8 bonus procchance is 3%, adjusted the value accordingly :)
Trying to find out what the Feral setbonus procchance is.
Ok, feral is 2%
Hello.
Light the fuse.
For all my homies.
Do not run, we are your friends.
SimulationCraft Druid Guy




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users