Wiki / Player Guide / Missions / North Dahshur

North Dahshur — The True Pyramid

Mission
15 of 38 — convergence of the Buhen / South Dahshur fork
Era
Old Kingdom · Dynasty 4 · Pharaoh Snofru
Classical name
Dahshur (the Red Pyramid — first true pyramid)
Starting funds
Very Easy 20 000 Db Easy 13 300 Db Normal 10 000 Db (pak) Hard 6 700 Db Very Hard 5 300 Db
Debt interest
Normal 20% (pak) Hard 25% Very Hard 30%
Deities
Osiris · Ra · Ptah · Seth (pak)
Trade
Selima Oasis (land 1500) · Abu (sea 900) · Byblos (sea 1200, timber) · Meidum (sea 300) · Serabit Khadim (land 600) — all closed; Men-nefer display-only
Previous mission
Buhen or South Dahshur
Next mission
Player's choice: Iunet (16) or On (17)
Status
Implemented

Briefing

The mission opens with the history panel (message_history_north_dahshur) and the briefing popup (message_mission_north_dahshur):

Pharaoh Snofru has brought order to Egypt, and the Kingdom now flourishes under his wise and benevolent rule. Snofru wishes to undertake another construction project at Dahshur, even more ambitious than the bent pyramid already completed. Royal architects are confident that they can construct an edifice whose sides rise in one continuous angle, culminating in a perfect peak. If successful, this will be the first true pyramid, and a worthy home for Pharaoh Snofru through all eternity!

Pharaoh's wife, Queen Hetepheres, has recently given birth to a son whom they have named "Khufu". Our people look toward the day of his eventual rule with much foreboding, for the seers of Horus have predicted that he will show none of his father's benevolence — though he will achieve many great things, they fear he will rule with unyielding tyranny.

You may acquire wood from Byblos, since carpenters will have to build many ramps to allow workers to reach the summit of this great pyramid.

North Dahshur is where Snofru built the Red Pyramid, the first successful true (smooth-sided) pyramid and the direct precursor to Khufu's Great Pyramid. In the campaign it is the payoff of the Snofru arc — the largest monument project yet — and it plants the seed of the Khufu missions to come. It is also a fork point: after completing it the player chooses Iunet or On.

Objectives

Goals match mission1.pak scenario 15.

Monument goal matches pak (32). Large true pyramid weight 13 → trunc(2.25·13+4.5)=33 (≥32; weight 12 truncated to 31 and missed the goal). Small/medium true and stepped remain available as extras.

Scripted events

Full empire redefine + schedule verified against pak scenario 15 (2026-07-26). Empire id 14. Scenario enemy Hyksos (ENEMY_5_HYKSOS). Favour Pharaoh army size 75 (no chain). Invasion points omitted (pak 0/0).

Year 1+Annual clay pit floods (pak i=0/1 amount=8 → 8% of clay pits ×2 waves).
Year 2 · month 1+Biennial henna ×12 / 24 months (ok KR+25; refuse −40; late −20).
Year 3 · month 11Hyksos size 5 once → then a continuous size-6 chain alternating attack targets (pak i=7→8↔9).
Year 4+Recurring Pharaoh grain ×8 / 18 months → ok: KR+5 + stone gift ×48; refuse KR−10; late stone gift ×24.
Year 6 · month 8+Recurring Beduin raids size 10 (Libyan sprites, as Serabit).
Year 13 · month 3+Recurring stone gift ×48 → chains limestone ×24 / 24 months (KR ± / stone demand on refuse).
Year 17 · month 4+Recurring grain ×18 → ok: KR+3 + copper gift; refuse: KR−15 + LOST_TRADE Kerma; late KR−5.
Year 20 · month 7Hyksos size 11 once (attack vaults).
Favour collapsePharaoh army size 75.

Strategy

Largest monument yet (large true pyramid), prosperity 30, and Hyksos pressure that does not stop after the first wipe. Open Byblos early for timber; Meidum is cheap stone (300 Db).

Phase 1 — Food and housing

Grain and barley farms support 3 000 people and the recurring grain asks. Evolve homes toward housing level 10 and prosperity 30 with gems/luxury from Serabit and Byblos.

Phase 2 — Pyramid and timber

Start the large true pyramid early. Import timber from Byblos for carpenter ramps; limestone also arrives via the year-13 gift→request chain.

Phase 3 — Defense

Hyksos from y3m11 never fully go away (size-6 chain). Beduin y6m8+ every year. Keep walls, academy, and standing companies — invasion points fall back to the map exit tile.

