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); }
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)); }
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); }
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); } }
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); }
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); }
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); }