How you doin mate? I've managed to convert all actions from old to new profile and everything seems to be working fine. Only thing I'm missing is if=combat_enabled or if=aoe_enabled. Cheers
Hey rimdab I tried that file you sent me and I couldn't get it to work it just didn't show up under profile selector, I am still in the IRC so either hit me back up on here or in there (it disconnected last night so I missed all messages). Also @kane I don't know what's causing this and I will have to send you a log when it does it again, but last night quite a few times, I would have to stop and restart it almost like it bugs out here and there.
when trying to load a profile for WL I'll getting this error: Code: ************** Exception Text ************** System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.MissingMemberException: Member 'Simcraft.SimcraftImpl+SpellProxy.service_pet' not found. at Simcraft.SimcraftImpl.Proxy.ResolveName(String name) in d:\hb\Bots\simpl-master\SimcraftProxies.cs:line 2073 at Simcraft.SimcraftImpl.Cast(String spell, CanRunDecoratorDelegate del, WoWUnit _target, String Reason) in d:\hb\Bots\simpl-master\SimcraftImpl.cs:line 706 at Simcraft.SimcraftImpl.Cast(String spell, CanRunDecoratorDelegate del, String r) in d:\hb\Bots\simpl-master\SimcraftImpl.cs:line 775 at Simcraft.UHESUTYIAG.GenerateWarlockDestructionPvEBehavior() --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args) at Simcraft.ActionPrioriyList.CreateBehavior() in d:\hb\Bots\simpl-master\APL\ActionPrioriyList.cs:line 92 at Simcraft.ProfileSelector.button2_Click(Object sender, EventArgs e) in d:\hb\Bots\simpl-master\ProfileSelector.cs:line 63 at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) any suggestion how to fix it?
Unfortunately you cant fix that, i will check out what Service_pet does ^^ maybe you can tell me what Service_pet is supposed to do ?
also I noticed the hotkeys don't seem to be working... what exactly is execution and cooldowns do. How would I use them with a hunter? Can I single target if I pick execution?
Welcome And it is happily given even if the follow-ups below aren't incorporated. I'll just swap bot bases when needed. But if these 2 things (configuration profiles and interrupt logic) were added I think I'd be able to use this base for 95% of my raiding time. ... Regarding most of my other needs, I think the multiple configurations attached to hotkeys would fix it. I have no problem editing the text file configs to build mine (in fact I absolutely love this ability). That would allow us to build profiles that truly turned off ALL AOE, or have single target routines that include AOE (like Divine Storm), or go full AOE depending on the profile. ... The only major API addition needed at that point would be an auto-interrupt routine that allows us to interrupt on specific casts. And that is something I'm currently doing manually anyway. If you do build a way to have logic around interrupts then having a random delay in it like Tuanha to avoid bot detection would be very welcome. I rarely use Tuanha for interrupts these days, since Blizzard got wise to this and bosses (and ugly trash) needing interrupts tend to have multiple interruptible casts but only 1 that matters. So if you found a good way to build interrupt logic (something we'd need to append manually to our profiles) that would put this a huge step ABOVE any profile I currently use for that. ESPECIALLY if we can assign it to only interrupt every Nth cast (example being Oregorger where we assign 3 interrupters only for Blackrock Barrage, I could be first, second or third). If you included something along the lines of the following in the bot (pseudocode follows, I'm a Perl guy but should be legible for getting the basic idea, I'm aware the logic can be optimized but I'm a hack), we could then build out our interrupt logic pretty easily by adding a chunk to the configuration file. Hope you don't mind this super-verbose suggestion. Not expecting your implementation would match identically, I'm just using my example below to try and illustrate what would be useful for Interrupt configuration if you're willing to pursue it. Note: I'm assuming your bot base doesn't bother tracking ALL mobs nearby (Tuanha will allow you to interrupt any mob with aggro, targetted or not, or just target, or target + focus). That's actually fine with me as being way too good at interrupts is a huge bot flag (though players with good nameplates and mouseover macros make it feasible). It would be useful to be able to do interrupt on focus as well as target. If we can do interrupts on all targets then I've included a configuration on how the user can set that option below. ... ... in Bot Code: [I]### During Configuration loading[/I] # inform the bot which Interrupt abilities are available per class, which should also remove # these spells from the DPS rotation if they are included in the configuration file if ($spec eq "retribution") { $interrupt_spells_off_GCD = ("Rebuke"); } else if ($spec =~ /[combat|subtlety|assassination]/) { ( $interrupt_spells_off_GCD = "Kick"); } else if (<etc>) { <etc> } ); # Slurp in the list of spells we want to interrupt. # Raiders can configure this and add their own, but I also can see us sharing a list # on the forums for easy pasting as new content comes out @interrupt_SPELLIDs = <read in each interrupt.configure.SPELLID line from the configuration file>; # Who do we want to interrupt? If the bot is able to track more than 1 mob # Default: target only # Options: Target Only, Target+Focus, Focus Only, Bosses Only, All $interrupt_candidate = <read value from configuration file>; # How many casts to track for Nth counting? Default = 1 so that if not specified we try to interrupt ALL $interrupt_SPELLID_Nth_max = <read value from configuration file>; # WHICH iteration of N casts are we interrupting? Default = 1 so that we aren't worrying about # interrupt rotations unless told $interrupt_SPELLID_Nth = <read value from configuration file>; # default 500ms, no more than 950ms $interrupt_max_delay = <read value from configuration file>; if (! $interrupt_max_delay || $interrupt_max_delay > 950) { $interrupt_max_delay = 950; } # default 50ms, no less than 10ms $interrupt_min_delay = <read value from configuration file>; if (! $interrupt_min_delay || $interrupt_min_delay < 10ms || $interrupt_min_delay >= $interrupt_max_delay) { $interrupt_min_delay = 50; } [I]### During rotation logic in the bot, checked each time the bot is ticked ... [/I] # since these are true interrupts off the GCD, they can run during the same tick as the DPS rotation # and shouldn't end the tick if they go off if ($boss_action eq "casting") { # Next 2 lines not optimal, would generate new random intervals each tick unless the delay_random were # calculated outside of the tick loop and stored until the cast was done then redo the delay_random next cast # just doing this for simplicity of idea explanation $interrupt_delay_range = $interrupt_max_delay - $interrupt_min_delay; $interrupt_delay_random = int(rand($interrupt_delay_range)) + $interrupt_delay_min; if ($boss_cast) { $boss_cast_SPELLID = $boss_cast; $boss_cast_SPELLID_Nth++; if ($boss_cast_SPELLID_Nth > $interrupt_SPELLID_Nth_max) { $boss_cast_SPELLID_Nth = 1; } if ($boss_cast_SPELLID = $interrupt_SPELLID && $bost_cast_SPELLID_Nth = $interrupt_SPELLID_Nth) { if (isAvailable($interrupt_spell_off_GCD) && $boss_cast_timer > $interrupt_delay_random) { cast $BOSS, $interrupt_spell_off_GCD; } } } } ... in Configuration file Code: # configures our randomized delay interrupt.configure.min_delay=100 interrupt.configure.max_delay=700 # configures who we are wanting to interrupt interrupt.configure.target=target+focus #example configuration to interrupt EVERY cast that we can of Revitalizing Water #(used by Life Warden Gola in Everbloom as well as some elites in Gorgrond, just for example) # no value after the SPELLID means Nth max is set to 1 and Nth is set to 1, interrupting any cast interrupt.configure.SPELLID=176280 #example configuration to interrupt every 2nd cast of Oregorger's Blackrock Barrage, which casts 3 times interrupt.configure.SPELLID=156879,2,3
Also related to the Interrupt idea, rather than adding it to our Simc export, perhaps it is in a separate file that can be specified as part of the profile? Helps keep the basic idea of "just export from Simulationcraft" on track.
Having an issue which stops the bot from showing up in the dropdown menu where you can select which botbase to run. Not sure what's causing it but this is the only relevant information I could get from the log file:
hunter's if you want to have deterrence pop if you are about to die at 20% add this to your file actions+=/deterrence,if=health.pct<=20 (at the top) if you want to have it auto mend your pet at 70% use this actions+=/mend_pet,if=pethealth.pct<=70&buff.mend_pet.down (at the top) EDIT: nvm it doesnt work when you do that, must need an update or something
Retribution Bug: decided to try out Empowered Seals instead of Final Verdict tonight since it sims slightly higher. Code: <21:13>: Seal of Righteousness Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Simcraft.SimcraftImpl.CooldownProxy.CooldownInternal' does not contain a definition for 'duration' at CallSite.Target(Closure , CallSite , Object ) at Simcraft.IGBNXOWUMM.<GeneratePaladinRetributionPvEBehavior>b__490(Object _if) at Simcraft.SimcraftImpl.<>c__DisplayClass8b.<Cast>b__88(Object _ret) in c:\Honorbuddy\Bots\Simcraft\SimcraftImpl.cs:line 723 This is with a fresh install of both Honorbuddy and Simcraft tonight due to new patch. Happened both in the default Ret profile as well as my customized profile.
Great Botbase! bug report: Code: [01:26:19.093 D] System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Simcraft.SimcraftImpl.DBGetClassSpell(String name) in d:\Honor\HonorbuddyDE 2.5.13042.771\Bots\Simcraft\SimcraftImpl.cs:line 197 at Simcraft.SimcraftImpl.UNIT_SPELLCAST_SUCCEEDED(Object sender, LuaEventArgs args) in d:\Honor\Honorbuddy 2.5.13042.771\Bots\Simcraft\SimcraftTop.cs:line 423 at Styx.WoWInternals.LuaEvents.( , UInt32 , UInt32 , Object[] ) [01:26:19.349 D] Exception in lua event handler UNIT_SPELLCAST_SUCCEEDED [01:26:19.350 D] Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Simcraft.SimcraftImpl.PrevGcdProxy' does not contain a definition for 'id' at CallSite.Target(Closure , CallSite , Object , Int32 ) at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) at Simcraft.SimcraftImpl.UNIT_SPELLCAST_SUCCEEDED(Object sender, LuaEventArgs args) in d:\Honor\Honorbuddy 2.5.13042.771\Bots\Simcraft\SimcraftTop.cs:line 434
Remove all precombat actions and all actions that start with "actions+=/potion,name=draenic_agility,"