The scripting command IfMapFlag has the opcode (0x2A).
- Monster ID (byte) - Monster or flag number
- Line Number (byte) - destination line number if comparison is true
Checks if the given "flag" has been set, and jumps to the given line number if so. A flag is technically a monster, and it is set by being moved outside of the map such that either the X or Y coordinate (or both) are greater than 0x20. If the given ID is 0xFF, then it checks all monsters/flags and returns true iff all are set (outside the map).
When a monster is killed, it's X and Y coordinates are both set to 0x80. In this way, a check to see if all monsters have been killed on a given map can easily be performed. With respect to flags, you can Spawn a "monster" either to 0x20 or greater (0x64 is usually used) to set the given flag, or to 0x00 to unset the flag. Xeen can currently support up to 107 different monsters or flags on the map at once.