What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Simcraft Implemented, a Raidbot Derivate with Integrated Combat

Update !

Added Survival Hunter - Dunno how good it is
Added Chat Notifications when you use the Cooldown / Aoe Hotkeys

Think I read somewhere that "Chat Notifications" are a big no-no? Might confuse it with something else though.

Anyhow: Could you give an example of some Simcraft code "converted" to the code you use for the bot?
 
Think I read somewhere that "Chat Notifications" are a big no-no? Might confuse it with something else though.

Anyhow: Could you give an example of some Simcraft code "converted" to the code you use for the bot?

1. Its a simple lua print, it uses the chat window rather than the actual wow chat.
2. Sure, its inside spoiler tags in the first post since i didnt wanna bore people with details unless they want to know more :)
 
Last edited:
Heres a more complete example, again with the spoiler tags, ill use the hunter that i just added.

pre_steady_focus is a custom implementation to find out if a next cobra shot would trigger steady focus :)

Simcraft APL
Code:
actions=auto_shot
actions+=/arcane_torrent,if=focus.deficit>=30
actions+=/blood_fury
actions+=/berserking
actions+=/potion,name=draenic_agility,if=(((cooldown.stampede.remains<1)&(cooldown.a_murder_of_crows.remains<1))&(trinket.stat.any.up|buff.archmages_greater_incandescence_agi.up))|target.time_to_die<=25
actions+=/call_action_list,name=aoe,if=active_enemies>1
actions+=/a_murder_of_crows
actions+=/black_arrow,if=!ticking
actions+=/explosive_shot
actions+=/dire_beast
actions+=/arcane_shot,if=buff.thrill_of_the_hunt.react&focus>35&cast_regen<=focus.deficit|dot.serpent_sting.remains<=3|target.time_to_die<4.5
actions+=/explosive_trap
# Cast a second shot for steady focus if that won't cap us.
actions+=/cobra_shot,if=buff.pre_steady_focus.up&buff.steady_focus.remains<5&(14+cast_regen)<=focus.deficit
actions+=/arcane_shot,if=focus>=80|talent.focusing_shot.enabled
actions+=/focusing_shot
actions+=/cobra_shot

actions.aoe+=/explosive_shot,if=buff.lock_and_load.react&(!talent.barrage.enabled|cooldown.barrage.remains>0)
actions.aoe+=/barrage
actions.aoe+=/black_arrow,if=!ticking
actions.aoe+=/explosive_shot,if=active_enemies<5
actions.aoe+=/explosive_trap,if=dot.explosive_trap.remains<=5
actions.aoe+=/a_murder_of_crows
actions.aoe+=/dire_beast
actions.aoe+=/multishot,if=buff.thrill_of_the_hunt.react&focus>50&cast_regen<=focus.deficit|dot.serpent_sting.remains<=5|target.time_to_die<4.5
actions.aoe+=/glaive_toss
actions.aoe+=/powershot
actions.aoe+=/cobra_shot,if=buff.pre_steady_focus.up&buff.steady_focus.remains<5&focus+14+cast_regen<80
actions.aoe+=/multishot,if=focus>=70|talent.focusing_shot.enabled
actions.aoe+=/focusing_shot
actions.aoe+=/cobra_shot

