Description
Website: https://bingshan1024.github.io/steam2003_maniacs/
Because Maniac Patch is a moving target I decided to close the old issues and just update this one issue here when new features are added, otherwise this slowly becomes messy.
Old issues: #1424, #1557, #1608
Some of these old issues contain more information not moved here yet.
New commands
- Get Save Info, Code 3001 Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
This command retrieves the same information that is displayed on the default load screen.
It stores the date, time, level and HP in variables and the face graphic in a picture.
Character names are not currently supported.
If the save data does not exist, the date variable will be set to 0.
The face graphic is treated as a 4*4 sprite sheet.
So if you have a file with more than 16 patterns, it will not be displayed correctly.
On the other hand, it doesn't matter if the file is out of the standard as long as it can be divided into 4 parts.
The original picture settings are used, except for the file and sprite sheet related items.
Please use the appropriate picture number to make the picture off-screen or transparent beforehand.
The order of the date (YYMMDD) is the same in the English version.
Numeric Arguments:
- 00: How to specify the save number (0: constant 1: variable)
- 01: Save number
- 02: Variable to receive the save date (YYMMDD)
- 03: Variable to receive the save time (HHMMSS)
- 04: Variable that receives the first character's level
- 05: Variable that receives the first character's HP
- 06: Reserved items (fixed at 0)
- 07: How to specify the picture number (0: constant 1: variable)
- 08: Picture number to receive the face graphic of member 1 (first character)
- 09: Picture number to receive the face graphic of member 2.
- 10: Picture number to receive the face graphic of member 3
- 11: Picture number to receive the face graphic of member 4
This command performs the same operation as the default save function.
It is not possible to use a save number less than 0.
You can optionally store the result of the execution in a variable.
The value is 1 on success and 0 on failure.
Note that the assignment to the variable is done after the save has been executed.
Numeric arguments:
- 00: How to specify the save number (0: constant 1: variable)
- 01: Save number
- 02: Whether to receive the success or failure of the save (0: not received 1: received)
- 03: Variable to receive success or failure
- Load, Code: 3003 Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
Not implemented: Black screen with fade-in
This command is equivalent to the default load function.
Save numbers less than 0 cannot be used (the operation is ignored).
Optionally, it checks the file before execution and aborts the load if the result is invalid.
The check is equivalent to the "Get Save Information" command.
If you are sure you have the right file, you can disable it, but it is not recommended. -The
Numeric arguments:
- 00: How to specify the save number (0: constant 1: variable)
- 01: Save number
- 02: Whether or not to check before execution (0:Enable 1:Disable)
- End Load Process, Code: 3004
Not used anymore
This command cancels the dark state after loading.
It is not available in the new game. The darkness will disappear naturally after 1 frame.
- Get Mouse Position, Code: 3005 Stub Maniac Patch commands, add --patch cli arg #2486
This command gets the relative position of the mouse in the window.
It is based on the resolution of 320*240.
The value will not work correctly if the window is full screen and DirectDraw is specified as the rendering method. (This is probably not a problem, as few machines currently have this setting in effect.
Numeric arguments:
- 00: Variable to receive X-coordinates
- 01: Variable to receive Y-coordinates
- Set Mouse Position, Code: 3006. No support planned: System specific, not exposed by SDL
This command sets the relative position of the mouse in the window.
It is based on a resolution of 320*240.
The x-coordinate is rounded to 0-319 and the y-coordinate is rounded to 0-239 to avoid inducing false clicks.
The values are not correctly handled when the machine is in full screen and DirectDraw is specified as the rendering method.
(This is probably not a problem as few machines currently have this setting enabled.
Numeric arguments:
- 00: How to specify the coordinates (0:constant 1:variable)
- 01: X coordinate
- 02: Y coordinate
- Show String Picture, Code 3007 Add "Show String Picture" #2870
Supported but the implementation is not perfect ;)
Generates a picture from the specified string.
Once generated, it can be treated like a normal picture.
Disabling the background, border, gradient and shadow will reduce the cost of generation.
Control characters:
There are several control characters available in the string.
Some control characters are available in the string, e.g. the value in [] can be referenced by \V
- $a-zA-Z: Draws a special character.
- \: \ alone is drawn.
- \C[n]: Change the character colour to the nth character.
- \D[n]: Aligns the variable value with at least n digits (zero filled).
- \N[n]: Draws the name of the nth character.
- \T[n]: Not implemented at the moment.
- \V[n]: Draws the value of the variable numbered n.
Display position-> coordinates: Specifies the meaning of the position value.
(Traditional pictures are fixed at center coordinates.)
Picture size:
Specify the size of the picture to be generated.
If the value type is set to "Automatic" or the value is set to 0, the picture will be adjusted to the appropriate size.
Font name:
Specify the font to use for drawing.
If this field is left blank, the system settings of the database will be used.
Font size:
The size of the font used for drawing.
Valid values are 1-255, default is 12.
Character spacing:
This specifies the amount of space to be left between each character.
Valid values are 0-255, default is 0.
Line spacing:
The number of spaces per line.
Valid values are 0-255, default is 4.
Bold:
Applies Bold to the font.
System graphics: Specify the graphics to use for drawing.
Specifies the graphics used for drawing.
<Select to refer to the system settings of the database.
Wallpaper:
Specifies the background type for the window.
Draw border: specifies whether the window should have a border or not.
Specifies whether the window should have a frame or not.
If either the height or width is less than 8px, the frame will not be drawn, regardless of the setting.
Enable outside margins:
This specifies whether or not the border area is taken into account when calculating the picture size and text drawing position.
If enabled, the area is 8px on each side and 10px on the top and bottom.
Enabling text gradients:
Enables or disables text gradients, as used in other features such as text display.
If disabled, the text will be drawn from the top left corner (0, 0) of each 16*16px colour.
Enable text shadow:
Enables or disables text shadows, as used in other features such as text display.
Preview restrictions:
Position: Fixed at top left coordinate (0, 0).
Size: - automatically calculated unless specified as a constant.
Magnification: - fixed at 100% (the preview itself can be doubled).
Transparency: Fixed at 0%.
Effects: All effects are disabled.
Font size: 12 unless specified as a constant.
String arguments: (Delimited by 0x01 byte)
- *1 String to display *1 File name *1 Font name
- *1...A prefix of type byte indicating the type of value to follow. Currently only 0x01 is valid.
Numeric arguments:
- 00: Type of value
- 00~03: How to specify the picture ID (constant=0, variable, variable number variable)
- 04~07: How to specify the display position (constant=0, variable, variable number)
- 08~11: How to specify the magnification ratio (Constant=0, Variable, Variable)
- 12~15: How to set the transparency (Constant=0, Variable, Variable)
- 16~19: How to specify the picture size (Constant=0, Variable, Variable)
- 20~23: How to specify the font size (Constant=0, Variable, Variable)
- 24~27: How to specify the coordinate type (center=0, top-left, bottom-left, top-right, bottom-right, top, bottom-left, left, right)
- 01: Picture ID
- 02: Position X
- 03: Position Y
- 04: Zoom factor
- 05: Transparency
- 06: Red hue
- 07: Green tones
- 08: Blue tones
- 09: Saturation
- 10: Types of special effects
- 11: Levels of the special effect
- 12: Additional effects
- 00~03: Blend mode (None=0, Multiply, Add, Overlay)
- 04 : Flip horizontally
- 05 : Vertical flip
- 13: Option 1
- 00~07: Scroll with map
- 08~11: Background type (none=0, enlarge, tile)
- 12 : Border not drawn
- 13 : Gradient disabled
- 14 : Shadows disabled
- 15 : Bold text
- 16 : Margins disabled
- 24~27: Type with value 1 (in case of angle)
- 28~31: type of value 2 (if angle is specified)
- 14: Option 2
- 00~07: Enable transparent colour
- 08~15: Character spacing
- 16~23: Line spacing
- 15: Layers on the map
- 16: Layers in battle
- 17: Delete condition / Screen effect to apply
- 18: Picture width
- 19: Picture height
- 20: Font size
- 21: Value 2 (if angle is specified)
- Get Picture Info, Code: 3008 Maniac Patch: Implement GetPictureInfo #2735
This command retrieves the position and size of the picture being displayed.
Special effects such as rotation will not be reflected.
Numeric arguments:
- 00: How to specify the picture ID (constant=0, variable, variable number variable)
- 01: Stage of the picture (Original image=0, During move, After move)
- 02: Type of value (centre[xy]wh=0, xywh, ltrb)
- 03: picture id
- 04: Variable 1 to receive values
- 05: Variable 2 to receive values
- 06: Variable 3 to receive values
- 07: Variable 4 to receive values
- Control Battle, Code: 3009 Implement Maniacs Command 3009: ControlBattle #3295
This command allows the user to control some of the defensive battle processes.
This command is only valid for use during the battle, and is deactivated (without all control) at the end of the battle.
It should be used in conjunction with a common event that is conditional on the start of the battle.
Also, weighted commands should not be used within a common event that is being processed.
There are currently five different actions to choose from
ATB Gauge Increase:
This controls the natural increase in the gauge of characters, including enemies, every frame.
The following four variables are used to get or set the value
- unit type (get): friendly = 0, enemy = 1
- unit number (get) : index (not ID) for both friendly and enemy
- current gauge(get) : over 300000 can act
- amount of gauge to be increased (get/set)
Damage Pop:
Controls the notation when some damage or recovery occurs.
If you specify a common event for this, the default notation will not be drawn.
There are six variables that can be used to get or set the value
- type of unit (get) : friendly=0, enemy=1
- unit number (get): index (not ID) for both friend and foe
- display position X (get)
- display position Y (get)
- type of value (get) : damage=0, heal=1, evade=2
- value (get)
Targeting:
This is called just before a character's action to control the target of the action.
There are six variables that can be used to get or set values
- type of unit (get): friendly=0, enemy=1
- unit number (get): index (not ID) for both friend and foe
- type of action (get) : *1
- value of action (get) : *2
- type of target(get) : opponent=0, opponent=1, own=2, own=3
- target's number (get/set): index (not ID) for both friend and foe *3
*1:
- 0: Basic action
- 1: Special skill
- 2: Transformation
- 3: Use item
*2:
- For Basic Actions: Normal = 0, Continuous = 1, Defensive = 2, Watchful = 3, Forceful = 4, Self-Destruct = 5, Escape = 6, Do Nothing = 7
- For Special Skills: Special Skill ID
- For Transfiguration: Enemy Character ID
- For item use: Item ID
*3:
- If the target is yourself or the whole group, the setting is invalid.
State Granting
This function is called when a character is granted a state.
The following three variables are used to get or set the value. 1.
- unit type (get): friendly=0, enemy=1
- unit number (get) : index (not ID) for both friend and foe
- state ID (get)
Value change other than damage
This is called when values other than HP change.
The arguments are aligned so that they can be handled in the same event as the damage pop.
The following 6 variables are used to get or set the value
- unit type (get): friendly=0, enemy=1
- unit number (get): index (not ID) for both friend and foe
- display position X (get)
- display position Y (get)
- type of value (get) : MP=3, Attack=4, Defense=5, Mental=6, Agility=7
- value (get)
Numeric arguments:
- 00: Type of process to control (ATB=0, pop, target)
- 01: How to specify the Common Event ID (constant=0, variable, variable number variable)
- 02: Common event ID to use for control
- 03: Beginning of the variable used to get/set the value
- Control ATB Gauge, Code: 3010 Implemented Maniacs Command 3010: ControlATBGauge #3291
This command is used to control the gauge of characters, including enemies and allies.
The effective range of the gauge is 0~300000.
Numeric Arguments:
- 00: Type of target (protagonist ID=0, member, party, enemy character, whole enemy)
- 01: How to specify the target (constant=0, variable, variable number variable)
- 02: Value of the target
- 03: Operation (set=0, add, subtract)
- 04: Type of gauge value (value=0, percentage)
- 05: How to specify a gauge value (constant=0, variable, variable number)
- 06: Gauge value
- Change Battle Commmand EX, Code: 3011 Implemented Maniacs Command 3011: ChangeBattleCommandEx #3290
This command is used to enable/disable the change of formation item in the battle command and to edit the party command.
(1) Combat commands
This command can only be used during a battle and will be deactivated after the battle is over.
It should be used in conjunction with the Common Event, which requires the start of combat.
This command can be used to create a situation where there are no combat commands at all. In that case, the game will switch to AI action when you try to choose an action.
Added in 190220: When there are no commands, selecting a transparent item will change the formation
Party Commands:
You can choose any 4 commands from "Fight", "Auto", "Run", "Win" and "Defeat".
Victory" and "Defeat" will literally force you to win or lose the battle.
If you choose all five, the first four will be used, if you choose none, the default three will be used.
If you select only one of them, the screen transition itself will disappear.
Numeric arguments:
- 00: Whether or not to use the change formation command (enable=0, disable)
- 01: Flag for party command
- 00: "Fight" command
- 01: "Auto" command
- 02: "Run" command
- 03: "Win" command
- 04: "Defeat" command
- Get Battle Info, Code: 3012 Implemented Maniacs Command 3012: GetBattleInfo #3294
Retrieves various values that appear during combat.
It does not do anything when not in combat.
The information is output consecutively, starting with the specified variable number.
Character ID/Member/Enemy Character
Ability Correction Value
Gets the value of the character's ability to move up and down during combat, in order of attack, defense, mental strength, and agility.
State:
The total number of all conditions and the number of turns elapsed since the condition was inflicted.
The number of turns is 1 when the condition is inflicted and 0 when it is not.
For example, if the database contains three conditions (1: death, 2: poison, 3: darkness), and you want to get the character's state immediately after the darkness
v[specified variable] = 3
v[variable+1] = 0
v[variable+2] = 0
v[variable+3] = 1
The result is
Attributes:
Gets the total number of values for the current attribute resistance and the status of each resistance.
The values are 2 for increased resistance, 1 for normal resistance and 0 for decreased resistance.
The value of each resistance may be omitted, in which case it is treated as the default value (1).
For example, if you have three attributes in the database (1: sword, 2: spear, 3: strike) and you want to get the character attributes for reduced sword resistance and increased strike resistance
v[specified variable] = 3
v[variable +1] = 0
v[variable +2] = 1
v[variable+3] = 2
The result will be
Other:
The following information about the specified character is obtained in order.
Image centre coordinates X
Image centre coordinates Y
Actionable state (disabled=0, possible)
Defensive state (None=0, Yes)
charge state (none=0, yes)
Appearance state (none=0, yes)
Numerical arguments:
- 00: Target type (Protagonist ID=0, Member, Party, Enemy character, Enemy as a whole)
- 01: Type of information. Protagonist ID/Member/Enemy Character: (Ability Correction=0, State, Attribute, Other). Party/enemy: (total number=0, survivors, active).
- 02: How to specify the target (constant=0, variable, variable number).
- 03: value of target
- 04: beginning of variable to receive value
- Control Var Array, Code: 3013 Maniac Patch: Add ControlVarArray and Bit Ops for Variables #2733
An array of consecutively numbered variables can be manipulated.
It is also possible to operate on a single variable by setting the length of the array to 1.
- Copy: The value is copied from target 1 to target 2.
- Exchange: The contents of target 1 and target 2 are exchanged.
- Sort (ascending order)
- Sort (descending order): Sort object 1 in ascending or descending order.
- Shuffle: Subject 1 is sorted randomly.
- Enumeration: The value for the size is stored in object 1 while adding it by 1 from an initial value.
- Addition~Shr: It is similar to the operation command of the variable. The difference is that "operand" is also an array.
Numeric arguments:
- 00: Operation (Copy=0, Exchange, Sort Ascending, Sort Descending, Shuffle, Enumerate, Add, Subtract, Multiply, Divide, Surplus, Or, And, Xor, Shl, Shr)
- 01: Type of each value
- 00~03: Object 1 (variable=0, variable number)
- 04~07: Size (constant=0, variable, variable number)
- 08~11: Object 2
- For enumeration (constant=0, variable, variable number)
- Other (variable=0, variable number)
- 02: Value of object 1
- 03: Value of size
- 04: Value of object 2
- Key Input Proc Ex, Code: 3014 Maniac Patch: Final contribution #2797
The Joypad part is not supported by EasyRPG Player as we provide our own remapping in the configuration scene
This command cannot wait for a key to be pressed.
If you assign keys to the joypad, it will be possible to include the pad when getting the keyboard status.
Get keyboard status list:
Get the status of keys in the keyboard list of the form at once.
Get Keyboard Status List (Disable Assignment):
Get the status of all keys in the keyboard list of the form.
Even if the joypad is assigned, this is ignored.
Get status by key code (allocation disabled):
You can get the status of keys by specifying the key code (0-255) directly.
Use this function when you want to get the status of a key that is not in the list.
Get joypad status list:
Get the status of buttons in the joypad list of the form at once.
Get Joypad Assignment:
Get the current joypad assignment status.
If the button is not assigned, -1 is returned.
Setting joypad assignments:
Assign a joypad button to one of the keys in the key list.
Numeric arguments:
- 00: Operation details (from 0 to 5 in the order listed above)
- 01: Start of the variable array used to get or set the value
- 02: (*only when key code is specified) How to specify the code
(constant = 0, variable, variable number variable) - 03: (*only when keycode is specified) Code
- Rewrite Map, Code: 3015 Partially implement Maniacs Command 3015: RewriteMap #3306
Partial: A and B autotiles are unsupported
This command rewrites the tiles on the map where the hero is.
Changes made by this command are not reflected in the save and will disappear when you move the map.
Numeric arguments:
- 00: Type of each value
- 00~03: Tile ID
- When single (constant=0, variable, variable number variable)
- For a range (variable=0, variable number) - 04~07: Left end of change range (constant=0, variable, variable number)
- 08
11: Top of change range (Constant=0, Variable, Variable)15: Width of change range (Constant=0, Variable, Variable)
- 12
- 16~19: Changed range height (Constant=0, Variable, Variable)
- 00~03: Tile ID
- 01: How to specify a tile (ID=0, Range ID)
- 02: Layer (lower layer=0, upper layer)
- 03: Value of tile ID or beginning of variable array
- 04: Value of the left end of the change range
- 05: Top value of the modified range
- 06: Value of the width of the modified range
- 07: Value of the height of the modified range
- 08: Auto tile (enable=0, disable=1)
- Control Global Save, Code: 3016 Maniac Patch: Final contribution #2797
This command deals with the common save data that can be read and written from each save data.
Currently, only switches and variables are supported.
The file name is fixed to "Save.lgs".
Open:
Loads the shared save data from a file.
This operation is ignored when the file is loaded.
Close:
Release the loaded shared save data.
This operation is ignored if the file is not loaded.
Note that this operation does not save the changes.
Save:
Saves the contents of the loaded shared save data to a file.
This operation will be ignored if the file is not loaded.
Save and close: After "Save", "Close" will be executed.
Copy from shared save:
Loads the specified values from a loaded shared save into your own save.
If you do this when the save is not loaded, it will execute 'Open' before processing.
Copy to shared save:
Writes the specified value from your own save data to the loaded shared save data.
If you do this when the save is not loaded, it will execute "Open" before processing.
Numerical arguments
- 00: Operation details (from 0 to 5 in the above order)
For copy operations only:
- 01: Type of each value
- 00~03: First number of the current save (constant=0, see variable)
- 04~07: First number of shared save (constant=0, see variable)
- 08~11: Size (constant=0, variable, variable number variable)
- 02: Type of data (Switch=0, Variable)
- 03: Value of current save
- 04: Value of shared save
- 05: Value of size
- Change Picture ID, Code: 3017
As the name suggests, this command changes the ID of the picture.
If you use the "Ignore out-of-range errors" setting, moving from/to an out-of-range ID will be replaced by a simple delete operation.
Move:
Change the picture ID of (size) from (target1) to (target2).
If (Target2) is in use, it will be erased.
Exchange:
The picture ID of (size) from (target1) is replaced with (target2).
Slide:
Move the picture ID of (size) from (target1) by (distance).
Numeric arguments
- 00: Operation (Move=0, Swap, Slide)
- 01: Type of each value
- 00~03: Target 1 (constant=0, variable, variable number variable)
- 04~07: Size (constant=0, variable, variable number)
- 08~11: Object 2 (Constant=0, Variable, Variable number)
- 02: Value of object 1
- 03: Value of size
- 04: Value of target 2 or distance
- 05: Ignore out-of-range errors (enable=0, disable)
- Set Game Option, Code: 3018
This command is used to set the overall behaviour of the game.
Inactivity behaviour:
Whether or not to pause the game when a window becomes inactive.
The default is wait. This setting is reflected in the save data.
Fatal Mix:
This is mainly for debugging purposes.
FPS:
The speed at which the game will run, cannot be less than 1.
This setting is not reflected in the save data.
Test Play:
This is the same as the "TestPlay" start-up option.
This setting will be reflected in the saved data.
Right Shift to skip messages:
While holding down the right shift key, all messages will be displayed momentarily and will close automatically.
This setting is reflected in the save data.
Maximum number of pictures:
This is the maximum number of pictures you can have.
This number has a significant effect on the speed of the game and the load time of saved data.
This setting will be reflected in the saved data.
Frame skipping:
Changes the default drawing process from every frame to once every n frames.
This setting is reflected in the save data.
Numeric arguments:
- 00: Type of value for argument 02 (constant = 0, variable, variable number variable)
- 01: Type (Inactive=0, Fatal, Picture, Frame skip)
- 02:
- Inactive: Action (Weight=0, Run)
- Fatal: FPS value
- Picture: maximum value
- Skip: value (none=0, 1/5, 1/3, 1/2)
- 03: Fatal:
- 00~03: Test play (Do not change=0, Disable, Enable)
- 04~04: Sentence skip
- Call Command, Code: 3019 Maniac: Implement CallCommand and String Vars #3140
EasyRPG implementation difference: Instead of invoking the command directly it pushes a new frame with a single new command and invokes it (is like a CallEvent with a single command).
This command is intended for advanced users. Please make sure you fully understand the command specifications before using it.
Invokes any command (with exceptions) with any argument.
If a non-existent code is specified, the behaviour depends on the value.
Unavailable commands:
- Calling a command
Commands that do not work:
- Set label
Commands that do not work properly:
- Show choices
- Handling of battles *only if branching
- Shop Handling" *only when branching
- Handling of the inn.
- Conditional branching
- Repetition
- Display of text from the second line onwards
- Annotations from the second line onwards
String arguments: Code dependent
Numeric Arguments: Code dependent
- 00: Type of each value
- 00~03: Code (constant=0, variable, variable number variable)
- 04~07: First numerical argument (constant=0, variable, variable number)
- 08~11: Number of numerical arguments (constant=0, variable, variable number)
- 01: Code
- 02: Leading number of numerical arguments
- 03: Number of numerical arguments
Modified commands
- Show Picture
- Added angle designation as special effect. Maniac Pictures: Support Origin, Fixed Angle and Frames for duration #2741
- Added blending mode (multiply, add, overlay). Support most Maniac Patch Picture enhancements #2628
- Added horizontal/vertical inversion function. Support most Maniac Patch Picture enhancements #2628
- A variable number was added to the method of specifying ID, display position, magnification, and transparency. since Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
- The origin specification of the display position was added. Maniac Pictures: Support Origin, Fixed Angle and Frames for duration #2741
Recycles the now unused "bottom transparency" (arg 14) setting as a bit field (seriously...) but the bit field starts at 256 which means it can't be confused with the transparency where the maximum value that makes sense is 255.
- Blend Mode: Multiple: Bit 9 (256)
- Blend Mode: Add: Bit 10 (512)
- Blend Mode: Overlay: Bit 9 + 10 (768)
- Flip H: Bit 13 (4096)
- Flip V: Bit 14 (8192)
The origin uses the upper bits of arg 1 which is the "ValueOrVariable" indicator for X/Y.
Rotation:
- Arg 12 (effect) set to 3
- Arg 13 & Arg 15: Angle1 / Angle2
- Arg 16 encodes ValueOrVariable in a bitmask: 0 Constant, 1 Variable, 2 Variable ID. Shifted by 4 for 2nd option.
- Move Picture
- Added angle designation as special effect. Maniac Pictures: Support Origin, Fixed Angle and Frames for duration #2741
- Added blending mode (multiply, add, overlay). Support most Maniac Patch Picture enhancements #2628
- When the move time is specified as a negative value, the absolute value is now handled in frames (normally it is the value * 6 frames). Maniac Pictures: Support Origin, Fixed Angle and Frames for duration #2741
- Added a variable number to the way of specifying ID, position, magnification and transparency. Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
- The variable of the variable number was added to the specification method of the time spent on the movement. Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
- The origin specification of the display position was added. Maniac Pictures: Support Origin, Fixed Angle and Frames for duration #2741
- Erase Picture Support most Maniac Patch Picture enhancements #2628
- The variable of the variable number was added to the ID specification. Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
- The range of the variable number was added to ID specification.
- All the pictures were added to the ID specification.
see #1818 (comment)
- Conditional Branch Maniac Patch: Final contribution #2797 (Condition "Just Loaded" is not implemented yet!)
- The method of specifying it by the variable reference was added to the switch.
- The method of specifying it by the variable of the variable number to the left side value of the variable is added.
- The method specified by the variable of the variable number was added to the right side value of the variable. Supported
- Judgment of whether it is just after loading was added.
- Judgment of whether the joypad is active or not was added.
- Added judgement whether the window is active or not
- Key input processing Maniac Patch: Implement Load, Save, SaveInfo and Mouse input #2623
Added support for mouse input (left/right centre click, wheel up/down scroll).
Wheel scroll is only valid under the condition of "wait until pressed" because there is no push down state.
The way how the Key input is encoded is a bit strange because it recycles other parameters but by looking at the ones it uses I see some logic.
When the original checkbox is ticked the value becomes 3 (which means it's a bitfield)
Wheel down: Arg 10 = 2 (check_down)
Wheel up: Arg 13 = 2 (check_up)
Mouse left: Arg 3 = 2 (check_decision)
Mouse right: Arg 4 = 2 (check_cancel)
Mouse middle: Arg 9 = 2 (check_shift)
- Control Variables Maniac Patch: Final contribution #2797 Limited support for the Expression format. Rest is fully supported
- A range of variable values has been added to the operation target.
- When a > b in a batch operation, the result is now treated as b~a.
- Logical OR (or), logical product (and), exclusive logical OR (xor), and logical left-right shift (shl, shr) are added to the operation contents. Proper overflow handling #2734
- added ID and ATB gauge entries for each character in "operand" (hero and enemy)
- added items for current date, time and elapsed frame in "operand" section
- added a switch in "operand" which will be treated as 1 when ON and 0 when OFF
- added variables for each of "operand" items, hero, event, and enemy character
- added a party member to "operand". Same as the main character, except that they are specified by an index in the party.
- added a maths function to "operand".
- get current event id Support game Ipomoea #3032
In the following explanation, argument 1 is a, argument 2 is b, and multiplier is c.
- Add, Sub, Mul, Div, Mod, Or, And, Xor, Shl, Shr Proper overflow handling #2734
- a (operator) b performs the same operation as in "Description".
- Pow: Calculates a to the b power.
- Sqrt: Calculates the square root of a * c. Decimal points are rounded down.
- Sin: Calculates the sine of (a / b) degrees * c. Decimal points are rounded down.
- Cos: Calculates the cosine * c in (a / b) degrees. Decimal points are truncated.
- Atan2: Calculates the inverse tangent * c of a(y-coordinates), b(x-coordinates). Decimal points are truncated.
- Min: Returns the smaller of a, b.
- Max: Returns the greater of a and b.
- Abs: Returns the absolute value of a.
- Random: returns a random number in the range a~b. Same as "random" in "operand".
- adds ternary operation to "operand".
- adds patch version to "operand".
- date in lower 20bit (YYMMDD).
- The most significant bit represents im/pf (im=0, pf).
- The rest is reserved space.
- This item was implemented in 190920, so all bits will be 0 in earlier versions.
How to get the value of a date
- @> Manipulation of variables: [0001] Assignment, Maniacs version
- @> Variable manipulation: [0001] And, -1 >> 12
How to get the im/pf value
- @> Manipulation of Variables: [0001] Assignment, Maniacs' Version
- @> Manipulation of Variables: [0001] Shr, 31
Add expression format to target and operand
Added method to specify common event by variable number variable.
Added the ability to specify conditions. The switch is treated as a number with 1 for ON and 0 for OFF.
The number of iterations and the index will not be set correctly if a label jump brings you inside the loop.
Infinity: Conventional infinite loop.
Number of times:
- X Times:
- Repeats for a specified number of times. You can optionally print an index starting from 0 to a variable.
- Count up
- Iterate through the range a to b, adding indices by 1.
- For example, 2~5 would be a loop of 4 times: 2, 3, 4, 5.
- You can optionally output the current index to a variable.
- Count Down:
- Iterates over the range a to b, decrementing the index by 1.
- For example, 3~1 would be a loop of 3, 2, 1.
- You can optionally output the current index to a variable.
While:
- Repeats as long as the condition is true. Each loop is checked before execution.
- Comparisons can be specified in the same way as for variable conditionals.
- You can optionally print an index starting from 0 to the variable.
Do While:
- Repeats as long as the condition is true. This is done after each loop.
- Comparisons can be specified in the same way as for variable conditionals.
- You can optionally print an index starting from 0 to the variable.
see #1818 (comment)
Fixes behaviour when running inside a multiple loop.
- Battle Processing
Added option to disable flashing before battle starts.
Additional features supported from newer releases
- Play Music / SE: Support for variables Maniac: BGM/SE/Wait enhancements #2914
- Wait: Maniac: BGM/SE/Wait enhancements #2914
- Support for variables
- Support for "frames" setting
- String Variables event command String Variables #3051
- String Variables in event commands Maniac: Implement CallCommand and String Vars #3140
- Variable lookup for various commands (too many to list) Maniac: Implement CallCommand and String Vars #3140
- Conditional Branch: Expressions Maniac: Implement CallCommand and String Vars #3140
- Pictures: Maniacs Feature: Add separate Width/Height parameters for scaling pictures, Picture StringVar, Tint Variable #3180
- Variables for Tint
- Independent Width/Height scaling of pictures
- Pixel scrolling Maniacs Feature - Pixel scrolling support for CommandPanScreen #3245
- Command "Call System Functions" Maniacs Patch - Call System Functions #3250
- Erase Event can bring events back Erase Event - Erase By ID + Recreate Event Option (Maniac Patch Feature) #3313
- Partial support for "Get Game Info" Maniacs Feature - Partially implement command GetGameInfo (3021) #3309