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

[Plugin] Giles Combat Replacer

Any plans to integrate this with your monster ignore plugin? (or are they mutually exclusive :/)

As cdmichaelb says - it's built-in (and improved).

Essentially monster priority changer just serves up a list of viable targets (in a "desired order") for DB to handle as it pleases (which it pleases itself with passing onto the combat routine - Generic/Belphegor - so they know what monster they should be attacking).

Whereas my combat replacer plugin doesn't bother with waiting for a "pulsed target check" being served up by DemonBuddy - it actually calls up targets on-demand as it needs them, so combat replacer BLANKS DB's built in "combat target provider" (so there's no slowdown from DB trying to provide targets to a combat routine that doesn't exist), and uses all of the code/techniques (including caching, weighting, blacklisting etc.) from monster priority changer, modified and improved, in a way that fits the way the plugin works.

That might be a bit more technical than a simple yes/no answer, but it might answer any other yet-to-be-asked questions :D
 
Alright, thanks for the info! Looking forward to the next DB update then :)
Another issue is that Thunderclap seems to be really broken :P If you use Fists of Thunder + Thunderclap, you move up to the unit before attacking rather than teleporting. Since DB doesn't seem to be able to read the rune of the skill you have I assume this one is not possible to set automatically by detection. Anyhow, I manually tried to set the range to 40 instead of 14 and set bTreatMeAsRanged = true; for actorclass.monk but it's still not functioning. Any ideas? This really hurts chasing goblins and thing's like that :)
 
Tested it with my monk, it's very good, the only thing preventing me from using it right now is that Fists of Thunder is not doing it's teleport, which makes the monsters chasing a lot slower..
 
Alright, thanks for the info! Looking forward to the next DB update then :)
Another issue is that Thunderclap seems to be really broken :P If you use Fists of Thunder + Thunderclap, you move up to the unit before attacking rather than teleporting. Since DB doesn't seem to be able to read the rune of the skill you have I assume this one is not possible to set automatically by detection. Anyhow, I manually tried to set the range to 40 instead of 14 and set bTreatMeAsRanged = true; for actorclass.monk but it's still not functioning. Any ideas? This really hurts chasing goblins and thing's like that :)
Tested it with my monk, it's very good, the only thing preventing me from using it right now is that Fists of Thunder is not doing it's teleport, which makes the monsters chasing a lot slower..

Should work in the next update, if it's possible anyways.

Edit: Wait I think it will require a new version of DB, as there isn't a way to see which runes people are using. I have a few ideas though that I'll let giles know.
 
I'm liking this routine a lot so far. It feels faster than Belphegor by quite a bit. My testing barb has almost no crit, so I changed the skills that rely on that a little bit, and he's surviving just fine.

Two minor things. First, it seems to have a little trouble with waller packs, and ends up spending a lot of time standing still. I presume it is trying to get to the targeted enemy, and doesn't switch targets quite fast enough. This seems to happen even if the enemy is close enough it could be hit through the wall, or if another enemy is right next to the character.

Two, it doesn't use sprint outside of combat unless it is being pursued by trash enemies. I think I'm in the minority on this, but I believe sprint is highly underrated in a champ farming build. Let me give an example to make my point. My barb has been running your routine for the past 45 minutes, and is averaging 77k per hour. This is with 0 GF, 14 radius, only picking up inferno gear, salvaging everything, and no deaths/repairs. Last night I had the same barb and gear running Belphegor, sprint with marathon, and a very similar whirlwind build. Your routine kills the enemies faster, that is without doubt. But, I was averaging 100k per hour with Belphegor. The difference is the sprinting around the huge act 1 maps. I'm not saying that sprint is for everyone, but it would be nice to have an option to use it out of combat for builds that generate lots of fury.

Anyway, sorry if it sounds like complaining, its really not. Your work is top notch stuff! I wish you accepted donations, I feel like a mooch.

Edit: embellishing a point. I made a mistake, my 100k per hour was with 0% bonus move speed, and today I have 12%, so the gap is even wider. My run times through Act 1 with Belphegor, no deaths, and 0% move speed were 35 minutes, and now with 12% move speed it is 40 minutes. The combat is faster, the trudging along without sprint is much slower.

I may be beating a dead horse, but I see 15% slower run times with the same drops as 15% less profit.
 
Last edited:
Alright, thanks for the info! Looking forward to the next DB update then :)
Another issue is that Thunderclap seems to be really broken :P If you use Fists of Thunder + Thunderclap, you move up to the unit before attacking rather than teleporting. Since DB doesn't seem to be able to read the rune of the skill you have I assume this one is not possible to set automatically by detection. Anyhow, I manually tried to set the range to 40 instead of 14 and set bTreatMeAsRanged = true; for actorclass.monk but it's still not functioning. Any ideas? This really hurts chasing goblins and thing's like that :)

