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

Unified GilesPlugin's Unnoficial Updates File

Status
Not open for further replies.
@ater's problem solved. to your convenience. you may just check from here and below
Code:
tmp_unit_bThisAttackable = (tempCommonData.GetAttribute<int>(ActorAttributeType.Invulnerable) <= 0);
 

Attachments

J - been super busy with real life and probably will be for the next week or 2. In any case, here is my file. I downloaded v0.42 and only included one new line for blinding flash for Inna users. Thats it.

I don't know enough of the calculations of sweeping wind and how or when it determines it's initial settings so I just left it for now. If someone better versed with the calcs sees room for improvement, they can let me know.
 

Attachments

http://www.thebuddyforum.com/demonb...ns-unnoficial-updates-file-52.html#post875922

The addition of the Ghom slider broke Trinity's initialization, which causes pretty much all of the Trinity hooks to never get called.

The fix is to patch as i describe above, or hand edit your .cfg to add an extra value on the end of the slider settings, or delete the .cfg entirely.

Thanks for that...forgot I had modified my config early on for this and didn't mention to Jub when I posted. Much appreciated!
 
sweeping winds is based off the first cast, so its actually more effective to keep sweeping winds up rather then try to build it every time,so a 4 second refresh on sweeping winds without the 20 second rune would be best and an 18 second refresh on the 20second rune (would need a tickbox also for the cooldown rune) is actually the most effective. A spam sweeping winds tickbox would probably satisfy both partys on this issue as some feel that wasting the spirit trying to keep it up might interfere with casting survivability skills with low aps ex.. skorn, whereas dual wielders like myself prefer to spam because spirit is impossible to get rid of (2.63 aps and 2.23 spirit regen per second) All of this is Imho as a 553 hour legitimately played monk

