fBaseXtensions.Game.Hero.ActiveHero.Update C# (CSharp) Method

Update() public method

public Update ( bool combat = false, bool force = false ) : void
combat bool
force bool
return void
        public void Update(bool combat = false, bool force = false)
        {
            double lastUpdate = DateTime.Now.Subtract(lastUpdatedPlayer).TotalMilliseconds;
            //Update only every 100ms, unless in combat than 25ms..
            if (!force &&
                  (combat && lastUpdate < 50 || lastUpdate < 150)) return;

            using (ZetaDia.Memory.AcquireFrame())
            {
                try
                {
                    // If we aren't in the game of a world is loading, don't do anything yet
                    if (!ZetaDia.IsInGame || !ZetaDia.Me.IsValid || ZetaDia.IsLoadingWorld) return;

                    var me = ZetaDia.Me;
                    if (me == null) return;

                    //update actorSNO
                    if (ActorSno == -1)
                    {
                        ActorSno = me.ActorSNO;
                    }

                    if (FunkyGame.CurrentActorClass == ActorClass.DemonHunter)
                    {
                        dDiscipline = me.CurrentSecondaryResource;
                        if (dDiscipline > MaxDiscipline) MaxDiscipline = dDiscipline;
                        dDisciplinePct = dDiscipline / MaxDiscipline;
                    }

                    double curhealthpct = me.HitpointsCurrentPct;
                    if (!dcurrentHealthPct.Equals(curhealthpct))
                        healthvalueChanged(dcurrentHealthPct, curhealthpct);

                    dCurrentEnergy = me.CurrentPrimaryResource;
                    if (dCurrentEnergy > MaxEnergy) MaxEnergy = dCurrentEnergy;
                    dCurrentEnergyPct = dCurrentEnergy / MaxEnergy;

                    bIsInBossEncounter = me.IsInBossEncounter;
                    bIsInTown = ZetaDia.IsInTown;
                    bIsRooted = me.IsRooted || Hotbar.HasDebuff(SNOPower.MonsterAffix_JailerCast);

                    var frozen = me.IsFrozen || Hotbar.HasDebuff(SNOPower.CritDebuffCold);
                    var feared = me.IsFeared || Hotbar.HasDebuff(SNOPower.DebuffFeared);

                    if (feared || me.IsStunned || frozen || me.IsBlind)
                        bIsIncapacitated = true;
                    else
                    {
                        var bIsInKnockBack = (me.CommonData.GetAttribute<int>(ActorAttributeType.InKnockback) != 0);
                        bIsIncapacitated = bIsInKnockBack; //|| FunkyGame.Hero.Class.KnockbackLandAnims.Contains(CurrentSNOAnim);
                    }

                    int currentLevelAreaID = ZetaDia.CurrentLevelAreaId;
                    int currentWorldID = ZetaDia.CurrentWorldId;
                    bool inRift = TheCache.riftWorldIds.Contains(currentWorldID);

                    if (iCurrentLevelID != currentLevelAreaID || (inRift && currentWorldID != CurrentWorldID))
                    {
                        CurrentWorldDynamicID = ZetaDia.CurrentWorldDynamicId;
                        CurrentWorldID = ZetaDia.CurrentWorldId;
                        levelareaIDchanged(currentLevelAreaID);
                    }

                    if (FunkyGame.CurrentHeroLevel == 70)
                        CurrentExp = me.ParagonCurrentExperience;
                    else
                        CurrentExp = me.CurrentExperience;

                    //Set Character Radius?
                    if (fCharacterRadius == 0f)
                    {
                        fCharacterRadius = me.ActorInfo.Sphere.Radius;

                        //Wizards are short -- causing issues (At least Male Wizard is!)
                        //if (Bot.Game.ActorClass == ActorClass.Wizard) this.fCharacterRadius += 1f;
                    }

                    //Update vars that are not essential to combat (survival).
                    if (DateTime.Now.Subtract(lastUpdateNonEssentialData).TotalSeconds > 30)
                    {
                        lastUpdateNonEssentialData = DateTime.Now;

                        //update level if not 60 else update paragonlevel
                        if (iMyLevel < 70) iMyLevel = me.Level;

                        iMyDynamicID = me.CommonData.DynamicId;
                        FreeBackpackSlots = me.Inventory.NumFreeBackpackSlots;
                        PickupRadius = me.GoldPickupRadius;
                        Coinage = ZetaDia.CPlayer.Coinage;
                    }

                    if (UpdateCoinage)
                        Coinage = ZetaDia.CPlayer.Coinage;

                    //Check current scence every 1.5 seconds
                    if (!bIsInTown && DateTime.Now.Subtract(lastCheckedSceneID).TotalSeconds > 1.50)
                    {
                        //Get the current guid, compare/update.
                        int CurrentSceneID = me.CurrentScene.SceneGuid;
                        if (CurrentSceneID != iSceneID)
                        {
                            iSceneID = CurrentSceneID;
                            SceneName = me.CurrentScene.Name;
                        }
                        lastCheckedSceneID = DateTime.Now;
                    }
                }
                catch (Exception)
                {

                }
            }
            lastUpdatedPlayer = DateTime.Now;
        }