Temperature → Region Connection
Regions are the building blocks from which districts and rooms are constructed.
The
room hierarchy (Region → District → Room) determines how temperature is calculated.
DangerFor uses room temperature for pawn AI.
#1
Region → District → Room
Region = 12×12 cells, building block.
District = connected regions of the same type (Normal/Fence/ImpassableFreeAir).
Room = districts connected via portal regions (doors).
Temperature link: Temperature is calculated per Room, not per region or district. A room can have multiple districts but has a single temperature.
Verse/Room.cs:1-937 Verse/RegionAndRoomUpdater.cs:1-409
#2
DangerFor — Temperature Dangers
Verse/Region.cs
Region.DangerFor(Pawn) checks room temperature against the pawn's SafeTemperatureRange. Result is cached.
| Danger Level | Condition | Pawn Behavior |
| None | Temperature within SafeRange | Normal |
| Some | Hostile presence | Cautious |
| Deadly | Temperature outside SafeRange / vacuum | Avoids the room |
This means: Pawns won't voluntarily enter freezers or burning rooms unless they are drafted.
#3
Room Rebuild → RegenerateEqualizationData
Verse/RegionAndRoomUpdater.cs:1-409
When a wall/door is built or removed:
Cell dirty → RegenerateNewRegions → FloodAndSetNewRegionIndex →
CreateOrAttachToExistingDistricts → CombineDistrictsIntoRooms (DFS) →
RegenerateEqualizationData → Shuffle()
MP-Critical — The entire rebuild pipeline must run identically and at the same time on all clients.