On — Ivory from the East

Mission
17 of 38 — choice B of the Iunet / On pair
Era
Old Kingdom · Dynasty 4 · Pharaoh Khufu
Classical name
Heliopolis (Iunu) — the mission briefing popup uses "Heliopolis"
Starting funds
Very Easy 12 000 Db Easy 8 000 Db Normal 6 000 Db (pak) Hard 4 000 Db Very Hard 3 200 Db
Debt interest
Normal 20% (pak) Hard 25% Very Hard 30%
Deities
Osiris · Ra · Bast (pak)
Trade
Iunet (sea 1500) · Saqqara (sea 400) · Dahshur (sea 200) · Meidum (sea 450) — closed; Men-nefer display
Previous mission
North Dahshur
Next mission
Rostja (18) — the Iunet / On paths converge there
Status
Choice B Implemented

Briefing

The mission opens with the history panel (message_history_on) and the briefing popup (message_mission_heliopolis):

Pharaoh Khufu has taken the throne, and our people have already begun to suffer under his oppression. It is rumored he plans a colossal building project on the plateau outside Rostja, to usurp the renown his father Snofru earned from his two noble pyramids.

Khufu has ordered a cluster of quarries dug at Tura, where rich deposits of fine white limestone have been discovered. You must also build three mastaba tombs for the nobles of this region. The quarrying settlement you found shall be named "On", and shall serve as a plentiful source of limestone for many years.

The finest ivory may be obtained via Byblos, trading with Assyria and Ur. With the arrival of such rare luxury goods, On is sure to prosper.

On is the ancient Egyptian name for Heliopolis (Iunu). In the campaign it is the peaceful, high-culture arm of the Khufu fork: a limestone-quarrying town that builds three noble mastabas. Pak has no timed enemy raids — only a favour Pharaoh chain if kingdom rating collapses. Luxury goods come via Saqqara (Byblos is display-only foreign on this empire map).

Objectives

Goals match mission1.pak scenario 17.

Matches the original: monument goal 18 — three small mastabas under the additive rating formula (2.25·Σ+4.5, weight 2 each → 2.25·6+4.5 = 18, in city/monuments.js). After construction, dispatch burial provisions via the Overseer of Monuments: linen / luxury goods / timber ×8 and limestone / granite ×32 (from JS burial_provisions; win waits until these are sent). When a mastaba is finished and those provisions are complete, a one-shot funeral walker procession walks to that tomb.

Scripted events

Full empire redefine verified against pak scenario 17 (2026-07-26). Empire id 1. Scenario enemy Hittite (no timed raids). Favour Pharaoh 20×5.

Year 3 · month 2Limestone demand +6 at Dahshur.
Year 3 · month 5+Limestone ×25 / 36 months recurring (ok KR+26; refuse −18 → LOST_TRADE Kyrene; late −9).
Year 4 · month 7+Perfect flood (annual) → chain game meat ×9 / 9 months (ok KR+7; refuse −25; late −3).
Year 7 · month 9Clay pit flood (8% of pits).
Year 8Limestone demand +9 at Iunet.
Year 9Wage increase +7.
Favour collapsePharaoh army 20 → 20 → 20 → 20 → 20.

Strategy

On trades military pressure for economic and cultural demands: culture 40, three mastabas, and a limestone-export economy. Keep kingdom rating above zero — favour is five waves of size 20.

Phase 1 — Limestone and food

Limestone Quarries supply mastabas, the recurring Pharaoh ask, and exports. Open Dahshur early (cheap, sea 200) for straw/beer; Saqqara for luxury goods.

Phase 2 — Three mastabas

Small mastabas need bricks — Clay Pits, Bricks Workshop, straw. Work Camps and guilds keep construction moving. Hunting Lodge for the perfect-flood game-meat chain.

Phase 3 — Culture 40 and prosperity 35

Scribal Schools, Libraries, temples (Osiris / Ra / Bast), full entertainment including Senet Houses. Import luxury via Saqqara.

Tips

Available buildings

All buildings are available from mission start. Religion: Osiris, Ra, Bast (no Ptah/Seth).

CategoryBuildings
Housing & roadsVacant Lot · Clear Land · Road · Road Block · Low Bridge · Ferry
MunicipalFirehouse · Architect's Post · Police Station · Village Palace · Personal Mansion · Tax Collector · Courthouse
HealthWater Supply · Apothecary · Physician · Mortuary
Food & farmingGrain / Barley / Figs / Flax Farm · Cattle Ranch · Reed Gatherer · Hunting Lodge · Water Lift · Irrigation Ditch · Bazaar · Granary · Storage Yard
Raw materialsLimestone Quarry · Sandstone Quarry · Stone Quarry · Clay Pit
IndustryBricks · Pottery · Brewery · Papyrus · Weaver · Jewels Workshops · Work Camp
MonumentsSmall Mastaba · Medium Mastaba
GuildsStonemasons' · Carpenters' · Bricklayers'
MilitaryRecruiter · Weaponsmith · Military Academy · Infantry / Archers / Charioteers Fort
ReligionTemples & Shrines of Osiris, Ra, Bast · Festival Square
Education / EntertainmentScribal School · Library · Booth · Juggler School · Bandstand · Conservatory · Pavilion · Dance School · Senet House
BeautificationSmall / Medium / Large Statue · Gardens · Plaza

Developer reference

All paths are relative to the repository root.

Mission script — src/scripts/mission/m_017_on.js

Imported by src/scripts/missions.js. Key config:

mission17 {
  start_message : "message_mission_heliopolis"
  player_rank : 6
  next_mission : 18
  // funds Normal 6000 / loan 3000 / debt 20%
  // pop 4000, culture 40, prosperity 35, monuments 18, kingdom 60, housing 10
}

Empire id 1 via empire.set_id(1). Enemy ENEMY_4_HITTITE (scenario id only — no timed raids).

Event handlers — m_017_on.js
  • event_mission_startempire.set_id(1); wire limestone / gamemeat leaves.mission17_on_start
  • Requests / floodslimestone×25 y3m5+; perfect flood→gamemeat×9; clay 8% y7m9.mission17_event_i5 / i1 / i2
  • Demand / wage / favourdemand +6/+9; wage +7; favour 20×5.mission17_event_i0/i3/i4 / favour
Game messages & known deviations
KeyIDWhen shown
message_history_on217History briefing ("Ivory from the East")
message_mission_heliopolis417start_message popup (classical name)
  • MESSAGE i=6 (orphan chain_only acknowledgement) skipped.
  • Men-nefer route 7 — no pak polyline; 2-pt stub + deviation.
  • Empty map_obj idx=9 skipped.
  • Briefing Byblos ivory — Byblos is non-trade foreign on this map; luxury via Saqqara.
  • Favour JS-proxied until B2-migrate (five waves; helper only supports two).
  • LOST_TRADE Kyrene on limestone refuse — Kyrene is already non-trading foreign (pak as-is).