Add nITG's various path shape & other modifiers - V2 (#1435)

* Implemented nITG's Square modifiers

Modifiers added:
Square
SquareOffset
SquarePeriod
SquareZ
SquareZOffset
SquareZPeriod

* Implemented nITG's BumpyX Modifiers

Also fixes up some tiny bits pertaining to the square modifiers.
Modifiers Added:
BumpyX
BumpyXPeriod
BumpyXOffset

* Implemented nITG's TornadoZ Modifiers

Modifiers Added:
TornadoZ
TornadoZPeriod
TornadoZOffset

Another commit is needed to update fallback's metrics

* Update fallback's metrics to accommodate TornadoX

* Implemented nITG's Parabola Modifiers

Modifiers Added:
ParabolaX
ParabolaY
ParabolaZ

* Implemented nITG's Sawtooth Modifiers

Modifiers Added:
Sawtooth
SawtoothPeriod
SawtoothZ
SawtoothZPeriod

* Implemented nITG's Zigzag Modifiers

Modifiers Added:
Zigzag
ZigzagPeriod
ZigzagOffset
ZigzagZ
ZigzagZPeriod
ZigzagZOffset

* Implemented nITG's ModTimer modifiers

Modifiers Added:
ModTimer (Lua method name is ModTimerSetting (takes enums. Ex: 'ModTimerType_Song'). Can be activated with mod strings 'modtimer(song/beat/game/default)' )
ModTimerOffset
ModTimerMult

* Remove Log use from ArrowEffects::GetTime()

* Accidentally removed a CPY(m_BatteryLives)

* Implemented nITG's DrunkZ modifiers

Modifiers added:
drunkz
drunkzspeed
drunkzoffset
drunkzperiod

Another commit is needed to update fallback's metrics

* Update fallback's metrics to accommodate DrunkZ

* Implemented nITG's BeatY & BeatZ Modifers

Modifiers Added:
beaty
beatyoffset
beatyperiod
beatymult	
beatz
beatzoffset
beatzperiod
beatzmult

Another commit is needed to update fallback's metrics

* Updated fallback's metrics to accommodate ...

the new Beat modifiers.

* Implemented nITG's Digital Modifiers

Modifers Added:
digital
digitalsteps
digitalperiod
digitaloffset
digitalz
digitalzsteps
digitalzperiod
digitalzoffset

* Removed duplicate zbuffer check.

* Updated Luadocs with the new modifiers

* Removed accidental duplicate Mini from Luadocs

* Split up long modifier lines.

Hopefully, this makes it a bit easier to read.

* Remove accidental commit to root of repo.

* Split up long modifier lines

Hopefully, this makes it easier to read.

* Redid Square functions to not use FastSin

This implementation is based off of 5.2's square_wave function from ModValue.

* Redid zigzag functions to not use FastSin

This implementation is based off of 5.2's triangle_wave function from ModValue.

* Moved square & zigzag calculation to RageMath.

New RageMath functions:
RageSquare
RageTriangle

* Made Square & Digital have the same period...

as Zigzag and Sawtooth.

* Deduplicate tornado calculations.

* Fixed typo in UpdateTornado, and moved UpdateTornado logic to ArrowEffects::Init because it doesn't depend on anything that changes every frame.  Tornado metrics are also loaded in ArrowEffects::Init.

* Deduplicated Beat mod update logic.

