Exemple #1
0
        private void FetchDangerRegions(object source = null, ElapsedEventArgs e = null)
        {
            lock (m_FetchDangerRegionsLock)
            {
                if (IsUpdating && DangerRegionsEnabled)
                {
                    try
                    {
                        IEnumerable <ActorCommonData> objects = ActorCommonDataHelper.Enumerate(x => (x.x184_ActorType == ActorType.ServerProp || x.x184_ActorType == ActorType.Monster || x.x184_ActorType == ActorType.Projectile || x.x184_ActorType == ActorType.CustomBrain) && DANGERS.Exists(d => x.x004_Name.Contains(d.name)));

                        HashSet <region_data> dangers = new HashSet <region_data>();

                        foreach (ActorCommonData obj in objects)
                        {
                            danger_data data = DANGERS.Find(d => obj.x004_Name.Contains(d.name));
                            if (data != null)
                            {
                                Vec3 pos  = new Vec3(obj.x0D0_WorldPosX, obj.x0D4_WorldPosY, obj.x0D8_WorldPosZ);
                                AABB area = new AABB(pos - new Vec3(data.range, data.range, pos.Z - 100), pos + new Vec3(data.range, data.range, pos.Z + 100));
                                dangers.Add(new region_data(area, data.move_cost_mult));
                            }
                        }

                        Regions = dangers;
                    }
                    catch (Exception)
                    {
                    }
                }

                m_FetchDangerRegionsTimer.Start();
            }
        }
Exemple #2
0
        //private static readonly List<danger_data> DANGERS = new List<danger_data>() { new danger_data("sporeCloud_emitter", 15, 3),
        //                                                                              new danger_data("ChargedBolt_Projectile", 7, 3),
        //                                                                              new danger_data("monsterAffix_Desecrator_damage_AOE", 10, 3),
        //                                                                              new danger_data("monsterAffix_Plagued", 15, 3),
        //                                                                              new danger_data("monsterAffix_Molten_trail", 7, 3),
        //                                                                              new danger_data("monsterAffix_Molten_death", 20, 3),
        //                                                                              new danger_data("arcaneEnchantedDummy_spawn", 35, 3),
        //                                                                              new danger_data("MonsterAffix_ArcaneEnchanted_PetSweep", 35, 3),
        //                                                                              new danger_data("monsterAffix_frozen_iceClusters", 20, 3),
        //                                                                              new danger_data("MonsterAffix_Orbiter", 7, 3),
        //                                                                              new danger_data("MonsterAffix_frozenPulse", 15, 3),
        //                                                                              new danger_data("MonsterAffix_CorpseBomber", 15, 3),
        //                                                                              new danger_data("MorluSpellcaster_Meteor_Pending", 25, 3),
        //                                                                              new danger_data("_Generic_AOE_", 25, 3),
        //                                                                              new danger_data("ZoltunKulle_EnergyTwister", 20, 3),
        //                                                                              new danger_data("Gluttony_gasCloud", 25, 3),
        //                                                                              new danger_data("UberMaghda_Punish_", 20, 3),
        //                                                                              new danger_data("Random_FallingRocks", 40, 3),
        //                                                                              new danger_data("ringofFire_damageArea", 35, 3),
        //                                                                              new danger_data("BoneCage_Proxy", 20, 3),
        //                                                                              new danger_data("Brute_leap_telegraph", 20, 3),
        //                                                                              new danger_data("creepMobArm", 20, 3),
        //                                                                              new danger_data("Morlu_GroundBomb", 40, 3),
        //                                                                              new danger_data("grenadier_proj_trail", 40, 3),
        //                                                                              new danger_data("orbOfAnnihilation", 40, 3),
        //                                                                              //new danger_data("westmarchRanged_projectile", 15, 1.5f),
        //                                                                              new danger_data("Corpulent_A", 25, 3) };

        private void FetchDangerRegions(object source = null, ElapsedEventArgs e = null)
        {
            if (DangerRegionsEnabled && IsPlayerReady())
            {
                try
                {
                    HashSet <region_data> dangers = new HashSet <region_data>();

                    IEnumerable <ACD> objects = m_MemoryContext.DataSegment.ObjectManager.ACDManager.ActorCommonData.Where(x => (x.ActorType == ActorType.ServerProp || x.ActorType == ActorType.Monster || x.ActorType == ActorType.Projectile || x.ActorType == ActorType.CustomBrain) && DANGERS.ContainsKey(x.ActorSNO));

                    foreach (ACD obj in objects)
                    {
                        danger_data data = DANGERS[obj.ActorSNO];
                        if (data != null)
                        {
                            Vec3 pos  = new Vec3(obj.Position.X, obj.Position.Y, obj.Position.Z);
                            AABB area = new AABB(pos - new Vec3(data.range, data.range, pos.Z - 100), pos + new Vec3(data.range, data.range, pos.Z + 100));
                            dangers.Add(new region_data(area, data.move_cost_mult));
                        }
                    }

                    //IEnumerable<ACD> objects = m_MemoryContext.DataSegment.ObjectManager.ACDManager.ActorCommonData.Where(x => x.ActorType == ActorType.Monster && x.TeamID == 10 && x.Hitpoints > 0);

                    //foreach (ACD obj in objects)
                    //{
                    //    float radius = obj.Radius;
                    //    Vec3 pos = new Vec3(obj.Position.X, obj.Position.Y, obj.Position.Z);
                    //    AABB area = new AABB(pos - new Vec3(radius, radius, pos.Z - 100), pos + new Vec3(radius, radius, pos.Z + 100));
                    //    dangers.Add(new region_data(area, 1.5f));
                    //}

                    Regions = dangers;
                }
                catch (Exception)
                {
                }
            }
        }