* Eclipse 1.0, by Mizah. ** Initialization Routine starts here. * System Setup starts here, prepares and readies Eclipse's main basic functions for the system to work. (0:0) When everything is starting up, * Or, (0:100) When #1 seconds have passed, offset by #0, * And (If the 'Setup Procedure' has not already been run), (1:206) and variable #%ECL_SYS_SETUP.x is not equal to #1, * Reset the 'Dream's Variables'. (5:399) clear all variables to zero. * Set-Up Eclipse's 'System Variables'. (5:300) set variable #%ECL_SYS_SETUP.x to the value #1. (5:384) set variable #%ECL_SYS_NULL to the x,y position (#0,#0). (5:384) set variable #%ECL_SYS_VOID to the x,y position (#1337,#1337). (5:384) set variable #%ECL_SYS_POINTER to the x,y position (#0,#0). * System Setup ends here. --- <--> --- <--> --- <--> --- * Dream Setup starts here, measures the size of the dream and its 'in-boundaries area' total dimensions, and adapts an off-bounds area of the map as a physical array for data storage. * Copy the value of 'SYS_VOID' into a new variable that will be used to measure the size of the map later on, (5:301) copy the value of variable #%ECL_SYS_VOID into variable #%ECL_DATA_MAP_SIZE. (5:353) move the position in variable #%ECL_DATA_MAP_SIZE southeast (down and right) #1 step(s). * Copy the previously obtained dimensions into a new variable that will be used to measure the map's 'In-Boundaries' area size later on, (5:301) copy the value of variable #%ECL_DATA_MAP_SIZE into variable #%ECL_DATA_WORKAREA_END. * Calculate the Map's actual dimensions by adding '10 - X' & '9 - Y' to the 'DATA_MAP_SIZE' variable's X and Y integers. (5:302) take variable #%ECL_DATA_MAP_SIZE.x and add #10 to it. (5:302) take variable #%ECL_DATA_MAP_SIZE.y and add #9 to it. * Copy the previously calculated data into the 'Tracking Array' variable's 'X' integer followed by substracting '2' from it to obtain the X coordinate integer of the 'Data' array's coordinates. (5:301) copy the value of variable #%ECL_DATA_MAP_SIZE into variable #%ECL_DATA_ARRAY_START. (5:304) take variable #%ECL_DATA_ARRAY_START.x and subtract #2 from it. (5:300) set variable #%ECL_DATA_ARRAY_START.y to the value #0. * Copy the previously calculated data into the 'Tracking Array End' variable and substract 2 from its 'X' and 'Y' integers. (5:301) copy the value of variable #%ECL_DATA_MAP_SIZE into variable #%ECL_DATA_ARRAY_END. (5:304) take variable #%ECL_DATA_ARRAY_END.x and subtract #2 from it. (5:304) take variable #%ECL_DATA_ARRAY_END.y and subtract #1 from it. * Prepare the 'A' array. (5:301) copy the value of variable #%ECL_DATA_ARRAY_START into variable #%ECL_DATA_ARRAY_A. (5:304) take variable #%ECL_DATA_ARRAY_A.x and subtract #2 from it. (5:301) copy the value of variable #%ECL_DATA_ARRAY_A.x into variable #%ECL_DATA_ARRAY_B. * Prepare the 'B' array. (5:304) take variable #%ECL_DATA_ARRAY_B.x and subtract #2 from it. (5:301) copy the value of variable #%ECL_DATA_ARRAY_B.x into variable #%ECL_DATA_ARRAY_C. * Prepare the 'C' array. (5:304) take variable #%ECL_DATA_ARRAY_C.x and subtract #2 from it. (5:301) copy the value of variable #%ECL_DATA_ARRAY_C.x into variable #%ECL_DATA_ARRAY_D. * Prepare the 'D' array. (5:304) take variable #%ECL_DATA_ARRAY_D.x and subtract #2 from it. (5:301) copy the value of variable #%ECL_DATA_ARRAY_D.x into variable #%ECL_DATA_ARRAY_E. * Prepare the 'E' array. (5:304) take variable #%ECL_DATA_ARRAY_E.x and subtract #2 from it. * Prepare the entire 'Data' array storage area. (3:4) within the rectangle (#%ECL_DATA_ARRAY_E.x,#%ECL_DATA_ARRAY_E.y) - (#%ECL_DATA_ARRAY_END.x,#%ECL_DATA_ARRAY_END.y), (5:1) set the floor to type #%ECL_SYS_NULL.x. (5:4) place object type #%ECL_SYS_NULL.x. (5:44) place wall shape #%ECL_SYS_NULL.x with texture #%ECL_SYS_NULL.y. * Toggle the Setup's 'Status' to done. (5:300) set variable #%ECL_DATA_ARRAY_START.y to the value #1. * Calculate the map's 'Work Area' dimensions. (5:384) set variable #%ECL_DATA_WORKAREA_START to the x,y position (#8,#9). (5:353) move the position in variable #%ECL_DATA_WORKAREA_END southeast (down and right) #1 step(s). (5:304) take variable #%ECL_DATA_WORKAREA_END.x and subtract #4 from it. * Dream Setup ends here. --- <--> --- <--> --- <--> --- ** Initialization Routine ends here. --- <--> --- <--> --- <--> --- /!\ --- <--> --- <--> --- <--> --- ** PhoenixSpeak Pre-Setup starts here. * PhoenixSpeak Detection starts here. (0:9) When a furre arrives in the dream, * Or, (0:10) When a furre leaves the dream, * Reset the 'ECL_SYS_PS' variable for PhoenixSpeak Detection. (5:301) copy the value of variable #%ECL_SYS_NULL into variable #%ECL_SYS_PS. * Check for the presence of a 'PhoenixSpeak' database. (5:602) memorize that the PhoenixSpeak info {ECL_TMP_PS_CHECK} about this dream will now be #1. (5:612) remember the PhoenixSpeak info {ECL_TMP_PS_CHECK} about this dream, and put it in variable #%ECL_SYS_PS.x. (5:632) forget the PhoenixSpeak info {ECL_TMP_PS_CHECK} about this dream. * PhoenixSpeak Detection ends here. --- <--> --- <--> --- <--> --- ** PhoenixSpeak Pre-Setup ends here. --- <--> --- <--> --- <--> --- /!\ --- <--> --- <--> --- <--> --- ** Accounts Setup starts here. * Account Creation I. (Setup). (0:9) When a furre arrives in the dream, * Emit an entry message telling players that Eclipse is enabled on the dream. (5:200) emit message {Eclipse 1.0 Enabled Dream, a revised and modernized version of Quiddity Dream System 2.0.} to the triggering furre. * Reset the value of the variable 'ECL_SYSTEM_NEW_KEY' to prevent any possible 'Data' corruption. (5:301) copy the value of variable #%ECL_SYS_NULL into variable #%ECL_SYS_NEW_KEY. * Check if there are any available 'Data' array slots open. (5:510) set variable #%ECL_SYS_NEW_KEY.y to the X,Y position of a random spot where the floor is type #%ECL_SYS_NULL.x within the rectangle (#%ECL_DATA_ARRAY_E.x,#%ECL_DATA_ARRAY_E.y) - (#%ECL_DATA_ARRAY_END.x,#%ECL_DATA_ARRAY_END.y). * Assign an 'User Key' that will be checked later. (5:316) set the triggering furre's entry code to #%ECL_SYS_NEW_KEY.x. * Refresh the 'Population' data variable. (5:318) set variable #%ECL_DATA_POPULATION.x to the number of furres in the dream. * Account Creation I ends here. --- <--> --- <--> --- <--> --- * Account Creation II (Unsuccessful Key Creation) starts here. (0:9) When a furre arrives in the dream, * And the check for any free 'Data' arrays was unsuccessful. (1:208) and the X,Y position in variable #%ECL_SYS_NEW_KEY is the same as the position in variable #%ECL_SYS_NULL, * Notify the 'User' about the unavailability of User Accounts and eject them from the dream. (5:200) emit message {[%] Eclipse: Sorry [FURRE], but there are currently no available User Keys in the dream's database, please try again later. #SA} to the triggering furre. (5:78) eject the triggering furre. * Account Creation II ends here. --- <--> --- <--> --- <--> --- * Account Creation III (Successful Key Creation) starts here. (0:9) When a furre arrives in the dream, * And, if the previously assigned 'User Key' is available. (1:209) and the X,Y position in variable #%ECL_SYS_NEW_KEY is not the same as the position in variable #%ECL_SYS_NULL, * Free Up the 'Array' for the arriving User's data storage. (3:4) within the rectangle (#%ECL_DATA_ARRAY_E.x,#%ECL_SYS_NEW_KEY.y) - (#%ECL_DATA_ARRAY_A.x,#%ECL_SYS_NEW_KEY.y), (5:1) set the floor to type #%ECL_SYS_NULL.x. (5:4) place object type #%ECL_SYS_NULL.x. (5:63) place wall shape #%ECL_SYS_NULL.x at (#%ECL_SYS_NEW_KEY.x,#%ECL_SYS_NEW_KEY.y). * Account Creation III ends here. --- <--> --- <--> --- <--> --- * Account Creation IV (PhoenixSpeak Database Check). (0:9) When a furre arrives in the dream, * And, both of the previous checks were successful. (1:209) and the X,Y position in variable #%ECL_SYS_NEW_KEY is not the same as the position in variable #%ECL_SYS_NULL, (1:209) and the X,Y position in variable #%ECL_SYS_PS is not the same as the position in variable #%ECL_SYS_NULL, * Prepare the 'PhoenixSpeak' variable. (5:301) copy the value of variable #%ECL_SYS_NULL into variable #%ECL_SYS_PS_LOAD. (5:612) remember the PhoenixSpeak info {ECL_[FURRE]_PS} about this dream, and put it in variable #%ECL_SYS_PS_LOAD. --- <--> --- <--> --- <--> --- * Account Creation V (PhoenixSpeak Data Setup) starts here. (0:9) When a furre arrives in the dream, * And, all of the previous checks were successful. (1:209) and the X,Y position in variable #%ECL_SYS_NEW_KEY is not the same as the position in variable #%ECL_SYS_NULL, (1:209) and the X,Y position in variable #%ECL_SYS_PS_LOAD is not the same as the position in variable #%ECL_SYS_NULL, * Clear up the PhoenixSpeak Arrays of the new 'User Account'. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_A_x} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_A} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_A_y} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_B} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_B_x} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_C} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_B_y} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_D} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_C_x} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_E} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_C_y} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_F} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_D_x} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_G} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_D_y} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_H} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_E_x} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_I} about this dream will now be { }. (5:602) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_E_y} about this dream will now be #%ECL_SYS_NULL.x. (5:605) memorize that the PhoenixSpeak info {ECL_[FURRE]_DATA_J} about this dream will now be { }.