Exemple #1
0
 private void Reset()
 {
     harvestableTarget = null;
     mobTarget         = null;
     gatherAttempts    = 0;
 }
Exemple #2
0
        private bool FindResource(Vector3 <float> center)
        {
            context.State = "Finding resource...";

            Reset();
            var territoryAreas = new List <Area>();
            var graph          = Graphs.LookupByDisplayName(Game.ClusterName);

            foreach (var t in graph.Territories)
            {
                var tCenter   = t.Center;
                var tSize     = t.Size;
                var tCenter3d = new Vector3f(tCenter.X, 0, tCenter.Y);
                var tBegin    = tCenter3d.Translate(0 - (tSize.X / 2), -100, 0 - (tSize.Y / 2));
                var tEnd      = tCenter3d.Translate(tSize.X / 2, 100, tSize.Y / 2);
                var tArea     = new Area(tBegin, tEnd);
                territoryAreas.Add(tArea);
            }

            if (config.AttackMobs)
            {
                var lpo = Players.LocalPlayer;
                if (lpo != null && config.IgnoreMobsOnLowHealth && lpo.HealthPercentage > config.IgnoreMobHealthPercent)
                {
                    var resourceMobs = new List <IMobObject>();
                    foreach (var ent in Entities.MobChain.ExcludeByArea(territoryAreas.ToArray()).ExcludeWithIds(blacklist.ToArray()).AsList)
                    {
                        var drops = ent.HarvestableDropChain.FilterByTypeSet(SafeTypeSet.BatchConvert(config.TypeSetsToUse)).AsList;
                        Logging.Log(drops.ToString());
                        if (drops.Count > 0)
                        {
                            resourceMobs.Add(ent);
                        }
                    }

                    if (resourceMobs.Count > 0)
                    {
                        mobTarget = Closest(center, resourceMobs);
                    }
                }
            }

            harvestableTarget = Objects
                                .HarvestableChain
                                .FilterDepleted()
                                .ExcludeWithIds(blacklist.ToArray())
                                .ExcludeByArea(territoryAreas.ToArray())
                                .FilterByTypeSet(SafeTypeSet.BatchConvert(config.TypeSetsToUse))
                                .FilterWithSetupState(HarvestableSetupState.Invalid)
                                .FilterWithSetupState(HarvestableSetupState.Owned)
                                .Closest(center);

            if (mobTarget != null && harvestableTarget != null)
            {
                var mobDist = mobTarget.ThreadSafeLocation.SimpleDistance(center);
                var resDist = harvestableTarget.ThreadSafeLocation.SimpleDistance(center);
                if (mobDist < resDist)
                {
                    harvestableTarget = null;
                }
                else
                {
                    mobTarget = null;
                }
            }

            return(harvestableTarget != null || mobTarget != null);
        }
 public ObjectHarvestable(IHarvestableObject harvestableObject)
 {
     ScreenX = Convert.ToInt32(harvestableObject.ScreenLocation.X);
     ScreenY = Convert.ToInt32(harvestableObject.ScreenLocation.Y);
     Type    = harvestableObject.Type;
 }