Пример #1
0
    public bool IsValid(SpawnSessionContext context)
    {
        if (RequiredStatusEffects.Count == 0)
        {
            return(true);
        }

        if (SearchDistance <= 0)
        {
            return(true);
        }

        List <Player> players = PlayerUtils.GetPlayersInRadius(context.SpawnerZdo.GetPosition(), SearchDistance);

        foreach (var player in players)
        {
            SEMan statusEffectManager = player.GetSEMan();

            if (RequiredStatusEffects.Any(x => statusEffectManager.HaveStatusEffect(x)))
            {
                return(true);
            }
        }

        return(false);
    }
    public bool IsValid(SpawnSessionContext context)
    {
        if (SearchDistance <= 0)
        {
            return(true);
        }

        if (NoiseThreshold <= 0)
        {
            return(true);
        }

        List <ZDO> players = PlayerUtils.GetPlayerZdosInRadius(context.SpawnerZdo.GetPosition(), SearchDistance);

        foreach (var player in players)
        {
            if (player is null)
            {
                continue;
            }

            if (player.GetNoise() >= NoiseThreshold)
            {
                return(true);
            }
        }

        return(false);
    }
Пример #3
0
    public bool IsValid(SpawnSessionContext context)
    {
        if (RequiredMissing.Count == 0)
        {
            return(true);
        }

        return(!RequiredMissing.Any(x => ZoneSystem.instance.GetGlobalKey(x)));
    }
    public bool IsValid(SpawnSessionContext sessionContext)
    {
        var point         = sessionContext.SpawnerZdo.GetPosition();
        var nearbyPlayers = PlayerUtils.GetPlayerZdosInRadius(point, WithinDistance);

        if (nearbyPlayers.Count == 0)
        {
            return(false);
        }

        return(nearbyPlayers.Any(x => Vector3.Distance(x.GetPosition(), point) <= WithinDistance));
    }
Пример #5
0
    public bool IsValid(SpawnSessionContext context)
    {
        if (AreaChance <= 0)
        {
            return(false);
        }
        else if (AreaChance >= 100)
        {
            return(true);
        }

        var areaChance = MapManager.GetAreaChance(context.SpawnerZdo.GetPosition(), EntityId);

        return(areaChance * 100 > 100 - AreaChance);
    }
    public bool IsValid(SpawnSessionContext context)
    {
        if (ItemsSearchedFor.Count == 0)
        {
            return(true);
        }

        if (SearchDistance <= 0)
        {
            return(true);
        }

        List <Player> players = PlayerUtils.GetPlayersInRadius(context.SpawnerZdo.GetPosition(), SearchDistance);

        foreach (var player in players)
        {
            if (player.IsNull())
            {
                continue;
            }

            var items = player.GetInventory()?.GetAllItems() ?? new(0);

            foreach (var item in items)
            {
                var itemPrefab = item?.m_dropPrefab;

                if (itemPrefab.IsNull())
                {
                    continue;
                }

                string itemName = itemPrefab.name.Trim().ToUpperInvariant();

                if (string.IsNullOrWhiteSpace(itemName))
                {
                    continue;
                }

                if (ItemsSearchedFor.Contains(itemName))
                {
                    return(true);
                }
            }
        }

        return(false);
    }
Пример #7
0
    public static void StartSession(SpawnSystem spawner)
    {
        try
        {
#if FALSE && DEBUG && VERBOSE
            Log.LogDebug("WorldSpawnSessionManager.StartSession");
#endif

            Spawner = spawner;
            Context = new(ComponentCache.GetZdo(Spawner));
        }
        catch (Exception e)
        {
            Log.LogError("Error during initialization of new SpawnSystem session", e);
        }
    }
