Rush Notes

投稿者: KageAruki 投稿日: 2022-01-09 19:47:42 DL数: 5
-Resource folder must be copied into the project's resource folder
-"Rush Notes V3.fsml" must be placed into the scripts folder for the appropriate difficulty
-Three example parameters can be placed into your PPD/preset_parameters folder

To create a rush note:
Add the parameter "Rushnote" to the note with a value equal to the number of 24th beats in the duration. There is an example of this in the zip file.

If you want the rush to last for 2 measures/bars in the editor, then you add/edit the value of the parameter to be "24" (2x12)
If you want the rush to last for 8 measures, then you set the value to "96" (8x12)
This was chosen to allow rush notes in 4/4, 3/4, and 6/4 timings.

You will need to use the "Properties" pane of the editor to easily make this change. I personally use one of the default parameters for 1 or 2 bars to create the parameter name correctly and then manually edit the value as needed.
There are two further optional parameters which can be set:
"Rushscale" which affects how large a note is allowed to grow (Default is 2x base size)
"Rushbpm" which affects the calculations for how long the rush note should last. This was added for use in charts with multiple/frequent BPM changes to correct for errors. Again, this value needs to be edited manually as the example is for "150'

Normally the timing/duration calculations work based on the "targetbpm" of the chart, but Rushbpm overrides this to use a flat value if you are experiencing errors with timing. If you do not set this, it will default to using the targetbpm set via eventmanager.
You can also edit the script to change the number of points awarded per press of a Rush note. This is defaulted to 180 but feel free to use whatever you want.

For those curious how this works internally:
1> When a note is in "appear" state, the parameter is checked.
2> If the parameter exists, an array is created with various note information (Note type, duration calculated from BPM/parameter, etc)
3> An ETD image of "Rush" colored based on the note's type is attached to the note
4> When the note is evaluated for cool/fine, the ETD is removed and replaced with a new ETD of a note as well as the "Rush" wording. A second ETD is created with the clock hand
5> The game then toggles to "rush" mode by flipping a boolean value. This mode listens for key presses based on the note type from the array created in step 2 and triggers a stopwatch
6> Per matching key press, points are awarded and the scale of the "rush" ETD is increased. The clock hand also rotates based on timing data from the same array built in part 2 (Stopwatch time elapsed vs total duration, turned into radians
7> When the stopwatch value exceeds the duration (or another rush zone is triggered), a "Pop" sound effect is played and the ETDs for the rush note and the clock hand are deleted

There are safeguards in place to pause the stopwatch when the game pauses (thanks Sach for breaking this >.<)
There are also safeguards which end the previous rush note if a new one is triggered (again, thanks Sach for breaking this >.<)
This does not work with sliders/stars

This currently plays as if CSInput is enabled, though there is an array of button inputs which can be edited to make this only work for AC inputs if needed. I'll leave that to those who are interested to modify.

Script/Mod の情報