<?xml version="1.0" encoding="UTF-8" ?>

<!-- Before checking the documentation in, make sure that it validates by
     going to http://www.corefiling.com/opensource/schemaValidate.html and using
     Lua.xsd for the XML Schema and this file for the XML Instance. -->

<!-- Using Link:
     If you leave out the text (i.e., <Link ... />), it tries to output what
     you would want.

     To add a link to a function in the current class:
     <Link function='addx' /> -> Actor.addx()
     To add a link to a function in another class:
     <Link class='ActorFrame' function='propagate' /> -> ActorFrame.propagate()
     To add a link to a class:
     <Link class='ActorFrame' /> -> ActorFrame
     To add a link to a global function:
     <Link class='GLOBAL' function='Basename' /> -> Basename()
     To add a link to an Enum:
     <Link class='ENUM' function='CoinMode' /> -> CoinMode

save yourself some time, copy this for undocumented things:
<Function name='' return='' arguments=''>

	</Function>
  -->

<Documentation xmlns='http://www.stepmania.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.stepmania.com Lua.xsd'>
<!-- Global functions -->
<GlobalFunctions>
	<Description>
		Many global functions are available when scripting with Lua for StepMania.<br />
		Some, like <Link class='GLOBAL' function='collectgarbage' />, are core functions of Lua 5.1's <a href="https://www.lua.org/manual/5.1/manual.html#5.1" target="_blank" rel="noopener noreferrer">basic Library</a>.<br />
		Others, like <Link class='GLOBAL' function='Basename' />, are defined in the StepMania engine's C++ but made available to Lua.<br />
		And others, like <Link class='GLOBAL' function='DeepCopy' />, are defined in the _fallback theme's Lua files.<br />
		When scripting with StepMania, keep in mind that if you do not scope your functions (and variables) using the <code>local</code> keyword, they will be global.
	</Description>
	<Function name='AllowOptionsMenu' theme='_fallback' return='bool' arguments=''>
		[03 Gameplay.lua] Returns <code>false</code> if the player should be disallowed from entering the options menu from ScreenSelectMusic (i.e. during <Link class='GameState' function='IsAnExtraStage'>an ExtraStage</Link> or when the <Link class='ENUM' function='PlayMode' /> is Oni).  Returns <code>true</code> otherwise.
	</Function>
	<Function name='Alpha' theme='_fallback' return='color' arguments='color c, float percent'>
		[02 Colors.lua] Returns a <code>color</code> with HSV values matching <code>c</code> and alpha set to <code>percent</code>, where <code>percent</code> is in the range <code>0</code>..<code>1</code>.
	</Function>
	<Function name='approach' return='float' arguments='float current, float goal, float speed'>
		Use this to make a current value approach a goal value at the given speed.  Speed must not be negative.  The value will not overshoot the goal.<br />
		Note:  When you see the error "approach: speed 1 is negative." it means that the speed value passed was negative.  The 1 is there because approach and multiapproach use the same internal function and can be ignored when using approach.
	</Function>
	<Function name='ArbitrarySpeedMods' theme='_fallback' return='LuaOptionRow' arguments=''>
		[03 CustomSpeedMods.lua] Returns an <Link class='OptionRow' /> of speed mod choices generated from the comma-delimited list in <em>SpeedMods.txt</em> in the root of the current Profile directory (player if available, machine otherwise).
	</Function>
	<Function name='AreStagePlayerModsForced' theme='_fallback' return='bool' arguments=''>
		[02 StageMods.lua] Returns <code>true</code> if player modifiers should be forced.  This is effectively the negation of <Link class='GLOBAL' function='AllowOptionsMenu' />.
	</Function>
	<Function name='AreStageSongModsForced' theme='_fallback' return='bool' arguments=''>
		[02 StageMods.lua] Returns <code>true</code> if song modifiers should be forced (i.e. during <Link class='GameState' function='IsAnExtraStage'>an ExtraStage</Link>, or when the <Link class='ENUM' function='PlayMode' /> is Oni, Battle, or Rave).
	</Function>
	<Function name='assert' return='various' arguments='LuaReference v, string sAssertMessage'>
		Issues an error when <code>v</code> is <code>false</code> (or <code>nil</code>). Returns all arguments otherwise. <code>sAssertMessage</code> is an optional error message (the default is "assertion failed!").<br />
		<code>assert</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='ArgsIfPlayerJoinedOrNil' theme='_fallback' return='various, various' arguments='various arg1, various arg2'>
		[02 Utilities.lua] Returns two results.<br />
		If P1 <Link class='GameState' function='IsSideJoined'>is joined</Link>, the first return value will be <code>arg1</code>, and <code>nil</code> otherwise.<br />
		If P2 is joined, the second return value will be <code>arg2</code>, and <code>nil</code> otherwise.
	</Function>
	<Function name='BGFitChoiceExample' theme='_fallback' return='ActorFrame' arguments='table params'>
		[04 SetBGFitHelpers.lua] Returns an ActorFrame containing examples of how a given background image (with set aspect ratio) will appear in a particular <Link class='ENUM' function='BackgroundFitMode' />.<br />
		The _fallback theme uses this to visually represent choices for ScreenSetBGFit, intended to help players choose a BackgroundFitMode preference.
	</Function>
	<Function name='BGFitInputActor' theme='_fallback' return='ActorFrame' arguments='table choices, function LoseFocus, function GainFocus'>
		[04 SetBGFitHelpers.lua] Returns an ActorFrame with an <Link class='Screen' Function='AddInputCallback'>InputCallback</Link> attached.<br />
		The _fallback theme uses this to manage input on ScreenSetBGFit, intended to help players choose a <Link class='ENUM' function='BackgroundFitMode' /> preference.
	</Function>
	<Function name='Basename' return='string' arguments='string path'>
		Returns the last named component of <code>path</code>.  For example, passing in <code>"/path/to/file.txt"</code> will return <code>"file.txt"</code>, while <code>"/path/to/some/directory/"</code> will return <code>"directory"</code>.
	</Function>
	<Function name='BinaryToHex' return='string' arguments='string s'>
		Converts a binary formatted string to hexadecimal format.
		This can be useful in conjunction with <Link class='CryptManager' />'s MD5 and SHA functions.
	</Function>
	<Function name='BoostColor' theme='_fallback' return='color' arguments='color c, float fBoost'>
		[02 Colors.lua] Returns the color that results from multiplying <code>c</code>'s R, G, and B values by <code>fBoost</code>.
	</Function>
	<Function name='Brightness' theme='_fallback' return='color' arguments='color c, float percent'>
		[02 Colors.lua] Modifies the brightness of the specified color.
	</Function>
	<Function name='Center1Player' theme='_fallback' return='bool' arguments=''>
		[02 Utilities.lua] Returns <code>true</code> if the <code>Center1Player</code> preference is enabled during single style.   Returns <code>true</code> when the style is double or routine, regardless of the <code>Center1Player</code> preference.<br />
		Returns <code>false</code> otherwise.
	</Function>
	<Function name='CheckpointsTapsSeparateJudgment' theme='_fallback' return='bool' arguments=''>
		[03 Gameplay.lua] Returns <code>true</code> if checkpoint judgments and tap judgments
		are considered separate, or <code>false</code> otherwise.
	</Function>
	<Function name='clamp' return='float' arguments='float fValue, float fLow, float fHigh'>
		CLAMP is an all-female Japanese mangaka group that formed in the mid 1980s.
		Erm, I mean... Clamps <code>fValue</code> between <code>fLow</code> and <code>fHigh</code>.
	</Function>
	<Function name='CloseConnection' return='bool' arguments=''>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='collectgarbage' return='void' arguments='string opt, float arg'>
		A generic interface to Lua's garbage collector. Performs different functions based on the value of <code>opt</code>.<br />
		<code>collectgarbage</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='color' return='color' arguments='string color'>
		Returns a color from a string. <code>color</code> can be in hex (<code>"#FFFFFFFF"</code>) or 0..1 values (<code>"1.0,1.0,1.0,1.0"</code>), in RGBA order.
	</Function>
	<Function name='ColorDarkTone' theme='_fallback' return='color' arguments='color c'>
		[02 Colors.lua] Returns a darker tone of the color. (Specifically <code>c[1]/2, c[2]/2, c[3]/2, c[4]</code>)
	</Function>
	<Function name='ColorLightTone' theme='_fallback' return='color' arguments='color c'>
		[02 Colors.lua] Returns a lighter tone of the color. (Specifically <code>c[1]+(c[1]/2), c[2]+(c[2]/2), c[3]+(c[3]/2), c[4]</code>)
	</Function>
	<Function name='ColorMidTone' theme='_fallback' return='color' arguments='color c'>
		[02 Colors.lua] Returns a midtone of the color. (Specifically <code>c[1]/1.5, c[2]/1.5, c[3]/1.5, c[4]</code>)
	</Function>
	<Function name='ColorToHex' theme='_fallback' return='string' arguments='color c'>
		[02 Colors.lua] Accepts a color and returns the hex representation.  For example, passing in <code>{1, 0, 0.4, 1}</code> will return <code>"FF0066FF"</code>.
	</Function>
	<Function name='ColorToHSV' theme='_fallback' return='table' arguments='color c'>
		[02 Colors.lua]  Accepts a color and returns a table with the HSV values, indexed by <code>Hue</code>, <code>Sat</code>, <code>Value</code>, and <code>Alpha</code>.
	</Function>
	<Function name='ComboContinue' theme='_fallback' return='TapNoteScore' arguments=''>
		[03 Gameplay.lua] Determines what TapNoteScore allows for continuing the combo.
	</Function>
	<Function name='ComboMaintain' theme='_fallback' return='TapNoteScore' arguments=''>
		[03 Gameplay.lua] Determines what TapNoteScore allows for maintaining the combo.
	</Function>
	<Function name='ComboPerRow' theme='_fallback' return='bool' arguments=''>
		[03 Gameplay.lua] Determines if combo should be per row (Jump = 1) or per column (Jump = 2).
	</Function>
	<Function name='ComboTransformCommand' theme='_fallback' return='void' arguments='Actor self, params p'>
		[02 Other.lua] Defines the transform function used to position player combo during gameplay.  <code>params</code> will contain two boolean values indexed by <code>bReverse</code> and <code>bCentered</code>.<br />
		Not intended to be called directly by themes.
	</Function>
	<Function name='commify' return='string' arguments='string number, string comma, string dot'>
		This will take the number and insert a comma every three digits, as normal in English for writing large numbers.<br />
		<code>number</code> can be a string, an integer, or a float.<br />
		<code>comma</code> is an optional argument that is used instead of a comma.<br />
		"commify(1234, 'cat')" will result in "1cat234".<br />
		<code>dot</code> is an optional argument that is used instead of a dot to find the end of the part that should be commified.<br />
		"commify('1234cat5678', ',', 'cat')" will result in "1,234cat5678", but "commify('1234cat5678')" will result in "12,34c,at5,678".<br />
		The <code>comma</code> and <code>dot</code> arguments are provided to ease compliance with locales or languages that do not use comma and dot in numbers the way English does.
	</Function>
	<Function name='ConnectToServer' return='bool' arguments='string sAddress'>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='CourseDifficultyToLocalizedString' return='string' arguments='Difficulty d'>
		Returns <Link class='ENUM' function='Difficulty' /> <code>d</code> localized for the current language using strings defined under <code>[CourseDifficulty]</code>.
	</Function>
	<Function name='CourseTypeToLocalizedString' return='string' arguments='CourseType ct'>
		Returns <Link class='ENUM' function='CourseType' /> <code>ct</code> localized for the current language using strings defined under <code>[CourseType]</code>.
	</Function>
	<Function name='convert_text_to_indented_lines' theme='_fallback' return='table' arguments='BitmapText text, int indent, float width, float text_zoom'>
		[02 Utilities.lua] Utillity function used to format log output for presenting on-screen.  <code>indent</code> is the number of pixels to indent lines.  <code>width</code> is the width in pixels that lines should be constrained to.
	</Function>
	<Function name='convert_xml_bgs' return='' arguments='string dir'>
		Recursively searches <code>dir</code> for xml files of actors and converts them to equivalent lua files.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/XmlToLua.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/XmlToLua.txt</a>.
	</Function>
	<Function name='create_bezier' return='RageBezier2D' arguments=''>
		Creates a RageBezier2D for you to use.  Make sure you destroy the RageBezier2D when you're done with it, or you will have a memory leak.
	</Function>
	<Function name='create_spline' return='CubicSplineN' arguments=''>
		Creates a CubicSplineN for you to use.  Make sure you <Link class='CubicSplineN' function='destroy'>destroy</Link> the CubicSplineN when you're done with it, or you will have a memory leak.
	</Function>
	<Function name='CustomDifficultyToColor' theme='_fallback' return='color' arguments='string cd'>
		[02 Colors.lua]
	</Function>
	<Function name='CustomDifficultyToDarkColor' theme='_fallback' return='color' arguments='string cd'>
		[02 Colors.lua]
	</Function>
	<Function name='CustomDifficultyToLightColor' theme='_fallback' return='color' arguments='string cd'>
		[02 Colors.lua]
	</Function>
	<Function name='CustomDifficultyToLocalizedString' return='string' arguments='string cd'>
		Returns <code>cd</code> localized for the current language using strings defined under <code>[CustomDifficulty]</code>.
	</Function>
	<Function name='DayOfMonth' return='int' arguments=''>
		Returns the current day of the month in the range <code>1</code>-<code>31</code>.
	</Function>
	<Function name='DayOfYear' return='int' arguments=''>
		Returns the current day of the year in the range <code>0</code>-<code>365</code>.
	</Function>
	<Function name='DeepCopy' theme='_fallback' return='table' arguments='table from, table to, table already_copied'>
		[02 Serialize] Recursively deep-copy a table.
	</Function>
	<Function name='dofile' theme='_fallback' return='chunk' arguments='string sFilePath'>
		<code>dofile</code> is normally a core function of Lua's basic library.  StepMania overrides this in
		[01 base.lua] to use <Link function='loadfile'>loadfile</Link>, which itself has been overridden.
	</Function>
	<Function name='EvalUsesCheckpointsWithJudgments' theme='_fallback' return='bool' arguments=''>
		[03 Gameplay.lua]
	</Function>
	<Function name='FailCombo' theme='_fallback' return='int' arguments=''>
		[03 Gameplay.lua]
	</Function>
	<Function name='fapproach' theme='_fallback' return='float' arguments='float val, float other_val, float to_move'>
		[02 Utilities.lua] Old name for approach.
	</Function>
	<Function name='find_missing_strings_in_theme_translations' return='' arguments='string theme_name, string master_lang_name'>
		This function creates files in the theme's Languages folder listing all the strings that have no translation and all the strings that are unused.<br />
		Strings that do not have an entry in the master language are considered unused.<br />
		<code>master_lang_name</code> is the name of the ini file that contains the language with all strings used by the theme.<br />
		Example:  find_missing_strings_in_theme_translations( "my_best_theme", "en.ini" )
	</Function>
	<Function name='FindSelection' theme='_fallback' return='int' arguments='table list'>
		[02 Utilities.lua] Return the index of a true value in <code>list</code>.
	</Function>
	<Function name='FindValue' theme='_fallback' return='string' arguments='table tab, various value'>
		[02 Utilities.lua] Find a key in <code>tab</code> with the given <code>value</code>.
	</Function>
	<Function name='foreach_ordered' theme='_fallback' return='void' arguments='table t, function f'>
		<code>f</code> takes a key and a value.
	</Function>
	<Function name='force_to_range' theme='default' return='float' args='float min, float number, float max'>
	</Function>
	<Function name='FormatNumberAndSuffix' return='string' arguments='int num'>
		Returns the number passed to the function followed by its suffix (&quot;th&quot;, &quot;nd&quot;, and so on).
	</Function>
	<Function name='FormatNumSongsPlayed' return='string' arguments='int num'>
		[02 Other.lua] Concatenates <code>num</code> with " songs played" and returns the resulting string.
	</Function>
	<Function name='FormatPercentScore' return='string' arguments='float fPercentDancePoints'>
		Returns <code>fPercentDancePoints</code> formatted as a percentage.
	</Function>
	<Function name='GameCompatibleModes' theme='_fallback' return='string' arguments=''>
		[03 Gameplay.lua] Returns a list of valid styles for the current gametype.
	</Function>
	<Function name='GetCodeForGame' theme='_fallback' return='string' arguments=''>
		[03 Gameplay.lua]
	</Function>
	<Function name='GetCoursesToShowRanking' theme='_fallback' return='string' arguments=''>
		[02 Other.lua] Returns the value of the <code>CoursesToShowRanking</code> preference if it is not an empty string.<br />
		Otherwise, returns a comma-delimited set of paths to the .crs files included with StepMania as a string.  This string is hardcoded and does not accurately reflect whether those crs files exist in the filesystem.
	</Function>
	<Function name='GetCustomDifficulty' return='string' arguments='StepsType st, Difficulty d, CourseType ct'>
		Returns the corresponding CustomDifficulty string for a StepsType/Difficulty (/optional CourseType) combination.
	</Function>
	<Function name='GetDirectRadar' theme='_fallback' return='RadarValues' arguments='PlayerNumber pn'>
		[04 Scoring.lua] "Get the radar values directly. The individual steps aren't used much."
	</Function>
	<Function name='GetEditModeSubScreens' theme='_fallback' return='string' arguments=''>
		[02 Other.lua] Returns a string with the Edit Mode SubScreens.
	</Function>
	<Function name='getenv' theme='_fallback' return='various' arguments='string name'>
		[03 EnvUtils2.lua] Returns the value of <code>name</code> from the Env table.
	</Function>
	<Function name='GetExtraColorThreshold' theme='_fallback' return='int' arguments=''>
		[03 Gameplay.lua] Returns the number at which the Extra color should be used.
	</Function>
	<Function name='GetGradeFromPercent' return='Grade' arguments='float fPercent, bool bMerciful'>
		Returns a corresponding <Link class='ENUM' function='Grade' /> for the given percentage.
	</Function>
	<Function name='GetLifeDifficulty' return='int' arguments=''>
		Returns the current Life difficulty in the range of <code>1</code>-<code>7</code>
	</Function>
	<Function name='get_music_file_length' return='float' arguments='string path'>
		Returns the length of the music file found at <code>path</code> in seconds.<br />
		If the file has already been loaded into an ActorSound, use <Link class='ActorSound' function='get' /> to get its <code>RageSound</code>, and then use <Link class='RageSound' function='get_length' /> to avoid loading the file twice.
	</Function>
	<Function name='get_sound_driver_list' return='table' arguments=''>
		Returns a table of the names of the sound drivers available.  If the SoundDriver preference is set to something that is not in this list, StepMania will not start up.  Changes to the SoundDriver preference do not take effect until the next time StepMania starts up.
	</Function>
	<Function name='GetPlayerOrMachineProfile' theme='_fallback' return='Profile' arguments='PlayerNumber pn'>
		[02 Utilities.lua] "This returns a profile, preferably a player one. If there isn't one, [it falls] back on the machine profile."
	</Function>
	<Function name='GetProTiming' theme='default' return='bool' arguments='PlayerNumber pn'>
		[03 ThemePrefs.lua] Returns <code>true</code> if player <code>pn</code> is using the <em>ProTiming</em> <Link class='GLOBAL' function='GetUserPref'>UserPref</Link>.
	</Function>
	<Function name='GetRandomSongBackground' theme='_fallback' return='string' arguments=''>
		[02 Utilities.lua] Returns a path to a random song background.
	</Function>
	<Function name='GetReal' theme='_fallback' return='float' arguments=''>
		[02 Actor.lua]
	</Function>
	<Function name='GetRealInverse' theme='_fallback' return='float' arguments=''>
		[02 Actor.lua]
	</Function>
	<Function name='GetScreenAspectRatio' return='float' arguments=''>
		Returns the screen display aspect ratio (i.e. the <code>DisplayAspectRatio</code> preference).
	</Function>
	<Function name='GetServerName' return='string' arguments=''>
		[Deprecated] Always returns <code>""</code>.
	</Function>
	<Function name='GetSongBackground' theme='_fallback' return='string' arguments=''>
		[02 Utilities.lua] Returns a path to the current songs background.
	</Function>
	<Function name='GetSpeedModeAndValueFromPoptions' theme='_fallback' return='float' arguments=''>
		[03 Gameplay.lua]
	</Function>
	<Function name='GetTapPosition' theme='_fallback' return='int, string' arguments='PlayerNumber pn'>
		[03 CustomSpeedMods.lua]
	</Function>
	<Function name='GetThemeAspectRatio' return='float' arguments=''>
		Returns the theme's aspect ratio.<br />
		Specifically, this is the result of dividing <code>ScreenWidth</code> by <code>ScreenHeight</code> as each is defined under the theme's <code>[Common]</code> metric.
	</Function>
	<Function name='GetThemePref' theme='_fallback' return='various' arguments='string pref'>
		[03 ThemePrefs.lua] Alias for <Link class='ThemePrefs' function='Get' />.
	</Function>
	<Function name='GetTimingDifficulty' return='int' arguments=''>
		Returns the current Timing difficulty in the range of <code>1</code>-<code>9</code>.
	</Function>
	<Function name='GetTimeSinceStart' return='float' arguments=''>
		Returns the current time since the program was started.  Includes time that was spent loading songs.
	</Function>
	<Function name='GetTitleSafeH' theme='_fallback' return='float' arguments='float fPercent'>
		[01 alias.lua]
	</Function>
	<Function name='GetTitleSafeV' theme='_fallback' return='float' arguments='float fPercent'>
		[01 alias.lua]
	</Function>
	<Function name='GetTotalItems' theme='_fallback' return='float' arguments='RadarValues radars'>
		[04 Scoring.lua] "Retrieve the amount of taps/holds/rolls involved." Used in some scoring formulas.
	</Function>
	<Function name='GetUserPref' theme='_fallback' return='string' arguments='string name'>
		[03 UserPreferences2.lua] Themer-facing function for getting a user preference.
	</Function>
	<Function name='GetUserPrefB' theme='_fallback' return='bool' arguments='string name'>
		[03 UserPreferences2.lua] Themer-facing function for getting a user preference as a boolean.
	</Function>
	<Function name='GetUserPrefC' theme='_fallback' return='color' arguments='string name'>
		[03 UserPreferences2.lua] Themer-facing function for getting a user preference as a color.
	</Function>
	<Function name='GetUserPrefN' theme='_fallback' return='float' arguments='string name'>
		[03 UserPreferences2.lua] Themer-facing function for getting a user preference as a number.
	</Function>
	<Function name='HasAlpha' theme='_fallback' return='float' arguments='color c'>
		[02 Colors.lua] Returns the color's alpha if it has any, otherwise returns 1.
	</Function>
	<Function name='HitCombo' theme='_fallback' return='int' arguments=''>
		[03 Gameplay.lua] Returns the value to start showing the combo at.
	</Function>
	<Function name='HoldHeadStep' theme='_fallback' return='bool' arguments=''>
		[03 Gameplay.lua] Returns <code>true</code> if you need to step on hold heads to activate them.
	</Function>
	<Function name='HoldTiming' theme='_fallback' return='float' arguments=''>
		[03 Gameplay.lua] Returns 0 when the current <Link class='Game' /> is pump.  Returns the <code>TimingWindowSecondsHold</code> preference value in other games.
	</Function>
	<Function name='Hour' return='int' arguments=''>
		Returns the current hour.
	</Function>
	<Function name='HSV' theme='_fallback' return='color' arguments='float hue, float saturation, float value'>
		[02 Colors.lua] Converts a color from HSV values to something StepMania can understand.<br />
		<code>hue</code> is from <code>0</code>-<code>360</code><br />
		<code>saturation</code> and <code>value</code> are <code>0</code>..<code>1</code>
	</Function>
	<Function name='HSVA' theme='_fallback' return='color' arguments='float hue, float saturation, float value, float alpha'>
		[02 Colors.lua] Converts a color from HSV values with alpha to something StepMania can understand.<br />
		hue is from <code>0</code>-<code>360</code><br />
		<code>saturation</code>, <code>value</code>, and <code>alpha</code> are <code>0</code>..<code>1</code>
	</Function>
	<Function name='HSVToColor' theme='_fallback' return='color' arguments='table hsv'>
		[02 Colors.lua] Converts a table of HSV values to a color.<br />
		The <code>hsv</code> table should use indexes <code>Hue</code>, <code>Sat</code>, <code>Value</code>, <code>Alpha</code>.
	</Function>
	<Function name='HSVToHex' theme='_fallback' return='string' arguments='table hsv'>
		[02 Colors.lua] Accepts a table of HSV values and returns the hex representation.
		The <code>hsv</code> table should use indexes <code>Hue</code>, <code>Sat</code>, <code>Value</code>, <code>Alpha</code>.
	</Function>
	<Function name='Hue' theme='_fallback' return='color' arguments='color c, int newHue'>
		[02 Colors.lua] Changes the hue of the input color.
	</Function>
	<Function name='InitUserPrefs' theme='default' return='void' arguments=''>
		[03 ThemePrefs.lua] Initializes various user preferences.
	</Function>
	<Function name='ipairs' theme='_fallback' return='function, table, int' arguments='table t'>
		Returns three values: an iterator function, the table <code>t</code>, and <code>0</code>,
		so that the construction <code>for i,v in ipairs(t) do body end</code>
		will iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the first integer key absent from the table.<br />
		<code>ipairs</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='IsArcade' theme='_fallback' return='bool' arguments=''>
		[02 Utilities.lua] Returns <code>true</code> if the coin mode is not set to <Link class='ENUM' function='CoinMode'>CoinMode_Home</Link>.
	</Function>
	<Function name='IsCourse' theme='_fallback' return='bool' arguments=''>
		Returns <code>true</code> if the current <Link class='ENUM' function='PlayMode' /> is Nonstop, Oni, or Endless.<br />
		This is effectively the same as <Link class='GameState' function='IsCourseMode' />.
	</Function>
	<Function name='IsFreePlay' theme='_fallback' return='bool' arguments=''>
		[02 Utilities.lua] Returns <code>true</code> if <Link function='IsArcade'>IsArcade()</Link> and the coin mode is <Link class='ENUM' function='CoinMode'>CoinMode_Free</Link>.
	</Function>
	<Function name='IsGame' theme='_fallback' return='bool' arguments='string sGame'>
		[03 Gameplay.lua] Returns <code>true</code> if the current game is <code>sGame</code>.
	</Function>
	<Function name='IsHome' theme='_fallback' return='bool' arguments=''>
		[02 Utilities.lua] Returns <code>true</code> if the coin mode is set to <Link class='ENUM' function='CoinMode'>CoinMode_Home</Link>.
	</Function>
	<Function name='IsNetConnected' return='bool' arguments=''>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='IsNetSMOnline' return='bool' arguments=''>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='IsSMOnlineLoggedIn' return='bool' arguments='PlayerNumber pn'>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='IsW1Allowed' theme='_fallback' return='bool' arguments='TapNoteScore tns'>
		[04 Scoring.lua] Returns <code>true</code> if W1 is allowed (and <code>tns == 'TapNoteScore_W2'</code>)
	</Function>
	<Function name='IsRoutine' theme='_fallback' return='bool' arguments=''>
		[02 Branches.lua] Returns <code>true</code> if Routine mode is being played.
	</Function>
	<Function name='IsUsingWideScreen' theme='_fallback' return='bool' arguments=''>
		[04 WidescreenHelpers.lua] Returns <code>true</code> if the aspect ratio is 16:10 (<code>1.6</code>) or higher.
	</Function>
	<Function name='ivalues' theme='_fallback' return='{various}' arguments='table t'>
		[01 base.lua] "Like ipairs(), but returns only values."
	</Function>
	<Function name='join' theme='_fallback' return='string' arguments='string delimiter, table list'>
		[02 Utilities.lua] Joins a table, splitting each item with <code>delimiter</code>, returning a string of the results.
	</Function>
	<Function name='JsonDecode' return='various' arguments='string data' since='ITGmania 0.5.1'>
		Decodes JSON encoded <code>data</code> and returns the result.
	</Function>
	<Function name='JsonEncode' return='string' arguments='various data, bool minify' since='ITGmania 0.5.1'>
		Returns <code>data</code> as JSON. Empty tables are represented as arrays in the output.<br />
		<code>minify</code> is optional and defaults to <code>false</code>. If <code>true</code>, all unnecessary whitespace is omitted from the output.
	</Function>
	<Function name='JudgmentLineToColor' theme='_fallback' return='color' arguments='JudgmentLine jl'>
		[02 Colors.lua]
	</Function>
	<Function name='JudgmentLineToLocalizedString' return='string' arguments='JudgmentLine jl'>
		Returns <Link class='ENUM' function='JudgmentLine' /> <code>jl</code> localized for the current language using strings defined under <code>[JudgmentLine]</code>.
	</Function>
	<Function name='JudgmentLineToStrokeColor' theme='_fallback' return='color' arguments='JudgmentLine jl'>
		[02 Colors.lua]
	</Function>
	<Function name='lerp' return='float' arguments='float percent, float start, float end'>
		Returns a number linearly interpolated between start and end by percent.
	</Function>
	<Function name='lerp_color' return='color' arguments='float percent, color start, color end'>
		Same as <Link class='GLOBAL' function='lerp' />, but for colors.  All channels will reach the end of the interpolation at the same time.
	</Function>
	<Function name='LoadActor' return='ActorDef' arguments='string sPath, ...'>
		Returns an Actor definition for the actor at <code>sPath</code>. If <code>sPath</code> points to a Lua file, any additional arguments will be passed to that script.
	</Function>
	<Function name='LoadActorFunc' theme='_fallback' return='ActorDef' arguments='string path, int level'>
		[02 ActorDef.lua] Loads an actor template. This is the actual core of LoadActor.
	</Function>
	<Function name='LoadActorWithParams' theme='_fallback' return='void' arguments='string path, table params, ...'>
		[02 ActorDef.lua] Loads an actor with params.
	</Function>
	<Function name='loadfile' theme='_fallback' return='chunk' arguments='string sFilePath'>
		<code>loadfile</code> is normally a core function of Lua's basic library.  StepMania overrides this in
		[01 base.lua] to use <Link class='lua' function='ReadFile'>lua.ReadFile</Link>.
	</Function>
	<Function name='LoadFallbackB' theme='_fallback' return='ActorDef' arguments=''>
		[02 ActorDef.lua] Load the fallback BGA for the element that is currently being loaded.
	</Function>
	<Function name='LoadFont' theme='_fallback' return='ActorDef' arguments='string a, string b'>
		[02 ActorDef.lua] Loads a font.
	</Function>
	<Function name='LoadSongBackground' theme='_fallback' return='Sprite' arguments=''>
		[02 Sprite.lua] Returns a Sprite with the current song's background.
	</Function>
	<Function name='make_camel_aliases' theme='_fallback' return='' arguments='Actor class'>
		Iterates over all functions exposed to Lua in <code>class</code>, creating CamelCase aliases for each function.  Not intended to be used by themers.
	</Function>
	<Function name='mbstrlen' return='int' arguments='string sString'>
		Returns the length of the multi-byte character string <code>sString</code>.
	</Function>
	<Function name='Minute' return='int' arguments=''>
		Returns the current Minute.
	</Function>
	<Function name='MissCombo' theme='_fallback' return='int' arguments=''>
		[03 Gameplay.lua] Returns the value to start showing the miss combo at.
	</Function>
	<Function name='MonthOfYear' return='int' arguments=''>
		Returns the current month of the year in the range <code>0</code>-<code>11</code>.
	</Function>
	<Function name='MonthToLocalizedString' return='string' arguments='Month m'>
		Returns <Link class='ENUM' function='Month' /> <code>m</code> localized for the current language using strings defined under <code>[Month]</code>.
	</Function>
	<Function name='MonthToString' return='string' arguments='Month m'>
		Returns <Link class='ENUM' function='Month' /> <code>m</code> as a non-localized string.
	</Function>
	<Function name='multiapproach' return='table' arguments='table currents, table goals, table speeds, float multiplier'>
		Similar to approach, but operates on tables of values instead of single values.  This will modify the contents of <code>currents</code> in place, as well as returning <code>currents</code>.<br />
		<code>currents</code>, <code>goals</code>, and <code>speeds</code> must all be the same size and contain only numbers.<br />
		<code>multiplier</code> is optional.  The speeds in the speeds table will be multiplied by <code>multiplier</code>.  This makes it more convenient to use multiapproach in a per-frame update: pass in the frame delta and the speeds will be scaled to the time that passed.<br />
		Note:  When you see the error "approach: speed 1 is negative." it means that a speed value passed was negative.  The 1 tells you which entry in the table was invalid.
	</Function>
	<Function name='next' return='void' arguments='table t, int index'>
		Allows a program to traverse all fields of a table. Its first argument is a
		table and its second argument is an index in this table.
		<code>next</code> returns the next index of the table and its associated value.<br />
		<code>next</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='OldStyleStringToDifficulty' return='Difficulty' arguments='string dc'>
		Converts a string such as 'oni' or 'expert' or 'trick' to the appropriate difficulty.
	</Function>
	<Function name='OptionRowProTiming' theme='default' return='LuaOptionRow' arguments=''>
		[03 ThemePrefs.lua] Returns a Lua option row for ProTiming.
	</Function>
	<Function name='OptionRowScreenFilter' return='OptionRow' arguments=''></Function>
	<Function name='pairs' return='function' arguments='table t'>
		Returns three values: the <Link class='GLOBAL' function='next' /> function, the table <code>t</code>, and <code>nil</code>,
		so that the construction <code>for k,v in pairs(t) do body end</code>
		will iterate over all key–value pairs of table <code>t</code>.<br />
		<code>pairs</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='PlayerColor' theme='_fallback' return='color' arguments='PlayerNumber pn'>
		[02 Colors.lua]
	</Function>
	<Function name='PlayerScoreColor' theme='_fallback' return='color' arguments='PlayerNumber pn'>
		[02 Colors.lua]
	</Function>
	<Function name='PeakComboAwardToLocalizedString' return='string' arguments='PeakComboAward pma'>
		Returns <Link class='ENUM' function='PeakComboAward' /> <code>pma</code> localized for the current language using strings defined under <code>[PeakComboAward]</code>.
	</Function>
	<Function name='PlayModeToLocalizedString' return='string' arguments='PlayMode pm'>
		Returns <Link class='ENUM' function='PlayMode' /> <code>pm</code> localized for the current language using strings defined under <code>[PlayMode]</code>.
	</Function>
	<Function name='PlayerNumberToLocalizedString' return='string' arguments='PlayerNumber pn'>
		Returns <Link class='ENUM' function='PlayerNumber' /> <code>pn</code> localized for the current language using strings defined under <code>[PlayerNumber]</code>.
	</Function>
	<Function name='pname' theme='_fallback' return='string' arguments='PlayerNumber pn'>
		[02 Utilities.lua] Converts a PlayerNumber into a short string (e.g. "P1", "P2").
	</Function>
	<Function name='PositionPerPlayer' theme='_fallback' return='float' arguments='PlayerNumber pn, float p1val, float p2val'>
		[02 Actor.lua] Returns either <code>p1val</code> or <code>p2val</code> depending on <code>pn</code>.
	</Function>
	<Function name='PrettyPercent' return='string' arguments='float num, float den'>
		Returns a formatted percent with the specified <code>num</code>erator and <code>den</code>ominator.
	</Function>
	<Function name='print' theme='_fallback' return='void' arguments='string s'>
		[00 init.lua] Alias for <Link class='GLOBAL' function='Trace' />.
	</Function>
	<Function name='PrintTable' theme='_fallback' return='void' arguments='table t'>
		[03 ThemePrefs.lua] Prints a table's contents to log.txt using <Link class='GLOBAL' function='Trace'/>.
	</Function>
	<Function name='ProductFamily' return='string' arguments=''>
		Returns the product family. (e.g. "StepMania")
	</Function>
	<Function name='ProductID' return='string' arguments=''>
		Returns the product ID. (e.g. "ITGmania")
	</Function>
	<Function name='ProductVersion' return='string' arguments=''>
		Returns the product version. (e.g. "5.0.11" or "5.1.0" or "5.2-git-96f9771")
	</Function>
	<Function name='RadarCategoryToLocalizedString' return='string' arguments='RadarCategory cat'>
		Returns <Link class='ENUM' function='RadarCategory' /> <code>cat</code> localized for the current language using strings defined under <code>[RadarCategory]</code>.
	</Function>
	<Function name='rawequal' return='bool' arguments='various v1, various v2'>
		Checks whether <code>v1</code> is equal to <code>v2</code>, without invoking any metamethod.<br />
		<code>rawequal</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='rawget' return='various' arguments='table t, various index'>
		Gets the real value of <code>t[index]</code>, without invoking any metamethod.<br />
		<code>rawget</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='rawset' return='table' arguments='table t, int index, various value'>
		Sets the real value of <code>t[index]</code> to <code>value</code>, without invoking any metamethod.
		The modified <code>t</code> is then returned.<br />
		<code>rawset</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='ResolveRelativePath' theme='_fallback' return='string' arguments='string path, int level, bool optional'>
		[02 ActorDef.lua] Used internally by LoadActor to resolve a path.  If <code>optional</code> is true, then a nil path is returned instead of emitting an error if no file is found.
	</Function>
	<Function name='ReadFile' theme='_fallback' return='string' arguments='string path'>
		[04 FileUtils.lua] Reads the file at <code>path</code> and returns its contents.
	</Function>
	<Function name='ReadPrefFromFile' theme='_fallback' return='string' arguments='string prefName'>
		[03 UserPreferences2.lua] (internal) Reads the specified user preference from its config file.
	</Function>
	<Function name='rec_print_children' theme='_fallback' return='' arguments='ActorFrame a, string indent'>
		[02 Utilities.lua] Recursively prints all the children of the actor frame to the log file.  This can be useful for finding out what actors are on a screen or just seeing what the structure of the actor tree looks like.<br />
		<code>indent</code> is an optional argument that will be prepended to every line.
	</Function>
	<Function name='rec_print_table' theme='_fallback' return='' arguments='table t, string indent'>
		[02 Utilities.lua] Recursively prints all values in the table to the log file in the form "(key_type) key: (value_type) value" so that you know the type of the key and the value.  Useful if you're not sure exactly what is in a table passed as a parameter.<br />
		<code>indent</code> is an optional argument that will be prepended to every line.
	</Function>
	<Function name='ReportStyle' return='void' arguments=''>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='round' theme='_fallback' return='int' arguments='float val, int decimal'>
		[02 Utilities.lua] Round a number.
	</Function>
	<Function name='RoutineSkinP1' theme='_fallback' return='string' arguments=''>
		[03 Gameplay.lua] Returns the routine noteskin for player .
	</Function>
	<Function name='RoutineSkinP2' theme='_fallback' return='string' arguments=''>
		[03 Gameplay.lua] Returns the routine noteskin for player 2.
	</Function>
	<Function name='Saturation' theme='_fallback' return='color' arguments='color c, float percent'>
		[02 Colors.lua] Modifies the saturation of the specified color
	</Function>
	<Function name='SaveScreenshot' return='bool, string' arguments='PlayerNumber pn, bool compress, bool sign, string prefix, string suffix'>
		Saves a screenshot.  If pn is nil, saves to the machine's Screenshots dir, otherwise saves to the profile's Screenshots dir.  Saves as jpg if compress is true, or png if compress is false.  The screenshot is signed if sign is true.  prefix and suffix are optional strings to add to the beginning and end of the filename.<br />
		Returns success and full path of the resulting screenshot.
	</Function>
	<Function name='scale' return='float' arguments='float x, float low1, float high1, float low2, float high2'>
		Scales <code>x</code>, originally within <code>low1</code> and <code>high1</code>, to fall between <code>low2</code> and <code>high2</code>.
	</Function>
	<Function name='scale_to_fit' theme='default' return='' arguments='Actor a, float width, float height'>
	</Function>
	<Function name='ScoreKeeperClass' theme='_fallback' return='string' arguments=''>
		[03 Gameplay.lua] Returns the primary ScoreKeeper class to use.
	</Function>
	<Function name='ScreenColor' theme='default' return='string' arguments='string screen'>
		[02 Colors.lua]
	</Function>
	<Function name='ScreenMetric' theme='_fallback' return='string' arguments='string s'>
		[02 Other.lua] alias for <Link class='Screen' function='Metric' />.
	</Function>
	<Function name='ScreenSelectStylePositions' arguments='int count' return='{{float, float}}'>
	</Function>
	<Function name='ScreenString' theme='_fallback' return='string' arguments='string s'>
		[02 Other.lua] alias for <Link class='Screen' function='String' />.
	</Function>
	<Function name='Second' return='int' arguments=''>
		Returns the current second.
	</Function>
	<Function name='SecondsToHHMMSS' return='string' arguments='float fSecs'>
		Converts <code>fSecs</code> to Hours:Minutes:Seconds format using two digits for each section.
	</Function>
	<Function name='SecondsToMSS' return='string' arguments='float fSecs'>
		Converts <code>fSecs</code> to Minutes:Seconds format using one digit for Minutes and two digits for Seconds.
	</Function>
	<Function name='SecondsToMMSS' return='string' arguments='float fSecs'>
		Converts <code>fSecs</code> to Minutes:Seconds format using two digits for both sections.
	</Function>
	<Function name='SecondsToMSSMsMs' return='string' arguments='float fSecs'>
		Converts <code>fSecs</code> to Minutes:Seconds.Milliseconds format using one digit for Minutes, two digits for Seconds, and two digits for Milliseconds.
	</Function>
	<Function name='SecondsToMMSSMsMs' return='string' arguments='float fSecs'>
		Converts <code>fSecs</code> to Minutes:Seconds.Milliseconds format using two digits for each section.
	</Function>
	<Function name='SecondsToMMSSMsMsMs' return='string' arguments='float fSecs'>
		Converts <code>fSecs</code> to Minutes:Seconds.Milliseconds format using two digits for Minutes, two digits for Seconds, and three digits for Milliseconds.
	</Function>
	<Function name='select' return='various' arguments='various index, ...'>
		"If <code>index</code> is a number, returns all arguments after argument
		number <code>index</code>. Otherwise, <code>index</code> must be the string
		<code>"#"</code>, and [it] returns the total number of extra arguments it received."
	</Function>
	<Function name='SelectMusicOrCourse' theme='_fallback' return='string' arguments=''>
		[02 Branches.lua] Determines the correct music/course selection screen to use and returns it.
	</Function>
	<Function name='SelectProfileKeys' theme='_fallback' return='string' arguments=''>
		[03 Gameplay.lua] (soon to be deprecated) Returns a list of codes to use on ScreenSelectProfile.
	</Function>
	<Function name='Serialize' return='string' arguments='table t'>
		[02 Serialize.lua] Serialize the table <code>t</code>.
	</Function>
	<Function name='setenv' theme='_fallback' return='various' arguments='string name, various value'>
		[03 EnvUtils2.lua] Sets the value of <code>name</code> to <code>value</code> in the Env table.
	</Function>
	<Function name='SetUserPref' theme='_fallback' return='bool' arguments='string name, string value'>
		[03 UserPreferences2.lua] Themer-facing function for setting a user preference.
	</Function>
	<Function name='ShowHoldJudgments' theme='_fallback' return='bool' arguments=''>
		[03 Gameplay.lua]
	</Function>
	<Function name='ShowStandardDecoration' theme='_fallback' return='bool' arguments='string sMetricsName'>
		[02 ActorDef.lua] Returns <code>true</code> if a decoration should be shown on the current screen or not.
	</Function>
	<Function name='SortOrderToLocalizedString' return='string' arguments='SortOrder so'>
		Returns <Link class='ENUM' function='SortOrder' /> <code>so</code> localized for the current language using strings defined under <code>[SortOrder]</code>.
	</Function>
	<Function name='SpeedMods' theme='_fallback' return='LuaOptionRow' arguments=''>
		[03 CustomSpeedMods.lua] Returns a Lua option row with the custom speed mods defined in SpeedMods.txt.
	</Function>
	<Function name='split' theme='_fallback' return='table' arguments='string delimiter, string text'>
		[02 Utilities.lua] Splits a string at every occurence of <code>delimiter</code>, returning a table of the results.
	</Function>
	<Function name='StageAwardToLocalizedString' return='string' arguments='StageAward sa'>
		Returns <Link class='ENUM' function='StageAward' /> <code>sa</code> localized for the current language using strings defined under <code>[StageAward]</code>.
	</Function>
	<Function name='StageToColor' theme='_fallback' return='color' arguments='Stage s'>
		[02 Colors.lua]
	</Function>
	<Function name='StageToLocalizedString' return='string' arguments='Stage i'>
		Returns <Link class='ENUM' function='Stage' /> <code>i</code> localized for the current language using strings defined under <code>[Stage]</code>.
	</Function>
	<Function name='StageToStrokeColor' theme='_fallback' return='color' arguments='Stage s'>
		[02 Colors.lua]
	</Function>
	<Function name='StandardDecorationFromTable' theme='_fallback' return='Actor' arguments='string sMetricsName, table t'>
		[02 ActorDef.lua]
	</Function>
	<Function name='StandardDecorationFromFile' theme='_fallback' return='Actor' arguments='string sMetricsName, string sFileName'>
		[02 ActorDef.lua]
	</Function>
	<Function name='StandardDecorationFromFileOptional' theme='_fallback' return='Actor' arguments='string sMetricsName, string sFileName'>
		[02 ActorDef.lua]
	</Function>
	<Function name='StringToBlend' theme='_fallback' return='string' arguments='string s'>
		[01 Alias.lua] Given the short form of a <Link class='ENUM' function='BlendMode' /> string, returns the full version of the string.<br />
		Returns <code>nil</code> if the string passed in does not match any valid BlendModes.
<pre><code>
local b = StringToBlend("AlphaMask")
Trace(b)  -- "BlendMode_AlphaMask"
</code></pre>
	</Function>
	<Function name='tableshuffle' theme='_fallback' return='table' arguments='table t'>
		[02 Utilities.lua] Returns a shuffled version of <code>t</code>.
	</Function>
	<Function name='tableslice' theme='_fallback' return='table' arguments='table t, int num'>
		[02 Utilities.lua] Returns a slice of the specified table of size <code>num</code>.
	</Function>
	<Function name='TableStringLookup' theme='_fallback' return='table' arguments='table t, string group'>
		[02 Utilities.lua] Look up each value in a table, returning a table with the resulting strings.
	</Function>
	<Function name='TapNoteScoreToLocalizedString' return='string' arguments='TapNoteScore tns'>
		Returns <Link class='ENUM' function='TapNoteScore' /> <code>tns</code> localized for the current language using strings defined under <code>[TapNoteScore]</code>.
	</Function>
	<Function name='TextBannerAfterSet' theme='default' return='void' arguments=''>
		[02 TextBanner.lua] Defines how the <Link class='TextBanner' /> is laid out.
	</Function>
	<Function name='thified_curstage_index' theme='default' return='string' arguments='bool OnEval'>
		[04 Other.lua]
	</Function>
	<Function name='tobool' theme='_fallback' return='bool' arguments='various v'>
		[02 Utilities.lua] Converts a string or number to a bool.
	</Function>
	<Function name='tonumber' return='float' arguments='various e, int base'>
		Tries to convert <code>e</code> to a number. Returns <code>nil</code> if it can't convert the input to a number. (<code>base</code> is optional.) <br />
		<code>tonumber</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='tostring' return='string' arguments='various e'>
		Converts <code>e</code> to a string.<br />
		<code>tostring</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='ToEnumShortString' theme='_fallback' return='string' arguments='enum e'>
		[02 Enum.lua] Returns a string representing an enum starting from '_'. For example, passing <Link class='ENUM' function='PlayerNumber'>PlayerNumber_P1</Link> to this function will return "P1".
	</Function>
	<Function name='Trace' theme='_fallback' return='void' arguments='string sString'>
		[00 init.lua] Alias for <Link class='lua' function='Trace' />.
	</Function>
	<Function name='type' return='string' arguments='various v'>
		Returns the type of the object as a string.  There are eight basic types in Lua:
		<em>nil</em>, <em>boolean</em>, <em>number</em>, <em>string</em>, <em>function</em>, <em>userdata</em>, <em>thread</em>, and <em>table</em>. <br />
		See the Lua manual for more details.
	</Function>
	<Function name='UnlockRewardTypeToLocalizedString' return='string' arguments='UnlockRewardType i'>
		Returns <Link class='ENUM' function='UnlockRewardType' /> <code>i</code> localized for the current language using strings defined under <code>[UnlockRewardType]</code>.
	</Function>
	<Function name='unpack' return='various' arguments='table list, int i, int j'>
		Returns the elements from table <code>list</code>.	This function is equivalent to <code>return list[i], list[i+1], ···, list[j]</code>.<br />
		<code>i</code> and <code>j</code> are optional; by default, <code>i</code> is <code>1</code> and <code>j</code> is the length of the list.<br />
		<code>unpack</code> is a core function of Lua's basic library; see the Lua manual for more details.
	</Function>
	<Function name='URLEncode' return='string' arguments='string sInput'>
		Returns a string with characters escaped for URLs. (e.g. a space becomes '%20')
	</Function>
	<Function name='update_centering' return='' arguments=''>
		This tells StepMania to update the screen position for any changes to these preferences: CenterImageAddWidth, CenterImageAddHeight, CenterImageTranslateX, CenterImageTranslateY.<br />
		This way, a theme can implement a custom interactive screen for adjusting those preferences.
	</Function>
	<Function name='Var' theme='_fallback' return='ThreadVariable' arguments=''>
		[01 base.lua] Alias for <Link class='lua' function='GetThreadVariable'>lua.GetThreadVariable</Link>.
	</Function>
	<Function name='VersionDate' return='string' arguments=''>
		Returns the current version's build date, formatted as YYYYMMDD.
	</Function>
	<Function name='VersionTime' return='string' arguments=''>
		Returns the current version's build time, formatted as HH:MM:SS.
	</Function>
	<Function name='Warn' theme='_fallback' return='void' arguments='string sString'>
		[00 init.lua] Alias for <Link class='lua' function='Warn' />.
	</Function>
	<Function name='Weekday' return='int' arguments=''>
		Returns the current weekday in the range of <code>0</code>-<code>6</code>, where Sunday is <code>0</code>.
	</Function>
	<Function name='WideScale' theme='_fallback' return='float' arguments='float ar43, float ar169'>
		[04 WidescreenHelpers.lua] Depending on the screen width, scales between <code>ar43</code> (4:3; 640px) and <code>ar169</code> (16:9; 854px).
	</Function>
	<Function name='wrap' theme='_fallback' return='float' arguments='float val, float n'>
		[02 Utilities.lua]
	</Function>
	<Function name='width_limit_text' theme='_fallback' return='' arguments='BitmapText text, float limit, float natural_zoom'>
		[02 Utilities.lua]
	</Function>
	<Function name='width_clip_text' theme='_fallback' return='' arguments='BitmapText text, float limit'>
		[02 Utilities.lua]
	</Function>
	<Function name='width_clip_limit_text' theme='_fallback' return='' arguments='BitmapText text, float limit, float natural_zoom'>
		[02 Utilities.lua]
	</Function>
	<Function name='WrapInActorFrame' theme='_fallback' return='ActorFrame' arguments='table children'>
		[02 ActorDef.lua] Wraps the children in an ActorFrame.
	</Function>
	<Function name='WriteFile' theme='_fallback' return='bool' arguments='string path, string buf'>
		[04 FileUtils.lua] Writes <code>buf</code> to the file at <code>path</code>.
	</Function>
	<Function name='WriteGamePrefToFile' theme='_fallback' return='bool' arguments='string name'>
		[03 GamePreferences.lua]
	</Function>
	<Function name='WritePrefToFile' theme='_fallback' return='bool' arguments='string prefName, various value'>
		[03 UserPreferences2.lua] (internal) Writes user preference <code>prefName</code> to its config file with <code>value</code> being <code>tostring</code>'d.
	</Function>
	<Function name='Year' return='int' arguments=''>
		Returns the current year.
	</Function>
</GlobalFunctions>

<!-- Namespaces -->
<Namespaces>
<Description>
	The StepMania engine makes some of its namespaces available to Lua.  These can be thought of as collections of utility functions.<br />
	Example using <code>SongUtil</code> to get playable <Link class='Steps' /> from a song given the current <Link class='Game' />:
<pre><code>
local song = GAMESTATE:GetCurrentSong()
local playable_steps = SongUtil.GetPlayableSteps(song)
</code></pre>
</Description>
<Namespace name='ActorUtil'>
	<Function name='GetFileType' return='FileType' arguments='string sPath'>
		Returns the <Link class='ENUM' function='FileType' /> for the file at <code>sPath</code>.
	</Function>
	<Function name='IsRegisteredClass' return='bool' arguments='string sClassName'>
		Returns <code>true</code> if <code>sClassName</code> is a registered Class.
	</Function>
	<Function name='LoadAllCommandsAndSetXY' return='void' arguments='Actor a'>
		Loads all commands and sets X and Y for the specified Actor.
	</Function>
	<Function name='ResolvePath' return='string' arguments='string sPath, int iLevel, bool optional'>
		Used internally by LoadActor to resolve a path.  If <code>optional</code> is true, then a nil path is returned instead of emitting an error if no file is found.
	</Function>
</Namespace>
<Namespace name='ArrowEffects'>
	<Function name='Update' return='void' arguments=''>
		Updates ArrowEffects, which sets current values for Tornado, Invert, and Beat.
	</Function>
	<Function name='GetYOffset' return='float' arguments='PlayerState ps, int iCol, float fNoteBeat'>
		Returns the Y Offset of a note in column <code>iCol</code> at beat <code>fNoteBeat</code> for the provided PlayerState. Y Offset is affected by Speed mods and Accel mods, and impacts most other arrow effects.
	</Function>
	<Function name='GetYPos' return='float' arguments='PlayerState ps, int iCol, float fYOffset, float fYReverseOffsetPixels'>
		Returns the Y position of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.<br />
		<code>fYReverseOffsetPixels</code> is the separation between targets with and without reverse. This argument is optional and will pull defaults from the metrics for <code>[Player]</code>
	</Function>
	<Function name='GetYOffsetFromYPos' return='float' arguments='PlayerState ps, int iCol, float fYPos, float fYReverseOffsetPixels'>
		Returns the Y offset of a note in column <code>iCol</code> with a Y position of <code>fYPos</code> for the provided PlayerState.<br />
		<code>fYReverseOffsetPixels</code> is the separation between targets with and without reverse. This argument is optional and will pull defaults from the metrics for <code>[Player]</code>
	</Function>
	<Function name='GetXPos' return='float' arguments='PlayerState ps, int iCol, float fYOffset'>
		Returns the X position of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.
	</Function>
	<Function name='GetZPos' return='float' arguments='PlayerState ps, int iCol, float fYOffset'>
		Returns the Z position of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.
	</Function>
	<Function name='GetRotationX' return='float' arguments='PlayerState ps, float fYOffset'>
		Returns the X rotation of a note with a Y offset of <code>fYOffset</code> for the provided PlayerState.
	</Function>
	<Function name='GetRotationY' return='float' arguments='PlayerState ps, float fYOffset'>
		Returns the Y rotation of a note with a Y offset of <code>fYOffset</code> for the provided PlayerState.
	</Function>
	<Function name='GetRotationZ' return='float' arguments='PlayerState ps, float fNoteBeat, bool bIsHoldHead'>
		Returns the Z rotation of a note at beat <code>fNoteBeat</code> for the provided PlayerState.<br />
		<code>bIsHoldHead</code> is an optional argument which defaults to false. If true, this function will return <code>0</code> if the [PlayerOptions] modifier <code>DizzyHolds</code> is off.
	</Function>
	<Function name='ReceptorGetRotationZ' return='float' arguments='PlayerState ps'>
		Returns the Z rotation of the receptors for the provided PlayerState.
	</Function>
	<Function name='GetAlpha' return='float' arguments='PlayerState ps, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar'>
		Returns the Alpha of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.<br />
		<code>fPercentFadeToFail</code> is optional and defaults to -1.<br />
		<code>fYReverseOffsetPixels</code> is the separation between targets with and without reverse. This argument is optional and will pull defaults from the metrics for <code>[Player]</code><br />
		<code>fDrawDistanceBeforeTargetsPixels</code> is optional and will pull defaults from the <code>[Player]</code> metric <code>DrawDistanceBeforeTargetsPixels</code><br />
		<code>fFadeInPercentOfDrawFar</code> is optional and will pull defaults from the <code>[NoteField]</code> metric <code>FadeBeforeTargetsPercent</code><br />
	</Function>
	<Function name='GetGlow' return='float' arguments='PlayerState ps, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar'>
		Returns the Glow of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState. The arguments are the same as for GetAlpha.
	</Function>
	<Function name='GetBrightness' return='float' arguments='PlayerState ps, float fNoteBeat'>
		Returns the brightness of a note at beat <code>fNoteBeat</code> for the provided PlayerState.
	</Function>
	<Function name='NeedZBuffer' return='bool' arguments='PlayerState ps'>
		Returns true if any arrow effects for the provided PlayerState require the z buffer.
	</Function>
	<Function name='GetZoom' return='float' arguments='PlayerState ps'>
		Returns the zoom of a note for the provided PlayerState.
	</Function>
	<Function name='GetFrameWidthScale' return='float' arguments='PlayerState ps, float fYOffset, float fOverlappedTime'>
		Returns the FrameWidthScale of a hold part with a Y offset of <code>fYOffset</code> for the provided PlayerState.<br />
		<code>fOverlappedTime</code> is optional and will default to 0.
	</Function>
</Namespace>
<Namespace name='Enum'>
	<Description>
		Enumerated types are lookup tables associating a string to each numerical
		value for each <Link class='Enums'>Enum</Link>. For example,
		<code>PlayerNumber[1]</code> would be the
		string <code>'PlayerNumber_P1'</code>.<br />
		The functions in this <code>Enum</code> namespace are valid member
		functions of every <Link class='Enums'>Enum</Link> where the first argument is
		omitted and the name of the Enum is used in place
		of <code>Enum</code>.<br />
		For example:<br />
<pre><code>
Enum.GetName(PlayerNumber)
Enum.Reverse(PlayerNumber)
</code></pre>
		can be condensed like<br />
<pre><code>
PlayerNumber:GetName()
PlayerNumber:Reverse()
</code></pre>
	</Description>
	<Function name='Compare' return='int' arguments='Enum e, string x, string y'>
		Both <code>x</code> and <code>y</code> need to be elements of the enumerated
		type <code>e</code>. Returns a value less than/greater than/equal to
		<code>0</code> corresponding to the numerical value of <code>x</code> being
		less than/greater than/equal to the numerical value of <code>y</code> as
		determined by
		<code><Link function='Reverse'>Enum.Reverse</Link>( e )</code>.
	</Function>
	<Function name='GetName' return='string' arguments='Enum e'>
		Returns the type of <code>e</code>. For example,
		<code>Enum.GetName( <Link class='ENUM' function='PlayerNumber' /> )</code>
		will return the string <code>'PlayerNumber'</code>.
	</Function>
	<Function name='Reverse' return='{int}' arguments='Enum e'>
		Returns a reverse lookup table for the enumerated type <code>e</code>. For
		example:
<pre><code>
local pn1 = PlayerNumber:Reverse()['PlayerNumber_P1']
local pn2 = PlayerNumber:Reverse()['PlayerNumber_P2']
-- pn1 is 0
-- pn2 is 1
</code></pre>
		Note that the values returned from <code>Reverse()</code> will correspond
		to the 0-based indexing from C++ and not 1-based indexing conventional to Lua.
	</Function>
</Namespace>
<Namespace name='lua'>
	<Function name='CheckType' return='bool' arguments='string sType, various v'>
		Returns <code>true</code> if the type of <code>v</code> is <code>sType</code>.
	</Function>
	<Function name='Flush' return='void' arguments='' >
		Flushes log files to disk.
	</Function>
	<Function name='GetThreadVariable' return='LuaThreadVariable' arguments='string s' />
	<Function name='ReadFile' return='string' arguments='string sPath'>
		Tries to read the file at <code>sPath</code>. If successful, it returns the file's contents.
		If unsuccessful, it returns two values: <code>nil</code> and <code>"error"</code>.
	</Function>
	<Function name='ReportScriptError' return='void' arguments='string error, string error_type'>
		Reports the error through the error reporting system.<br />
		<code>error</code> is optional and defaults to "Script error occurred.".<br />
		<code>error_type</code> is optional and defaults to "LUA_ERROR".  Errors of type "LUA_ERROR" will be shown in-game if the <code>ShowThemeErrors</code> preference is enabled. A dialog will not appear for an <code>error_type</code> the user has chosen to ignore.
	</Function>
	<Function name='RunWithThreadVariables' return='int' arguments='function func, table t, ...'>
		Calls <code>func(...)</code> with LuaThreadVariables set according to the keys and values of <code>t</code>, and returns the return values of <code>func()</code>.<br />
		For example, if <code>t</code> is <code>{x=12}</code>, calling <code>Var "x"</code> from <code>func</code> will return 12.
	</Function>
	<Function name='Trace' return='void' arguments='string sString'>
		Writes <code>sString</code> to log.txt. Aliased by
		<Link class='GLOBAL' function='Trace' />.
	</Function>
	<Function name='Warn' return='void' arguments='string sString'>
		Writes <code>sString</code> to info.txt and log.txt as
		a warning. Aliased by <Link class='GLOBAL' function='Warn' />.
	</Function>
</Namespace>
<Namespace name='MersenneTwister'>
	<Function name='Random' return='float' arguments='...'>
		Returns a random number. Without arguments, the number is in the range <code>0..1</code>. With a single argument (<code>n</code>), the number is in the range of <code>1..n</code>. With two arguments (<code>lower</code>, <code>upper</code>), the number is in the range of <code>l..u</code>.
	</Function>
	<Function name='Seed' return='void' arguments='int seed'>
		Sets the seed of the random number generator to <code>seed</code>.
	</Function>
</Namespace>
<Namespace name='RageFileUtil'>
	<Function name='CreateRageFile' return='RageFile' arguments=''>
		Creates a RageFile handle with which one can use the commands in <Link class='RageFile' />.<br />
		Example:
<pre><code>
local file = RageFileUtil.CreateRageFile()
</code></pre>
	</Function>
</Namespace>
<Namespace name='ScreenSystemLayerHelpers'>
	<Function name='GetCreditsMessage' return='string' arguments='PlayerNumber pn'>
		Gets the credits message for Player <code>pn</code>.
	</Function>
</Namespace>
<Namespace name='SongUtil'>
	<Function name='GetPlayableSteps' return='{Steps}' arguments='Song so'>
		Returns a table with the playable Steps for the present Song based on the present Game.
	</Function>
	<Function name='IsStepsPlayable' return='bool' arguments='Song so, Steps st'>
		Returns true if the song's steps (<code>st</code>) are playable.
	</Function>
	<Function name='IsStepsTypePlayable' return='bool' arguments='Song so, StepsType st'>
		Returns true if the song's StepsType (<code>st</code>) are playable.
	</Function>
</Namespace>
<Namespace name='TrailUtil'>
	<Function name='GetNumSongs' return ='float' arguments='Trail pTrail'>
		Returns the number of songs in a Trail.
	</Function>
	<Function name='GetTotalSeconds' return ='int' arguments='Trail pTrail'>
		Returns the Trail's total length in seconds.
	</Function>
</Namespace>
</Namespaces>

<!-- Classes -->
<Classes>
<Class name='Actor' grouping='Actor'>
	<Description>
		<em>Actor</em> is the base class containing common methods that all specialized actor classes inherit.
		For example, <Link class='Actor' function='GetX'>GetX</Link> is a method belonging to <em>Actor</em>,
		but <Link class='Sprite' />s, <Link class='BitmapText' />s, <Link class='Quad' />s, and so on can use <code>GetX()</code>.
	</Description>
	<Function name='AddWrapperState' return='ActorFrame' arguments=''>
		This adds a wrapper state around the Actor, which is like wrapping the Actor in an ActorFrame, except that you can use it on any actor, and add or remove wrapper states in response to things that happen while the screen is being used. (wrapping an Actor in an ActorFrame normally requires setting it up before the screen starts)<br />
		The ActorFrame that is returned is the wrapper state, for convenience.<br />
		An Actor can have any number of wrapper states.  Use GetWrapperState to access wrapper states for the actor.
	</Function>
	<Function name='GetNumWrapperStates' return='ActorFrame' arguments=''>
		Returns the number of wrapper states the actor has.
	</Function>
	<Function name='GetWrapperState' return='ActorFrame' arguments='int i'>
		Returns the wrapper state at index i.  Think of wrapper states with a higher index as being "further out".  Actor is inside Wrapper 1, Wrapper 1 is inside Wrapper 2, Wrapper 2 is inside Wrapper 3, and so on.
	</Function>
	<Function name='RemoveWrapperState' return='' arguments='int i'>
		Removes the wrapper state at index i.
	</Function>
	<Function name='GetParent' return='Actor' arguments=''>
		Returns the Actor's parent, or <code>nil</code> if it doesn't have one.
	</Function>
	<Function name='GetFakeParent' return='Actor' arguments=''>
		Returns the Actor's fake parent, or <code>nil</code> if it doesn't have one.
	</Function>
	<Function name='SetFakeParent' return='' arguments='Actor p'>
		Sets the Actor's fake parent to p, or clears it if p is nil.
	</Function>
	<Function name='GetVisible' return='bool' arguments=''>
		Returns the Actor's visibility.
	</Function>
	<Function name='GetX' return='float' arguments=''>
		Returns the Actor's x position.
	</Function>
	<Function name='GetY' return='float' arguments=''>
		Returns the Actor's y position.
	</Function>
	<Function name='GetZ' return='float' arguments=''>
		Returns the Actor's z position.
	</Function>
	<Function name='GetDestX' return='float' arguments=''>
		Returns what the Actor's x position will be when it reaches its destination tween state.
	</Function>
	<Function name='GetDestY' return='float' arguments=''>
		Returns what the Actor's y position will be when it reaches its destination tween state.
	</Function>
	<Function name='GetDestZ' return='float' arguments=''>
		Returns what the Actor's z position will be when it reaches its destination tween state.
	</Function>
	<Function name='GetZoom' return='float' arguments=''>
		Returns the Actor's zoom.
	</Function>
	<Function name='GetZoomX' return='float' arguments=''>
		Returns the Actor's X zoom.
	</Function>
	<Function name='GetZoomY' return='float' arguments=''>
		Returns the Actor's Y zoom.
	</Function>
	<Function name='GetZoomZ' return='float' arguments=''>
		Returns the Actor's Z zoom.
	</Function>
	<Function name='SetTextureFiltering' return='void' arguments='bool b'>
		Sets Texture Filtering for an Actor to <code>b</code>.
	</Function>
	<Function name='accelerate' return='void' arguments='float fRate'>
		Plays the commands that follow at an accelerated rate (fRate²), where <code>fRate</code> is in seconds.<br />
		<code>accelerate</code> is a basic tween command, along with <Link function='linear' />, <Link function='decelerate' />, <Link function='spring' />, and <Link function='tween' />.
	</Function>
	<Function name='addcommand' return='void' arguments='string sName, ActorCommand cmd'>
		Adds a command to the Actor.
	</Function>
	<Function name='addrotationx' return='void' arguments='float rot'>
		Adds <code>rot</code> degrees to the Actor's current X rotation.
	</Function>
	<Function name='addrotationy' return='void' arguments='float rot'>
		Adds <code>rot</code> degrees to the Actor's current Y rotation.
	</Function>
	<Function name='addrotationz' return='void' arguments='float rot'>
		Adds <code>rot</code> degrees to the Actor's current Z rotation.
	</Function>
	<Function name='addx' return='void' arguments='float xPos'>
		Adds <code>xPos</code> to the Actor's current x position.
	</Function>
	<Function name='addy' return='void' arguments='float yPos'>
		Adds <code>yPos</code> to the Actor's current y position.
	</Function>
	<Function name='addz' return='void' arguments='float zPos'>
		Adds <code>zPos</code> to the Actor's current z position.
	</Function>
	<Function name='align' theme='_fallback' return='void' arguments='float h, float v'>
		[02 Actor.lua] Sets the alignment of an Actor, where <code>h</code> and <code>v</code> are in the range 0..1.
	</Function>
	<Function name='animate' return='void' arguments='bool b'>
		Sets whether or not the Actor should animate.
	</Function>
	<Function name='aux' return='void' arguments='float fAux'>
		Sets the Actor's aux value. (This can be a solution for coupling data with an Actor.)
	</Function>
	<Function name='backfacecull' return='void' arguments='bool b'>
		If <code>true</code>, cull the Actor's back faces. See also: <Link class='Actor' function='cullmode' />.
	</Function>
	<Function name='basealpha' return='void' arguments='float fAlpha'>
		Sets the Actor's base alpha to <code>fAlpha</code>, where <code>fAlpha</code> is in the range 0..1.
	</Function>
	<Function name='baserotationx' return='void' arguments='float rot'>
		Sets the Actor's base X rotation to <code>rot</code> degrees.
	</Function>
	<Function name='baserotationy' return='void' arguments='float rot'>
		Sets the Actor's base Y rotation to <code>rot</code> degrees.
	</Function>
	<Function name='baserotationz' return='void' arguments='float rot'>
		Sets the Actor's base Z rotation to <code>rot</code> degrees.
	</Function>
	<Function name='basezoom' return='void' arguments='float zoom'>
		Sets the Actor's base zoom to <code>zoom</code>.
	</Function>
	<Function name='basezoomx' return='void' arguments='float zoom'>
		Sets the Actor's base X zoom to <code>zoom</code>.
	</Function>
	<Function name='basezoomy' return='void' arguments='float zoom'>
		Sets the Actor's base Y zoom to <code>zoom</code>.
	</Function>
	<Function name='basezoomz' return='void' arguments='float zoom'>
		Sets the Actor's base Z zoom to <code>zoom</code>.
	</Function>
	<Function name='blend' return='void' arguments='BlendMode mode'>
		Sets the Actor to use the specified <Link class='ENUM' function='BlendMode' />.
	</Function>
	<Function name='bob' return='void' arguments=''>
		Makes the Actor bob up and down. Can use <Link function='effectmagnitude' /> to define different bobbing behavior.
	</Function>
	<Function name='bounce' return='void' arguments=''>
		Makes the Actor bounce, similar to bob but with one point acting as the ground. Can use <Link function='effectmagnitude' /> to define different bouncing behavior (with effectmagnitude values relating to x, y, and z movement).
	</Function>
	<Function name='bouncebegin' theme='_fallback' return='void' arguments='float time'>
		[02 Actor.lua]
	</Function>
	<Function name='bounceend' theme='_fallback' return='void' arguments='float time'>
		[02 Actor.lua]
	</Function>
	<Function name='Center' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Centers an Actor on the screen.<br />
		<code>self:Center()</code> is equivalent to <code>self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y)</code>
	</Function>
	<Function name='CenterX' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Centers an Actor on the X axis.<br />
		<code>self:CenterX()</code> is equivalent to <code>self:x(SCREEN_CENTER_X)</code>
	</Function>
	<Function name='CenterY' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Centers an Actor on the y axis.<br />
		<code>self:CenterY()</code> is equivalent to <code>self:y(SCREEN_CENTER_Y)</code>
	</Function>
	<Function name='clearzbuffer' return='void' arguments='bool bClear'>
		Determines if the z-buffer should be cleared or not.
	</Function>
	<Function name='compound' theme='_fallback' return='void' arguments='float length, string tweens'>
		[02 Actor.lua] Combines multiple interpolators for complex tweens. <code>tweens</code>
		can either be a string like <code>"linear,0.25,accelerate,0.75"</code> or
		a table with tween information <code>{ {Type="linear", Percent=0.25, Bezier=nil}, {Type="accelerate", Percent=0.75, Bezier=nil} }</code>
	</Function>
	<Function name='cropbottom' return='void' arguments='float percent'>
		Crops <code>percent</code> of the Actor from the bottom, where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='cropleft' return='void' arguments='float percent'>
		Crops <code>percent</code> of the Actor from the left, where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='cropright' return='void' arguments='float percent'>
		Crops <code>percent</code> of the Actor from the right, where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='croptop' return='void' arguments='float percent'>
		Crops <code>percent</code> of the Actor from the top, where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='cullmode' return='void' arguments='CullMode mode'>
		Sets the Actor's <Link class='ENUM' function='CullMode' /> to <code>mode</code>.
	</Function>
	<Function name='decelerate' return='void' arguments='float fRate'>
		Plays the commands that follow at an decelerated rate (<code>1 - (1-fRate) * (1-fRate)</code>), where <code>fRate</code> is in seconds.<br />
		<code>decelerate</code> is a basic tween command, along with <Link function='linear' />, <Link function='accelerate' />, <Link function='spring' />, and <Link function='tween' />.
	</Function>
	<Function name='diffuse' return='void' arguments='color c'>
		Set the Actor's diffuse color to <code>c</code>.
	</Function>
	<Function name='diffusealpha' return='void' arguments='float fAlpha'>
		Sets the Actor's alpha level to <code>fAlpha</code>, where <code>fAlpha</code> is in the range 0..1.
	</Function>
	<Function name='diffuseblink' return='void' arguments=''>
		Makes the Actor switch between two colors immediately.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/effect_colors.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/effect_colors.txt</a>
		for an example.
	</Function>
	<Function name='diffusebottomedge' return='void' arguments='color c'>
		Sets the Actor's bottom edge color to <code>c</code>.
	</Function>
	<Function name='diffusecolor' return='void' arguments='color c'>
		Set the Actor's diffuse color to <code>c</code>, ignoring any alpha value in <code>c</code>.
	</Function>
	<Function name='diffuseleftedge' return='void' arguments='color c'>
		Sets the Actor's left edge color to <code>c</code>.
	</Function>
	<Function name='diffuselowerleft' return='void' arguments='color c'>
		Sets the Actor's lower left corner color to <code>c</code>.
	</Function>
	<Function name='diffuselowerright' return='void' arguments='color c'>
		Sets the Actor's lower right corner color to <code>c</code>.
	</Function>
	<Function name='diffuseramp' return='void' arguments=''>
		Makes the Actor switch between two colors, jumping back to the first after reaching the second.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/effect_colors.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/effect_colors.txt</a>
		for an example.
	</Function>
	<Function name='diffuserightedge' return='void' arguments='color c'>
		Sets the Actor's right edge color to <code>c</code>.
	</Function>
	<Function name='diffuseshift' return='void' arguments=''>
		Makes the Actor shift between two colors smoothly.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/effect_colors.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/effect_colors.txt</a>
		for an example.
	</Function>
	<Function name='diffusetopedge' return='void' arguments='color c'>
		Sets the Actor's top edge color to <code>c</code>.
	</Function>
	<Function name='diffuseupperleft' return='void' arguments='color c'>
		Sets the Actor's upper left corner color to <code>c</code>.
	</Function>
	<Function name='diffuseupperright' return='void' arguments='color c'>
		Sets the Actor's upper right corner color to <code>c</code>.
	</Function>
	<Function name='Draw' return='void' arguments=''>
		Tells the Actor to draw itself.
	</Function>
	<Function name='draworder' return='void' arguments='int iOrder'>
		Sets the Actor's draworder to <code>iOrder</code>, where larger values display first.
	</Function>
	<Function name='drop' theme='_fallback' return='void' arguments='float time'>
		[02 Actor.lua] (Added in sm-ssc)
	</Function>
	<Function name='ease' theme='_fallback' return='void' arguments='float time, float fEase'>
		[02 Actor.lua]
	</Function>
	<Function name='effectclock' return='void' arguments='string s'>
		Set the Actor's effect clock to <code>s</code>.
	</Function>
	<Function name='effectcolor1' return='void' arguments='color c'>
		Sets the first effect color to <code>c</code>.
	</Function>
	<Function name='effectcolor2' return='void' arguments='color c'>
		Sets the second effect color to <code>c</code>.
	</Function>
	<Function name='effectmagnitude' return='void' arguments='float fX, float fY, float fZ'>
		Set the Actor's effect magnitude in each direction to the given values.
	</Function>
	<Function name='effectoffset' return='void' arguments='float fTime'>
		Set the Actor's effect offset to <code>fTime</code>.  The offset is added to the time into the effect before calculating percent_through_effect.
	</Function>
	<Function name='effectperiod' return='void' arguments='float fTime'>
		Set the Actor's effect period to <code>fTime</code>.
	</Function>
	<Function name='effecttiming' return='void' arguments='float ramp_to_half, float hold_at_half, float ramp_to_full, float hold_at_zero, float hold_at_full'>
		Set the Actor's effect timing.  The effect timing controls how long it takes an effect to cycle and how long it spends in each phase.<br /><br />
		All effect timings must be greater than or equal to zero, at least one of them must be greater than zero.<br />
		Depending on the effect clock, the actor's time into effect is updated every frame.  That time is then translated into a percent_through_effect using the parameters to this function.<br />
		ramp_to_half is the amount of time for percent_through_effect to reach 0.5.<br />
		hold_at_half is the amount of time percent_through_effect will stay at 0.5.<br />
		ramp_to_full is the amount of time percent_through_effect will take to go from 0.5 to 1.0.<br />
		hold_at_full is the amount of time percent_through_effect will stay at 1.0.<br />
		After reaching the end of hold_at_full, percent_through_effect stays at 0 until hold_at_zero is over.<br />
		<br />
		The different effects use percent_through_effect in different ways.  Some use it to calculate percent_between_colors with this sine wave:  sin((percent_through_effect + 0.25f) * 2 * PI ) / 2 + 0.5f<br />
		Some effects check the internal bool blink_on.  blink_on is true if percent_through_effect is greater than 0.5 and false if percent_through_effect is less than or equal to 0.5.<br /><br />
		Check the effect functions for individual explanations:  <Link  function='diffuseblink' />, <Link  function='diffuseshift' />, <Link  function='glowblink' />, <Link  function='glowshift' />, <Link  function='glowramp' />, <Link  function='rainbow' />, <Link  function='wag' />, <Link  function='bounce' />, <Link  function='bob' />, <Link  function='pulse' />, <Link  function='spin' />, <Link  function='vibrate' />.
	</Function>
	<Function name='effect_hold_at_full' return='void' arguments='float hold_at_full'>
		Set the hold_at_full part of the effect timing while leaving the others unchanged.
	</Function>
	<Function name='fadebottom' return='void' arguments='float percent'>
		Fades <code>percent</code> of the Actor from the bottom where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='fadeleft' return='void' arguments='float percent'>
		Fades <code>percent</code> of the Actor from the left where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='faderight' return='void' arguments='float percent'>
		Fades <code>percent</code> of the Actor from the right where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='fadetop' return='void' arguments='float percent'>
		Fades <code>percent</code> of the Actor from the top where <code>percent</code> is in the range 0..1.
	</Function>
	<Function name='finishtweening' return='void' arguments=''>
		Finishes up an Actor's tween immediately.
	</Function>
	<Function name='FullScreen' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Stretches an Actor to fill the entire screen.
	</Function>
	<Function name='getaux' return='float' arguments=''>
		Returns the Actor's aux value.
	</Function>
	<Function name='GetBaseZoomX' return='float' arguments=''>
		Returns the Actor's base X zoom value.
	</Function>
	<Function name='GetBaseZoomY' return='float' arguments=''>
		Returns the Actor's base Y zoom value.
	</Function>
	<Function name='GetBaseZoomZ' return='float' arguments=''>
		Returns the Actor's base Z zoom value.
	</Function>
	<Function name='GetCommand' return='bool' arguments='string sCmdName'>
		Returns <code>true</code> if the Actor has a command named <code>sCmdName</code>.
	</Function>
	<Function name='GetDiffuse' return='color' arguments=''>
		Returns the Actor's current diffuse color.
	</Function>
	<Function name='GetDiffuseAlpha' return='float' arguments=''>
		Returns the Actor's current diffusealpha.
	</Function>
	<Function name='GetEffectDelta' return='float' arguments=''>
		Returns the Actor's current effect delta.
	</Function>
	<Function name='geteffectmagnitude' return='float, float, float' arguments=''>
		Returns the Actor's current effect magnitude as three floats.
	</Function>
	<Function name='GetGlow' return='color' arguments=''>
		Returns the Actor's current glow color.
	</Function>
	<Function name='GetHAlign' return='float' arguments=''>
		Returns the Actor's horizontal alignment as a number in the range 0..1.
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Returns the Actor's name.
	</Function>
	<Function name='GetNumStates' return='int' arguments=''>
		Returns the number of states the Actor has.
	</Function>
	<Function name='GetHeight' return='float' arguments=''>
		Returns the Actor's current height.
	</Function>
	<Function name='getrotation' return='float, float, float' arguments=''>
		Returns the Actor's current X, Y, and Z rotation in degrees as three separate floats.
	</Function>
	<Function name='GetRotationX' return='float' arguments=''>
		Returns the Actor's current X rotation in degrees.
	</Function>
	<Function name='GetRotationY' return='float' arguments=''>
		Returns the Actor's current Y rotation in degrees.
	</Function>
	<Function name='GetRotationZ' return='float' arguments=''>
		Returns the Actor's current Z rotation in degrees.
	</Function>
	<Function name='GetSecsIntoEffect' return='float' arguments=''>
		Returns the number of seconds into the currently running effect (e.g. diffuseshift, bob).
	</Function>
	<Function name='GetTweenTimeLeft' return='float' arguments=''>
		Returns how much time is remaining for the current tween.
	</Function>
	<Function name='GetVAlign' return='float' arguments=''>
		Returns the Actor's vertical alignment as a number in the range 0..1.
	</Function>
	<Function name='GetWidth' return='float' arguments=''>
		Returns the Actor's current width.
	</Function>
	<Function name='GetZoomedHeight' return='float' arguments=''>
		Returns the zoomed height of an Actor.
	</Function>
	<Function name='GetZoomedWidth' return='float' arguments=''>
		Returns the zoomed width of an Actor.
	</Function>
	<Function name='get_tween_uses_effect_delta' return='bool' arguments=''>
		Returns true if this actor is currently set to use the effect delta for tweening.
	</Function>
	<Function name='glow' return='void' arguments='color c'>
		Sets the Actor's glow color.
	</Function>
	<Function name='glowblink' return='void' arguments=''>
		Makes the Actor glow between two colors immediately.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/effect_colors.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/effect_colors.txt</a>
		for an example.
	</Function>
	<Function name='glowramp' return='void' arguments=''>
		Makes the Actor glow between two colors smoothly, jumping back to the first at the end.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/effect_colors.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/effect_colors.txt</a>
		for an example.
	</Function>
	<Function name='glowshift' return='void' arguments=''>
		Makes the Actor glow between two colors smoothly.
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/effect_colors.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/effect_colors.txt</a>
		for an example.
	</Function>
	<Function name='halign' return='void' arguments='float fAlign'>
		Set the fractional horizontal alignment of the Actor according to <code>fAlign</code> which should be a float in the range 0..1. An alignment of 0 is left-aligned while an alignment of 1 is right-aligned.<br />
		Use <Link function='horizalign' /> for the common case.
	</Function>
	<Function name='heading' return='void' arguments='float fHeading'>
		Sets the heading of this Actor to <code>fHeading</code>.
	</Function>
	<Function name='hibernate' return='void' arguments='float fTime'>
		Hides the Actor for the specified amount of time.
	</Function>
	<Function name='hidden' return='void' theme='_fallback' arguments='bool b'>
		[Deprecated] Compatibility alias for the hidden command, which was removed in sm-ssc. Use <Link function='visible' /> instead.
	</Function>
	<Function name='hide_if' theme='_fallback' return='void' arguments='bool b'>
		[02 Actor.lua] "Hide if <code>b</code> is <code>true</code>, but don't unhide if <code>b</code> is <code>false</code>."
	</Function>
	<Function name='horizalign' return='void' arguments='HorizAlign align'>
		Set the <Link class='ENUM' function='HorizAlign'/> of the Actor according to <code>align</code>.<br />
<pre><code>
local spr = LoadActor('awesome.png')
spr.InitCommand=function(self)
	self:horizalign('HorizAlign_Left')
end
</code></pre>
		Use <Link function='halign' /> for fractional alignment.
	</Function>
	<Function name='hurrytweening' return='void' arguments='float factor'>
		Hurries up an Actor's tweening by <code>factor</code>.
	</Function>
	<Function name='linear' return='void' arguments='float fRate'>
		Plays the commands that follow at a normal (linear) rate, where <code>fRate</code> is in seconds.<br />
		<code>linear</code> is a basic tween command, along with <Link function='accelerate' />, <Link function='decelerate' />, <Link function='spring' />, and <Link function='tween' />.
	</Function>
	<Function name='LyricCommand' theme='_fallback' return='void' arguments='string side'>
		[02 Lyrics.lua] Plays the lyric command for the specified <code>side</code> (<code>"Back"</code> or <code>"Front"</code>).
	</Function>
	<Function name='name' return='void' arguments='string sName'>
		Sets the Actor's name to <code>sName</code>.
	</Function>
	<Function name='pause' return='void' arguments=''>
		Stops the Actor's movement. (Usually used for Sprites or Models.)
	</Function>
	<Function name='pitch' return='void' arguments='float fPitch'>
		Sets the pitch of this Actor to <code>fPitch</code>.
	</Function>
	<Function name='play' return='void' arguments=''>
		Starts the Actor's movement. (Usually used for Sprites or Models.)
	</Function>
	<Function name='playcommand' return='void' arguments='string sCommandName, table params'>
		Plays a command named <code>sCommandName</code>.  <code>params</code> is passed to the command as an argument if it is a table.
	</Function>
	<Function name='player' theme='_fallback' return='void' arguments='PlayerNumber p'>
		[02 Actor.lua] Sets the visibility of the Actor based on <code>p</code> being a human player.
	</Function>
	<Function name='pulse' return='void' arguments=''>
		Makes the Actor grow and shrink. Can use <Link function='effectmagnitude' /> to define different pulsing behavior.
	</Function>
	<Function name='queuecommand' return='void' arguments='string sCommandName'>
		Queues a command named <code>sCommandName</code> to be played.
	</Function>
	<Function name='queuemessage' return='void' arguments='string sMessageName'>
		Basically creates a command named <code>!sMessageName</code> (Note the ! at the beginning. The source code says this: "Hack: use "!" as a marker to broadcast a command, instead of playing a command, so we don't have to add yet another element to every tween state for this rarely-used command.")
	</Function>
	<Function name='rainbow' return='void' arguments=''>
		Makes the Actor change colors continually using colors of the rainbow.  Each channel follows a cosine wave, red starts at 0, green starts at 2pi/3, and blue starts at 4pi/3.
	</Function>
	<Function name='roll' return='void' arguments='float fRoll'>
		Sets the roll of this Actor to <code>fRoll</code>.
	</Function>
	<Function name='rotationx' return='void' arguments='float fRotation'>
		Set the Actor's rotation on the X axis to <code>fRotation</code> degrees.
	</Function>
	<Function name='rotationy' return='void' arguments='float fRotation'>
		Set the Actor's rotation on the Y axis to <code>fRotation</code> degrees.
	</Function>
	<Function name='rotationz' return='void' arguments='float fRotation'>
		Set the Actor's rotation on the Z axis to <code>fRotation</code> degrees.
	</Function>
	<Function name='RunCommandsRecursively' return='void' arguments='LuaReference cmds'>
		Recursively runs the commands in <code>cmds</code> on the Actor's children, as well as the Actor itself.<br />
		Since <code>RunCommandsRecursively</code> belongs to StepMania's base <code>Actor</code> class, it is available to all specialized actors.  Calling it from an ActorFrame or ActorFrameTexture can be helpful, as those specialized actors can contain children actors.<br />
		See <Link class='ActorFrame' function='RunCommandsOnChildren' /> and <Link class='ActorFrame' function='runcommandsonleaves' /> for related needs.<br />
		Example:
<pre><code>
Def.ActorFrame{
	Name="AF",
	
	Def.Sprite{ Name="sun", Texture="sun.png" },
	
	Def.ActorFrame{
		Name="AF2",
		InitCommand=function(self)
			-- bounce() will be applied to AF2, airhorn, and catchphrase
			self:RunCommandsRecursively( function(actor) actor:bounce() end )
		end,
		
		Def.Sprite{ Name="airhorn", Texture="airhorn.png" },
		Def.BitmapText{ Name="catchphrase", Font="Common Normal", Text="Yo!" }
	}
}
</code></pre>
	</Function>
	<Function name='scale_or_crop_alternative' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] An alternative version of <Link function='scale_or_crop_background' />.
	</Function>
	<Function name='scale_or_crop_background' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua]
	</Function>
	<Function name='scaletocover' return='void' arguments='float fLeft, float fTop, float fRight, float fBottom'>
		Scales the Actor to cover a rectangle defined by the four float arguments.
	</Function>
	<Function name='scaletofit' return='void' arguments='float fLeft, float fTop, float fRight, float fBottom'>
		Scales the Actor to fit inside a rectangle defined by the four float arguments.
	</Function>
	<Function name='SetHeight' return='void' arguments='float height'>
		Sets the height of the Actor.
	</Function>
	<Function name='setsize' return='void' arguments='float width, float height'>
		Sets the size of the Actor.
	</Function>
	<Function name='SetSize' theme='_fallback' return='void' arguments='float width, float height'>
		[01 alias.lua] Alias for setsize.
	</Function>
	<Function name='setstate' return='void' arguments='int iNewState'>
		Sets a multi-framed Actor's state to <code>iNewState</code>.
	</Function>
	<Function name='SetWidth' return='void' arguments='float width'>
		Sets the width of the Actor.
	</Function>
	<Function name='set_tween_uses_effect_delta' return='' arguments='bool'>
		Use this to make the actor use the effect clock to tween instead of using the global frame delta.
	</Function>
	<Function name='shadowcolor' return='void' arguments='color c'>
		Sets the shadow's color to <code>c</code>.
	</Function>
	<Function name='shadowlength' return='void' arguments='float fLength'>
		Sets the Actor's shadow length to <code>fLength</code>.
	</Function>
	<Function name='shadowlengthx' return='void' arguments='float fLength'>
		Sets the Actor's horizontal shadow length to <code>fLength</code>.
	</Function>
	<Function name='shadowlengthy' return='void' arguments='float fLength'>
		Sets the Actor's vertical shadow length to <code>fLength</code>.
	</Function>
	<Function name='skewx' return='void' arguments='float fAmount'>
		Skews the Actor on the x axis by <code>fAmount</code>.
	</Function>
	<Function name='skewy' return='void' arguments='float fAmount'>
		Skews the Actor on the y axis by <code>fAmount</code>.
	</Function>
	<Function name='sleep' return='void' arguments='float fSeconds'>
		Waits <code>fSeconds</code> before executing the next command.
	</Function>
	<Function name='smooth' theme='_fallback' return='void' arguments='float time'>
		[02 Actor.lua]
	</Function>
	<Function name='spin' return='void' arguments=''>
		Tells the Actor to spin. Can use <Link function='effectmagnitude' /> to define different spinning behavior.
	</Function>
	<Function name='spring' return='' arguments=''>
		<code>spring</code> is a basic tween command, along with <Link function='linear' />, <Link function='accelerate' />, <Link function='decelerate' />, and <Link function='tween' />.
	</Function>
	<Function name='stopeffect' return='void' arguments=''>
		Stops any effect the Actor has.
	</Function>
	<Function name='stoptweening' return='void' arguments=''>
		Stops any tweening.
	</Function>
	<Function name='stretchto' return='void' arguments='float x1, float y1, float x2, float y2'>
		Stretches the Actor to a rectangle of a specific size.
	</Function>
	<Function name='texturetranslate' return='void' arguments='float x, float y'>
		Translates the texture of the actor by x and y.
	</Function>
	<Function name='texturewrapping' return='void' arguments='bool bWrap'>
		Determines if the Actor should use texture wrapping or not.
	</Function>
	<Function name='tween' return= '' arguments='float time, TweenType type, table params'>
		Generic method for tweening an actor.<br />
		<code>time</code> is in seconds.  <code>type</code> is a <Link class='ENUM' function='TweenType' /><br />
		If the type is <code>TweenType_Bezier</code>, then the <code>params</code> table must have 4 or 8 numbers.  4 numbers creates a 1 dimensional bezier curve, 8 numbers creates a 2 dimensional bezier curve.<br />
		If the type is not <code>TweenType_Bezier</code>, the <code>params</code> table is ignored.<br />
		It's usually more convenient to use <Link function='linear' />, <Link function='accelerate' />, <Link function='decelerate' />, or <Link function='spring' /> rather than using Actor:tween() directly.
	</Function>
	<Function name='valign' return='void' arguments='float fAlign'>
		Set the fractional vertical alignment of the Actor according to <code>fAlign</code> which should be a float in the range 0..1. An alignment of 0 is top-aligned while an alignment of 1 is bottom-aligned.<br />
		Use <Link function='vertalign' /> for the common case.
	</Function>
	<Function name='vertalign' return='void' arguments='VertAlign align'>
		Set the <Link class='ENUM' function='VertAlign' /> of the Actor according to <code>align</code>.<br />
<pre><code>
local spr = LoadActor('awesome.png')
spr.InitCommand=function(self)
	self:vertalign('VertAlign_Bottom')
end
</code></pre>
		Use <Link function='valign' /> for fractional alignment.
	</Function>
	<Function name='vibrate' return='void' arguments=''>
		Makes the Actor vibrate violently. Can use <Link function='effectmagnitude' /> to define different vibration behavior.
	</Function>
	<Function name='visible' return='void' arguments='bool b'>
		Sets an Actor's visibility to b.
	</Function>
	<Function name='wag' return='void' arguments=''>
		Makes the Actor wag. Use <Link function='effectmagnitude' /> to define different wag behavior.
	</Function>
	<Function name='x' return='void' arguments='float xPos'>
		Set the x position of the Actor to <code>xPos</code>.
	</Function>
	<Function name='y' return='void' arguments='float yPos'>
		Set the y position of the Actor to <code>yPos</code>.
	</Function>
	<Function name='z' return='void' arguments='float zPos'>
		Set the z position of the Actor to <code>zPos</code>.
	</Function>
	<Function name='zbias' return='void' arguments='float fBias'>
		Sets the z bias to <code>fBias</code>.
	</Function>
	<Function name='zbuffer' return='void' arguments='bool bUse'>
		Enables/disables z-buffer depending on <code>bUse</code>.
	</Function>
	<Function name='zoom' return='void' arguments='float zoom'>
		Zooms the Actor to <code>zoom</code> scale.
	</Function>
	<Function name='zoomto' return='void' arguments='float zoomX, float zoomY'>
		Zooms the Actor on both the X and Y axis using <code>zoomX</code> and <code>zoomY</code>.
	</Function>
	<Function name='zoomtoheight' return='void' arguments='float zoom'>
		Zooms the Actor to <code>zoom</code> height. See also: <Link function='zoomy' />.
	</Function>
	<Function name='zoomtowidth' return='void' arguments='float zoom'>
		Zooms the Actor to <code>zoom</code> width. See also: <Link function='zoomx' />.
	</Function>
	<Function name='zoomx' return='void' arguments='float zoom'>
		Zooms the Actor to <code>zoom</code> scale on the X axis.
	</Function>
	<Function name='zoomy' return='void' arguments='float zoom'>
		Zooms the Actor to <code>zoom</code> scale on the Y axis.
	</Function>
	<Function name='zoomz' return='void' arguments='float zoom'>
		Zooms the Actor to <code>zoom</code> scale on the Z axis.
	</Function>
	<Function name='ztest' return='void' arguments='bool bTest'>
		Sets the z testing mode to write on pass if <code>true</code>, turns it off if <code>false</code>
	</Function>
	<Function name='ztestmode' return='void' arguments='ZTestMode testMode'>
		Sets the z testing mode to <code>testMode</code>.
	</Function>
	<Function name='zwrite' return='void' arguments='bool bWrite'>
		Sets z writing to <code>true</code> or <code>false</code> based on <code>bWrite</code>.
	</Function>
	<!-- addons from scripts that come with sm-ssc (non-compat) -->
	<Function name='bezier' theme='_fallback' return='' arguments='float time, table curve'>
		[02 Actor.lua] Plays the commands that follow using a bezier curve to determine the rate.  The curve must have 4 or 8 elements.  This is a convenience wrapper around calling Actor:tween with TweenType_Bezier.
	</Function>
	<Function name='FullScreen' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Stretches an Actor to cover the screen. (equivalent to <code>stretchto,0,0,SCREEN_WIDTH,SCREEN_HEIGHT</code>)
	</Function>
	<Function name='heartbeat' theme='_fallback' return='void' arguments='float fEffectPeriod'>
		[02 Actor.lua] A customized version of pulse that is more appealing for on-beat effects.
	</Function>
	<Function name='MaskDest' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Sets and Actor as a mask destination.
	</Function>
	<Function name='MaskSource' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Sets an Actor as a mask source. (Also clears zbuffer; other mask sources need to not clear the zbuffer)
	</Function>
	<Function name='Real' theme='_fallback' return='void' arguments='float f'>
		[02 Actor.lua] Make graphics their true size at any resolution.
	</Function>
	<Function name='RealInverse' theme='_fallback' return='void' arguments='float f'>
		[02 Actor.lua] Scale things back up after they have already been scaled down.
	</Function>
	<Function name='thump' theme='_fallback' return='void' arguments='float fEffectPeriod'>
		[02 Actor.lua] A customized version of pulse that is more appealing for on-beat effects.
	</Function>
	<Function name='xy' return='void' arguments='float actorX, float actorY'>
		Sets the x and y location of the Actor in one command.
	</Function>
</Class>
<Class name='ActorFrame' grouping='Actor'>
	<Description>
		ActorFrames are containers that allow multiple children actors to be grouped and scripted together.<br />
		In theming, the StepMania engine expects a screen layer (underlay, overlay, decorations, in, out, cancel)
		file to return one actor, and it is common to return one ActorFrame that contains many actors of various
		specialization.<br />
		A common convention is to add children at the next index (current size of the table plus <code>1</code>).<br />
		Basic example:
<pre><code>
-- in the context of a .lua file as a screen layer
-- this ActorFrame can be thought of as a Lua table
local af = Def.ActorFrame{}

-- add a Sprite at the next index
af[#af+1] = Def.Sprite{
	Texture="smilingsun.png"
}

-- add a BitmapText at the next index
af[#af+1] = Def.BitmapText{
	Font="Common normal",
	Text="Yo!"
}

-- have the file return the ActorFrame
-- for the StepMania engine to interpret
return af
</code></pre>
	When actor commands like <Link class='Actor' function='xy' /> and <Link class='Actor' function='zoom' />
	are used to position and scale an ActorFrame, its children will position relative to the parent ActorFrame
	and scale proportionally.<br />
	For example, if you want to animate 50 actors moving 100px to the right in unison, it is easier to move the
	parent ActorFrame than each actor individually.<br />
	Basic example:
<pre><code>
local af = Def.ActorFrame{}

-- move the ActorFrame +100px
-- over a 2 second duration
-- its children will move with it
af.OnCommand=function(self)
	self:linear(2):addx(100)
end

-- add various children actors
-- to the parent ActorFrame
af[#af+1] = Def.Sprite{
	Texture="taro.png"
}

af[#af+1] = Def.Sprite{
	Texture="laer.png"
}

-- etc.

return af
</code></pre>
	Likewise, if you stop drawing an ActorFrame by applying <code>visible(false)</code> to it, its children
	will stop drawing with it.<br />
	ActorFrames can contain ActorFrames, and doing so is good design for sufficiently complex screens.
	</Description>

	<Function name='AddChildFromPath' return='bool' arguments='string sPath'>
		Adds a child to the ActorFrame from the specified path.
	</Function>
	<Function name='fov' return='void' arguments='float fFOV'>
		Sets the field of view for the ActorFrame.
	</Function>
	<Function name='GetChild' return='Actor' arguments='string sName'>
		Returns the child with a name of <code>sName</code>.<br />
		If there are multiple children with that name, returns an array of those children.<br />
		The table also acts as a pass through layer, function calls pass through to the last child of that name.
	</Function>
	<Function name='GetChildren' return='{Actor}' arguments=''>
		Returns a table of all the children in the ActorFrame.<br />
		The table is indexed by the names of the children.<br />
		If there are multiple children with the same name, the entry for that name is an array of those children.<br />
		The table also acts as a pass through layer, function calls pass through to the last child of that name.
	</Function>
	<Function name='GetDrawFunction' return='LuaReference' arguments=''>
		Gets the ActorFrame's Draw function.
	</Function>
	<Function name='GetNumChildren' return='int' arguments=''>
		Returns the number of children in the ActorFrame.
	</Function>
	<Function name='GetUpdateRate' return='float' arguments=''>
		Gets the update function's rate.
	</Function>
	<Function name='playcommandonchildren' return='void' arguments='string sCommandName'>
		Plays the <code>sCommandName</code> command on the ActorFrame's children.
	</Function>
	<Function name='playcommandonleaves' return='void' arguments='string sCommandName'>
		Plays the <code>sCommandName</code> command on the ActorFrame's leaves.
	</Function>
	<Function name='propagate' return='void' arguments='bool bPropagate'>
		Sets if the Actorframe should propagate commands to its children.
	</Function>
	<Function name='propagatecommand' theme='_fallback' return='void' arguments='LuaReference cmd'>
		[02 Actor.lua] Propagates a command to the ActorFrame's children.
	</Function>
	<Function name='RemoveAllChildren' return='void' arguments=''>
		Removes all the children from the ActorFrame.
	</Function>
	<Function name='RemoveChild' return='void' arguments='string sChild'>
		Removes the specified child from the ActorFrame.
	</Function>
	<Function name='RunCommandsOnChildren' return='void' arguments='LuaReference cmds'>
		Runs the commands in <code>cmds</code> on the ActorFrame's immediate children. <br />
		See <Link class='Actor' function='RunCommandsRecursively' /> and <Link function='runcommandsonleaves' /> for related needs.<br />
		Example:
<pre><code>
Def.ActorFrame{
	Name="AF",
	InitCommand=function(self)
		-- bounce() will be applied to sun and AF2
		self:RunCommandsOnChildren( function(child) child:bounce() end )
	end,
	
	Def.Sprite{ Name="sun", Texture="sun.png" },
	
	Def.ActorFrame{
		Name="AF2",
		Def.Sprite{ Name="airhorn", Texture="airhorn.png" },
		Def.BitmapText{ Name="catchphrase", Font="Common Normal", Text="Yo!" }
	}
}
</code></pre>
	</Function>
	<Function name='runcommandsonleaves' return='void' arguments='LuaReference cmds'>
		Runs the commands in <code>cmds</code> on the ActorFrame's leaves.  Leaves are nodes in the ActorFrame tree that have no further child nodes.<br />
		See <Link function='RunCommandsOnChildren' /> and <Link class='Actor' function='RunCommandsRecursively' /> for related needs.<br />
		Example:
<pre><code>
Def.ActorFrame{
	Name="AF",
	InitCommand=function(self)
		-- bounce() will be applied to sun, airhorn, and catchphrase
		self:runcommandsonleaves( function(leaf) leaf:bounce() end )
	end,
	
	Def.Sprite{ Name="sun", Texture="sun.png" },
	
	Def.ActorFrame{
		Name="AF2",
		Def.Sprite{ Name="airhorn", Texture="airhorn.png" },
		Def.BitmapText{ Name="catchphrase", Font="Common Normal", Text="Yo!" }
	}
}
</code></pre>
	</Function>
	<Function name='SetAmbientLightColor' return='void' arguments='Color c'>
		Sets the ActorFrame's ambient light color to <code>c</code>.
	</Function>
	<Function name='SetDiffuseLightColor' return='void' arguments='Color c'>
		Sets the ActorFrame's diffuse light color to <code>c</code>.
	</Function>
	<Function name='SetDrawByZPosition' return='void' arguments='bool b'>
		Sets if the ActorFrame should draw by Z position.
	</Function>
	<Function name='SetDrawFunction' return='void' arguments='LuaReference DrawFunction'>
		Sets the ActorFrame's Draw function to the specified Lua function.
	</Function>
	<Function name='SetFOV' return='void' arguments='float fFOV'>
		Sets the field of view for the ActorFrame.
	</Function>
	<Function name='SetLightDirection' return='void' arguments='float x, float y, float z'>
		Currently unimplemented since it does not handle errors correctly. Arguments must be passed in as a table.
	</Function>
	<Function name='SetSpecularLightColor' return='void' arguments='Color c'>
		Sets the ActorFrame's specular light color to <code>c</code>.
	</Function>
	<Function name='SetUpdateFunction' return='void' arguments='LuaReference UpdateFunction'>
		Sets the ActorFrame's update function to the specified Lua function.
	</Function>
	<Function name='SetUpdateRate' return='void' arguments='float fRate'>
		Sets the update function's rate to <code>fRate</code>.
	</Function>
	<Function name='SortByDrawOrder' return='void' arguments=''>
		Tells the ActorFrame to sort by draw order.
	</Function>
	<Function name='vanishpoint' return='void' arguments='float fX, float fY'>
		Sets the vanishing point for the ActorFrame.
	</Function>
</Class>
<Class name='ActorFrameTexture' grouping='Actor'>
	<Function name='Create' return='void' arguments=''>
		Creates the ActorFrameTexture.
	</Function>
	<Function name='EnableAlphaBuffer' return='void' arguments='bool bEnable'>
		Enables/disables the Alpha Buffer.
	</Function>
	<Function name='EnableDepthBuffer' return='void' arguments='bool bEnable'>
		Enables/disables the Depth Buffer.
	</Function>
	<Function name='EnableFloat' return='void' arguments='bool bEnable'>
		Enables/disables
	</Function>
	<Function name='EnablePreserveTexture' return='void' arguments='bool bEnable'>
		Enables/disables the Preserve Texture option.
	</Function>
	<Function name='GetTexture' return='RageTexture' arguments=''>
		Returns the texture.
	</Function>
	<Function name='SetTextureName' return='void' arguments='string sName'>
		Sets the Texture's name to <code>sName</code>.
	</Function>
</Class>
<Class name='ActorMultiTexture' grouping='Actor'>
	<Function name='AddTexture' return='int' arguments='RageTexture tex'>
		Adds a texture to the ActorMultiTexture. Returns the number of texture units.
	</Function>
	<Function name='ClearTextures' return='void' arguments=''>
		Clears all the textures from the ActorMultiTexture.
	</Function>
	<Function name='SetEffectMode' return='void' arguments='EffectMode em'>
		Sets the <Link class='ENUM' function='EffectMode' /> on the ActorMultiTexture.
	</Function>
	<Function name='SetSizeFromTexture' return='void' arguments='RageTexture tex'>
		Sets the size of the ActorMultiTexture from the specified texture.
	</Function>
	<Function name='SetTextureCoords' return='void' arguments='float x1, float y1, float x2, float y2'>
		Sets the coordinates of the ActorMultiTexture.
	</Function>
	<Function name='SetTextureMode' return='void' arguments='int iIndex, TextureMode tm'>
		Sets a <Link class='ENUM' function='TextureMode' /> on the specified index.
	</Function>
</Class>
<Class name='ActorMultiVertex' grouping='Actor'>
	<Function name='AddQuadState' return='' arguments='int offset'>
		The list of quad states is used to determine which animation state is used for each quad.  The offset is added to the AMV's current state, and the resulting state is used.
	</Function>
	<Function name='AddState' return='' arguments='table state_data'>
		Adds an animation state to the ActorMultiVertex.  The state_data table must be like this:<br />
		{{left, top, right, bottom}, delay}<br />
		left, top, right, and bottom are pixel coordinates, starting at 0.  If delay is 0 or negative, the state will last forever.
	</Function>
	<Function name='ForceStateUpdate' return='' arguments=''>
		Forces the AMV to update the texture coordinates on all its quads, even if the current state has not changed.
	</Function>
	<Function name='GetUseAnimationState' return= 'bool' arguments=''>
		Returns whether the AMV uses the animation state.
	</Function>
	<Function name='SetUseAnimationState' return= '' arguments='bool use'>
		Sets whether the AMV uses the animation state.<br />
		This works best when using DrawMode_Quads.<br />
		AMV's can have animated textures like sprites.  Each state tells the AMV what part of the texture to use, and how long the state lasts.<br />
		Use AddState to add a state onto the end, or SetStateProperties to set all the states at once, or SetState to set a single state.<br />
		Each quad has its own offset that is added to the current state.  Use AddQuadState to add to the list of quad states, or SetQuadState to set an existing quad state.
	</Function>
	<Function name='GetNumStates' return= 'int' arguments=''>
		Returns the number of states the AMV has.
	</Function>
	<Function name='GetNumQuadStates' return= 'int' arguments=''>
		Returns the number of quad states in the destination tween state for the AMV.
	</Function>
	<Function name='GetState' return= 'int' arguments=''>
		Returns the id of the current state.
	</Function>
	<Function name='GetDecodeMovie' return='bool' arguments=''>
		Gets whether the AMV should call the decode function for its texture during updates.
	</Function>
	<Function name='SetDecodeMovie' return='' arguments='bool decode'>
		Sets whether the AMV should call the decode function for its texture during updates.
	</Function>
	<Function name='SetState' return= '' arguments='int id'>
		Sets the current state.
	</Function>
	<Function name='GetQuadState' return= 'int' arguments='int id'>
		Returns the offset of the requested quad state.
	</Function>
	<Function name='SetQuadState' return= '' arguments='int id, int offset'>
		Sets the offset of the requested quad state.
	</Function>
	<Function name='GetStateData' return= 'table' arguments='int id'>
		Returns a table containing the data for the requested state.
	</Function>
	<Function name='SetStateData' return= '' arguments='int id, table state_data'>
		Sets the requested state to the data in state_data.  Similar to AddState, but SetStateData only works on states that have already been added.
	</Function>
	<Function name='SetStateProperties' return= '' arguments='table {state_data, ...}'>
		Each element of the table must be a state_data table, and is used to construct one state.  The table as a whole is the entire list of all states for the AMV.
	</Function>
	<Function name='RemoveState' return= '' arguments='int id'>
		Removes the requested state from the state list.
	</Function>
	<Function name='RemoveQuadState' return= '' arguments='int id'>
		Removes the requested quad state from the quad state list.
	</Function>
	<Function name='SetAllStateDelays' return= '' arguments='float delay'>
		Sets the delay for every state to delay.
	</Function>
	<Function name='SetSecondsIntoAnimation' return= '' arguments='float seconds'>
		Sets how far into its animation the AMV is.
	</Function>
	<Function name='SetVertex' return='void' arguments='int index, table { table pos, table color, table textcoords }'>
		Sets vertex number <code>index</code> with the properties provided. The tables of properties are each optional and can be provided in any order.
	</Function>
	<Function name='SetVertices' return='void' arguments='int first, table vertices'>
		Sets multiple vertices at once. The elements of <code>vertices</code> should themselves be tables, of the form provided to <Link class='ActorMultiVertex' function='SetVertex'>SetVertex</Link>. If <code>vertices</code> is the first argument it will start from vertex 1. If an integer is provided before <code>vertices</code> it will start from that vertex. It will add vertices as necessary.
        Example: self:SetVertices( { { { x1, y1, z1 } , { r1,g1,b1,a1 } , { tcx1,tcy1 } }; { { x2, y2, z2 } , { r2,g2,b2,a2 } , { tcx2,tcy2 } } } )
	</Function>
	<Function name='SetVertsFromSplines' return='' arguments=''>
		Sets all the drawn verts of the ActorMultiVertex by evaluating the splines.<br />
		("all the drawn verts" means all the verts between FirstToDraw and NumToDraw, the verts that are set to draw in the current tween state.)<br />
		The parts of the ActorMultiVertex are evenly spaced along the spline in terms of t value.<br />
		The exact behavior depends on the draw mode.<br />
		DrawMode_Quads uses all 4 splines, one for each corner.<br />
		DrawMode_QuadStrip and DrawMode_Strip use 2 splines, one for each edge of the strip.<br />
		DrawMode_Fan uses one spline, for the edge verts of the fan.  The first vert is not touched because it is the center.<br />
		DrawMode_Triangles uses 3 splines, one for each corner.<br />
		DrawMode_SymmetricQuadStrip uses 3 splines, one on each edge and one in the center.<br />
		DrawMode_LineStrip uses 1 spline.<br />
	</Function>
	<Function name='GetSpline' return='CubicSplineN' arguments='int i'>
		Returns the requested spline.  Spline indices range from 1 to 4.<br />
		ActorMultiVertex splines are not inside the tween state, and will not change the verts until you call SetVertsFromSplines.
	</Function>
	<Function name='SetNumVertices' return='void' arguments='int num'>
		Sets the number of vertices.
	</Function>
	<Function name='GetNumVertices' return='void' arguments='void'>
		Returns the number of vertices
	</Function>
	<Function name='SetDrawState' return='void' arguments='table { Mode= mode, First= first, Num= num }'>
		Sets the draw state variables to the values in the table.<br />
		<code>Mode</code> must be a <Link class='ENUM' function='DrawMode'/>.<br />
		<code>First</code> is the index of the first vertex to draw.<br />
		<code>Num</code> is the number of vertices to draw.  -1 for <code>Num</code> means draw all verts after <code>First</code>.<br />
		Any value not in the table defaults to the already set value.<br />
		Examples:
<pre><code>
-- Sets all three parts of the draw state.
self:SetDrawState{Mode="DrawMode_Quads", First= 1, Num= -1}
-- Set only the draw mode.  First and Num remain unchanged from previous.
self:SetDrawState{Mode="DrawMode_Quads"}
-- Set the first and number to draw.  Draw mode remains unchanged.
self:SetDrawState{First= 3, Num= 4}
</code></pre>
	</Function>
	<Function name='GetDestDrawMode' return='DrawMode' arguments='void'>
		Get the <Link class='ENUM' function='DrawMode'>DrawMode</Link> of the destination tween state.
	</Function>
	<Function name='GetDestFirstToDraw' return='int' arguments='void'>
		Get the FirstToDraw of the destination tween state.
	</Function>
	<Function name='GetDestNumToDraw' return='int' arguments='void'>
		Get the NumToDraw of the destination tween state.
	</Function>
	<Function name='GetCurrDrawMode' return='DrawMode' arguments='void'>
		Get the <Link class='ENUM' function='DrawMode'>DrawMode</Link> of the current tween state.
	</Function>
	<Function name='GetCurrFirstToDraw' return='int' arguments='void'>
		Get the FirstToDraw of the current tween state.
	</Function>
	<Function name='GetCurrNumToDraw' return='int' arguments='void'>
		Get the NumToDraw of the current tween state.
	</Function>
	<Function name='GetTexture' return='RageTexture' arguments=''>
		Returns the ActorMultiVertex's texture.
	</Function>
	<Function name='SetEffectMode' return='void' arguments='EffectMode em'>
		Sets the <Link class='ENUM' function='EffectMode' /> of the ActorMultiVertex.
	</Function>
	<Function name='SetTextureMode' return='void' arguments='TextureMode tm'>
		Sets the <Link class='ENUM' function='TextureMode' /> of the ActorMultiVertex.
	</Function>
	<Function name='SetLineWidth' return='void' arguments='float width'>
		Sets the width of the line for DrawMode_LineStrip.
	</Function>
	<Function name='SetTexture' return='void' arguments='RageTexture texture'>
		Sets the texture to <code>texture</code>
	</Function>
	<Function name='LoadTexture' return='void' arguments='string path'>
		Sets the texture at from the file path <code>path</code>.
	</Function>
</Class>
<Class name='ActorProxy' grouping='Actor'>
	<Function name='GetTarget' return='Actor' arguments=''>
		Returns the target of the ActorProxy.
	</Function>
	<Function name='SetTarget' return='void' arguments='Actor a'>
		Sets the ActorProxy target to <code>a</code>.
	</Function>
</Class>
<Class name='ActorScroller' grouping='Actor'>
	<Function name='GetCurrentItem' return='float' arguments=''>
		Returns the scroller's current item.
	</Function>
	<Function name='GetDestinationItem' return='float' arguments=''>
		Returns the item the scroller's going to.
	</Function>
	<Function name='GetFullScrollLengthSeconds' return='float' arguments=''>
		Returns how long it will take for the scroller to completely scroll through all its items.
	</Function>
	<Function name='GetNumItems' return='int' arguments=''>
		Returns the number of items in the ActorScroller.
	</Function>
	<Function name='GetSecondsPauseBetweenItems' return='float' arguments=''>
		Returns the number of seconds the scroller pauses between items.
	</Function>
	<Function name='GetSecondsToDestination' return='float' arguments=''>
		Returns the number of seconds until the scroller reaches its destination.
	</Function>
	<Function name='getsecondtodestination' theme='_fallback' return='float' arguments=''>
		Compatibility alias for <Link function='GetSecondsToDestination' />.
	</Function>
	<Function name='PositionItems' return='void' arguments=''>
		Positions the scroller items.
	</Function>
	<Function name='ScrollThroughAllItems' return='void' arguments=''>
		Scrolls through all the items in the scroller.
	</Function>
	<Function name='scrollthroughallitems' theme='_fallback' return='void' arguments=''>
		Compatibility alias for <Link function='ScrollThroughAllItems' />.
	</Function>
	<Function name='ScrollWithPadding' return='void' arguments='float fItemPaddingStart, float fItemPaddingEnd'>
		Scrolls through all the items in the scroller with padding at the beginning and end.
	</Function>
	<Function name='scrollwithpadding' theme='_fallback' return='void' arguments='float fItemPaddingStart, float fItemPaddingEnd'>
		Compatibility alias for <Link function='ScrollWithPadding' />.
	</Function>
	<Function name='SetCurrentAndDestinationItem' return='void' arguments='float fItemIndex'>
		Sets the item the scroller should scroll to next and makes it the current item.
	</Function>
	<Function name='SetDestinationItem' return='void' arguments='float fItemIndex'>
		Sets the item the scroller should scroll to next.
	</Function>
	<Function name='SetFastCatchup' return='void' arguments='bool bOn'>
		Sets if the scroller should catch up fast.
	</Function>
	<Function name='setfastcatchup' theme='_fallback' return='void' arguments='bool bOn'>
		Compatibility alias for <Link function='SetFastCatchup' />.
	</Function>
	<Function name='SetLoop' return='void' arguments='bool bLoop'>
		Specifies if the scroller should loop or not.
	</Function>
	<Function name='SetMask' return='void' arguments='float fWidth, float fHeight'>
		Sets the scroller's mask to a Quad that is <code>fWidth</code> by <code>fHeight</code> pixels.
	</Function>
	<Function name='SetNumItemsToDraw' return='void' arguments='float fNumItems'>
		Sets the scroller to draw <code>fNumItems</code> items.
	</Function>
	<Function name='SetNumSubdivisions' return='void' arguments='int iNumSubdivisions'>
		Sets the number of subdivisions in the scroller.
	</Function>
	<Function name='setnumsubdivisions' theme='_fallback' return='void' arguments='int iNumSubdivisions'>
		Compatibility alias for <Link function='SetNumSubdivisions' />.
	</Function>
	<Function name='SetPauseCountdownSeconds' return='void' arguments='float fSecs'>
		Sets the scroller's pause countdown to <code>fSecs</code>.
	</Function>
	<Function name='SetSecondsPauseBetweenItems' return='void' arguments='float fSeconds'>
		Sets the scroller's pause between items to <code>fSeconds</code>.
	</Function>
	<Function name='SetSecondsPerItem' return='void' arguments='float fSeconds'>
		Sets how many seconds the scroller should spend on each item.<br />
		A value of <code>0</code> means the scroller will not scroll.
	</Function>
	<Function name='setsecondsperitem' theme='_fallback' return='void' arguments='float fSeconds'>
		Compatibility alias for <Link function='SetSecondsPerItem' />.
	</Function>
	<Function name='SetTransformFromFunction' return='void' arguments='LuaReference ScrollerFunction'>
		Sets the scroller's transform function to the specified Lua function.
	</Function>
	<Function name='SetTransformFromHeight' return='void' arguments='float fItemHeight'>
		Sets the scroller's transform function from <code>fItemHeight</code>.
	</Function>
	<Function name='SetTransformFromWidth' return='void' arguments='float fItemWidth'>
		Sets the scroller's transform function from <code>fItemWidth</code>.
	</Function>
</Class>
<Class name='ActorSound' grouping='Actor'>
	<Description>
		This actor represents a playable sound.  Though the C++ class is ActorSound, it is accessible to Lua via <code>Def.Sound</code>.<br />
		You must provide <em>ActorSound</em>s with a filepath to the asset using their <code>File</code> attribute.
<pre><code>
Def.Sound{
	File="./path/to/soundeffect.ogg",
	OnCommand=function(self)
		-- play this sound effect at the parent screen's OnCommand
		self:play()
	end
}
</code></pre>
		 <em>ActorSound</em>s have three additional boolean attributes:<br />
		• <code>SupportPan</code> - Let the sound pan from side to side.<br />
		• <code>SupportRateChanging</code> - Let the sound change rate and pitch.<br />
		• <code>IsAction</code> - If true, the sound is an action sound, and will be muted if the MuteActions preference is turned on.<br />
		Basic example:
<pre><code>
Def.Sound{
	File="./path/to/soundeffect.ogg",
	SupportPan=true,
	SupportRateChanging=true,
	IsAction=false,
}
</code></pre>
	</Description>
	<Function name='get' return='RageSound' arguments=''>
		Returns the <Link class='RageSound' /> that can be played by this Actor.
	</Function>
	<Function name='get_is_action' return='bool' arguments=''>
		Returns whether the sound is an action.
	</Function>
	<Function name='load' return='void' arguments='string sPath'>
		Loads the sound at <code>sPath</code>.
	</Function>
	<Function name='pause' return='void' arguments='bool bPause'>
		Pauses or unpauses the sound based on <code>bPause</code>.
	</Function>
	<Function name='play' return='void' arguments=''>
		Plays the sound.
	</Function>
	<Function name='playforplayer' theme='_fallback' return='void' arguments='PlayerNumber pn'>
		[02 Sound.lua] Plays the sound on the given player's side. You must set <code>SupportPan = true</code> on load.
	</Function>
	<Function name='set_is_action' return='' arguments='bool is_action'>
		Sets whether the sound is an action.
	</Function>
	<Function name='stop' return='void' arguments=''>
		Stops the sound.
	</Function>
</Class>
<Class name='AnnouncerManager'>
	<Description>
		This singleton is accessible to Lua via <code>ANNOUNCER</code>.
	</Description>
	<Function name='DoesAnnouncerExist' return='bool' arguments='string sAnnonucer'>
		Returns true if Announcer <code>sAnnouncer</code> exists.
	</Function>
	<Function name='GetAnnouncerNames' return='{string}' arguments=''>
		Returns a table of installed announcers.
	</Function>
	<Function name='GetCurrentAnnouncer' return='string' arguments=''>
		Returns the current announcer's name.
	</Function>
	<Function name='SetCurrentAnnouncer' return='void' arguments='string sNewAnnouncer'>
		Sets the announcer to <code>sNewAnnouncer</code>.
	</Function>
</Class>
<Class name='ArchHooks'>
	<Description>
		This singleton is accessible to Lua via <code>HOOKS</code>.
	</Description>
	<Function name='AppHasFocus' return='bool' arguments=''>
		Returns <code>true</code> if the application presently has focus.
	</Function>
	<Function name='GetArchName' return='{string}' arguments=''>
		Returns the name of the architecture in use.
	</Function>
</Class>
<Class name='Banner' grouping='Actor'>
	<Function name='GetScrolling' return='bool' arguments=''>
		Returns <code>true</code> if the Banner is currently scrolling.
	</Function>
	<Function name='GetPercentScrolling' return='float' arguments=''>
		<!-- todo -->
	</Function>
	<Function name='LoadBackgroundFromUnlockEntry' return='void' arguments='UnlockEntry ue'>
		Loads the background from an UnlockEntry.
	</Function>
	<Function name='LoadBannerFromUnlockEntry' return='void' arguments='UnlockEntry ue'>
		Loads the banner from an UnlockEntry.
	</Function>
	<Function name='LoadCardFromCharacter' return='void' arguments='Character pCharacter'>
		Loads the card image from the specified Character.
	</Function>
	<Function name='LoadFromCachedBanner' return='void' arguments='string sPath'>
		Loads the banner from the cache based on <code>sPath</code> (typically <Link class='Song' function='GetBannerPath' /> or <Link class='Course' function='GetBannerPath' />).
	</Function>
	<Function name='LoadFromCourse' return='void' arguments='Course c'>
		Loads a Banner from a specified Course.
	</Function>
	<Function name='LoadFromSong' return='void' arguments='Song s'>
		Loads a Banner from a specified Song.
	</Function>
	<Function name='LoadFromSongGroup' return='void' arguments='string s'>
		Loads a Banner from a specified Song Group.
	</Function>
	<Function name='LoadFromSortOrder' return='void' arguments='SortOrder so'>
		Loads a Banner from a specified SortOrder.
	</Function>
	<Function name='LoadIconFromCharacter' return='void' arguments='Character pCharacter'>
		Loads an icon from the specified Character.
	</Function>
	<Function name='scaletoclipped' return='void' arguments='float fWidth, float fHeight'>
		See <Link class='Sprite' function='scaletoclipped' />.
	</Function>
	<Function name='ScaleToClipped' return='void' arguments='float fWidth, float fHeight'>
		See <Link class='Sprite' function='scaletoclipped' />.
	</Function>
	<Function name='SetScrolling' return='void' arguments='bool bScroll'>
		<!-- todo -->
	</Function>
</Class>
<Class name='BitmapText' grouping='Actor'>
	<Description>
		<em>BitmapText</em> actors are used to display text on-screen.<br />
		The font can be specified using the <code>Font</code> attribute. It takes a font name as a string,
		pathed relative to the current theme's <code>./Fonts/</code> directory.<br />
		StepMania expects fonts to be formatted as spritesheets with accompanying ini files.
		These can be generated from ttf files using <em>Texture Font Generator.exe</em> in the
		<code>./Program/</code> directory of packaged StepMania releases.<br />
		The text displayed can be initially set using the <code>Text</code> attribute, and changed
		later using <Link class='BitmapText' function='settext'>settext()</Link>.<br />
		Basic usage example:
<pre><code>
Def.BitmapText{
	Font="Common normal",
	Text="Hello!",
	OnCommand=function(self)
		self:sleep(2):settext("Hey!")
	end
}
</code></pre>
<br />
	The font can alternatively be specified with the <code>File</code> attribute,
	which takes the path to the ini file as a string, relative to the root of StepMania.<br />
	Basic example:
<pre><code>
-- use a custom font from a simfile
local song_dir = GAMESTATE:GetCurrentSong():GetSongDir()
local ini_path = "Fonts/courier/_courier 20px.ini"

Def.BitmapText{
	File=song_dir .. ini_path,
	Text="Hello, World!"
}
</code></pre>
	</Description>
	<Function name='AddAttribute' return='void' arguments='int iPos, Attribute attr'>
		Add the attribute <code>attr</code> to the string at position
		<code>iPos</code>.<br />
		The attribute is a table that must contain <code>Length</code>
		which specifies how many (multi-byte) characters the attribute
		is to apply. If <code>Length=-1</code>, then the attribute applies
		until another attribute overrides it.<br />
		If the table contains <code>Diffuse</code>, then the color value
		is applied to the range of text.<br />
		If the table contains <code>Diffuses</code>, then it should be
		an array of 4 colors which specify the diffuse color for the
		top left, top right, bottom left, and bottom right.<br />
		If the table contains <code>Glow</code>, then the color value
		is applied as a glow to the range of text.<br />
		Example:<br />
		<code>attr = { Length = 10; Diffuse = color("#AABBCC"); }</code>
	</Function>
	<Function name='ClearAttributes' return='void' arguments=''>
		Clear all attributes associated with the BitmapText.
	</Function>
	<Function name='DiffuseAndStroke' theme='_fallback' return='void' arguments='color diffuseColor, color strokeColor'>
		[02 Actor.lua] Sets the diffuse and stroke color of text in one command.
	</Function>
	<Function name='GetText' return='string' arguments=''>
		Returns the text that is currently set.
	</Function>
	<Function name='distort' return='void' arguments='float distortion_percentage'>
		Causes each character of text to be randomly distorted by
		distortion_percentage of its size when the text is set.  The distortion
		only changes when the text changes.
	</Function>
	<Function name='undistort' return='void' arguments=''>
		Turns off distortion.
	</Function>
	<Function name='get_mult_attrs_with_diffuse' return='bool' arguments=''>
		Returns whether the diffuse colors in the attributes are multiplied by the general diffuse colors of the BitmapText.
	</Function>
	<Function name='set_mult_attrs_with_diffuse' return='' arguments='bool mult'>
		If mult_attrs_with_diffuse is set to true, then the diffuse colors in the attributes are multiplied by the general diffuse colors of the BitmapText.
	</Function>
	<Function name='jitter' return='void' arguments='bool bJitter'>
		If <code>bJitter</code> is <code>true</code>, move each character of the string around by a small random amount.
	</Function>
	<Function name='max_dimension_use_zoom' return='void' arguments='bool use_zoom'>
		If use_zoom is true, this BitmapText will use the zoom that has been applied to it when calculating to change its base zoom from maxheight or maxwidth.
	</Function>
	<Function name='maxheight' return='void' arguments='float fHeight'>
		Set the maximum height of the unzoomed text to <code>fHeight</code>. If <code>fHeight</code> is <code>0</code>, then there is no maximum height.
	</Function>
	<Function name='maxwidth' return='void' arguments='float hWidth'>
		Set the maximum width of the unzoomed text to <code>fWidth</code>. If <code>fWidth</code> is <code>0</code>, then there is no maximum width.
	</Function>
	<Function name='NoStroke' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Remove any stroke color.
	</Function>
	<Function name='PixelFont' theme='_fallback' return='void' arguments=''>
		[02 Actor.lua] Alias for setting <Link class='Actor' function='SetTextureFiltering' /> to <code>false</code>.
	</Function>
	<Function name='rainbowscroll' return='void' arguments='bool bRainbowScroll'>
		If <code>true</code>, set each character of the text in turn to the rainbow colors in the metrics <code>BitmapText::RainbowColor#</code>.
	</Function>
	<Function name='settext' return='void' arguments='string sText'>
		Set the text to <code>sText</code>. This clears all attributes.
	</Function>
	<Function name='settextf' theme='_fallback' return='void' arguments='string sFormat, ...'>
		[02 Actor.lua] Sets text using <code>string.format(sFormat, ...)</code>.
	</Function>
	<Function name='Stroke' theme='_fallback' return='void' arguments='color c'>
		[02 Actor.lua] Alias for <Link function='strokecolor' />.
	</Function>
	<Function name='strokecolor' return='void' arguments='color c'>
		Sets the stroke color to <code>c</code>.
	</Function>
	<Function name='textglowmode' return='void' arguments='TextGlowMode tgm'>
		If the text is glowing, specify if just the stroke layer, just the inner layer, or both are affected by the glow.
	</Function>
	<Function name='uppercase' return='void' arguments='bool b'>
		If <code>true</code>, make all text uppercase.
	</Function>
	<Function name='vertspacing' return='void' arguments='int iSpacing'>
		Add <code>iSpacing</code> pixels of padding between lines of text.
	</Function>
	<Function name='wrapwidthpixels' return='void' arguments='int iWidth'>
		Wrap the unzoomed text at <code>iWidth</code> pixels. If you <Link class='Actor' function='zoom' /> or <Link class='Actor' function='zoomx' /> by <code>x</code> and you want the text wrapped at <code>width</code>, then you should use <code>wrapwidthpixels(width/x)</code>.
	</Function>
</Class>
<Class name='BPMDisplay' grouping='Actor'>
	<Function name='GetText' return='string' arguments=''>
		Returns the text that is currently set at the exact moment you call it. This is likely only going to be useful in an Update command.
	</Function>
	<Function name='SetFromCourse' return='void' arguments='Course c'>
		Sets the BPMDisplay from the specified Course.
	</Function>
	<Function name='SetFromGameState' return='void' arguments=''>
		Sets the BPMDisplay from the GameState.
	</Function>
	<Function name='SetFromSong' return='void' arguments='Song s'>
		Sets the BPMDisplay from the specified Song.
	</Function>
	<Function name='SetFromSteps' return='void' arguments='Steps s'>
		Sets the BPMDisplay from the specified Steps.
	</Function>
</Class>
<Class name='Character'>
	<Function name='GetCardPath' return='string' arguments=''>
		Returns the path to the character's card graphic.
	</Function>
	<Function name='GetCharacterDir' return='string' arguments=''>
		Returns this character's directory.
	</Function>
	<Function name='GetCharacterID' return='string' arguments=''>
		Returns this character's ID.
	</Function>
	<Function name='GetDanceAnimationPath' return='string' arguments=''>
		Returns the path of the dancing animation of this character.
	</Function>
	<Function name='GetDisplayName' return='string' arguments=''>
		Returns the character's display name.
	</Function>
	<Function name='GetIconPath' return='string' arguments=''>
		Returns the path to the character's icon.
	</Function>
	<Function name='GetModelPath' return='string' arguments=''>
		Returns the path of the model of this character.
	</Function>
	<Function name='GetRestAnimationPath' return='string' arguments=''>
		Returns the path of the rest animation of this character.
	</Function>
	<Function name='GetSongSelectIconPath' return='string' arguments=''>
		Returns the path to the character's ScreenSelectMode icon.
	</Function>
	<Function name='GetStageIconPath' return='string' arguments=''>
		Returns the path to the character's ScreenStage icon.
	</Function>
	<Function name='GetWarmUpAnimationPath' return='string' arguments=''>
		Returns the path of the warm-up animation of this character.
	</Function>
</Class>
<Class name='CharacterManager'>
	<Description>
		This singleton is accessible to Lua via <code>CHARMAN</code>.
	</Description>
	<Function name='GetAllCharacters' return='{Character}' arguments=''>
		Returns a table of all characters installed.
	</Function>
	<Function name='GetCharacter' return='Character' arguments='string sID'>
		Return the <Link class='Character' /> corresponding to <code>sID</code>.
	</Function>
	<Function name='GetRandomCharacter' return='Character' arguments=''>
		Returns a random character.
	</Function>
	<Function name='GetCharacterCount' return='int' arguments=''>
		Returns the number of characters available.
	</Function>
</Class>
<Class name='ComboGraph' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sMetricsGroup'>
		Loads the ComboGraph commands from the Metrics in group <code>sMetricsGroup</code>.
	</Function>
	<Function name='Set' return='void' arguments='StageStats s, PlayerStageStats pss'>
		Sets the values of the ComboGraph using the specified StageStats and PlayerStageStats.
	</Function>
</Class>
<Class name='ControllerStateDisplay' grouping='Actor'>
	<Function name='LoadGameController' return='void' arguments='string sType, GameController gc'>
		Loads the ControllerStateDisplay from the specified GameController.
	</Function>
	<Function name='LoadMultiPlayer' return='void' arguments='string sType, MultiPlayer mp'>
		Loads the ControllerStateDisplay from the specified MultiPlayer.
	</Function>
</Class>
<Class name='Course'>
	<Function name='AllSongsAreFixed' return='bool' arguments=''>
		Returns <code>true</code> if all of the songs in the course have been defined (as opposed to random songs).
	</Function>
	<Function name='GetAllTrails' return='{Trail}' arguments=''>
		Returns a table of all the Trails in the Course.
	</Function>
	<Function name='GetBackgroundPath' return='string' arguments=''>
		Returns the path to the Course's background.
	</Function>
	<Function name='GetBannerPath' return='string' arguments=''>
		Returns the path to the Course's banner.
	</Function>
	<Function name='GetCourseDir' return='string' arguments=''>
		Returns the path to the crs file for this Course, for example "/Courses/Default/MostPlayed_01_04.crs".
	</Function>
	<Function name='GetCourseEntries' return='{CourseEntry}' arguments=''>
		Returns a table of CourseEntry items.
	</Function>
	<Function name='GetCourseEntry' return='CourseEntry' arguments='int iIndex'>
		Gets the CourseEntry at <code>iIndex</code> from the Course.
	</Function>
	<Function name='GetCourseType' return='CourseType' arguments=''>
		Returns the Course's <Link class='ENUM' function='CourseType' />.
	</Function>
	<Function name='GetDescription' return='string' arguments=''>
		Returns the description for this Course.
	</Function>
	<Function name='GetDisplayFullTitle' return='string' arguments=''>
		Returns the full display title of the Course.
	</Function>
	<Function name='GetEstimatedNumStages' return='int' arguments=''>
		Returns the estimated number of stages for the Course.
	</Function>
	<Function name='GetGoalSeconds' return='float' arguments=''>
		Returns the goal seconds for the Course.
	</Function>
	<Function name='GetGroupName' return='string' arguments=''>
		Returns the Course's group name.
	</Function>
	<Function name='GetPlayMode' return='PlayMode' arguments=''>
		Returns the Course's <Link class='ENUM' function='PlayMode' />.
	</Function>
	<Function name='GetScripter' return='string' arguments=''>
		Returns the name of the person who scripted the Course.
	</Function>
	<Function name='GetTotalSeconds' return='float' arguments='StepsType st'>
		Returns the total length of the Course in seconds.
	</Function>
	<Function name='GetTranslitFullTitle' return='string' arguments=''>
		Returns the full transliterated title of the Course.
	</Function>
	<Function name='HasBackground' return='bool' arguments=''>
		Returns <code>true</code> if the Course has a background.
	</Function>
	<Function name='HasBanner' return='bool' arguments=''>
		Returns <code>true</code> if the Course has a banner.
	</Function>
	<Function name='HasMods' return='bool' arguments=''>
		Returns <code>true</code> if the Course has modifiers.
	</Function>
	<Function name='HasTimedMods' return='bool' arguments=''>
		Returns <code>true</code> if the Course has timed modifiers.
	</Function>
	<Function name='IsAnEdit' return='bool' arguments=''>
		Returns <code>true</code> if the Course is an edit.
	</Function>
	<Function name='IsAutogen' return='bool' arguments=''>
		Returns <code>true</code> if the Course was automatically generated.
	</Function>
	<Function name='IsEndless' return='bool' arguments=''>
		Returns <code>true</code> if the Course is Endless.
	</Function>
	<Function name='IsNonstop' return='bool' arguments=''>
		Returns <code>true</code> if the Course is Nonstop.
	</Function>
	<Function name='IsOni' return='bool' arguments=''>
		Returns <code>true</code> if the Course is Oni.
	</Function>
	<Function name='IsPlayableIn' return='bool' arguments='StepsType st'>
		Returns <code>true</code> if the Course is playable in StepsType <code>st</code>.
	</Function>
	<Function name='IsRanking' return='bool' arguments=''>
		Returns <code>true</code> if the Course is a ranking course.
	</Function>
</Class>
<Class name='CourseContentsList' grouping='Actor'>
	<Function name='SetFromGameState' return='void' arguments=''>
		Sets the CourseContentsList from the GameState.
	</Function>
</Class>
<Class name='CourseEntry'>
	<Function name='GetSong' return='Song' arguments=''>
		Returns the Song that this CourseEntry corresponds to.
	</Function>
	<!-- sm-ssc additions -->
	<Function name='GetGainLives' return='int' arguments=''>
		Returns the number of lives gained after completing the song.
	</Function>
	<Function name='GetGainSeconds' return='float' arguments=''>
		Returns the number of seconds gained after completing the song.
	</Function>
	<Function name='GetNormalModifiers' return='string' arguments=''>
		Returns any stage (non-timed) modifiers.
	</Function>
	<Function name='GetNumModChanges' return='int' arguments=''>
		Returns the number of modifier changes in this CourseEntry.
	</Function>
	<Function name='GetTextDescription' return='string' arguments=''>
		Returns a comma-delimited string representing various facts about the CourseEntry.
	</Function>
	<Function name='IsFixedSong' return='bool' arguments=''>
		Returns <code>true</code> if this CourseEntry is a fixed song.
	</Function>
	<Function name='IsSecret' return='bool' arguments=''>
		Returns <code>true</code> if this CourseEntry is secret.
	</Function>
</Class>
<Class name='CryptManager'>
	<Description>
		This singleton is accessible to Lua via <code>CRYPTMAN</code>.
	</Description>
	<Function name='GenerateRandomUUID' return='string' arguments=''>
		Generates a random UUID (version 4).
	</Function>
	<Function name='MD5File' return='string' arguments='string sPath'>
		Returns the MD5 hash for the file at <code>sPath</code>.
	</Function>
	<Function name='MD5String' return='string' arguments='string s'>
		Returns the MD5 hash for <code>s</code>.
	</Function>
	<Function name='SHA1File' return='string' arguments='string sPath'>
		Returns the SHA-1 hash for the file at <code>sPath</code>.
	</Function>
	<Function name='SHA1String' return='string' arguments='string s'>
		Returns the SHA-1 hash for <code>s</code>.
	</Function>
	<Function name='SHA256File' return='string' arguments='string sPath'>
		Returns the SHA-256 hash for the file at <code>sPath</code> as a binary formatted string.<br />
		You can use <Link class='GLOBAL' function='BinaryToHex' /> to convert to hexadecimal format.
	</Function>
	<Function name='SHA256String' return='string' arguments='string s'>
		Returns the SHA-256 hash for <code>s</code> as a binary formatted string.<br />
		You can use <Link class='GLOBAL' function='BinaryToHex' /> to convert to hexadecimal format.
	</Function>
</Class>
<Class name='CubicSplineN'>
	<Description>
		All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
		This spline implementation is a cubic spline.<br />
		A spline is a line calculated from a small set of points with mathematical smooting applied.<br />
		Splines can have any number of dimensions, but splines owned by actors (the ones inside NCSplineHandler and ActorMultiVertex) always have 3 dimensions.<br />
	</Description>
	<Function name='solve' return='' arguments=''>
		Solves the spline, setting the coefficients.
	</Function>
	<Function name='evaluate' return='{float}' arguments='float t'>
		Evaluates the spline at the given t value, returning a table of the results for each dimension of the spline.<br />
		t can range from 0 to the value returned by get_max_t().<br />
		A normal spline will return its starting point for any t value less than 0 and its end point for any t value greater than the max.<br />
		A looped spline adjust the t value to be within the its range by adding or subtracting the max t as needed. (so if the max t is 4 and you evaluate at 5, it will return the same as if you evaluated at 1.)
	</Function>
	<Function name='evaluate_derivative' return='{float}' arguments='float t'>
		Evaluates the derivative at t.
	</Function>
	<Function name='evaluate_second_derivative' return='{float}' arguments='float t'>
		Evaluates the second derivative at t.
	</Function>
	<Function name='evaluate_third_derivative' return='{float}' arguments='float t'>
		Evaluates the third derivative at t.<br />
		Second and third derivative functions exist because they're possible, not because they're expected to be useful.  The fourth derivative would be 0 because the equation for evaluating the spline is "a + (b*t) + (c*t^2) + (d*t^3)".
	</Function>
	<Function name='set_point' return='' arguments='int i, {float} p'>
		Sets point i of the spline to the position specified by the table p.
	</Function>
	<Function name='set_coefficients' return= '' arguments='int i, {float} b, {float} c, {float} d'>
		Sets the coefficients of the spline at point i.<br />
		Each table must contain a value for each dimension of the spline.<br />
		Solving the spline normally should cover all normal usage, this is for people that want a spline with an abnormal behavior, so if you set the coefficients  directly, expect to end up with an unsmooth shape.
	</Function>
	<Function name='get_coefficients' return='{{float}, {float}, {float}}' arguments='int i'>
		Returns a table containing the tables of coefficients for the point i.
	</Function>
	<Function name='set_spatial_extent' return='' arguments='int d, float e'>
		Sets the spatial extent of dimension d of the spline to e.<br />
		The spatial extent exists to handle numbers that exist in a finite looped space, instead of the flat infinite space.<br />
		To put it more concretely, spatial extent exists to allow a spline to control rotation with wrapping behavior at 0.0 and 2pi, instead of suddenly jerking from 2pi to 0.0.
	</Function>
	<Function name='get_spatial_extent' return='float' arguments='int d'>
		Returns the spatial extent of dimension d of the spline.
	</Function>
	<Function name='get_max_t' return='float' arguments=''>
		Returns the max t value the spline extends to.  For a normal spline, this will be size()-1.  For a looped spline, this will be size().
	</Function>
	<Function name='set_size' return='' arguments='int s'>
		Sets the number of points in the spline.  You must set the number of points before trying to set the position of any point.
	</Function>
	<Function name='get_size' return='int s' arguments=''>
		Returns the number of points in the spline.
	</Function>
	<Function name='set_dimension' return='' arguments='int d'>
		Sets the number of dimensions the spline has.<br />
		Splines that are owned by actors (the ones inside ActorMultiVertex and NCSplineHandler) cannot have their number of dimensions changed because the actors require them to have 3 dimensions.
	</Function>
	<Function name='get_dimension' return='int' arguments=''>
		Returns the number of dimensions the spline has.
	</Function>
	<Function name='empty' return='bool' arguments=''>
		Returns true of the spline has zero points, or false if it has more than zero points.
	</Function>
	<Function name='set_loop' return='' arguments='bool'>
		Sets whether the spline is looped.  A looped spline is one where the end point is connected to the start point.
	</Function>
	<Function name='get_loop' return='bool' arguments=''>
		Returns whether the spline is looped.
	</Function>
	<Function name='set_polygonal' return='' arguments='bool'>
		Sets whether the spline is polygonal.  If the spline is polygonal, then it will have straight lines between the points instead of curves.
	</Function>
	<Function name='get_polygonal' return='bool' arguments=''>
		Returns whether the spline is polygonal.
	</Function>
	<Function name='set_dirty' return='' arguments='bool'>
		Sets whether the spline is dirty.  A dirty spline is one that has been changed in some way that affects its shape.  When solve() is called, the spline will only be solved if it is dirty.  The dirty flag is automatically set by everything, so you should never have to call this function.
	</Function>
	<Function name='get_dirty' return='bool' arguments=''>
		Returns whether the spline is currently dirty.
	</Function>
	<Function name='destroy' return='' arguments=''>
		Destroys the spline, freeing the memory allocated for it.  This can only be called on splines created with <Link class='GLOBAL' function='create_spline'>create_spline()</Link>.
	</Function>
</Class>
<Class name='DeviceList' grouping='Actor'>
	<Description>
		A newline-delimited list of available input devices.<br />
		The list shown will the same as that returned by <Link class='RageInput' function='GetDescriptions'>INPUTMAN:GetDescriptions()</Link>, but with "MonkeyKeyboard" removed.
	</Description>
</Class>
<Class name='DifficultyIcon' grouping='Actor'>
	<Function name='SetFromDifficulty' return='void' arguments='Difficulty dc'>
		Sets the DifficultyIcon's state from the difficulty passed in.
	</Function>
	<Function name='SetFromSteps' return='void' arguments='Steps pSteps'>
		Sets the DifficultyIcon's Player to <code>pn</code>,
		then sets the DifficultyIcon's state from the difficulty of Steps <code>pSteps</code>
	</Function>
	<Function name='SetFromTrail' return='void' arguments='PlayerNumber pn, Trail pTrail'>
		Sets the DifficultyIcon's Player to <code>pn</code>,
		then sets the DifficultyIcon's state from the difficulty of Trail <code>pTrail</code>
	</Function>
	<Function name='SetPlayer' return='void' arguments='PlayerNumber pn'>
		Sets the DifficultyIcon's Player to <code>pn</code>.
	</Function>
	<Function name='Unset' return='void' arguments=''>
		Blanks the DifficultyIcon.
	</Function>
</Class>
<Class name='DisplayMode'>
	<Function name='GetWidth' return='int' arguments=''>
		Return the width of the display in this mode.
	</Function>
	<Function name='GetWidth' return='int' arguments=''>
		Return the height of the display in this mode.
	</Function>
	<Function name='GetRefreshRate' return='float' arguments=''>
		Return the refresh rate of the display in this mode.
	</Function>
</Class>
<Class name='DisplaySpec'>
	<Description>
		An object describing a display: its supported and current video modes.
	</Description>
	<Function name='GetId' return='string' arguments=''>
		Return the unique identifier of the display.
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Return the &quot;human-readable&quot; display name.
	</Function>
	<Function name='GetSupportedModes' return='{DisplayMode}' arguments=''>
		Return the <Link class='DisplayMode' />s supported by this device.
	</Function>
	<Function name='GetCurrentMode' return='DisplayMode' arguments=''>
		Return the currently active <Link class='DisplayMode' /> for this display,
		or <code>nil</code> if there is no such mode.
	</Function>
	<Function name='IsVirtual' return='bool' arguments=''>
		Return <code>true</code> if this <code>DisplaySpec</code> is describing the
		&quot;logical display&quot; like an X screen or the Win32 &quot;Virtual screen&quot;, or
		<code>false</code> otherwise (if this describes a physical display).
	</Function>
</Class>
<Class name='DisplaySpecs'>
	<Description>
		An array-like <code>userdata</code> object which describes the displays
		configured on the user's machine.

		This object supports the <code>__len</code> operator (<code>#t</code>), and
		integer indexing, but does not support
		iteration via <code>pairs</code> or <code>ipairs</code>.

		Each element of the array is a <Link class='DisplaySpec' />.
	</Description>

	<Function name='__len' return='int' arguments=''>
		Return the number of <Link class='DisplaySpec' /> instances in the array.
	</Function>
	<Function name='__index' return='DisplaySpec' arguments='int i'>
		Return the <Link class='DisplaySpec' /> instance at index <code>i</code>
	</Function>
	<Function name='__tostring' return='string' arguments=''>
	</Function>
</Class>
<Class name='FadingBanner' grouping='Actor'>
	<Function name='GetLatestIndex' return='int' arguments=''>
		Returns the index of the last banner loaded.
	</Function>
	<Function name='LoadCourseFallback' return='void' arguments=''>
		Loads the fallback course banner.
	</Function>
	<Function name='LoadFallback' return='void' arguments=''>
		Loads the fallback banner.
	</Function>
	<Function name='LoadCardFromCharacter' return='void' arguments='Character pCharacter'>
		Loads the card image from the specified Character.
	</Function>
	<Function name='LoadFromCourse' return='void' arguments='Course c'>
		Loads a Banner from a specified Course.
	</Function>
	<Function name='LoadFromSong' return='void' arguments='Song s'>
		Loads a Banner from a specified Song.
	</Function>
	<Function name='LoadFromSongGroup' return='void' arguments='string s'>
		Loads a Banner from a specified Song Group.
	</Function>
	<Function name='LoadFromSortOrder' return='void' arguments='SortOrder so'>
		Loads a Banner from a specified SortOrder.
	</Function>
	<Function name='LoadIconFromCharacter' return='void' arguments='Character pCharacter'>
		Loads an icon from the specified Character.
	</Function>
	<Function name='LoadRandom' return='void' arguments=''>
		Loads the Random banner.
	</Function>
	<Function name='LoadRoulette' return='void' arguments=''>
		Loads the Roulette banner.
	</Function>
	<Function name='scaletoclipped' return='void' arguments='float fWidth, float fHeight'>
		See <Link class='Sprite' function='scaletoclipped' />.
	</Function>
	<Function name='ScaleToClipped' return='void' arguments='float fWidth, float fHeight'>
		See <Link class='Sprite' function='scaletoclipped' />.
	</Function>
</Class>
<Class name='StepsDisplayList' grouping='Actor'>
	<Function name='setfromgamestate' return='void' arguments=''>
		Sets the StepsDisplayList from the GameState.
	</Function>
</Class>
<Class name='Game'>
	<Function name='CountNotesSeparately' return='bool' arguments=''>
		Returns <code>true</code> if notes are counted separately in this game.
	</Function>
	<Function name='GetMapJudgmentTo' return='TapNoteScore' arguments='TapNoteScore tns'>
		Returns the mapped judgment for <code>tns</code>.
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Returns the name of the game such as &quot;dance&quot; or &quot;pump&quot;.
	</Function>
	<Function name='GetSeparateStyles' return='bool' arguments=''>
		Returns whether this game allows the players to have separate styles.
	</Function>
</Class>
<Class name='GameCommand'>
	<Function name='GetAnnouncer' return='string' arguments=''>
		Returns any announcer that may have been set.
	</Function>
	<Function name='GetCharacter' return='Character' arguments=''>
		Returns any Character associated with this item (or <code>nil</code> if there isn't one).
	</Function>
	<Function name='GetCourse' return='Course' arguments=''>
		Returns any Course that may have been set.
	</Function>
	<Function name='GetCourseDifficulty' return='Difficulty' arguments=''>
		Returns a course difficulty, if one is set in the GameCommand.
	</Function>
	<Function name='GetDifficulty' return='Difficulty' arguments=''>
		Returns a difficulty, if one is set in the GameCommand.
	</Function>
	<Function name='GetIndex' return='int' arguments=''>
		Returns the index of this item.
	</Function>
	<Function name='GetMultiPlayer' return='MultiPlayer' arguments=''>
		Returns any MultiPlayer that may have been set.
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Returns the choice name.
	</Function>
	<Function name='GetPlayMode' return='PlayMode' arguments=''>
		Returns the PlayMode associated with this GameCommand.
	</Function>
	<Function name='GetPreferredModifiers' return='string' arguments=''>
		Returns any preferred modifiers that may have been set.
	</Function>
	<Function name='GetProfileID' return='string' arguments=''>
		Returns any Profile ID that may have been set.
	</Function>
	<Function name='GetScreen' return='string' arguments=''>
		Returns any screen that may have been set as a string.
	</Function>
	<Function name='GetSong' return='Song' arguments=''>
		Returns any Song that may have been set.
	</Function>
	<Function name='GetSongGroup' return='string' arguments=''>
		Returns the name of any song group that may have been set.
	</Function>
	<Function name='GetSortOrder' return='SortOrder' arguments=''>
		Returns the sort order, if the GameCommand has set one.
	</Function>
	<Function name='GetStageModifiers' return='string' arguments=''>
		Returns any stage modifiers that may have been set.
	</Function>
	<Function name='GetSteps' return='Steps' arguments=''>
		Returns any Steps that may have been set.
	</Function>
	<Function name='GetStyle' return='Style' arguments=''>
		Returns any Style that may have been set.
	</Function>
	<Function name='GetText' return='string' arguments=''>
		Returns the display text.
	</Function>
	<Function name='GetTrail' return='Trail' arguments=''>
		Returns any Trail that may have been set.
	</Function>
	<Function name='GetUrl' return='string' arguments=''>
		Returns any Url that may have been set.
	</Function>
</Class>
<Class name='GameManager'>
	<Description>
		This singleton is accessible to Lua via <code>GAMEMAN</code>.
	</Description>
	<Function name='GetFirstStepsTypeForGame' return='StepsType' arguments='Game game'>
		Return the first <Link class='StepsType' /> for the specified <code>game</code>.
	</Function>
	<Function name='IsGameEnabled' return='bool' arguments='string s'>
		Returns <code>true</code> if any noteskins exist for the specified Game <code>s</code>.
	</Function>
	<Function name='StepsTypeToLocalizedString' return='string' arguments='StepsType st'>
		Return the localized string representation of <code>st</code>.
	</Function>
	<Function name='GetEnabledGames' return='{string}' arguments=''>
		Returns a table of all selectable games.
	</Function>
	<Function name='GetStylesForGame' return='{style}' arguments='string game'>
		Returns a table of all the styles for the that exist for <code>game</code>.
	</Function>
	<Function name='SetGame' return='void' arguments='string Game, string Theme' >
		Sets the current game to <code>Game</code>. The second argument is optional, and if provided will determine which theme is loaded when the game changes.  If the second argument is not provided, the default theme from the preferences for the new game type will be loaded.<br />
		If only the game changes, the screen specified by the Common::AfterGameChangeScreen metric will be loaded.<br />
		If the game and the theme both change, the screen specified by the Common::AfterGameAndThemeChangeScreen metric will be loaded.<br />
		The Common::InitialScreen metric will be used if the appropriate metric for the change is blank or invalid.
	</Function>
</Class>
<Class name='GameSoundManager'>
	<Description>
		This singleton is accessible to Lua via <code>SOUND</code>.
	</Description>
	<Function name='DimMusic' return='void' arguments='float fVolume, float fDuration'>
		Set the music volume to <code>fVolume</code> for <code>fDuration</code> seconds.
	</Function>
	<Function name='GetPlayerBalance' return='float' arguments='PlayerNumber pn'>
		<!-- XXX: Presumably, 0 is all the way to the left, and 1 is all the way
				  to the right. -->
		Return the sound balance for <code>pn</code>.
	</Function>
	<Function name='PlayAnnouncer' return='void' arguments='string sPath'>
		Plays a sound from the current announcer.
	</Function>
	<Function name='PlayMusicPart' return='void' arguments='string musicPath, float musicStart, float musicLength, float fadeIn, float fadeOut, bool loop, bool applyRate, bool alignBeat'>
 		Play the sound at <code>musicPath</code> starting from <code>musicStart</code> for
 		<code>musicLength</code> seconds one time. Both <code>fadeIn</code> and
		<code>fadeOut</code> can be customized as required.  <code>loop</code>
		tells the sound manager to loop the music part.  <code>applyRate</code>
		tells the sound manager to apply the current music rate. If <code>alignBeat</code>
		is true or nil, the length is automatically adjusted to cover an integer number of beats.
	</Function>
	<Function name='PlayOnce' return='void' arguments='string sPath, bool is_action'>
		Play the sound at <code>sPath</code> one time.  <code>is_action</code> is optional, if it is true, the sound is an action sound, and will be muted if the MuteActions preference is turned on.
	</Function>
	<Function name='StopMusic' return='void' arguments='void'>
		Stops the music.
	</Function>
	<Function name='IsTimingDelayed' return='void' arguments='void'>
		When music is requested to change, the new music does not start immediately due to latency and buffering. This will return true if the newest music has not yet actually begun.
	</Function>
</Class>
<Class name='GameState'>
	<Description>
		This singleton is accessible to Lua via <code>GAMESTATE</code>.
	</Description>
	<Function name='AddStageToPlayer' return='void' arguments='PlayerNumber pn'>
		Adds another stage to the specifed player.
	</Function>
	<Function name='ApplyPreferredModifiers' return='void' arguments='PlayerNumber pn, string mods'>
		Applies the specified modifiers for the specified player's preferred modifier set.
	</Function>
	<Function name='ApplyPreferredSongOptionsToOtherLevels' return='void' arguments=''>
		Applies the song options of ModsLevel_Preferred to the other ModsLevels.
	</Function>
	<Function name='ApplyStageModifiers' return='void' arguments='PlayerNumber pn, string mods'>
		Applies the specified modifiers for the specified player for the current stage.
	</Function>
	<Function name='AnyPlayerHasRankingFeats' return='bool' arguments=''>
		Returns <code>true</code> if any player has performed a feat worthy of ranking.
	</Function>
	<Function name='ApplyGameCommand' return='void' arguments='string sCommand, PlayerNumber pn'>
		The second argument is optional. Apply the GameCommand represented by <code>sCommand</code>
		for <code>pn</code>, if given. See <Link class='GameCommand' />.
	</Function>
	<Function name='CanSafelyEnterGameplay' return='bool, string' arguments=''>
		Checks various things to determine whether the game will crash when gameplay starts.  Returns <code>false</code> and an error string if gameplay cannot be entered safely.<br />
		Might not work in all cases, but will catch things like a player not having
		steps set or no current song or style.  Mainly exists for people with a custom ScreenSelectMusic replacement.<br />
		Example:
<pre><code>
local can, reason = GAMESTATE:CanSafelyEnterGameplay()
if not can then
	lua.ReportScriptError("Cannot safely enter gameplay: " .. tostring(reason))
end
</code></pre>
	</Function>
	<Function name='ClearStageModifiersIllegalForCourse' return='void' arguments=''>
		Removes any stage modifiers that are illegal for course play.
	</Function>
	<Function name='CurrentOptionsDisqualifyPlayer' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if <code>pn</code>'s options will disqualify them for ranking.
	</Function>
	<Function name='EnoughCreditsToJoin' return='bool' arguments=''>
		Returns <code>true</code> if enough credits have been inserted to join.
	</Function>
	<Function name='Dopefish' return='bool' arguments=''>
		fishpolk.mid; See also: Rise of the Triad
	</Function>
	<Function name='Env' return='table' arguments=''>
		Returns the environment table. See <Link class='GameCommand' />.
	</Function>
	<Function name='GetCharacter' return='Character' arguments='PlayerNumber pn'>
		Returns the current <Link class='Character' /> for the specified <Link class='ENUM' function='PlayerNumber' />.
	</Function>
	<Function name='GetCoinMode' return='CoinMode' arguments=''>
		Returns the current <Link class='ENUM' function='CoinMode' />.
	</Function>
	<Function name='GetCoins' return='int' arguments=''>
		Return the number of inserted but unused coins. This number is
		decremented when players join.
	</Function>
	<Function name='GetCoinsNeededToJoin' return='int' arguments=''>
		Return the number of coins needed to join based on the current coin and premium modes
		as well as the number of people joined, if that matters for the premium mode. See
		<Link function='GetCoinMode' /> and <Link function='GetPremium' />.
	</Function>
	<Function name='GetCourseSongIndex' return='int' arguments=''>
		The <Link class='Song' />s in a <Link class='Course' /> are numbered sequentially
		starting from 0. Return the number of the current <Link class='Song' />.
	</Function>
	<Function name='GetCurMusicSeconds' return='float' arguments=''>
		Return the current number of seconds that have passed in the current song. This value can be negative.
	</Function>
	<Function name='GetCurrentCourse' return='Course' arguments=''>
		Return the current <Link class='Course' />.
	</Function>
	<Function name='GetCurrentGame' return='Game' arguments=''>
		Return the current <Link class='Game' />.
	</Function>
	<Function name='GetCurrentSong' return='Song' arguments=''>
		Return the current <Link class='Song' />.
	</Function>
	<Function name='GetCurrentStage' return='Stage' arguments=''>
		Return the current <Link class='Stage' />.
	</Function>
	<Function name='GetCurrentStageIndex' return='int' arguments=''>
		Returns the current stage index (starts at 0).
	</Function>
	<Function name='GetCurrentSteps' return='Steps' arguments='PlayerNumber pn'>
		Return the current <Link class='Steps' /> for the specified Player.
	</Function>
	<Function name='GetCurrentStepsCredits' return='multiple' arguments=''>
		Return a variable number of arguments based on the <Link class='Steps' /> being
		played by all players. For each distinct <Link class='Steps' /> being played by
		the players, in increasing <Link class='ENUM' function='PlayerNumber' /> order,
		the difficulty and description of the <Link class='Steps' /> is returned as strings.
		<br />For example,<br />
		<code>local credits = {GAMESTATE:GetCurrentStepsCredits()};</code><br />
		will make a table of the difficulties and descriptions.
	</Function>
	<Function name='GetCurrentStyle' return='Style' arguments=''>
		Return the current <Link class='Style' />.
	</Function>
	<Function name='GetCurrentTrail' return='Trail' arguments='PlayerNumber pn'>
		Return the current <Link class='Trail' /> for the specified player.
	</Function>
	<Function name='GetDefaultSongOptions' return='string' arguments=''>
		Return a string representation of the default song options.
	</Function>
	<Function name='GetEarnedExtraStage' return='EarnedExtraStage' arguments=''>
		Returns the <Link class='ENUM' function='EarnedExtraStage' /> value.
	</Function>
	<Function name='GetEasiestStepsDifficulty' return='Difficulty' arguments=''>
		Return the easiest <Link class='ENUM' function='Difficulty' /> of the
		currently selected steps by all players. For example, if player 1 has
		selected Hard steps and player 2 has selected Medium steps, Medium will
		be returned.
	</Function>
	<Function name='GetEditCourseEntryIndex' return='int' arguments=''>
		<!-- XXX: What is the edit course entry index? -->
	</Function>
	<Function name='GetEditLocalProfile' return='Profile' arguments=''>
		Return the Edit Local <Link class='Profile' /> (during Profile editing)
		or <code>nil</code> if it does not exist.
	</Function>
	<Function name='GetEditLocalProfileID' return='string' arguments=''>
		Returns the ID of the Edit Local <Link class='Profile' /> (during Profile editing).
	</Function>
	<Function name='GetEditSourceSteps' return='Steps' arguments=''>
		Return the source <Link class='Steps' /> for the editor or <code>nil</code>
		if it does not exist.
	</Function>
	<Function name='GetEnabledPlayers' return='{PlayerNumber}' arguments=''>
		Returns a table of enabled players.
	</Function>
	<Function name='GetExpandedSectionName' return='string' arguments=''>
		Returns the name of the currently expanded section.
	</Function>
	<Function name='GetGameSeed' return='int' arguments=''>
		Return the random seed for the game.
	</Function>
	<Function name='GetGameplayLeadIn' return='bool' arguments=''>
		Return <code>true</code> if the gameplay lead in is enabled. If
		<code>false</code>, gameplay begins immediately. <!-- XXX: I think. -->
	</Function>
	<Function name='GetHardestStepsDifficulty' return='Difficulty' arguments=''>
		Return the hardest <Link class='ENUM' function='Difficulty' /> of the
		currently selected steps by all players. For example, if player 1 has
		selected Hard steps and player 2 has selected Medium steps, Hard will
		be returned.
	</Function>
	<Function name='GetHumanPlayers' return='{PlayerNumber}' arguments=''>
		Returns an array of <Link class='PlayerNumber' />s corresponding to Human players.
	</Function>
	<Function name='GetLoadingCourseSongIndex' return='int' arguments=''>
		Returns the index of the next song in the course.
	</Function>
	<Function name='GetMasterPlayerNumber' return='PlayerNumber' arguments=''>
		Returns the master player number.
	</Function>
	<Function name='GetMultiplayer' return='bool' arguments=''>
		Returns <code>true</code> if the game is Multiplayer.
	</Function>
	<Function name='GetMultiPlayerState' return='PlayerState' arguments='MultiPlayer mp'>
		Returns the PlayerState for the specified MultiPlayer.
	</Function>
	<Function name='GetNumMultiplayerNoteFields' return='int' arguments=''>
		Returns the number of active multiplayer NoteFields.
	</Function>
	<Function name='GetNumPlayersEnabled' return='int' arguments=''>
		Returns the number of players enabled.
	</Function>
	<Function name='GetNumSidesJoined' return='int' arguments=''>
		Returns the number of sides joined.
	</Function>
	<Function name='GetNumStagesForCurrentSongAndStepsOrCourse' return='int' arguments=''>
		Returns the number of stages for the current Song and its Steps or the current Course.
	</Function>
	<Function name='GetNumStagesLeft' return='int' arguments='PlayerNumber pn'>
		Returns the number of stages left for player <code>pn</code>.
	</Function>
	<Function name='GetPlayerDisplayName' return='string' arguments='PlayerNumber pn'>
		Returns the display name for player <code>pn</code>.
	</Function>
	<Function name='GetPlayerState' return='PlayerState' arguments='PlayerNumber pn'>
		Returns the PlayerState for player <code>pn</code>.
	</Function>
	<Function name='GetPlayMode' return='PlayMode' arguments=''>
		Returns the current PlayMode.
	</Function>
	<Function name='GetPreferredDifficulty' return='Difficulty' arguments='PlayerNumber pn'>
		Returns the preferred difficulty for player <code>pn</code>.
	</Function>
	<Function name='GetPreferredSong' return='Song' arguments=''>
		Returns the preferred song.
	</Function>
	<Function name='GetPreferredSongGroup' return='string' arguments=''>
		Returns the preferred song group.
	</Function>
	<Function name='GetPremium' return='Premium' arguments=''>
		Returns the current Premium.
	</Function>
	<Function name='GetSmallestNumStagesLeftForAnyHumanPlayer' return='int' arguments=''>
		<!-- Kind of does what it says on the tin. -->
		Returns the smallest number of stages left for any human player.
	</Function>
	<Function name='GetSongBeat' theme='_fallback' return='float' arguments=''>
		[01 alias.lua] Returns the current beat of the song.
	</Function>
	<Function name='GetSongBeatNoOffset' theme='_fallback' return='float' arguments=''>
		[01 alias.lua] Returns the current beat of the song without an offset.
	</Function>
	<Function name='GetSongBeatVisible' return='float' arguments=''>
		Returns the current visible beat of the song.
	</Function>
	<Function name='GetSongBPS' theme='_fallback' return='float' arguments=''>
		[01 alias.lua] Returns the song's current beats per second.
	</Function>
	<Function name='GetSongDelay' theme='_fallback' return='bool' arguments=''>
		[01 alias.lua] Returns <code>true</code> if a delay is active in the song.
	</Function>
	<Function name='GetSongFreeze' theme='_fallback' return='bool' arguments=''>
		[01 alias.lua] Returns <code>true</code> if the song is currently in a freeze.
	</Function>
	<Function name='GetSongOptions' return='string' arguments='ModsLevel ml'>
		Returns the song options for the specified ModsLevel as a string.
	</Function>
	<Function name='GetSongOptionsString' return='string' arguments=''>
		Returns the song options as a string.
	</Function>
	<Function name='GetSongOptionsObject' return='SongOptions' arguments='ModsLevel ml'>
		Returns the song options for the specified ModsLevel as an object.
	</Function>
	<Function name='GetSongPercent' return='float' arguments='float fBeat'>
		Returns how much of the song is through at beat <code>fBeat</code>.
	</Function>
	<Function name='GetSongPosition' return='SongPosition' arguments=''>
		Returns the current SongPosition.
	</Function>
	<Function name='GetSortOrder' return='SortOrder' arguments=''>
		Returns the current SortOrder.
	</Function>
	<Function name='GetStageResult' return='StageResult' arguments='PlayerNumber pn'>
		Returns the StageResult for player <code>pn</code>.
	</Function>
	<Function name='GetStageIndex' return='int' arguments=''>
		Returns the current stage index.
	</Function>
	<Function name='GetStepsSeconds' return='float' arguments=''>
		Returns the current StepsSeconds, which is the time value used to set the samples in a player's life record.
	</Function>
	<Function name='GetStageSeed' return='int' arguments=''>
		Return the random seed for the current stage.
	</Function>
	<Function name='GetWorkoutGoalComplete' return='bool' arguments=''>
		Returns <code>true</code> if the workout goal is complete.
	</Function>
	<Function name='HasEarnedExtraStage' return='bool' arguments=''>
		Returns <code>true</code> if an extra stage was earned.
	</Function>
	<Function name='HaveProfileToLoad' return='bool' arguments=''>
		Returns <code>true</code> if either player does not have a profile loaded, and there is a loadable profile.
	</Function>
	<Function name='HaveProfileToSave' return='bool' arguments=''>
		Returns <code>true</code> if either player has a profile loaded.
	</Function>
	<Function name='InStepEditor' return='bool' arguments=''>
		Returns <code>true</code> if we are specifically in the Step Editor's
		editing portion. If in recording or playing mode, this will return
		<code>false</code>.
	</Function>
	<Function name='InsertCoin' return='void' arguments='int iCoins'>
		Inserts <code>iCoins</code> number of coins.  <code>iCoins</code> can be negative or positive.
	</Function>
	<Function name='InsertCredit' return='void' arguments=''>
		Inserts one credit.  To deduct a credit, pass a negative integer representing the number
		of coins per credit to <Link class='GameState' function='InsertCoin'>InsertCoin</Link>.
	</Function>
	<Function name='IsAnExtraStage' return='bool' arguments=''>
		Returns <code>true</code> if this is an extra stage.
	</Function>
	<Function name='IsAnyHumanPlayerUsingMemoryCard' return='bool' arguments=''>
		Returns <code>true</code> if any human player is using a memory card.
	</Function>
	<Function name='IsBattleMode' return='bool' arguments=''>
		Returns <code>true</code> if playing in Battle mode.
	</Function>
	<Function name='IsCourseMode' return='bool' arguments=''>
		Returns <code>true</code> if playing in a Course mode.
	</Function>
	<Function name='IsDemonstration' return='bool' arguments=''>
		Returns <code>true</code> if in Demonstration mode.
	</Function>
	<Function name='IsDraw' return='bool' arguments=''>
		Returns <code>true</code> if the match was a draw.
	</Function>
	<Function name='IsEventMode' return='bool' arguments=''>
		Returns <code>true</code> if Event Mode is on, <Link class='GameState' function='SetTemporaryEventMode'>temporary</Link> or otherwise.
	</Function>
	<Function name='IsExtraStage' return='bool' arguments=''>
		Returns <code>true</code> if this is the first extra stage.
	</Function>
	<Function name='IsExtraStage2' return='bool' arguments=''>
		Returns <code>true</code> if this is the second extra stage.
	</Function>
	<Function name='IsGoalComplete' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code> has completed the current Goal.
	</Function>
	<Function name='IsHumanPlayer' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code> is human.
	</Function>
	<Function name='IsPlayerEnabled' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code> is enabled.
	</Function>
	<Function name='IsSideJoined' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code> has joined the game.
	</Function>
	<Function name='IsWinner' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code> is the winner.
	</Function>
	<Function name='JoinPlayer' return='void' arguments='PlayerNumber pn'>
		Joins player <code>pn</code>.  Does not deduct coins.
	</Function>
	<Function name='JoinInput' return='bool' arguments='PlayerNumber pn'>
		Similar to JoinPlayer, but checks whether the player is allowed to join and returns false if the player is not allowed to join.  Also deducts coins for joining.  A player can't join if PlayersCanJoin() returns false, or that side is already joined (is true for both sides when in a style that is OnePlayerTwoSides), or there are not enough coins.
	</Function>
	<Function name='LoadProfiles' return='void' arguments='bool LoadEdits'>
		If profiles are not loaded, this will load the profiles for each player. It will load from memory cards if they are present, and local profiles otherwise. It will load edits if <code>LoadEdits</code> is true, or by default if the argument is omitted.
	</Function>
	<Function name='PlayerIsUsingModifier' return='bool' arguments='PlayerNumber pn, string sModifier'>
		Returns <code>true</code> if player <code>pn</code> is using modifier <code>sModifier</code>.
	</Function>
	<Function name='PlayersCanJoin' return='bool' arguments=''>
		Returns <code>true</code> if players can join the game.
	</Function>
	<Function name='RefreshNoteSkinData' return='void' arguments=''>
		Refreshes the NoteSkin data for the current game.
	</Function>
	<Function name='Reset' return='void' arguments=''>
		Resets the GameState.
	</Function>
	<Function name='ResetPlayerOptions' return='void' arguments='PlayerNumber pn'>
		Resets the specific Player's mods to the default settings.
	</Function>
	<Function name='SaveLocalData' return='void' arguments=''>
		Saves the bookkeeping and machine profile data.
	</Function>
	<Function name='SaveProfiles' return='void' arguments=''>
		Save profiles.
	</Function>
	<Function name='SetCharacter' return='void' arguments='PlayerNumber pn, string sCharID'>
		Sets the current <Link class='Character' /> for the specified <Link class='ENUM' function='PlayerNumber' />.
	</Function>
	<Function name='SetCurrentCourse' return='void' arguments='Course course'>
		Sets the current Course to <code>course</code>.
	</Function>
	<Function name='SetCurrentPlayMode' return='void' arguments='PlayMode pm'>
		Sets the current PlayMode to <code>pm</code>.
	</Function>
	<Function name='SetCurrentSong' return='void' arguments='Song song'>
		Sets the current Song to <code>song</code>.
	</Function>
	<Function name='SetCurrentSteps' return='void' arguments='PlayerNumber pn, Steps steps'>
		Sets Player <code>pn</code>'s current Steps to <code>steps</code>.
	</Function>
	<Function name='SetCurrentStyle' return='void' arguments='Style style or string sStyle'>
		Sets current Style to the provided style. Either a style object or a style string can be provided. If current steps for either player are not valid in the new style, they will be cleared.
	</Function>
	<Function name='SetCurrentTrail' return='void' arguments='Trail trail'>
		Sets the current Trail to <code>trail</code>.
	</Function>
	<Function name='SetFailTypeExplicitlySet' return='void' arguments=''>
		Tells the engine that the theme explicitly set the fail type for the players so that it won't override it with the easier settings for beginner or easy.
	</Function>
	<Function name='SetJukeboxUsesModifiers' return='void' arguments='bool bUseMods'>
		Sets if the Jukebox should use modifiers.
	</Function>
	<Function name='SetMultiplayer' return='void' arguments='bool b'>

	</Function>
	<Function name='SetNumMultiplayerNoteFields' return='void' arguments='int iFields'>
		Sets the number of multiplayer notefields to <code>iFields</code>
	</Function>
	<Function name='SetPreferredDifficulty' return='void' arguments='PlayerNumber pn, Difficulty dc'>
		Sets the preferred difficulty of Player <code>pn</code> to Difficulty <code>dc</code>.
	</Function>
	<Function name='SetPreferredSong' return='void' arguments='Song song'>
		Sets the preferred Song to <code>song</code>.
	</Function>
	<Function name='SetPreferredSongGroup' return='void' arguments='String sGroup'>
		Sets the preferred song group to <code>sGroup</code>.
	</Function>
	<Function name='SetSongOptions' return='void' arguments='ModsLevel m, string so'>
		Sets the Song Options from <code>so</code> using ModsLevel <code>m</code>.
	</Function>
	<Function name='SetTemporaryEventMode' return='void' arguments='bool bOn'>
		Turns temporary Event Mode on or off, depending on <code>bOn</code>.
	</Function>
	<Function name='StoreRankingName' return='void' arguments='PlayerNumber pn, string name'>
		Stores the ranking name for the player.  Use this at the end of a round, on a name entry screen or similar, to set the name for the high scores the player has earned.
	</Function>
	<Function name='ShowW1' return='void' arguments='bool bOn'>
		Determines if Judgment W1 should be shown based on <code>bOn</code>.
	</Function>
	<Function name='UnjoinPlayer' return='void' arguments='PlayerNumber pn'>
		Unjoins player <code>pn</code>.
	</Function>
</Class>
<Class name='GradeDisplay' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sMetricsGroup'>
		Loads the GradeDisplay commands from the Metrics in group <code>sMetricsGroup</code>.
	</Function>
	<Function name='SetGrade' return='void' arguments='Grade g'>
		Sets the GradeDisplay to show Grade <code>g</code>.
	</Function>
</Class>
<Class name='GraphDisplay' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sMetricsGroup'>
		Loads the GraphDisplay commands from the Metrics in group <code>sMetricsGroup</code>.
	</Function>
	<Function name='Set' return='void' arguments='StageStats s, PlayerStageStats pss'>
		Sets the values of the GraphDisplay using the specified StageStats and PlayerStageStats.
	</Function>
</Class>
<Class name='GrooveRadar' grouping='Actor'>
	<Function name='SetEmpty' return='void' arguments='PlayerNumber pn'>
		Sets the GrooveRadar values for Player <code>pn</code> to empty.
	</Function>
	<Function name='SetFromRadarValues' return='void' arguments='PlayerNumber pn, RadarValues rv'>
		Sets the GrooveRadar values for Player <code>pn</code> from RadarValues <code>rv</code>
	</Function>
	<Function name='SetFromValues' return='void' arguments='PlayerNumber pn, table vals'>
		Sets the GrooveRadar values for Player <code>pn</code> to the specified (floating point) values in the table.
	</Function>
</Class>
<Class name='HelpDisplay' grouping='Actor'>
	<Function name='gettips' return='{string}' arguments=''>
		Returns two tables representing the tips and alternate tips in the HelpDisplay.
	</Function>
	<Function name='setfromsongorcourse' theme='_fallback' return='void' arguments=''>
		[02 HelpDisplay.lua] Sets the tips from a Song or Course.
	</Function>
	<Function name='SetSecsBetweenSwitches' return='void' arguments='float fSeconds'>
		Sets the seconds between switches of tips to <code>fSeconds</code>.
	</Function>
	<Function name='settips' return='void' arguments='string tips, string altTips'>
		Sets the HelpDisplay's tips using <code>tips</code> (and optionally <code>altTips</code>).
	</Function>
	<Function name='SetTipsColonSeparated' return='void' arguments='string sTips'>
		Sets the HelpDisplay's text from <code>sTips</code> using colons to separate new sections.
	</Function>
</Class>
<Class name='HighScore'>
	<Function name='GetDate' return='DateTime' arguments=''>
		Returns the date and time the high score was achieved.
	</Function>
	<Function name='GetGrade' return='Grade' arguments=''>
		Returns the Grade of this high score.
	</Function>
	<Function name='GetHoldNoteScore' return='int' arguments='HoldNoteScore hns'>
		Return the number of HoldNoteScores that match <code>hns</code>.
	</Function>
	<Function name='GetMaxCombo' return='int' arguments=''>
		Returns the Max Combo of this high score.
	</Function>
	<Function name='GetModifiers' return='string' arguments=''>
		Returns the modifiers used for this HighScore.
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Returns the name associated with the high score.
	</Function>
	<Function name='GetPeakComboAward' return='PeakComboAward' arguments=''>
		Returns the Peak Combo Award for this high score.
	</Function>
	<Function name='GetPercentDP' return='float' arguments=''>
		Returns the percentage of dance points associated with the high score.
	</Function>
	<Function name='GetRadarValues' return='RadarValues' arguments=''>
		Returns the RadarValues for this HighScore.
	</Function>
	<Function name='GetScore' return='int' arguments=''>
		Returns the score associated with the high score.
	</Function>
	<Function name='GetStageAward' return='StageAward' arguments=''>
		Retrns the Stage Award for this high score.
	</Function>
	<Function name='GetSurvivalSeconds' return='float' arguments=''>
		Returns the number of seconds survived associated with the high score.
	</Function>
	<Function name='GetTapNoteScore' return='int' arguments='TapNoteScore tns'>
		Return the number of TapNoteScores that match <code>tns</code>.
	</Function>
	<Function name="IsFillInMarker" return='bool' arguments=''>
		Returns <code>true</code> if this high score's name uses a fill-in marker.
	</Function>
</Class>
<Class name='HighScoreList'>
	<Description>
		You can get a HighScoreList using <Link class='Profile' function='GetHighScoreList' />.
	</Description>
	<Function name='GetHighScores' return='{HighScore}' arguments=''>
		Returns a table of the high scores.
	</Function>
	<Function name='GetHighestScoreOfName' return='HighScore' arguments='string name'>
		Returns the highest score for name in the list.  Returns nil if there is no score for name in the list.
	</Function>
	<Function name='GetRankOfName' return='int' arguments='string name'>
		Returns the rank of the highest score for name in the list.  Returns 0 if there is no score for name in the list.  (returns 1 if name has the top score, 2 if name has the second place score, and so on)
	</Function>
</Class>
<Class name='HoldJudgment' grouping='Actor'>
	<Function name='LoadFromMultiPlayer' return='void' arguments='MultiPlayer mp'>
		Loads the HoldJudgment for the specified MultiPlayer.
	</Function>
</Class>
<Class name='InputFilter'>
	<Description>
		This singleton is accessible to Lua via <code>INPUTFILTER</code>.
	</Description>
	<Function name='GetMouseWheel' return='float' arguments=''>
		Returns the mouse wheel value.
	</Function>
	<Function name='GetMouseX' return='float' arguments=''>
		Returns the X position of the mouse.
	</Function>
	<Function name='GetMouseY' return='float' arguments=''>
		Returns the Y position of the mouse.
	</Function>
</Class>
<Class name='InputList' grouping='Actor'>
	<Description>
		A newline-delimited list of inputs that are currently being pressed.  It will update as inputs are held and released.  Handy for custom TestInput screens.
	</Description>
</Class>
<Class name='LifeMeter'>
	<Function name='GetLife' return='float' arguments=''>
		Returns the amount of life left in the LifeMeter as a float in the range 0..1.
	</Function>
	<Function name='IsFailing' return='bool' arguments=''>
		Returns <code>true</code> if failing.
	</Function>
	<Function name='IsHot' return='bool' arguments=''>
		Returns <code>true</code> if the LifeMeter is "hot".
	</Function>
	<Function name='IsInDanger' return='bool' arguments=''>
		Returns <code>true</code> if in danger.
	</Function>
</Class>
<Class name='LifeMeterBattery'>
	<Function name='ChangeLives' return='void' arguments='int iNumLives'>
		Changes the player's life by <code>iNumLives</code>. (Negative values subtract lives.)
	</Function>
	<Function name='GetLivesLeft' return='int' arguments=''>
		Returns the number of lives remaining.
	</Function>
	<Function name='GetTotalLives' return='int' arguments=''>
		Returns the number of total lives.
	</Function>
</Class>
<Class name='MemoryCardManager'>
	<Description>
		This singleton is accessible to Lua via <code>MEMCARDMAN</code>.
	</Description>
	<Function name='GetCardLocked' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code>'s card is locked.
	</Function>
	<Function name='GetCardState' return='MemoryCardState' arguments='PlayerNumber pn'>
		Return the state for player <code>pn</code>.
	</Function>
	<Function name='GetName' return='string' arguments='PlayerNumber pn'>
		Returns the name of the storage device.
	</Function>
	<Function name='IsNameAvailable' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code>'s name is available.
	</Function>
</Class>
<Class name='MenuTimer'>
	<Function name='disable' return='void' arguments=''>
		Stops the MenuTimer by setting it to 99.99 and pausing.
	</Function>
	<Function name='GetSeconds' return='float' arguments=''>
		Returns the current MenuTimer's value.
	</Function>
	<Function name='pause' return='void' arguments=''>
		Pauses the MenuTimer, stopping it from counting down.
	</Function>
	<Function name='setseconds' return='void' arguments='float fSeconds'>
		Compatibility alias for SetSeconds.
	</Function>
	<Function name='SetSeconds' return='void' arguments='float fSeconds'>
		Sets the MenuTimer's value to <code>fSeconds</code>.
	</Function>
	<Function name='silent' return='void' arguments='bool bSilent'>
		Sets the MenuTimer's silent setting to <code>bSilent</code>.
	</Function>
	<Function name='start' return='void' arguments=''>
		Starts up the timer.
	</Function>
	<Function name='stealth' return='void' arguments='bool bStealth'>
		Sets the MenuTimer's stealth setting to <code>bStealth</code>. If
		<code>true</code>, the timer will be invisible and silent.
	</Function>
	<Function name='stop' return='void' arguments=''>
		Stops the MenuTimer by setting it to 0 and pausing.
	</Function>
</Class>
<Class name='MessageManager'>
	<Description>
		This singleton is accessible to Lua via <code>MESSAGEMAN</code>.
	</Description>
	<Function name='Broadcast' return='void' arguments='string sMessage, table paramTable'>
		Broadcast the message to all listeners subscribed to <code>sMessage</code>. The
		second argument is an optional table of parameters. It may be omitted or explicitly
		set to <code>nil</code>.
	</Function>
	<Function name='SetLogging' return='void' arguments='bool log'>
		Sets whether logging of messages is enabled.  If log is true, all messages that pass through Broadcast (from the engine for from the theme or from anywhere else), will be logged with Trace.
	</Function>
</Class>
<Class name='MeterDisplay' grouping='Actor'>
	<Function name='SetStreamWidth' return='void' arguments='float fWidth'>
		Sets the width of the MeterDisplay to <code>fWidth</code>.
	</Function>
</Class>
<Class name='Model' grouping='Actor'>
	<Function name='GetDefaultAnimation' return='string' arguments=''>
		Returns the model's default animation.
	</Function>
	<Function name='loop' return='void' arguments='bool bLoop'>
		Controls if the model should loop or not.
	</Function>
	<Function name='playanimation' return='void' arguments='string sAniName, float fPlayRate'>
		Plays animation <code>sAniName</code> at <code>fPlayRate</code> speed (default 1.0).
	</Function>
	<Function name='position' return='void' arguments='float fSeconds'>
		Sets how far into the animation the model is.
	</Function>
	<Function name='rate' return='void' arguments='float fRate'>
		Sets the current animation's playback rate to <code>fRate</code>.
	</Function>
	<Function name='SetDefaultAnimation' return='void' arguments='string sAnimation, float fPlayRate'>
		Sets the model's default animation to <code>sAnimation</code> at <code>fPlayRate</code> speed (default 1.0).
	</Function>
	<!-- sm-ssc additions -->
	<Function name='GetNumStates' return='int' arguments=''>
		Returns the number of states the Model has.
	</Function>
</Class>
<Class name='ModIconRow' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sMetricsGroup, PlayerNumber pn'>
		Loads the ModIconRow of Player <code>pn</code> from the Metrics in group <code>sMetricsGroup</code>.
	</Function>
</Class>
<Class name='MusicWheel'>
	<Function name='ChangeSort' return='bool' arguments='SortOrder so'>
		Changes the sort order of the wheel.  Returns <code>true</code> if the order was changed.
	</Function>
	<Function name='GetCurrentSections' return='{string}' arguments=''>
		Returns a string array of the currently displayed sections in the MusicWheel.
	</Function>
	<Function name='GetSelectedSection' return='string' arguments=''>
		Returns the name of the currently selected section.
	</Function>
	<Function name='IsRouletting' return='bool' arguments=''>
		Returns <code>true</code> if the MusicWheel is currently handling Roulette selection.
	</Function>
	<Function name='Move' return='void' arguments='int n'>
		Moves the wheel by <code>n</code>.
	</Function>
	<Function name='SelectCourse' return='bool' arguments='Course cCourse'>
		Selects a course. Returns <code>false</code> on failure.
	</Function>
	<Function name='SelectSong' return='bool' arguments='Song sSong'>
		Selects a song. Returns <code>false</code> on failure.
	</Function>
</Class>
<Class name='NetworkManager'>
	<Description>
		This singleton is accessible to Lua via <code>NETWORK</code>.<br />
		By default, access to the network is disabled for all target hosts. It can be enabled by setting <code>HttpEnabled=1</code> in the preferences. Individual hosts have to be added to <code>HttpAllowHosts</code> as a comma separated list to allow access.
	</Description>
	<Function name='IsUrlAllowed' return='bool' arguments='string url' since='ITGmania 0.5.1'>
		Returns true if access to <code>url</code> is allowed.
	</Function>
	<Function name='HttpRequest' return='HttpRequestFuture' arguments='table params' since='ITGmania 0.5.1'>
		Performs an HTTP request.<br />
		Usage example:
<pre><code>
NETWORK:HttpRequest{
	url="https://api.example.com",
	method="GET",                                   -- default: "GET"
	body="",                                        -- default: ""
	multipartBoundary="",                           -- default: ""
	headers={                                       -- default: {}
		["Accept-Language"]="en-US",
		["Cookie"]="sessionId=42",
	},
	connectTimeout=3,                               -- default: 60
	transferTimeout=10,                             -- default: 1800
	downloadFile="",                                -- default: no download file
	onProgress=function(currentBytes, totalBytes)   -- default: no callback
		...
	end,
	onResponse=function(response)                   -- default: no callback
		...
	end,
}
</code></pre>
		Everything but <code>url</code> is optional. Supported methods are <code>GET</code>, <code>POST</code>, <code>PUT</code>, <code>PATCH</code>, <code>DELETE</code> and <code>HEAD</code>.<br />
		A response looks like this:
<pre><code>
{
	statusCode=200,
	headers={
		["Content-Type"]="application/json",
		["Cache-Control"]="max-age=172800",
		["Server"]="Apache",
	},
	body="{...}"
	uploadSize=204,
	downloadSize=216,
}
</code></pre>
		In case of an error the callback is called with a structure like this:
<pre><code>
{
	error="HttpErrorCode_Blocked",
	errorMessage="access to https://api.example.com is not allowed",
}
</code></pre>
		If the <code>downloadFile</code> parameter is set, the response body is not accumulated in memory, but written to <code>/Downloads/${downloadFile}</code>.
		The file is available in the <code>onResponse</code> callback where it can be unzipped/copied to another location using <code>FILEMAN:Unzip()</code>/<code>FILEMAN:Copy()</code> respectively.
		The file is deleted once the callback returns.
	</Function>
	<Function name='WebSocket' return='WebSocketHandle' arguments='table params' since='ITGmania 0.5.1'>
		Open a WebSocket connection.<br />
		Usage example:
<pre><code>
NETWORK:WebSocket{
	url="wss://api.example.com/chat",
	headers={                                       -- default: {}
		["Accept-Language"]="en-US",
		["Cookie"]="sessionId=42",
	},
	handshakeTimeout=3,                             -- default: 60 seconds
	pingInterval=10,                                -- default: disabled
	automaticReconnect=false,                       -- default: true
	onMessage=function(message)                     -- default: no callback
		...
	end,
}
</code></pre>
		Everything but <code>url</code> is optional.<br />
		Messages look like this:
<pre><code>
-- Data
{
	type="WebSocketMessageType_Message",
	data="some data",
	binary=false,
}

-- Open
{
	type="WebSocketMessageType_Open",
	uri="/chat",
	headers={
		["Date"]="Fri, 27 May 2022 18:50:47 GMT",
	},
	protocol="",
}

-- Close
{
	type="WebSocketMessageType_Close",
	reason="Normal closure",
	remote=false,
}

-- Error
{
	type="WebSocketMessageType_Error",
	retries=1,
	waitTime=100,
	httpStatusCode=404,
	reason="Expecting status 101 (Switching Protocol), got 404",
	decompressionError=false,

}
</code></pre>
	</Function>
	<Function name='UrlEncode' return='string' arguments='string value' since='ITGmania 0.5.1'>
		Returns the URL encoded representation of <code>value</code>.
	</Function>
	<Function name='EncodeQueryParameters' return='string' arguments='table query' since='ITGmania 0.5.1'>
		Returns the <code>query</code> encoded as a query string. Keys and values are automatically URL encoded.
	</Function>
</Class>
<Class name='NoteSkinManager'>
	<Description>
		This singleton is accessible to Lua via <code>NOTESKIN</code>.
	</Description>
	<Function name='GetMetric' return='string' arguments='string sElement, string sValue'>
		Returns a string from the specified element and value.
	</Function>
	<Function name='GetMetricForNoteSkin' return='string' arguments='string sElement, string sValue, string sNoteSkin'>
		Returns a string from the specified element and value using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<Function name='GetMetricA' return='ActorCommand' arguments='string sElement, string sValue'>
		Returns a command from the specified element and value.
	</Function>
	<Function name='GetMetricAForNoteSkin' return='ActorCommand' arguments='string sElement, string sValue, string sNoteSkin'>
		Returns a command from the specified element and value using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<Function name='GetMetricB' return='bool' arguments='string sElement, string sValue'>
		Returns a bool from the specified element and value.
	</Function>
	<Function name='GetMetricBForNoteSkin' return='bool' arguments='string sElement, string sValue, string sNoteSkin'>
		Returns a bool from the specified element and value using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<Function name='GetMetricF' return='float' arguments='string sElement, string sValue'>
		Returns a float from the specified element and value.
	</Function>
	<Function name='GetMetricFForNoteSkin' return='float' arguments='string sElement, string sValue, string sNoteSkin'>
		Returns a float from the specified element and value using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<Function name='GetMetricI' return='int' arguments='string sElement, string sValue'>
		Returns a integer from the specified element and value.
	</Function>
	<Function name='GetMetricIForNoteSkin' return='int' arguments='string sElement, string sValue, string sNoteSkin'>
		Returns a integer from the specified element and value using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<Function name='GetPath' return='string' arguments='string sButton, string sElement'>
		Returns the path for the specified <code>sButton sElement</code>.
	</Function>
	<Function name='GetPathForNoteSkin' return='string' arguments='string sButton, string sElement, string sNoteSkin'>
		Returns the path for the specified <code>sButton sElement</code> using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<Function name='LoadActor' return='Actor' arguments='string sButton, string sElement'>
		Returns the actor for the specified <code>sButton sElement</code>.
	</Function>
	<Function name='LoadActorForNoteSkin' return='Actor' arguments='string sButton, string sElement, string sNoteSkin'>
		Returns the actor for the specified <code>sButton sElement</code> using NoteSkin <code>sNoteSkin</code>.
	</Function>
	<!-- sm-ssc additions -->
	<Function name='DoesNoteSkinExist' return='bool' arguments='string strName'>
		Returns <code>true</code> if the <code>strName</code> noteskin exists in the current gametype.
	</Function>
	<Function name='GetNoteSkinNames' return='{string}' arguments=''>
		Returns a table of noteskin names for the current gametype.
	</Function>
</Class>
<Class name='NCSplineHandler'>
	<Description>
		All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
		The spline handler holds info on how the spline is used by the engine.<br />
		Each get/set pair of functions in this class is for a different aspect of the spline's behavior.
	</Description>
	<Function name='get_spline' return='CubicSplineN' arguments=''>
		Returns the spline for this handler.
	</Function>
	<Function name='get_beats_per_t' return='float' arguments=''>
		Returns the beats per t value of the spline.  If the beats_per_t is 4, then a note must be on screen for 4 beats to traverse from one point on the spline to the next.
	</Function>
	<Function name='set_beats_per_t' return='' arguments='float per'>
		Sets the beats per t value for the spline.
	</Function>
	<Function name='get_receptor_t' return='float' arguments=''>
		Returns the t value that receptors are evaluated at.
	</Function>
	<Function name='set_receptor_t' return='' arguments='float t'>
		 the t value that receptors are evaluated at.
	</Function>
	<Function name='get_spline_mode' return='NoteColumnSplineMode' arguments=''>
		Returns the mode the spline is set to.<br />
		"NoteColumnSplineMode_Disabled" means the spline will not affect the notes or receptors at all.<br />
		"NoteColumnSplineMode_Offset" means the spline will added to the effects from the mods.<br />
		"NoteColumnSplineMode_Position" means only the spline affect the notes and mods will be ignored. (but only mods that affect the same aspect of the note as the spline will be disabled.  So a rotation spline won't disable Mini or Tiny, but a zoom spline will, and a zoom spline won't disable Dizzy, Twirl, or Roll, but a rotation spline will.)
	</Function>
	<Function name='set_spline_mode' return='' arguments='NoteColumnSplineMode mode'>
		Sets the current spline mode for this handler.
	</Function>
	<Function name='get_subtract_song_beat' return='bool' arguments=''>
		Returns whether the current song beat is subtracted from a note's beat when calculating the t value to use on the spline.
	</Function>
	<Function name='set_subtract_song_beat' return='' arguments='bool s'>
		Sets whether the current song beat is subtracted from a note's beat when calculating the t value to use on the spline.
	</Function>
</Class>
<Class base='Actor' name='NoteColumnRenderer'>
	<Description>
		All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
		Position, rotation, and zoom each have separate spline handlers to allow them to have separate independent behavior.<br />
		It is important to note that the spline handlers are inside the tween state, so whenever you start a new tween on the actor, you need to refetch the spline handlers.<br />
	</Description>
	<Function name='get_pos_handler' return='NCSplineHandler' arguments=''>
		Returns the handler for the position spline.
	</Function>
	<Function name='get_rot_handler' return='NCSplineHandler' arguments=''>
		Returns the handler for the rotation spline.<br />
		The rotation applied by the rotation spline is in radians.<br />
		For convenience, the spatial extent of the rotation spline defaults to 2pi.
	</Function>
	<Function name='get_zoom_handler' return='NCSplineHandler' arguments=''>
		Returns the handler for the zoom spline.
	</Function>
</Class>
<Class name='NoteField'>
	<Description>
		All functions in this class have camel case equivalents, use whichever naming style you prefer.<br />
	</Description>
	<Function name='did_hold_note' return='' arguments='int column, TapNoteScore tns, bool bright'>
		Makes the NoteField act as if a hold note was hit in the column, with the given score and bright setting. <br />
		The callback for did_hold_note will not be called.
	</Function>
	<Function name='did_tap_note' return='' arguments='int column, TapNoteScore tns, bool bright'>
		Makes the NoteField act as if a tap note was hit in the column, with the given score and bright setting. <br />
		The callback for did_tap_note will not be called.
	</Function>
	<Function name='get_column_actors' return='{NoteColumnRenderer}' arguments=''>
		Returns a table of the actors for the columns.  This means that each column is an actor, so you can move it around or animate it like an actor.  See the NoteColumnRenderer class for a list of special functions for the column's actor.
	</Function>
	<Function name='set_did_hold_note_callback' return= '' arguments='function callback'>
		Same as SetDidTapNoteCallback, but for hold notes.  Uses HoldNoteScore instead of TapNoteScore.
	</Function>
	<Function name='set_did_tap_note_callback' return= '' arguments='function callback'>
		Sets the function that the NoteField will call whenever a tap note is hit.<br />
		The callback function is passed the column, the TapNoteScore, and whether the explosion will be bright.<br />
		The callback function can return changed values for the NoteField to use instead of the ones that were passed.<br />
		Pass nil instead of a function to clear the callback.
	</Function>
	<Function name='set_pressed' return='' arguments='int column'>
		Makes the NoteField act as if a press occurred in the column. <br />
		The callback for set_pressed will not be called.
	</Function>
	<Function name='set_set_pressed_callback' return= '' arguments='function callback'>
		Sets the function that the NoteField will call whenever a press occurs.<br />
		The callback function is passed the column for the press.<br />
		The callback function can return changed values for the NoteField to use instead of the ones that were passed.<br />
		Pass nil instead of a function to clear the callback.
	</Function>
	<Function name='set_step_callback' return= '' arguments='function callback'>
		Sets the function that the NoteField will call whenever a step occurs.<br />
		The callback function is passed the column and the TapNoteScore for the step.<br />
		The callback function can return changed values for the NoteField to use instead of the ones that were passed.<br />
		Pass nil instead of a function to clear the callback.
	</Function>
	<Function name='step' return='' arguments='int column, TapNoteScore tns'>
		Makes the NoteField act as if a step occurred in the column with the given score.
		The callback for Step will not be called.
	</Function>
</Class>
<Class name='OptionRow'>
	<Function name='FirstItemGoesDown' return='bool' arguments=''>
		Returns <code>true</code> if the first item in the row goes down.
	</Function>
	<Function name='GetChoiceInRowWithFocus' return='int' arguments='PlayerNumber pn'>
		Returns an index of the choice in the row that player <code>pn</code> is on.
	</Function>
	<Function name='GetLayoutType' return='LayoutType' arguments=''>
		Returns the OptionRow's layout type.
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Returns the name of the OptionRow.
	</Function>
	<Function name='GetNumChoices' return='int' arguments=''>
		Returns the number of choices in this OptionRow.
	</Function>
	<Function name='GetRowTitle' return='string' arguments=''>
		Returns the row title string.
	</Function>
	<Function name='GetSelectType' return='SelectType' arguments=''>
		Returns the OptionRow's select type.
	</Function>
	<Function name='HasFocus' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if this row is focused by player <code>pn</code>.
	</Function>
	<Function name='OneChoiceForAllPlayers' return='bool' arguments=''>
		Returns <code>true</code> if this row forces one choice on all players.
	</Function>
</Class>
<Class name='PaneDisplay' grouping='Actor'>
	<Function name='SetFromGameState' return='void' arguments=''>
		Sets the PaneDisplay from the GameState.
	</Function>
</Class>
<Class name='PercentageDisplay' grouping='Actor'>
	<Function name='LoadFromStats' return='void' arguments='PlayerState pPlayerState, PlayerStageStats pPlayerStageStats'>
		Sets the PercentageDisplay from the specified PlayerState and PlayerStageStats.
	</Function>
</Class>
<Class name='Player'>
	<Function name='ChangeLife' return='' arguments='float delta'>
		Changes the life value by delta.  This will broadcast a LifeChangedMessageCommand, to allow custom life bars to update to the new value.  Do not call ChangeLife from within LifeChangedMessageCommand.
	</Function>
	<Function name='SetLife' return='' arguments='float value'>
		Sets the life to value.  This will broadcast a LifeChangedMessageCommand, to allow custom life bars to update to the new value.  Do not call SetLife from within LifeChangedMessageCommand.
	</Function>
	<Function name='GetPlayerTimingData' return='TimingData' arguments=''>
		Returns the current TimingData for this player.
	</Function>
	<Function name='SetActorWithComboPosition' return='void' arguments='Actor a'>
		Sets Actor with Combo position.
	</Function>
	<Function name='SetActorWithJudgmentPosition' return='void' arguments='Actor a'>
		Sets Actor with Judgment position.
	</Function>
</Class>
<Class name='PlayerInfo'>
	<Description>(PlayerInfo is a part of ScreenGameplay.)</Description>
	<Function name='GetLifeMeter' return='LifeMeter' arguments='PlayerNumber pn'>
		Returns the <Link class='LifeMeter' /> of player <code>pn</code>.
	</Function>
	<Function name='GetStepsQueueWrapped' return='Steps' arguments='int index'>
		Returns the Steps located at <code>index</code> in the current steps queue.
	</Function>
</Class>
<Class name='PlayerOptions'>
	<Description>
		All these functions have an optional last argument:  If the last argument is the boolean value <code>true</code>, then instead of returning the previous settings as normal, they will instead return the PlayerOptions object.<br />
		This allows you to chain them like this:<br />
		<code>player_options:Twirl(5, 1, true):Roll(5, true):Dizzy(true):Twirl()</code><br />
		<br />
		Functions that take a bool as their arg must have <code>true</code> as the second arg to be used with chaining.<br />
		<code>player_options:Backwards(true, true):Beat(5)</code> will chain.  <code>player_options:Backwards(true):Beat(5)</code> will not chain.<br />
		<br />
		Most options fall into one of four types:  float, int, bool, or enum.<br />
		Float type options have this interface:<br />
		Option(value, approach_speed)<br />
		If value is a float, sets the TimeSpacing modifier to value.<br />
		If approach_speed is a float, sets the speed of the transition to approach_speed.  Returns the previous values of both.<br />
		approach_speed is in units of n per second.  value will be approached at the rate of approach_speed per second.<br />
		Note that the value and the approach speed arguments are both independently optional.<br />
		Example:
<pre><code>
-- Sets a to the current value and b to the current approach_speed
a,b = options:Boost()

-- Stores the previous values in a and b, NOT to 5 and .5
-- Sets the value to 5 and the approach speed to .5
a,b = options:Boost(5, .5)

-- Sets a and b to the previous values, NOT to 5 and .5
-- Sets the value to 5 and leaves the approach speed at whatever it was
a,b = options:Boost(5)
</code></pre>
		<br />
		Setting the approach speed only matters when modifying the PlayerOptions from ModsLevel_Song.<br />
		Int type options are similar to float in that they return and take a number, but they do not have an approach speed.<br />
		Bool type options have an almost identical interface, the difference is that they can not have an approach speed.<br />
		Enum type options are almost identical to bool type.  They take and return an enum value.<br />
		<!-- FIXME: These should really all have explanations. -->
		For brevity, the functions are only given a description if the option requires careful handling or does not follow the float or bool interfaces.<br />
	</Description>
	<Function name='Alternate' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='AttackMines' return='bool' arguments='bool value'> </Function>
	<Function name='AttenuateX' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='AttenuateY' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='AttenuateZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BatteryLives' return='int' arguments='int num'>	</Function>
	<Function name='Backwards' return='bool' arguments='bool value'> </Function>
	<Function name='Beat' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatMult' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatY' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatYMult' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatYOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatYPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatZMult' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BeatZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Big' return='bool' arguments='bool value'> </Function>
	<Function name='Blink' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Blind' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BMRize' return='bool' arguments='bool value'> </Function>
	<Function name='Boomerang' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Boost' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Bounce' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BouncePeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BounceOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BounceZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BounceZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='BounceZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Brake' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Bumpy' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='Bumpyn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply Bumpy on a specific column.
	</Function>
	<Function name='BumpyOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='BumpyPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='BumpyX' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='BumpyXOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='BumpyXPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='Centered' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='CMod' return='float, float' arguments='float value, float approach_speed'>
		If the player has a CMod set, returns the value of that CMod and its associated approach speed.  Returns nil otherwise.<br />
		If the optional first argument is passed, sets the CMod to the value and disables any XMod or MMod that is set.<br />
		If the optional second argument is passed, sets the speed at which the transition occurs.
	</Function>
	<Function name='Confusion' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ConfusionOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ConfusionOffsetn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply ConfusionOffset on a specific column.
	</Function>
	<Function name='ConfusionX' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ConfusionXOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ConfusionXOffsetn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply ConfusionXOffset on a specific column.
	</Function>
	<Function name='ConfusionY' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ConfusionYOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ConfusionYOffsetn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply ConfusionYOffset on a specific column.
	</Function>
	<Function name='Cosecant' return='bool' arguments='bool value'> </Function>
	<Function name='Cover' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Cross' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Dark' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Darkn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply Dark on a specific column.
	</Function>
	<Function name='Digital' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalSteps' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalZ' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalZOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalZPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DigitalZSteps' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='Dizzy' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='DizzyHolds' return='bool' arguments='bool value'> </Function>
	<Function name='DisableTimingWindow' return='' arguments='TimingWindow tw' since='ITGmania 0.5.1'>
		Selectively disable specific timing windows for a player. <br />
		Valid values are <code>W1</code> to <code>W5</code> as defined in the <Link class='ENUM' function='TimingWindow' /> enum.
	</Function>
	<Function name='Distant' return='float, float' arguments='float value, float approach_speed'>
		If the player is using Distant (zero skew and positive tilt), returns the value of tilt and its approach_speed.<br />
		Returns nil otherwise.<br />
		If the optional first argument is passed, sets tilt to value and skew to zero.<br />
		If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
	</Function>
	<Function name='DrainSetting' return= 'DrainType' arguments='DrainType type'>	</Function>
	<Function name='DrawSize' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='DrawSizeBack' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Drunk' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkSpeed' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkZ' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkZOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkZPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='DrunkZSpeed' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='Echo' return='bool' arguments='bool value'> </Function>
	<Function name='Expand' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='ExpandPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='FailSetting' return='FailType' arguments='FailType'>
		Sets the <Link class='ENUM' function='FailType' /> for the player, if the optional argument is provided.  Returns the <Link class='ENUM' function='FailType' /> that was previously set.
	</Function>
	<Function name='Flip' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Floored' return='bool' arguments='bool value'> </Function>
	<Function name='GetDisabledTimingWindows' return='{TimingWindow}' arguments='' since='ITGmania 0.5.1'>
		Returns a table of the currently disabled <Link class='ENUM' function='TimingWindow' />s for the player.
	</Function>
	<Function name='GetStepAttacks' return='bool' arguments=''>
		Returns true if step attacks or random attacks are enabled.
	</Function>
	<Function name='IsEasierForCourseAndTrail' return='bool' arguments='Course c, Trail t'>
		Returns <code>true</code> if the current PlayerOptions makes the current Course/Trail easier.
	</Function>
	<Function name='IsEasierForSongAndSteps' return='bool' arguments='Song so, Steps st'>
		Returns <code>true</code> if the current PlayerOptions makes the current Song/Steps easier.
	</Function>
	<Function name='Hallway' return='float, float' arguments='float value, float approach_speed'>
		If the player is using Hallway (zero skew and negative tilt), returns the value of tilt and its approach_speed.<br />
		Returns nil otherwise.<br />
		If the optional first argument is passed, sets tilt to negative value and skew to zero.<br />
		Pass in a positive value for the familiar meaning of Hallway.<br />
		If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
	</Function>
	<Function name='Hidden' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='HiddenOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='HoldRolls' return='bool' arguments='bool value'> </Function>
	<Function name='HyperShuffle' return='bool' arguments='bool value'> </Function>
	<Function name='Incoming' return='float, float' arguments='float value, float approach_speed'>
		If the player is using Incoming ((positive skew and negative tilt) or (negative skew and positive tilt)), returns the value of skew and its approach_speed.<br />
		Returns nil otherwise.<br />
		If the optional first argument is passed, sets tilt to negative value and skew to value.<br />
		Pass in a positive value for the familiar meaning of Incoming.<br />
		If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
	</Function>
	<Function name='Invert' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Left' return='bool' arguments='bool value'> </Function>
	<Function name='LifeSetting' return='LifeType' arguments='LifeType type'>	</Function>
	<Function name='Little' return='bool' arguments='bool value'> </Function>
	<Function name='ModTimerSetting' return= 'ModTimerType' arguments='ModTimerType type'>
		Sets the effect clock of certain modifiers for the player, if the optional argument is provided.  Returns the <Link class='ENUM' function='ModTimerType' /> that was previously set.<br />
		Can also be set through strings in PlayerOptions::FromString().<br />
		String Examples: 'ModTimerSong', 'modtimerbeat', etc.
	</Function>
	<Function name='ModTimerMult' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ModTimerOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='MaxScrollBPM' return='float, float' arguments='float value, float approach_speed'>
		MaxScrollBPM is one of the variables for controlling the speed mod.<br />
		Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
		It is the setting for the MMod.<br />
		MMods are not tweenable or settable on ScreenGameplay.  Use XMods if you need such an effect.
	</Function>
	<Function name='Mines' return='bool' arguments='bool value'> </Function>
	<Function name='Mini' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='MinTNSToHideNotes' return='TapNoteScore' arguments='TapNoteScore tns'> Sets the min TapNoteScore required for the notes to disappear after being hit. </Function>
	<Function name='Mirror' return='bool' arguments='bool value'> </Function>
	<Function name='MMod' return='float, float' arguments='float value, float approach_speed'>
		If the player has a MMod set, returns the value of that MMod and its associated approach speed.  Returns nil otherwise.<br />
		If the optional first argument is passed, sets the MMod to the value and disables any CMod or XMod that is set.<br />
		If the optional second argument is passed, sets the speed at which the transition occurs.<br />
		MMods are not tweenable or settable on ScreenGameplay.  Use XMods if you need such an effect.
	</Function>
	<Function name='MoveXn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to move a specific column.
	</Function>
	<Function name='MoveYn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to move a specific column.
	</Function>
	<Function name='MoveZn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to move a specific column.
	</Function>
	<Function name='MuteOnError' return='bool' arguments='bool value'> </Function>
	<Function name='NoAttack' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='NoFakes' return='bool' arguments='bool value'> </Function>
	<Function name='NoHolds' return='bool' arguments='bool value'> </Function>
	<Function name='NoJumps' return='bool' arguments='bool value'> </Function>
	<Function name='NoHands' return='bool' arguments='bool value'> </Function>
	<Function name='NoLifts' return='bool' arguments='bool value'> </Function>
	<Function name='NoQuads' return='bool' arguments='bool value'> </Function>
	<Function name='NoStretch' return='bool' arguments='bool value'> </Function>
	<Function name='NoMines' return='bool' arguments='bool value'> </Function>
	<Function name='NoRolls' return='bool' arguments='bool value'> </Function>
	<Function name='NoteSkin' return='string, bool' arguments='string name'>
		Sets the NoteSkin to the named noteskin, unless name is <code>nil</code> or the NoteSkin does not exist.  Returns the name of the previous NoteSkin and whether the set attempt succeeded.<br />
		Changing the NoteSkin during gameplay is not supported.<br />
		Example:
<pre><code>
-- Sets note_name to the player's current noteskin
note_name = options:NoteSkin()

-- Sets prev_note_name to the noteskin the player had set
-- changes the current noteskin to "cel"
-- sets succeeded to true if the "cel" noteskin exists.
prev_note_name, succeeded = options:NoteSkin("cel")
</code></pre>
	</Function>
	<Function name='Overhead' return='bool' arguments='bool'>
		If the player is using Overhead (0 tilt, 0 skew), returns true.<br />
		If true is passed, sets the tilt and skew to 0.
	</Function>
	<Function name='ParabolaX' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ParabolaY' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ParabolaZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Passmark' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Planted' return='bool' arguments='bool value'> </Function>
	<Function name='PlayerAutoPlay' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='PulseInner' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='PulseOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='PulseOuter' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='PulsePeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Quick' return='bool' arguments='bool value'> </Function>
	<Function name='RandAttack' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='RandomSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='RandomVanish' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ResetDisabledTimingWindows' return='' arguments='' since='ITGmania 0.5.1'>
		Re-enable all <Link class='ENUM' function='TimingWindow' />s that may have previously been disabled.
	</Function>
	<Function name='Reverse' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Reversen' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply Reverse on a specific column.
	</Function>
	<Function name='Right' return='bool' arguments='bool value'> </Function>
	<Function name='Roll' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Sawtooth' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SawtoothPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SawtoothZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SawtoothZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ScrollBPM' return='float, float' arguments='float value, float approach_speed'>
		ScrollBPM is one of the variables for controlling the speed mod.<br />
		Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
		It is the setting for the CMod.
	</Function>
	<Function name='ScrollSpeed' return='float, float' arguments='float value, float approach_speed'>
		ScrollSpeed is one of the variables for controlling the speed mod.<br />
		Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
		It is the setting for the XMod.
	</Function>
	<Function name='ShrinkMult' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ShrinkLinear' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Shuffle' return='bool' arguments='bool value'> </Function>
	<Function name='Skew' return='float, float' arguments='float value, float approach_speed'>
		Skew is one of the mods for controlling the perspective.  Use Overhead, Distant, Incoming, Space, Distant, or Hallway for controlling the perspective in the old way.<br />
		Skew moves the vanishing point for the note field away from the center of the screen.<br />
		Skew has no effect in single mode if Center1Player is true.<br />
		Skew has no effect in double mode.<br />
	</Function>
	<Function name='Skippy' return='bool' arguments='bool value'> </Function>
	<Function name='SoftShuffle' return='bool' arguments='bool value'> </Function>
	<Function name='Space' return='float, float' arguments='float value, float approach_speed'>
		If the player is using Space ((positive skew and positive tilt) or (negative skew and negative tilt)), returns the value of skew and its approach_speed.<br />
		Returns nil otherwise.<br />
		If the optional first argument is passed, sets tilt to value and skew to value.<br />
		If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
	</Function>
	<Function name='Split' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Square' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SquareOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SquarePeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SquareZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SquareZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SquareZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Stealth' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Stealthn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply Stealth on a specific column.
	</Function>
	<Function name='StealthPastReceptors' return='bool' arguments='bool value'> </Function>
	<Function name='StealthType' return='bool' arguments='bool value'> </Function>
	<Function name='Stomp' return='bool' arguments='bool value'> </Function>
	<Function name='Sudden' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SuddenOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='SuperShuffle' return='bool' arguments='bool value'> </Function>
	<Function name='TimeSpacing' return='float, float' arguments='float value, float approach_speed'>
		TimeSpacing is one of the variables for controlling the speed mod.<br />
		Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
		It controls whether the speed mod is in X mode or C mode.  It should only be set to 0 or 1, and is only a float value to allow tweening between the two states.
	</Function>
	<Function name='Tilt' return='float, float' arguments='float value, float approach_speed'>
		Tilt is one of the mods for controlling the perspective.  Use Overhead, Distant, Incoming, Space, Distant, or Hallway for controlling the perspective in the old way.<br />
		Tilt tilts the note field forward and back.
	</Function>
	<Function name='Tiny' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Tinyn' return= 'float, float' arguments='float value, float approach_speed'>
		Use 1-16 in place of 'n' to apply Tiny on a specific column.
	</Function>
	<Function name='Tipsy' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TipsyOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TipsySpeed' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='Tornado' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TornadoOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TornadoPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TornadoZ' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TornadoZOffset' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TornadoZPeriod' return='float, float' arguments='float value, float approach_speed'>
		Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
	</Function>
	<Function name='TurnNone' return='bool' arguments='bool value'> </Function>
	<Function name='Twirl' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Twister' return='bool' arguments='bool value'> </Function>
	<Function name='UsingReverse' return='bool' arguments=''>
		Returns <code>true</code> if the player is using reverse. (equivalent to <code>GetReverse() == 1.0</code>)
	</Function>
	<Function name='VisualDelay' return='' arguments='float' since='ITGmania 0.5.1'>
		The time in seconds to adjust a player's visual delay by.<br />
		Negative values will shift the arrows up, while positive values will push them down.<br />
		Sub-millisecond visual delay values are not saved and are instead rounded to the closest millisecond.
	</Function>
	<Function name='Wave' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='WavePeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='Wide' return='bool' arguments='bool value'> </Function>
	<Function name='XMod' return='float, float' arguments='float value, float approach_speed'>
		If the player has a XMod set, returns the value of that XMod and its associated approach speed.  Returns nil otherwise.<br />
		If the optional first argument is passed, sets the XMod to the value and disables any CMod or MMod that is set.<br />
		If the optional second argument is passed, sets the speed at which the transition occurs.
	</Function>
	<Function name='Xmode' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ZBuffer' return='bool' arguments='bool value'> </Function>
	<Function name='Zigzag' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ZigzagOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ZigzagPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ZigzagZ' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ZigzagZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
	<Function name='ZigzagZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
</Class>
<Class name='PlayerStageStats'>
	<Function name='FailPlayer' return='bool' arguments=''>
		Fails the player.
	</Function>
	<Function name='FullCombo' return='bool' arguments=''>
		Returns <code>true</code> if a full combo (TNS_W3 and up) was obtained.
	</Function>
	<Function name='FullComboOfScore' return='bool' arguments='TapNoteScore tns'>
		Returns <code>true</code> if a full combo (<code>tns</code> and up) was obtained.
	</Function>
	<Function name='GetActualDancePoints' return='int' arguments=''>
		Returns the number of Dance Points obtained by the player.
	</Function>
	<Function name='GetAliveSeconds' return='float' arguments=''>
		Returns how long the player has been alive.
	</Function>
	<Function name='GetBestFullComboTapNoteScore' return='TapNoteScore' arguments=''>
		Returns the best tap note score for a full combo.
	</Function>
	<Function name='GetCaloriesBurned' return='float' arguments=''>
		Returns the number of calories burned.
	</Function>
	<Function name='GetComboList' return= '{combo}' arguments=''>
		Returns a table of all the combos.  Each entry in the table is a table containing the StartSecond, SizeSeconds, Count, Rollover, StageCount, and IsZero information for that combo.
	</Function>
	<Function name='GetCurMaxScore' return='int' arguments=''>
		Returns the current possible maximum score.
	</Function>
	<Function name='GetCurrentCombo' return='int' arguments=''>
		Returns the player's current combo.
	</Function>
	<Function name='GetCurrentLife' return='float' arguments=''>
		Returns the player's current life from 0..1.
	</Function>
	<Function name='GetCurrentMissCombo' return='int' arguments=''>
		Returns the player's current miss combo.
	</Function>
	<Function name='GetCurrentPossibleDancePoints' return='int' arguments=''>
		Returns the number of Dance Points possible to be obtained by the player.
	</Function>
	<Function name='GetCurrentScoreMultiplier' return='int' arguments=''>
		Returns the player's current score multiplier.
	</Function>
	<Function name='GetFailed' return='bool' arguments=''>
		Returns <code>true</code> if the player failed.
	</Function>
	<Function name='GetGrade' return='Grade' arguments=''>
		Returns the player's grade.
	</Function>
	<Function name='GetHighScore' return='HighScore' arguments=''>
		Returns the HighScore for this PlayerStageStats.
	</Function>
	<Function name='GetHoldNoteScores' return='int' arguments='HoldNoteScore hns'>
		Returns the number of judgments for a specified HoldNoteScore.
	</Function>
	<Function name='GetLessonScoreActual' return='int' arguments=''>
		Returns the player's actual score on the lesson.
	</Function>
	<Function name='GetLessonScoreNeeded' return='int' arguments=''>
		Returns the score needed to pass the lesson.
	</Function>
	<Function name='GetLifeRecord' return='{float}' arguments='float last_second, int samples'>
		Returns table of samples of the life record from 0 to last_second.
		'samples' determines the size of the table.  'samples' defaults to 100
		if not specified.
	</Function>
	<Function name='GetLifeRemainingSeconds' return='float' arguments=''>
		Returns the player's life remaining seconds.
	</Function>
	<Function name='GetMachineHighScoreIndex' return='int' arguments=''>
		Returns the machine high score index for this performance.
	</Function>
	<Function name='GetNumControllerSteps' return='int' arguments=''>
		Returns the number of controller steps.
	</Function>
	<Function name='GetPeakComboAward' return='PeakComboAward' arguments=''>
		Returns the peak combo award for this performance.
	</Function>
	<Function name='GetPersonalHighScoreIndex' return='int' arguments=''>
		Returns the personal high score index for this performance.
	</Function>
	<Function name='GetPlayedSteps' return='{Steps}' arguments=''>
		Returns a table of played steps.
	</Function>
	<Function name='GetPercentageOfTaps' return='float' arguments='TapNoteScore tns'>
		Gets the percentage of taps that were scored as <code>tns</code>.
	</Function>
	<Function name='GetPercentDancePoints' return='float' arguments=''>
		Returns the player's Dance Point percentage.
	</Function>
	<Function name='GetPossibleDancePoints' return='int' arguments=''>
		Returns the number of possible Dance Points.
	</Function>
	<Function name='GetPossibleSteps' return='{Steps}' arguments=''>
		Returns a table of possible steps.
	</Function>
	<Function name='GetRadarActual' return='RadarValues' arguments=''>
		Returns a RadarValues object representing the player's actual performance.
	</Function>
	<Function name='GetRadarPossible' return='RadarValues' arguments=''>
		Returns a RadarValues object representing the total values for the song.
	</Function>
	<Function name='GetScore' return='int' arguments=''>
		Returns the score.
	</Function>
	<Function name='GetSongsPassed' return='int' arguments=''>
		Returns the number of songs passed.
	</Function>
	<Function name='GetSongsPlayed' return='int' arguments=''>
		Returns the number of songs played.
	</Function>
	<Function name='GetStageAward' return='StageAward' arguments=''>
		Returns the stage award for this performance.
	</Function>
	<Function name='GetSurvivalSeconds' return='float' arguments=''>
		Returns how long the player survived in seconds.
	</Function>
	<Function name='GetTapNoteScores' return='int' arguments='TapNoteScore tns'>
		Returns the number of judgments for a specified TapNoteScore.
	</Function>
	<Function name='MaxCombo' return='int' arguments=''>
		Returns the max combo for this performance.
	</Function>
	<Function name='IsDisqualified' return='bool' arguments=''>
		Returns <code>true</code> if the player was disqualified from ranking.
	</Function>
	<Function name='SetCurMaxScore' return='void' arguments='int maxscore'>
	</Function>
	<Function name='SetDancePointLimits' return='void' arguments='int actual, int possible'>
		Sets the Dance Point limits of the stage.
	</Function>
	<Function name='SetScore' return='void' arguments='int score'>
	</Function>
</Class>
<Class name='PlayerState'>
	<Function name='ApplyPreferredOptionsToOtherLevels' return='void' arguments=''>
		Applies the player options of ModsLevel_Preferred to the other ModsLevels.
	</Function>
	<Function name='GetCurrentPlayerOptions' return='PlayerOptions' arguments='' >
		Returns the current PlayerOptions for this PlayerState.
	</Function>
	<Function name='GetHealthState' return='HealthState' arguments=''>
		Returns the HealthState for this PlayerState.
	</Function>
	<Function name='GetMultiPlayerNumber' return='MultiPlayer' arguments=''>
		Returns the multiplayer number for this PlayerState.
	</Function>
	<Function name='GetPlayerController' return='PlayerController' arguments=''>
		Returns the PlayerController for this PlayerState.
	</Function>
	<Function name='GetPlayerNumber' return='PlayerNumber' arguments=''>
		Returns the player number for this PlayerState.
	</Function>
	<Function name='GetPlayerOptions' return='PlayerOptions' arguments='ModsLevel ml'>
		Returns a PlayerOptions object for the specified ModsLevel.
	</Function>
	<Function name='GetPlayerOptionsString' return='string' arguments='ModsLevel ml'>
		Returns a string of player options for the specified ModsLevel. (was <code>GetPlayerOptions</code> before sm-ssc v1.2.3)
	</Function>
	<Function name='GetPlayerOptionsArray' return='{string}' arguments='ModsLevel ml'>
		Returns a table of strings, containing the player options for the specified ModsLevel.
	</Function>
	<Function name='GetSongPosition' return='SongPosition' arguments=''>
		Returns the SongPosition for this PlayerState.
	</Function>
	<Function name='GetSuperMeterLevel' return='float' arguments=''>
		Returns the current Super Meter level for this PlayerState.
	</Function>
	<Function name='SetPlayerOptions' return='string' arguments='ModsLevel ml, string sPlayerOptions'>
		Sets the player options to <code>sPlayerOptions</code> for the specified ModsLevel.
	</Function>
</Class>
<Class name='PrefsManager'>
	<Description>
		This singleton is accessible to Lua via <code>PREFSMAN</code>.
	</Description>
	<Function name='GetPreference' return='various' arguments='string sPreference'>
		Return the value of the preference <code>sPreference</code>.
	</Function>
	<Function name='PreferenceExists' return='bool' arguments='string sPreference'>
		Return true if preference <code>sPreference</code> exists.
	</Function>
	<Function name='SetPreference' return='void' arguments='string sPreference, various value'>
		Set the value of the preference <code>sPreference</code> to <code>value</code>.
	</Function>
	<Function name='SetPreferenceToDefault' return='void' arguments='string sPreference'>
		Reset preference <code>sPreference</code> to the default value.
	</Function>
	<Function name='SavePreferences' return='void' arguments=''>
		Saves preferences to disk.
	</Function>
</Class>
<Class name='Profile'>
	<Function name='AddCaloriesToDailyTotal' return='void' arguments='float cals'>
		Adds cals to the daily total.
	</Function>
	<Function name='AddScreenshot' return='void' arguments='HighScore hs, string filename'>
		Adds a screenshot entry to the profile.  filename must be the full path of the screenshot, as returned by SaveScreenshot.
	</Function>
	<Function name='CalculateCaloriesFromHeartRate' return='float' arguments='float heart_bpm, float duration'>
		Calculates the number of calories burned based on the heart rate (in beats per minute), the duration (in seconds), and data in the profile.
	</Function>
	<Function name='GetAge' return='int' arguments=''>
		Returns the age.
	</Function>
	<Function name='GetAllUsedHighScoreNames' return= '{string}' arguments='void'>
		Returns a table of all high score names that have been used on this profile.
	</Function>
	<Function name='GetBirthYear' return='int' arguments=''>
		Returns the birth year.
	</Function>
	<Function name='GetCaloriesBurnedToday' return='float' arguments=''>
		Returns the number of calories burned during the current day.
	</Function>
	<Function name='GetCategoryHighScoreList' return='HighScoreList' arguments='StepsType st, RankingCategory rc'>
		Returns the profile's high scores for the specified ranking category.
	</Function>
	<Function name='GetCharacter' return='Character' arguments=''>
		Returns the Character being used by this profile.
	</Function>
	<Function name='GetCoursesActual' return='float' arguments='StepsType st, Difficulty d'>
		Returns a composite of your high scores over courses with the specified StepsType and Difficulty.
	</Function>
	<Function name='GetCoursesPercentComplete' return='float' arguments='StepsType st, Difficulty d'>
		Returns the percentage of courses that you've completed with the specified StepsType and Difficulty.
	</Function>
	<Function name='GetCoursesPossible' return='float' arguments='StepsType st, Difficulty d'>
		Returns the possible score of courses with the specified StepsType and Difficulty.
	</Function>
	<Function name='GetDisplayName' return='string' arguments=''>
		Returns the profile's display name.
	</Function>
	<Function name='GetDisplayTotalCaloriesBurned' return='string' arguments=''>
		Return the number of calories burned as a string.
	</Function>
	<Function name='GetGoalCalories' return='int' arguments=''>
		Returns the number of calories needed to reach the goal.
	</Function>
	<Function name='GetGoalSeconds' return='int' arguments=''>
		Returns the number of seconds needed to reach the goal.
	</Function>
	<Function name='GetGoalType' return='GoalType' arguments=''>
		Returns the current goal type.
	</Function>
	<Function name='GetGUID' return='string' arguments=''>
		Returns the GUID of this Profile.
	</Function>
	<Function name='GetIgnoreStepCountCalories' return='bool' arguments=''>
		Returns whether this profile ignores the step count based calorie calculation.
	</Function>
	<Function name='GetIsMale' return='bool' arguments=''>
		Returns whether this profile uses the male formula when CalculateCaloriesFromHeartRate is used.
	</Function>
	<Function name='GetHighScoreList' return='HighScoreList' arguments='Song s, Steps st'>
		Gets the profile's HighScoreList for a specified Song and Steps. (Alternate arguments for Courses: <code>Course c, Trail t</code>)
	</Function>
	<Function name='GetHighScoreListIfExists' return='HighScoreList' arguments='Song s, Steps st'>
		Gets the profile's HighScoreList for a specified Song and Steps. (Alternate arguments for Courses: <code>Course c, Trail t</code>)<br />
		If the profile does not have a HighScoreList for the Song and Steps, returns nil.  Use this to avoid increasing the memory footprint of the profile when checking the score lists for every song and steps.
	</Function>
	<Function name='GetLastPlayedCourse' return='Course' arguments=''>
		Returns the last played Course for this profile.
	</Function>
	<Function name='GetLastPlayedSong' return='Song' arguments=''>
		Returns the last played Song for this profile.
	</Function>
	<Function name='GetLastUsedHighScoreName' return='string' arguments=''>
		Returns the last used high score name.
	</Function>
	<Function name='GetNumToasties' return='int' arguments=''>
		Returns the number of Toasties gotten using the specified profile.
	</Function>
	<Function name='GetMostPopularCourse' return='Course' arguments=''>
		Returns the profile's most popular course.
	</Function>
	<Function name='GetMostPopularSong' return='Song' arguments=''>
		Returns the profile's most popular song.
	</Function>
	<Function name='GetNumTotalSongsPlayed' return='int' arguments=''>
		Returns the total number of songs played with the profile.
	</Function>
	<Function name='GetPriority' return='int' arguments=''>
		Returns the position the profile should have in its category in the list.
	</Function>
	<Function name='GetSongNumTimesPlayed' return='int' arguments='Song s'>
		Returns the number of times song <code>s</code> has been played with the profile.
	</Function>
	<Function name='GetSongsActual' return='float' arguments='StepsType st, Difficulty d'>
		Returns a composite of your high scores over songs with the specified StepsType and Difficulty.
	</Function>
	<Function name='GetSongsAndCoursesPercentCompleteAllDifficulties' return='float' arguments='StepsType st'>
		Returns the percent complete for all songs and courses for the specified StepsType <code>st</code>.
	</Function>
	<Function name='GetSongsPercentComplete' return='float' arguments='StepsType st, Difficulty d'>
		Returns the percentage of songs that you've completed with the specified StepsType and Difficulty.
	</Function>
	<Function name='GetSongsPossible' return='float' arguments='StepsType st, Difficulty d'>
		Returns the possible score of songs with the specified StepsType and Difficulty.
	</Function>
	<Function name='GetTotalCaloriesBurned' return='float' arguments=''>
		Return the total number of calories burned.
	</Function>
	<Function name='GetTotalDancePoints' return='int' arguments=''>
		Returns the number of dance points earned.
	</Function>
	<Function name='GetTotalHands' return='int' arguments=''>
		Returns the number of Hands stepped on.
	</Function>
	<Function name='GetTotalHolds' return='int' arguments=''>
		Returns the number of successful Holds.
	</Function>
	<Function name='GetTotalJumps' return='int' arguments=''>
		Returns the number of Jumps stepped on.
	</Function>
	<Function name='GetTotalLifts' return='int' arguments=''>
		Returns the number of successful Lifts.
	</Function>
	<Function name='GetTotalMines' return='int' arguments=''>
		Returns the number of Mines stepped on.
	</Function>
	<Function name='GetTotalNumSongsPlayed' return='int' arguments=''>
		Returns the total number of songs played with the profile.
	</Function>
	<Function name='GetTotalRolls' return='int' arguments=''>
		Returns the number of successful Rolls.
	</Function>
	<Function name='GetTotalStepsWithTopGrade' return='int' arguments='StepsType st, Difficulty d, Grade g'>
		Returns the number of steps with the specified StepsType and Difficulty that you've scored a certain Grade <code>g</code> on.
	</Function>
	<Function name='GetTotalTapsAndHolds' return='int' arguments=''>
		Returns the number of Taps and successful Holds.
	</Function>
	<Function name='GetTotalTrailsWithTopGrade' return='int' arguments='StepsType st, Difficulty d, Grade g'>
		Returns the number of trails with the specified StepsType and Difficulty that you've scored a certain Grade <code>g</code> on.
	</Function>
	<Function name='GetType' return='ProfileType' arguments=''>
		Returns the type of the profile.  The StepMania engine uses ProfileType to sort the list of profiles, with <code>Guest</code> profiles appearing first, then <code>Normal</code>, then <code>Test</code>.<br />
		Additional subsorting can be configured with <Link class='ENUM' function='ProfileSortOrder' />.
	</Function>
	<Function name='GetUserTable' return='table' arguments=''>
		Returns the user table for this Profile.
	</Function>
	<Function name='GetVoomax' return='float' arguments=''>
		Returns the VO2 max for this profile.
	</Function>
	<Function name='GetWeightPounds' return='int' arguments=''>
		Returns how much the player weighs.
	</Function>
	<Function name='HasPassedAnyStepsInSong' return='bool' arguments='Song s'>
		Returns <code>true</code> if the player has passed any steps in the specified Song <code>s</code>.
	</Function>
	<Function name='IsCodeUnlocked' return='bool' arguments='string sUnlockEntryID'>
		Returns <code>true</code> if the specified code <code>sUnlockEntryID</code> is unlocked.
	</Function>
	<Function name='SetBirthYear' return='void' arguments='int year'>
		Sets the birth year of the profile.
	</Function>
	<Function name='SetCharacter' return='void' arguments='string sCharID'>
		Sets the current <Link class='Character' /> for the Profile.
	</Function>
	<Function name='SetDisplayName' return='void' arguments='string name'>
		Sets the display name of the profile to name.
	</Function>
	<Function name='SetGoalCalories' return='void' arguments='int iCals'>
		Sets the goal to <code>iCals</code> calories.
	</Function>
	<Function name='SetGoalSeconds' return='void' arguments='int iSecs'>
		Sets the goal to <code>iSecs</code> seconds.
	</Function>
	<Function name='SetGoalType' return='void' arguments='GoalType gt'>
		Sets the current goal type to <code>gt</code>.
	</Function>
	<Function name='SetIgnoreStepCountCalories' return='void' arguments='bool ignore'>
		Sets whether this profile ignores the step count based calorie counting.
	</Function>
	<Function name='SetIsMale' return='void' arguments='bool male'>
		Sets whether this profile uses the male formula when CalculateCaloriesFromHeartRate is used.
	</Function>
	<Function name='SetLastUsedHighScoreName' return='void' arguments='string name'>
		Sets last used high score name.
	</Function>
	<Function name='SetVoomax' return='void' arguments='float voo'>
		Sets the VO2 max for the profile.  0 is treated as unset.
	</Function>
	<Function name='SetWeightPounds' return='void' arguments='int weightPounds'>
		Sets how much the player weighs (in pounds) to <code>weightPounds</code>.
	</Function>
	<!-- sm-ssc additions -->
	<Function name='GetTotalGameplaySeconds' return='int' arguments=''>
		Returns the amount of time this profile has spent in gameplay (in seconds).
	</Function>
	<Function name='GetTotalSessions' return='int' arguments=''>
		Returns the number of sessions this profile has had.
	</Function>
	<Function name='GetTotalSessionSeconds' return='int' arguments=''>
		Returns the total session length (in seconds) of this profile.
	</Function>
</Class>
<Class name='ProfileManager'>
	<Description>
		This singleton is accessible to Lua via <code>PROFILEMAN</code>.
	</Description>
	<Function name='GetLocalProfile' return='Profile' arguments='string sProfileID'>
		Returns the Profile for the specified profile ID.
	</Function>
	<Function name='GetLocalProfileDisplayNames' return='{string}' arguments=''>
		Returns a table of the local profile display names.
	</Function>
	<Function name='GetLocalProfileFromIndex' return='Profile' arguments='int iIndex' />
	<Function name='GetLocalProfileIDFromIndex' return='string' arguments='int iIndex' />
	<Function name='GetLocalProfileIDs' return='{string}' arguments=''>
		Returns a table of the local profile IDs.
	</Function>
	<Function name='GetLocalProfileIndexFromID' return='int' arguments='string sProfileID' />
	<Function name='GetMachineProfile' return='Profile' arguments=''>
		Retuns the machine profile.
	</Function>
	<Function name='GetNumLocalProfiles' return='int' arguments=''>
		Retuns the amount of local profiles.
	</Function>
	<Function name='GetPlayerName' return='string' arguments='PlayerNumber pn'>
		Returns the player name for player <code>pn</code>.
	</Function>
	<Function name='GetProfile' return='Profile' arguments='PlayerNumber pn'>
		Returns the profile for player <code>pn</code>.
	</Function>
	<Function name='GetProfileDir' return='string' arguments='ProfileSlot slot'>
		Returns the profile directory for the provided <Link class='ENUM' function='ProfileSlot'>ProfileSlot</Link>, formatted like <code>/Save/LocalProfiles/00000001/</code>.<br />
		Returns an empty string if the provided <Link class='ENUM' function='ProfileSlot'>ProfileSlot</Link> does not have a <Link class='Profile' /> loaded.
	</Function>
	<Function name='GetSongNumTimesPlayed' return='int' arguments='Song s, ProfileSlot ps'>
		Returns the number of times Song <code>s</code> has been played with the specified <Link class='ENUM' function='ProfileSlot'>ProfileSlot</Link>.
	</Function>
	<Function name='GetStatsPrefix' return='string' arguments=''>
		Returns the current stats prefix.
	</Function>
	<Function name='IsPersistentProfile' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code>'s profile is persistent.
	</Function>
	<Function name='IsSongNew' return='bool' arguments='Song s'>
		Returns <code>true</code> if Song <code>s</code> has never been played before (according to the machine profile).
	</Function>
	<Function name='LocalProfileIDToDir' return='' arguments=''>
	</Function>
	<Function name='ProfileFromMemoryCardIsNew' return='bool' arguments=''>
		Returns <code>true</code> if the profile from the memory card is new.
	</Function>
	<Function name='ProfileWasLoadedFromMemoryCard' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if <code>pn</code>'s Profile was loaded from a memory card.
	</Function>

	<Function name='LastLoadWasFromLastGood' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if the last load of player <code>pn</code>'s profile was a LastGood copy of the profile.
	</Function>
	<Function name='LastLoadWasTamperedOrCorrupt' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if the last load of player <code>pn</code>'s profile resulted in a tampered or corrupt profile.
	</Function>
	<Function name='SaveLocalProfile' return='bool' arguments='string ID'>
		Saves the local profile with the specified ID.
	</Function>
	<Function name='SaveMachineProfile' return='void' arguments=''>
		Saves the machine profile.
	</Function>
	<Function name='SaveProfile' return='bool' arguments='PlayerNumber pn'>
		Saves the profile for player <code>pn</code>.
	</Function>
	<Function name='SetStatsPrefix' return='' arguments='string'>
		Sets the current stats prefix.  The stats prefix is prepended to the Stats.xml file when loading or saving a profile.  SetStatsPrefix will reload all profiles from the Stats.xml that has the given prefix.  In general, score entries are the only thing not preserved when changing the stats prefix.  Profile::HandleStatsPrefixChange in Profile.cpp lists the fields that are preserved.
	</Function>
</Class>
<Class name='Quad' grouping='Actor'>
	<Description>
	 Quads are rectangular actors that players can see.  A Quad can have color, size, position, etc.
	</Description>
</Class>
<Class name='RadarValues'>
	<Function name='GetValue' return='int' arguments='RadarCategory rc'>
		Returns the value of <code>rc</code> from <Link class='Steps' function='GetRadarValues' />.
	</Function>
</Class>
<Class name='RageBezier2D'>
	<Description>
		You must call create_bezier to create a RageBezier2D to use any of these functions.  When you are done with the object, destroy it with its destroy function to avoid a memory leak.<br />
		A RageBezier2D is two RageQuadratics, one for the x coordinate and one for the y.<br />
		This class is provided as a tool for designers working with bezier tweens who need a tool that displays the tween curve visually.<br />
		If you use Actor:tween(time, "TweenType_Bezier", {xa, ya, xb, yb, xc, yc, xd, yd}) to tween an actor, the actor creates a RageBezier2D internally and calls evaluate_y_from_x each frame to set where it is in the tween.
	</Description>
	<Function name='destroy' return='' arguments=''>
		Destroys the RageBezier2D.  Do not attempt to use it after it has been destroyed.
	</Function>
	<Function name='evaluate' return='float,float' arguments='float t'>
		Evaluates the bezier curve at the given t and returns the x and y values.  This is equivalent to using get_x and get_y to fetch the quadratic parts and calling evaluate on them directly.
	</Function>
	<Function name='evaluate_y_from_x' return='float' arguments='float x'>
		Takes the x given and converts it to a t value, then evaluates the y quadratic with the t value and returns the result.
	</Function>
	<Function name='get_x' return='RageQuadratic' arguments=''>
		Returns the RageQuadratic used for the x component.
	</Function>
	<Function name='get_y' return='RageQuadratic' arguments=''>
		Returns the RageQuadratic used for the y component.
	</Function>
	<Function name='set_from_bezier' return='' arguments='float xa, float ya, float xb, float yb, float xc, float yc, float xd, float yd'>
		Sets the values used by the two quadratics.  This is equivalent to using get_x and get_y to get the quadratics and setting them directly.  Note that the components for the x quadratic and the y quadratic are interleaved.
	</Function>
</Class>
<Class name='RageDisplay'>
	<Description>
		This singleton is accessible to Lua via <code>DISPLAY</code>.
	</Description>
	<Function name='GetDisplayHeight' return='int' arguments=''>
		Return the height of the display.
	</Function>
	<Function name='GetDisplayWidth' return='int' arguments=''>
		Return the width of the display.
	</Function>
	<Function name='GetFPS' return='int' arguments=''>
		Return the number of frames per second.
	</Function>
	<Function name='GetVPF' return='int' arguments=''>
		Return the VPF.
	</Function>
	<Function name='GetCumFPS' return='int' arguments=''>
		Return the cumulative FPS.
	</Function>
	<Function name='GetDisplaySpecs' return='DisplaySpecs' arguments=''>
		Return an array-like <code>userdata</code> of type <Link class='DisplaySpecs' />,
		which describes the displays configured on the user's machine.
	</Function>
	<Function name='SupportsRenderToTexture' return='bool' arguments=''>
		Return <code>true</code> if the current renderer supports render-to-texture,
		<code>false</code> otherwise.
	</Function>
	<Function name='SupportsFullscreenBorderlessWindow' return='bool' arguments=''>
		Return <code>true</code> if the current renderer/window implementation supports
		a fullscreen borderless-window mode, <code>false</code> otherwise.
	</Function>
</Class>
<Class name='RageFile'>
	<Description>
		These commands require a RageFile handle. You can create one using
		<Link class='RageFileUtil' />.
	</Description>
	<Function name='AtEOF' return='bool' arguments=''>
		Returns <code>true</code> if the current position within the file is the end. (EOF = End of File)
	</Function>
	<Function name='ClearError' return='void' arguments=''>
		Clears the last error message.
	</Function>
	<Function name='Close' return='void' arguments=''>
		Closes the file and releases it from memory.
	</Function>
	<Function name='destroy' return='void' arguments=''>
		Safely deletes the file handle.
	</Function>
	<Function name='Flush' return='' arguments=''>
		Flushes the buffer for the file handle, writing any pending output to disk.
	</Function>
	<Function name='GetError' return='string' arguments=''>
		Gets the last error message and returns it.
	</Function>
	<Function name='GetLine' return='string' arguments=''>
		Gets a line and returns it.
	</Function>
	<Function name='Open' return='bool' arguments='string sPath, int iAccessType'>
		Opens a file at <code>sPath</code> (relative to the StepMania root directory).<br />
		<code>iAccessType</code> can be set to read (<code>1</code>), write (<code>2</code>), stream (<code>4</code>) or flush to disk on close (<code>8</code>).<br />
		These can also be combined with addition. For example, to set up read and write, set <code>iAccessType</code> to <code>3</code> (1+2).
	</Function>
	<Function name='PutLine' return='int' arguments='string s'>
		Puts a new line in the file.
	</Function>
	<Function name='Read' return='string' arguments=''>
		Returns a string containing the entire contents of the file.
	</Function>
	<Function name='ReadBytes' return='string' arguments='int length'>
		Returns <code>length</code> bytes from the RageFile's current position.
	</Function>
	<Function name='Seek' return='int' arguments=''>
		Seeks to a position in the file and returns the new position.
	</Function>
	<Function name='Tell' return='int' arguments=''>
		Returns the current position in the file.
	</Function>
	<Function name='Write' return='int' arguments='string str'>
		Writes a file with the contents of <code>str</code>.
	</Function>
</Class>
<Class name='RageFileManager'>
	<Description>
		This singleton is accessible to Lua via <code>FILEMAN</code>.
	</Description>
	<Function name='Copy' return='bool' arguments='string fromPath, string toPath' since='ITGmania 0.5.1'>
		Copies a file from <code>fromPath</code> to <code>toPath</code>.
		Returns <code>true</code> if the file was copied successfully.
	</Function>
	<Function name='DoesFileExist' return='bool' arguments='string sPath'>
		Returns <code>true</code> if a file exists at <code>sPath</code>.
	</Function>
	<Function name='GetDirListing' return='{string}' arguments='string sPath, bool bOnlyDirs, bool bReturnPathToo'>
		Returns a listing of files from <code>sPath</code>. The last two arguments are optional (and default to false).
	</Function>
	<Function name='GetFileSizeBytes' return='int' arguments='string sPath'>
		Returns a file's size in bytes.
	</Function>
	<Function name='GetHashForFile' return='int' arguments='string sPath'>
		Returns the hash of the file at <code>sPath</code>.
	</Function>
	<Function name='Unzip' return='bool' arguments='string zipPath, string targetPath, int strip' since='ITGmania 0.5.1'>
		Unzips zip file at <code>zipPath</code> to <code>targetPath</code>.<br />
		<code>strip</code> is optional and defaults to <code>0</code>.
		If set to a number larger than <code>0</code>, that many components are removed from the paths of the extracted files. e.g. <code>a/b/c</code> is replaced with <code>b/c</code> when stripping one component or just <code>c</code> when stripping two.<br />
		Returns <code>true</code> if all files were extracted successfully.
	</Function>
</Class>
<Class name='RageInput'>
	<Description>
		This singleton is accessible to Lua via <code>INPUTMAN</code>.
	</Description>
	<Function name='GetDescriptions' return='{string}' arguments=''>
		Returns an array of connected input device descriptions.
	</Function>
</Class>
<Class name='RageQuadratic'>
	<Description>
		If you use Actor:tween(time, "TweenType_Bezier", {a, b, c, d}) to tween an actor, the actor creates a RageQuadratic internally and calls evaluate each frame to set where it is in the tween.
	</Description>
	<Function name='evaluate' return='float' arguments='float t'>
		Evaluates the quadratic at the given t value and returns the result.
	</Function>
	<Function name='get_bezier' return='float,float,float,float' arguments=''>
		Returns the four values that form the quadratic equation.  This function returns multiple values, so you must do something like this to get them:<br />
		a, b, c, d= quadratic:get_bezier()
	</Function>
	<Function name='get_bezier_end' return='float' arguments=''>
		Equivalent to evaluate(1), but faster.
	</Function>
	<Function name='get_bezier_start' return='float' arguments=''>
		Equivalent to evaluate(0), but faster.
	</Function>
	<Function name='get_slope' return='float' arguments='float t'>
		Returns the slope of the curve at the given t value.
	</Function>
	<Function name='set_from_bezier' return='' arguments='float a, float b, float c, float d'>
		Sets the four values that form the quadratic equation.
	</Function>
	<Function name='set_from_cubic' return='' arguments='float a, float b, float c, float d'>
		Sets the four values that form the quadratic equation, treating the arguments as from a cubic equation instead of as from a bezier curve.
	</Function>
</Class>
<Class name='RageSound'>
	<Description>
		See <Link class='ActorSound' /> for loading a sound.
	</Description>
	<Function name='get_length' return='float' arguments=''>
		Returns the length of the sound loaded into this RageSound.  Returns -1 if no sound is loaded.
	</Function>
	<Function name='SetParam' return='void' arguments='string sProperty, float fVal'>
		Actually sets the value of <code>sProperty</code> to <code>fVal</code>. The supported properties depend on how the associated <Link class='ActorSound' /> was loaded.
	</Function>
	<Function name='SetProperty' return='void' arguments='string sProperty, float fVal'>
		Attempts (and typically fails) to set the value of <code>sProperty</code> to <code>fVal</code>. The supported properties depend on how the associated <Link class='ActorSound' /> was loaded.
	</Function>
	<Function name='pitch' return='void' arguments='float fPitch'>
		Sets the pitch to <code>fPitch</code>. The associated <Link class='ActorSound' /> have <code>SupportsRateChanging = true</code> on load.
	</Function>
	<Function name='speed' return='void' arguments='float fSpeed'>
		Sets the speed (that is, the rate at which the sound plays) to <code>fSpeed</code>. The associated <Link class='ActorSound' /> must have <code>SupportsRateChanging = true</code> on load.
	</Function>
	<Function name='volume' return='void' arguments='float fVolume'>
		Sets the volume to <code>fVolume</code>, which is between 0..1.
	</Function>
</Class>
<Class name='RageTexture'>
	<Function name='GetSourceWidth' return='float' arguments=''>
		Returns the source width.
	</Function>
	<Function name='GetSourceHeight' return='float' arguments=''>
		Returns the source height.
	</Function>
	<Function name='GetTextureWidth' return='float' arguments=''>
		Returns the texture width.
	</Function>
	<Function name='GetTextureHeight' return='float' arguments=''>
		Returns the texture height.
	</Function>
	<Function name='GetImageWidth' return='float' arguments=''>
		Returns the image width.
	</Function>
	<Function name='GetImageHeight' return='float' arguments=''>
		Returns the image height.
	</Function>
	<Function name='GetNumFrames' return='int' arguments=''>
		Returns the number of frames in this texture.
	</Function>
	<Function name='GetPath' return='string' arguments=''>
		Returns the path to the texture's file.
	</Function>
	<Function name='GetTextureCoordRect' return='{float}' arguments=''>
		Return the texture coordinate rectangle as <code>{left, top, right, bottom}</code>.
	</Function>
	<Function name='loop' return='void' arguments='bool bLoop'>
		Sets the animation or movie looping to <code>bLoop</code>.
	</Function>
	<Function name='position' return='void' arguments='float fPos'>
		Sets the animation or movie position to <code>fPos</code>.
	</Function>
	<Function name='rate' return='void' arguments='float fRate'>
		Sets the animation or movie playback rate to <code>fRate</code>.
	</Function>
	<Function name='Reload' return='void' arguments=''>
		Reloads the texture.
	</Function>
</Class>
<Class name='RollingNumbers' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sGroupName'>
		Loads the metrics for this RollingNumbers from <code>sGroupName</code>.
	</Function>
	<Function name='targetnumber' return='void' arguments='float f'>
		Sets the target number to <code>f</code>.
	</Function>
</Class>
<Class name='Screen' grouping='Screen'>
	<Description>
		<em>Screen</em> is the base screen class containing common methods that all specialized screens inherit.<br />
		By itself, <em>Screen</em> does not have the layers (underlay, overlay, decorations, in, out, cancel) commonly
		used in theming, so themers designing custom screens typically use <Link class='ScreenWithMenuElements' /> as
		the screen class for such endeavors.
	</Description>
	<Function name='AddInputCallback' return='void' arguments='function callback'>
		This adds the Lua function <code>callback</code> to the list of functions the screen will pass input to, giving Lua access to player input as it occurs.<br />
		When an input event occurs, <code>callback</code> will be passed a table with the details of the event.  <code>callback</code> must return a bool to indicate whether the event was handled.  If <code>callback</code> returns <code>true</code>, the event will not be passed any further.<br />
		This method does not handle localization or different keyboard layouts, so <Link class='ScreenTextEntry' /> is better suited to getting text input from players.<br />
		Be aware that both the screen (as handled by the StepMania engine) and your Lua callbacks will be passed input events, and this can result in undesirable side effects.<br />
		Basic usage example:
<pre><code>
local InputHandler = function( event )
	-- do something cool with the event table in here :)
	-- the details of the event table are documented below

	-- example:
	-- show the GameButton that was most recently pressed/held
	if event.type ~= "InputEventType_Release" then
		SCREENMAN:SystemMessage( event.GameButton )
	end

	return false
end

Def.ActorFrame{
	OnCommand=function(self)
		SCREENMAN:GetTopScreen():AddInputCallback( InputHandler )
	end
}
</code></pre>

Details of the <code>event</code> table:
<pre><code>
{
	-- The "semi-raw" button that was pressed. This is what
	-- the button was mapped to by the keymap settings, without
	-- the conversions that occur when OnlyDedicatedMenuButtons
	--  is true. Will be empty if the button was not mapped.
	button = string,

	-- "InputEventType_FirstPress", "InputEventType_Repeat",
	-- or "InputEventType_Release".
	type = string,

	-- The "cooked" button that was pressed.  This is button with
	-- mapping that occurs when OnlyDedicatedMenuButtons is true
	-- applied.  This is nil for unmapped buttons.
	GameButton = string,

	-- The player that the controller is mapped to, or nil.
	PlayerNumber = PlayerNumber,

	-- The game controller this event was mapped to.
	-- "GameController_1" or "GameController_2", or nil if the event
	-- wasn't mapped to either controller.
	controller = string,

	-- The details of the event.
	DeviceInput = {
		-- The type of device.  The first half of the string will
		-- be "Device_", the second half will be from InputDeviceNames
		-- in RageInputDevice.cpp.
		device = string,

		-- The button that was pressed. The first half of the string
		-- will be "DeviceButton_", the second half will be from InitNames
		-- in RageInputDevice.cpp.
		button = string,

		-- A floating point value for analog input.
		level = float,

		-- Mousewheel input.
		z = float,

		-- Whether the button is down.  This is level with a threshold
		-- and debouncing applied.
		down = bool,

		-- How long ago this input occurred, in seconds.
		ago = float,

		-- True if the device is a joystick.
		is_joystick = bool,

		-- True if the device is a mouse.
		is_mouse = bool
	},

	-- Unknown purpose. SMOnline?
	MultiPlayer = string
}
</code></pre>
	</Function>
	<Function name='GetNextScreenName' return='string' arguments=''>
		Returns the name of the next Screen.
	</Function>
	<Function name='GetPrevScreenName' return='string' arguments=''>
		Returns the name of the previous Screen.
	</Function>
	<Function name='GetScreenType' return='ScreenType' arguments=''>
		Returns the ScreenType for this Screen.
	</Function>
	<Function name='lockinput' return='void' arguments='float f'>
		Locks input for <code>f</code> seconds.
	</Function>
	<Function name='Metric' theme='_fallback' return='string' arguments='string sName'>
		[02 Other.lua] Gets a metric from the current Screen.
	</Function>
	<Function name='PostScreenMessage' return='void' arguments='string sScreenMsg, float fDelay'>
		Posts a message with the text <code>sScreenMsg</code> to the Screen after <code>fDelay</code> seconds.
	</Function>
	<Function name='RemoveInputCallback' return='void' arguments='function callback'>
		This removes the callback from the list.
	</Function>
	<Function name='SetNextScreenName' return='void' arguments='string name'>
		Sets the NextScreen value to name.
	</Function>
	<Function name='SetPrevScreenName' return='void' arguments='string name'>
		Sets the PrevScreen value to name.
	</Function>
	<Function name='String' theme='_fallback' return='string' arguments='string sName'>
		[02 Other.lua] Gets a string from the current Screen in the current language.
	</Function>
</Class>
<Class name='ScreenAttract' grouping='Screen'>
</Class>
<Class name='ScreenEdit' grouping='Screen'>
	<Function name='GetEditState' return='EditState' arguments=''>
		Returns the current <Link class='ENUM' function='EditState' />.
	</Function>
</Class>
<Class name='ScreenEvaluation' grouping='Screen'>
	<Function name='GetStageStats' return='StageStats' arguments=''>
		Returns the current StageStats.
	</Function>
</Class>
<Class name='ScreenGameplay' grouping='Screen'>
	<Function name='begin_backing_out' return='' arguments=''>
		This should behave identically to the normal back button behavior.  This function is for the pause menu to use when the player forfeits or restarts, so that a score isn't saved.
	</Function>
	<Function name='Center1Player' return='bool' arguments=''>
		Returns <code>true</code> if a single <Link class='Player' /> has its NoteField centered using the <code>Center1Player</code> preference.<br />
		Will return <code>false</code> if the current theme has <code>AllowCenter1Player=false</code> under <code>[ScreenGameplay]</code>.<br />
		Notably, this can return <code>false</code> when the player's NoteField is visually centered, as is convention in <Link class='ENUM' function='StyleType'>double style</Link> or <Link class='ENUM' function='StepsType'>Techno_Single8</Link>.<br />
		Refer to the global function <Link class='GLOBAL' function='Center1Player' /> for a somewhat more robust check.
	</Function>
	<Function name='GetDummyPlayerInfo' return='PlayerInfo' arguments='int index'>
		Returns a dummy PlayerInfo for the specified index.
	</Function>
	<Function name='GetHasteRate' return='float' arguments=''>
		Returns the current haste rate.  HasteRate * MusicRate is the current total rate the music is multiplied by.
	</Function>
	<Function name='GetLifeMeter' return='LifeMeter' arguments='PlayerNumber pn'>
		Returns the <Link class='LifeMeter' /> for the specified <Link class='ENUM' function='PlayerNumber' /> <code>pn</code>.
	</Function>
	<Function name='GetNextCourseSong' return='Song' arguments=''>
		Returns the next <Link class='Song' /> in the current <Link class='Course' />.
	</Function>
	<Function name='GetPlayerInfo' return='PlayerInfo' arguments='PlayerNumber pn'>
		Returns the PlayerInfo for player <code>pn</code>.
	</Function>
	<Function name='GetTrueBPS' return='float' arguments='PlayerNumber pn'>
		Returns the current true beats per second for the specified player.<br />
		This takes into account the current music rate and the current haste effect.<br />
		If you are displaying the BPM on ScreenGameplay, this is what you should use to have correct behavior when Haste and/or a music rate mod are in effect.
	</Function>
	<Function name='HasteAddAmounts' return='{float}' arguments='{float}'>
		This is part of the system for controlling how haste behaves. <br />
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/haste.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/haste.txt</a>.
	</Function>
	<Function name='HasteLifeSwitchPoint' return='float' arguments='float'>
		This is part of the system for controlling how haste behaves. <br />
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/haste.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/haste.txt</a>.
	</Function>
	<Function name='HasteTimeBetweenUpdates' return='float' arguments='float'>
		This is part of the system for controlling how haste behaves. <br />
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/haste.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/haste.txt</a>.
	</Function>
	<Function name='HasteTurningPoints' return='{float}' arguments='{float}'>
		This is part of the system for controlling how haste behaves. <br />
		See <a href="https://github.com/itgmania/itgmania/blob/HEAD/Docs/Themerdocs/haste.txt" target="_blank" rel="noopener noreferrer">Docs/Themerdocs/haste.txt</a>.
	</Function>
	<Function name='SetNewScreen' return='void' arguments='string s'>
		Sets the next Screen to be loaded.
	</Function>
	<Function name='IsPaused' return='bool' arguments=''>
		Returns <code>true</code> if the game is paused.
	</Function>
	<Function name='PauseGame' return='void' arguments='bool bPause'>
		Pauses or unpauses the game, depending on the value of <code>bPause</code>.
	</Function>
</Class>
<Class name='ScreenHowToPlay' grouping='Screen'>
	<Function name='GetLifeMeter' return='LifeMeter' arguments=''>
		Returns the LifeMeter.
	</Function>
</Class>
<Class name='ScreenManager'>
	<Description>
		This singleton is accessible to Lua via <code>SCREENMAN</code>.
	</Description>
	<Function name='AddNewScreenToTop' return='void' arguments='string sScreenName, string sMessage'>
		Adds a screen at the top of the screen stack. (<code>sMessage</code> is an optional ScreenMessage posted once the new screen is finished.)
	</Function>
	<Function name='GetTopScreen' return='Screen' arguments=''>
		Gets the screen at the top of the screen stack.
	</Function>
	<Function name='get_input_redirected' return='bool' arguments='PlayerNumber pn'>
		Returns whether the input for the player has been redirected away from the normal screen input function.  Input that has been redirected is only sent to Lua input callbacks.
	</Function>
	<Function name='PlayInvalidSound' return='' arguments=''>
		Plays the invalid sound.
	</Function>
	<Function name='PlayStartSound' return='' arguments=''>
		Plays the start sound.
	</Function>
	<Function name='PlayCoinSound' return='' arguments=''>
		Plays the coin sound.
	</Function>
	<Function name='PlayCancelSound' return='' arguments=''>
		Plays the cancel sound.
	</Function>
	<Function name='PlayScreenshotSound' return='' arguments=''>
		Plays the screenshot sound.
	</Function>
	<Function name='ReloadOverlayScreens' return='void' arguments=''>
		Reloads any loaded overlay screens.
	</Function>
	<Function name='ScreenClassExists' return='bool' arguments='string s'>
		Returns <code>true</code> if screen class <code>s</code> exists.
	</Function>
	<Function name='ScreenIsPrepped' return='bool' arguments='string s'>
		Returns <code>true</code> if screen <code>s</code> is prepared.
	</Function>
	<Function name='SetNewScreen' return='void' arguments='string s'>
		Sets the next screen to <code>s</code>.
	</Function>
	<Function name='set_input_redirected' return='bool' arguments='PlayerNumber pn, bool redir'>
		Sets whether the input for the player has been redirected away from the normal screen input function.  Input that has been redirected is only sent to Lua input callbacks.<br />
		This can be useful when putting a custom menu on a screen, and you want to disable the built in actors while the menu is open.  You can handle input through an <Link class='Screen' function='AddInputCallback'>input callback</Link> until the player closes the menu.
	</Function>
	<Function name='SystemMessage' return='void' arguments='string s'>
		Broadcasts a system message.
	</Function>
</Class>
<Class name='ScreenNameEntryTraditional' grouping='Screen'>
	<Function name='Backspace' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if Player <code>pn</code> backspaced successfully.
	</Function>
	<Function name='EnterKey' return='bool' arguments='PlayerNumber pn, string sKey'>
		Returns <code>true</code> if Player <code>pn</code> was able to add <code>sKey</code> to their name.
	</Function>
	<Function name='Finish' return='bool' arguments='PlayerNumber pn'>
		Attempts to finish Player <code>pn</code> and returns <code>true</code>
		if successful.
	</Function>
	<Function name='GetAnyEntering' return='bool' arguments=''>
		Returns <code>true</code> if anyone is entering their name.
	</Function>
	<Function name='GetAnyStillEntering' return='bool' arguments=''>
		Returns <code>true</code> if anyone is still entering their name.<br />
		(As opposed to those who are Finalized; see <Link function='GetFinalized' />)
	</Function>
	<Function name='GetEnteringName' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if Player <code>pn</code> is entering their name.
	</Function>
	<Function name='GetFinalized' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if Player <code>pn</code> is finished entering their name.
	</Function>
	<Function name='GetSelection' return='string' arguments='PlayerNumber pn'>
		Gets the currently selected letter of Player <code>pn</code>.
	</Function>
</Class>
<Class name='ScreenOptions' grouping='Screen'>
	<Function name='AllAreOnLastRow' return='bool'  arguments=''>
		Returns <code>true</code> if all active players are on the last options row.
	</Function>
	<Function name='FocusedItemEndsScreen' return='bool'  arguments='PlayerNumber pn'>
		Returns <code>true</code> if the specified player is on an items that ends the screen.
	</Function>
	<Function name='GetCurrentRowIndex' return='int' arguments='PlayerNumber pn'>
		Returns the current row that player <code>pn</code> is on. (Was previously <code>GetCurrentRow</code>.)
	</Function>
	<Function name='GetNumRows' return='int' arguments=''>
		Returns the number of rows on the screen.
	</Function>
	<Function name='GetOptionRow' return='OptionRow' arguments='int iRow'>
		Returns the specified OptionRow.
	</Function>
</Class>
<Class name='ScreenPlayerOptions' grouping='Screen'>
	<Function name='GetGoToOptions' return='bool' arguments=''>
		Returns <code>true</code> if we are going to PlayerOptions.
	</Function>
</Class>
<Class name='ScreenProfileLoad' grouping='Screen'>
	<Function name='Continue' return='void' arguments=''>
		Continues to the next screen.
	</Function>
	<Function name='HaveProfileToLoad' return='bool' arguments=''>
		Returns <code>true</code> if there is a profile that can be loaded.
	</Function>
</Class>
<Class name='ScreenProfileSave' grouping='Screen'>
	<Function name='Continue' return='void' arguments=''>
		Continues to the next screen.
	</Function>
	<Function name='HaveProfileToSave' return='bool' arguments=''>
		Returns <code>true</code> if there is a profile that can be saved.
	</Function>
</Class>
<Class name='ScreenSelectMaster' grouping='Screen'>
	<Function name='GetSelectionIndex' return='int' arguments='PlayerNumber pn'>
		Returns player <code>pn</code>'s current selected item as an integer.
	</Function>
</Class>
<Class name='ScreenSelectMusic' grouping='Screen'>
	<Function name='CanOpenOptionsList' return='bool' arguments=''>
		Returns false if the options list is already open or the UseOptionsList metric is false.
	</Function>
	<Function name='GetGoToOptions' return='bool' arguments=''>
		Returns <code>true</code> if the player is going to the options screen.
	</Function>
	<Function name='GetMusicWheel' return='MusicWheel' arguments=''>
		Returns the MusicWheel used on this screen.
	</Function>
	<Function name='OpenOptionsList' return='void' arguments='PlayerNumber pn'>
		Opens the OptionsList for Player <code>pn</code>
	</Function>
	<Function name='setupcoursestagemods' theme='_fallback' return='void' arguments=''>
		[02 StageMods.lua] Sets up modifiers for course modes.
	</Function>
	<Function name='setupmusicstagemods' theme='_fallback' return='void' arguments=''>
		[02 StageMods.lua] Sets up modifiers for non-course modes.
	</Function>
</Class>
<Class name='ScreenSelectProfile' grouping='Screen'>
	<Function name='Cancel' return='void' arguments=''>
		Tells the screen to go to the previous screen.
	</Function>
	<Function name='Finish' return='bool' arguments=''>
		Attempts to finish the screen and returns <code>true</code>
		if successful.
	</Function>
	<Function name='GetProfileIndex' return='int' arguments='PlayerNumber pn'>
		Returns the profile index of the specified Player.
	</Function>
	<Function name='SetProfileIndex' return='bool' arguments='PlayerNumber pn, int iProfileIndex'>
		Sets the profile index of Player <code>pn</code> to <code>iProfileIndex</code>.<br />
		The following values of <code>iProfileIndex</code> have special, hardcoded behavior:<br />
		• <code>-1</code>: join the player and play the theme's start sound effect<br />
		• <code>-2</code>: unjoin the player, unlock their MemoryCard, and unmount their MemoryCard<br />
		• <code>-3</code>: allow the user to play without a local or USB profile (as a guest)
	</Function>
</Class>
<Class name='ScreenTextEntry' grouping='Screen'>
	<Description>
		Using ScreenTextEntry is the preferred way to get text input from players.<br />
		For theming, ScreenTextEntry is unique because it is typically added temporarily to the engine's
		screen stack to be popped off the stack when the player is done entering text.<br />
		As such, it is commonly styled to appear to players as an overlay or modal.<br />
		Basic usage example:
<pre><code>
local args = {
	Question="Do you like Waffles?",
	InitialAnswer="Yeah, we like waffles!",
	MaxInputLength=300,
	OnOK=function(answer)
		-- answer is what the player typed
		local msg = "Your response was: " .. answer
		SCREENMAN:SystemMessage(msg)
	end
}

SCREENMAN:AddNewScreenToTop("ScreenTextEntry")
SCREENMAN:GetTopScreen():Load( args )
</code></pre>
	</Description>
	<Function name='Load' return='void' arguments='TextEntrySettings args'>
		Sets up a ScreenTextEntry's values using <code>args</code>.<br />
		TextEntrySettings is special struct for ScreenTextEntry, and
		as a Lua table, it should contain specific attributes:
<pre><code>
local args = {
	-- ScreenMessage to send on pop
	-- optional, "SM_None" if omitted
	SendOnPop = "",

	-- the question text to display
	Question = "",

	-- initial answer text
	InitialAnswer = "",

	-- Maximum amount of characters
	MaxInputLength = 0,

	-- mask character input (optional)
	Password = false,

	-- validation function
	-- must return boolean and string
	Validate = function(answer, errorStr) end,

	-- function called on ok
	OnOK = function(answer) end,

	-- function called on cancel
	OnCancel = function() end,

	-- Validate appending a character <!-- what does this mean? -quietly -->
	-- must return boolean
	ValidateAppend = function(answer, append) end,

	-- Format answer for display
	-- must return string
	FormatAnswerForDisplay = function(answer) end
}
</code></pre>
	</Function>
</Class>
<Class name='ScreenWithMenuElements' grouping='Screen'>
	<Function name='Cancel' return='void' arguments=''>
		Tells the screen to go to the previous screen.
	</Function>
	<Function name='IsTransitioning' return='bool' arguments=''>
		Returns <code>true</code> if the screen is currently transitioning.
	</Function>
	<Function name='StartTransitioningScreen' return='void' arguments='string sScreenMsg'>
		Tells the screen to go to play its Out transition, and then posts the ScreenMessage <code>sScreenMsg</code>. To go to the next screen, use "SM_GoToNextScreen" as the argument.
	</Function>
	<Function name='SetAllowLateJoin' return='void' arguments='bool'>
		Sets whether the screen allows late joining.  This only works for screens that are just ScreenWithMenuElements, as most derived screens have their own hard coded function for whether late joining is allowed.
	</Function>
</Class>
<Class name='ScreenWithMenuElementsSimple' grouping='Screen'>
</Class>
<Class name='Song'>
	<Function name='GetAllSteps' return='{Steps}' arguments=''>
		Returns an array of all the available <Link class='Steps' /> objects for a <Link class='Song' />.
	</Function>
	<Function name='GetBackgroundPath' return='string' arguments=''>
		Returns the path to the song's background image.<br />
		If the stepartist did not provide a path for a background, this returns <code>nil</code>.
	</Function>
	<Function name='GetBannerPath' return='string' arguments=''>
		Returns the path to the song's banner.<br />
		If the stepartist did not provide a path for a banner, this returns <code>nil</code>.
	</Function>
	<Function name='GetBGChanges' return='table' arguments=''>
		Returns a table with all the data for the song's BGCHANGES line.<br />
		Each element of the table is one change like this:<br />
		<code>{start_beat=1.0, rate=1.0, transition="example", effect="example", file1="example", file2="example", color1="#FFFFFFFF", color2="#FFFFFFFF"}</code>
	</Function>
	<Function name='GetCDImagePath' return='string' arguments=''>
		Returns the path to the song's CD image.<br />
		If the stepartist did not provide a path for a CDImage, this returns <code>nil</code>.
	</Function>
	<Function name='GetCDTitlePath' return='string' arguments=''>
		Gets the path to the CDTitle.<br />
		If the stepartist did not provide a path for a CDTitle, this returns <code>nil</code>.
	</Function>
	<Function name='GetDiscPath' return='string' arguments=''>
		Returns the path to the song's disc image (different from CD, think Pump).
	</Function>
	<Function name='GetDisplayArtist' return='string' arguments=''>
		Returns the displayed artist of the song.
	</Function>
	<Function name='GetDisplayBpms' return='{float}' arguments=''>
		Returns a table of 2 floats containing the display BPMs.
	</Function>
	<Function name='GetDisplayFullTitle' return='string' arguments=''>
		Returns the displayed full title of the song.<br />
		The full title is, at minimum, the main title.
		If the <Link class='Song' function='GetDisplaySubTitle'>subtitle</Link> is not an empty string,
		the full title is main title + " " + subtitle.
	</Function>
	<Function name='GetDisplayMainTitle' return='string' arguments=''>
		Returns the displayed main title of the song.
	</Function>
	<Function name='GetDisplaySubTitle' return='string' arguments=''>
		Returns the displayed subtitle of the song.<br />
		If the stepartist did not provide a subtitle, this returns an empty string.
	</Function>
	<Function name='GetFirstBeat' return='float' arguments=''>
		Returns the first beat of the song.
	</Function>
	<Function name='GetFirstSecond' return='float' arguments=''>
		Returns the first second of the song.
	</Function>
	<Function name='GetGenre' return='string' arguments=''>
		Returns the genre of the song.
	</Function>
	<Function name='GetGroupName' return='string' arguments=''>
		Returns the group name that the song is in.
	</Function>
	<Function name='GetJacketPath' return='string' arguments=''>
		Returns the path to the song's jacket image.
	</Function>
	<Function name='GetLastBeat' return='float' arguments=''>
		Returns the last beat of the song.
	</Function>
	<Function name='GetLastSecond' return='float' arguments=''>
		Returns the last second of the song.
	</Function>
	<Function name='GetLyricsPath' return='string' arguments=''>
		Gets the path to the lyrics.
	</Function>
	<Function name='GetMainTitle' return='string' arguments=''>
		GetDisplayMainTitle checks the ShowNativeLanguage pref and returns the transliterated title is that pref is false.<br />
		GetMainTitle (this function) does not check that pref.  Instead, it directly returns the title, exactly as it is in the #TITLE field in the simfile.
	</Function>
	<Function name='GetMusicPath' return='string' arguments=''>
		Gets the path to the music file.
	</Function>
	<Function name='GetOneSteps' return='Steps' arguments='StepsType st, Difficulty d'>
		Returns a Step object if the StepType and Difficulty exist.
	</Function>
	<Function name='GetOrigin' return='string' arguments=''>
		Gets the Song's origin.
	</Function>
	<Function name='GetPreviewMusicPath' return='string' arguments=''>
		Returns the path to the Song's preview music.  This handles the #PREVIEW tag internally, so it works with songs that use it and songs that don't.
	</Function>
	<Function name='GetPreviewVidPath' return='string' arguments=''>
		Returns the path to the Song's preview video, if it exists. (Returns <code>nil</code> otherwise.)
	</Function>
	<Function name='GetSampleLength' return='float' arguments=''>
		Gets the length of a song's sample time in seconds.
	</Function>
	<Function name='GetSampleStart' return='float' arguments=''>
		Gets the starting position of a song sample in seconds.
	</Function>
	<Function name='GetSongDir' return='string' arguments=''>
		Returns the song's directory.
	</Function>
	<Function name='GetSongFilePath' return='string' arguments=''>
		Returns the songfile path.
	</Function>
	<Function name='GetStageCost' theme='_fallback' return='int' arguments=''>
		[02 Other.lua] Returns the number of stages this song costs.
	</Function>
	<Function name='GetStepsByStepsType' return='{Steps}' arguments='StepsType st'>
		Returns a table of Steps that have StepsType <code>st</code>.
	</Function>
	<Function name='GetStepsSeconds' return='float' arguments=''>
		Returns how long the longest stepchart is in seconds.
	</Function>
	<Function name='GetTimingData' return='TimingData' arguments=''>
		Returns the song's TimingData.
	</Function>
	<Function name='GetTranslitArtist' return='string' arguments=''>
		Returns the transliterated artist of the song.
	</Function>
	<Function name='GetTranslitFullTitle' return='string' arguments=''>
		Returns the transliterated full title of the song, including subtitle.
	</Function>
	<Function name='GetTranslitMainTitle' return='string' arguments=''>
		Returns the transliterated main title of the song.
	</Function>
	<Function name='GetTranslitSubTitle' return='string' arguments=''>
		Returns the transliterated subtitle of the song.
	</Function>
	<Function name='HasStepsTypeAndDifficulty' return='bool' arguments='StepsType st, Difficulty d'>
		Returns <code>true</code> if the song has steps for the specified difficulty in <code>st</code>.
	</Function>
	<Function name='HasAttacks' return='bool' arguments=''>
		Returns <code>true</code> if the song has attacks.
	</Function>
	<Function name='HasBackground' return='bool' arguments=''>
		Returns <code>true</code> if the song has a background.
	</Function>
	<Function name='HasBanner' return='bool' arguments=''>
		Returns <code>true</code> if the song has a banner.
	</Function>
	<Function name='HasBGChanges' return='bool' arguments=''>
		Returns <code>true</code> if the song has BGChanges.
	</Function>
	<Function name='HasCDImage' return='bool' arguments=''>
		Returns <code>true</code> if the song has a CD image.
	</Function>
	<Function name='HasCDTitle' return='bool' arguments=''>
		Returns <code>true</code> if the song has a CDTitle.
	</Function>
	<Function name='HasDisc' return='bool' arguments=''>
		Returns <code>true</code> if the song has a Disc graphic.
	</Function>
	<Function name='HasEdits' return='bool' arguments='StepsType st'>
		Returns <code>true</code> if the song has edits.
	</Function>
	<Function name='HasJacket' return='bool' arguments=''>
		Returns <code>true</code> if the song has a jacket graphic.
	</Function>
	<Function name='HasLyrics' return='bool' arguments=''>
		Returns <code>true</code> if the song has lyrics.
	</Function>
	<Function name='HasMusic' return='bool' arguments=''>
		Returns <code>true</code> if the song has music.
	</Function>
	<Function name='HasPreviewVid' return='bool' arguments=''>
		Returns <code>true</code> if the song has a preview video.
	</Function>
	<Function name='HasSignificantBPMChangesOrStops' return='bool' arguments=''>
		Returns <code>true</code> if the song has significant BPM changes or stops.
	</Function>
	<Function name='HasStepsType' return='bool' arguments='StepsType st'>
		Returns <code>true</code> if the song has the specified StepsType.
	</Function>
	<Function name='IsDisplayBpmConstant' return='bool' arguments=''>
		Returns <code>true</code> if the song's DisplayBPM is constant.
	</Function>
	<Function name='IsDisplayBpmRandom' return='bool' arguments=''>
		Returns <code>true</code> if the song's DisplayBPM is random.
	</Function>
	<Function name='IsDisplayBpmSecret' return='bool' arguments=''>
		Returns <code>true</code> if the song's DisplayBPM is secret.
	</Function>
	<Function name='IsEasy' return='bool' arguments=''>
		Returns <code>true</code> if the song is considered easy.
	</Function>
	<Function name='IsEnabled' return='bool' arguments=''>
		Returns <code>true</code> if the song is enabled.
	</Function>
	<Function name='IsLong' return='bool' arguments=''>
		Returns <code>true</code> if the song meets the criteria for a &quot;Long Version&quot;.
	</Function>
	<Function name='IsMarathon' return='bool' arguments=''>
		Returns <code>true</code> if the song meets the criteria for &quot;Marathon&quot; length.
	</Function>
	<Function name='IsStepsUsingDifferentTiming' return='bool' arguments='Steps s'>
		Returns <code>true</code> if the song and the specified steps have different timing.
	</Function>
	<Function name='IsTutorial' return='bool' arguments=''>
		Returns <code>true</code> if the song only has Beginner steps.
	</Function>
	<Function name='MusicLengthSeconds' return='float' arguments=''>
		Returns the length of the song in seconds.
	</Function>
	<Function name='NormallyDisplayed' return='bool' arguments=''>
		Returns <code>true</code> if the song is normally displayed.
	</Function>
	<Function name='ShowInDemonstrationAndRanking' return='bool' arguments=''>
		Returns <code>true</code> if the song is shown in Demonstration and Ranking.
	</Function>
</Class>
<Class name='SongManager'>
	<Description>
		This singleton is accessible to Lua via <code>SONGMAN</code>.
	</Description>
	<Function name='DoesCourseGroupExist' return='bool' arguments='string sGroup'>
		Returns <code>true</code> if the specified course group exists.
	</Function>
	<Function name='DoesSongGroupExist' return='bool' arguments='string sGroup'>
		Returns <code>true</code> if the specified song group exists.
	</Function>
	<Function name='FindCourse' return='Course' arguments='string sCourse'>
		Returns a Course if one matching <code>sCourse</code> is found.
	</Function>
	<Function name='FindSong' return='Song' arguments='string sSong'>
		Returns a Song if one matching <code>sSong</code> is found.
	</Function>
	<Function name='GetAllCourses' return='{Course}' arguments='bool bIncludeAutogen'>
		Returns an array of all the installed courses.
	</Function>
	<Function name='GetAllSongs' return='{Song}' arguments=''>
		Returns an array of all the installed songs.
	</Function>
	<Function name='GetCourseColor' return='color' arguments='Course c'>
		Returns the course color of Course <code>c</code>.
	</Function>
	<Function name='GetCourseGroupBannerPath' return='string' arguments='string sGroup'>
		Returns the path to the specified course group's banner.
	</Function>
	<Function name='GetCourseGroupNames' return='{string}' arguments=''>
		Returns a table containing all of the course group names.
	</Function>
	<Function name='GetCoursesInGroup' return='{Course}' arguments='string sGroup, bool bIncludeAutogen'>
		Returns a table with all of the courses in the specified group.
	</Function>
	<Function name='GetExtraStageInfo' return='various' arguments='bool b2ndExtra, Style s'>
		Returns the extra stage info (Song, Steps) for the specified Style <code>s</code>. If <code>b2ndExtra</code> is true, it will use the second Extra Stage data instead of the first.
	</Function>
	<Function name='GetNumAdditionalCourses' return='int' arguments=''>
		[Deprecated] Always returns <code>0</code>.
	</Function>
	<Function name='GetNumAdditionalSongs' return='int' arguments=''>
		[Deprecated] Always returns <code>0</code>.
	</Function>
	<Function name='GetNumCourseGroups' return='int' arguments=''>
		Returns the number of course groups.
	</Function>
	<Function name='GetNumCourses' return='int' arguments=''>
		Returns the number of courses.
	</Function>
	<Function name='GetNumSelectableAndUnlockedSongs' return='int' arguments=''>
		Returns the number of selectable and unlocked songs.
	</Function>
	<Function name='GetNumSongGroups' return='int' arguments=''>
		Returns the number of song groups.
	</Function>
	<Function name='GetNumSongs' return='int' arguments=''>
		Returns the number of songs.
	</Function>
	<Function name='GetNumLockedSongs' return='int' arguments=''>
		Returns the number of locked songs, regardless of reason for locking.
	</Function>
	<Function name='GetNumUnlockedSongs' return='int' arguments=''>
		Returns the number of unlocked songs.
	</Function>
	<Function name='GetPopularCourses' return='{Course}' arguments='CourseType ct'>
		Returns a table of popular courses for the specified CourseType.
	</Function>
	<Function name='GetPopularSongs' return='{Song}' arguments=''>
		Returns a table of popular songs.
	</Function>
	<Function name='GetPreferredSortCourses' return='{Course}' arguments='CourseType ct, bool bIncludeAutogen'>
		Returns a table of courses as they'd appear in preferred sort.
	</Function>
	<Function name='GetPreferredSortSongs' return='{Song}' arguments=''>
		Returns a table of songs as they'd appear in preferred sort.
	</Function>
	<Function name='GetRandomCourse' return='Course' arguments=''>
		Returns a random course.
	</Function>
	<Function name='GetRandomSong' return='Song' arguments=''>
		Returns a random song.
	</Function>
	<Function name='GetSongColor' return='color' arguments='Song s'>
		Returns the song color of Song <code>s</code>.
	</Function>
	<Function name='GetSongFromSteps' return='Song' arguments='Steps st'>
		Returns a Song given a set of Steps <code>st</code>.
	</Function>
	<Function name='GetSongGroupBannerPath' return='string' arguments='string sGroup'>
		Returns the path to the specified song group's banner.
	</Function>
	<Function name='GetSongGroupColor' return='color' arguments='string sGroupName'>
		Returns the song group color of <code>sGroupName</code>.
	</Function>
	<Function name='GetSongGroupNames' return='{string}' arguments=''>
		Returns a table containing all of the song group names.
	</Function>
	<Function name='GetSongRank' return='int' arguments='Song s'>
		Returns the rank (popularity) of Song <code>s</code>.
	</Function>
	<Function name='GetSongsInGroup' return='{Song}' arguments='string sGroupName'>
		Returns a table containing all of the songs in group <code>sGroupName</code>.
	</Function>
	<Function name='ShortenGroupName' return='string' arguments='string sGroupName'>
		Returns the shortened group name (based on entries in Translations.xml).
	</Function>
	<Function name='SetPreferredCourses' return='void' arguments='string sListName, bool bIsAbsolute'>
		By default, loads preferred courses from <code>{theme}/Other/SongManager sListName.txt</code>.
		(New since ITGmania 0.6.0) If the optional argument <code>bIsAbsolute</code> is set, instead treats
		sListName as an absolute path instead of loading it from the Theme's <code>Other</code> directory.
	</Function>
	<Function name='SetPreferredSongs' return='void' arguments='string sListName, bool bIsAbsolute'>
		By default, loads preferred songs from <code>{theme}/Other/SongManager sListName.txt</code>.
		(New since ITGmania 0.6.0) If the optional argument <code>bIsAbsolute</code> is set, instead treats
		sListName as an absolute path instead of loading it from the Theme's <code>Other</code> directory.
	</Function>
	<Function name='SongToPreferredSortSectionName' return='string' arguments='Song s'>
		Returns the preferred sort section name for the specified Song.
	</Function>
	<Function name='WasLoadedFromAdditionalCourses' return='bool' arguments='Course c'>
		[Deprecated] Always returns <code>false</code>.
	</Function>
	<Function name='WasLoadedFromAdditionalSongs' return='bool' arguments='Song s'>
		[Deprecated] Always returns <code>false</code>.
	</Function>
</Class>
<Class name='SongOptions'>
	<Description>
		See the description for PlayerOptions.  The functions follow the same design.
	</Description>
	<Function name='AutosyncSetting' return='AutosyncType' arguments='AutosyncType type'>
	</Function>
	<Function name='AssistClap' return='bool' arguments='bool b'>
	</Function>
	<Function name='AssistMetronome' return='bool' arguments='bool b'>
	</Function>
	<Function name='StaticBackground' return='bool' arguments='bool b'>
	</Function>
	<Function name='RandomBGOnly' return='bool' arguments='bool b'>
	</Function>
	<Function name='SaveScore' return='bool' arguments='bool b'>
	</Function>
	<Function name='SaveReplay' return='bool' arguments='bool b'>
	</Function>
	<Function name='MusicRate' return='float' arguments='float rate'>
		Limited to the range 0 &lt; rate &lt;= 3 because speeds greater than 3 are likely to crash.
	</Function>
	<Function name='Haste' return='float' arguments='float h'>
		A multiplier for the haste system.  Limited to the range -1 to 1.
	</Function>
</Class>
<Class name='SongPosition'>
	<Function name='GetCurBPS' return='float' arguments=''>
		Returns the current beats per second.
	</Function>
	<Function name='GetDelay' return='bool' arguments=''>
		Returns <code>true</code> if a Delay is active.
	</Function>
	<Function name='GetFreeze' return='bool' arguments=''>
		Returns <code>true</code> if a Freeze is active.
	</Function>
	<Function name='GetMusicSeconds' return='float' arguments=''>
		<!-- todo -->
	</Function>
	<Function name='GetMusicSecondsVisible' return='float' arguments=''>
		<!-- todo -->
	</Function>
	<Function name='GetSongBeat' return='float' arguments=''>
		<!-- todo -->
	</Function>
	<Function name='GetSongBeatNoOffset' return='float' arguments=''>
		<!-- todo -->
	</Function>
	<Function name='GetSongBeatVisible' return='float' arguments=''>
		<!-- todo -->
	</Function>
	<Function name='GetWarpBeginRow' return='int' arguments=''>
		Returns the row where a warp appears.
	</Function>
	<Function name='GetWarpDestination' return='float' arguments=''>
		Returns the warp destination length.
	</Function>
</Class>
<Class name='Sprite' grouping='Actor'>
	<Description>
		<em>Sprite</em> actors can be used to display images and video.  If you want to load a png as part of your UI,
		or animate a visual effect from a sprite sheet, or play a video file, <em>Sprite</em> is what you're looking for.<br />
		<br />
		You can initialize <em>Sprite</em>s with a filepath to the graphic asset using their <code>Texture</code> attribute.
<pre><code>
local spr = Def.Sprite{
	Texture="path/to/mycoolimage.png"
}
</code></pre>
	Frame-based animated sprites can be initialized with the <code>Frames</code> attribute.
<pre><code>
local spr = Def.Sprite{
	Texture="path/to/Spikes 6x3.png",
	Frames=Sprite.LinearFrames(18, 1)
}
</code></pre>

	</Description>
	<Function name='GetAnimationLengthSeconds' return='float' arguments=''>
		Returns the length of the animation in seconds.
	</Function>
	<Function name='GetDecodeMovie' return='bool' arguments=''>
		Gets whether the Sprite should call the decode function for its texture during updates.
	</Function>
	<Function name='GetNumStates' return='int' arguments=''>
		Return the number of states this Sprite has.
	</Function>
	<Function name='GetState' return='int' arguments=''>
		Returns the Sprite's current state (frame number in a multi-frame sprite).
	</Function>
	<Function name='GetTexture' return='RageTexture' arguments=''>
		Returns the Sprite's texture.
	</Function>
	<Function name='LinearFrames' theme='_fallback' return='table' arguments='int iNumFrames, float fSeconds'>
		[02 Sprite.lua] Returns a <code>Frames</code> table consisting of <code>iNumFrames</code> frames lasting for a total of <code>fSeconds</code> seconds.<br />
		This function is not a member function and should be used as <code>Frames = Sprite.LinearFrames( 5, 2.6 )</code>.
	</Function>
	<Function name='Load' return='void' arguments='string sPath'>
		If <code>sPath</code> is <code>nil</code>, then unload the texture. Otherwise, load the texture at path <code>sPath</code>.
	</Function>
	<Function name='LoadBackground' return='void' arguments='string sPath'>
		Load the song background texture at <code>sPath</code>.
	</Function>
	<Function name='LoadBanner' return='void' arguments='string sPath'>
		Load the song banner texture at <code>sPath</code>.
	</Function>
	<Function name='LoadFromCached' return='void' arguments='string sType, string sPath'>
		Loads the image of type <code>sType</code> from the cache based on <code>sPath</code>.
		Internal types: "Banner", "Background", "CDTitle", "Jacket", "CDImage" and "Disc".
	</Function>
	<Function name='LoadFromCurrentSongBackground' theme='_fallback' return='void' arguments=''>
		[02 Sprite.lua] Loads the background from the current Song or the first Trail entry.
	</Function>
	<Function name='LoadFromSongBackground' theme='_fallback' return='void' arguments='Song song'>
		[02 Sprite.lua] Load the texture for <code>song</code>'s background.
	</Function>
	<Function name='LoadFromSongBanner' theme='_fallback' return='void' arguments='Song song'>
		[02 Sprite.lua] Load the texture for <code>song</code>'s banner.
	</Function>
	<Function name='SetCustomImageRect' return='void' arguments='float fLeft, float fTop, float fRight, float fBottom'>
		Sets the custom image rectangle. (Works in image pixel space.)
	</Function>
	<Function name='SetCustomPosCoords' return='void' arguments='float ulx, float uly, float llx, float lly, float lrx, float lry, float urx, float ury'>
		Sets custom offsets for the corners of the Sprite.  Coordinates are paired,
		corner order is upper left, lower left, lower right, upper right.
	</Function>
	<Function name='StopUsingCustomPosCoords' return='void' arguments=''>
		Turns off the custom pos coords for the sprite.
	</Function>
	<Function name='SetDecodeMovie' return='' arguments='bool decode'>
		Sets whether the Sprite should call the decode function for its texture during updates.
	</Function>
	<Function name='SetEffectMode' return='void' arguments='EffectMode mode'>
		Set the <Link class='ENUM' function='EffectMode' /> to <code>mode</code>.
	</Function>
	<Function name='SetSecondsIntoAnimation' return='void' arguments='float fSeconds'>
		Sets the number of seconds into the animation to <code>fSeconds</code>.
	</Function>
	<Function name='SetStateProperties' return= 'void' arguments='table properties'>
		Sets the properties of the states of the sprite.  The properties table is identical to the "Frames" table that can be put in the sprite when calling Def.Sprite.<br />
		Example:
<pre><code>
{
	{ Frame=0, Delay=0.333, {0, 0}, {.25, .25} },
	{ Frame=1, Delay=0.333, {0, 0}, {.25, .25} },
	{ Frame=2, Delay=0.333, {0, 0}, {.25, .25} },
	{ Frame=3, Delay=0.333, {0, 0}, {.25, .25} },
}
</code></pre>
		<code>Frame</code> is optional, defaulting to 0.<br />
		<code>Delay</code> is optional, defaulting to 0.<br />
		The two tables are optional upper left and lower right corners of the fraction of the frame to use.  The example makes the sprite only use the upper left corner of each frame.<br />
		Simpler example:
<pre><code>
{
	{Frame=0, Delay=0.333},
	{Frame=1, Delay=0.333},
	{Frame=2, Delay=0.333},
	{Frame=3, Delay=0.333}
}
</code></pre>
		This example makes the sprite use the whole of each frame.
	</Function>
	<Function name='SetTexture' return='void' arguments='RageTexture texture'>
		Set the texture to <code>texture</code>.
	</Function>
	<Function name='addimagecoords' return='void' arguments='float fX, float fY'>
		<!-- XXX: how does this work? -->
	</Function>
	<Function name='customtexturerect' return='void' arguments='float fLeft, float fTop, float fRight, float fBottom'>
		Allows the themer to set a custom texture rectangle that effects the way the texture is drawn.
	</Function>
	<Function name='get_use_effect_clock_for_texcoords' return='bool' arguments=''>
		Returns true if the sprite is using the effect clock for texcoordvelocity.
	</Function>
	<Function name='loop' theme='_fallback' return='void' arguments='bool bLoop'>
		[02 Sprite.lua] Call <Link class='RageTexture' function='loop'><code>RageTexture:loop</code></Link><code>( bLoop )</code> on the texture.
	</Function>
	<Function name='position' theme='_fallback' return='void' arguments='float fPos'>
		[02 Sprite.lua] Call <Link class='RageTexture' function='position'><code>RageTexture:position</code></Link><code>( fPos )</code> on the texture.
	</Function>
	<Function name='rate' theme='_fallback' return='void' arguments='float fRate'>
		[02 Sprite.lua] Call <Link class='RageTexture' function='rate'><code>RageTexture:rate</code></Link><code>( fRate )</code> on the texture.
	</Function>
	<Function name='scaletoclipped' return='void' arguments='float fWidth, float fHeight'>
		Scale the Sprite to width <code>fWidth</code> and height <code>fHeight</code> clipping if the dimensions do not match.
	</Function>
	<Function name='setstate' return='void' arguments='int iNewState'>
		Set the Sprite's state to <code>iNewState</code>.
	</Function>
	<Function name='set_use_effect_clock_for_texcoords' return='' arguments='bool use'>
		If <code>use</code> is true, then the sprite will use the effect clock for texcoordvelocity.
	</Function>
	<Function name='stretchtexcoords' return='void' arguments='float fX, float fY'>
		<!-- XXX: What does this do? -->
	</Function>
	<Function name='texcoordvelocity' return='void' arguments='float fVelX, float fVelY'>
		Set the texture coordinate velocity which controls how the Sprite changes as it animates.  A velocity of 1 makes the texture scroll all the way once per second.
	</Function>
	<!-- sm-ssc addons -->
	<Function name='CropTo' return='void' arguments='float fWidth, float fHeight'>
		Crops the Sprite to <code>fWidth</code>x<code>fHeight</code>.
	</Function>
	<Function name='cropto' theme='_fallback' return='void' arguments='float fWidth, float fHeight'>
		[01 alias.lua] Alias for CropTo.
	</Function>
	<Function name='SetAllStateDelays' return='void' arguments='float fRate'>
		Sets all the state delays to <code>fRate</code>. Useful for Sprites that need to change by BPM (e.g. Tran from DDR 5th Mix, the cube from DS EuroMix 2).
	</Function>
</Class>
<Class name='StageStats'>
	<Function name='AllFailed' return='bool' arguments=''>
		Returns <code>true</code> if everyone failed.
	</Function>
	<Function name='GaveUp' return='bool' arguments=''>
		Returns <code>true</code> if any player has given up on the song.
	</Function>
	<Function name='GetEarnedExtraStage' return='EarnedExtraStage' arguments=''>
		Returns the <Link class='ENUM' function='EarnedExtraStage'>EarnedExtraStage</Link> value.
	</Function>
	<Function name='GetGameplaySeconds' return='float' arguments=''>
		Returns the number of seconds played.
	</Function>
	<Function name='GetMultiPlayerStageStats' return='PlayerStageStats' arguments='MultiPlayer mp'>
		Returns the PlayerStageStats of multiplayer <code>mp</code>.
	</Function>
	<Function name='GetPlayedSongs' return='{Song}' arguments='' />
	<Function name='GetPlayerStageStats' return='PlayerStageStats' arguments='PlayerNumber pn'>
		Returns the PlayerStageStats of player <code>pn</code>.
	</Function>
	<Function name='GetPossibleSongs' return='{Song}' arguments='' />
	<Function name='GetStage' return='Stage' arguments=''>
		Returns the <Link class='ENUM' function='Stage'>Stage</Link> value.
	</Function>
	<Function name='GetStageIndex' return='int' arguments=''>
		Returns the stage index.
	</Function>
	<Function name='OnePassed' return='bool' arguments=''>
		Returns <code>true</code> if at least one person passed.
	</Function>
	<Function name='PlayerHasHighScore' return='bool' arguments='PlayerNumber pn'>
		Returns <code>true</code> if player <code>pn</code> has a high score.
	</Function>
</Class>
<Class name='StatsManager'>
	<Description>
		This singleton is accessible to Lua via <code>STATSMAN</code>.
	</Description>
	<Function name='GetAccumPlayedStageStats' return='StageStats' arguments=''>
		Returns the accumulated played StageStats.
	</Function>
	<Function name='GetBestFinalGrade' return='Grade' arguments=''>
		Returns the best final grade.
	</Function>
	<Function name='GetBestGrade' return='Grade' arguments=''>
		Returns the best grade.
	</Function>
	<Function name='GetCurStageStats' return='StageStats' arguments=''>
		Returns the current StageStats.
	</Function>
	<Function name='GetFinalEvalStageStats' return='Grade' arguments='PlayerNumber pn'>
		Returns player <code>pn</code>'s final grade.
	</Function>
	<Function name='GetFinalGrade' return='Grade' arguments='PlayerNumber pn'>
		Returns player <code>pn</code>'s final grade.
	</Function>
	<Function name='GetPlayedStageStats' return='StageStats' arguments='int iAgo'>
		Get the StageStats from <code>iAgo</code> rounds ago.
	</Function>
	<Function name='GetStagesPlayed' return='int' arguments=''>
		Returns the number of stages played.
	</Function>
	<Function name='GetWorstGrade' return='Grade' arguments=''>
		Returns the worst grade.
	</Function>
	<Function name='Reset' return='void' arguments=''>
		Resets the stats.
	</Function>
</Class>
<Class name='Steps'>
	<Function name='GetAuthorCredit' return='string' arguments=''>
		Returns the author that made that particular Steps pattern.
	</Function>
	<Function name='GetChartName' return='string' arguments=''>
		Returns the Steps chart name.
	</Function>
	<Function name='GetChartStyle' return='string' arguments=''>
		Returns the Chart Style for this Steps.
	</Function>
	<Function name='GetDescription' return='string' arguments=''>
		Returns the Steps description.
	</Function>
	<Function name='GetDifficulty' return='Difficulty' arguments=''>
		Returns the Steps difficulty.
	</Function>
	<Function name='GetDisplayBpms' return='{float}' arguments=''>
		Returns a table with the minimum and maximum values from the DisplayBPM.
	</Function>
	<Function name='GetDisplayBPMType' return='DisplayBPM' arguments=''>
		Returns the DisplayBPM type.
	</Function>
	<Function name='GetFilename' return='string' arguments=''>
		Returns the Steps filename from the Cache.
	</Function>
	<Function name='GetHash' return='unsigned' arguments=''>
		Returns a hash of the Steps.
	</Function>
	<Function name='GetMeter' return='int' arguments=''>
		Returns the numerical difficulty of the Steps.
	</Function>
	<Function name='HasAttacks' return='bool' arguments=''>
		Returns <code>true</code> if the Steps has any attacks.
	</Function>
	<Function name='HasSignificantTimingChanges' return='bool' arguments=''>
		Returns <code>true</code> if the Steps pattern has significant timing changes.
	</Function>
	<Function name='GetRadarValues' return='RadarValues' arguments='PlayerNumber pn'>
		Returns the complete list of RadarValues for player <code>pn</code>. Use <Link class='RadarValues' function='GetValue' /> to grab a specific value.
	</Function>
	<Function name='GetStepsType' return='StepsType' arguments=''>
		Returns the Steps type.
	</Function>
	<Function name='GetTimingData' return='TimingData' arguments=''>
		Returns the TimingData for the Steps.
	</Function>
	<Function name='IsAnEdit' return='bool' arguments=''>
		Returns <code>true</code> if the Steps are an edit.
	</Function>
	<Function name='IsAPlayerEdit' return='bool' arguments=''>
		Returns <code>true</code> if the Steps are a player edit (loaded from a profile).
	</Function>
	<Function name='IsAutogen' return='bool' arguments=''>
		Returns <code>true</code> if the steps were automatically generated.
	</Function>
	<Function name='IsDisplayBpmConstant' return='bool' arguments=''>
		Returns <code>true</code> if the DisplayBPM is constant.
	</Function>
	<Function name='IsDisplayBpmRandom' return='bool' arguments=''>
		Returns <code>true</code> if the DisplayBPM is random.
	</Function>
	<Function name='IsDisplayBpmSecret' return='bool' arguments=''>
		Returns <code>true</code> if the DisplayBPM is secret.
	</Function>
	<Function name='PredictMeter' return='float' arguments=''>
		Returns the predicted meter for this Step.
	</Function>
	<Function name='UsesSplitTiming' return='bool'  arguments=''>
		Returns <code>true</code> if the Steps use different <code>TimingData</code> from the Song.
	</Function>
</Class>
<Class name='StepsDisplay' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sMetricsGroup'>
		Loads the StepsDisplay commands from the Metrics in group <code>sMetricsGroup</code>.
	</Function>
	<Function name='SetFromGameState' return='void' arguments='PlayerNumber pn'>
		Sets the StepsDisplay from the GameState using Player <code>pn</code>.
	</Function>
	<Function name='SetFromSteps' return='void' arguments='PlayerNumber pn, Steps pSteps'>
		Sets the StepsDisplay based on Steps <code>pSteps</code>.
	</Function>
	<Function name='SetFromStepsTypeAndMeterAndDifficulty' return='void' arguments='StepsType st, int iMeter, Difficulty dc'>
		Sets the StepsDisplay based on the passed in StepsType, <code>iMeter</code>, and Difficulty.
	</Function>
	<Function name='SetFromTrail' return='void' arguments='Trail pTrail'>
		Sets the StepsDisplay based on Trail <code>pTrail</code>.
	</Function>
</Class>
<Class name='Style'>
	<Function name='ColumnsPerPlayer' return='int' arguments=''>
		Returns the number of total tracks per player this Style contains (e.g. 4 for dance-versus, but 8 for dance-double).
	</Function>
	<Function name='GetName' return='string' arguments=''>
		Returns the name of the Style.
	</Function>
	<Function name='GetStepsType' return='StepsType' arguments=''>
		Returns the StepsType for this Style.
	</Function>
	<Function name='GetStyleType' return='StyleType' arguments=''>
		Returns the StyleType for this Style.
	</Function>
	<Function name='GetColumnInfo' return='{int, int, string}' arguments='PlayerNumber pn, int column'>
		Returns a table containing the <code>Track</code>, <code>XOffset</code>, and <code>Name</code> of the column.<br />
		For example, calling <code>GAMESTATE:GetCurrentStyle():GetColumnInfo('PlayerNumber_P1', 2)</code> when the current
		game is dance will return <code>{Track=2, XOffset=-32, Name="Down"}</code>.<br />
		Calling <code>GAMESTATE:GetCurrentStyle():GetColumnInfo('PlayerNumber_P1', 1)</code> when the current
		game is pump will return <code>{Track=1, XOffset=-96, Name="DownLeft"}</code>.<br />
	</Function>
	<Function name='GetColumnDrawOrder' return='int' arguments='int column'>
		Returns the draw order of the column.
	</Function>
	<Function name='GetWidth' return='float' arguments='PlayerNumber pn'>
		Returns the width of the notefield for the given player with this style.
	</Function>
	<Function name='LockedDifficulty' return='bool' arguments=''>
		Returns <code>true</code> if this style locks the difficulty for both players.
	</Function>
	<Function name='NeedsZoomOutWith2Players' return='bool' arguments=''>
		[Deprecated] Always returns <code>false</code>.
	</Function>
</Class>
<Class name='TapNote'>
	<Function name='GetTapNoteType' return='TapNoteType' arguments=''>
		Returns the <Link class='TapNoteType' /> of the Tap Note.
	</Function>
	<Function name='GetTapNoteSubType' return='TapNoteSubType' arguments=''>
		Returns the <Link class='TapNoteSubType' /> of the Tap Note.
	</Function>
	<Function name='GetTapNoteSource' return='TapNoteSource' arguments=''>
		Returns the <Link class='TapNoteSource' /> of the Tap Note.
	</Function>
	<Function name='GetTapNoteResult' return='TapNoteResult' arguments=''>
		Returns the <Link class='TapNoteResult' /> of the Tap Note.
	</Function>
	<Function name='GetPlayerNumber' return='PlayerNumber' arguments=''>
		Returns the <Link class='PlayerNumber' /> of the Tap Note. Relevant for routine steps.
	</Function>
	<Function name='GetAttackModifiers' return='string' arguments=''>
		Returns the Attack Modifiers of the Tap Note.
	</Function>
	<Function name='GetAttackDuration' return='float' arguments=''>
		Returns the Attack Duration of the Tap Note in seconds.
	</Function>
	<Function name='GetKeysoundIndex' return='int' arguments=''>
		Returns the Keysound Index of the Tap Note.
	</Function>
	<Function name='GetHoldDuration' return='float' arguments=''>
		Returns the Hold Duration of the Tap Note in beats.
	</Function>
	<Function name='GetHoldNoteResult' return='HoldNoteResult' arguments=''>
		Returns the <Link class='HoldNoteResult' /> of the Tap Note.
	</Function>
</Class>
<Class name='TapNoteResult'>
	<Function name='GetTapNoteScore' return='TapNoteScore' arguments=''>
		Returns the <Link class='TapNoteScore' /> of the Tap Note.
	</Function>
	<Function name='GetTapNoteOffset' return='float' arguments=''>
		Returns the TapNotOffset of the Tap Note.
	</Function>
	<Function name='GetHidden' return='bool' arguments=''>
		Returns true if the Tap Note was judged with a result that would stop it from drawing.
	</Function>
	<Function name='GetHeld' return='bool' arguments='' since='ITGmania 0.5.1'>
		Returns whether the input for the Tap Note was ever held during
		the judgment interval. Useful to distinguish a normal miss from
		a held miss.
	</Function>
</Class>
<Class name='HoldNoteResult'>
	<Function name='GetHoldNoteScore' return='HoldNoteScore' arguments=''>
		Returns the <Link class='HoldNoteScore' /> of the Hold Note.
	</Function>
	<Function name='GetLife' return='float' arguments=''>
		Returns the life of the Hold Note.
	</Function>
	<Function name='GetOverlappedTime' return='float' arguments=''>
		Returns the amount of time the hold has overlapped the target.
	</Function>
	<Function name='GetLastHeldBeat' return='float' arguments=''>
		Returns the last beat the Hold Note was held.
	</Function>
	<Function name='GetCheckpointsHit' return='int' arguments=''>
		Returns the number of checkpoints hit.
	</Function>
	<Function name='GetCheckpointsMissed' return='int' arguments=''>
		Returns the number of checkpoints missed.
	</Function>
	<Function name='GetHeld' return='bool' arguments=''>
		Returns true if the note was initiated and is being held.
	</Function>
	<Function name='GetActive' return='bool' arguments=''>
		Returns true if the note was initiated.
	</Function>
</Class>
<Class name='HttpRequestFuture'>
	<Function name='Cancel' return='void' arguments='' since='ITGmania 0.5.1'>
                Cancels the running HTTP request. Does nothing if the request
                has already completed.
	</Function>
</Class>
<Class name='TextBanner' grouping='Actor'>
	<Function name='Load' return='void' arguments='string sMetricsGroup'>
		Loads the TextBanner from the specified metrics group.
	</Function>
	<Function name='SetFromSong' return='void' arguments='Song s'>
		Loads the TextBanner's child elements from a <Link class='Song' />.
	</Function>
	<Function name='SetFromString' return='void' arguments='string sDisplayTitle, string sTranslitTitle, string sDisplaySubTitle, string sTranslitSubTitle, string sDisplayArtist, string sTranslitArtist'>
		Loads the TextBanner's child elements from strings.
	</Function>
</Class>
<Class name='ThemeManager'>
	<Description>
		This singleton is accessible to Lua via <code>THEME</code>.
	</Description>
	<Function name='DoesLanguageExist' return='bool' arguments='string langName'>
		Returns <code>true</code> if the specified language exists in the current theme.
	</Function>
	<Function name='DoesThemeExist' return='bool' arguments='string themeName'>
		Returns <code>true</code> if the specified theme exists.
	</Function>
	<Function name='GetAbsolutePath' theme='_fallback' return='string' arguments='string sPath'>
		[02 Utilities.lua] Returns the absolute path of a file in the theme.
	</Function>
	<Function name='GetCurLanguage' return='string' arguments=''>
		Returns the current language.
	</Function>
	<Function name='GetCurrentThemeDirectory' return='string' arguments=''>
		Returns the theme's current directory.
	</Function>
	<Function name='GetCurThemeName' return='string' arguments=''>
		Returns the name of the current theme.
	</Function>
	<Function name='GetMetric' return='string' arguments='string ClassName, string Element'>
		Returns the value of <code>Element</code> in <code>Class</code> from metrics.ini.
	</Function>
	<Function name='GetMetricNamesInGroup' return='{string}' arguments='string ClassName'>
		Returns the names of all elements in <code>Class</code> from metrics.ini.
	</Function>
	<Function name='GetNumSelectableThemes' return='int' arguments=''>
		Returns the number of selectable themes.
	</Function>
	<Function name='GetPathB' return='string' arguments='string ClassName, string Element'>
		Returns the path of <code>ClassName Element</code> in the BGAnimations folder.
	</Function>
	<Function name='GetPathF' return='string' arguments='string ClassName, string Element'>
		Returns the path of an element in the Fonts folder.
	</Function>
	<Function name='GetPathG' return='string' arguments='string ClassName, string Element'>
		Returns the path of an element in the Graphics folder.
	</Function>
	<Function name='GetPathInfoB' return='string, string, string' arguments='string ClassName, string Element'>
		Returns three strings: BGAnimation ResolvedPath, MatchingMetricsGroup, MatchingElement.<br />
		Used in <Link class='GLOBAL' function='LoadFallbackB'>LoadFallbackB</Link> in themes/_fallback/02 Other.lua<br />
		Example: <code>local path, metrics_group, element = THEME:GetPathInfoB("ScreenTitleJoin", "decorations")</code>
	</Function>
	<Function name='GetPathO' return='string' arguments='string ClassName, string Element'>
		Returns the path of an element in the Other folder.
	</Function>
	<Function name='GetPathS' return='string' arguments='string ClassName, string Element'>
		Returns the path of an element in the Sounds folder.
	</Function>
	<Function name='GetSelectableThemeNames' return='{string}' arguments=''>
		Returns a table of selectable theme directories.
	</Function>
	<Function name='GetString' return='string' arguments='string ClassName, string Element'>
		Returns the value of <code>Element</code> in <code>Class</code> for the currently loaded language.
	</Function>
	<Function name='GetStringNamesInGroup' return='{string}' arguments='string ClassName'>
		Returns the names of all elements in <code>Class</code> for the currently loaded language.
	</Function>
	<Function name='GetThemeAuthor' return='string' arguments=''>
		Returns the author of the current theme or "[unknown author]".
	</Function>
	<Function name='GetThemeDisplayName' return='string' arguments=''>
		Returns the display name of the current theme.
	</Function>
	<Function name='get_theme_fallback_list' return='{ string }' arguments=''>
		Returns a table of strings showing what themes the current theme falls back on.<br />
		For example, if the current theme is in a folder named "Home", and the "Home" theme falls back on the "default" theme, which itself falls back on the "_fallback" theme, the table would be:
<pre><code>
{
	[1]="Home",
	[2]="default",
	[3]="_fallback"
}</code></pre>
	</Function>
	<Function name='HasMetric' return='bool' arguments='string section, string value'>
		Returns <code>true</code> if the theme has the specified metric.
	</Function>
	<Function name='HasString' return='bool' arguments='string section, string value'>
		Returns <code>true</code> if the theme has the specified string.
	</Function>
	<Function name='IsThemeSelectable' return='bool' arguments='string theme'>
		Returns <code>true</code> if the specified theme is selectable.
	</Function>
	<Function name='ReloadMetrics' return='void' arguments=''>
		Reloads the current theme's metrics.
	</Function>
	<Function name='RunLuaScripts' return='void' arguments='string sMask'>

	</Function>
	<Function name='SetTheme' return='void' arguments='string theme'>
		Changes the current theme.<br />
		After the theme changes, the screen specified by the Common::AfterThemeChangeScreen metric will be loaded.<br />
		The Common::InitialScreen metric will be used if Common::AfterThemeChangeScreen is blank or invalid.
	</Function>
</Class>
<Class name='TimingData'>
	<Description>
		GetBPMsAndTimes, GetStops, GetDelays, GetLabels, GetWarps, GetCombos, GetTimeSignatures, GetTickcounts, GetFakes, GetScrolls, and GetSpeeds all have two different modes.<br />
		If <code>false</code> (or nothing) is the argument to these functions, they return tables of strings.  The strings are numbers separated by '='.<br />
		If the argument is <code>true</code>, they return tables of tables, and the inner tables contain numbers as described for each function.<br />
		The first form is kept as the default to maintain compatibility with older themes.  The second form can be convenient because there is no need to transform the string into a table of numbers before using it.<br />
		Example of first form:
<pre><code>
local bpms_and_times = timing_data:GetBPMsAndTimes()
for i, s in ipairs(bpms_and_times) do
	local bpm_and_time = split("=", s)
	bpms_and_times[i] = {tonumber(bpm_and_time[1]), tonumber(bpm_and_time[2])}
end
-- do something with the bpms and times now that they are numbers.
</code></pre>
		<br />
		Example of second form:
<pre><code>
local bpms_and_times = timing_data:GetBPMsAndTimes(true)
-- do something with the bpms and times because they are already numbers.
</code></pre>
	</Description>
	<Function name='GetActualBPM' return='{float}' arguments=''>
		Returns the minimum and maximum BPM of the song in a table (in that order).
	</Function>
	<Function name='GetBeatFromElapsedTime' return='float' arguments='float fElapsedTime'>
		Returns the beat from <code>fElapsedTime</code>.
	</Function>
	<Function name='GetBPMAtBeat' return='float' arguments='float fBeat'>
		Returns the BPM at <code>fBeat</code>.
	</Function>
	<Function name='GetBPMs' return='{float}' arguments=''>
		Returns a table of the BPMs as floats.
	</Function>
	<Function name='GetBPMsAndTimes' return='{{float, float}}' arguments=''>
		Returns a table of the BPMs and the times they happen as tables.  The first value is the beat.  The second value is the bpm.
	</Function>
	<Function name='GetElapsedTimeFromBeat' return='float' arguments='float fBeat'>
		Returns the elapsed time from <code>fBeat</code>.
	</Function>
	<Function name='GetStops' return='{{float, float}}' arguments=''>
		Returns a table of the Stops and the times they happen as tables.  The first value is the beat.  The second value is the length.
	</Function>
	<Function name='GetDelays' return='{{float, float}}' arguments=''>
		Returns a table of the Delays and the times they happen as tables.  The first value is the beat.  The second value is the length.
	</Function>
	<Function name='GetLabels' return='{{float, string}}' arguments=''>
		Returns a table of the Labels and the times they happen as tables.  The first value is the beat.  The second value is the label.
	</Function>
	<Function name='GetWarps' return='{{float, float}}' arguments=''>
		Returns a table of the Warps and the times they happen as tables.  The first value is the beat.  The second value is the number of beats to warp over.
	</Function>
	<Function name='GetCombos' return='{{float, float, float}}' arguments=''>
		Returns a table of the Combos and the times they happen as tables.  The first value is the beat.  The second value is the combo.  The third value is the miss combo.
	</Function>
	<Function name='GetTimeSignatures' return='{{float, float, float}}' arguments=''>
		Returns a table of the Time Signatures and the times they happen as tables.  The first value is the beat.  The second value is the numerator.  The third value is the denominator.
	</Function>
	<Function name='GetTickcounts' return='{{float, float}}' arguments=''>
		Returns a table of the Tickcounts and the times they happen as tables.  The first value is the beat.  The second value is the number of ticks per beat.
	</Function>
	<Function name='GetFakes' return='{{float, float}}' arguments=''>
		Returns a table of the Fakes and the times they happen as tables.  The first value is the beat.  The second value is the number of beats to not judge.
	</Function>
	<Function name='GetScrolls' return='{{float, float}}' arguments=''>
		Returns a table of the Scrolls and the times they happen as tables.  The first value is the beat.  The second value is the scroll rate ratio.
	</Function>
	<Function name='GetSpeeds' return='{{float, float}}' arguments=''>
		Returns a table of the Speeds and the times they happen as tables.  The first value is the beat.  The second value is the scroll rate ratio.  The third value is the length of time to fully activate.  The fourth value is the unit of activation (0 for beats, 1 for seconds).
	</Function>
	<Function name='HasBPMChanges' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains BPM changes.
	</Function>
	<Function name='HasDelays' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains delays.
	</Function>
	<Function name='HasNegativeBPMs' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains any BPM changes with a negative BPM.
	</Function>
	<Function name='HasStops' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains stops.
	</Function>
	<Function name='HasWarps' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains warps.
	</Function>
	<Function name='HasFakes' return='bool' arguments=''>
		returns <code>true</code> if the TimingData contains fake segments.
	</Function>
	<Function name='HasSpeedChanges' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains speed scrolling changes.
	</Function>
	<Function name='HasScrollChanges' return='bool' arguments=''>
		Returns <code>true</code> if the TimingData contains general scrolling changes.
	</Function>
</Class>
<Class name='Trail'>
	<Function name='ContainsSong' return='bool' arguments='Song s'>
		Returns <code>true</code> if song <code>s</code> is in the Trail.
	</Function>
	<Function name='GetArtists' return='{string}' arguments=''>
		Returns an array with all the artists in the Trail.
	</Function>
	<Function name='GetDifficulty' return='Difficulty' arguments=''>
		Returns the Trail's difficulty.
	</Function>
	<Function name='GetLengthSeconds' return='float' arguments=''>
		Returns the length of this Trail in seconds.
	</Function>
	<Function name='GetTrailEntries' return='{TrailEntry}' arguments=''>
		Returns a table of TrailEntry items.
	</Function>
	<Function name='GetMeter' return='int' arguments=''>
		Returns the Trail's difficulty rating.
	</Function>
	<Function name='GetRadarValues' return='RadarValues' arguments=''>
		Returns the Trail's RadarValues.
	</Function>
	<Function name='GetStepsType' return='StepsType' arguments=''>
		Returns the Trail's StepsType.
	</Function>
	<Function name='GetTotalMeter' return='int' arguments=''>
		Returns the Trail's total meter
	</Function>
	<Function name='GetTrailEntry' return='TrailEntry' arguments='int iEntry'>
		Returns the TrailEntry at index <code>iEntry</code>.
	</Function>
	<Function name='IsSecret' return='bool' arguments=''>
		Returns <code>true</code> if any of the Trail entries are secret.
	</Function>
</Class>
<Class name='TrailEntry'>
	<Function name='GetNormalModifiers' return='string' arguments=''>
		Returns a string of modifiers used in this TrailEntry.
	</Function>
	<Function name='GetSong' return='Song' arguments=''>
		Returns the Song used in this TrailEntry.
	</Function>
	<Function name='GetSteps' return='Steps' arguments=''>
		Returns the Steps used in this TrailEntry.
	</Function>
	<Function name='IsSecret' return='bool' arguments=''>
		(why'd I think this was a good idea when we have <Link class='CourseEntry' function='IsSecret' />?)
	</Function>
</Class>
<Class name='UnlockEntry'>
	<Function name='code' return='void' arguments='string m_sEntryID'>
		Sets the UnlockEntry's ID to <code>m_sEntryID</code>.
	</Function>
	<Function name='course' return='void' arguments='string sCourseName'>
		Sets the UnlockEntry's course to <code>sCourseName</code>.<br />
		Example: <code>course,"Driven"</code>
	</Function>
	<Function name='GetCode' return='string' arguments=''>
		Returns the code for this unlock.
	</Function>
	<Function name='GetCourse' return='Course' arguments=''>
		Returns the Course for this unlock.
	</Function>
	<Function name='GetDescription' return='string' arguments=''>
		Returns the unlock description.
	</Function>
	<Function name='GetRequirement' return='UnlockRequirement' arguments=''>
		Returns the UnlockRequirement.
	</Function>
	<Function name='GetRequirePassHardSteps' return='bool' arguments=''>
		Returns <code>true</code> if the UnlockEntry requires you to pass Hard steps.
	</Function>
	<Function name='GetRequirePassChallengeSteps' return='bool' arguments=''>
		Returns <code>true</code> if the UnlockEntry requires you to pass Challenge steps.
	</Function>
	<Function name='GetSong' return='Song' arguments=''>
		Returns the Song related to the UnlockEntry.
	</Function>
	<Function name='GetStepByStepsType' return='Steps' arguments=''>
		Get all of the steps locked based on StepsType.
	</Function>
	<Function name='GetStepOfAllTypes' return='{Steps}' arguments=''>
		Get all of the steps locked based on difficulty.
	</Function>
	<Function name='GetUnlockRewardType' return='UnlockRewardType' arguments=''>
		Returns the UnlockRewardType for this entry.
	</Function>
	<Function name='IsLocked' return='bool' arguments=''>
		Returns <code>true</code> if the UnlockEntry is locked.
	</Function>
	<Function name='mod' return='void' arguments='string sModifier'>
		Sets the UnlockEntry's modifier to <code>sModifier</code>.
	</Function>
	<Function name='require' return='void' arguments='UnlockRequirement ut, float m_fRequirement'>
		Sets the requirement for this unlock to <code>m_fRequirement</code>.
	</Function>
	<Function name='requirepasshardsteps' return='void' arguments=''>
		Makes the UnlockEntry require passing Hard steps.
	</Function>
	<Function name='requirepasschallengesteps' return='void' arguments=''>
		Makes the UnlockEntry require passing Challenge steps.
	</Function>
	<Function name='roulette' return='void' arguments=''>
		Makes the UnlockEntry hide in Roulette.
	</Function>
	<Function name='song' return='void' arguments='string sSongName'>
		Sets the UnlockEntry's song to <code>sSongName</code>. <code>sSongName</code> also requires the group.<br />
		Example: <code>song,"In The Groove/Pandemonium"</code>
	</Function>
	<Function name='steps' return='void' arguments='string sSong, string sSteps'>
		Sets the UnlockEntry to unlock a specified song's steps.<br />
		Example: <code>steps,"In The Groove/Pandemonium","expert"</code>
	</Function>
	<Function name='steps_type' return='void' arguments='string sSong, string sSteps, string sStepsType'>
		Sets the UnlockEntry to unlock a specified song's stepstype.
	</Function>
</Class>
<Class name='UnlockManager'>
	<Description>
		This singleton is accessible to Lua via <code>UNLOCKMAN</code>.
	</Description>
	<Function name='AnyUnlocksToCelebrate' return='bool' arguments=''>
		Returns <code>true</code> if there are any unlocks to celebrate.
	</Function>
	<Function name='FindEntryID' return='string' arguments='string sName'>
		Returns the associated EntryID.
	</Function>
	<Function name='GetNumUnlocked' return='int' arguments=''>
		Returns the number of unlocked items.
	</Function>
	<Function name='GetNumUnlocks' return='int' arguments=''>
		Returns the number of all unlock items, regardless of status.
	</Function>
	<Function name='GetPoints' return='float' arguments='UnlockRequirement ur' >
		Returns the number of points for the machine profile based on the specified UnlockRequirement.
	</Function>
	<Function name='GetPointsForProfile' return='float' arguments='Profile p, UnlockRequirement ur' >
		Returns the number of points for the specified profile based on the specified UnlockRequirement.
	</Function>
	<Function name='GetPointsUntilNextUnlock' return='float' arguments='UnlockRequirement ut'>
		Returns the number of points until the next unlock.
	</Function>
	<Function name='GetSongsUnlockedByEntryID' return='{Song}' arguments='string sEntryID'>
		Returns a table of songs unlocked by UnlockEntry <code>sEntryID</code>.
	</Function>
	<Function name='GetStepsUnlockedByEntryID' return='{Steps}' arguments='string sEntryID'>
		Returns a table of steps unlocked by UnlockEntry <code>sEntryID</code>.
	</Function>
	<Function name='GetUnlockEntry' return='UnlockEntry' arguments='int iIndex'>
		Returns the UnlockEntry at <code>iIndex</code>.
	</Function>
	<Function name='GetUnlockEntryIndexToCelebrate' return='int' arguments=''>
		Returns the UnlockEntry index to celebrate.
	</Function>
	<Function name='PreferUnlockEntryID' return='void' arguments='string sUnlockEntryID'>
		Sets the preferred Song/Course to the specified <code>sUnlockEntryID</code>
	</Function>
	<Function name='UnlockEntryID' return='void' arguments='string sUnlockEntryID'>
		Unlocks an entry by ID.
	</Function>
	<Function name='UnlockEntryIndex' return='void' arguments='int iUnlockEntryID'>
		Unlocks an entry by index.
	</Function>
	<Function name='IsSongLocked' return='int' arguments='Song pSong'>
		Determines if a song is locked by any means. The number returned determines
		how the song is locked.
	</Function>
</Class>
<Class name='WebSocketHandle'>
	<Function name='Close' return='void' arguments='' since='ITGmania 0.5.1'>
                Closes the WebSocket connection. No further reconnections will be attempted.
	</Function>
	<Function name='Send' return='bool' arguments='string data, bool binary' since='ITGmania 0.5.1'>
		Sends a message containing <code>data</code>.
		If the optional <code>binary</code> argument is set to <code>true</code>, the message is marked as binary.<br />
		Returns whether the message was sent successfully.
	</Function>
</Class>
<Class name='WheelBase'>
	<Function name='GetCurrentIndex' return='int' arguments=''>
		Returns the wheel's current index.
	</Function>
	<Function name='GetNumItems' return='int' arguments=''>
		Returns the total number of items in the wheel.
	</Function>
	<Function name='GetSelectedType' return='WheelItemDataType' arguments=''>
		Returns the WheelItemDataType of the selected item.
	</Function>
	<Function name='GetWheelItem' return='WheelItemBase' arguments='int iIndex'>
		Returns the WheelItem at index <code>iIndex</code>.
	</Function>
	<Function name='IsLocked' return='bool' arguments=''>
		Returns <code>true</code> if the wheel is locked.
	</Function>
	<Function name='IsSettled' return='bool' arguments=''>
		Returns <code>true</code> if the wheel is settled/stopped moving.
	</Function>
	<Function name='Move' return='void' arguments='int n'>
		Moves the wheel by <code>n</code>.
	</Function>
	<Function name='SetOpenSection' return='void' arguments='string sSection'>
		Attempts to set the open section to <code>sSection</code>.
	</Function>
</Class>
<Class name='WheelItemBase'>
	<Function name='GetColor' return='color' arguments=''>
		Returns the color of this wheel item.
	</Function>
	<Function name='GetText' return='string' arguments=''>
		Returns the text of this wheel item.
	</Function>
	<Function name='GetType' return='WheelItemDataType' arguments=''>
		Returns the type of this wheel item.
	</Function>
	<Function name='IsLoaded' return='bool' arguments=''>
		Returns whether the wheel item has been loaded yet.  If this function returns false, calling any other WheelItemBase function will result in an error. <br />
		A specific case where this is known to happen is commands that trigger on CurrentSongChanged because the music wheel clears the current song before it finishes loading if the current song is longer than the number of stages remaining.
	</Function>
</Class>
<Class name='WorkoutGraph' grouping='Actor'>
	<Function name='SetFromCurrentWorkout' return='void' arguments=''>
		Sets the WorkoutGraph from the current Workout.
	</Function>
	<Function name='SetFromGameStateAndHighlightSong' return='void' arguments='int iSongIndex'>
		Sets the WorkoutGraph from GameState and song index <code>iSongIndex</code>.
	</Function>
</Class>
</Classes>

<!-- Enums -->
<Enums>
<Description>
	StepMania's enums are exposed to Lua as global tables.  Note that although the enum values start at 0, these global Lua tables are indexed starting at 1.<br />
	Functions that require enums as arguments will accept either the string constant or number value.<br />
	For example, <Link class='GameState' function='SetPreferredDifficulty' /> accepts a <Link class='ENUM' function='PlayerNumber' /> and <Link class='ENUM' function='Difficulty' /> as arguments.
	Each of these is valid way to set P1's preferred difficulty to hard:<br />
<pre><code>
-- using strings
GAMESTATE:SetPreferredDifficulty( "PlayerNumber_P1", "Difficulty_Hard" )
-- using values
GAMESTATE:SetPreferredDifficulty( 0, 3 )
-- using global Lua tables
GAMESTATE:SetPreferredDifficulty( PlayerNumber[1], Difficulty[4] )
</code></pre>
	It's worth pointing out that, as tables, these enums can be iterated over using <Link class='GLOBAL' function='ipairs' /> or <Link class='GLOBAL' function='ivalues' />.  This can be handy when you want to perform some action on every value in an enum; for example, displaying a graphic for each Difficulty.
<pre><code>
-- Difficulty is a global Lua table that corresponds with
-- the StepMania engine's Difficulty enum
for i, diff in ipairs(Difficulty) do

	-- append a file extension to create a string like
	-- "Difficulty_Beginner.png"
	local filename = diff .. ".png"

	-- load files like "Difficulty_Beginner.png",
	-- "Difficulty_Easy.png", etc. from the directory 
	-- where this code is run, and offset each vertically
	af[#af+1] = LoadActor( filename )..{
		InitCommand=function(self) self:y( i * 100 ) end
	}
end
</code></pre>
</Description>
<Enum name='BlendMode'>
	<Description>
		Blending modes. See <Link class='Actor' function='blend' />.
	</Description>
</Enum>
<Enum name='HorizAlign'>
	<Description>
		Horizontal alignment. See <Link class='Actor' function='horizalign' />.
	</Description>
</Enum>
<Enum name='ProfileSortOrder'>
	<Description>
		Possible values for the <code>ProfileSortOrder</code> preference.  The engine initially sorts profiles based on their <Link class='ENUM' function='ProfileType' />, showing <code>Guest</code> profiles first, then <code>Normal</code>, then <code>Test</code>.  <code>ProfileSortOrder</code> allows additional subsorts to be configured.<br />
		<code>Priority</code> allows users to manually sort profiles using the <code>Priority=</code> key in each profile's Type.ini file.  New profiles are created with <code>Priority=0</code>.  A profile with <code>Priority=0</code> will appear before any profiles with <code>Priority=1</code> which will appear before any profiles with <code>Priority=2</code> and so on.<br />
		<code>Recent</code> automatically sorts profiles in the order they are used, with the most recently used profile appearing first.
	</Description>
</Enum>
<Enum name='VertAlign'>
	<Description>
		Vertical alignment. See <Link class='Actor' function='vertalign' />.
	</Description>
</Enum>
</Enums>

<!-- Singletons -->
<Singletons>
<Description>
	The StepMania engine uses singletons internally when it needs only one instance of a class.<br />
	Each singleton has a class name (e.g. RageDisplay, NoteSkinManager, etc.) from the C++ engine, and a similar (but different) userdata name available to Lua (e.g. <code>DISPLAY</code>, <code>NOTESKIN</code>, etc.).<br />
Simple examples:
<pre><code>
-- use GameState's singleton to get the current song
local song = GAMESTATE:GetCurrentSong()

-- use ScreenManager's singleton to briefly show text on-screen
SCREENMAN:SystemMessage("hello from Lua!")
</code></pre>
</Description>
</Singletons>

<!--
	put descriptions for "grouping"s down here
	these aren't part of the spec in Lua.xsd, so they won't appear
	when Lua.xml is viewed in a web browser, but can still be used
	by external API doc applications until ExportLuaInformation
	is fixed/expanded.
 -->

<!-- Actors -->
<Actors>
	<Description>
		Actors are the basic building blocks used to script content for StepMania.  When the player
		sees and interacts with something on-screen, like a menu system or a 3D model of a dancing
		character, that <em>something</em> is an actor.<br />
		<br />
		Each of these actors is available to Lua as a function within the global <code>Def</code> table.<br />
		<br />
		As functions, each actor accepts a table as an argument, and that table contains attributes
		and commands that define how the actor will behave when rendered by the StepMania engine.<br />
		<br />
		Basic examples:
<pre><code>
-- Sprite, Sound, and Quad are each Actors with unique specializations
local spr = Def.Sprite{ Texture="./path/to/image.png" }
local snd = Def.Sound{ File="./path/to/soundeffect.ogg" }
local sqr = Def.Quad{ InitCommand=function(self) self:xy(80, 100) end }

-- common convention is to not use () with actor
-- functions, but syntax like this is also valid
local args = { Texture="./path/to/image.png" }
local spr  = Def.Sprite(args)
</code></pre>
	</Description>
</Actors>

<Screens>
	<Description>
		For players, screens are individual units of a game cycle that they interact with. Most players
		understand there is a place where gameplay occurs (ScreenGameplay) that is different than the
		place used to choose the next song (ScreenSelectMusic).<br />
		<br />
		For scripters, screens are collections of distinct actors wrapped up in a single
		ActorFrame.  That ActorFrame is the "screen" that players interact with.<br />
		<br />
		To be available in a theme, screens must be defined in that theme's metrics.ini file with the
		desired name between square brackets like <code>[ScreenTitleJoin]</code> or
		<code>[ScreenPlayerOptions]</code>.<br />
		<br />
		The StepMania engine defines many, many classes of screens, each with unique specialization
		not directly available to Lua. For now, the screens documented here are only those with methods
		available to Lua.
	</Description>
</Screens>

</Documentation>