My C# Code
Code:
        [Behavior(WoWClass.Hunter, WoWSpec.HunterSurvival, WoWContext.PvE)]
        public void GenerateSurvivalPvEBehavior()
        {
            actions += Cast(Arcane_Torrent, ret => focus.deficit >= 30);
            actions += Cast(Blood_Fury);
            actions += Cast(Berserking);
            actions += CallActionList("aoe", ret => active_enemies > 1);
            actions += Cast(A_Murder_of_Crows);
            actions += Cast(Black_Arrow, ret => !ticking);
            actions += Cast(Explosive_Shot);
            actions += Cast(Dire_Beast);
            actions += Cast(Arcane_Shot,ret =>buff[Thrill_of_the_Hunt].react && focus > 35 && cast_regen <= focus.deficit ||dot[Serpent_Sting].remains <= 3 || target.time_to_die < 4.5);
            actions += Cast(Explosive_Trap);
            actions += Cast(Cobra_Shot,ret => buff.Pre_Steady_Focus && buff[Steady_Focus].remains < 5 && (14 + cast_regen) <= focus.deficit);
            actions += Cast(Arcane_Shot, ret => focus >= 80 | talent[Focusing_Shot].enabled);
            actions += Cast(Focusing_Shot);
            actions += Cast(Cobra_Shot);

            actions.aoe += Cast(Explosive_Shot,ret => buff[Lock_and_Load].react && (!talent[Barrage].enabled || cooldown[Barrage].Down));
            actions.aoe += Cast(Barrage);
            actions.aoe += Cast(Black_Arrow, ret => !ticking);
            actions.aoe += Cast(Explosive_Shot, ret => active_enemies < 5);
            actions.aoe += Cast(Explosive_Trap);
            actions.aoe += Cast(A_Murder_of_Crows);
            actions.aoe += Cast(Dire_Beast);
            actions.aoe += Cast(MultiShot,ret =>buff[Thrill_of_the_Hunt].react && focus > 50 &&cast_regen <= focus.deficit || dot[Serpent_Sting].remains <= 5 || target.time_to_die < 4.5);
            actions.aoe += Cast(Glaive_Toss);
            actions.aoe += Cast(Powershot);
            actions.aoe += Cast(Cobra_Shot,ret => buff.Pre_Steady_Focus && buff[Steady_Focus].remains < 5 && focus + 14 + cast_regen < 80);
            actions.aoe += Cast(MultiShot, ret => focus >= 70 || talent[Focusing_Shot].enabled);
            actions.aoe += Cast(Focusing_Shot);
            actions.aoe += Cast(Cobra_Shot);
        }
 
Last edited:
Hello,

Do we have to update this profile each time or is they a link to re download?
 
I remember chatting with numerous devs about writing such a script, parsing simc. Nice to see someone took the challenge ; )
 
Heres a more complete example, again with the spoiler tags, ill use the hunter that i just added.

pre_steady_focus is a custom implementation to find out if a next cobra shot would trigger steady focus :)

Simcraft APL
Code:
actions=auto_shot
actions+=/arcane_torrent,if=focus.deficit>=30
actions+=/blood_fury
actions+=/berserking
actions+=/potion,name=draenic_agility,if=(((cooldown.stampede.remains<1)&(cooldown.a_murder_of_crows.remains<1))&(trinket.stat.any.up|buff.archmages_greater_incandescence_agi.up))|target.time_to_die<=25
actions+=/call_action_list,name=aoe,if=active_enemies>1
actions+=/a_murder_of_crows
actions+=/black_arrow,if=!ticking
actions+=/explosive_shot
actions+=/dire_beast
actions+=/arcane_shot,if=buff.thrill_of_the_hunt.react&focus>35&cast_regen<=focus.deficit|dot.serpent_sting.remains<=3|target.time_to_die<4.5
actions+=/explosive_trap
# Cast a second shot for steady focus if that won't cap us.
actions+=/cobra_shot,if=buff.pre_steady_focus.up&buff.steady_focus.remains<5&(14+cast_regen)<=focus.deficit
actions+=/arcane_shot,if=focus>=80|talent.focusing_shot.enabled
actions+=/focusing_shot
actions+=/cobra_shot

actions.aoe+=/explosive_shot,if=buff.lock_and_load.react&(!talent.barrage.enabled|cooldown.barrage.remains>0)
actions.aoe+=/barrage
actions.aoe+=/black_arrow,if=!ticking
actions.aoe+=/explosive_shot,if=active_enemies<5
actions.aoe+=/explosive_trap,if=dot.explosive_trap.remains<=5
actions.aoe+=/a_murder_of_crows
actions.aoe+=/dire_beast
actions.aoe+=/multishot,if=buff.thrill_of_the_hunt.react&focus>50&cast_regen<=focus.deficit|dot.serpent_sting.remains<=5|target.time_to_die<4.5
actions.aoe+=/glaive_toss
actions.aoe+=/powershot
actions.aoe+=/cobra_shot,if=buff.pre_steady_focus.up&buff.steady_focus.remains<5&focus+14+cast_regen<80
actions.aoe+=/multishot,if=focus>=70|talent.focusing_shot.enabled
actions.aoe+=/focusing_shot
actions.aoe+=/cobra_shot

