Abu — The Nubian Border

Mission
9 of 38 — Choice B (vs Selima)
Era
Old Kingdom · Dynasty 3 · Pharaoh Nebka
Classical name
Elephantine (Abu)
Starting funds
Very Easy 7 500 Db Easy 5 000 Db Normal 3 750 Db Hard 2 500 Db Very Hard 2 000 Db
Debt interest
Very Easy 10% Easy 15% Normal 20% (pak) Hard 25% Very Hard 30%
Deities
Osiris · Ptah
Trade
Behdet · Men-nefer (sea) · Abedju · Timna (land); Selima/Kyrene display (y6 NEW_TRADE Kyrene)
Previous mission
Behdet or Abedju (choice)
Next mission
Saqqara (10)
Status
Choice B Implemented

Briefing

On load the script shows message_history_abu:

A new Pharaoh, Nebka, has been proclaimed… Pharaoh wishes to extend the borders of our realm further south, into Nubia. He orders that a city be founded at the first cataract of the Nile, on the island of Abu, that we may take advantage of the abundant deposits of gemstones, granite and sandstone… Once the Selima Oasis outpost has been established, you may look to it as a source of imported ebony.

Abu is a quarry city on the Nubian border: export granite, sandstone, and gems; import clay/papyrus by sea. Selima Oasis and Kyrene are foreign display cities (pak); year 6 fires NEW_TRADE on Kyrene as in the scenario graph.

Objectives

Goals match mission1.pak scenario 9. No monument requirement — ratings and trade dominate.

Scripted events

Verified against pak scenario 9 (2026-07-25 dump). Scenario enemy id is Hyksos; timed invasions are Pharaoh favour only (ENEMY_3_EGYPTIAN). Favour chain: 40 (attack food) → 20 (random) → 20 (random) via mission_pharaoh_favour_invasion_tick + bind wipe (B2-migrate). Smoke: tests/178_favour_wave_bind.js.

Year 2 · month 4 Land trade problem (amount 8).
Year 4 · month 7 Pharaoh requests 13 granite (12 months). KR +6 / refuse −7 / late −3.
Year 6 · month 4 CITY_STATUS Selima conquered (subtype 1) → NEW_TRADE Kyrene (pak city_id=5; display).
Year 6 · month 9 Flax demand increase (amount 8); ok → granite REQUEST (pak i=1; already fired → no-op).
Year 7 · month 1 Foreign city conquered (Nubt) → linen demand increase (amount 9).
Year 10 Construction project: 22 sandstone (16 months). KR +6 / refuse −11 / late −5.
Year 13 · month 7 Contaminated water (amount 6).
Year 15 · month 10 Sea trade problem (amount 7).
Year 17+ · month 0 Gems demand increase (amount 7; recurring yearly).
Favour KR Pharaoh punishment army size 40 (targets food), then chain 20 (random), then another 20 (random).

Strategy

Quarry granite early for the year-4 request and export. Open cheap Behdet (250 Db) for clay/reeds/papyrus; Men-nefer sea route for papyrus/pottery. Keep kingdom rating up — favour punishment is three Pharaoh waves.

Phase 1 — Quarries and food

Granite / sandstone / gem mines plus floodplain farms. Pottery and papyrus need imports until docks and yards are staffed.

Phase 2 — Trade

Behdet (250 Db) and Abedju (600 Db) first; Men-nefer sea (1 100 Db); Timna (1 450 Db) for copper/weapons if needed. Year 6 NEW_TRADE Kyrene matches pak (no playable goods).

Phase 3 — Ratings

Culture 30 and prosperity 30 need booths/bandstands and steady export income. Stock sandstone before year 10 for the construction request.

Available buildings

Quarries and gem mine, jeweler/weaver/papyrus/bricks workshops, Osiris/Ptah temples and complexes, docks/ferry, standard civic entertainment — no military forts in the script list. See buildings[] in the script.

Developer reference

Paths relative to repository root.

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

Imported by src/scripts/missions.js. Full empire redefine: hide_pak_cities / hide_pak_routes / hide_pak_objects, map_background, empire id 1, cities with pos/idx, sea/land empire_routes, region texts, ornaments.

win_criteria {
  population 4000 · culture 30 · prosperity 30
  kingdom 50 · housing_level 10 · monuments off
}
// Trade: Men-nefer r1 sea 1100 · Behdet r3 sea 250 · Timna r4 1450 · Abedju r5 600
// Display: Selima r2 cost 550 · Nubt 6 / Kyrene 8 / Byblos 10
Event handlers
  • event_mission_start ~on_start Egyptian/Hyksos sprites; history message; empire.set_id(1) / set_expanded(false); advisors. mission9_on_start
  • event_advance_month requests / trade Granite +6/−7/−3; sandstone construction +6/−11/−5; Selima CITY_STATUS conquered→NEW_TRADE Kyrene; Nubt MESSAGE→linen demand; flax/gems demand; land/sea trade problems; contaminated water. mission9_pharaoh_request_* / selima_* / demands
  • event_advance_month invasions Favour i15 size 40 FOOD → i18 size 20 RANDOM → i19 size 20 RANDOM (bind wipe). mission9_pharaoh_favour_invasion
Game messages
KeyIDWhen
message_history_abu209start_message — “The Nubian Border” / Nebka
Save / map

bin_x64/Missions/mission_09.sav · Voice 209_mission.mp3 / 209_victory.mp3.

Dump helper: src/js/js_test_mission_pak_dump.cpp (__test_mission_pak_dump(9) via ad-hoc tests/99_tmp_*.js).