Skip to content

Man0u1 "Court in the Sands" (Ul'dah MSQ #2): finish the skeleton port (only SEQ_000→005 wired, dead-ends at attune; Miner's Guild coliseum instances unimplemented) + fix debug/undefined-global defects #53

Description

@swstegall

Summary

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 → processEvent010StartSequence(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:156
player: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

-- man0u1.lua:223-228
elseif (sequence == SEQ_010) then
    if (not quest:GetFlag(FLAG_SEQ010_TALK0)) then     -- undefined
        table.insert(possibleMarkers, MRKR_YAYATOKI)   -- undefined
    else
        table.insert(possibleMarkers, MRKR_ADV_GUILD); -- undefined

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.
  • Completion path — the script has no CompleteQuest/reward path at all yet (consistent with macos: ensure packet log directory is created upon server startup #1); the coliseum-instance finale and sqrwa reward need to be added.
  • 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.

Acceptance criteria

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).

Metadata

Metadata

Assignees

Labels

Garlemald ServerFor work units related to Garlemald Server.bugSomething isn't working

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions