You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Man0u1 "Court in the Sands" (scripts/lua/quests/man/man0u1.lua, id 110010) is the second Ul'dah Main Scenario quest — it starts right after Man0u0 "Flowers for All" completes. It is the Ul'dah analogue of Gridania's "Souls Gone Wild" (#41) / Limsa's "Treasures of the Main" (#46), and is the quest that introduces the Miner's Guild coliseum instances. Unlike the Gridania/Limsa equivalents, this script is only a skeleton: it implements the opening Adventurers' Guild scene and the attune step, then dead-ends — everything from SEQ_010 onward is unimplemented, and there are several concrete defects in what does exist.
This issue tracks finishing the port and fixing the defects.
Reachability
Court in the Sands starts after Man0u0 "Flowers for All" (#26 — open; the first Ul'dah quest currently softlocks in its SEQ_000 tutorial). It is reachable in a normal Ul'dah playthrough once #26 lands; the work below can also be done and statically/unit-verified independently, and the quest can be tested in isolation by force-granting it.
Bugs / gaps (confirmed by static reading)
1. The port is incomplete — only SEQ_000 → SEQ_005 is wired; soft-lock at SEQ_005
onStateChange and onTalk only handle SEQ_000 and SEQ_005 (confirmed by grep). The flow is:
onStart → SEQ_000, warp to private area 175.
SEQ_000: talk Momodi → processEvent010 → StartSequence(SEQ_005) ("Run to Camp Black Brush & Attune"). ✓
SEQ_005: onTalk Momodi only replays processEvent010_2 with no StartSequence; there is no attune/aetheryte trigger and no SEQ_005 → SEQ_010 transition anywhere. → dead-ends at SEQ_005.
Every later sequence is declared (SEQ_010, SEQ_012, SEQ_015, SEQ_045…SEQ_110) but has no handler. The whole back half of the quest — return to Momodi, the GSM/GLD guild visits, and the Miner's Guild coliseum instance phases documented in the header comment block (:26-61, phases 45/50/51/55 with the full NPC/emote table) — is unimplemented. This is the main work item; use the completed sibling ports (man0g1#41, man0l1#46) as the structural template and the header comment as the content spec.
2. Debug SendMessage left in onPush
-- man0u1.lua:156player:SendMessage(0x20, "", "Sequence: "..sequence.." Class Id: "..classId);
This fires on every push and must be removed. Both onPush branches (SEQ_000, SEQ_010) are also empty stubs.
3. getJournalMapMarkerList references three undefined globals
FLAG_SEQ010_TALK0, MRKR_YAYATOKI, and MRKR_ADV_GUILD are each referenced exactly once and never defined (confirmed by grep) — reaching the SEQ_010 branch is a nil-index error. Define them (or remove the branch until SEQ_010 is implemented).
4. Placeholder ids
UNKNOWN1 = 0 / UNKNOWN2 = 0 (:96-97) — unresolved actor ids (declared, currently unused).
THANCRED = 1000948; -- 1000010 (:99) — ambiguous comment lists a second candidate id; confirm the correct one.
ITEM_VELODYNA_COSMOS = 0 / ITEM_COLISEUM_PASS = 0 (:107-108) — placeholder item ids returned by getJournalInformation as journal args; fill in real ids.
MRKR_CAMP_BLACK_BRUSH (:104) is defined but never used (SEQ_005 has no marker branch).
Verification items
onNotice (:166-170) fires the "what an Instance is" event unconditionally — confirm it should be sequence/target-gated.
Video/spec references — the header preserves YouTube refs (:15-21) for the coliseum fight and the full playthrough; cross-check the Mirke Menagerie / Gamer Escape dumps for the quest transcript.
Quest is completable start→finish in an Ul'dah playthrough, all four CI gates green.
File: scripts/lua/quests/man/man0u1.lua. Prereq quest: Man0u0 (Flowers for All, #26). Part of the Ul'dah Main Scenario line (Flowers for All → Court in the Sands → Golden Sacrifices → Calamity Cometh).
Summary
Man0u1 "Court in the Sands" (
scripts/lua/quests/man/man0u1.lua, id110010) is the second Ul'dah Main Scenario quest — it starts right after Man0u0 "Flowers for All" completes. It is the Ul'dah analogue of Gridania's "Souls Gone Wild" (#41) / Limsa's "Treasures of the Main" (#46), and is the quest that introduces the Miner's Guild coliseum instances. Unlike the Gridania/Limsa equivalents, this script is only a skeleton: it implements the opening Adventurers' Guild scene and the attune step, then dead-ends — everything from SEQ_010 onward is unimplemented, and there are several concrete defects in what does exist.This issue tracks finishing the port and fixing the defects.
Reachability
Court in the Sands starts after Man0u0 "Flowers for All" (#26 — open; the first Ul'dah quest currently softlocks in its SEQ_000 tutorial). It is reachable in a normal Ul'dah playthrough once #26 lands; the work below can also be done and statically/unit-verified independently, and the quest can be tested in isolation by force-granting it.
Bugs / gaps (confirmed by static reading)
1. The port is incomplete — only SEQ_000 → SEQ_005 is wired; soft-lock at SEQ_005
onStateChangeandonTalkonly handleSEQ_000andSEQ_005(confirmed by grep). The flow is:onStart→ SEQ_000, warp to private area 175.processEvent010→StartSequence(SEQ_005)("Run to Camp Black Brush & Attune"). ✓onTalkMomodi only replaysprocessEvent010_2with noStartSequence; there is no attune/aetheryte trigger and no SEQ_005 → SEQ_010 transition anywhere. → dead-ends at SEQ_005.Every later sequence is declared (
SEQ_010, SEQ_012, SEQ_015, SEQ_045…SEQ_110) but has no handler. The whole back half of the quest — return to Momodi, the GSM/GLD guild visits, and the Miner's Guild coliseum instance phases documented in the header comment block (:26-61, phases 45/50/51/55 with the full NPC/emote table) — is unimplemented. This is the main work item; use the completed sibling ports (man0g1#41,man0l1#46) as the structural template and the header comment as the content spec.2. Debug
SendMessageleft inonPushThis fires on every push and must be removed. Both
onPushbranches (SEQ_000, SEQ_010) are also empty stubs.3.
getJournalMapMarkerListreferences three undefined globalsFLAG_SEQ010_TALK0,MRKR_YAYATOKI, andMRKR_ADV_GUILDare each referenced exactly once and never defined (confirmed by grep) — reaching the SEQ_010 branch is a nil-index error. Define them (or remove the branch until SEQ_010 is implemented).4. Placeholder ids
UNKNOWN1 = 0/UNKNOWN2 = 0(:96-97) — unresolved actor ids (declared, currently unused).THANCRED = 1000948; -- 1000010(:99) — ambiguous comment lists a second candidate id; confirm the correct one.ITEM_VELODYNA_COSMOS = 0/ITEM_COLISEUM_PASS = 0(:107-108) — placeholder item ids returned bygetJournalInformationas journal args; fill in real ids.MRKR_CAMP_BLACK_BRUSH(:104) is defined but never used (SEQ_005 has no marker branch).Verification items
onNotice(:166-170) fires the "what an Instance is" event unconditionally — confirm it should be sequence/target-gated.CompleteQuest/reward path at all yet (consistent with macos: ensure packet log directory is created upon server startup #1); the coliseum-instance finale andsqrwareward need to be added.:15-21) for the coliseum fight and the full playthrough; cross-check the Mirke Menagerie / Gamer Escape dumps for the quest transcript.Acceptance criteria
SendMessage(Updated run-all.cmd to set the log directory environment variable on Windows. #2).File:
scripts/lua/quests/man/man0u1.lua. Prereq quest: Man0u0 (Flowers for All, #26). Part of the Ul'dah Main Scenario line (Flowers for All → Court in the Sands → Golden Sacrifices → Calamity Cometh).