My C# Code
Code:
        [Behavior(WoWClass.Hunter, WoWSpec.HunterSurvival, WoWContext.PvE)]
        public void GenerateSurvivalPvEBehavior()
        {
            actions += Cast(Arcane_Torrent, ret => focus.deficit >= 30);
            actions += Cast(Blood_Fury);
            actions += Cast(Berserking);
            actions += CallActionList("aoe", ret => active_enemies > 1);
            actions += Cast(A_Murder_of_Crows);
            actions += Cast(Black_Arrow, ret => !ticking);
            actions += Cast(Explosive_Shot);
            actions += Cast(Dire_Beast);
            actions += Cast(Arcane_Shot,ret =>buff[Thrill_of_the_Hunt].react && focus > 35 && cast_regen <= focus.deficit ||dot[Serpent_Sting].remains <= 3 || target.time_to_die < 4.5);
            actions += Cast(Explosive_Trap);
            actions += Cast(Cobra_Shot,ret => buff.Pre_Steady_Focus && buff[Steady_Focus].remains < 5 && (14 + cast_regen) <= focus.deficit);
            actions += Cast(Arcane_Shot, ret => focus >= 80 | talent[Focusing_Shot].enabled);
            actions += Cast(Focusing_Shot);
            actions += Cast(Cobra_Shot);

            actions.aoe += Cast(Explosive_Shot,ret => buff[Lock_and_Load].react && (!talent[Barrage].enabled || cooldown[Barrage].Down));
            actions.aoe += Cast(Barrage);
            actions.aoe += Cast(Black_Arrow, ret => !ticking);
            actions.aoe += Cast(Explosive_Shot, ret => active_enemies < 5);
            actions.aoe += Cast(Explosive_Trap);
            actions.aoe += Cast(A_Murder_of_Crows);
            actions.aoe += Cast(Dire_Beast);
            actions.aoe += Cast(MultiShot,ret =>buff[Thrill_of_the_Hunt].react && focus > 50 &&cast_regen <= focus.deficit | dot[Serpent_Sting].remains <= 5 || target.time_to_die < 4.5);
            actions.aoe += Cast(Glaive_Toss);
            actions.aoe += Cast(Powershot);
            actions.aoe += Cast(Cobra_Shot,ret => buff.Pre_Steady_Focus && buff[Steady_Focus].remains < 5 && focus + 14 + cast_regen < 80);
            actions.aoe += Cast(MultiShot, ret => focus >= 70 || talent[Focusing_Shot].enabled);
            actions.aoe += Cast(Focusing_Shot);
            actions.aoe += Cast(Cobra_Shot);
        }

Thanks!

A few stupid questions:

1. I know that || means sort of "or", but what does one | mean?
2. What is the importance of Capital letters at the beginning of each spell?
3. How important is the Spaces inbetween everything? If not important, Simcraft code can be convertet to your C code in 11 simple steps and one final step of copy/paste of ); to each line.
 
Havent tried it yet but seems genius!
Simcraft For DPS
Now if we can pull Zygor to auto script quests.
 
Thanks!

A few stupid questions:

1. I know that || means sort of "or", but what does one | mean?
2. What is the importance of Capital letters at the beginning of each spell?
3. How important is the Spaces inbetween everything? If not important, Simcraft code can be convertet to your C code in 11 simple steps and one final step of copy/paste of ); to each line.

1. The same, c&p error
2. Nothing, i just have a bunch of constants with the spell names so i can code with autocomplete. These constants can be renamed freely, heck you could even change all those Strings to SpellIds and it wont change much :)
3. Whitespaces mean nothing

It would indeed be simple to convert from the simc apl to C# code in most cases, however there are a bunch of corner cases and special commands that simcraft uses which can not be easily replicated.
 
So its possible to pull in simcraft results per toon correct? Let say i have different talents or gear. Your results will change slightly based on gear and talents. So i go home, run sim, spit results out, and pull them in.... its feesable? With a little know how?
 
