public static bool CanUseRend
{
get
{
bool hasReserveEnergy = (!IsWaitingForSpecial && Player.PrimaryResource >= 25) || (IsWaitingForSpecial && Player.PrimaryResource > MinEnergyReserve);
return
!UseOOCBuff &&
!Player.IsIncapacitated &&
hasReserveEnergy &&
CanCast(SNOPower.Barbarian_Rend) &&
(TimeSincePowerUse(SNOPower.Barbarian_Rend) >= RendTime || SpellHistory.GetSpellLastMyPosition(SNOPower.Barbarian_Rend).Distance2D(Player.Position) >= RendRadius) &&
(Trinity.ObjectCache.Count(o => o.IsUnit && !o.HasDotDPS && o.RadiusDistance <= RendRadius) >= RendMinCount || TargetUtil.AnyMobsInRange(RendRadius, RendMinCount + 5, false));
}
}
private static int RendMinCount
{
get
{
if (Sets.WrathOfTheWastes.IsFirstBonusActive)
return 5;
return 3;
}
}
private static float RendRadius
{
get
{
if (Runes.Barbarian.Ravage.IsActive)
return 18f -1;
if (Runes.Barbarian.Bloodbath.IsActive)
return 10f - 1;
return 12f - 1;
}
}
private static int RendTime
{
get
{
if (Sets.WrathOfTheWastes.IsFirstBonusActive)
return 14500;
return 4500;
}
}
/// <summary>
/// search for hydra point, support Zei's of stone
/// </summary>
/// <returns></returns>
internal static Vector3 GetBestHydraPoint()
{
var list = ListUnitsInRangeOfPosition(Player.Position, 65f);
if (list == null)
{
if (Trinity.CurrentTarget != null && Trinity.CurrentTarget.IsUnit)
return Trinity.CurrentTarget.Position;
return Vector3.Zero;
}
Vector3 cluster = GetBestClusterPoint(CombatBase.IsZeisOfStoneEquipped ? 45f : 25f);
if (!CombatBase.IsZeisOfStoneEquipped || !MainGrid.Map.Any())
return cluster;
var nodes = (
from n in MainGrid.Map
where
n.Position.Distance2D(cluster) <= 45f
select n).ToList();
if (nodes.Any())
{
foreach (var node in nodes)
{
foreach (var u in list)
{
float distance = node.Position.Distance2D(u.Position);
if (distance <= 25f)
{
node.SpecialWeight += distance * u.Weight;
}
}
}
nodes = (
from n in nodes
orderby
n.SpecialWeight descending
select n).ToList();
var bestNode = nodes.FirstOrDefault();
if (bestNode.SpecialWeight > 0)
return bestNode.Position;
}
return cluster;
}
var pos = TargetUtil.GetBestHydraPoint();
return new TrinityPower(SNOPower.Wizard_Hydra, 55f, pos);
coolThank you BuddyMe will test immediatly!
Any news regarding the Dynamo Change? It works with 5 stacks but then it only puts down one I guess because TimeSpan / TimeUsed
edit: damn dude, awesome work, hydra placement is way way way better!
Now for a perfect melee wiz we only need the dynamo fix and you will see some bot players in the ladderboard!!!
my DH running in middle before wave 4-5, after it kite at up-right, i add an unsafe zone to the middle ?He is not using Vengeance in trials, even tho i have it unmarked.
and always running in to the middle after etch wave.... Not got for DH / Range
Any chance to fix both of these ? ( change it to the position where he starts, thats fine. )
Add this line 64-70it needs to put down the first hydra at 5 stacks and the 2nd again at 5 stacks again
// Second hydra
if (CanCast(SNOPower.Wizard_Hydra, CanCastFlags.NoTimer) &&
Legendary.SerpentsSparker.IsEquipped && LastPowerUsed == SNOPower.Wizard_Hydra &&
SpellHistory.SpellUseCountInTime(SNOPower.Wizard_Hydra, TimeSpan.FromSeconds(2)) < 2)
{
return new TrinityPower(SNOPower.Wizard_Hydra, 55f, TargetUtil.GetBestHydraPoint());
}
coolwhen the second need to cast how much dynamo has stack ?
edit:
my DH running in middle before wave 4-5, after it kite at up-right, i add an unsafe zone to the middle ?
are you using the settings attach in first page ?
I take a look to the vengeance cast![]()
it kite grotesque at 0.95 pct health, i currently whrite an UI to set all of thatyeah fresh install on beta with your Trinity settings. Not using Vengeance (Seethe rune) in GR ether.
But awesome kite logic, He moves sometimes into melee range tho.. can't complain he finished gr40 in 3.5 min.
Dying alot cause of Grotesque , completely ignoring them.
// Vengeance
if (CanCast(SNOPower.X1_DemonHunter_Vengeance, CanCastFlags.NoTimer) &&
((!Settings.Combat.DemonHunter.VengeanceElitesOnly && TargetUtil.AnyMobsInRange(DHSettings.RangedAttackRange + 5f, 5)) || TargetUtil.AnyElitesInRange(DHSettings.RangedAttackRange + 5f)))
{
if (Runes.DemonHunter.Seethe.IsActive && Player.PrimaryResourcePct < 0.3 && !CanCast(SNOPower.DemonHunter_Preparation, CanCastFlags.NoTimer) && !CanCast(SNOPower.X1_DemonHunter_Companion, CanCastFlags.NoTimer))
return new TrinityPower(SNOPower.X1_DemonHunter_Vengeance);
else if (!Runes.DemonHunter.Seethe.IsActive)
return new TrinityPower(SNOPower.X1_DemonHunter_Vengeance);
}
Add this line 64-70
HTML:// Second hydra if (CanCast(SNOPower.Wizard_Hydra, CanCastFlags.NoTimer) && Legendary.SerpentsSparker.IsEquipped && LastPowerUsed == SNOPower.Wizard_Hydra && SpellHistory.SpellUseCountInTime(SNOPower.Wizard_Hydra, TimeSpan.FromSeconds(2)) < 2) { return new TrinityPower(SNOPower.Wizard_Hydra, 55f, TargetUtil.GetBestHydraPoint()); }
Removed my last ask from 63-71 andHe puts down the 1st Hydra at 5 stacks but puts down the 2nd one right after and doesn't wait for 5 new stacks, almost therejust need to get it to wait for new 5 stacks till 2nd hydra!
edit: sometimes it looks like its working but then he gets 5 stacks and puts down 2 hydras at once
// Second hydra
if (CanCast(SNOPower.Wizard_Hydra, CanCastFlags.NoTimer) &&
(!Passives.Wizard.ArcaneDynamo.IsActive || Passives.Wizard.ArcaneDynamo.BuffStacks >= 5) &&
Legendary.SerpentsSparker.IsEquipped && LastPowerUsed == SNOPower.Wizard_Hydra &&
SpellHistory.SpellUseCountInTime(SNOPower.Wizard_Hydra, TimeSpan.FromSeconds(2)) < 2)
{
return new TrinityPower(SNOPower.Wizard_Hydra, 55f, TargetUtil.GetBestHydraPoint());
}
ok thanksthanks, yeah ill try that out and report back.
Removed my last ask from 63-71 and
add this line 108-115
should work !Code:// Second hydra if (CanCast(SNOPower.Wizard_Hydra, CanCastFlags.NoTimer) && (!Passives.Wizard.ArcaneDynamo.IsActive || Passives.Wizard.ArcaneDynamo.BuffStacks >= 5) && Legendary.SerpentsSparker.IsEquipped && LastPowerUsed == SNOPower.Wizard_Hydra && SpellHistory.SpellUseCountInTime(SNOPower.Wizard_Hydra, TimeSpan.FromSeconds(2)) < 2) { return new TrinityPower(SNOPower.Wizard_Hydra, 55f, TargetUtil.GetBestHydraPoint()); }
ok thanks![]()
yeah, Multishot ftw with the new set is op. 41 in 4 min and 29sec now and he dint use the vengeance.
ps. I noticed he stops for some wired reason and when i push him to mob close by he will start attacking again.
happend 4x now in 2x rifts.
aha cool !BuddyMe you are amazingbefore my wiz was barely able to clear greater rift 39, it just finished 43 with the two changes we did! <3 <3
edit: would it be possible to to put a higher weight? at hydra?
reason: bot would have enough ressource to put down 2nd hydra but does blizzard and afterwards can't cast 2nd hydra
some kind of check like
if hydra count = 1 , cast hydra
if hydra count = 2, cast blizzard (or chosen ressource spender)
is that possible? ^^
or just lower ressource requirement for hydra so it will cast it with 5 stacks if available and blizzard (or other spender) as a filler! because he will only cast hydra with 5 stacks
it should use it when:
- primary resource < 30%
- can't cast preparation
- can't cast companion
and
- EliteOnly checked && Elite
OR EliteOnly unchecked && 5 mobs in range
this logic seems ok, i dunno why it not use him
are you shure you have "Use on elite only" unchecked ?
aha cool !
I think yes, will see
it should use it when:
- primary resource < 30%
- can't cast preparation
- can't cast companion
and
- EliteOnly checked && Elite
OR EliteOnly unchecked && 5 mobs in range