title Train background_color black verbose_logging ======== OBJECTS ======== Background Black Darkgray 00000 00000 00100 00000 00000 Wall Black 00000 00000 00000 00000 00000 Player Red .000. 0.0.0 00000 .000. .000. Cart Green Gray 00.00 00000 .0.0. 00000 00.00 Cart_Trail Lightgreen 00000 00000 00000 00000 00000 Horizontal_Track Gray 00000 ..... ..... ..... 00000 Vertical_Track Gray 0...0 0...0 0...0 0...0 0...0 Cross_Track Gray 0...0 ..... ..... ..... 0...0 Pad Red ..... .0.0. ..0.. .0.0. ..... Pad_Pressed Yellow ..... .0.0. ..0.. .0.0. ..... Pad_Active Green ..... .0.0. ..0.. .0.0. ..... Gate DARKBROWN Yellow 00000 0.0.0 0.0.0 0.0.0 00000 Goal Green Black ..... .000. .010. .000. ..... Temp TRANSPARENT Stay TRANSPARENT Spawn_Cart TRANSPARENT ======= LEGEND ======= . = Background - = Horizontal_Track l = Vertical_Track + = Cross_Track 0 = Pad _ = Pad and Horizontal_Track I = Pad and Vertical_Track T = Pad and Cross_Track # = Wall P = Player C = Cart G = Gate X = Goal Inactive_Pad = Pad or Pad_Pressed track = Horizontal_Track or Vertical_Track or Cross_Track hidden = Cart_Trail or Spawn_Cart top = Player or Cart or Wall or Gate ======= SOUNDS ======= sfx0 60488706 sfx1 46219306 endlevel 25932900 ================ COLLISIONLAYERS ================ Background Temp Pad, Pad_Pressed, Pad_Active Goal hidden track top Stay ====== RULES ====== (* Time Passes Only When Player Moves or Action Is Pressed *) (Keep track of where Player is, unless action is pressed) [Stay] -> [] [Player] -> [Player Stay] [action Player Stay] -> [action Player] (* Push Carts *) (Player pushes Cart if Cart is not blocked) [> Player | Cart] -> [> Player | > Cart] [> Player | > Cart | Top] -> [Player | Cart | Top] (* Move Carts Along The Track *) (An unpushed Cart on a Track will spawn new Carts on neighboring Track) (Carts cannot spawn where there are objects or Cart_Trails) [Stationary Cart Track| Track no Top no Cart_Trail] -> [Stationary Cart Track| Track no Top no Cart_Trail Spawn_Cart] (Clear all Cart_Trails) [Cart_Trail]-> [] (Turn all unpushed Carts into Cart_Trails) [Stationary Cart Track] -> [Cart_Trail Track] (Spawn new Carts) [Spawn_Cart] -> [Cart] (* Are All Pads Covered By Crates? *) (While Temp exists, maybe all Pads are covered by Crates) late random [] -> [Temp] (If there is some Pad that has no Cart, then not all Pads are covered) late [Temp][Inactive_Pad no Cart] -> [][Inactive_Pad no Cart] (If Temp still exists, then all Pads are covered, so:) (Set all Pads to the activated state (Green) ) late [Temp][Inactive_Pad] -> [Temp][Pad_Active] (Destroy all Gates) late [Temp][Gate] -> [Temp][] sfx0 (* Otherwise *) (If an unpressed Pad (Red) is covered by a Cart, that Pad is now pressed.) late [Pad Cart] -> [Pad_Pressed Cart] sfx1 (If a pressed Pad (Yellow) is not covered by a Cart, that Pad is now unpressed.) late [Pad_Pressed no Cart] -> [Pad no Cart] (* Cancel Turn If Player Has Not Moved or Pressed Action *) late [Player Stay] -> cancel ============== WINCONDITIONS ============== All Goal on Player ======= LEVELS ======= Message action = wait ########## #0.C.P.GX# ########## ####### #I##### #l###X# #+-_#.# #l###G# #l.C.P# ####### ######### #+-----_# #l......# #l..C...# #l....#G# #I..P##X# ######### ####### #_---_# ###.### ###.### ###.### #-----# ###C### ###.### ###PGX# ####### ######## #_--.GX# ###.#### #----+## ###.#l## #...#l## #.###l## #----+## #C###### #.###### #P###### ######## ######## #+----+# #l....l# #l....l# #+----+# #......# #.PC...# #....### ##00.GX# ######## ########## #+----+### #l....l### #l....l### #+----+-_# #l..C..### #I...P.GX# ########## Message Fin