So its possible to pull in simcraft results per toon correct? Let say i have different talents or gear. Your results will change slightly based on gear and talents. So i go home, run sim, spit results out, and pull them in.... its feesable? With a little know how?

The Simcraft APL accounts for different talents being selected and in turn the bot does it too, however i have yet to see a rotation being changed because of gear unless you mean on use trinkets.
 
The Simcraft APL accounts for different talents being selected and in turn the bot does it too, however i have yet to see a rotation being changed because of gear unless you mean on use trinkets.

Meant trinkets and procing but maybe im wrong. If i wasn't at work id be playing with this right now!! Cool stuff man iM gonna try Hunter out when i get home. Using TuanHA paid and cant complain but just curious.

Did you just pull from Max DPS?

MaxDPS.com - WoD 6.0.3 Survival Hunter DPS SimulationCraft Profile
 
Meant trinkets and procing but maybe im wrong. If i wasn't at work id be playing with this right now!! Cool stuff man iM gonna try Hunter out when i get home. Using TuanHA paid and cant complain but just curious.

Did you just pull from Max DPS?

MaxDPS.com - WoD 6.0.3 Survival Hunter DPS SimulationCraft Profile

I simed my hunter and used that config ^^ It doesnt account for changing trinkets and their procs / on use effects right now.
Simcraft itself does though

Item usage in general is far from complete
 
Last edited:
Ret please :D

This should be evrything you need to get started :) For your lovely Ret DPS machine

[HIDE]# Executed before combat begins. Accepts non-harmful actions only.

actions.precombat=flask,type=greater_draenic_strength_flask
actions.precombat+=/food,type=sleeper_surprise
actions.precombat+=/blessing_of_kings,if=!aura.str_agi_int.up
actions.precombat+=/blessing_of_might,if=!aura.mastery.up
actions.precombat+=/seal_of_truth,if=active_enemies<2
actions.precombat+=/seal_of_righteousness,if=active_enemies>=2
# Snapshot raid buffed stats before combat begins and pre-potting is done.
actions.precombat+=/snapshot_stats
actions.precombat+=/potion,name=draenic_strength

# Executed every time the actor is available.

actions=rebuke
actions+=/potion,name=draenic_strength,if=(buff.bloodlust.react|buff.avenging_wrath.up|target.time_to_die<=40)
actions+=/auto_attack
actions+=/speed_of_light,if=movement.distance>5
actions+=/execution_sentence
actions+=/lights_hammer
actions+=/holy_avenger,sync=seraphim,if=talent.seraphim.enabled
actions+=/holy_avenger,if=holy_power<=2&!talent.seraphim.enabled
actions+=/avenging_wrath,sync=seraphim,if=talent.seraphim.enabled
actions+=/avenging_wrath,if=!talent.seraphim.enabled
actions+=/use_item,name=vial_of_convulsive_shadows,if=buff.avenging_wrath.up
actions+=/blood_fury
actions+=/berserking
actions+=/arcane_torrent
actions+=/seraphim
actions+=/call_action_list,name=aoe,if=active_enemies>=5
actions+=/call_action_list,name=cleave,if=active_enemies>=3
actions+=/call_action_list,name=single

