mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-14 15:57:13 +00:00
The client checks Missions.prereqMissionID in LWOMissionComponent::getMissionState (0x00cd7400): text without any of !&^;,|(): is one mission ID (met when 0 or ever completed); anything else goes through its expression reader (sub_00a32980), left to right with no precedence, & , ; and, | or, ^ xor, ! ~ not, ( ) groups, and/or skipping the rest once the result is known. Each operand (sub_00c90a80): "id" is met once the mission was ever completed; "id:state" when the client's state mask of that mission equals state. DLU read the text right to left ignoring groups, so "(509|229)&(812|813|814|815)" (mission 781) was met by 509 alone; a plain ID needed the mission's state to be 8, so a repeatable being repeated blocked the missions after it (1870 after 1869); and id:state compared the mission's own state. GetClientMissionState moves to MissionPrerequisites so operands can ask for the mask. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>