Exemple #1
0
 public static int GetTier(this HarvestableObjectView instance)
 {
     return(instance.HarvestableObject.sk());
 }
Exemple #2
0
 public static string GetResourceType(this HarvestableObjectView instance)
 {
     return(instance.HarvestableObject.st().u);
 }
Exemple #3
0
 public static int GetCurrentCharges(this HarvestableObjectView instance)
 {
     return((int)instance.HarvestableObject.sn());
 }
Exemple #4
0
 public static long GetMaxCharges(this HarvestableObjectView instance)
 {
     return(instance.HarvestableObject.sj());
 }
 public static HarvestableObject GetHarvestableObject(this HarvestableObjectView view) => view.HarvestableObject;
 public static bool CanLoot(this HarvestableObjectView view, LocalPlayerCharacterView localPlayer) => view.GetHarvestableObject().CanLoot(localPlayer);
Exemple #7
0
        public void HarvestHarvestableObjec(HarvestableObjectView resource)
        {
            Vector3 targetCenter = _currentTarget.transform.position;
            Vector3 playerCenter = _localPlayerCharacterView.transform.position;

            //Skip if target is inside a kepper pack
            if (_skipKeeperPacks && (ContainKeepers(_currentTarget.transform.position)))
            {
                Core.Log("[Blacklisted - Inside Kepper Pack Range]");
                Blacklist(resource, TimeSpan.FromMinutes(5));
                _state.Fire(Trigger.DepletedResource);
                return;
            }

            if (HandlePathing(ref _harvestPathingRequest))
            {
                return;
            }

            var centerDistance = (targetCenter - playerCenter).magnitude;
            var minDistance    = _currentTarget.GetColliderExtents() + _localPlayerCharacterView.GetColliderExtents() + 1.5f;

            if (centerDistance >= minDistance)
            {
                if (_localPlayerCharacterView.TryFindPath(new ClusterPathfinder(), targetCenter, IsBlockedGathering, out List <Vector3> pathing))
                {
                    Core.Log("Path found, begin travel to resource");
                    Core.lineRenderer.positionCount = pathing.Count;
                    Core.lineRenderer.SetPositions(pathing.ToArray());
                    _harvestPathingRequest = new ClusterPathingRequest(_localPlayerCharacterView, _currentTarget, pathing);
                }
                else
                {
                    Core.Log("Path not found");
                    _state.Fire(Trigger.DepletedResource);
                }
                return;
            }

            if (_localPlayerCharacterView.IsHarvesting())
            {
                Core.LogOnce("Currently harvesting. Wait until done.");
                return;
            }

            if (resource.GetHarvestableObject().GetCharges() <= 0)
            {
                Core.Log("resource depleted. Move on");
                _state.Fire(Trigger.DepletedResource);
                return;
            }

            Core.Log("[Harvesting] - Interact with resource");
            _localPlayerCharacterView.Interact(resource);

            var harvestableObject2 = resource.GetHarvestableObject();

            var resourceType     = harvestableObject2.GetResourceType().Value;
            var tier             = (Albion_Direct.Tier)harvestableObject2.GetTier();
            var enchantmentLevel = (Albion_Direct.EnchantmentLevel)harvestableObject2.GetRareState();

            var info = new GatherInformation(resourceType, tier, enchantmentLevel)
            {
                HarvestDate = DateTime.UtcNow
            };

            var position = resource.transform.position.c();

            if (_gatheredSpots.ContainsKey(position))
            {
                _gatheredSpots[position] = info;
            }
            else
            {
                _gatheredSpots.Add(position, info);
            }
        }
 public static bool RequiresTool(this HarvestableObjectView view) => view.GetHarvestableObject().RequiresTool();
 public static bool RequiresTool(this HarvestableObjectView instance)
 {
     return(instance.HarvestableObject.sd().ak());
 }
 public static arp GetTool(this HarvestableObjectView instance, LocalPlayerCharacterView player)
 {
     return(instance.HarvestableObject.az(player.LocalPlayerCharacter, true));
 }
 public static bool IsLootProtected(this HarvestableObjectView instance)
 {
     return(!instance.HarvestableObject.sq());
 }
 public static int GetRareState(this HarvestableObjectView instance)
 {
     return(instance.HarvestableObject.sm());
 }