actions.single=divine_storm,if=buff.divine_crusader.react&holy_power=5&buff.final_verdict.up
actions.single+=/divine_storm,if=buff.divine_crusader.react&holy_power=5&active_enemies=2&!talent.final_verdict.enabled
actions.single+=/divine_storm,if=holy_power=5&active_enemies=2&buff.final_verdict.up
actions.single+=/divine_storm,if=buff.divine_crusader.react&holy_power=5&(talent.seraphim.enabled&cooldown.seraphim.remains<=4)
actions.single+=/templars_verdict,if=holy_power=5|buff.holy_avenger.up&holy_power>=3&(!talent.seraphim.enabled|cooldown.seraphim.remains>4)
actions.single+=/templars_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<4
actions.single+=/divine_storm,if=buff.divine_crusader.react&buff.divine_crusader.remains<4&!talent.final_verdict.enabled
actions.single+=/final_verdict,if=holy_power=5|buff.holy_avenger.up&holy_power>=3
actions.single+=/final_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<4
actions.single+=/hammer_of_wrath
actions.single+=/judgment,if=talent.empowered_seals.enabled&((seal.truth&buff.maraads_truth.remains<cooldown.judgment.duration*2)|(seal.righ
teousness&buff.liadrins_righteousness.remains<cooldown.judgment.duration*2))
actions.single+=/exorcism,if=buff.blazing_contempt.up&holy_power<=2&buff.holy_avenger.down
actions.single+=/seal_of_truth,if=talent.empowered_seals.enabled&buff.maraads_truth.remains<(cooldown.judgment.duration)&buff.maraads_truth.
remains<=3
actions.single+=/divine_storm,if=buff.divine_crusader.react&buff.final_verdict.up&(buff.avenging_wrath.up|target.health.pct<35)
actions.single+=/final_verdict,if=buff.divine_purpose.react|target.health.pct<35
actions.single+=/templars_verdict,if=buff.avenging_wrath.up|target.health.pct<35&(!talent.seraphim.enabled|cooldown.seraphim.remains>4)
actions.single+=/crusader_strike
actions.single+=/divine_storm,if=buff.divine_crusader.react&(buff.avenging_wrath.up|target.health.pct<35)&!talent.final_verdict.enabled
actions.single+=/divine_storm,if=buff.divine_crusader.react&buff.final_verdict.up
actions.single+=/final_verdict
actions.single+=/seal_of_righteousness,if=talent.empowered_seals.enabled&buff.liadrins_righteousness.remains<(cooldown.judgment.duration)&bu
ff.liadrins_righteousness.remains<=3
actions.single+=/judgment
actions.single+=/templars_verdict,if=buff.divine_purpose.react
actions.single+=/divine_storm,if=buff.divine_crusader.react&!talent.final_verdict.enabled
actions.single+=/templars_verdict,if=holy_power>=4&(!talent.seraphim.enabled|cooldown.seraphim.remains>4)
actions.single+=/exorcism
actions.single+=/templars_verdict,if=holy_power>=3&(!talent.seraphim.enabled|cooldown.seraphim.remains>4)
actions.single+=/holy_prism

actions.cleave=final_verdict,if=buff.final_verdict.down&holy_power=5
actions.cleave+=/divine_storm,if=holy_power=5&buff.final_verdict.up
actions.cleave+=/divine_storm,if=holy_power=5&(!talent.seraphim.enabled|cooldown.seraphim.remains>4)&!talent.final_verdict.enabled
actions.cleave+=/exorcism,if=buff.blazing_contempt.up&holy_power<=2&buff.holy_avenger.down
actions.cleave+=/hammer_of_wrath
actions.cleave+=/judgment,if=talent.empowered_seals.enabled&seal.righteousness&buff.liadrins_righteousness.remains<=5
actions.cleave+=/divine_storm,if=(!talent.seraphim.enabled|cooldown.seraphim.remains>4)&!talent.final_verdict.enabled
actions.cleave+=/crusader_strike
actions.cleave+=/final_verdict,if=buff.final_verdict.down
actions.cleave+=/divine_storm,if=buff.final_verdict.up
actions.cleave+=/judgment
actions.cleave+=/exorcism
actions.cleave+=/holy_prism

actions.aoe=divine_storm,if=holy_power=5&(!talent.seraphim.enabled|cooldown.seraphim.remains>4)
actions.aoe+=/exorcism,if=buff.blazing_contempt.up&holy_power<=2&buff.holy_avenger.down
actions.aoe+=/hammer_of_the_righteous
actions.aoe+=/judgment,if=talent.empowered_seals.enabled&seal.righteousness&buff.liadrins_righteousness.remains<=5
actions.aoe+=/hammer_of_wrath
actions.aoe+=/divine_storm,if=(!talent.seraphim.enabled|cooldown.seraphim.remains>4)
actions.aoe+=/exorcism,if=glyph.mass_exorcism.enabled
actions.aoe+=/judgment
actions.aoe+=/exorcism
actions.aoe+=/holy_prism[/HIDE]
 
Back
Top