* 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 {<a href="...">Eclipse 1.0</a> Enabled Dream, a revised and modernized version of <a href="">Quiddity Dream System 2.0</a>.} 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 {<b>[%] Eclipse</b>: 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 { }.