Exemple #13
0
        public void HarvestHarvestableObjec(HarvestableObjectView resource)
        {
            Vector3 targetCenter = _currentTarget.transform.position;
            Vector3 playerCenter = _localPlayerCharacterView.transform.position;

            //Skip if target is inside a kepper pack
            if (_skipKeeperPacks && (ContainKeepers(_currentTarget.transform.position)))
            {
                Core.Log("[Skipped - Inside Kepper Pack Range]");
                Blacklist(resource, TimeSpan.FromHours(24));
                _state.Fire(Trigger.DepletedResource);
                return;
            }

            if (HandlePathing(ref _harvestPathingRequest))
            {
                return;
            }

            var centerDistance = (targetCenter - playerCenter).magnitude;
            var minDistance    = _currentTarget.GetColliderExtents() + _localPlayerCharacterView.GetColliderExtents() + 1.5f;

            if (centerDistance >= minDistance)
            {
                if (_localPlayerCharacterView.TryFindPath(new ClusterPathfinder(), targetCenter, IsBlockedGathering, out List <Vector3> pathing))
                {
                    Core.lineRenderer.positionCount = pathing.Count;
                    Core.lineRenderer.SetPositions(pathing.ToArray());
                    _harvestPathingRequest = new ClusterPathingRequest(_localPlayerCharacterView, _currentTarget, pathing);
                }
                else
                {
                    if (DateTime.Now > notMovingTimer)
                    {
                        isMovingUpdate();
                    }
                    else
                    {
                        Core.Log("Harvest not moving check 1. Going to random location");
                        _localPlayerCharacterView.RequestMove(playerCenter + new Vector3(UnityEngine.Random.Range(-100f, 100f), 0, UnityEngine.Random.Range(-100f, 100f)));
                    }

                    if (!IsMoving)
                    {
                        notMovingTimer = DateTime.Now + TimeSpan.FromSeconds(2);
                    }


                    Core.Log("Path not found");
                    _state.Fire(Trigger.DepletedResource);
                }
                return;
            }

            if (_localPlayerCharacterView.IsHarvesting())
            {
                return;
            }

            if (resource.GetHarvestableObject().GetCharges() <= 0)
            {
                _state.Fire(Trigger.DepletedResource);
                return;
            }
            Core.Log("[Harvesting]");

            _localPlayerCharacterView.Interact(resource);

            if (DateTime.Now > notMovingTimer)
            {
                isMovingUpdate();
            }
            else
            {
                Core.Log("Harvest not moving check 2. Going to random location");
                _localPlayerCharacterView.RequestMove(playerCenter + new Vector3(UnityEngine.Random.Range(-100f, 100f), 0, UnityEngine.Random.Range(-100f, 100f)));
            }

            if (!IsMoving)
            {
                notMovingTimer = DateTime.Now + TimeSpan.FromSeconds(2);
            }


            var harvestableObject2 = resource.GetHarvestableObject();

            var resourceType     = harvestableObject2.GetResourceType().Value;
            var tier             = (Tier)harvestableObject2.GetTier();
            var enchantmentLevel = (EnchantmentLevel)harvestableObject2.GetRareState();

            var info = new GatherInformation(resourceType, tier, enchantmentLevel)
            {
                HarvestDate = DateTime.UtcNow
            };

            var position = resource.transform.position.c();

            if (_gatheredSpots.ContainsKey(position))
            {
                _gatheredSpots[position] = info;
            }
            else
            {
                _gatheredSpots.Add(position, info);
            }
        }