-
Notifications
You must be signed in to change notification settings - Fork 0
Heating
- Radiators generate heat.
- Patients and Staff don't like being too hot or too cold.
- The town map dialog can control radiator temperature, and show you a heat map.
- The outside temperature varies with the time of year.
One of the mechanics in the original Theme Hospital game was the heating system. CorsixTH also has a heating system, though it is slightly different to the original. The aim is to keep all your patients and staff at a comfortable temperature. If you do so, then it'll help to keep them happy, which in turn makes staff less likely to ask for pay rises.
If a person is too cold, then a cold blue face icon will be displayed above their head, and if a person is too hot, then a hot red face with tongue out icon will be displayed above their head. If you see either of these icons, then it is a good idea to manipulate your heating setup to fix things. As well as the face icons, the temperature of a patient can be seen in detail on the Patient Preview dialog, which is opened by clicking on a patient. This dialog has a thermometer / temperature scale, which shows hot hot the patient is. You should aim to keep their temperature within the middle third of this scale.
If a person is outside of your hospital, then their temperature is influenced by the outside air temperature, which varies by month, and you have no control over. Once a person is inside your hospital, you can influence their temperature by placing radiators (though heat does seep through your hospital walls, so the temperature within your hospital is also influenced slightly by the outside temperature).
Radiators are sources of heat. They can be purchased from the Furnish Corridor dialog, or when creating / editing a room. A radiator will heat up the area around it, and hence will heat up any people who are nearby. The strength of radiators is controlled from the Town Map dialog, where turning it up will cause radiator heat to spread further and also be hotter. The Town Map dialog can also display a heat map of your hospital, which is useful for seeing which areas are too hot or too cold.
Every map tile has an associated heat value. This value is recalculated several times per second (i.e. several times per ingame day), based on a weighted average of the previous heat value, the heat values of the surrounding tiles, the outside air temperature, and the radiator temperature. The code for doing is is roughly the following:
heat = heat * 0.75 + neighbour_average_heat * 0.25
if tile_has_radiator then
heat = heat * 0.5 + max(radiator_temperature, air_temperature) * 0.5
else if tile_is_outside then
heat = heat * 0.99 + air_temperature * 0.01
else
heat = heat * 0.999
end
Where neighbour_average_heat
is calculated as a weighted average of the heat values of the four immediately adjacent tiles (or the two or three adjacent tiles for tiles on the map edge). The average is weighted as to give four times less influence to neighbour tiles which are separated from the current tile by a wall or other object.
These calculations form a rough model of diffusion, meaning that heat flows from hotter tiles to colder tiles. Radiators are heat sources in this model, and the outside is either a heat source or heat sink, depending on the time of year. To simulate heat absorption by walls / objects / humanoids, indoor tiles loose 0.1% of their heat per tick.
The temperature of a humanoid is updated once per ingame day, based on the following formula, which causes them to gradually heat up while on a warm tile, and gradually cool down while on a cold one: humanoid_heat = humanoid_heat * 0.75 + tile_heat * 0.25
To allow for a clearer mental model, a heat value of 0 represents 0 degrees Celsius, and a heat value of 1 (65535 in C code) represents 50 degrees Celsius. With this scale defined, the following values make sense:
- Humanoids are happy between 11 and 18 degrees, and gain 0.5% happiness per tick while within this range.
- Humanoids are cold below 11 degrees, or hot above 18 degrees. They loose 2% happiness per tick for every 7 degrees by which they are beyond the threshold.
- The air temperature varies between 4 and 17 degrees, based on the ingame month. Currently these temperatures are based on the Oxford Climate.
- Radiators vary between 12.5 and 27.5 degrees, based on the temperature setting in the town map dialog.
Back to the Home page