Mechanics

Everything grows, not just the houses

Caesar II runs one evolution pass over the city map each cycle, and it doesn't only decide whether a house upgrades. Wells, fountains, bathhouses, forums and temples are on the same pass, growing and shrinking through their own tiers by the same land-value logic - a design later Impressions games mostly dropped.

Applies to Caesar II

One scan, every building type

citymap_evolution() in the reconstruction's src/evolver.c walks the city map row by row once per cycle, and the same function that decides whether a hut becomes a hovel also decides whether a well becomes a maintained well. The dispatch is a single chain of tile-type range checks - wells at 0xD7-0xDA, fountains at 0xDB-0xDE, bathhouses at 0xDF-0xE2, three separate forum size-classes at 0xAE-0xB9, three temple size-classes at 0xA2-0xAD - each compared against the land value at that tile and pushed up or down a tier by the same evolve_a_building()/devolve_a_building() pair that houses use. It is one mechanic wearing five costumes, not five separate systems that happen to look similar.

Footprints do not change as a building climbs. A well, a fountain and a bathhouse occupy the same footprint - literally the same footprint_size argument - at every quality level, and so do forums and temples: what differs is the size class. The toolbar has three Forum buttons (2, 3 and 4 tiles square) and three Temple commands (1, 2 and 3), and each size class is a separate building with its own four quality tiers - tile ids 0xAE-0xB9 for forums, 0xA2-0xAD for temples. A tier is not purely cosmetic: forums and temples each carry a land-value effect entry for every one of their twelve types, so a grander tier changes what the building does to the land around it. The game announces the medium and large forum as new structures when the city reaches 400 and 1,800 people. Houses are the only family in this pass whose footprint changes as it grows.

Temples ask a second question housing doesn't

Every other growth check in this pass is a single land-value comparison against an evolve_above/devolve_below pair. Temples check two conditions at once: temple_evolution[index] against land value, exactly like everything else, but also temple_populations1/2/3[index] against the city's population - and both must clear before a temple grows, while either failing is enough to devolve it. A wealthy, empty city can build a temple that sits at its lowest tier indefinitely; a poor, crowded one can have the population for a grand temple and still be stuck for want of land value. No other building family in this pass gates on two independent numbers at once.

Sources