NarumiSTG_HyperSnowDrifter/docs/New Functions Documentation...

5053 lines
126 KiB
Plaintext

ALL ARGUMENTS ARE FLOATS UNLESS STATED OTHERWISE
"T": Any type
----------------------------------------------> [Base Script] <----------------------------------------------
--------------------------------> New Constants <--------------------------------
M_PI = pi ; 3.14159265358979323846
M_PI_2 = M_PI / 2 ; 1.57079632679489661923
M_PI_4 = M_PI / 4 ; 0.78539816339744830962
M_PI_X2 = M_PI * 2 ; 6.28318530717958647693
M_PI_X4 = M_PI * 4 ; 12.5663706143591729539
M_1_PI = 1 / M_PI ; 0.31830988618379067154
M_2_PI = 2 / M_PI ; 0.63661977236758134308
M_SQRTPI = sqrt(M_PI) ; 1.772453850905516027298
M_1_SQRTPI = 1 / sqrt(M_PI) ; 0.56418958354775628695
M_2_SQRTPI = 2 / sqrt(M_PI) ; 1.128379167095512573896
M_SQRT2 = sqrt(2) ; 1.4142135623730950488
M_SQRT2_2 = sqrt(2) / 2 ; 0.7071067811865475244
M_SQRT2_X2 = sqrt(2) * 2 ; 2.8284271247461900976
M_E = e ; 2.71828182845904523536
M_LOG2E = log2(e) ; 1.44269504088896340736
M_LOG10E = log10(e) ; 0.43429448190325182765
M_LN2 = ln(2) ; 0.69314718055994530942
M_LN10 = ln(10) ; 2.30258509299404568402
M_PHI = (1 + sqrt(5)) / 2 ; 1.61803398874989484821
M_1_PHI = 1 / M_PHI ; 0.6180339887498948482
INF = infinity float
NAN = NaN float
--------------------------------> Basic Operations <--------------------------------
__DEBUG_BREAK
Description:
Triggers a debug break. For developers.
wait
Arguments:
1) (int) frame
Description:
Pauses the execution for the given amount of frames.
Much faster than loop(n){yield;}
typeof
Arguments:
1) (T) value
Returns:
(int) type
Description:
Returns the type of the given value.
Example:
-60i -> VAR_INT
920 -> VAR_FLOAT
false -> VAR_BOOL
"str" -> VAR_STRING
[8, 0, 2] -> VAR_ARRAY
ftypeof
Arguments:
1) (T) value
Returns:
(int) type
Description:
Returns the root type of the given value.
Example:
920 -> VAR_FLOAT
false -> VAR_BOOL
"str" -> VAR_CHAR
[8, 0, 2] -> VAR_FLOAT
[[["a"]]] -> VAR_CHAR
resize
Arguments:
1) (T[]) array
2) (int) new size
Returns:
(T[]) result
Description:
Resizes the given array.
The array must not be a null array.
resize (Overload)
Arguments:
1) (T[]) array
2) (int) new size
3) (T) fill value
Returns:
(T[]) result
Description:
Overloaded with 3 arguments.
Resizes the given array.
If the new size is larger than the old size, newly inserted elements will be assigned the fill value.
Unless the array is a null array, the fill value's type must be convertible to the array's element type.
insert
Arguments:
1) (T[]) array
2) (int) insert position
3) (T) value
Returns:
(T[]) result
Description:
Inserts the given value into the given position of the array.
Insertion method is "insert-before".
contains
Arguments:
1) (T[]) array
2) (T) value
Returns:
(bool) result
Description:
Checks if the given value is present as an element of the given array.
replace
Arguments:
1) (T[]) array
2) (T) replace from
2) (T) replace to
Returns:
(T[]) result
Description:
Replaces all occurences of the given element with the other in the array.
remove
Arguments:
1) (T[]) array
2) (T) value
Returns:
(T[]) result
Description:
Removes all occurences of the given element in the array.
--------------------------------> Type Casting <--------------------------------
as_int
Arguments:
1) (T) value
Returns:
(int) result
Description:
Returns the given value casted to an int value.
as_float
Arguments:
1) (T) value
Returns:
(float) result
Description:
Returns the given value casted to a float value.
as_bool
Arguments:
1) (T) value
Returns:
(bool) result
Description:
Returns the given value casted to a bool value.
as_char
Arguments:
1) (T) value
Returns:
(char) result
Description:
Returns the given value casted to a char value.
as_int_array
Arguments:
1) (T[]) array
Returns:
(int[]) result
Description:
Casts array elements to ints, then returns the result.
Casting is recursive.
Example:
as_int_array([[true, true], [false, true]]); //-> [[1, 1], [0, 1]]
as_float_array
Arguments:
1) (T[]) array
Returns:
(float[]) result
Description:
Casts array elements to floats, then returns the result.
Casting is recursive.
as_bool_array
Arguments:
1) (T[]) array
Returns:
(bool[]) result
Description:
Casts array elements to bools, then returns the result.
Casting is recursive.
as_char_array
Arguments:
1) (T[]) array
Returns:
(char[]) result
Description:
Casts array elements to chars, then returns the result.
Casting is recursive.
Not an alias of ToString.
as_x_array
Arguments:
1) (T[]) array
2) (const) type
Returns:
(T[]) result
Description:
Casts array elements to the given type, then returns the result.
Supported types:
VAR_INT
VAR_FLOAT
VAR_BOOL
VAR_CHAR
Casting is recursive.
--------------------------------> Bitwise Operations <--------------------------------
bit_not
Arguments:
1) (int) value
Returns:
(int) result
Description:
Performs a bitwise NOT operation.
bit_and
Arguments:
1) (int) value 1
2) (int) value 2
Returns:
(int) result
Description:
Performs a bitwise AND operation.
bit_or
Arguments:
1) (int) value 1
2) (int) value 2
Returns:
(int) result
Description:
Performs a bitwise OR operation.
bit_xor
Arguments:
1) (int) value 1
2) (int) value 2
Returns:
(int) result
Description:
Performs a bitwise XOR operation.
bit_left
Arguments:
1) (int) value
2) (int) shift factor
Returns:
(int) result
Description:
Performs a bitwise left shift operation.
bit_right
Arguments:
1) (int) value
2) (int) shift factor
Returns:
(int) result
Description:
Performs a bitwise right shift operation.
--------------------------------> Float Utilities <--------------------------------
Float_Classify
Arguments:
1) x
Returns:
(const) result
Description:
Classifies the given float value.
Possible return values:
- FLOAT_TYPE_ZERO ; Value is either +0 or -0.
- FLOAT_TYPE_NORMAL ; Value is a normal float.
- FLOAT_TYPE_SUBNORMAL ; Value is a subnormal float. (https://en.wikipedia.org/wiki/Subnormal_number)
- FLOAT_TYPE_INFINITY ; Value is either +infinity or -infinity.
- FLOAT_TYPE_NAN ; Value is not-a-number.
Float_IsNan
Arguments:
1) x
Returns:
(bool) result
Description:
Returns true if the given float is NaN.
Float_IsInf
Arguments:
1) x
Returns:
(bool) result
Description:
Returns true if the given float is +infinity or -infinity.
Float_GetSign
Arguments:
1) x
Returns:
(float) sign
Description:
Returns +1.0 if the given float is positive, and -1.0 if the given float is negative.
Float_CopySign
Arguments:
1) x
2) y
Returns:
(float) result
Description:
Copies the sign of x to y, and returns the result.
--------------------------------> Maths <--------------------------------
clamp
Arguments:
1) x
2) lower bound
3) upper bound
Returns:
(float) result
Description:
Returns x clamped between the specified range.
log2
Arguments:
1) x
Returns:
(float) result
Description:
Returns base-2 logarithm of x.
logn
Arguments:
1) x
2) base
Returns:
(float) result
Description:
Returns base-n logarithm of x.
erf
Arguments:
1) x
Returns:
(float) result
Description:
Returns the error function value of x.
erf(x) = (2/sqrt(pi)) * integral(0, x, "e^(-t^2) dt")
gamma
Arguments:
1) x
Returns:
(float) result
Description:
Returns the gamma function value of x.
gamma(z + 1) = integral(0, infinity, "(x^z)(e^(-x)) dx")
exp
Arguments:
1) value
Returns:
(float) result
Description:
Returns e (Euler's number) raised to the power of x.
sqrt
Arguments:
1) x
Returns:
(float) result
Description:
Returns the square root of x.
Much faster than pow(x, 0.5).
cbrt
Arguments:
1) x
Returns:
(float) result
Description:
Returns the cube root of x.
Equivalent to (x ^ (1/3)).
nroot
Arguments:
1) x
2) root
Returns:
(float) result
Description:
Returns the nth root of x.
Equivalent to pow(x, 1 / root).
hypot
Arguments:
1) a
2) b
Returns:
(float) result
Description:
Returns the hypotenuse of the triangle formed by the two given values.
hypot(a, b) = sqrt(a * a + b * b)
distance
Arguments:
1) x1
2) y1
3) x2
4) y2
Returns:
(float) result
Description:
Returns distance between the given two points.
distance(x1, y1, x2, y2) = hypot(x1 - x2, y1 - y2)
distancesq
Arguments:
1) x1
2) y1
3) x2
4) y2
Returns:
(float) result
Description:
Returns square of the distance between the given two points.
distancesq(x1, y1, x2, y2) = (x1 - x2)^2 + (y1 - y2)^2
dottheta
Arguments:
1) x1
2) y1
3) x2
4) y2
Returns:
(float) result (degrees)
Description:
Returns angle (in degrees) between the given two points.
dottheta(x1, y1, x2, y2) = atan2(y2 - y1, x2 - x1)
rdottheta
Arguments:
1) x1
2) y1
3) x2
4) y2
Returns:
(float) result (radians)
Description:
Returns angle (in radians) between the given two points.
rdottheta(x1, y1, x2, y2) = ratan2(y2 - y1, x2 - x1)
--------------------------------> Trigonometry and Angular Maths <--------------------------------
sincos
Arguments:
1) angle
Returns:
(float[2]) [sin(angle), cos(angle)]
rsin
Arguments:
1) angle
Returns:
(float) result
Description:
sin() for radians input.
rcos
Arguments:
1) angle (radians)
Returns:
(float) result
Description:
cos() for radians input.
rtan
Arguments:
1) angle (radians)
Returns:
(float) result
Description:
tan() for radians input.
rsincos
Arguments:
1) angle (radians)
Returns:
(float[2]) result
Description:
sincos() for radians input.
rasin
Arguments:
1) value
Returns:
(float) result
Description:
asin() for radians output.
racos
Arguments:
1) value
Returns:
(float) result
Description:
acos() for radians output.
ratan
Arguments:
1) y
2) x
Returns:
(float) result
Description:
atan() for radians output.
ratan2
Arguments:
1) value
Returns:
(float) result
Description:
atan2() for radians output.
ToDegrees
Arguments:
1) angle
Returns:
(float) result
Description:
Converts the given angle to degrees.
ToRadians
Arguments:
1) angle
Returns:
(float) result
Description:
Converts the given angle to radians.
NormalizeAngle
Arguments:
1) angle (degrees)
Returns:
(float) result
Description:
Normalizes the given angle. (Range = [0, 360))
NormalizeAngleR
Arguments:
1) angle (radians)
Returns:
(float) result
Description:
Normalizes the given angle. (Range = [0, 2pi))
AngularDistance
Arguments:
1) angle from (degrees)
2) angle to (degrees)
Returns:
(float) result
Description:
Calculates the shortest angular distance between the given angles. (Range = [-180, 180))
AngularDistanceR
Arguments:
1) angle from (radians)
2) angle to (radians)
Returns:
(float) result
Description:
Calculates the shortest angular distance between the given angles. (Range = [-pi, pi))
ReflectAngle
Arguments:
1) ray angle (degrees)
2) surface angle (degrees)
Returns:
(float) result
Description:
Calculates the given ray's angle of reflection upon a surface of the given angle. (Range = [0, 360))
ReflectAngleR
Arguments:
1) ray angle (radians)
2) surface angle (radians)
Returns:
(float) result
Description:
Calculates the given ray's angle of reflection upon a surface of the given angle. (Range = [0, 2pi))
--------------------------------> Interpolation <--------------------------------
For the functions in this section, refer to these Desmos graph plot.
"Basic" interpolations -> https://www.desmos.com/calculator/m8dnz348cq
Bezier interpolations -> https://www.desmos.com/calculator/q1uptzx8ti
Interpolate_Linear
Arguments:
1) a
2) b
3) x
Returns:
IF a, b are not arrays
(float) result
ELSE
(float[]) result array
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is linear.
Direct formula is (a + (b - a) * (x))
Represented by the red graph.
When interpolating between two arrays, they must be of the same size.
Interpolate_Smooth
Arguments:
1) a
2) b
3) x
Returns:
IF a, b are not arrays
(float) result
ELSE
(float[]) result array
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is first-order smoothstep curve.
Direct formula is (a + (b - a) * (x^2 * (3 - 2 * x)))
Represented by the blue graph.
When interpolating between two arrays, they must be of the same size.
Interpolate_Smoother
Arguments:
1) a
2) b
3) x
Returns:
IF a, b are not arrays
(float) result
ELSE
(float[]) result array
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is second-order smoothstep curve.
Direct formula is (a + (b - a) * (x^3 * (x * (x * 6 - 15) + 10)))
Represented by the green graph.
When interpolating between two arrays, they must be of the same size.
Interpolate_Accelerate
Arguments:
1) a
2) b
3) x
Returns:
IF a, b are not arrays
(float) result
ELSE
(float[]) result array
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is parabolic.
Direct formula is (a + (b - a) * (x^2))
Represented by the purple graph.
When interpolating between two arrays, they must be of the same size.
Interpolate_Decelerate
Arguments:
1) a
2) b
3) x
Returns:
IF a, b are not arrays
(float) result
ELSE
(float[]) result array
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is inverse parabolic.
Direct formula is (a + (b - a) * (1 - (1 - x)^2))
Represented by the black graph.
When interpolating between two arrays, they must be of the same size.
Interpolate_Modulate
Arguments:
1) a
2) b
3) c
4) x
Returns:
(float) result
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is sine.
Direct formula is (a + (b - a) * (x + (rsin(2pi * x) / (2pi)) * c))
Represented by the dotted red graph.
Interpolate_Overshoot
Arguments:
1) a
2) b
3) c
4) x
Returns:
(float) result
Description:
Returns the result of interpolation between a and b, using x as the interpolation value.
Interpolation method is half sine.
Direct formula is (a + (b - a) * (x + (rsin(pi * x) / pi) * c))
Represented by the dotted blue graph.
Interpolate_QuadraticBezier
Arguments:
1) a
2) b
3) c
4) x
Returns:
(float) result
Description:
Calculates a coordinate component of a quadratic Bezier curve.
Direct formula is ((a * (1 - x)^2) + (2 * c * x * (1 - x)) + (b * x^2))
Represented by the red graph.
Interpolate_CubicBezier
Arguments:
1) a
2) b
3) c1
4) c2
5) x
Returns:
(float) result
Description:
Calculates a coordinate component of a cubic Bezier curve.
Direct formula is ((a * (1 - x)^3) + (3 * c1 * x * (1 - x)^2) + (3 * c2 * x^2 * (1 - x)) + (b * x^3))
Represented by the red graph.
Interpolate_Hermite
Arguments:
1) start x
2) start y
3) end x
4) end y
5) starting point tangent vector magnitude
6) starting point tangent vector angle (degrees)
5) ending point tangent vector magnitude
6) ending point tangent vector angle (degrees)
9) x
Returns:
(float[2]) [x, y]
Description:
Calculates the position along the given cubic Hermite spline curve.
https://en.wikipedia.org/wiki/Cubic_Hermite_spline
Interpolate_X
Arguments:
1) a
2) b
3) x
4) (int) interpolation type
Returns:
IF a, b are not arrays
(float) result
ELSE
(float[]) result array
Description:
Interpolates between a and b using x with the given interpolation type.
Available interpolation types:
LERP_LINEAR:
Interpolate_Linear
LERP_SMOOTH:
Interpolate_Smooth
LERP_SMOOTHER:
Interpolate_Smoother
LERP_ACCELERATE:
Interpolate_Accelerate
LERP_DECELERATE:
Interpolate_Decelerate
Interpolate_X_PackedInt
Arguments:
1) (int) a
2) (int) b
3) x
4) (int) interpolation type
Returns:
(int[]) result array
Description:
Divides a and b (both 8-byte ints) into eight 1-byte chunks, performs interpolation on each pair, and recombines them to return the result.
Example:
Interpolate_X_PackedInt(0x37ff4040, 0xaa001010, 0.5, LERP_LINEAR); //result = 0x707f2828
Interpolate_X_Angle
Arguments:
1) a (degrees)
2) b (degrees)
3) x
4) (int) interpolation type
Returns:
(float) angle (degrees)
Description:
Interpolates between angles a and b using x with the given interpolation type.
Equivalent to:
NormalizeAngle(a + Interpolate_X(0, AngularDistance(a, b), x, type));
Interpolate_X_AngleR
Arguments:
1) a (radians)
2) b (radians)
3) x
4) (int) interpolation type
Returns:
(float) angle (radians)
Description:
Interpolates between angles a and b using x with the given interpolation type.
Equivalent to:
NormalizeAngleR(a + Interpolate_X(0, AngularDistanceR(a, b), x, type));
Interpolate_X_Array
Arguments:
1) (T[]) values
2) x
3) (int) interpolation type
Returns:
(float) result
Description:
Interpolates between multiple elements of the array.
Examples:
Interpolate_X_Array([a, b, c, d], 0.2, LERP_LINEAR);
= Interpolate_X(a, b, 0.2, LERP_LINEAR);
Interpolate_X_Array([a, b, c, d], 1.5, LERP_LINEAR);
= Interpolate_X(b, c, 0.5, LERP_LINEAR);
Interpolate_X_Array([a, b, c, d], 2.9, LERP_LINEAR);
= Interpolate_X(c, d, 0.9, LERP_LINEAR);
--------------------------------> Random <--------------------------------
rand_int
Arguments:
1) (int) min
2) (int) max
Returns:
(int) random integer
Description:
Returns a random integer within the range [a, b].
rand_int(a, b) = as_int(rand(a, b + 0.99999))
prand
Arguments:
1) min
2) max
Returns:
(float) random value
Description:
Exactly like rand(), but the seed of which doesn't get saved to replays, and does not affect the state of rand().
prand_int
Arguments:
1) (int) min
2) (int) max
Returns:
(int) random integer
Description:
Returns a random integer within the range [a, b] using the prand() function.
prand_int(a, b) = as_int(prand(as_int(a), as_int(b) + 0.99999))
psrand
Arguments:
1) (int) seed
Description:
Sets the seed for prand and prand_int.
count_rand
Returns:
(int) count
Description:
Returns the amount of number rand or rand_int have been used.
Resets when restarting the game or exiting to the script select menu.
count_prand
Returns:
(int) count
Description:
Returns the amount of number prand or prand_int have been used.
Resets when restarting the game or exiting to the script select menu.
reset_count_rand
Description:
Sets the rand count to 0.
reset_count_prand
Description:
Sets the prand count to 0.
--------------------------------> Rotation Maths <--------------------------------
Rotate2D
Arguments:
1) x
2) y
3) angle
Returns:
(float[2]) rotated position [x, y]
Description:
Rotates the given (x, y) point around the origin (0, 0).
Direct formula is:
x = x * cos(angle) - y * sin(angle)
y = x * sin(angle) + y * cos(angle)
Rotate2D (overload)
Arguments:
1) x
2) y
3) angle
4) origin x
5) origin y
Returns:
(float[2]) rotated position [x, y]
Description:
Overloaded with 5 arguments.
Rotates the given (x, y) point around the given origin.
Direct formula is:
_x = x - ox
_y = y - oy
x = ox + (_x * cos(angle) - _y * sin(angle))
y = oy + (_x * sin(angle) + _y * cos(angle))
Rotate3D
Arguments:
1) x
2) y
3) z
4) X angle
5) Y angle
6) Z angle
Returns:
(float[3]) rotated position [x, y, z]
Description:
Rotates the given (x, y, z) point around the origin (0, 0) with the given Euler angles.
Direct formula is:
x = x * (cos(angY) * cos(angZ) - sin(angX) * sin(angY) * sin(angZ)) + y * (-cos(angX) * sin(angZ)) + z * (sin(angY) * cos(angZ) + sin(angX) * cos(angY) * sin(angZ))
y = x * (cos(angY) * sin(angZ) + sin(angX) * sin(angY) * cos(angZ)) + y * (cos(angX) * cos(angZ)) + z * (sin(angY) * sin(angZ) - sin(angX) * cos(angY) * cos(angZ))
z = x * (-cos(angX) * sin(angY)) + y * (sin(angX)) + z * (cos(angX) * cos(angY))
Rotate3D (overload)
Arguments:
1) x
2) y
3) z
4) X angle
5) Y angle
6) Z angle
7) origin x
8) origin y
9) origin z
Returns:
(float[3]) rotated position [x, y, z]
Description:
Rotates the given (x, y, z) point around the given origin with the given Euler angles.
Direct formula is:
_x = x - ox
_y = y - oy
_z = z - oz
x = ox + (_x * (cos(angY) * cos(angZ) - sin(angX) * sin(angY) * sin(angZ)) + _y * (-cos(angX) * sin(angZ)) + _z * (sin(angY) * cos(angZ) + sin(angX) * cos(angY) * sin(angZ)))
y = oy + (_x * (cos(angY) * sin(angZ) + sin(angX) * sin(angY) * cos(angZ)) + _y * (cos(angX) * cos(angZ)) + _z * (sin(angY) * sin(angZ) - sin(angX) * cos(angY) * cos(angZ)))
z = oz + (_x * (-cos(angX) * sin(angY)) + _y * (sin(angX)) + _z * (cos(angX) * cos(angY)))
--------------------------------> String <--------------------------------
atoi (overload)
Arguments:
1) (string) value
2) (int) base
Returns:
(int) value
Description:
Overloaded with 2 arguments.
Converts the string into an integer with the specified base.
Examples:
atoi("3511", 10); //3511
atoi("3511", 16); //13585
atoi("0x7f3", 16); //2035
SplitString2
Arguments:
1) (string) source string
2) (string) pattern
Returns:
(string[]) split result
Description:
Splits the string at the given pattern.
Examples:
SplitString2("ab3cd3ef3g", "3");
//Result: ["ab", "cd", "ef", "g"]
SplitString2("1b23abc45a6abc789c", "abc");
//Result: ["1b23", "45a6", "789c"]
SplitString("1b23abc45a6abc789c", "abc");
//Result: ["1", "23", "", "", "45", "6", "", "", "789", ""]
StringFormat
Arguments:
1) (string) source string
2) (string) argument types
3+) (T) format arguments...
Returns:
(string) formatted string
Description:
Formats the string in the style of sprintf.
The number of format arguments must match the number of argument types.
Make sure that the amount of format arguments match the formatting tokens in the source string,
the game may crash if the formatting token count exceeds the format argument count.
Available argument types:
- d: Argument is passed a 32-bit integer (int).
- l: Argument is passed a 64-bit integer (long int).
- f: Argument is passed a floating point number (double).
- s: Argument is passed a string (wstring).
Example:
StringFormat("This is a %s", "s", "string.");
//Result: This is a string.
StringFormat("The value is %s", "s", 32);
//Result: The value is 32.000000
StringFormat("%f + %d = %.2f", "fdf", 1.15836, 2.12, 3.27836);
//Result: 1.158360 + 2 = 3.28
StringFormat("0x%08x is %d", "ll", 8023465, 8023465);
//Result: 0x007a6da9 is 8023465
StringFormat("0x%016llx %s %lld", "lsl", 2275101568023465, "is", 2275101568023465);
//Result: 0x000815315cca3ba9 is 2275101568023465
RegexMatch
Arguments:
1) (string) source string
2) (string) pattern
Returns:
(string[]) match groups
Description:
Uses regular expression to match patterns in a given string.
Returns a string array of matches.
Example:
RegexMatch("Voyage 1969", "[0-9]+");
//Result: ["1969"]
RegexMatch("S231 A001 S101 S000", "S([0-9]{3})");
//Result: "S231", "231"]
RegexMatchRepeated
Arguments:
1) (string) source string
2) (string) pattern
Returns:
(string[][]) array of match groups
Description:
Behaves like RegexMatch, but returns all matches in the string rather than only the first match.
Example:
RegexMatchRepeated("Voyage 1969", "[0-9]+");
//Result: [["1969"]]
RegexMatchRepeated("S231 A001 S101 S0040", "S([0-9]{3})");
//Result: [["S231", "231"], ["S101", "101"], ["S004", "004"]]
RegexReplace
Arguments:
1) (string) source string
2) (string) pattern
2) (string) replacing string
Returns:
(string) replace result
Description:
Uses regular expression to replace patterns in a given string.
Returns the pattern-replaced string.
Example:
RegexReplace("Voyage 1969", "[0-9]+", "1970");
//Result: "Voyage 1970"
RegexReplace("Example String", "(a|e|i)", "*");
//Result: "Ex*mpl* Str*ng"
RegexReplace("Red, Green, and Blue", "[A-Z]+[a-zA-Z]*", "\'$&\'");
//Result: "'Red', 'Green', and 'Blue'"
--------------------------------> File Path and Archives <--------------------------------
GetArchiveFilePathList
Arguments:
1) (string) archive path
2) (bool) print full path
Returns:
(string[]) file names of stored entries
Description:
Returns an array of all filepaths stored inside the specified archive.
The archive must have already been loaded with AddArchiveFile, otherwise an empty array will be returned.
GetWorkingDirectory
Returns:
(string) working directory
Description:
Returns the working directory of the engine.
The working directory is the directory in which the engine is operating in,
and will always be in the same directory as the exe's if the engine was started normally.
But there are some cases where the working directory won't necessary be the same as the exe's, such as when the game is started via Steam.
GetModuleName
Returns:
(string) module name
Description:
Returns the file name of the engine, without the extension.
GetFileDirectoryFromModule
Arguments:
1) (string) path
Returns:
(string) directory name
Description:
Returns the directory of the given file path, without the directory of the engine.
The given path does not need to actually exist.
GetFileTopDirectory
Arguments:
1) (string) path
Returns:
(string) directory name
Description:
Returns the topmost directory of the given file path.
The given path does not need to actually exist.
GetFileName
Arguments:
1) (string) path
Returns:
(string) file name
Description:
Returns the file name of the given file path.
The given path does not need to actually exist.
GetFileNameWithoutExtension
Arguments:
1) (string) path
Returns:
(string) file name
Description:
Returns the file name of the given file path, without its extension.
The given path does not need to actually exist.
GetFileExtension
Arguments:
1) (string) path
Returns:
(string) file extension
Description:
Returns the file extension of the given file path.
The given path does not need to actually exist.
IsFileExists
Arguments:
1) (string) path
Returns:
(bool) result
Description:
Returns true if the given file exists.
IsDirectoryExists
Arguments:
1) (string) path
Returns:
(bool) result
Description:
Returns true if the given directory exists.
--------------------------------> Time <--------------------------------
GetSystemTimeMilliS
Returns:
(int) time
Description:
Returns the time of the system clock in milliseconds.
GetSystemTimeNanoS
Returns:
(int) time
Description:
Returns the time of the system clock in nanoseconds.
--------------------------------> Debugging <--------------------------------
WriteLog
Arguments:
1+) (T) value...
Description:
Change.
Writes the values of the given arguments to the LogWindow.
RaiseMessageWindow
Arguments:
1) (string) title text
2) (string) description text
3) (int) window flags
Returns:
(int) window result
Description:
Raises a message window similar to RaiseError, but does not terminate the script.
The game will be paused until the message window is addressed. The LogWindow will not be affected.
For the list of window flags, refer to this page:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
The following flags are not allowed and will be automatically deleted:
MB_SETFOREGROUND
MB_DEFAULT_DESKTOP_ONLY
MB_SERVICE_NOTIFICATION
MB_SYSTEMMODAL
MB_TASKMODAL
The following flags are forced:
MB_APPLMODAL
The return value is dependent on the user's interaction with the message window.
Refer to the same page for the list and explaination of return values.
RaiseMessageWindow (Overload)
Arguments:
1) (string) title text
2) (string) description text
Returns:
(int) window result
Description:
Overloaded with 2 arguments.
Triggers RaiseMessageWindow with MB_OK as the window flag value.
--------------------------------> Common Data <--------------------------------
GetCommonData (Overload)
Arguments:
1) (string) key
Returns:
(T) stored value
Description:
Overloaded with 1 argument.
A variant of GetCommonData(key, default) where the "default value" argument is omitted.
A null value will be returned if the requested key-value pair does not exist.
GetAreaCommonData (Overload)
Arguments:
1) (string) area
2) (string) key
Returns:
(T) stored value
Description:
Overloaded with 2 arguments.
A variant of GetAreaCommonData(area, key, default) where the "default value" argument is omitted.
A null value will be returned if the requested key-value pair does not exist.
DeleteWholeAreaCommonData
Arguments:
1) (string) name
Description:
Deletes the whole area common data, not just the key-value list.
To use the area common data again, it must be recreated with CreateCommonDataArea.
LoadCommonDataValuePointer
Arguments:
1) (string) key
2) (T) initial value
Returns:
(pointer) value pointer
Description:
Obtains a value pointer to the common data value in the default area.
If the requested common data does not exist, it will be created and initialized with the provided value.
LoadCommonDataValuePointer (Overload)
Arguments:
1) (string) key
Returns:
(pointer) value pointer
Description:
Overloaded with 1 argument.
Obtains a value pointer to the common data value in the default area.
If the requested common data does not exist, a null pointer will be returned.
LoadAreaCommonDataValuePointer
Arguments:
1) (string) area
2) (string) key
3) (T) initial value
Returns:
(pointer) value pointer
Description:
Obtains a value pointer to the common data value in the given area.
If the requested common data does not exist, it will be created and initialized with the provided value.
LoadAreaCommonDataValuePointer (Overload)
Arguments:
1) (string) area
2) (string) key
Returns:
(pointer) value pointer
Description:
Overloaded with 1 argument.
Obtains a value pointer to the common data value in the given area.
If the requested common data does not exist, a null pointer will be returned.
IsValidCommonDataValuePointer
Arguments:
1) (pointer) value pointer
Returns:
(bool) valid
Description:
Returns if the given value is a valid common data value pointer.
SetCommonDataPtr
Arguments:
1) (pointer) value pointer
2) (T) value
Description:
SetCommonData/SetAreaCommonData using pointers.
The use of direct pointers mitigate the need for map traversals present in regular common data accesses,
and thus would remarkably improve speed.
Using an invalid pointer may cause a memory access violation.
GetCommonDataPtr
Arguments:
1) (pointer) value pointer
2) (T) default value
Returns:
(T) stored value
Description:
GetCommonData/GetAreaCommonData using pointers.
The use of direct pointers mitigate the need for map traversals present in regular common data accesses,
and thus would remarkably improve speed.
Using an invalid pointer may cause a memory access violation.
GetCommonDataPtr (Overload)
Arguments:
1) (pointer) value pointer
Returns:
(T) stored value
Description:
Overloaded with 1 argument.
GetCommonData/GetAreaCommonData using pointers.
The use of direct pointers mitigate the need for map traversals present in regular common data accesses,
and thus would remarkably improve speed.
Using an invalid pointer may cause a memory access violation.
--------------------------------> Engine Utilities <--------------------------------
IsEngineFastMode
Returns:
(bool) result
Description:
Returns whether the engine is in the "fast mode" state.
(Note: Normally triggered with the LCtrl key.)
GetConfigWindowSizeIndex
Returns:
(int) index
Description:
Returns the config's selected window size index.
GetConfigWindowSizeList
Returns:
(int[][]) available window sizes
Description:
Returns an array of the window sizes specified in th_dnh.def.
GetConfigVirtualKeyMapping
Arguments:
1) (int) virtual key
Returns:
(int[2]) keys mapping
Description:
Returns the key mapping [keyboard, pad] as set in the config.
Mappings will not change if keys are reassigned in-game.
GetConfigWindowTitle
Returns:
(string) window title
Description:
Returns the engine's default window title, or the one specified in th_dnh.def if it exists.
SetWindowTitle
Arguments:
1) (string) window title
Description:
Sets the window title.
Passing in an empty string will reset the window title to the default.
SetEnableUnfocusedProcessing
Arguments:
1) (bool) enables
Description:
Enables or disables unfocused processing.
GetLastFrameUpdateSpeed
Returns:
(int) milliseconds
Description:
Returns the time the engine took to update scripts in the previous frame in milliseconds.
GetLastFrameRenderSpeed
Returns:
(int) milliseconds
Description:
Returns the time the engine took to render the previous frame in milliseconds.
--------------------------------> Stage Information <--------------------------------
SetScore
Arguments:
1) (int) score
Description:
Sets the score value.
SetGraze
Arguments:
1) (int) graze
Description:
Sets the graze count.
SetPoint
Arguments:
1) (int) point
Description:
Sets the default point item value.
--------------------------------> Archive <--------------------------------
AddArchiveFile (Overload)
Arguments:
1) (string) path
2) (int) offset
Returns:
(bool) load successful
Description:
Overloaded with 2 arguments.
Loads a .dat archive, with the added capability to specify the read offset.
GetArchiveFilePathList
Arguments:
1) (string) path
2) (bool) full path
Returns:
(string[]) paths
Description:
Lists out the stored file entries in the given .dat archive.
Archive must have already been loaded.
--------------------------------> Screenshot <--------------------------------
SaveSnapShotA3
Arguments:
1) (string) path
2) (int) rect left
3) (int) rect top
4) (int) rect right
5) (int) rect bottom
6) (const) format
Returns:
(bool) result
Description:
Renders the whole screen to a texture and saves the specified rectangular area of the texture to a file with the given name.
Returns true if the save was successful.
Available formats:
IFF_BMP: Bitmap file. (.bmp) (default)
IFF_JPG: Joint Photographic Experts Group graphics file. (.jpeg)
IFF_TGA: TARGA bitmap file. (.tga)
IFF_PNG: Portable Network Graphics file. (.png)
IFF_DDS: DirectDraw Surface file. (.dds)
IFF_PPM: Portable PixelMap graphics file. (.ppm)
--------------------------------> Script <--------------------------------
UnloadScript
Arguments:
1) (int) script ID
Description:
Unloads a script that was loaded with LoadScript or LoadScriptInThread.
UnloadScriptFromCache
Arguments:
1) (string) script path
Description:
Unloads the given given from the script source cache.
Does nothing if the script does not exist in the cache.
StartScript (Overload)
Arguments:
1) (int) script ID
2) (bool) unload
Description:
Overloaded with 2 arguments.
Starts the given script, and whether or not to remove the script from the "Loaded Scripts" cache. (NOT the "Script Source" cache)
A script that is often restarted would benefit from this overload by using LoadScript only once,
and then using StartScript(idScript, false) to avoid having to repeatedly call LoadScript.
*StartScript(idScript) = StartScript(idScript, true)
PauseScript
Arguments:
1) (int) script ID
2) (bool) pause
Description:
Pauses or unpauses the specified script. Not guaranteed to work flawlessly.
Causes an error is the script ID is the ID of the script from which the function was called,
aka; "a script cannot pause itself".
GetScriptStatus
Arguments:
1) (int) script ID
Returns:
(const) status
Description:
Returns the status of the specified script.
Possible return values:
- STATUS_LOADING ; Script is currently loading.
- STATUS_LOADED ; Script has been loaded.
- STATUS_RUNNING ; Script is running.
- STATUS_PAUSED ; Script has been paused.
- STATUS_CLOSING ; Script is closing.
- STATUS_INVALID ; Any other cases, or invalid script ID.
--------------------------------> Event <--------------------------------
GetEventArgumentCount
Returns:
(int) count
Description:
Returns the event argument count of the active event.
NotifyEvent
Arguments:
1) (int) script ID
2) (int) event type
3+) (T) arguments...
Returns:
(T) event result
Description:
Change.
It is possible to pass as many event arguments as you want.
*Scripts paused with PauseScript will still be able to run events.
NotifyEventOwn
Arguments:
1) (int) event type
2+) (T) arguments...
Returns:
(T) event result
Description:
NotifyEvent's the script in which it was called.
It is possible to pass as many event arguments as you want.
*Scripts paused with PauseScript will still be able to run events.
NotifyEventAll
Arguments:
1) (int) event type
2+) (T) arguments...
Description:
Change.
NotifyEvent's all actively running scripts.
It is possible to pass as many event arguments as you want.
*Scripts paused with PauseScript will still be able to run events.
--------------------------------> Matrix <--------------------------------
A "matrix" here is a 16-member array representing a 4x4 matrix arranged row-by-row.
Ex: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] (The identity matrix)
A "vector" here is a float value array of the specified size.
Ex: [3, 4, 5] -> VECTOR3
[5, 5, 0, 2] -> VECTOR4
MatrixIdentity
Returns:
(matrix) the identity matrix
Description:
Contructs an identity matrix.
MatrixInverse
Arguments:
1) (matrix) matrix
Returns:
(matrix) result
Description:
Inverses the given matrix.
MatrixAdd
Arguments:
1) (matrix) matrix1
2) (matrix) matrix2
Returns:
(matrix) result
Description:
Adds two matrices together.
Note: Directly using the "+" operator also works.
MatrixSubtract
Arguments:
1) (matrix) matrix1
2) (matrix) matrix2
Returns:
(matrix) result
Description:
Subtracts two matrices.
Note: Directly using the "-" operator also works.
MatrixMultiply
Arguments:
1) (matrix) matrix1
2) (matrix) matrix2
Returns:
(matrix) result
Description:
Multiplies two matrices together.
MatrixDivide
Arguments:
1) (matrix) matrix1
2) (matrix) matrix2
Returns:
(matrix) result
Description:
Divides two matrices.
MatrixTranspose
Arguments:
1) (matrix) matrix
Returns:
(matrix) result
Description:
Transposes the given matrix.
MatrixDeterminant
Arguments:
1) (matrix) matrix
Returns:
(float) result
Description:
Calculates the determinant of the given matrix.
MatrixLookAtLH
Arguments:
1) (VECTOR3) eye vector
2) (VECTOR3) destination vector
3) (VECTOR3) orientation vector
Returns:
(matrix) result
Description:
Constructs a left-handed look-at matrix.
MatrixLookAtRH
Arguments:
1) (VECTOR3) eye vector
2) (VECTOR3) destination vector
3) (VECTOR3) orientation vector
Returns:
(matrix) result
Description:
Constructs a right-handed look-at matrix.
MatrixTransformVector
Arguments:
1) (VECTOR3) position
2) (matrix) transformation matrix
Returns:
(VECTOR4) result
Description:
Transforms the given (x, y, z, 1) point with the given matrix.
--------------------------------> Screen Status <--------------------------------
GetMonitorWidth
Returns:
(int) monitor width
Description:
Returns the width of the primary display monitor.
GetMonitorHeight
Returns:
(int) monitor height
Description:
Returns the height of the primary display monitor.
GetScreenWidth
Returns:
(int) screen width
Description:
Returns the width of the engine screen. (specified in th_dnh.def as "screen.width")
GetScreenHeight
Returns:
(int) screen height
Description:
Returns the height of the engine screen. (specified in th_dnh.def as "screen.height")
GetWindowedWidth
Returns:
(int) window width
Description:
Returns the width of the windowed mode.
GetWindowedHeight
Returns:
(int) window width
Description:
Returns the height of the windowed mode.
IsFullscreenMode
Returns:
(bool) result
Description:
Returns whether or not the game is in fullscreen mode.
Both pseudo and true fullscreen modes register as true.
--------------------------------> Sound <--------------------------------
SetSoundDivisionVolumeRate
Arguments:
1) (const) division
2) rate
Description:
Sets the volume rate of the given sound division.
The volume rates of all sound objects assigned to the division are multiplied by the division's rate.
GetSoundDivisionVolumeRate
Arguments:
1) (const) division
Returns:
(float) volume rate
Description:
Returns the volume rate of the given sound division.
--------------------------------> Input <--------------------------------
GetVirtualKeyMapping
Arguments:
1) (int) virtual key
Returns:
(int[2]) keys mapping
Description:
Returns the current key mapping [keyboard, pad].
--------------------------------> Resource Loading <--------------------------------
LoadTextureEx
Arguments:
1) (string) path
2) (bool) use mipmap
3) (bool) use non-power-of-two
Returns:
(bool) loading result
Description:
Returns a boolean value of whether loading was successful.
Loads a texture with more options.
Mipmap option generates a mipmap chain, causes textures to look better when scaled down when used with mipmap filtering.
Non-power-of-two option prevents blurring when the source texture's dimensions are not powers of two. (Due to DirectX's nature, may cause rendering to be slightly slower.)
LoadTextureInLoadThreadEx
Arguments:
1) (string) path
2) (bool) use mipmap
3) (bool) use non-power-of-two
Returns:
(bool) loading result
Description:
Returns a boolean value of whether initial loading was successful.
LoadTextureEx in the load thread.
LoadShader
Arguments:
1) (string) path
Returns:
(bool) loading result
Description:
Loads a shader file, and returns a boolean value of whether loading was successful.
RemoveShader
Arguments:
1) (string) path
Description:
Removes a shader data that was previously loaded with LoadShader.
LoadMesh
Arguments:
1) (string) path
Returns:
(bool) loading result
Description:
Loads a mesh data file, and returns a boolean value of whether loading was successful.
RemoveMesh
Arguments:
1) (string) path
Description:
Removes a mesh data that was previously loaded with LoadMesh.
--------------------------------> Render Target <--------------------------------
CreateRenderTargetEx
Arguments:
1) (string) name
2) (int) width
3) (int) height
Returns:
(bool) creation result
Description:
Returns a boolean value of whether creation was successful.
Creates a render target with the specified name, width, and height.
Fails if either value is not a positive integer.
ClearRenderTargetA1
Arguments:
1) (string) name
Returns:
(bool) clear result
Description:
Previously [SetRenderTarget].
Returns a boolean value of whether the operation was successful.
Clears the render target.
ClearRenderTargetA2
Arguments:
1) (string) name
2) (int) clear color red
3) (int) clear color green
4) (int) clear color blue
5) (int) clear color alpha
Returns:
(bool) clear result
Description:
Returns a boolean value of whether the operation was successful.
Clears the render target and fills it with the specified color and alpha.
ClearRenderTargetA3
Arguments:
1) (string) name
2) (int) clear color red
3) (int) clear color green
4) (int) clear color blue
5) (int) clear color alpha
6) (int) rect left
7) (int) rect top
8) (int) rect right
9) (int) rect bottom
Returns:
(bool) clear result
Description:
Returns a boolean value of whether the operation was successful.
Clears the render target in the specified rectangular area and fills that area with the specified color and alpha.
SaveRenderedTextureA3
Arguments:
1) (string) name
2) (string) path
3) (int) rect left
4) (int) rect top
5) (int) rect right
6) (int) rect bottom
7) (const) format
Returns:
(bool) save result
Description:
SaveRenderedTextureA2, with the added ability of image format specification.
Available formats are:
IFF_BMP: Bitmap file. (.bmp) (default)
IFF_JPG: Joint Photographic Experts Group graphics file. (.jpeg)
IFF_TGA: TARGA bitmap file. (.tga)
IFF_PNG: Portable Network Graphics file. (.png)
IFF_DDS: DirectDraw Surface file. (.dds)
IFF_PPM: Portable PixelMap graphics file. (.ppm)
--------------------------------> Device Capabilities <--------------------------------
IsVertexShaderSupported
Arguments:
1) (int) major
2) (int) minor
Returns:
(bool) result
Description:
Checks if the video card on the device supports the given vertex shader version.
--------------------------------> Fog <--------------------------------
SetFogParam (Overload)
Arguments:
1) fog start
2) fog end
3) (int) fog hex color
Description:
Overloaded with 3 arguments.
Sets the fog color as an XRGB hexadecimal color value.
Example:
SetFogParam(0, 1024, 0xFF7B32); //-> SetFogParam(0, 1024, 255, 123, 50);
--------------------------------> 3D Camera <--------------------------------
SetCameraMode
Arguments:
1) (const) mode
Description:
Switches the 3D camera between available modes.
Modes:
CAMERA_NORMAL
- The normal 3D camera mode, positioned with elevation and azimuth angles.
CAMERA_LOOKAT
- The new 3D camera mode for maths enthusiasts, with the ability to directly specify camera position and view target position.
Configured with SetCameraFocusX/Y/Z or SetCameraPosEye and SetCameraPosLookAt.
SetCameraPosEye
Arguments:
1) x
2) y
3) z
Description:
Literally just SetCameraFocusXYZ with a different name.
SetCameraPosLookAt
Arguments:
1) x
2) y
3) z
Description:
Used with CAMERA_LOOKAT mode.
Sets the camera's "look-at" position.
GetCameraViewMatrix
Returns:
(matrix) view matrix
Description:
Returns the 3D camera's view matrix.
GetCameraProjectionMatrix
Returns:
(matrix) projection matrix
Description:
Returns the 3D camera's projection matrix.
GetCameraViewProjectionMatrix
Returns:
(matrix) view-projection matrix
Description:
Returns the 3D camera's view-projection matrix.
--------------------------------> Intersection <--------------------------------
IsIntersected_Point_Polygon
Arguments:
1) point - x
2) point - y
3) (float[2][]) polygon vertices
Returns:
(bool) intersection
Description:
Returns true if the given point intersects with the polygon.
The polygon can be convex, concave, or complex (self-intersecting).
IsIntersected_Point_Circle
Arguments:
1) point - x
2) point - y
3) circle - x
4) circle - y
5) circle - radius
Returns:
(bool) intersection
Description:
Returns true if the given point intersects with the circle.
IsIntersected_Point_Ellipse
Arguments:
1) point - x
2) point - y
3) ellipse - x
4) ellipse - y
5) ellipse - x radius
6) ellipse - y radius
Returns:
(bool) intersection
Description:
Returns true if the given point intersects with the ellipse.
IsIntersected_Point_Line
Arguments:
1) point - x
2) point - y
3) line - start x
4) line - start y
5) line - end x
6) line - end y
7) line - width
Returns:
(bool) intersection
Description:
Returns true if the given point intersects with the line.
IsIntersected_Point_RegularPolygon
Arguments:
1) point - x
2) point - y
3) polygon - x
4) polygon - y
5) polygon - radius
6) (int) polygon - edge count
7) polygon - angle (degrees)
Returns:
(bool) intersection
Description:
Returns true if the given point intersects with the regular polygon.
IsIntersected_Circle_Polygon
Arguments:
1) circle - x
2) circle - y
3) circle - radius
4) (float[2][]) polygon vertices
Returns:
(bool) intersection
Description:
Returns true if the given circle intersects with the polygon.
The polygon can be convex, concave, or complex (self-intersecting).
IsIntersected_Circle_Circle
Arguments:
1) circle 1 - x
2) circle 1 - y
3) circle 1 - radius
4) circle 2 - x
5) circle 2 - y
6) circle 2 - radius
Returns:
(bool) intersection
Description:
Returns true if the given circles intersect.
IsIntersected_Circle_Ellipse
Arguments:
1) circle - x
2) circle - y
3) circle - radius
4) ellipse - x
5) ellipse - y
6) ellipse - x radius
7) ellipse - y radius
Returns:
(bool) intersection
Description:
Returns true if the given circle intersects with the ellipse.
IsIntersected_Circle_RegularPolygon
Arguments:
1) circle - x
2) circle - y
3) circle - radius
4) polygon - x
5) polygon - y
6) polygon - radius
7) (int) polygon - edge count
8) polygon - angle (degrees)
Returns:
(bool) intersection
Description:
Returns true if the given circle intersects with the regular polygon.
IsIntersected_Line_Polygon
Arguments:
1) line - start x
2) line - start y
3) line - end x
4) line - end y
5) line - width
6) (float[2][]) polygon vertices
Returns:
(bool) intersection
Description:
Returns true if the given line intersects with the polygon.
The polygon can be convex, concave, or complex (self-intersecting).
IsIntersected_Line_Circle
Arguments:
1) line - start x
2) line - start y
3) line - end x
4) line - end y
5) line - width
6) circle - x
7) circle - y
8) circle - radius
Returns:
(bool) intersection
Description:
Returns true if the given line intersects with the circle.
IsIntersected_Line_Ellipse
Arguments:
1) line - start x
2) line - start y
3) line - end x
4) line - end y
5) line - width
6) ellipse - x
7) ellipse - y
8) ellipse - x radius
9) ellipse - y radius
Returns:
(bool) intersection
Description:
Returns true if the given line intersects with the ellipse.
IsIntersected_Line_Line
Arguments:
1) line 1 - start x
2) line 1 - start y
3) line 1 - end x
4) line 1 - end y
5) line 1 - width
6) line 2 - start x
7) line 2 - start y
8) line 2 - end x
9) line 2 - end y
10) line 2 - width
Returns:
(bool) intersection
Description:
Returns true if the given lines intersect.
IsIntersected_Line_RegularPolygon
Arguments:
1) line - start x
2) line - start y
3) line - end x
4) line - end y
5) line - width
6) polygon - x
7) polygon - y
8) polygon - radius
9) (int) polygon - edge count
10) polygon - angle (degrees)
Returns:
(bool) intersection
Description:
Returns true if the given line intersects with the regular polygon.
IsIntersected_Polygon_Polygon
Arguments:
1) (float[2][]) polygon 1 vertices
2) (float[2][]) polygon 2 vertices
Returns:
(bool) intersection
Description:
Returns true if the given polygons intersect.
The polygons can be convex, concave, or complex (self-intersecting).
IsIntersected_Polygon_Ellipse
Arguments:
1) (float[2][]) polygon vertices
2) ellipse - x
3) ellipse - y
4) ellipse - x radius
5) ellipse - y radius
Returns:
(bool) intersection
Description:
Returns true if the given polygon intersects with the ellipse.
The polygon can be convex, concave, or complex (self-intersecting).
IsIntersected_Polygon_RegularPolygon
Arguments:
1) (float[2][]) polygon 1 vertices
2) polygon 2 - x
3) polygon 2 - y
4) polygon 2 - radius
5) (int) polygon 2 - edge count
6) polygon 2 - angle (degrees)
Returns:
(bool) intersection
Description:
Returns true if the given polygon intersects with the regular polygon.
The polygon can be convex, concave, or complex (self-intersecting).
--------------------------------> Color Utility <--------------------------------
ColorARGBToHex
Arguments:
1) (int) alpha
2) (int) red
3) (int) green
4) (int) blue
Returns:
(int) hex color
Description:
Returns an ARGB hexadecimal color value of the given colors.
Example:
ColorARGBToHex(255, 255, 255, 255);
//Result: 0xFFFFFFFF
ColorARGBToHex(67, 255, 0, 125);
//Result: 0x43FF007D
ColorARGBToHex (Overload)
Arguments:
1) (int[4]) color
Returns:
(int) hex color
Description:
Overloaded with 1 argument.
Returns ColorARGBToHex(color[0], color[1], color[2], color[3]);
ColorHexToARGB
Arguments:
1) (int) hex color
Returns:
(int[4]) ARGB color
Description:
Returns an ARGB color array of the given hexadecimal color (D3DCOLOR).
Example:
ColorHexToARGB(0xFFFFFFFF);
//Result: [255, 255, 255, 255]
ColorHexToARGB(0x43FF007D);
//Result: [67, 255, 0, 125]
ColorHexToARGB (Overload)
Arguments:
1) (int) hex color
2) (int) control
Returns:
(int[]) color array
Description:
Overloaded with 2 arguments.
Returns an ARGB color array of the given hexadecimal color (D3DCOLOR), controlled by the control argument.
The control value dictates which color channels to output, and in which order.
The bit format is:
MSB LSB (16 bit)
000000 00 00 00 00 00
Unused Count 1st 2nd 3rd 4th
- Bits 0-5 are unused.
- Bits 6-7 control the amount of color channels to return, subtracted by 1.
(11 is 4 channels, 10 is 3, 01 is 2, 00 is 1)
- Bits 8-15 control the order of the color channels, duplication is allowed.
00 (0) signifies the A channel.
01 (1) signifies the R channel.
10 (2) signifies the G channel.
11 (3) signifies the B channel.
Examples:
0b1100011011 (0x31b) -> [A, R, G, B]
0b1101101100 (0x36c) -> [R, G, B, A]
0b1100000000 (0x300) -> [A, A, A, A]
0b1001101100 (0x26c) -> [R, G, B]
0b0001000000 (0x040) -> [R]
For people whose brain lacks the required amount of sanity (or lack thereof) to understand the control argument, here are some constants:
COLOR_PERMUTE_ARGB
COLOR_PERMUTE_RGBA
COLOR_PERMUTE_BGRA
COLOR_PERMUTE_RGB
COLOR_PERMUTE_BGR
COLOR_PERMUTE_A
COLOR_PERMUTE_R
COLOR_PERMUTE_G
COLOR_PERMUTE_B
Example:
ColorHexToARGB(0xFFFFFFFF, 0x31b);
//Result: [255, 255, 255, 255]
ColorHexToARGB(0xFFFFFFFF, 0x000);
//Result: [255]
ColorHexToARGB(0x43FF007D, 0x31b)
//Result: [67, 255, 0, 125]
ColorHexToARGB(0x43FF007D, 0x36c);
//Result: [255, 0, 125, 67]
ColorHexToARGB(0x43FF007D, 0x2e4);
//Result: [125, 0, 255]
ColorRGBtoHSV
Arguments:
1) (int) red
2) (int) green
3) (int) blue
Returns:
(int[3]) color array
Description:
Returns the given RGB color as a HSV color array.
ColorHexRGBtoHSV
Arguments:
1) (int) hex color
Returns:
(int[3]) color array
Description:
Returns the given XRGB hexadecimal color as a HSV color array.
ColorHSVtoRGB
Arguments:
1) (int) hue
2) (int) saturation
3) (int) value
Returns:
(int[3]) color array
Description:
Returns the given HSV color as an RGB color array.
ColorHSVtoHexRGB
Arguments:
1) (int) hue
2) (int) saturation
3) (int) value
Returns:
(int) hex color
Description:
Returns the given HSV color as an XRGB hexadecimal color.
--------------------------------> Base Object Functions <--------------------------------
SetInvalidPositionReturn
Arguments:
1) x
2) y
Description:
Sets the default position that position-fetching functions will return if the object does not exist.
The default value is (0, 0).
GetObjectDistance
Arguments:
1) (int) object 1 ID
2) (int) object 2 ID
Returns:
(float) distance
Description:
Change.
The Z positions will not be included in the calculation if neither objects are 3D-valid.
GetObjectDistanceSq
Arguments:
1) (int) object 1 ID
2) (int) object 2 ID
Returns:
(float) distance
Description:
Returns the square of the distance between two objects.
The Z positions will not be included in the calculation if neither objects are 3D-valid.
GetObjectDeltaAngle
Arguments:
1) (int) object 1 ID
2) (int) object 2 ID
Returns:
(float) angle
Description:
Returns the angle between two objects.
The Z positions will not be included in the calculation if neither objects are 3D-valid.
Obj_GetValueI
Arguments:
1) (int) object ID
2) (int) key
Returns:
(T) value
Description:
Obj_GetValue with int value key.
Obj_GetValueDI
Arguments:
1) (int) object ID
2) (int) key
3) default
Returns:
(T) value
Description:
Obj_GetValueD with int value key.
Obj_SetValueI
Arguments:
1) (int) object ID
2) (int) key
3) value
Returns:
(T) value
Description:
Obj_SetValue with int value key.
Obj_DeleteValueI
Arguments:
1) (int) object ID
2) (int) key
Returns:
(T) value
Description:
Obj_DeleteValue with int value key.
Obj_IsValueExistsI
Arguments:
1) (int) object ID
2) (int) key
Returns:
(T) value
Description:
Obj_IsValueExists with int value key.
Obj_GetValueCount
Arguments:
1) (int) object ID
Returns:
(int) count
Description:
Returns the number of stored values in the object's string-indexed value table.
Obj_GetValueCountI
Arguments:
1) (int) object ID
Returns:
(int) count
Description:
Returns the number of stored values in the object's int-indexed value table.
Obj_CopyValueTable
Arguments:
1) (int) destination object ID
2) (int) source object ID
3) (int) mode
Returns:
(int) source object's object value amount
Description:
Copies the source's object value table to the destination's object value table.
Available modes:
0 - Object value table is cleared before the copy.
1 - Value will be overwritten in case of key conflicts.
2 - Value will not be overwritten in case of key conflicts.
--------------------------------> Shader Object Functions <--------------------------------
ObjShader_SetShaderT
Arguments:
1) (int) object ID
2) (string) shader name
2) (string) shader source
Returns:
(bool) success
Description:
Compiles a shader from the given string. Returns whether the operation was successful.
Shader name should be unique.
--------------------------------> Render Object Functions <--------------------------------
[---------------------------> Blending <---------------------------]
ObjRender_SetBlendType
Description:
Addition.
BLEND_ALPHA_INV - Alpha blending with source color inversion.
[---------------------------> Scale <---------------------------]
ObjRender_SetScaleXYZ (Overload)
Arguments:
1) (int) object ID
2) scale
Description:
Overloaded with 2 arguments.
Sets the object's XYZ scale.
Example:
ObjRender_SetScaleXYZ(obj, 2); //-> ObjRender_SetScaleXYZ(obj, 2, 2, 2);
[---------------------------> Color & Alpha <---------------------------]
ObjRender_SetColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the object's color as an XRGB hexadecimal color value.
Example:
ObjRender_SetColor(obj, 0xFF7B32); //-> ObjRender_SetColor(obj, 255, 123, 50);
ObjRender_SetColorHSV
Arguments:
1) (int) object ID
2) (int) color hue
3) (int) color saturation
4) (int) color value
Description:
Sets the object's RGB color as a HSV color.
ObjRender_GetColor
Arguments:
1) (int) object ID
Returns:
(int[3]) color
Description:
Returns an [r, g, b] array of the object's color.
ObjRender_GetColorHex
Arguments:
1) (int) object ID
Returns:
(int) hex color
Description:
Returns the object's color an XRGB hexadecimal color value.
ObjRender_GetAlpha
Arguments:
1) (int) object ID
Returns:
(int) alpha
Description:
Returns the object's alpha value.
[---------------------------> Texture Filtering <---------------------------]
ObjRender_SetTextureFilterMin
Arguments:
1) (int) object ID
2) (const) mode
Description:
Sets the minification filtering mode for the render object.
Filtering modes:
FILTER_NONE
FILTER_POINT
FILTER_LINEAR
FILTER_ANISOTROPIC
Default is FILTER_LINEAR.
ObjRender_SetTextureFilterMag
Arguments:
1) (int) object ID
2) (const) mode
Description:
Sets the magnification filtering mode for the render object.
Default is FILTER_LINEAR.
ObjRender_SetTextureFilterMip
Arguments:
1) (int) object ID
2) (const) mode
Description:
Sets the mipmap filtering mode for the render object.
Default is FILTER_NONE.
ObjRender_SetTextureFilter
Arguments:
1) (int) object ID
2) (const) filter min
3) (const) filter mag
4) (const) filter mip
Description:
Fused ObjRender_SetTextureFilterMin+Mag+Mip.
[---------------------------> Vertex Shader <---------------------------]
ObjRender_SetVertexShaderRenderingMode
Arguments:
1) (int) object ID
2) (bool) use vertex shader mode
Description:
Sets whether the render object will be rendered with support for vertex shaders.
Default is false.
Rendering will not be performed without an attached shader object when this is set to true.
When using vertex shader rendering mode with 3D objects, fog must be manually computed with the shader.
ObjRender_SetEnableDefaultTransformMatrix
Arguments:
1) (int) object ID
2) (bool) enable
Description:
Sets whether the render object will calculate its transformation matrix.
Default is true.
The transformation matrix contains the object's scale, angle, and position data, along with the 2D camera matrix.
If set to false, the transformation matrix will only contain the 2D camera matrix.
[---------------------------> Lighting <---------------------------]
ObjRender_SetLightingEnable
Arguments:
1) (int) object ID
2) (bool) lighting enable
2) (bool) specular lighting enable
Description:
Enables or disables the 3D directional lighting and specular lighting for the render object.
The default values are false and false.
For mesh objects, the default values are true and false.
If it is not necessary, I recommend you not use specular lighting, as it's quite computationally expensive.
ObjRender_SetLightingDiffuseColor
Arguments:
1) (int) object ID
2) (int) r
3) (int) g
4) (int) b
Description:
Sets the diffuse color of the lighting.
The default color value is (128, 128, 128).
ObjRender_SetLightingDiffuseColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the object's diffuse lighting color as an XRGB hexadecimal color value.
ObjRender_SetLightingSpecularColor
Arguments:
1) (int) object ID
2) (int) r
3) (int) g
4) (int) b
Description:
Sets the specular color of the lighting.
The default color value is (0, 0, 0).
ObjRender_SetLightingSpecularColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the object's specular lighting color as an XRGB hexadecimal color value.
ObjRender_SetLightingAmbientColor
Arguments:
1) (int) object ID
2) (int) r
3) (int) g
4) (int) b
Description:
Sets the ambient color of the lighting.
The default color value is (128, 128, 128).
ObjRender_SetLightingAmbientColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the object's ambient lighting color as an XRGB hexadecimal color value.
ObjRender_SetLightingDirection
Arguments:
1) (int) object ID
2) x component
3) y component
4) z component
Description:
Sets the direction vector of the lighting.
Vector does not need to be normalized, but should have a non-zero length.
The default direction vector is (-1, -1, -1).
--------------------------------> Primitive Object Functions <--------------------------------
ObjPrim_GetTexture
Arguments:
1) (int) object ID
Returns:
(string) texture name
Description:
Returns the path/name of the primitive object's texture.
ObjPrim_SetVertexColor (Overload)
Arguments:
1) (int) object ID
2) (int) vertex index
3) (int) hex color
Description:
Overloaded with 3 arguments.
Sets the vertex color as an XRGB hexadecimal color value.
ObjPrim_SetVertexColorHSV
Arguments:
1) (int) object ID
2) (int) vertex index
3) color hue
4) color saturation
5) color value
Description:
Sets the vertex color of the primitive object as a HSV color.
ObjPrim_GetVertexColor
Arguments:
1) (int) object ID
2) (int) vertex index
Returns:
(int[3]) color
Description:
Returns the vertex color as an [r, g, b] array.
ObjPrim_GetVertexColorHex
Arguments:
1) (int) object ID
2) (int) vertex index
Returns:
(int) hex color
Description:
Returns the vertex color as an XRGB hexadecimal color value.
ObjPrim_GetVertexAlpha
Arguments:
1) (int) object ID
2) (int) vertex index
Returns:
(int) alpha
Description:
Returns the vertex alpha value.
ObjPrim_SetVertexIndex
Arguments:
1) (int) object ID
2) (int[]) indices
Description:
Sets vertex indices to the primitive object.
Required for particle list objects.
Example:
ObjPrim_SetPrimitiveType(obj, PRIMITIVE_TRIANGLELIST);
ObjPrim_SetVertexCount(obj, 4);
ObjPrim_SetVertexPosition(obj, 0, 0, 0);
ObjPrim_SetVertexPosition(obj, 1, 32, 0);
ObjPrim_SetVertexPosition(obj, 2, 0, 32);
ObjPrim_SetVertexPosition(obj, 3, 32, 32);
ObjPrim_SetVertexIndex(obj, [0, 1, 2, 1, 2, 3]);
--------------------------------> 2D Sprite Object Functions <--------------------------------
ObjSprite2D_SetSourceRect (overload)
Arguments:
1) (int) object ID
2) (int[4]) rect
Description:
Overloaded with 2 arguments.
ObjSprite2D_SetSourceRect(obj, rect[0], rect[1], rect[2], rect[3]);
ObjSprite2D_SetDestRect (overload)
Arguments:
1) (int) object ID
2) (float[4]) rect
Description:
Overloaded with 2 arguments.
ObjSprite2D_SetDestRect(obj, rect[0], rect[1], rect[2], rect[3]);
--------------------------------> 2D Sprite List Object Functions <--------------------------------
ObjSpriteList2D_SetSourceRect (overload)
Arguments:
1) (int) object ID
2) (int[4]) rect
Description:
Overloaded with 2 arguments.
ObjSpriteList2D_SetSourceRect(obj, rect[0], rect[1], rect[2], rect[3]);
ObjSpriteList2D_SetDestRect (overload)
Arguments:
1) (int) object ID
2) (float[4]) rect
Description:
Overloaded with 2 arguments.
ObjSpriteList2D_SetDestRect(obj, rect[0], rect[1], rect[2], rect[3]);
ObjSpriteList2D_SetAutoClearVertexCount
Arguments:
1) (int) object ID
2) (bool) clear
Description:
Sets whether the 2D sprite list object will clear its vertices upon rendering.
--------------------------------> 3D Sprite Object Functions <--------------------------------
ObjSprite3D_SetSourceRect (overload)
Arguments:
1) (int) object ID
2) (int[4]) rect
Description:
Overloaded with 2 arguments.
ObjSprite3D_SetSourceRect(obj, rect[0], rect[1], rect[2], rect[3]);
ObjSprite3D_SetDestRect (overload)
Arguments:
1) (int) object ID
2) (float[4]) rect
Description:
Overloaded with 2 arguments.
ObjSprite3D_SetDestRect(obj, rect[0], rect[1], rect[2], rect[3]);
ObjSprite3D_SetSourceDestRect (overload)
Arguments:
1) (int) object ID
2) (float[4]) rect
Description:
Overloaded with 2 arguments.
ObjSprite3D_SetSourceDestRect(obj, rect[0], rect[1], rect[2], rect[3]);
--------------------------------> Particle List Object Functions <--------------------------------
ObjParticleList_Create
Arguments:
1) (const) type
Description:
Creates a new particle list object and returns its ID.
Available types are:
OBJ_PARTICLE_LIST_2D
OBJ_PARTICLE_LIST_3D
Vertex shader rendering is always on, and rendering will fail if an improper custom shader is used.
Not using a custom shader will result in the default shader being used.
ObjParticleList_SetPosition
Arguments:
1) (int) object ID
2) X position
3) Y position
4) Z position
Description:
Sets the instance position data.
ObjParticleList_SetScaleX
Arguments:
1) (int) object ID
2) X scale
Description:
Sets the instance X scale data.
ObjParticleList_SetScaleY
Arguments:
1) (int) object ID
2) Y scale
Description:
Sets the instance Y scale data.
ObjParticleList_SetScaleZ
Arguments:
1) (int) object ID
2) Z scale
Description:
Sets the instance Z scale data.
ObjParticleList_SetScale
Arguments:
1) (int) object ID
2) X scale
3) Y scale
4) Z scale
Description:
Sets the instance scale data.
ObjParticleList_SetScale (Overload)
Arguments:
1) (int) object ID
2) scale
Description:
Overloaded with 2 arguments.
Sets the instance scale data.
ObjParticleList_SetScale(obj, 2); //-> ObjParticleList_SetScale(obj, 2, 2, 2);
ObjParticleList_SetAngleX
Arguments:
1) (int) object ID
2) X angle
Description:
Sets the instance X angle data.
ObjParticleList_SetAngleY
Arguments:
1) (int) object ID
2) Y angle
Description:
Sets the instance Y angle data.
ObjParticleList_SetAngleZ
Arguments:
1) (int) object ID
2) Z angle
Description:
Sets the instance Z angle data.
ObjParticleList_SetAngleXYZ
Arguments:
1) (int) object ID
2) X angle
3) Y angle
3) Z angle
Description:
Sets the instance XYZ angle data.
ObjParticleList_SetColor
Arguments:
1) (int) object ID
2) (int) red
3) (int) green
4) (int) blue
Description:
Sets the instance RGB color data.
ObjParticleList_SetColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the instance color data as an XRGB hexadecimal color value.
ObjParticleList_SetAlpha
Arguments:
1) (int) object ID
2) (int) alpha
Description:
Sets the instance alpha data.
ObjParticleList_SetExtraData
Arguments:
1) (int) object ID
2) data 1
2) data 2
2) data 3
Description:
Sets instance extra data.
These can be freely utilized by the scripters in case a custom shader is used.
ObjParticleList_AddInstance
Arguments:
1) (int) object ID
Description:
Submits the current data to the next instance.
ObjParticleList_ClearInstance
Arguments:
1) (int) object ID
Description:
Clears all previously submitted instance data of the current frame.
--------------------------------> Mesh Object Functions <--------------------------------
ObjMesh_SetColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the mesh object's color as an XRGB hexadecimal color value.
--------------------------------> Text Object Functions <--------------------------------
ObjText_GetText
Arguments:
1) (int) object ID
Returns:
(string) text
Description:
Returns the text of the text object.
ObjText_SetFixedWidth
Arguments:
1) (int) object ID
2) (int) width
Description:
Activates and sets the width of monospacing mode for the text object.
If width is <= 0, the spacing mode returns to regular dynamic spacing.
ObjText_SetFontWeight
Arguments:
1) (int) object ID
2) (int) weight
Description:
Sets the font weight for the following text object.
Weight ranges from 0 to 1000, with 0 being the lightest and 1000 being the thickest. -1 for the default weight.
Some fonts may not support all weight values.
*ObjText_SetFontBold(a, b) is equivalent to ObjText_SetFontWeight(a, b ? 700 : 400).
ObjText_SetFontCharacterSet
Arguments:
1) (int) object ID
2) (int) charset
Description:
Sets the charset for the following text object.
The following constants are defined:
CHARSET_ANSI
CHARSET_DEFAULT
CHARSET_SHIFTJIS
CHARSET_HANGUL
CHARSET_JOHAB
CHARSET_CHINESEBIG5
CHARSET_TURKISH
CHARSET_VIETNAMESE
CHARSET_HEBREW
CHARSET_ARABIC
CHARSET_THAI
For the full list of all charset values, refer to here:
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wmf/0d0b32ac-a836-4bd2-a112-b6000a1b4fc9
Avoid using CHARSET_DEFAULT, as it may be device-dependent.
To ensure that font glyphs generate correctly, match the text object's charset with the font's charset.
*The font charset is reset to either CHARSET_ANSI or CHARSET_SHIFTJIS every time ObjText_SetFontType is used.
ObjText_SetFontColorTop (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the text object's font's top color as an XRGB hexadecimal color value.
ObjText_SetFontColorBottom (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the text object's font's bottom color as an XRGB hexadecimal color value.
ObjText_SetFontBorderColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the text object's font's border color as an XRGB hexadecimal color value.
ObjText_SetVertexColor (Overload)
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Overloaded with 2 arguments.
Sets the text object's color as an ARGB hexadecimal color value.
--------------------------------> Sound Object Functions <--------------------------------
ObjSound_SetResumeEnable
Arguments:
1) (int) object ID
2) (bool) resume enable
Description:
Formerly ObjSound_SetRestartEnable.
Function unchanged.
If set to true, using ObjSound_Play on the sound object that was previously stopped with ObjSound_Stop will resume playing where it last left off.
ObjSound_Seek
Arguments:
1) (int) object ID
2) time
Description:
Seeks to the specified time in the audio.
ObjSound_SeekSampleCount
Arguments:
1) (int) object ID
2) (int) sample
Description:
Seeks to the specified sample in the audio.
ObjSound_SetFrequency
Arguments:
1) (int) object ID
2) (int) frequency
Description:
Sets the frequency of the audio in sample rate.
Can be used to increase or decrease play speed.
An input of 0 will reset the value to the audio's original frequency.
ObjSound_GetInfo
Arguments:
1) (int) object ID
2) (const) type
Returns:
[varies]
Description:
Returns the value of the requested information about the sound object.
List of available information types:
INFO_FORMAT
- The format of the audio file.
- SOUND_UNKNOWN
- SOUND_WAVE
- SOUND_OGG
- SOUND_MP3
- SOUND_AWAVE
- SOUND_MIDI
INFO_CHANNEL
- The number of channels.
INFO_SAMPLE_RATE
- The sample rate of the audio in hertz.
- ObjSound_SetFrequency does not affect this value.
INFO_AVG_BYTE_PER_SEC
- The average byte per one second of audio.
INFO_BLOCK_ALIGN
- The block align. (channel * bytePerSample)
INFO_BIT_PER_SAMPLE
- The bits per sample of the audio.
INFO_POSITION
- The current reading position of the audio in seconds.
INFO_POSITION_SAMPLE
- The current reading position of the audio in sample count.
INFO_LENGTH
- The total length of the audio in seconds.
INFO_LENGTH_SAMPLE
- The total length of the audio in sample count.
--------------------------------> Text File Object Functions <--------------------------------
ObjFileT_SetLineText
Arguments:
1) (int) object ID
2) (int) line number
3) (string) new text
Description:
Sets the text of the given line of the text file object.
*Note that the actual file content is only updated upon calling ObjFile_Store.
--------------------------------> Binary File Object Functions <--------------------------------
ObjFileB_GetLastRead
Arguments:
1) (int) object ID
Returns:
(int) result
Description:
Returns the amount of bytes read at the last read operation.
A result of 0 may indicate an end-of-file.
ObjFileB_ReadBoolean
Arguments:
1) (int) object ID
Returns:
(bool) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads a boolean value from the binary file object.
Advances the read pointer by 1.
ObjFileB_ReadByte
Arguments:
1) (int) object ID
Returns:
(int) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads a byte value from the binary file object.
Advances the read pointer by 1.
ObjFileB_ReadShort
Arguments:
1) (int) object ID
Returns:
(int) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads a short integer value from the binary file object.
Advances the read pointer by 2.
ObjFileB_ReadInteger
Arguments:
1) (int) object ID
Returns:
(int) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads an integer value from the binary file object.
Advances the read pointer by 4.
ObjFileB_ReadLong
Arguments:
1) (int) object ID
Returns:
(int) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads a long integer value from the binary file object.
Advances the read pointer by 8.
ObjFileB_ReadFloat
Arguments:
1) (int) object ID
Returns:
(float) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads a single-precision float value from the binary file object.
Advances the read pointer by 4.
ObjFileB_ReadDouble
Arguments:
1) (int) object ID
Returns:
(float) result
Description:
Change.
No longer throws an error upon attempting to read past the end-of-file.
Reads a double-precision float value from the binary file object.
Advances the read pointer by 8.
ObjFileB_WriteBoolean
Arguments:
1) (int) object ID
2) (bool) value
Returns:
(int) bytes written
Description:
Writes a boolean value to the binary file object at the current write pointer.
Advances the write pointer by 1.
ObjFileB_WriteByte
Arguments:
1) (int) object ID
2) (int) value
Returns:
(int) bytes written
Description:
Writes a boolean value to the binary file object at the current write pointer.
Advances the write pointer by 1.
ObjFileB_WriteShort
Arguments:
1) (int) object ID
2) (int) value
Returns:
(int) bytes written
Description:
Writes a short integer value to the binary file object at the current write pointer.
Advances the write pointer by 2.
ObjFileB_WriteInteger
Arguments:
1) (int) object ID
2) (int) value
Returns:
(int) bytes written
Description:
Writes an integer value to the binary file object at the current write pointer.
Advances the write pointer by 4.
ObjFileB_WriteLong
Arguments:
1) (int) object ID
2) (int) value
Returns:
(int) bytes written
Description:
Writes a long integer value to the binary file object at the current write pointer.
Advances the write pointer by 8.
ObjFileB_WriteFloat
Arguments:
1) (int) object ID
2) value
Returns:
(int) bytes written
Description:
Writes a single-precision float value to the binary file object at the current write pointer.
Advances the write pointer by 4.
ObjFileB_WriteDouble
Arguments:
1) (int) object ID
2) value
Returns:
(int) bytes written
Description:
Writes a double-precision float value to the binary file object at the current write pointer.
Advances the write pointer by 8.
----------------------------------------------> [Stage Script] <----------------------------------------------
--------------------------------> Basic Stage Functions <--------------------------------
SetStgFrame (Overload)
Arguments:
1) (int) frame left
2) (int) frame top
3) (int) frame right
4) (int) frame bottom
5) (int) STG frame render priority - starting (inclusive)
6) (int) STG frame render priority - ending (exclusive)
7) (int) 2D camera render priority
Description:
Overloaded with 7 arguments.
Additional ability to change the render priority of the 2D camera.
SetIntersectionVisualization
Arguments:
1) (bool) enable
Description:
Enables active visualization of all intersection object hitboxes.
Color codes:
Green : Player hitbox+grazebox
Blue : Player shot
Cyan : Player spell
Yellow : Enemy hitbox+killbox
Red : Enemy shot
SetIntersectionVisualizationRenderPriority
Arguments:
1) (int) render priority
Description:
Sets the render priority of hitbox visualizations.
Default value is 68. (GetCameraFocusPermitPriorityI() - 1)
--------------------------------> Player Functions <--------------------------------
GetPlayerScriptID
Returns:
(int) script ID
Description:
Returns the script ID of the player object.
GetPlayerAutoItemCollectLine
Returns:
(float) position
Description:
Returns the position of the player's item autocollection line.
SetPlayerItemScope
Arguments:
1) (int) value
Description:
Sets the player's item collection scope radius.
Effect equivalent to CollectItemsInCircle.
GetPlayerItemScope
Returns:
(float) scope size
Description:
Gets the player's item collection scope radius.
SetPlayerInvincibleGraze
Arguments:
1) (bool) enable
Description:
Sets whether the player can graze during invincbility period.
True by default. All hail ZUN's engine.
SetPlayerIntersectionEraseShot
Arguments:
1) (bool) enable
Description:
Sets whether shots colliding with the player would get automatically deleted.
True by default. All hail ZUN's engine. Again. LOUDER!
SetPlayerStateEndEnable
Arguments:
1) (bool) enable
Description:
Sets whether STATE_END is permitted to activate.
If set to false, player life will continue below 0 upon each death without limit.
False by default if the main script is a package script.
SetPlayerShootdownEventEnable
Arguments:
1) (bool) enable
Description:
Sets whether EV_PLAYER_SHOOTDOWN will be notified upon the player's death.
Setting it to false would also disable STATE_DOWN and STATE_END from ever occuring.
SetPlayerRebirthPosition
Arguments:
1) x
2) y
Description:
Sets the respawn point of the player.
Use REBIRTH_DEFAULT in either position to reset it to its default value.
--------------------------------> Enemy Functions <--------------------------------
SetEnemyAutoDeleteClip
Arguments:
1) (int) left
2) (int) top
3) (int) right
4) (int) bottom
Description:
Sets the margin that enemy objects are allowed to traverse past the edges of the STG field before getting automatically deleted.
Basically, SetShotAutoDeleteClip for enemies.
--------------------------------> Shot Functions <--------------------------------
CreateShotA2 (overload)
Arguments:
1) x
2) y
3) speed
4) angle
5) acceleration
6) max speed
7) angular velocity
8) (int) shot graphic ID
9) (int) delay
Returns:
(int) object ID
Description:
Overloaded with 9 arguments.
CreateShotA2 with an additional argument for angular velocity.
CreateShotC1
Arguments:
1) position x
2) position y
3) x speed
4) y speed
5) angular offset
6) (int) shot graphic ID
7) (int) delay
Returns:
(int) object ID
Description:
Creates a shot object using the C-movement mode and returns its object ID.
C-movement pattern:
The C-movement pattern is essentially B-movement with a twist.
There is an additional "angle offset" property which acts as a rotation vector for the X and Y speeds.
To be precise:
realSpeedXY = Rotate2D(speedX, speedY, angleOffset);
CreateShotC2
Arguments:
1) position x
2) position y
3) x speed
4) y speed
5) x acceleration
6) y acceleration
7) x max speed
8) y max speed
9) angle offset
10) angle offset acceleration
11) (int) shot graphic ID
12) (int) delay
Returns:
(int) object ID
Description:
Creates a shot object using the C-movement mode and returns its object ID.
CreateShotOC1
Arguments:
1) (int) parent object
2) x speed
3) y speed
4) angular offset
5) (int) shot graphic ID
6) (int) delay
Returns:
(int) object ID
Description:
Creates a shot object using the C-movement mode on the position of the parent object and returns its object ID.
GetAllShotID
Arguments:
1) (const) type
Returns:
(int[]) shot object IDs
Description:
Returns an array of all shot object IDs of the given type.
Available types:
TARGET_ALL
TARGET_PLAYER
TARGET_ENEMY
GetShotDataInfoA1
Returns:
[varies]
Description:
Addition + Change.
No longer throws an error if the given shot graphic ID is invalid.
INFO_EXISTS - Returns whether the given shot graphic ID exists.
INFO_PATH - Returns the image path of the given shot graphic ID.
INFO_IS_FIXED_ANGLE - Returns whether the given shot graphic ID has had fixed_angle enabled.
SetShotTextureFilter
Arguments:
1) (const) filter min
2) (const) filter mag
Description:
Sets the min and mag texture filtering modes for rendering shot objects.
The default filtering modes are FILTER_LINEAR and FILTER_LINEAR.
--------------------------------> Item Functions <--------------------------------
SetItemAutoDeleteClip
Arguments:
1) (int) left
2) (int) top
3) (int) right
4) (int) bottom
Description:
Sets the margin that item objects are allowed to traverse past the edges of the STG field before getting automatically deleted.
Basically, SetShotAutoDeleteClip for items.
GetItemIdInCircleA1
Arguments:
1) circle x
2) circle y
3) circle radius
Returns:
(int[]) item object IDs
Description:
Returns the object ID of all item objects within the specified circle.
GetItemIdInCircleA2
Arguments:
1) circle x
2) circle y
3) circle radius
4) (int) item type
Returns:
(int[]) item object IDs
Description:
Returns the object ID of all item objects of the specified type within the specified circle.
SetItemTextureFilter
Arguments:
1) (const) filter min
2) (const) filter mag
Description:
Sets the min and mag texture filtering modes for rendering item objects.
The default filtering modes are FILTER_LINEAR and FILTER_LINEAR.
--------------------------------> Intersection Functions <--------------------------------
IsIntersected_Obj_Obj
Arguments:
1) (int) object ID 1
2) (int) object ID 2
Returns:
(bool) intersection
Description:
Returns true if any of both object's hitboxes intersect at least once.
IsIntersected_Obj_Obj_All
Arguments:
1) (int) object ID 1
2) (int) object ID 2
Returns:
(bool) intersection
Description:
Returns true if all of both object's hitboxes intersect with any of each other's at least once.
--------------------------------> Move Object Functions <--------------------------------
ObjMove_SetSpeed
Description:
Addition.
Also works on B-pattern and C-pattern movements.
ObjMove_SetAngle
Description:
Addition.
Also works on B-pattern and C-pattern movements.
ObjMove_SetAcceleration
Description:
Addition.
Also works on B-pattern and C-pattern movements.
ObjMove_SetMaxSpeed
Description:
Addition.
Also works on B-pattern and C-pattern movements.
ObjMove_SetAngularVelocity
Description:
Addition.
Also works on C-pattern movement.
ObjMove_SetAngularAcceleration
Arguments:
1) (int) object ID
2) angular acceleration
Description:
Sets the move object's angular acceleration.
Works on A-pattern and C-pattern movements.
ObjMove_SetAngularMaxVelocity
Arguments:
1) (int) object ID
2) angular max velocity
Description:
Sets the move object's angular max velocity.
Works on A-pattern and C-pattern movements.
ObjMove_SetSpeedX
Arguments:
1) (int) object ID
2) speed
Description:
Sets the move object's X speed.
Works on A-pattern, B-pattern, and C-pattern movements.
ObjMove_SetSpeedY
Arguments:
1) (int) object ID
2) speed
Description:
Sets the move object's Y speed.
Works on A-pattern, B-pattern, and C-pattern movements.
ObjMove_SetSpeedXY
Arguments:
1) (int) object ID
2) x speed
2) y speed
Description:
Sets the move object's X and Y speeds.
Works on A-pattern, B-pattern, and C-pattern movements.
ObjMove_GetSpeedX
Arguments:
1) (int) object ID
Returns:
(float) x speed
Description:
Gets the move object's X speed.
ObjMove_GetSpeedY
Arguments:
1) (int) object ID
Returns:
(float) y speed
Description:
Gets the move object's Y speed.
ObjMove_SetDestAtFrame (Overload)
Arguments:
1) (int) object ID
2) target x
3) target y
4) (int) frame
5) (const) interpolation mode
Description:
Overloaded with 5 arguments.
Moves the object to the target position in the given frames using the specified interpolation mode.
Available movement interpolation modes:
LERP_LINEAR:
Linear interpolation.
LERP_SMOOTH:
Smooth interpolation.
LERP_SMOOTHER:
Smoother interpolation.
LERP_ACCELERATE:
Accelerating interpolation.
LERP_DECELERATE:
Decelerating interpolation.
ObjMove_AddPatternA2 (overload)
Arguments:
1) (int) object ID
2) (int) frame
3) speed
4) angle
5) acceleration
6) max speed
7) angular velocity
Description:
Overloaded with 7 arguments.
Additional ability to specify angular velocity.
ObjMove_AddPatternA3
Arguments:
1) (int) object ID
2) (int) frame
3) speed
4) angle
5) acceleration
6) max speed
7) angular velocity
8) (int) shot graphic ID
Description:
Change.
Swapped max speed and angular velocity.
ObjMove_AddPatternA4
Arguments:
1) (int) object ID
2) (int) frame
3) speed
4) angle
5) acceleration
6) max speed
7) angular velocity
8) (int) shot graphic ID
9) (int) relative object ID
Description:
Change.
Swapped max speed and angular velocity.
ObjMove_AddPatternA5
Arguments:
1) (int) object ID
2) (int) frame
3) speed
4) angle
5) acceleration
6) max speed
7) angular velocity
8) angular acceleration
9) angular max velocity
10) (int) shot graphic ID
11) (int) relative object ID
Description:
Self-explanatory.
ObjMove_AddPatternC1
Arguments:
1) (int) object ID
2) (int) frame
3) x speed
4) y speed
5) angle offset
Description:
Adds a C-movement pattern to the object that will activate after the specified frames after the function call.
ObjMove_AddPatternC2
Arguments:
1) (int) object ID
2) (int) frame
3) x speed
4) y speed
5) x acceleration
6) y acceleration
7) x max speed
8) y max speed
10) angle offset
11) angle offset velocity
Description:
Self-explanatory.
ObjMove_AddPatternC3
Arguments:
1) (int) object ID
2) (int) frame
3) x speed
4) y speed
5) x acceleration
6) y acceleration
7) x max speed
8) y max speed
10) angle offset
11) angle offset velocity
12) (int) shot graphic ID
Description:
Self-explanatory.
ObjMove_AddPatternC4
Arguments:
1) (int) object ID
2) (int) frame
3) x speed
4) y speed
5) x acceleration
6) y acceleration
7) x max speed
8) y max speed
9) angle offset
10) angle offset velocity
11) angle offset acceleration
12) angle offset max speed
13) (int) shot graphic ID
Description:
Self-explanatory.
ObjMove_AddPatternD1
Arguments:
1) (int) object ID
2) (int) frame
3) target x
4) target y
5) speed
Description:
An AddPattern version of ObjMove_SetDestAtSpeed.
ObjMove_AddPatternD2
Arguments:
1) (int) object ID
2) (int) frame
3) target x
4) target y
5) (int) frame duration
Description:
An AddPattern version of ObjMove_SetDestAtFrame.
ObjMove_AddPatternD2 (overload)
Arguments:
1) (int) object ID
2) (int) frame
3) target x
4) target y
5) (int) frame duration
6) (const) interpolation mode
Description:
Overloaded with 6 arguments.
An AddPattern version of ObjMove_SetDestAtFrame.
ObjMove_AddPatternD3
Arguments:
1) (int) object ID
2) (int) frame
3) target x
4) target y
5) weight
6) max speed
Description:
An AddPattern version of ObjMove_SetDestAtWeight.
ObjMove_SetProcessMovement
Arguments:
1) (int) object ID
2) (bool) enable
Description:
Sets whether the object will be allowed to execute movement-related routines.
*ObjMove_SetX/Y/Position would still alter the object's position.
ObjMove_GetProcessMovement
Arguments:
1) (int) object ID
Returns:
(bool) result
Description:
Returns true if the object is allowed to execute movement-related routines.
ObjMove_GetMovementType
Arguments:
1) (int) object ID
Returns:
(const) movement type
Description:
Returns the current movement type of the move object.
Possible return values:
MOVE_NONE ; The object doesn't have an active movement function. (May be caused by ObjMove_CancelMovement.)
MOVE_ANGLE ; A-pattern movement. (Angle)
MOVE_XY ; B-pattern movement. (XY)
MOVE_XY_ANGLE ; C-pattern movement. (XY-Angle)
MOVE_LINE ; D-pattern movement. (Line, ObjMove_SetDestAtXXX)
MOVE_OTHER ; Other movements.
ObjMove_CancelMovement
Arguments:
1) (int) object ID
Description:
Cancels the object's current movement routine.
--------------------------------> Enemy Object Functions <--------------------------------
ObjEnemy_GetInfo
Description:
Addition.
INFO_DAMAGE_PREVIOUS_FRAME:
Returns the amount of damage the enemy received in the previous frame.
ObjEnemy_SetAutoDelete
Arguments:
1) (int) object ID
2) (bool) auto delete
Description:
ObjShot_SetAutoDelete, but for enemy objects.
See: SetEnemyAutoDeleteClip
Default value is false.
ObjEnemy_SetDeleteFrame
Arguments:
1) (int) object ID
2) (int) frame
Description:
ObjShot_SetDeleteFrame, but for enemy objects.
ObjEnemy_AddLifeEx
Arguments:
1) (int) object ID
2) life
Description:
Adds life to the enemy object with respect to the enemy object's maximum damage.
Negative value (damaging) will count towards the maximum damage as if getting hit by a player shot.
Positive value (healing) will reduce the damage count and allow more damage to be dealt in the frame equal to how much the healing was.
ObjEnemy_SetMaximumDamage
Arguments:
1) (int) object ID
2) maximum damage
Description:
Sets the maximum amount of damage that the enemy object can receive through normal means in a single frame.
Default value is, for all intents and purposes, infinity.
ObjEnemy_GetIntersectionCircleListToShot
Arguments:
1) (int) object ID
Returns:
(float[3][]) intersection circles
Description:
Returns an array of arrays of the enemy object's intersection circle to player shot.
e.g. [[x1, y1, radius1], [x2, y2, radius2], ...]
ObjEnemy_GetIntersectionCircleListToPlayer
Arguments:
1) (int) object ID
Returns:
(float[3][]) intersection circles
Description:
Returns an array of arrays of the enemy object's intersection circle to player hitbox.
e.g. [[x1, y1, radius1], [x2, y2, radius2], ...]
ObjEnemy_SetEnableIntersectionPositionFetching
Arguments:
1) (int) object ID
2) (bool) enable
Description:
If set to false, the following functions will not include the specified enemy object's hitboxes.
GetEnemyIntersectionPosition
GetEnemyIntersectionPositionByIdA1
GetEnemyIntersectionPositionByIdA2
GetAllEnemyIntersectionPosition
--------------------------------> Enemy Boss Scene Object Functions <--------------------------------
ObjEnemyBossScene_GetInfo
Description:
Addition.
INFO_IS_REQUIRE_ALL_DOWN:
Returns if EV_REQUEST_REQUIRE_ALL_DOWN was set to true.
ObjEnemyBossScene_EndSpell
Arguments:
1) (int) boss scene object ID
Description:
Marks the current single as being not-a-spell.
I literally do not know why I added this.
ObjEnemyBossScene_SetUnloadCache
Arguments:
1) (int) boss scene object ID
2) (bool) unload
Description:
If set to true, will unload all added scripts from the script source cache upon boss scene end or object deletion.
--------------------------------> Shot Object Functions <--------------------------------
ObjShot_SetOwnerType
Arguments:
1) (int) object ID
2) (const) type
Description:
Sets the shot object's owner type.
Available types are:
OWNER_PLAYER
OWNER_ENEMY
Shots created inside a player script are set to OWNER_PLAYER by default, OWNER_ENEMY otherwise.
ObjShot_GetIntersectionEnable
Arguments:
1) (int) object ID
Returns:
(bool) intersection enable
Description:
Returns whether ObjShot_SetIntersectionEnable was set on the shot object.
ObjShot_SetIntersectionScaleX
Arguments:
1) (int) object ID
2) scale
Description:
Sets the shot object's X hitbox scale.
For normal shots, the true scale is the half-point between the X and Y scales.
ObjShot_SetIntersectionScaleY
Arguments:
1) (int) object ID
2) scale
Description:
Sets the shot object's Y hitbox scale.
For normal shots, the true scale is the half-point between the X and Y scales.
ObjShot_SetIntersectionScaleXY
Arguments:
1) (int) object ID
2) X scale
3) Y scale
Description:
Sets the shot object's X and Y hitbox scales.
For normal shots, the true scale is the half-point between the X and Y scales.
Note: Sorry folks, no ellipse hitboxes for you.
ObjShot_SetPositionRounding
Arguments:
1) (int) object ID
2) (bool) enable
Description:
If set to true, will cause the shot object to only render in non-floating point coordinates.
See: Official Touhou games
ObjShot_SetAngleRounding
Arguments:
1) (int) object ID
2) snap angle
Description:
Causes the shot render angle to be rounded to the nearest multiple of the given angle.
If the angle is <= 0, angle rounding will be disabled.
See: PC-98 Touhou games
ObjShot_SetDelayMotionEnable
Arguments:
1) (int) object ID
2) (bool) enable
Description:
If set to true, will enable the shot object to move in its delay period.
Only works on regular shots.
Default is false.
ObjShot_SetDelayGraphic
Arguments:
1) (int) object ID
2) (int) image ID
Description:
Sets the image ID of the shot object's delay cloud.
A negative value will reset the delay cloud graphic to default.
ObjShot_SetDelayScaleParameter
Arguments:
1) (int) object ID
2) parameter 1 (Designated "S0")
3) parameter 2 (Designated "S1")
4) parameter 3 (Designated "S2")
Description:
Sets the properties of the shot object's delay cloud's scale.
DELAY_DEFAULT:
scale = min(S0 + delay / S2, S1)
DELAY_LERP:
scale = lerpFunction(S0, S1, delay / S2)
ObjShot_SetDelayAlphaParameter
Arguments:
1) (int) object ID
2) parameter 1 (Designated "A0")
3) parameter 2 (Designated "A1")
4) parameter 3 (Designated "A2")
Description:
Sets the properties of the shot object's delay cloud's alpha.
Alpha value range is 0 to 1.
DELAY_DEFAULT:
alpha = min(A0 + delay / A2, A1)
DELAY_LERP:
alpha = lerpFunction(A0, A1, delay / A2)
ObjShot_SetDelayMode
Arguments:
1) (int) object ID
2) (const) delay mode
3) (const) scale interpolation mode
4) (const) alpha interpolation mode
Description:
Sets the properties of the shot object's delay cloud.
Available delay modes:
DELAY_DEFAULT:
Default Danmakufu delay.
DELAY_LERP:
ZUN-like delay.
Available delay interpolation modes:
LERP_LINEAR:
Linear interpolation.
LERP_SMOOTH:
Smooth interpolation.
LERP_SMOOTHER:
Smoother interpolation.
LERP_ACCELERATE:
Accelerating interpolation.
LERP_DECELERATE:
Decelerating interpolation.
ObjShot_SetDelayColor
Arguments:
1) (int) object ID
2) (int) hex color
Description:
Sets the color of the shot object's delay cloud as an ARGB hexadecimal color value.
Set to 0 to revert to using the shot data's delay color.
ObjShot_SetDelayColoringEnable
Arguments:
1) (int) object ID
2) (bool) enable
Description:
When set to true, enables the object color to affect the shot object's delay cloud.
ObjShot_SetGrazeInvalidFrame
Arguments:
1) (int) object ID
2) (int) cooldown frame
Description:
Sets the shot object's graze cooldown frame.
After being grazed, the shot will be put on graze cooldown, wherein it cannot be grazed for the duration.
For lasers, the default value is 20.
For normal shots, the default value is 2147483647.
ObjShot_SetGrazeFrame
Arguments:
1) (int) object ID
2) (int) frame
Description:
Sets the shot object's graze frame.
Internally, this value is reset to the graze invalid frame every time a graze is performed.
This value decreases by 1 every frame, and the shot object is eligible for a graze if it is equal to or less than 0.
ObjShot_IsValidGraze
Arguments:
1) (int) object ID
Returns:
(bool) graze validity
Description:
Returns whether the shot object is currently able to be grazed.
ObjShot_SetPenetrateShotEnable
Arguments:
1) (int) object ID
2) (bool) enable
Description:
If set to false, the shot will not lose penetration upon collision with another enemy shot.
Intended to be used with players shots, in tandem with ObjShot_SetEraseShot.
Default is true.
ObjShot_SetEnemyIntersectionInvalidFrame
Arguments:
1) (int) object ID
2) (int) cooldown
Description:
Sets the enemy intersection cooldown duration in frames for the shot object.
Intersection with an enemy will add the enemy to the shot's cooldown list.
The shot will not be able to intersect enemy objects still on hit cooldown.
Cooldown is maintained by the shot, not the enemy.
Shot A intersecting and putting an enemy on cooldown will not stop Shot B from registering intersection with the same enemy.
ObjShot_SetFixedAngle
Arguments:
1) (int) object ID
2) (bool) fixed angle
Description:
If set to true, the shot will not visually rotate along its movement angle.
The default value is specified in the graphic's shot data as "fixed_angle", this function allows you to override that value.
ObjShot_SetSpinAngularVelocity
Arguments:
1) (int) object ID
2) spin angular velocity
Description:
Sets the Z angle spin speed of the shot graphic.
The default spin speed is specified in the graphic's shot data as "angular_velocity", this function allows you to override that value.
ObjShot_SetDelayAngularVelocity
Arguments:
1) (int) object ID
2) delay angular velocity
Description:
Sets the Z angle spin speed of the shot's delay cloud.
The default delay spin speed is 0.
--------------------------------> Straight Laser Object Functions <--------------------------------
ObjLaser_SetInvalidLength
Description:
Change.
Both invalid lengths now scale from 0 to 1 rather than 0 to 100.
ObjStLaser_SetEnd
Arguments:
1) (int) object ID
2) (bool) set
Description:
Sets whether a delay cloud will appear at the end of the straight laser object.
ObjStLaser_SetEndGraphic
Arguments:
1) (int) object ID
2) (int) graphic ID
Description:
Sets the shot image ID of the straight laser object "end" delay cloud.
See: ObjShot_SetDelayGraphic
ObjStLaser_SetDelayScale
Arguments:
1) (int) object ID
2) source scale multiplier
3) end scale multiplier
Description:
Sets the scale multipliers of the straight laser object's delay clouds.
The default values are (1, 1).
ObjStLaser_SetPermitExpand
Arguments:
1) (int) object ID
2) (bool) enable
Description:
Sets whether the straight laser will expand after the delay period.
Intended for use in delay lines.
ObjStLaser_GetPermitExpand
Arguments:
1) (int) object ID
Returns:
(bool) permit expand
Description:
Returns whether the straight laser is permitted to expand after the delay period.
--------------------------------> Curvy Laser Object Functions <--------------------------------
ObjCrLaser_SetTipCapping
Arguments:
1) (int) object ID
2) (bool) enable
Description:
Sets whether the curvy laser will attempt to keep its graphic's tips proportional to the upper and lower halves of its sprite.
The exact middle of the sprite will be stretched along the laser's body between the tips.
Can be used to emulate PC-98-styled "cheeto lasers".
ObjCrLaser_GetNodePointer
Arguments:
1) (int) object ID
2) (int) node index
Returns:
(pointer) node pointer
Description:
Returns the pointer value of the specified node index.
The pointer is used in other node-related functions.
As node traversal is relatively expensive, it is not recommended to repeatedly use this function.
At each frame, the node at the laser's end is invalidated if the laser is able to move.
Using an invalid pointer may cause a memory access violation.
ObjCrLaser_GetNodePointerList
Arguments:
1) (int) object ID
Returns:
(pointer[]) node pointers
Description:
Returns a list of node pointers of the curvy laser object.
The pointers are used in other node-related functions.
At each frame, the node at the laser's end is invalidated if the laser is able to move.
Using an invalid pointer may cause a memory access violation.
ObjCrLaser_GetNodePosition
Arguments:
1) (int) object ID
2) (pointer) node pointer
Returns:
(float[2]) node position
Description:
Returns the [x, y] position array of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_GetNodeAngle
Arguments:
1) (int) object ID
2) (pointer) node pointer
Returns:
(float) node angle
Description:
Returns the facing angle of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_GetNodeWidthScale
Arguments:
1) (int) object ID
2) (pointer) node pointer
Returns:
(float) node width
Description:
Returns the render width scale of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_GetNodeColor
Arguments:
1) (int) object ID
2) (pointer) node pointer
Returns:
(int[4]) node color
Description:
Returns the [a, r, g, b] color array of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_GetNodeColorHex
Arguments:
1) (int) object ID
2) (pointer) node pointer
Returns:
(int) hex color
Description:
Returns the ARGB hexadecimal color value of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_SetNode
Arguments:
1) (int) object ID
2) (pointer) node pointer
3) node X
4) node Y
5) node angle
6) (int) node hex color
Description:
Sets the position, angle, and color of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_SetNode (Overload)
Arguments:
1) (int) object ID
2) (pointer) node pointer
3) node X
4) node Y
5) node angle
6) (int) node hex color
7) =node width scale
Description:
Overloaded with 7 arguments.
Additional ability to set node render width render.
ObjCrLaser_SetNodePosition
Arguments:
1) (int) object ID
2) (pointer) node pointer
3) node X
4) node Y
Description:
Sets the position of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_SetNodeAngle
Arguments:
1) (int) object ID
2) (pointer) node pointer
3) node angle
Description:
Sets the angle of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_SetNodeWidthScale
Arguments:
1) (int) object ID
2) (pointer) node pointer
3) node scale
Description:
Sets the render width scale of the specified node.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_SetNodeColor
Arguments:
1) (int) object ID
2) (pointer) node pointer
3) (int) node hex color
Description:
Sets the color of the specified node as an ARGB hexadecimal color value.
The node pointer is obtained with ObjCrLaser_GetNodePointer[List], do NOT pass in any other values.
ObjCrLaser_AddNode
Arguments:
1) (int) object ID
2) node X
3) node Y
4) node angle
5) (int) node hex color
Description:
Adds a laser node at the end of the curvy laser with the specified position, angle, and color.
ObjCrLaser_AddNode (Overload)
Arguments:
1) (int) object ID
2) node X
3) node Y
4) node angle
5) (int) node hex color
6) node width scale
Description:
Overloaded with 6 arguments.
Additional ability to specify node render width render.
--------------------------------> Shot Pattern Object Functions <--------------------------------
ObjPatternShot_Create
Description:
Creates a pattern shot object and returns its object ID.
Can be used for firing a large amount of bullets with only a few function calls, like in ZUN's ECL scripts.
ObjPatternShot_Fire
Arguments:
1) (int) object ID
Description:
Fires the shot pattern defined by the given shot pattern object.
ObjPatternShot_FireReturn
Arguments:
1) (int) object ID
Returns:
(int[]) shot IDs
Description:
Fires the shot pattern defined by the given shot pattern object and returns the IDs of the created shots in an array.
ObjPatternShot_SetParentObject
Arguments:
1) (int) object ID
2) (int) parent object ID
Description:
Sets the parent object of the given shot pattern object.
ObjPatternShot_SetPatternType
Arguments:
1) (int) object ID
2) (const) type
Description:
Sets the firing pattern of the given shot pattern object.
Available pattern types:
PATTERN_FAN
PATTERN_FAN_AIMED
PATTERN_RING
PATTERN_RING_AIMED
PATTERN_ARROW
PATTERN_ARROW_AIMED
PATTERN_POLYGON
- [way]: Number of polygon vertices.
- [stack]: Number of shots per sides.
- [angle argument]: Edge skip, should normally be 1. Other values will result in polygrams.
- [speed argument]: No effect.
PATTERN_POLYGON_AIMED
PATTERN_ELLIPSE
- [stack]: No effect.
- [angle argument]: Angle of the ellipse. (Not of the shots)
- [base speed]: Max speed at the ends of the primary axis.
- [speed argument]: Max speed at the ends of the secondary axis.
PATTERN_ELLIPSE_AIMED
PATTERN_SCATTER_ANGLE
PATTERN_SCATTER_SPEED
PATTERN_SCATTER
PATTERN_LINE
PATTERN_ROSE
- [way]: Number of "petals".
- [stack]: Number of shots per petals.
ObjPatternShot_SetShotType
Arguments:
1) (int) object ID
2) (const) type
Description:
Sets the shot type of the given shot pattern object.
Supported types:
OBJ_SHOT
OBJ_LOOSE_LASER
OBJ_CURVE_LASER
ObjPatternShot_SetInitialBlendMode
Arguments:
1) (int) object ID
2) (const) blend type
Description:
Sets the initial blend type of the shots.
See ObjRender_SetBlendType for the list of blend types.
ObjPatternShot_SetShotCount
Arguments:
1) (int) object ID
2) (int) way
3) (int) stack
Description:
Sets the shot way and shot stack of the given shot pattern object.
ObjPatternShot_SetSpeed
Arguments:
1) (int) object ID
2) base speed
3) speed argument
Description:
Sets the shot speed and argument of the given shot pattern object.
ObjPatternShot_SetAngle
Arguments:
1) (int) object ID
2) base angle
3) angle argument
Description:
Sets the shot angle and argument of the given shot pattern object.
ObjPatternShot_SetBasePoint
Arguments:
1) (int) object ID
2) X position
3) Y position
Description:
Sets the base firing position of the given shot pattern object.
Defaults to the parent object's position if not used.
Use PATTERN_BASEPOINT_RESET in either arguments to reset it to the parent object's position.
ObjPatternShot_SetBasePointOffset
Arguments:
1) (int) object ID
2) X offset
3) Y offset
Description:
Sets the firing position offset of the given shot pattern object from its base point.
ObjPatternShot_SetBasePointOffsetCircle
Arguments:
1) (int) object ID
2) angle
3) radius
Description:
Sets the firing position offset in a circular manner of the given shot pattern object from its base point.
Equivalent to ObjPatternShot_SetBasePointOffset(obj, radius * cos(angle), radius * sin(angle));
ObjPatternShot_SetShootRadius
Arguments:
1) (int) object ID
2) radius
Description:
Causes the shots to be fired a certain radius away from their base points.
ObjPatternShot_SetDelay
Arguments:
1) (int) object ID
2) (int) delay
Description:
Sets the shot delay of the given shot pattern object.
ObjPatternShot_SetGraphic
Arguments:
1) (int) object ID
2) (int) graphic
Description:
Sets the shot image ID of the given shot pattern object.
ObjPatternShot_SetLaserParameter
Arguments:
1) (int) object ID
2) width
3) length
Description:
Sets the length and width of the given shot pattern object.
Has no effect if the pattern is firing normal shots.
ObjPatternShot_CopySettings
Arguments:
1) (int) destination object ID
2) (int) source object ID
Description:
Copies the settings of a shot pattern object to another.
ObjPatternShot_AddTransform
Arguments:
1) (int) object ID
2) (const) transform type
3+) transform arguments...
Description:
Adds a transformation to the shot pattern object.
Transforms arguments will be designated, in order: [arg0], [arg1], [arg2], etc...
Available transformations are:
TRANSFORM_WAIT (argc = 1)
- Delays the next transformation for [arg0] frames.
TRANSFORM_ADD_SPEED_ANGLE (argc = 4)
- Waits for [arg1] frames. (Does not delay the next transformation)
- For [arg0] frames, sets acceleration to [arg2].
- For [arg0] frames, sets angular velocity to [arg3].
TRANSFORM_ANGULAR_MOVE (argc = 3)
- For [arg0] frames, sets angular velocity to [arg1].
- Sets shot graphic "spin" to [arg2].
TRANSFORM_N_DECEL_CHANGE (argc = 5)
- For [arg1] times, decelerates/accelerates the shot to a complete halt in [arg0] frames. (See: Aunn's first spell)
- Movement will then change depending on [arg2].
- 0: Changes the movement angle to [arg4].
- 1: Increments the movement angle by [arg4].
- 2: Aims to the player with an added randomness factor of -[arg4] to [arg4].
- 3: Aims to the player with an increment of [arg4].
- 4: Angle becomes random.
- 5, other: No angle change.
- All modes sets the speed to [arg3].
- Delay the next transformation by ([arg0] * [arg1]) frames.
TRANSFORM_GRAPHIC_CHANGE (argc = 1)
- Changes the shot graphic to [arg0].
TRANSFORM_BLEND_CHANGE (argc = 1)
- Changes the shot blend type to [arg0].
TRANSFORM_TO_SPEED_ANGLE (argc = 3)
- Gradually changes the shot's speed to [arg1] in [arg0] frames.
- Gradually changes the shot's angle to [arg2] in [arg0] frames.
- Using TOPLAYER_CHANGE will aim the shot to the player object.
- NO_CHANGE can be used for [arg1] and [arg2].
TRANSFORM_ADDPATTERN_A1 (argc = 3)
- Applies [ObjMove_AddPatternA1(obj, [arg0], [arg1], [arg2])]
TRANSFORM_ADDPATTERN_A2 (argc = 8)
- Applies [ObjMove_AddPatternA4(obj, [arg0], [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7])]
TRANSFORM_ADDPATTERN_B1 (argc = 3)
- Applies [ObjMove_AddPatternB1(obj, [arg0], [arg1], [arg2])]
TRANSFORM_ADDPATTERN_B2 (argc = 8)
- Applies [ObjMove_AddPatternB3(obj, [arg0], [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7])]
TRANSFORM_ADDPATTERN_C1 (argc = 3)
- Applies [ObjMove_AddPatternC1(obj, [arg0], [arg1], [arg2])]
TRANSFORM_ADDPATTERN_C2 (argc = 10)
- Applies [ObjMove_AddPatternC3(obj, [arg0], [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7], [arg8], [arg9])]
ObjPatternShot_SetTransform
Arguments:
1) (int) object ID
2) (int) transform index
3) (const) transform type
4+) transform arguments...
Description:
Sets transformation to the specified transform index.
--------------------------------> Collision Object Functions <--------------------------------
ObjCol_GetListOfIntersectedShotID
Arguments:
1) (int) object ID
2) (const) shot owner type
Returns:
(int[]) intersected shot IDs
Description:
Returns an array of all shot objects of the specified owner type currently intersecting with the object.
Available owner types are:
OWNER_PLAYER
OWNER_ENEMY
--------------------------------> Item Object Functions <--------------------------------
ObjItem_SetAutoCollectEnableFlags
Arguments:
1) (int) object ID
2) (int) flags
Description:
Sets the autocollection enable flags of the item object.
Autocollection enable flags dictate which autocollection types will affect the item object.
Available flags:
ITEM_AUTOCOLLECT_PLAYER_SCOPE
ITEM_AUTOCOLLECT_COLLECT_ALL
ITEM_AUTOCOLLECT_POC_LINE
ITEM_AUTOCOLLECT_COLLECT_CIRCLE
ITEM_AUTOCOLLECT_ALL
Flags can be combined with bitwise OR.
Using 0 will cause the item object to be impervious to all autocollection types.
ObjItem_GetInfo
Arguments:
1) (int) object ID
2) (const) info type
Returns:
[varies]
Description:
Addition.
INFO_ITEM_MOVE_TYPE:
Returns the move type of the item object.
Returned values are the possible inputs of ObjItem_SetDefinedMovePatternA1.
INFO_ITEM_TYPE:
Returns the graphic ID of the item object.
ObjItem_SetMoveToPlayer
Arguments:
1) (int) object ID
2) (bool) move to player
Description:
Causes the item object to start or stop moving to the player.
If set to true, EV_COLLECT_ITEM will be notified.
If set to false, EV_CANCEL_ITEM will be notified.
ObjItem_IsMoveToPlayer
Arguments:
1) (int) object ID
Returns:
(bool) result
Description:
Returns whether the item object is moving to the player.
ObjItem_Collect
Arguments:
1) (int) object ID
Description:
Causes the item object to be instantly collected.
Not affected by ObjItem_SetIntersectionEnable.
ObjItem_SetAutoDelete
Arguments:
1) (int) object ID
2) (bool) auto delete
Description:
Sets whether the item will be subject to the auto-deletion clip.
The auto-deletion clip size can be altered using SetItemAutoDeleteClip.
ObjItem_SetIntersectionRadius
Arguments:
1) (int) object ID
2) (int) radius
Description:
Sets the item object's player intersection radius.
ObjItem_SetIntersectionEnable
Arguments:
1) (int) object ID
2) (bool) enable
Description:
Sets whether the item object is allowed to directly intersect with the player.
ObjItem_GetIntersectionEnable
Arguments:
1) (int) object ID
Returns:
(bool) enable
Description:
Returns whether the item object has intersection enabled.
ObjItem_SetDefaultCollectMovement
Arguments:
1) (int) object ID
2) (bool) enable
Description:
Sets whether the item object will use the built-in autocollection behaviour.
Intended to be used in tandem with EV_COLLECT_ITEM.
ObjItem_SetPositionRounding
Arguments:
1) (int) object ID
2) (bool) enable
Description:
If set to true, will cause the item object to only render in non-floating point coordinates.
----------------------------------------------> [Item Script] <----------------------------------------------
--------------------------------> Events <--------------------------------
EV_DELETE_SHOT_TO_ITEM is notified when an item is deleted and turned into an item.
Actions that trigger this event:
- Using ObjShot_ToItem.
- Using DeleteShotAll or DeleteShotInCircle with TYPE_ITEM.
Event arguments:
1) (int) shot object ID
2) (float[]) position [x, y]
3) (bool) collided with player
If true, the shot was deleted from coliision with a player hitbox.
4) (int) shot image ID
EV_COLLECT_ITEM is notified when an item is autocollected.
Actions that trigger this event:
- Collision with the player's item scope.
- The player moving up into the item autocollection line.
- Using CollectItemsInCircle, CollectAllItems, or ObjItem_SetMoveToPlayer.
Event arguments:
1) (int) item object ID
2) (int) item type
3) (int) collection type
0 - Player scope
1 - Player autocollection line
2 - Via CollectItemsInCircle
3 - Via CollectAllItems
4 - Via ObjItem_SetMoveToPlayer
4) (float) collection info
Varies with collection type:
Type 0 -> Player item scope radius
Type 1 -> Player autocollection line position
Type 2 -> Collection circle size
Type 3 -> 0
Type 4 -> 0
EV_CANCEL_ITEM is notified when an item's autocollection is canceled.
Actions that trigger this event:
- The player leaving STATE_NORMAL while the item is in the middle of being collected.
- Using CancelCollectItems or ObjItem_SetMoveToPlayer.
Event arguments:
1) (int) item object ID
2) (int) item type
3) (int) cancel type
0 - Player died
1 - Via CancelCollectItems
2 - Via ObjItem_SetMoveToPlayer
----------------------------------------------> [Player Script] <----------------------------------------------
--------------------------------> Normal Functions <--------------------------------
KillPlayer
Description:
Kills the player.
--------------------------------> Shot Functions <--------------------------------
CreatePlayerShotA1
Description:
Change.
No longer returns a null value if SetForbidPlayerShot was set to true.
--------------------------------> Events <--------------------------------
EV_DELETE_SHOT_PLAYER is notified to the player script when a player shot is deleted upon collision with an enemy intersection.
ObjShot_SetPenetration(obj, 0) can also be used to manually activate the event.
Event arguments:
1) (int) shot object ID
2) (float[2]) position
3) (int) shot graphic ID
4) (int) object ID that the shot collided with
- Will be ID_INVALID in case of manual activation.