Level: invisible_trigger.lvl (big-endian) D8 7E 1B 17 00 99 00 32 00 85 00 32 00 99 00 46 ; header 00 C8 00 01 00 00 2A F8 00 00 00 00 00 00 00 00 00 00 00 00 00 05 ; no monks 00 03 00 03 ; three items 00 AA 00 04 FF FF 00 65 00 64 00 64 ; mysterious "items" - coord are the orange slice 00 AA 00 04 FF FF 00 65 00 64 00 63 ; this one's coord are the trigger's 00 A2 00 03 FF FF 00 64 00 64 00 63 ; LR entry point FF FF ; beginning of layout section FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; these are the empty Z-planes FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 01 00 03 00 63 ; $63 Z-header (1 y) 00 01 00 0A 00 64 ; $64 Y-header (1 x) 00 6E 00 01 00 00 40 12 ; invisible trigger 00 65 00 64 00 63 ; coord (101, 100, 99) 00 01 00 00 00 8D 00 00 00 00 69 0C 00 00 2A 8A ; block code $2A8A 00 01 00 04 00 65 00 64 00 64 0E 00 01 01 00 00 ; extra info for trigger-affected blocks 00 01 00 03 00 64 ; $64 Z-header (1 y) 00 03 00 0A 00 64 ; $64 Y-header (3 x) 00 6E 00 01 00 00 1C 11 ; lime slice 00 66 00 64 00 64 ; coord (102, 100, 100) 00 01 00 00 00 8C 00 00 00 1C 19 00 00 00 0C 01 ; block code $0C01 00 6E 00 01 00 00 1C 11 ; orange slice ; THIS IS THE BLOCK AFFECTED BY THE TRIGGER 00 65 00 64 00 64 ; coord (101, 100, 100) 00 01 00 00 00 8C 00 00 00 1C 19 00 00 00 0C 03 ; block code $0C03 00 6E 00 01 00 00 1C 11 ; lime slice 00 64 00 64 00 64 ; coord (100, 100, 100) 00 01 00 00 00 8C 00 00 00 1C 19 00 00 00 0C 01 ; block code $0C01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; more empty Z-planes FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF =============================================== analysis of the trigger info chunk: 00 01 ; number of blocks affected by trigger 00 04 00 65 00 64 00 64 ; coords of first block, more coords follow ; immediately, 3 words per block 0E ; 0E for invisible triggers, different for others 00 01 ; 0001 for 'phase-out', 0002 for 'phase-in' 01 ; 01 for 'once', FF for 'many' ; (is actually number of times the trigger ; will work, could be 2, 3, etc.) 00 00 ; timer value in seconds example with trigger affecting 5 blocks: 00 05 00 04 00 66 00 66 00 64 ; In z-descending, y-ascending, x-descending 00 65 00 66 00 64 ; order? Or is just the order they are 00 66 00 67 00 64 ; added in the editor? 00 65 00 67 00 64 00 66 00 66 00 63 0E 00 01 01 00 00 trigger info chunk with no blocks: FF FF ; first word is FFFF (not 0000) 0E 00 01 01 00 00 ; then usual final 3 words follow =============================================== Level: invisible_trigger2.lvl (big-endian) NOTE: the only change I made to this level was to switch the trigger from "once" to "many" (single-use to multiple-use). But several other things changed in the file. The mysterious pseudo items are gone and the "markers" for the other blocks changed from $8C to $8E. Why?? D8 7E 1B 17 00 9A 00 32 00 86 00 32 00 9A 00 46 ; header 00 C8 00 01 00 00 2A F8 00 00 00 00 00 00 00 00 ; (bytes 6, 10, 14 have increased by 1 too) 00 00 00 00 00 05 ; no monks 00 01 00 03 ; one item ; NO mystery items 00 A2 00 03 FF FF 00 64 00 64 00 63 ; LR entry point FF FF FF FF FF FF FF FF FF FF ; empty Z-planes FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 01 00 03 00 63 ; $63 Z-header (1 y) 00 01 00 0A 00 64 ; $64 Y-header (1 x) 00 6E 00 01 00 00 40 12 ; invisible trigger 00 65 00 64 00 63 ; coord (101, 100, 99) 00 01 00 00 00 8D 00 00 00 00 69 0C 00 00 2A 8A 00 01 00 04 00 65 00 64 00 64 0E 00 01 FF 00 00 ; $FF = multiple-use trigger 00 01 00 03 00 64 ; $64 Z-header (1 y) 00 03 00 0A 00 64 ; $64 Y-header (3 x) 00 6E 00 01 00 00 1C 11 ; lime slice 00 66 00 64 00 64 00 01 00 00 00 8E 00 00 00 1C 19 00 00 00 0C 01 ; marker has changed to $8E 00 6E 00 01 00 00 1C 11 ; orange slice 00 65 00 64 00 64 00 01 00 00 00 8E 00 00 00 1C 19 00 00 00 0C 03 ; marker has changed to $8E 00 6E 00 01 00 00 1C 11 ; lime slice 00 64 00 64 00 64 00 01 00 00 00 8E 00 00 00 1C 19 00 00 00 0C 01 ; marker has changed to $8E FF FF FF FF FF FF FF FF ; more empty Z-planes FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF =============================================== Level: trigger_plate_block.lvl (from offset $EA) (big-endian) ; this is the block affected by trigger 00 6E 00 01 00 00 5C 11 ; why is this value different than normal!? ; the orange slice block above has ; the usual value for diggable block: $1C11 00 66 00 64 00 64 ; coord 00 01 00 00 ; the rest is normal 00 8C 00 00 00 1C 19 00 00 00 13 88 ; solid brown Builder world block ; this block has a trigger overlay 00 6E 00 01 00 00 5C 10 ; note similarity to above 00 64 00 64 00 64 ; coord 00 02 00 00 ; byte 2 is 1 greater than usual 00 8E 00 00 00 1C 19 00 00 00 13 89 ; solid blue Builder world block ; trigger overlay 00 8D ; marker for trigger overlays ? 00 ; \ all three of these values are 00 00 00 29 ; | different from other types 0C ; / of overlays 00 00 2A 80 ; overlay graphic ; trigger info chunk 00 01 ; trigger controls 1 block 00 04 ; constant 00 66 00 64 00 64 ; coord of block to phase out 0D ; trigger type ? 00 01 ; phase out FF ; multiple-use 00 05 ; 5 second timer =============================================== All of the examples below are from the game's Tutorial levels covering triggers. Examples are given for each type of trigger available as well as showing some other interesting block data. ** All data uses little-endian byte order ** Level: Tutorial 17 - Trigger: Switch (TutoL033-4661.lvl) ** This level has 6 "pseudo items" 1st block with trigger: 6E 00 01 00 10 5C 00 00 ; this value is different 69 00 70 00 63 00 00 01 01 00 ; byte 3 = $01 for left overlay ? 8C 00 00 19 1C 00 00 00 8A 13 00 00 ; trigger overlay 8D 00 ; $8D is marker for triggers ? 01 29 00 00 00 0C 46 2A 00 00 ; "left-side" switch graphic ; trigger info chunk 05 00 04 00 ; trigger controls 5 blocks 69 00 6D 00 63 00 ; coord of blocks to phase in 67 00 6D 00 63 00 65 00 6D 00 63 00 63 00 6D 00 63 00 61 00 6D 00 63 00 0B ; trigger type: $0B for switches 02 00 ; phase in FF ; multiple-use 00 00 The 2nd trigger block has a different overlay resource ID but is otherwise similar: 8D 00 01 29 00 00 00 0C 44 2A 00 00 ; alternate "left-side" switch Level: Tutorial 18 - Trigger: Lever (TutoL035-4662.lvl) ** This level does NOT have any "pseudo items" 6E 00 01 00 ; block data same as above 10 5C 00 00 69 00 70 00 63 00 00 01 01 00 8C 00 00 19 1C 00 00 00 8A 13 00 00 ; trigger overlay 8D 00 ; lever overlay same as switch 01 29 00 00 00 0C ; except for 32 2A 00 00 ; "left-side" lever graphic ; trigger info chunk 04 00 04 00 67 00 6D 00 63 00 65 00 6D 00 63 00 63 00 6D 00 63 00 61 00 6D 00 63 00 0B ; trigger type: also $0B for levers 02 00 FF 0A 00 ; 10 second timer There are two "left-side" lever graphics for use in the overlay just as there were for switches: 8D 00 01 29 00 00 00 0C 30 2A 00 00 ; alternate "left-side" lever Level: Tutorial 19 - Trigger: plate (TutoL037-4663.lvl) ** This level also has 6 "pseudo items" corresponding to the 1st trigger block and the blocks that it affects. There are none for the other triggers. 6E 00 01 00 ; block data similar to switch/lever 10 5C 00 00 61 00 6F 00 64 00 00 02 00 00 ; except here byte 2 indicates an overlay 8E 00 ; $8E is marker (does it matter?) 00 19 1C 00 00 00 8A 13 00 00 ; trigger overlay 8D 00 ; overlay similar to switch/lever 00 ; except this byte $00 instead of $01 29 00 00 00 0C 80 2A 00 00 ; resource ID for plate trigger ; trigger info chunk 05 00 04 00 68 00 6D 00 63 00 66 00 6D 00 63 00 64 00 6D 00 63 00 62 00 6D 00 63 00 60 00 6D 00 63 00 0D ; trigger type: $0D for plates 02 00 ; phase in 01 ; single-use 00 00 Level: Tutorial 20 - Trigger: trip wire (TutoL039-4664.lvl) Byte offset $0036: trinity bomb detonated by 1st trip wire A7 00 0F 00 06 00 68 00 6D 00 62 00 01 00 Byte offset $023E: 1st trip wire block 6E 00 01 00 10 40 00 00 ; new value here 66 00 6F 00 63 00 00 01 00 00 ; no overlays 8D 00 ; note use of "trigger marker" 00 2D 03 00 00 ; new value here 0C ; $0C used in trigger overlays too 6C 2A 00 00 ; "x-axis-oriented" trip wire graphic ; trigger info chunk follows block data (no overlay) 01 00 04 00 ; 1 bomb controlled by trip wire 68 00 6D 00 62 00 ; coord of bomb 0E ; trigger type = $0E (same as invis.) 01 00 ; phase out 01 ; single-use 00 00 Byte offset $07F2: ; The "floor" block below the above trip wire ; is a "normal" block but contains one interesting ; change: 6E 00 01 00 11 5C 00 00 ; is this different because of trip wire? 66 00 6F 00 64 00 00 01 00 00 8E 00 00 19 1C 00 00 00 8C 13 00 00 Byte offset $0036: "cross" bomb A7 00 0F 00 04 00 69 00 6E 00 62 00 01 00 Byte offset $032A: trip wire block for the "cross" bomb 6E 00 01 00 ; same as 1st trip wire 10 40 00 00 67 00 70 00 63 00 00 01 00 00 8D 00 00 2D 03 00 00 0C 76 2A 00 00 ; except "y-axis-oriented" trip wire graphic 01 00 04 00 69 00 6E 00 62 00 0E 01 00 01 00 00 Byte offset $0960: "floor" block below this trip wire 6E 00 01 00 11 5C 00 00 ; again, this is $5C11 instead of $1C11 67 00 70 00 64 00 00 01 00 00 8E 00 00 19 1C 00 00 00 8C 13 00 00 The same patterns occur for all of the other trip wires in this level and for the floor blocks below them. Level: Tutorial 21 - Trigger: invisible (TutoL041-4665.lvl) 1st invisible trigger 6E 00 01 00 12 40 00 00 ; value different from trip wire 66 00 6D 00 63 00 00 01 00 00 8D 00 ; "trigger marker" 00 69 00 00 00 ; also different from trip wire 0C ; $0C used in trigger overlays too 8A 2A 00 00 ; invisible trigger ID 01 00 04 00 ; 1 block controlled by trigger 66 00 6D 00 64 00 ; coord of block to phase out 0E ; trigger type same as trip wire 01 00 ; phase out 01 ; single-use 00 00 floor block below the 1st trigger 6E 00 01 00 11 1C 00 00 ; has normal value unlike trip-wire floor blocks 66 00 6D 00 64 00 00 01 00 00 8E 00 00 19 1C 00 00 00 8C 13 00 00