Yeah DB's lack of rune-reading is really irritating - and seems like such an obvious oversight to me!

I would ask anyone that wants to help get more advanced skill-use support to post on this thread here: [url]http://www.thebuddyforum.com/demonbuddy-forum/developers/65216-request-ability-quickly-easily-tell-what-rune-each-skill-has.html[/url] - a developer thread I posted requesting ability to see all runes on all skills.

I use a monk with fists of thunder and thunderclap and don't mind the shorter range - the attack-speed more than makes up for it. Do you have any idea what the ACTUAL range is it can teleport? Like from standing still, to actually teleporting, what sort of range it is? Anyway you should be able to change this (just the first bit of the line, ctrl+f should find only one code-line);

return new GilesPower(SNOPower.Monk_FistsofThunder, 16f
And changing that 16f to say 20f should do the trick, assuming it can actually reach 20 feet - but if you set it higher than it can ACTUALLY teleport, then it'll just make Diablo try and walk to point blank range pretty much (same as holding LMB on a monster too far away for it to attack).

You might want to combine that with making the target selector want to treat monks as "range-support" in it's target decision making - try without at first, but then try changing;
else if (iMyCachedActorClass == ActorClass.Monk)
bTreatMeAsRanged = false;
to;
if (iMyCachedActorClass == ActorClass.Monk && (PowerManager.CanCast(SNOPower.Monk_FistsofThunder)))
bTreatMeAsRanged = true;

That'll make the target picker try and prioritize distance of mobs a bit less.
 
Yeah DB's lack of rune-reading is really irritating - and seems like such an obvious oversight to me!

I would ask anyone that wants to help get more advanced skill-use support to post on this thread here: [url]http://www.thebuddyforum.com/demonbuddy-forum/developers/65216-request-ability-quickly-easily-tell-what-rune-each-skill-has.html[/url] - a developer thread I posted requesting ability to see all runes on all skills.

I use a monk with fists of thunder and thunderclap and don't mind the shorter range - the attack-speed more than makes up for it. Do you have any idea what the ACTUAL range is it can teleport? Like from standing still, to actually teleporting, what sort of range it is? Anyway you should be able to change this (just the first bit of the line, ctrl+f should find only one code-line);

return new GilesPower(SNOPower.Monk_FistsofThunder, 16f
And changing that 16f to say 20f should do the trick, assuming it can actually reach 20 feet - but if you set it higher than it can ACTUALLY teleport, then it'll just make Diablo try and walk to point blank range pretty much (same as holding LMB on a monster too far away for it to attack).

You might want to combine that with making the target selector want to treat monks as "range-support" in it's target decision making - try without at first, but then try changing;
else if (iMyCachedActorClass == ActorClass.Monk)
bTreatMeAsRanged = false;
to;
if (iMyCachedActorClass == ActorClass.Monk && (PowerManager.CanCast(SNOPower.Monk_FistsofThunder)))
bTreatMeAsRanged = true;

That'll make the target picker try and prioritize distance of mobs a bit less.


Thanks for the suggestion, unfortunately it is not working with either btreatmeasranged false or true and ranges tried were 16 and 20. Still just either moving up or attacking air =/
 
I will say this, though. I just watched my bot run *around* a giant herd of normal khazra and sprint away from them so they lost aggro. Having it sprint to avoid trash mobs is a brilliant idea :)
 
Thanks for the suggestion, unfortunately it is not working with either btreatmeasranged false or true and ranges tried were 16 and 20. Still just either moving up or attacking air =/

I must warn you that this technique is prone to random client crashing (fault within DemonBuddy/Diablo 3 itself, can happen with any combat routine but more often with my plugin since my plugin can attack so fast), but this might do the job;
return new GilesPower(SNOPower.Monk_FistsofThunder, 20f, vNullLocation, -1, unitCurrentTarget.iThisActorACDGUID, false, true);

See how that works, just be aware that D3 client could crash more often (hopefully less often in the next version of DB) using this method.
 
Giving this puppy a whirl since i love all of your other plugins. So far I do like that it finally makes good use of frenzy shrines, but it seems that the evasion routines are a little iffy compared to Belph. I'm going to fire up an evasions plugin to run with it and see if that works :) Awesome job again Giles.
 
trying it with my Barbie now, so far so good with WW build, 2.5k LoH, 52% Crit
 
I must warn you that this technique is prone to random client crashing (fault within DemonBuddy/Diablo 3 itself, can happen with any combat routine but more often with my plugin since my plugin can attack so fast), but this might do the job;
return new GilesPower(SNOPower.Monk_FistsofThunder, 20f, vNullLocation, -1, unitCurrentTarget.iThisActorACDGUID, false, true);

See how that works, just be aware that D3 client could crash more often (hopefully less often in the next version of DB) using this method.
Didn't try the code you suggested but after some hefty brainwork I found this that is working atm:
return new GilesPower(SNOPower.Monk_FistsofThunder, 20f, Vector3.Zero, iCurrentWorldID, iCurrentTargetGUID, false, true);

Thanks for the warning about the crashes, will watch for that.

Edit: I will change it to unitCurrentTarget.iThisActorACDGUID, I realize now that iCurrentTargetGUID might bypass the target prioritization mechanic :)
 
