Can we implement something like 'Extend kill radius on teleport' so we can get rid of the surrounding mobs?
// Safety for Giles own portal-back-to-town for full-backpack
else if (bGilesForcedVendoring)
{
if (dUseKillRadius <= 60) dUseKillRadius = 60; //intell
}
// Now ignore any unit not within our kill or extended kill radius
if (tmp_fCentreDistance > dUseKillRadius)
{
continue;
}
This already exists in trinity:
Code:// Safety for Giles own portal-back-to-town for full-backpack else if (bGilesForcedVendoring) { if (dUseKillRadius <= 60) dUseKillRadius = 60; //intell } // Now ignore any unit not within our kill or extended kill radius if (tmp_fCentreDistance > dUseKillRadius) { continue; }
The problem is if you extend it more, you may end up clearing the entire map before you can actually tp. Trying to find the right "radius" varies from map to map. The default 60 is a fairly large radius and works MOST of the time. Not all of the time mind you...Fester Woods can cause long stucks with those bat spewing blob things.
If someone else can confirm this is a good thing to do, I'll do itFix for wave of light not being used if monk doesn't have mantra of conviction, this currently affects any monks levelling when conviction isn't available, or playing without mantra of conviction:
Code:// Wave of light if (!bOOCBuff && !bCurrentlyAvoiding && !playerStatus.bIsIncapacitated && (iElitesWithinRange[RANGE_25] > 0 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 14f) || iAnythingWithinRange[RANGE_15] > 2) && hashPowerHotbarAbilities.Contains(SNOPower.Monk_WaveOfLight) && GilesUseTimer(SNOPower.Monk_WaveOfLight) && (playerStatus.dCurrentEnergy >= 90 || playerStatus.dCurrentEnergyPct >= 0.85) && GilesHasBuff(SNOPower.Monk_MantraOfConviction)) { return new GilesPower(SNOPower.Monk_WaveOfLight, 16f, vNullLocation, -1, targetCurrent.iThisACDGUID, 1, 1, USE_SLOWLY); }
Code:// Wave of light if (!bOOCBuff && !bCurrentlyAvoiding && !playerStatus.bIsIncapacitated && (iElitesWithinRange[RANGE_25] > 0 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 14f) || iAnythingWithinRange[RANGE_15] > 2) && hashPowerHotbarAbilities.Contains(SNOPower.Monk_WaveOfLight) && GilesUseTimer(SNOPower.Monk_WaveOfLight) && (playerStatus.dCurrentEnergy >= 90 || playerStatus.dCurrentEnergyPct >= 0.85) && (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) && GilesHasBuff(SNOPower.Monk_MantraOfConviction)))) { return new GilesPower(SNOPower.Monk_WaveOfLight, 16f, vNullLocation, -1, targetCurrent.iThisACDGUID, 1, 1, USE_SLOWLY); }
This did used to work in Giles original, so whoever added this check broke it, I think a bit more code auditing is required before additions are made to this.
Do you guys have backtracking enabled? I hear it can cause this kind of problemIve had this issue aswell when monitoring my bot, sometimes he doesnt pickup rares or legendaries that he should pickup. So I have to pause him and run back and pick it up. I had a hunch that it could have something to do with backtracking. But yea its not often he miss items he should pick up ,but it still happens!
// Sweeping wind
if ((!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && !GilesHasBuff(SNOPower.Monk_SweepingWind) &&
(iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_20] >= 2 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 25f)) &&
// Check if either we don't have blinding flash, or we do and it's been cast in the last 6000ms
//(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_BlindingFlash]).TotalMilliseconds <= 6000)) &&
// Check our mantras, if we have them, are up first
(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) && GilesHasBuff(SNOPower.Monk_MantraOfEvasion))) &&
(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) && GilesHasBuff(SNOPower.Monk_MantraOfConviction))) &&
(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) && GilesHasBuff(SNOPower.Monk_MantraOfRetribution))) &&
// Check the re-use timer and energy costs
(playerStatus.dCurrentEnergy >= 75 || (settings.bMonkInnaSet && playerStatus.dCurrentEnergy >= 5)) && GilesUseTimer(SNOPower.Monk_SweepingWind)) ||
// OR, if we have Inna's and Wind is up, we just spam it to keep it up
(settings.bMonkInnaSet && GilesHasBuff(SNOPower.Monk_SweepingWind) && GilesUseTimer(SNOPower.Monk_SweepingWind) && playerStatus.dCurrentEnergy >= 6))
{
return new GilesPower(SNOPower.Monk_SweepingWind, 0f, vNullLocation, iCurrentWorldID, -1, 2, 2, USE_SLOWLY);
}
if (!bOOCBuff && playerStatus.dCurrentEnergy >= 15 && hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) &&
(iElitesWithinRange[RANGE_6] > 0 || iAnythingWithinRange[RANGE_6] >= 6 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 15f)) &&
// Check if sweeping wind is on and at least 1.5 sec active
(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && GilesHasBuff(SNOPower.Monk_SweepingWind) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_SweepingWind]).TotalMilliseconds >= 1500)) &&
GilesUseTimer(SNOPower.Monk_BlindingFlash) && PowerManager.CanCast(SNOPower.Monk_BlindingFlash))
{
return new GilesPower(SNOPower.Monk_BlindingFlash, 11f, vNullLocation, iCurrentWorldID, -1, 1, 2, USE_SLOWLY);
}
Have you tested this? Is it working? Because if this works you, sir, deserve a sincere wave of thankfulnessMonk Fix Blinding Flash & Sweeping Winds:
- Only cast Blinding Flash if Sweeping Wind is on and lattest cast 1.5 secs ago (to ensure 1 or more stacks are on) and elite or boss or 7+ mobs in range
- Removed blinding flash check of sweeping wind call (unnecessary), we want sweeping wind to be cast before blinding flash for max dps!!!
Code:// Sweeping wind if ((!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && !GilesHasBuff(SNOPower.Monk_SweepingWind) && (iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_20] >= 2 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 25f)) && // Check if either we don't have blinding flash, or we do and it's been cast in the last 6000ms //(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_BlindingFlash]).TotalMilliseconds <= 6000)) && // Check our mantras, if we have them, are up first (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) && GilesHasBuff(SNOPower.Monk_MantraOfEvasion))) && (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) && GilesHasBuff(SNOPower.Monk_MantraOfConviction))) && (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) && GilesHasBuff(SNOPower.Monk_MantraOfRetribution))) && // Check the re-use timer and energy costs (playerStatus.dCurrentEnergy >= 75 || (settings.bMonkInnaSet && playerStatus.dCurrentEnergy >= 5)) && GilesUseTimer(SNOPower.Monk_SweepingWind)) || // OR, if we have Inna's and Wind is up, we just spam it to keep it up (settings.bMonkInnaSet && GilesHasBuff(SNOPower.Monk_SweepingWind) && GilesUseTimer(SNOPower.Monk_SweepingWind) && playerStatus.dCurrentEnergy >= 6)) { return new GilesPower(SNOPower.Monk_SweepingWind, 0f, vNullLocation, iCurrentWorldID, -1, 2, 2, USE_SLOWLY); }
Code:// Blinding Flash if (!bOOCBuff && playerStatus.dCurrentEnergy >= 15 && hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && (iElitesWithinRange[RANGE_15] > 0 || iAnythingWithinRange[RANGE_15] >= 6 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 15f)) && // Check if sweeping wind is on and at least 1.5 sec active (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && GilesHasBuff(SNOPower.Monk_SweepingWind) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_SweepingWind]).TotalMilliseconds >= 1500)) && GilesUseTimer(SNOPower.Monk_BlindingFlash) && PowerManager.CanCast(SNOPower.Monk_BlindingFlash)) { return new GilesPower(SNOPower.Monk_BlindingFlash, 11f, vNullLocation, iCurrentWorldID, -1, 1, 2, USE_SLOWLY); }
Have you tested this? Is it working? Because if this works you, sir, deserve a sincere wave of thankfulness
I am using it =)
I didn't include an additional dps boost with a mantra of conviction check, because lot of builds are using the other armor mantra...
Maybe implement a check if you receive damage while each tp casting, increase radius by 10 dynamically each time? Or is that too complex?
I think you guys understood it all wrong..
Monks are supposed to cast blinding flash BEFORE sweeping wind, because it's been said a lot of times that when you activate sweeping wind, it takes a "snapshot" of your current damage, so the higher when you cast it the better.
You can look for it, there are many sources saying it..
Shouldn't be an issue, just a pain in the arse modifying all of Giles loop statements. Just a mess and so easy to miss one (there are more than a dozen areas to tweak).
Sure. Will be on v0.44Jubisman,
Can we get this added to the files
GizmoType: DestructibleLootContainer Name: Pinata-5020 ActorSNO: 211861
Its needed so pinatas get hit on whimsyshire profile now that I have published a working one.