Purpose
Display a dungeon mission message across the client screen using a dedicated CHAT_TYPE_MISSION chat type. Long messages scroll; an empty message clears the board. The resource supplies client/server merge fragments, not a finished dungeon, quest progression system or saved objective state.

M2City r1 corrections
The original UI referenced text_width outside the method where it was defined, causing long missions and some sub-mission transitions to fail. The reviewed board stores its measured width. Empty SetMission calls now hide and clear immediately; SetSubMission before the base mission is ignored. The text child is marked not_pick and text positioning uses integer coordinates.
The supplied Lua wrapper checked the first argument but read the message from the second, allowing a null message in the normal one-argument form. The reviewed signature is d.mission_notice("text") and always targets the current quest dungeon. It rejects wrong/extra arguments or a missing dungeon; it does not permit a caller-supplied map index. The entity sender also guards null entities/messages.

Integration and use
Merge CHAT_TYPE_MISSION at the same numeric position in client Packet.h and server length.h. Merge client routing/export, interface initialization/cleanup, game callback and MissionBoard into your existing uiTip module. That module must already contain BigTextBar and the required ui, wndMgr and grp imports. Merge CDungeon::MissionNotice plus the quest binding, and register d.mission_notice in quest_functions if your compiler requires it. Rebuild/deploy client and server together.
Within an actual dungeon quest, call d.mission_notice("Defeat the next wave") and clear with d.mission_notice(""). Migrate any existing two-argument calls explicitly. The legacy BYTE value parameter remains unused, so no numeric progress/completion payload is claimed. Keep messages within your actual chat packet text limit. Recreate the board on in-game resolution changes if your branch supports those.

Validation
All ten supplied fragments were read. Fake UI tests covered long/short messages, transition to scrolling, empty clear, 1000 scroll updates and 100 set/clear cycles. The corrected native wrapper compiled with fake Lua/dungeon interfaces; valid, wrong, extra, null and absent-dungeon cases passed. No full Metin2 build, live dungeon or client/server packet round trip was tested. Original archive is preserved. An exact public upstream release and original author were not established.

Editorial resource — M2City
Version: Legacy integration fragments; exact fork unspecified; M2City r1 (2026-11-04)
Rights: Public redistribution confirmed by owner; upstream notices retained. No blanket open-source relicensing.
Validation: Fake UI tests passed long/short missions, sub-mission before initialization, transitions, empty clear, 1000 scroll updates and 100 set/clear cycles. Revised native quest wrapper compiled with fake Lua/dungeon interfaces and rejected missing/wrong/extra arguments and missing dungeon; current-map and empty-clear cases passed. No full client/server or packet round-trip test.
Source: Owner-supplied source; public creator/feature reference where established
SHA-256: 8264767ee4a6068ea35624e7d54e3c5f2c82f45f9b7e4280c03206e475025586