DSPK V04.00 Furcadia ----------- DREAM ENTRY ----------- (0:9) When a furre arrives in the dream, (5:15) move the triggering furre to (12,10), or to someplace nearby if it's occupied. ----------------- STARTUP PROCEDURE ----------------- (0:100) When 1 seconds have passed, offset by 0, (1:206) and variable %Startup is not equal to 1, (5:384) set variable %NW to the x,y position (8,12). (5:384) set variable %NewNW to the x,y position (10,13). (5:384) set variable %SE to the x,y position (12,16). (5:384) set variable %NewSE to the x,y position (14,17). (5:384) set variable %Signal to the x,y position (12,17). (5:300) set variable %Move to the value 0. (5:300) set variable %Enable to the value 0. (5:210) set entrytext to {Welcome to Raeburn's multi-stop train system. Special thanks to the Helper Beekins and Unix for testing. #SO} ----------------------- STOP COMMAND AND SIGNAL ----------------------- (0:31) When a furre says {Stop}, (5:300) set variable %Move to the value 0. (5:300) set variable %Enable to the value 0. ------------- COMMAND ERROR (WHEN MOVE IS NOT ZERO) ------------- (0:31) When a furre says {Forward}, (1:206) and variable %Move is not equal to 0, (5:200) emit message {Are you trying to damage the train!? Use 'Stop' before changing directions} to the triggering furre. (0:31) When a furre says {Reverse}, (1:206) and variable %Move is not equal to 0, (5:200) emit message {Are you trying to damage the train!? Use 'Stop' before changing directions} to the triggering furre. ---------- SE COMMAND ---------- (0:31) When a furre says {Forward}, (1:200) and variable %Move is equal to 0, (5:384) set variable %NewSE to the x,y position (%SE). (5:353) move the position in variable %NewSE southeast (down and right) 1 step(s). (5:384) set variable %NewNW to the x,y position (%NW). (5:353) move the position in variable %NewNW southeast (down and right) 1 step(s). (5:384) set variable %Signal to the x,y position (%SE). (5:354) move the position in variable %Signal southwest (down and left) 1 step(s). (5:300) set variable %Move to the value 1 . (5:200){FORWARD STEAM!} ---------- NW COMMAND ---------- (0:31) When a furre says {Reverse}, (1:200) and variable %Move is equal to 0, (5:384) set variable %NewSE to the x,y position (%SE). (5:355) move the position in variable %NewSE northwest (up and left) 1 step(s). (5:384) set variable %NewNW to the x,y position (%NW). (5:355) move the position in variable %NewNW northwest (up and left) 1 step(s). (5:384) set variable %Signal to the x,y position (%NW). (5:354) move the position in variable %Signal southwest (down and left) 1 step(s) (5:300) set variable %Move to the value 2 . (5:200){REVERSE STEAM!} --------------------------- ALL ABOARD! (TRAIN STARTUP) --------------------------- (0:31) When a furre says {Last Call!}, (1:200) and variable %Enable is equal to 0, (5:50) set countdown timer 1 to go off in 4 seconds. (0:50) When countdown timer 1 goes off, (5:300) set variable %Enable to the value 1. (5:202) emit message {Stand clear of the tracks!} to every furre who can see (%SE). -------------------- THROW STATION SIGNAL -------------------- (0:2) When somebody moves into floor type 178, (1:15) and the triggering furre is facing southwest (down and left), (3:6) where the triggering furre moved into, (5:6) swap object types 163 and 164. (3:11) 2 step(s) in front of the triggering furre, (5:3) swap floor types 180 and 183. ------- SE MOVE ------- (0:100) When 1 seconds have passed, offset by 0, (1:200) and variable %Move is equal to 1, (1:1012) and position (%Signal) is not floor type 180, (4:1) only where the floor is type 177, (3:2) at position (%NewSE) on the map, (5:23) swap the object with the object at (%SE). (3:2) at position (%SE) on the map, (5:23) swap the object with the object at (%NewNW). (3:2) at position (%NW) on the map, (5:23) swap the object with the object at (%NewNW). (3:17) in a line starting at (%SE) and going 4 more spaces northwest. (5:81) move any furre present 1 step(s) southeast (down and right) if there's nobody already there. (5:354) move the position in variable %NW southwest (down and left) 1 step(s). (5:354) move the position in variable %SE southwest (down and left) 1 step(s). (5:354) move the position in variable %NewNW southwest (down and left) 1 step(s). (5:354) move the position in variable %NewSE southwest (down and left) 1 step(s). (5:354) move the position in variable %Signal southwest (down and left) 1 step(s). ------- NW MOVE ------- (0:100) When 1 seconds have passed, offset by 0, (1:200) and variable %Move is equal to 2, (1:200) and variable %Enable is equal to 1, (1:1012) and position (%Signal) is not floor type 180, (4:1) only where the floor is type 177, *Endtriggers* 8888 *Endtriggers*