Example #1
0
    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);
        }
    }
Example #2
0
    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);
            }
        }
    }