The logic is now placed into a function called UpdateBeat.
The m_fBeatFactor members are now a 1D array, similar to m_MaxTornado and m_MinTornado.
This commit is contained in:
MrThatKid
2017-05-13 11:34:34 -07:00
committed by Colby Klein
parent 31e99dc457
commit e15e0e68be
10 changed files with 801 additions and 97 deletions
+55 -1
View File
@@ -1114,9 +1114,17 @@
<Function name='Backwards'/>
<Function name='BatteryLives'/>
<Function name='Beat'/>
<Function name='BeatOffset'/>
<Function name='BeatMult'/>
<Function name='BeatOffset'/>
<Function name='BeatPeriod'/>
<Function name='BeatY'/>
<Function name='BeatYMult'/>
<Function name='BeatYOffset'/>
<Function name='BeatYPeriod'/>
<Function name='BeatZ'/>
<Function name='BeatZMult'/>
<Function name='BeatZOffset'/>
<Function name='BeatZPeriod'/>
<Function name='Big'/>
<Function name='Blind'/>
<Function name='Blink'/>
@@ -1127,6 +1135,9 @@
<Function name='Bumpy'/>
<Function name='BumpyOffset'/>
<Function name='BumpyPeriod'/>
<Function name='BumpyX'/>
<Function name='BumpyXOffset'/>
<Function name='BumpyXPeriod'/>
<Function name='Centered'/>
<Function name='CMod'/>
<Function name='Confusion'/>
@@ -1138,6 +1149,14 @@
<Function name='Cover'/>
<Function name='Cross'/>
<Function name='Dark'/>
<Function name='Digital'/>
<Function name='DigitalOffset'/>
<Function name='DigitalPeriod'/>
<Function name='DigitalSteps'/>
<Function name='DigitalZ'/>
<Function name='DigitalZOffset'/>
<Function name='DigitalZPeriod'/>
<Function name='DigitalZSteps'/>
<Function name='Dizzy'/>
<Function name='Distant'/>
<Function name='DrainSetting'/>
@@ -1145,6 +1164,10 @@
<Function name='DrunkOffset'/>
<Function name='DrunkPeriod'/>
<Function name='DrunkSpeed'/>
<Function name='DrunkZ'/>
<Function name='DrunkZOffset'/>
<Function name='DrunkZPeriod'/>
<Function name='DrunkZSpeed'/>
<Function name='Echo'/>
<Function name='Expand'/>
<Function name='ExpandPeriod'/>
@@ -1164,6 +1187,9 @@
<Function name='Left'/>
<Function name='LifeSetting'/>
<Function name='Little'/>
<Function name='ModTimerSetting'/>
<Function name='ModTimerMult'/>
<Function name='ModTimerOffset'/>
<Function name='MaxScrollBPM'/>
<Function name='Mines'/>
<Function name='Mini'/>
@@ -1186,6 +1212,9 @@
<Function name='NoStretch'/>
<Function name='NoteSkin'/>
<Function name='Overhead'/>
<Function name='ParabolaX'/>
<Function name='ParabolaY'/>
<Function name='ParabolaZ'/>
<Function name='Passmark'/>
<Function name='Planted'/>
<Function name='PlayerAutoPlay'/>
@@ -1196,6 +1225,10 @@
<Function name='Reverse'/>
<Function name='Right'/>
<Function name='Roll'/>
<Function name='Sawtooth'/>
<Function name='SawtoothPeriod'/>
<Function name='SawtoothZ'/>
<Function name='SawtoothZPeriod'/>
<Function name='ScrollBPM'/>
<Function name='ScrollSpeed'/>
<Function name='Shuffle'/>
@@ -1204,6 +1237,12 @@
<Function name='SoftShuffle'/>
<Function name='Space'/>
<Function name='Split'/>
<Function name='Square'/>
<Function name='SquareOffset'/>
<Function name='SquarePeriod'/>
<Function name='SquareZ'/>
<Function name='SquareZOffset'/>
<Function name='SquareZPeriod'/>
<Function name='Stealth'/>
<Function name='Stomp'/>
<Function name='Sudden'/>
@@ -1218,6 +1257,9 @@
<Function name='Tornado'/>
<Function name='TornadoOffset'/>
<Function name='TornadoPeriod'/>
<Function name='TornadoZ'/>
<Function name='TornadoZOffset'/>
<Function name='TornadoZPeriod'/>
<Function name='TurnNone'/>
<Function name='Twirl'/>
<Function name='Twister'/>
@@ -1227,6 +1269,12 @@
<Function name='Wide'/>
<Function name='XMod'/>
<Function name='Xmode'/>
<Function name='Zigzag'/>
<Function name='ZigzagOffset'/>
<Function name='ZigzagPeriod'/>
<Function name='ZigzagZ'/>
<Function name='ZigzagZOffset'/>
<Function name='ZigzagZPeriod'/>
</Class>
<Class name='PlayerStageStats'>
<Function name='FailPlayer'/>
@@ -2316,6 +2364,12 @@
<EnumValue name='&apos;ModsLevel_Song&apos;' value='2'/>
<EnumValue name='&apos;ModsLevel_Current&apos;' value='3'/>
</Enum>
<Enum name='ModTimerType'>
<EnumValue name='&apos;ModTimerType_Game&apos;' value='0'/>
<EnumValue name='&apos;ModTimerType_Beat&apos;' value='1'/>
<EnumValue name='&apos;ModTimerType_Song&apos;' value='2'/>
<EnumValue name='&apos;ModTimerType_Default&apos;' value='3'/>
</Enum>
<Enum name='Month'>
<EnumValue name='&apos;Month_January&apos;' value='0'/>
<EnumValue name='&apos;Month_February&apos;' value='1'/>
+53 -1
View File
@@ -3432,9 +3432,17 @@ save yourself some time, copy this for undocumented things:
<Function name='BatteryLives' return='int' arguments='int num'> </Function>
<Function name='Backwards' return='bool' arguments='bool value'> </Function>
<Function name='Beat' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatMult' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatY' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatYMult' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatYOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatYPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatZMult' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BeatZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Big' return='bool' arguments='bool value'> </Function>
<Function name='Blink' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Blind' return='float, float' arguments='float value, float approach_speed'> </Function>
@@ -3445,6 +3453,9 @@ save yourself some time, copy this for undocumented things:
<Function name='Bumpy' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BumpyOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BumpyPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BumpyX' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BumpyXOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='BumpyXPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Centered' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='CMod' return='float, float' arguments='float value, float approach_speed'>
If the player has a CMod set, returns the value of that CMod and its associated approach speed. Returns nil otherwise.<br />
@@ -3460,6 +3471,14 @@ save yourself some time, copy this for undocumented things:
<Function name='Cover' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Cross' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Dark' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Digital' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalSteps' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DigitalZSteps' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Dizzy' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Distant' return='float, float' arguments='float value, float approach_speed'>
If the player is using Distant (zero skew and positive tilt), returns the value of tilt and its approach_speed.<br />
@@ -3472,6 +3491,10 @@ save yourself some time, copy this for undocumented things:
<Function name='DrunkOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DrunkPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DrunkSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DrunkZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DrunkZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DrunkZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='DrunkZSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Echo' return='bool' arguments='bool value'> </Function>
<Function name='Expand' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ExpandPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
@@ -3510,6 +3533,13 @@ save yourself some time, copy this for undocumented things:
<Function name='Left' return='bool' arguments='bool value'> </Function>
<Function name='LifeSetting' return='LifeType' arguments='LifeType type'> </Function>
<Function name='Little' return='bool' arguments='bool value'> </Function>
<Function name='ModTimerSetting' return= 'ModTimerType' arguments='ModTimerType type'>
Sets the effect clock of certain modifiers for the player, if the optional argument is provided. Returns the <Link class='ENUM' function='ModTimerType' /> that was previously set.<br />
Can also be set through strings in PlayerOptions::FromString().<br />
String Examples: 'ModTimerSong', 'modtimerbeat', etc.
</Function>
<Function name='ModTimerMult' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ModTimerOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='MaxScrollBPM' return='float, float' arguments='float value, float approach_speed'>
MaxScrollBPM is one of the variables for controlling the speed mod.<br />
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
@@ -3557,6 +3587,9 @@ save yourself some time, copy this for undocumented things:
If the player is using Overhead (0 tilt, 0 skew), returns true.<br />
If true is passed, sets the tilt and skew to 0.
</Function>
<Function name='ParabolaX' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ParabolaY' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ParabolaZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Passmark' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Planted' return='bool' arguments='bool value'> </Function>
<Function name='PlayerAutoPlay' return='float, float' arguments='float value, float approach_speed'> </Function>
@@ -3567,6 +3600,10 @@ save yourself some time, copy this for undocumented things:
<Function name='Reverse' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Right' return='bool' arguments='bool value'> </Function>
<Function name='Roll' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Sawtooth' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SawtoothPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SawtoothZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SawtoothZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ScrollBPM' return='float, float' arguments='float value, float approach_speed'>
ScrollBPM is one of the variables for controlling the speed mod.<br />
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
@@ -3593,6 +3630,12 @@ save yourself some time, copy this for undocumented things:
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
</Function>
<Function name='Split' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Square' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SquareOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SquarePeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SquareZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SquareZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='SquareZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Stealth' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Stomp' return='bool' arguments='bool value'> </Function>
<Function name='Sudden' return='float, float' arguments='float value, float approach_speed'> </Function>
@@ -3614,6 +3657,9 @@ save yourself some time, copy this for undocumented things:
<Function name='Tornado' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='TornadoOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='TornadoPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='TornadoZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='TornadoZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='TornadoZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='TurnNone' return='bool' arguments='bool value'> </Function>
<Function name='Twirl' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Twister' return='bool' arguments='bool value'> </Function>
@@ -3629,6 +3675,12 @@ save yourself some time, copy this for undocumented things:
If the optional second argument is passed, sets the speed at which the transition occurs.
</Function>
<Function name='Xmode' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='Zigzag' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ZigzagOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ZigzagPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ZigzagZ' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ZigzagZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
<Function name='ZigzagZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
</Class>
<Class name='PlayerStageStats'>
<Function name='FailPlayer' return='bool' arguments=''>