private void GenerateWildlife() { var numWildlife = Random.Range(0, 6); if (numWildlife < 1) { return; } var creatureDeck = new CreatureDeck(BiomeType, numWildlife); for (var i = 0; i < numWildlife; i++) { var creature = creatureDeck.Draw(); creature.CurrentArea = this; creature.CurrentCell = ParentCell; PresentEntities.Add(creature); WorldData.Instance.Entities.Add(creature.Id, creature); } }
private void AssignFactionCitizensToArea() { if (PresentFactions == null || PresentFactions.Count < 1) { return; } foreach (var faction in PresentFactions) { if (faction?.RemainingCitizensToPlace == null || faction.RemainingCitizensToPlace.Count < 1) { continue; } int maxNpcs; if (SettlementSection != null && Settlement.Faction.Name.Equals(faction.Name)) { maxNpcs = Math.Min(faction.RemainingCitizensToPlace.Count, SettlementPrefabStore.SettlementSizePopulationCaps[Settlement.Size]) + 1; } else { maxNpcs = faction.RemainingCitizensToPlace.Count + 1; } var numNpcsToPlace = Random.Range(1, maxNpcs); for (var i = 0; i < numNpcsToPlace; i++) { var citizenToPlace = faction.RemainingCitizensToPlace.First(); faction.RemainingCitizensToPlace.RemoveAt(0); citizenToPlace.CurrentArea = this; citizenToPlace.CurrentCell = ParentCell; PresentEntities.Add(citizenToPlace); Settlement.Citizens.Add(citizenToPlace); } } }