MM1:List of Global Variables

As Magical Mary 1 uses GZDoom as its engine and its upgraded ACS (Action Code Scripting) language instead of ZScript, all of its scripts, global and level-specific, reference and edit "world" and "global"-scope variables.

These variables can be accessed by any script by mentioning its ID and variable type at the beginning of a script. Though these variable scopes normally behave differently between "hubs", with global variables staying as-is throughout an entire session while world variables are reset upon entering a new hub, Magical Mary 1 uses hubs internally for forcibly removing levels from save files. There can be 255 world scope and 64 global scope variables.

As Xane isn't the best ACS programmer, he uses world scope variables for things like user input, level properties, and player stats. As these are updated constantly, their automatic clearing at the beginning of each level does not matter. Global variables contain statistics, flags, and level completion information, which needs to be stored for the entire game. The list below shows any IDs that are currently in use by default, and these details: For more information about ACS variables and scopes, see the ZDoom Wiki.
 * Names
 * Types (arrays indicated by 🔱)
 * Purpose

World variables
The majority of "global variables". Normally, these would be reset after each hub, but since visiting a new level does that internally, they are practically reset every single level.

Near the end of this list, the "disable" variables are listed, which each have a type written in parentheses at the beginning of each one's description. The types are as follows:
 * Timer - The most common type of disable variable, an integer that counts down to 0 each tic. Set it to a number to disable the cooresponding feature, but please don't set a timer to zero manually; For the intended behavior, set it to 1 instead, which may run code on the next tic that safely re-enables the feature.
 * Counter - An integer that starts at 0, disabling the cooresponding feature any time it's higher than that. With these variables, multiple scripts can disable the feature, only enabling it again once it becomes 0 again. Only increment and decrement these variables, only setting them to zero when a level loads or the player's reset. (See the "ResetPlayer" script in PLAYERS.acs for an example of this.)
 * Counter - A simple boolean, only used in a couple cases for variables meant to be forcibly cleared upon another event occurring, such as the player landing.