← Back to query
RI-11 Namespace: Verse

Region System

Temperature dependency: Danger detection and room hierarchy

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 LevelConditionPawn Behavior
NoneTemperature within SafeRangeNormal
SomeHostile presenceCautious
DeadlyTemperature outside SafeRange / vacuumAvoids 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) → RegenerateEqualizationDataShuffle()

MP-Critical — The entire rebuild pipeline must run identically and at the same time on all clients.