Skip to content

Asset Properties

In Cities: Skylines, there's a class called ImmaterialResourceManager, which holds datatypes for resources as well as functions used for operations on these resources. Various types of buildings like commercial buildings are able to "implement" these resources given a function that takes the resource itself, rate (relative integer, no specific unit), position, and a radius. It is also possible for a resource to not have a position and a radius, which in this case can be a global resource. These resources are defined as an enum that goes as follows:

  • HealthCare
  • FireDepartment
  • PoliceDepartment
  • EducationElementary
  • EducationHighSchool
  • EducationUniversity
  • DeathCare
  • PublicTransport
  • NoisePollution
  • CrimeRate
  • Health
  • Wellbeing
  • Density
  • Entertainment
  • LandValue
  • Attractiveness
  • Coverage
  • FireHazard
  • Abandonment
  • CargoTransport
  • RadioCoverage
  • FirewatchCoverage
  • EarthquakeCoverage
  • DisasterCoverage
  • TourCoverage
  • PostService
  • EducationLibrary
  • ChildCare
  • ElderCare
  • None

There's also helper functions that given a certain position can return the values of resources at that given point. This is presumably called by human agents as well as building agents according to their type in order to fetch what kind of resources are available and what kind of ones have a shortage.

Certain resources such as attractiveness and entertainment in commercial buildings have some defining factors, such as:

  • If the destrict they're in has a no loud noises policy:

entertainment = 25

attractiveness = 2

Otherwise:

entertainment = 50

attractiveness = 4

  • If the district has no taxes on leisure:

entertainment is increased by 50

attractiveness is increased by 4

Otherwise, it's only increased by an equation that accounts for tax rate:

entertainment = entertainment + ( 50 / (taxRate + 1) )

attractiveness = attractiveness + ( 4 / ((taxRate / 2) + 1) )

Attractiveness and entertainment are also affected by production rate in an obfuscated equation.

Another type of buildings like university campuses, use a different way of defining attractiveness, campus buildings are defined as parks due to their large size and supposedly open aareas, and have a special attractiveness value that is affected by a "bonus" given by some bonus attributes:

  • None
  • LandValue
  • Health
  • Academics
  • Tourism
  • Graduation

Where Attractiveness is specifically added based on the Tourism bonus

Until now, no references that read from attractiveness resource other than an accumulated value for each district, but so far all of the transfer offers found didn't have anything to do with attractiveness, entertainment or any resource for that matter. The choice of citizens to go to a specific location is still very much randomized and isn't affected by that location's implemented resources.

Transfer Offers

As observed from the source code, there's no clear conditions on what sending incoming transfer offers is based on, it's only based on whether the buildings are activated and have a sufficient capacity. For instance, in schools, there's a "ProduceGoods" function which is meant for students, that as long as the school isn't full and is running will send a transfer offer for all education levels. Outgoing offers on the other hand are sent on many conditions like fire, building evacuation and building deactivation.

Common buildings (All buildings inherit from this)

Incoming offers

Transfer Reason Worker: Workers capacity - existing workers > 1 (for all workers' level of education)

Outgoing offers

Road Access failed, Garbage, Mail (?), Flood, Crime, Fire, ForestFire

Schools

Incoming offers

Transfer Reason Student: School capacity - existing students > 1 (for all student levels)

Outgoing offers

Doesn't override common buildings.

Campuses

Incoming offers

The same as school, except that it adds resources related to being treated as a park.

Outgoing offers

FloodWater (Because flooding in parks is handled differently)

Police Stations

Incoming offers

CriminalMove: if Jail capacity allows

Crime: if police cars are less than the "production rate" of the police station

The rest of the building types follow this same pattern, where in their ProduceGoods function they add incoming offers based on the service they're offering and workers level they're hiring.

Authors: Mohamed Hisham
Back to top