Пример #8
0
    public bool IsValid(SpawnSessionContext context)
    {
        if (RaritiesRequired.Count == 0)
        {
            return(true);
        }

        if (SearchDistance <= 0)
        {
            return(true);
        }

        List <Player> players = PlayerUtils.GetPlayersInRadius(context.SpawnerZdo.GetPosition(), SearchDistance);

        foreach (var player in players)
        {
            if (player.IsNull())
            {
                continue;
            }

            var items = player.GetInventory()?.GetAllItems() ?? new(0);

#if DEBUG && VERBOSE
            Log.LogTrace($"Player '{player.m_name}': {items.Join(x => x.m_shared.m_name + ":" + x?.Extended()?.GetComponent<MagicItemComponent>()?.MagicItem?.Rarity.ToRarity().ToString() ?? "")}");
#endif

            if (items.Any(x =>
            {
                var magicComponent = x?.Extended()?.GetComponent <MagicItemComponent>();

                if (magicComponent is null)
                {
                    return(false);
                }

                return(RaritiesRequired.Contains(magicComponent.MagicItem.Rarity.ToRarity()));
            }))
            {
                return(true);
            }
        }

        return(false);
    }
Пример #9
0
    public bool IsValid(SpawnSessionContext context)
    {
        if (LegendaryIds.Count == 0)
        {
            return(true);
        }

        if (SearchDistance <= 0)
        {
            return(false);
        }

        List <Player> players = PlayerUtils.GetPlayersInRadius(context.SpawnerZdo.GetPosition(), SearchDistance);

        foreach (var player in players)
        {
            if (player.IsNull())
            {
                continue;
            }

            var items = player.GetInventory()?.GetAllItems() ?? new(0);

            if (items.Any(
                    x =>
            {
                var magicComponent = x?.Extended()?.GetComponent <MagicItemComponent>();

                if (magicComponent is null)
                {
                    return(false);
                }

                return(LegendaryIds.Contains(magicComponent.MagicItem.LegendaryID?.Trim()?.ToUpperInvariant()));
            }))
            {
                return(true);
            }
        }

        return(false);
    }
    public bool IsValid(SpawnSessionContext context)
    {
        if ((Locations?.Count ?? 0) == 0)
        {
            return(true);
        }

        var location = LocationManager
                       .GetLocation(context.SpawnerZdo.GetPosition())?
                       .LocationName?
                       .Trim()?
                       .ToUpperInvariant();

        if (location is null)
        {
            return(false);
        }

        return(Locations.Any(x => x == location));
    }
    public bool IsValid(SpawnSessionContext context)
    {
        if (MinDistance is null && MaxDistance is null)
        {
            return(true);
        }

        var distance = context.SpawnerZdo.GetPosition().magnitude;

        if (MinDistance is not null &&
            distance < MinDistance)
        {
            return(false);
        }

        if (MaxDistance is not null &&
            distance > MaxDistance)
        {
            return(false);
        }

        return(true);
    }
Пример #12
0
    public bool IsValid(SpawnSessionContext context)
    {
        if (MinDays is null && MaxDays is null)
        {
            return(true);
        }

        int day = EnvMan.instance.GetDay(ZNet.instance.GetTimeSeconds());

        if (MinDays is not null &&
            day < MinDays)
        {
            return(false);
        }

        if (MaxDays is not null &&
            day > MaxDays)
        {
            return(false);
        }

        return(true);
    }
    public bool IsValid(SpawnSessionContext context)
    {
        if (MinWorldLevel is null && MaxWorldLevel is null)
        {
            return(true);
        }

        int worldLevel = CreatureLevelControl.API.GetWorldLevel();

        if (MinWorldLevel is not null &&
            worldLevel < MinWorldLevel)
        {
            return(false);
        }

        if (MaxWorldLevel is not null &&
            worldLevel > MaxWorldLevel)
        {
            return(false);
        }

        return(true);
    }
    public bool IsValid(SpawnSessionContext context)
    {
        if (RequiredValue <= 0)
        {
            return(true);
        }

        if (SearchDistance <= 0)
        {
            return(true);
        }

        List <Player> players = PlayerUtils.GetPlayersInRadius(context.SpawnerZdo.GetPosition(), SearchDistance);

        var valueSum = 0;

        foreach (var player in players)
        {
            if (player.IsNull())
            {
                continue;
            }

            var items = player.GetInventory()?.GetAllItems() ?? Enumerable.Empty <ItemDrop.ItemData>();

#if DEBUG && VERBOSE
            Log.LogTrace($"Player '{player.m_name}': {items.Join(x => x.m_shared?.m_name)}");
#endif

            foreach (var item in items)
            {
                valueSum += item?.GetValue() ?? 0;
            }
        }

        return(valueSum >= RequiredValue);
    }