Tips

Available buildings

All buildings are available from mission start:

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 Farm · Barley Farm · Figs Farm · Hunting Lodge · Water Lift · Irrigation Ditch · Bazaar · Granary · Storage Yard
Raw materialsLimestone Quarry · Stone Quarry · Clay Pit
IndustryBricks · Pottery · Brewery · Papyrus · Weaver · Jewels Workshops · Work Camp
MonumentsSmall / Medium Stepped Pyramid · Small / Medium Mastaba · Small / Medium / Large True Pyramid (true S/M/L ✅; W(large)=13 → trunc 33 ≥ pak goal 32)
GuildsStonemasons' · Carpenters' · Bricklayers'
MilitaryRecruiter · Weaponsmith · Military Academy · Infantry / Archers / Charioteers Fort · Mud Wall · Mud Gatehouse · Mud Tower
ReligionTemples & Shrines of Osiris, Ptah, Seth, Ra · Festival Square
EducationScribal School · Library
EntertainmentBooth · Juggler School · Bandstand · Conservatory · Pavilion · Dance School
BeautificationSmall / Medium / Large Statue · Gardens · Plaza

Developer reference

All paths are relative to the repository root.

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

Imported by src/scripts/missions.js. Key parts of the mission15 { … } block:

mission15 { // North Dahshur — The True Pyramid
  player_rank : 6
  choice [ { name : "Iunet", id : 16 }, { name : "On", id : 17 } ]

  // pak Normal funds=10000 loan=4000 debt_interest=20
  initial_funds [20000, 13300, 10000, 6700, 5300]
  debt_interest [10, 15, 20, 25, 30]

  // pop 3000, culture 20, prosperity 30, monuments 32 (large true W=13 → trunc 33), kingdom 55, housing 10
  win_criteria { … }
}

Empire id 14 via empire.set_id(14). Choice → Iunet/On (scripts exist; empire redefine still pending for 16/17).

Event handlers — m_015_north_dahshur.js
  • event_mission_startempire.set_id(14); ENEMY_5_HYKSOS; wire grain/limestone/grain2 leaves.mission15_on_start
  • Clay pit floodsi=0/1 annual y1m0+; each wave floods ceil(N×8/100) clay pits (amount as %).mission15_clay_pit_flood_recurring
  • Hennai=11 biennial y2m1+ henna×12/24mo; KR +25 / −40 / −20; refuse/late→Hyksos×12.mission15_event_i11_henna_recurring
  • Request clearedhenna refuse/late→Hyksos×12 (event_request_cleared; pak i=30).mission15_on_request_cleared
  • Grain / gift / limestonei=2 grain×8 y4+; i=3 stone gift y13m3+ → limestone×24; i=5 grain×18 y17m4+.mission15_event_i2_* / i3_* / i5_*
  • Hyksos + Beduin + favouri=7 size5→size6 chain; i=6 beduin×10 y6m8+; i=10 size11 y20m7; favour 75.mission15_event_i7_* / i6_* / i10_* / favour

Dump: __test_mission_pak_dump(15) (ad-hoc test deleted after verification).

Game messages — src/scripts/game_messages_en.js
KeyIDLineWhen shown
message_history_north_dahshur2152669History briefing (subtitle "The True Pyramid")
message_mission_north_dahshur4154930start_message — first popup on mission load

Audio: Voice/Mission/215_mission.mp3 and Voice/Mission/215_victory.mp3.

Known deviations from the original (tracked)
  • Monuments 32 (pak) — large true ✅ (monument_pyramid.* / tests 108–110); weight 13 → trunc 33 ≥ 32. Stepped S/M still on the build list as extras.
  • Clay floods i=0/1 — pak year=24 reinterpreted as annual y1m0+; amount=8 = 8% of clay pits per wave (×2 waves).
  • Henna i=11 — pak year=24 amount=8 once → biennial y2m1+ amount=12; MESSAGE i=12/15 skipped. Invasion i=30 → JS Hyksos×12 via event_request_cleared (B12; smoke tests/176_north_dahshur_henna_raid.js).
  • Routes 7/8 orphan polylines skipped; map_obj idx=10 empty stub skipped.
  • Invasion points omitted (pak 0/0) — raids use map exit fallback.
  • Hyksos size-6 chain after i=7 is infinite in pak (8↔9); mirrored with a month tick until B2-migrate bind tags.
  • Favour / invasions JS-proxied until B2-migrate.
  • Iunet/On (16/17) have scripts but not full empire redefine yet.