Obelisk

Finished small granite obelisk from Pharaoh
Small obelisk — finished art (stage d)

The Obelisk is a granite monument commemorating deeds and achievements. Unlike pyramids and mastabas, all granite must already sit in staffed Storage Yards before you can place the site — after placement the stone is set at once, then carpenters raise scaffolding and stonemasons carve the faces.

You do not need Work Camp peasants. Only one unfinished obelisk (small or large) may be under construction at a time.

Small

3×3Footprint
100Granite
2Monument wt.
Cost (Normal)
2 500 Db
Cost by difficulty
VE 1 500 · Easy 2 000 · Normal 2 500 · Hard 3 500 · VH 5 000
Art stages
4 (a–d)

Large

5×5Footprint
200Granite
4Monument wt.
Cost (Normal)
5 000 Db
Cost by difficulty
VE 3 000 · Easy 4 000 · Normal 5 000 · Hard 7 000 · VH 10 000
Art stages
6 (a–f)
Materials
Granite (pre-stock in staffed SY) · Timber (scaffolding)
Guilds
Carpenters · Stonemasons
Labor
Guild craftsmen only — no Work Camp
Fire / damage
Fireproof · damage-proof
Granite in staffed SY Place footprint Timber · Carpenters Stonemasons carve Finished

Overview

Obelisks are single buildings (no linked parts). Granite amount required to place comes from each building’s JS placement_resources — currently 100 for small and 200 for large. Storage Yards that hold that granite must have workers (num_workers > 0); empty yards do not count toward the pre-stock check, and granite is removed only from staffed yards on place.

Under the current additive rating formula, one finished small obelisk (weight 2) yields monument rating 9 — the goal used on Buhen.

Akhenaten status: place, granite pre-stock / consume, only-one unfinished rule, art stages, info window, menu, and Buhen buildings list are in. Timber units per scaffolding phase live in timber_loads in src/scripts/building/obelisk.js (tune without C++ rebuild; current values are working defaults pending original .pak calibration). Large granite (200 vs some charts’ 300) is likewise config-only via placement_resources. Integral test 44_obelisk_place covers staffed-SY place + granite consume + __test_monument_add_resource. Visual polish (ladder offset) still open.

Construction

  1. Accumulate granite in staffed Storage Yards (≥ amount from the building config).
  2. Place when the ghost footprint is all green. Granite is deducted immediately; the monument appears at stage a.
  3. Carpenters’ Guild + timber build scaffolding (early phases).
  4. Stonemasons’ Guild carve hieroglyphs through remaining art stages.
  5. Finished — contributes its monument weight to the city rating.
SizeFootprintGranite to placeArt packsWeight
Small3×3100obelisk3x3ad2
Large5×5200obelisk5x5af4

Scaffolding ornament uses obelisk_extra image id 1 (ladder). Work Camp laborers are not used.

Placement

Clear land with an all-green footprint — 3×3 (small) or 5×5 (large). Each stage pack has a single isometric sprite (no alternate camera diagonals, unlike the Sphinx). Warnings fire if granite in staffed yards is insufficient, or if another unfinished obelisk already exists (text group 19 ids 83 / 84 / 86). Road access is not required on the monument tiles themselves, but guilds and storage need roads so carpenters and stonemasons can reach the site.

Missions

Tips

Developer reference

All paths relative to the repository root.

Building config — src/scripts/building/obelisk.js
building_small_obelisk {
  building_size : 3
  art_stages : 4
  timber_loads [ 200, 200, 200 ]
  placement_resources [
    { resource: RESOURCE_GRANITE, count: 100 }
  ]
  cost [ 1500, 2000, 2500, 3500, 5000 ]
  meta { help_id: 372, text_id: 178 }
  info_title_id [198, 22]
  flags { is_monument: true }
}

building_large_obelisk {
  building_size : 5
  art_stages : 6
  timber_loads [ 400, 400, 400, 200 ]
  placement_resources [
    { resource: RESOURCE_GRANITE, count: 200 }
  ]
  cost [ 3000, 4000, 5000, 7000, 10000 ]
  info_title_id [198, 23]
}

Imagepaks PACK_OBELISK_* at dense indices 51000..51025 in src/scripts/imagepaks.js.

C++ class — src/building/monument_obelisk.{h,cpp}

BUILDING_SMALL_OBELISK (=262), BUILDING_LARGE_OBELISK (=263). Shared building_obelisk base; pre-stock via yards_stored_staffed / staffed_only remove on place; has_unfinished_obelisk() enforces only-one. Info UI: src/window/window_obelisk_info.cpp.

Messages & weight
  • Titles: 198:22 small · 198:23 large
  • Progress / status: group 178 (e.g. 42–44)
  • Foreman: group 199 (43–46)
  • Placement warnings: group 19 ids 83 / 84 / 86
  • Help dialog: message_building_obelisk id 372
  • Monument weights in src/scripts/city/monuments.js: small = 2, large = 4 (large draft until weight recalibration)
Mission & tests

Mission 13: src/scripts/mission/m_013_buhen.jsBUILDING_SMALL_OBELISK + packs PACK_OBELISK_EXTRA / X3_A..D.

Integral test: tests/44_obelisk_place.js — staffed SY granite → place; consume; __test_monument_add_resource. Run: --integraltests --integraltest-only 44_obelisk.