Last edited:
Didn't try the code you suggested but after some hefty brainwork I found this that is working atm:
return new GilesPower(SNOPower.Monk_FistsofThunder, 20f, Vector3.Zero, iCurrentWorldID, iCurrentTargetGUID, false, true);
Thanks for the warning about the crashes, will watch for that.
Yeah you've done the same thing as suggested, well done! Basically I avoided using attacks against specific target ID's because it can crash D3 - if in the brief 100-200 or so milliseconds between sending the "UsePower" command to D3 and D3 actually trying to do it, the target died - D3 will crash as it's trying to do something to a target ID that no longer exists. Combined with the fact this plugin attacks faster, the crashes actually happened more often. So I changed all attacks to be location based, rather than target-based - which seemed to stop all crashes altogether - but Diablo 3 doesn't seem to add the extended range of fists of thunder if you shift-attack thin air. (hold left-shift and LMB/the attack key for Fists of thunder - it seems to have no range at all/ignores the rune). Probably to stop people abusing fists of thunder and using it to rapidly teleport all over the map. I'm not sure what a safe alternative is without opening it up to crashing Diablo again - I suspect we might have to wait for DB updates that can get those commands in even quicker (next DB update is meant to be hugely optimized), which might minimize the crashes to "extremely rare" at least!
 
Yeah you've done the same thing as suggested, well done! Basically I avoided using attacks against specific target ID's because it can crash D3 - if in the brief 100-200 or so milliseconds between sending the "UsePower" command to D3 and D3 actually trying to do it, the target died - D3 will crash as it's trying to do something to a target ID that no longer exists. Combined with the fact this plugin attacks faster, the crashes actually happened more often. So I changed all attacks to be location based, rather than target-based - which seemed to stop all crashes altogether - but Diablo 3 doesn't seem to add the extended range of fists of thunder if you shift-attack thin air. (hold left-shift and LMB/the attack key for Fists of thunder - it seems to have no range at all/ignores the rune). Probably to stop people abusing fists of thunder and using it to rapidly teleport all over the map. I'm not sure what a safe alternative is without opening it up to crashing Diablo again - I suspect we might have to wait for DB updates that can get those commands in even quicker (next DB update is meant to be hugely optimized), which might minimize the crashes to "extremely rare" at least!

Alright! While looking over your .cs, even though I don't understand nearly all of it, some things had me going "that's... BRILLIANT!!" when comparing it to previous routines :) Great work on this, already noticing how much less I'm dying!

I will report back with any occurences of crashes or otherwise after a few hours of running =)

Edit: DB crashed while I was typing this actually, haha =) That was DB though, not D3 strangely enough. Will give it another spin with unitCurrentTarget.iThisActorACDGUID instead and see how it goes.

Edit2: Back to the drawing board for me, using the target rather than the vector completely disables avodiance and such for some reason =P
 
Last edited:
this definitely does not have as high a priority for goblin chasing as before....

never uses LEAP so far, and its bound to RIGHT mouse button....
 
this definitely does not have as high a priority for goblin chasing as before....
never uses LEAP so far, and its bound to RIGHT mouse button....

Will use leap for avoidance, for reaching far-mobs, or against elites if health is low (for +300% armor rune) - what situations have you been in where it's not using it but should?

Goblin chasing isn't as crazy high-priority as before, mainly cos I was having issues with chasing goblins so long and contantly getting stuck everywhere if it tried chasing them too far - but if you have a high enough DPS to kill them quickly you shouldn't struggle with them (monks will probably handle them just fine, barbs probably want to ignore them rather than try to chase them because of how often it can lead you to stuck areas).
 
Tested out a barb on it. Feels good able to bot using the most OP build in game ;) Needs to spam sprint out of combat though!
 
Tested out a barb on it. Feels good able to bot using the most OP build in game ;) Needs to spam sprint out of combat though!
Atm it only uses sprint if being chased/close to >3 normal "white trash" monsters, as a quick getaway to save time, rather than "always on" - I'm debating with myself (and cdmichaelb) whether to change it to ALWAYS sprint or keep those drops of fury until there's a need to sprint to evade trash :P
 
Does this plugin work with WOTB and Earthquake ? and only use them on Elite ?
 
Back
Top