OK, I think I got it. I read this post (had no idea lol, I think I'm going to have to exploit it while I can) :)

And yes, I surprisingly had probably at least 300 hours of manual game play on my monk and still didn't know this. Ouch.
 
Last edited:
I don't think this is something everyone would like, sorry.

Magi and ksmaze: you guys make me feel like I should be paying you lol. I won't though.
Thanks anyway!

ksmaze: was this the only part of the code you changed?
Code:
// Safe is-attackable detection
                        tmp_unit_bThisAttackable = true;
                        if (tmp_unit_bThisBoss || theseaffixes.HasFlag(MonsterAffixes.Shielding))
                        {
                            try
                            {
                                DiaUnit thisunit = thisobj as DiaUnit;
                                tmp_unit_bThisAttackable = !thisunit.IsInvulnerable;
                            }
                            catch (Exception ex)
                            {
                                Logging.WriteDiagnostic("[GilesTrinity] Safely handled exception getting is-invulnerable attribute for unit " + tmp_sThisInternalName + " [" + tmp_iThisActorSNO.ToString() + "]");
                                Logging.WriteDiagnostic(ex.ToString());
                                tmp_unit_bThisAttackable = true;
                            }
                        }
                        // Inactive units like trees, withermoths etc. still underground, or in the sky 
                        // K: Use official api for this
                        if (tmp_unit_iThisHitPoints >= 1f || tmp_unit_bThisBoss)
                        {

                            // Get the burrowing data for this unit
                            bool bBurrowed;
                            if (!dictGilesBurrowedCache.TryGetValue(tmp_iThisRActorGuid, out bBurrowed) || tmp_unit_bThisBoss)
                            {
                                try
                                {
                                    DiaUnit thisunit = thisobj as DiaUnit;
                                    bBurrowed = thisunit.IsUntargetable || thisunit.IsBurrowed || thisunit.IsHidden;
                                }
I ask because your GilesTrinity.cs is wildly different from v0.42 and I'm not sure what you meant
 
Last edited:
I don't think this is something everyone would like, sorry.

Magi and ksmaze: you guys make me feel like I should be paying you lol. I won't though.
Thanks anyway!

ksmaze: was this the only part of the code you changed?
Code:
// Safe is-attackable detection
                        tmp_unit_bThisAttackable = true;
                        if (tmp_unit_bThisBoss || theseaffixes.HasFlag(MonsterAffixes.Shielding))
                        {
                            try
                            {
                                DiaUnit thisunit = thisobj as DiaUnit;
                                tmp_unit_bThisAttackable = !thisunit.IsInvulnerable;
                            }
                            catch (Exception ex)
                            {
                                Logging.WriteDiagnostic("[GilesTrinity] Safely handled exception getting is-invulnerable attribute for unit " + tmp_sThisInternalName + " [" + tmp_iThisActorSNO.ToString() + "]");
                                Logging.WriteDiagnostic(ex.ToString());
                                tmp_unit_bThisAttackable = true;
                            }
                        }
                        // Inactive units like trees, withermoths etc. still underground, or in the sky 
                        // K: Use official api for this
                        if (tmp_unit_iThisHitPoints >= 1f || tmp_unit_bThisBoss)
                        {

                            // Get the burrowing data for this unit
                            bool bBurrowed;
                            if (!dictGilesBurrowedCache.TryGetValue(tmp_iThisRActorGuid, out bBurrowed) || tmp_unit_bThisBoss)
                            {
                                try
                                {
                                    DiaUnit thisunit = thisobj as DiaUnit;
                                    bBurrowed = thisunit.IsUntargetable || thisunit.IsBurrowed || thisunit.IsHidden;
                                }
I ask because your GilesTrinity.cs is wildly different from v0.42 and I'm not sure what you meant

this is it. the change you want to make is
Code:
DiaUnit thisunit = thisobj as DiaUnit;
tmp_unit_bThisAttackable = !thisunit.IsInvulnerable;
and
Code:
DiaUnit thisunit = thisobj as DiaUnit;
bBurrowed = thisunit.IsUntargetable || thisunit.IsBurrowed || thisunit.IsHidden;


but you may also consider change the second one to this. because the original meaning of the code is only for burrowed, though I don't have much time to test if my change above will be better.
Code:
DiaUnit thisunit = thisobj as DiaUnit;
bBurrowed = thisunit.IsBurrowed;
 
you did a good job here, jubisman!
I'm always feeling guilty to make something that I even don't know whether it 100% works or not. I just changed as ater suggested. so please test it.

I will try to look for the town portal problem. hope I can find a solution here.
a temporary solution in my mind right now is: just whitelist all the monster in the range so that the bot will try to kill them or pursue them instead of ignoring them but targeting them when portaling. any one likes this idea?
 
Guys, can we actually learn how to use diff please :P
you wouldn't like to diff mine with J's 0.0
I tweaked it for my barb, and my bot setting.
It's a pain to understand other coder's code, even if you are a coder....
 
seems not working for shield and hawk in the sky... I will figure this out first.
 
Hey great work thus far but after watching my bot for a while I had a monk related question.

I've noticed that it casts blinding flash then sweeping winds, which is expected. However once SW is up and maintained it isn't using blinding flash on elites or large packs even. It seems to be saving the next use of blinding flash in case it needs to reapply SW. Any way for it to decide if SW is already up to be able to use blinding flash at will, or if SW is down to do its combo with BF+SW?

I'm asking because I'm at enough DPS that I don't really need to save BF for defensive uses or otherwise, but for the purpose of speed would like to just cast it every time it encounters an elite(one because on low MP I just 1shot things so when it sees an elite: pop it 1 shot go to next kill it etc, if it's waiting for all 3 to be within 15 yards they're dead by then), or a group of mobs.
 
yes I concur, it isn't used as often as it should be. I'll see if I can trigger it more frequently, especially for elites. Right now I know it fires defensively if your health is low or there are a ton of monsters around (when not waiting for SW).
 
Code:
if (!dictGilesBurrowedCache.TryGetValue(tmp_iThisRActorGuid, out bBurrowed) || tmp_unit_bThisBoss)
                            {
                                try
                                {
                                    DiaUnit thisunit = thisobj as DiaUnit;
                                    bBurrowed = !thisunit.IsAttackable;
                                }
This should be right for the untargetable problem, but I don't know whether this will have side effect.
 
Code:
if (!dictGilesBurrowedCache.TryGetValue(tmp_iThisRActorGuid, out bBurrowed) || tmp_unit_bThisBoss)
                            {
                                try
                                {
                                    DiaUnit thisunit = thisobj as DiaUnit;
                                    bBurrowed = !thisunit.IsAttackable;
                                }
This should be right for the untargetable problem, but I don't know whether this will have side effect.
 
J - request for 3 small changes to Trinity. I would like to convert one private function and two private variables to public so I may access them from plugins. Trying to force refresh the trinity monster/object list after particular events (warden/uber kills).

Change this:
Code:
// Grab the list of world objects
private static void RefreshDiaObjects()

to:

Code:
// Grab the list of world objects
public static void RefreshDiaObjects()

AND

change this:
Code:
// Used to force-refresh dia objects at least once every XX milliseconds 
private static DateTime lastRefreshedObjects = DateTime.Today;

to this:
Code:
// Used to force-refresh dia objects at least once every XX milliseconds 
public static DateTime lastRefreshedObjects = DateTime.Today;

and lastly

change this:
Code:
// Whether to try forcing a vendor-run for custom reasons
public static bool bGilesForcedVendoring = false;
private static bool bWantToTownRun = false;

to this:
Code:
// Whether to try forcing a vendor-run for custom reasons
public static bool bGilesForcedVendoring = false;
public static bool bWantToTownRun = false;

shouldn't have any implications for anyone, just open these up to outside calls.
 
Did the loot interpreter get a big change? Ive been running it for 7 hours today and it only saved 3 of 800+ rares.. and those three sucked?
 
Fix 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.
 
Anyone wants to investigate a case, that when using this wonderful plugin + custom loot file (xxx.xml), outcome is, that various Plan:*/Design:* items are not picked up anymore? Except that, everything works flawlessly. :)
 
My friend was usint UnityTrinity and said it sometimes do not pickup example legendary or i63 rare. He had only this plug and atom 2. Any1 having this issue? Could u check giles stats legend dropped/picked up?
I tested for 2h and it didnt picked up two i62 items [like 20 dropped / 18 picked up] (but maybe its generally small Trinity bug?).

Could loot radios increase in profiles fix it?


Ive 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!
 
Status
Not open for further replies.
Back
Top