[default -> Xcode4] Lion is approaching.

This commit is contained in:
Jason Felds
2011-07-20 10:12:21 -04:00
400 changed files with 29179 additions and 6031 deletions
+8
View File
@@ -0,0 +1,8 @@
#COURSE:Jupiter;
#SCRIPTER:Midiman;
#GAINSECONDS:120;
#SONG:*:Hard;
#GAINSECONDS:25;
#SONG:*:Hard;
+7 -7
View File
@@ -39,17 +39,17 @@ WeightW2=30
WeightW1=50 WeightW1=50
[Skill5] [Skill5]
WeightMiss= WeightMiss=2
WeightW5=1 WeightW5=3
WeightW4=1 WeightW4=5
WeightW3=5 WeightW3=5
WeightW2=30 WeightW2=30
WeightW1=55 WeightW1=55
[Skill6] [Skill6]
WeightMiss= WeightMiss=2
WeightW5= WeightW5=3
WeightW4= WeightW4=5
WeightW3=5 WeightW3=5
WeightW2=30 WeightW2=30
WeightW1=70 WeightW1=55
+28
View File
@@ -9,6 +9,34 @@ change to JSON, but it is unsure if this will be done.
Implement .ssc at your own risk. Implement .ssc at your own risk.
________________________________________________________________________________ ________________________________________________________________________________
[v0.77] - Wolfman2000
* Add the cache tag #STEPFILENAME to gain access to the proper #NOTES when
required.
[v0.76] - Wolfman2000
* Expand the #COMBOS tag to allow for Miss Combos. Anyone that is crazy enough
to put in a 51 miss combo in their tags should be...oh wait: it's already
been done.
[v0.75] - Wolfman2000
* Add Step based #DISPLAYBPM for those songs that have...very varied syncing.
[v0.74] - Wolfman2000
* Add #CHARTNAME tag for the title of the chart.
* Older files will have their #DESCRIPTION tag content copied to #CHARTNAME
on load.
[v0.73] - Wolfman2000
* Use #FIRSTSECOND, #LASTSECOND, and #LASTSECONDHINT instead of the BEAT
equivalents.
* Move #LASTSECONDHINT to after the Timing tags.
[v0.72] - Wolfman2000
* Have #OFFSET come before #ATTACKS in the Step data.
[v0.71] - Wolfman2000
* Have #ATTACKS work per step as well.
[v0.7] - theDtTvB, Wolfman2000 [v0.7] - theDtTvB, Wolfman2000
* Split Timing officially implemented. * Split Timing officially implemented.
* #SPEEDS tag for modified scroll speeds. * #SPEEDS tag for modified scroll speeds.
+247 -1
View File
@@ -5,9 +5,255 @@ from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
________________________________________________________________________________ ________________________________________________________________________________
================================================================================ ================================================================================
StepMania 5.0 Preview 2 | 20110??? StepMania 5.0 ????????? | 20110???
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
2011/07/19
----------
* [LoadingWindow] Added the ability for themes to have custom splash banners.
(Currently Windows-only.) [AJ]
2011/07/17
----------
* [Cache] No longer store #NOTES in the cache. This should speed things up
on the first load if there is not much to write. (General note: this was
taken from another branch, but results at that point were great.)
[Wolfman2000]
2011/07/13
----------
* [Difficulty] Allow ALL StepsTypes to use CustomDifficulty properly.
There was some unfair targeting of Couple and Routine. [Wolfman2000]
* [Steps] Calculate accurate radar values for Couple charts. [Wolfman2000]
* [ScreenEdit] Display more accurate chart data for Couple and Routine charts
for the future. No more having (almost) every row as a jump! [Wolfman2000]
2011/07/12
----------
* [OptionRowHandler] Add a new metric to ScreenOptionsMaster:
StepsUseChartName. Use this if you want your charts to have a unique name
in the options menu. If there is no #CHARTNAME or it is "Blank", it reverts
to the original behavior. This metric is false by default. [Wolfman2000]
* [ScreenEdit] Fixed a bug involving #ATTACKS. Now when you set an attack,
the mods are reverted back to how they were prior to the attack being set.
[Wolfman2000]
2011/07/09
----------
* [NotesTheUsual] Update the #COMBOS tag to allow for a Miss Combo attribute.
Any files that only use the Combo attribute will have that value copied to
miss combo on next launch. [Wolfman2000]
* [ScoreKeeperNormal] Better match #COMBOS with eval. Scoring formulas should
not be affected, but it may require more testing. [Wolfman2000]
* [Metrics] Have Pump mode lump the checkpoint judgments with Flawless and
Miss judgments on eval. Of course, this goes down to Perfect and Miss if
that is disabled. [Wolfman2000]
2011/07/07
----------
* [ScreenEdit] Fix the NoMines transformation bug, issue 363. [Wolfman2000]
* [CourseLoaderCRS] Don't load BEST# and WORST# where # is greater than the
number of songs installed. Fixes issue 373. [AJ]
* [NotesAllSSC] Add the #CHARTNAME tag to the Steps. #DESCRIPTION is now for
more detailed descriptions, or perhaps some short hand lingo. All files
that used #DESCRIPTION will have their values moved to #CHARTNAME on
load. [Wolfman2000]
* [ScreenEdit] Add a Steps Data menu for getting numerical step data on the
chart. This is a read only menu. Edit Steps Information contains writable
information. [Wolfman2000]
* [NotesAllSSC] Add the Steps version of #DISPLAYBPM. The Song version is
still there, so themes should not have to worry about breakage.
[Wolfman2000]
2011/07/06
----------
* [ScreenEdit] Fix the bug where hitting Enter during playing wouldn't take
the user back to the editor. [Wolfman2000]
* [Gameplay] Fix Fail mods being dishonored. [Midiman]
2011/07/05
----------
* [ScreenEdit] Restore dance-couple and pump-couple for editing purposes.
Saving should still work, but this was never tested yet. [Wolfman2000]
* [ScreenOptions] Mini is now ITG Mini, and Tiny is now Pump Pro Mini.
This will prevent many prior courses from breaking. [sharksoda, Wolfman2000]
* [CharacterManager] Add a lua function to check how many characters you have.
For an example of how this is used, check the default theme's scripts
folder, specifically 03 ThemePrefs.lua. [Wolfman2000]
2011/07/04
----------
* [ScreenEdit] Add a function to switch the notes the routine players have to
hit. In simple terms, Player 1's notes are now Player 2's and vice~versa.
Check it out in the Alter Menu. [Wolfman2000]
* [ScreenEdit] Add two routine mirroring functions. Now you can build sections
of a chart for one player, and mirror the effect for the other player when
finished. For Pump players, it is not a straight mirror, but is more akin
to what is found via normal routine charts. In other words, you'll be happy.
Check it out in the Alter Menu. [Wolfman2000]
2011/07/03
----------
* [ScreenEdit] Fix a crash if one tries to remove an attack that doesn't
exist at that time. [Wolfman2000]
================================================================================
StepMania 5.0 Preview 2 | 20110703
--------------------------------------------------------------------------------
2011/07/03
----------
* [Player] Bring mMods from OpenITG over. Also, a metric was added,
"MModHighCap", to cap the speed mod if required for playing songs like
Tsuhsuixamush. Set the metric to 0 or less to remove the cap. [AJ, sharksoda,
Wolfman2000]
2011/07/02
----------
* [ScreenEdit] Fixed a crash when hitting Enter in the F1 help menu. [AJ]
2011/06/30
----------
* [NotesAll] Use #FIRSTSECOND, #LASTSECOND, and #LASTSECONDHINT instead of the
former BEAT equivalents. Split Timing has made this a necessity thanks to
certain files that abuse Stops/Delays more than usual. [Wolfman2000]
* [ScreenEdit] Add a function in the Area Menu to designate the current beat
as the last second of the song. Please try to be smart and not use this too
early. [Wolfman2000]
2011/06/28
----------
* [ScreenEdit] Add a function to copy/paste the TimingData of a player's
choice. Remember to be in the appropriate mode when copying and pasting.
By default, the song timing is already located in the clipboard, ready for
use. [Wolfman2000]
2011/06/27
----------
* [Steps] Make sure #ATTACKS are copied when requested. [Wolfman2000]
* [ScreenEdit] Have Step Author up front instead of Chart Style. This is
probably going to be better overall. [Wolfman2000]
* [TimingData] Preserve the length of time for Speed Segment scaling when using
beats. [Wolfman2000]
* [NotesLoader/WriterSSC] #OFFSET is to be before #ATTACKS. This is required if
we pursue beat based attacks and not just second based. [Wolfman2000]
2011/06/26
----------
* [UnlockManager] New metric: AutoLockEditSteps. Use this to hide bonus charts
until the Expert steps are beaten. No guarantee that this works with no
challenge steps in the song. This defaults to false. [Wolfman2000]
* [UnlockManager] New metric: SongsNotAdditional. Set to true to keep the
default behavior, false to have the AdditionalSongs folder contain
unlockable material. This is set to true to start. [Wolfman2000]
* [ScreenEdit] Allow jumping between all segments, not just Label segments.
You still use Ctrl + ,/. to jump, but now you use Ctrl + N/M to cycle the
segments. By default, it starts with Label. [Wolfman2000]
* [PlayerOptions] No longer display StepAttacks in the player's list.
Instead, show NoAttacks if attacks are disabled. [Wolfman2000]
2011/06/24
----------
* [Actor] Implement compound(length,tweens) in _fallback/02 Actor.lua. [AJ]
* [UnlockManager] Add a new unlock reward: StepsType. This is similar to
unlocking Steps, but it is targeted for one step in one stepstype rather
than one step in all stepstypes. This needs testing. [Wolfman2000]
* [ScreenEdit] Add the option to convert delays to beats. Just find a better
song to use this on besides Uprock. [Wolfman2000]
* [ScreenEdit] Fix a crash if you don't save any steps on a new song.
[Wolfman2000]
* [NotesLoader/WriterSSC] Add support for Step #ATTACKS. Furthermore, Song
Attacks (or rather, Step Attacks as it should be called now) are turned on
by default instead of off. [Wolfman2000]
2011/06/19
----------
* [EditMenu] Allow all songs to work in Practice Mode, regardless of folder
location. This fixes a crash if everyone had songs in AdditionalSongs.
[Wolfman2000]
2011/06/17
----------
* [LifeMeterBattery] Fixed a bug where MinesSubtractLives was not being honored.
Also added LifeChanged message to changing of life on holds. [AJ]
2011/06/15
----------
* [TimingData] Added many lua bindings for the other timing segments. GetWarps,
GetCombos, GetTimeSignatures, GetTickcounts, GetFakes, GetScrolls, GetSpeeds.
This should cover all of them now. [Wolfman2000]
2011/06/13
----------
* [InputHandler_DirectInput] Fixed MouseWheel input not resetting. [AJ]
* [ScreenTextEntry] Make it so only the keyboard's Enter key can finish the
screen. Should fix issues with buttons whose secondary function is MenuStart. [AJ]
* [InputMapper] Modify default mappings. Use the Hyphen key instead of the
Numlock key for Player 2's GAME_BUTTON_BACK. This should address some
issues with Player 2 being unable to back out if they use a laptop.
[Wolfman2000]
* [NoteDisplay] Add two new metrics.
* DrawRollHeadForTapsOnSameRow: bool, similar to DrawHoldHeadForTapsOnSameRow
* TapHoldRollOnRowMeansHold: bool, true means hold and false means roll
* No noteskins should require updating, as these were placed in common/common
for ease of use. [Wolfman2000]
* [LifeMeterBattery] Added ChangeLives(int) Lua binding. [AJ]
* [LifeMeterBattery] Added DangerThreshold metric. [AJ]
* [LifeMeterBattery] Added some important metrics. [AJ]
* MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life.
* SubtractLives=1 - how many lives are lost when going below MinScoreToKeepLife.
* MinesSubtractLives=1 - how many lives are lost when hitting a mine.
* HeldAddLives=0 - how many lives are gained when a hold is completed.
* LetGoSubtractLives=1 - how many lives are lost on a dropped hold.
2011/06/12
----------
* [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. [AJ]
* [ScreenEdit] Restore the old PageUp/PageDown behavior, added Control +
PageUp/PageDown to use recent time signature behavior. Laptop users, that
includes you guys too: semicolon and apostrophe are still good. [Wolfman2000]
2011/06/11
----------
* [ScreenEdit] Allow setting the Music Preview via the Alter Menu. Just select
your area, enter the menu, and choose "Designate as Music Preview". No more
math calculations needed! [Wolfman2000]
* [SongUtil] Added GetPlayableSteps(Song) Lua binding. [AJ]
* [Steps] Allow 255 characters for all chart descriptions, including edits.
We are no longer bound by In The Groove I think. [Wolfman2000]
* [Player] Add GetPlayerTimingData() Lua binding. [Wolfman2000]
2011/06/10
----------
* [ScreenEdit] Split the Area Menu into the Area Menu and Alter Menu. Use the
"A" key to enter the Alter Menu when a selection of notes/rows are
highlighted. Use the Enter key to enter the old Area Menu for the options that
do not depend on selecting NoteData. [Wolfman2000]
* [ScreenEdit] Allow converting selections to Delays, Warps, or Fakes as well
as Stops. Remember, use the Alter Menu for this. [Wolfman2000]
2011/06/09
----------
* [ScreenSyncOverlay] Ensure that F11 / F12 work with all charts due to Split
Timing. [Wolfman2000]
2011/06/08
----------
* Any notes in a fake segment or warp segment are completely ignored for
scoring purposes. Now you can get 100% on your warping goodness!
[Wolfman2000]
2011/06/06
----------
* [PlayerOptions] Removed the ScoreDisplay mod choices. Use lua to make your
own scoring formulas that work in reverse instead. [Wolfman2000]
* [ScreenGameplay] Fix an assist tick bug if there was no Player 1. Note that
this changes the behavior slightly: it is the first enabled player, or
master player, that gets the ticks now. A better solution will be looked at
in the future. [Wolfman2000]
* [NoteDataUtil] Fix a radar issue involving hands. Unfortunately, this means
yet another cache reload for accuracy purposes. [Wolfman2000]
2011/06/04 2011/06/04
---------- ----------
* Changed default MusicWheelSwitchSpeed to 15 (was 10). [AJ] * Changed default MusicWheelSwitchSpeed to 15 (was 10). [AJ]
+85 -8
View File
@@ -3,6 +3,7 @@
<Lua xmlns='http://www.stepmania.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.stepmania.com Lua.xsd'> <Lua xmlns='http://www.stepmania.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.stepmania.com Lua.xsd'>
<GlobalFunctions> <GlobalFunctions>
<Function name='Alpha'/>
<Function name='AreStagePlayerModsForced'/> <Function name='AreStagePlayerModsForced'/>
<Function name='AreStageSongModsForced'/> <Function name='AreStageSongModsForced'/>
<Function name='Basename'/> <Function name='Basename'/>
@@ -39,11 +40,8 @@
<Function name='FormatNumberAndSuffix'/> <Function name='FormatNumberAndSuffix'/>
<Function name='FormatPercentScore'/> <Function name='FormatPercentScore'/>
<Function name='GameCompatibleModes'/> <Function name='GameCompatibleModes'/>
<Function name='GamePrefAutoSetStyle'/>
<Function name='GamePrefComboOnRolls'/> <Function name='GamePrefComboOnRolls'/>
<Function name='GamePrefComboUnderField'/>
<Function name='GamePrefDefaultFail'/> <Function name='GamePrefDefaultFail'/>
<Function name='GamePrefNotePosition'/>
<Function name='GetCoursesToShowRanking'/> <Function name='GetCoursesToShowRanking'/>
<Function name='GetCustomDifficulty'/> <Function name='GetCustomDifficulty'/>
<Function name='GetDefaultOptionLines'/> <Function name='GetDefaultOptionLines'/>
@@ -57,6 +55,7 @@
<Function name='GetGradeFromPercent'/> <Function name='GetGradeFromPercent'/>
<Function name='GetLifeDifficulty'/> <Function name='GetLifeDifficulty'/>
<Function name='GetOSName'/> <Function name='GetOSName'/>
<Function name='GetPlayerOrMachineProfile'/>
<Function name='GetProTiming'/> <Function name='GetProTiming'/>
<Function name='GetRandomSongBackground'/> <Function name='GetRandomSongBackground'/>
<Function name='GetReal'/> <Function name='GetReal'/>
@@ -130,7 +129,6 @@
<Function name='PrintTable'/> <Function name='PrintTable'/>
<Function name='ProductID'/> <Function name='ProductID'/>
<Function name='ProductVersion'/> <Function name='ProductVersion'/>
<Function name='Profile'/>
<Function name='RadarCategoryToLocalizedString'/> <Function name='RadarCategoryToLocalizedString'/>
<Function name='ReadGamePrefFromFile'/> <Function name='ReadGamePrefFromFile'/>
<Function name='ReadPrefFromFile'/> <Function name='ReadPrefFromFile'/>
@@ -143,6 +141,8 @@
<Function name='Saturation'/> <Function name='Saturation'/>
<Function name='ScoreKeeperClass'/> <Function name='ScoreKeeperClass'/>
<Function name='ScoreMissedHoldsAndRolls'/> <Function name='ScoreMissedHoldsAndRolls'/>
<Function name='ScreenMetric'/>
<Function name='ScreenString'/>
<Function name='Second'/> <Function name='Second'/>
<Function name='SecondsToHHMMSS'/> <Function name='SecondsToHHMMSS'/>
<Function name='SecondsToMMSS'/> <Function name='SecondsToMMSS'/>
@@ -153,6 +153,7 @@
<Function name='SelectMusicOrCourse'/> <Function name='SelectMusicOrCourse'/>
<Function name='SelectProfileKeys'/> <Function name='SelectProfileKeys'/>
<Function name='Serialize'/> <Function name='Serialize'/>
<Function name='SetFail'/>
<Function name='SetGamePref'/> <Function name='SetGamePref'/>
<Function name='SetThemePref'/> <Function name='SetThemePref'/>
<Function name='SetUserPref'/> <Function name='SetUserPref'/>
@@ -322,6 +323,7 @@
<Function name='bouncebegin'/> <Function name='bouncebegin'/>
<Function name='bounceend'/> <Function name='bounceend'/>
<Function name='clearzbuffer'/> <Function name='clearzbuffer'/>
<Function name='compound'/>
<Function name='cropbottom'/> <Function name='cropbottom'/>
<Function name='cropleft'/> <Function name='cropleft'/>
<Function name='cropright'/> <Function name='cropright'/>
@@ -578,6 +580,7 @@
<Function name='GetAllCharacters'/> <Function name='GetAllCharacters'/>
<Function name='GetCharacter'/> <Function name='GetCharacter'/>
<Function name='GetRandomCharacter'/> <Function name='GetRandomCharacter'/>
<Function name='GetCharacterCount'/>
</Class> </Class>
<Class base='ActorFrame' name='ComboGraph'> <Class base='ActorFrame' name='ComboGraph'>
<Function name='Load'/> <Function name='Load'/>
@@ -823,6 +826,7 @@
<Function name='IsInDanger'/> <Function name='IsInDanger'/>
</Class> </Class>
<Class base='LifeMeter' name='LifeMeterBattery'> <Class base='LifeMeter' name='LifeMeterBattery'>
<Function name='ChangeLives'/>
<Function name='GetLivesLeft'/> <Function name='GetLivesLeft'/>
<Function name='GetTotalLives'/> <Function name='GetTotalLives'/>
</Class> </Class>
@@ -889,6 +893,7 @@
<Function name='LoadFromStats'/> <Function name='LoadFromStats'/>
</Class> </Class>
<Class base='ActorFrame' name='Player'> <Class base='ActorFrame' name='Player'>
<Function name='GetPlayerTimingData'/>
<Function name='SetActorWithComboPosition'/> <Function name='SetActorWithComboPosition'/>
<Function name='SetActorWithJudgmentPosition'/> <Function name='SetActorWithJudgmentPosition'/>
</Class> </Class>
@@ -929,6 +934,7 @@
<Function name='GetMines'/> <Function name='GetMines'/>
<Function name='GetMini'/> <Function name='GetMini'/>
<Function name='GetMirror'/> <Function name='GetMirror'/>
<Function name='GetNoAttacks'/>
<Function name='GetNoFakes'/> <Function name='GetNoFakes'/>
<Function name='GetNoHands'/> <Function name='GetNoHands'/>
<Function name='GetNoHolds'/> <Function name='GetNoHolds'/>
@@ -956,6 +962,7 @@
<Function name='GetSongAttacks'/> <Function name='GetSongAttacks'/>
<Function name='GetSplit'/> <Function name='GetSplit'/>
<Function name='GetStealth'/> <Function name='GetStealth'/>
<Function name='GetStepAttacks'/>
<Function name='GetStomp'/> <Function name='GetStomp'/>
<Function name='GetSudden'/> <Function name='GetSudden'/>
<Function name='GetSuddenOffset'/> <Function name='GetSuddenOffset'/>
@@ -1026,6 +1033,52 @@
<Function name='SetPreference'/> <Function name='SetPreference'/>
<Function name='SetPreferenceToDefault'/> <Function name='SetPreferenceToDefault'/>
</Class> </Class>
<Class name='Profile'>
<Function name='GetCaloriesBurnedToday'/>
<Function name='GetCharacter'/>
<Function name='GetCoursesActual'/>
<Function name='GetCoursesPercentComplete'/>
<Function name='GetCoursesPossible'/>
<Function name='GetDisplayName'/>
<Function name='GetDisplayTotalCaloriesBurned'/>
<Function name='GetGoalCalories'/>
<Function name='GetGoalSeconds'/>
<Function name='GetGoalType'/>
<Function name='GetHighScoreList'/>
<Function name='GetLastUsedHighScoreName'/>
<Function name='GetMostPopularCourse'/>
<Function name='GetMostPopularSong'/>
<Function name='GetNumToasties'/>
<Function name='GetNumTotalSongsPlayed'/>
<Function name='GetSongNumTimesPlayed'/>
<Function name='GetSongsActual'/>
<Function name='GetSongsAndCoursesPercentCompleteAllDifficulties'/>
<Function name='GetSongsPercentComplete'/>
<Function name='GetSongsPossible'/>
<Function name='GetTotalCaloriesBurned'/>
<Function name='GetTotalGameplaySeconds'/>
<Function name='GetTotalHands'/>
<Function name='GetTotalHolds'/>
<Function name='GetTotalJumps'/>
<Function name='GetTotalLifts'/>
<Function name='GetTotalMines'/>
<Function name='GetTotalNumSongsPlayed'/>
<Function name='GetTotalRolls'/>
<Function name='GetTotalSessionSeconds'/>
<Function name='GetTotalSessions'/>
<Function name='GetTotalStepsWithTopGrade'/>
<Function name='GetTotalTapsAndHolds'/>
<Function name='GetTotalTrailsWithTopGrade'/>
<Function name='GetUserData'/>
<Function name='GetWeightPounds'/>
<Function name='HasPassedAnyStepsInSong'/>
<Function name='IsCodeUnlocked'/>
<Function name='SetCharacter'/>
<Function name='SetGoalCalories'/>
<Function name='SetGoalSeconds'/>
<Function name='SetGoalType'/>
<Function name='SetWeightPounds'/>
</Class>
<Class name='ProfileManager'> <Class name='ProfileManager'>
<Function name='GetLocalProfile'/> <Function name='GetLocalProfile'/>
<Function name='GetLocalProfileFromIndex'/> <Function name='GetLocalProfileFromIndex'/>
@@ -1093,6 +1146,15 @@
</Class> </Class>
<Class base='BitmapText' name='ScoreDisplayAliveTime'/> <Class base='BitmapText' name='ScoreDisplayAliveTime'/>
<Class base='BitmapText' name='ScoreDisplayCalories'/> <Class base='BitmapText' name='ScoreDisplayCalories'/>
<Class base='ActorFrame' name='Screen'>
<Function name='GetNextScreenName'/>
<Function name='GetPrevScreenName'/>
<Function name='GetScreenType'/>
<Function name='Metric'/>
<Function name='PostScreenMessage'/>
<Function name='String'/>
<Function name='lockinput'/>
</Class>
<Class base='ScreenWithMenuElements' name='ScreenAttract'/> <Class base='ScreenWithMenuElements' name='ScreenAttract'/>
<Class base='ScreenWithMenuElements' name='ScreenEdit'> <Class base='ScreenWithMenuElements' name='ScreenEdit'>
<Function name='GetEditState'/> <Function name='GetEditState'/>
@@ -1185,9 +1247,11 @@
<Function name='GetDisplayMainTitle'/> <Function name='GetDisplayMainTitle'/>
<Function name='GetDisplaySubTitle'/> <Function name='GetDisplaySubTitle'/>
<Function name='GetFirstBeat'/> <Function name='GetFirstBeat'/>
<Function name='GetFirstSecond'/>
<Function name='GetGenre'/> <Function name='GetGenre'/>
<Function name='GetGroupName'/> <Function name='GetGroupName'/>
<Function name='GetLastBeat'/> <Function name='GetLastBeat'/>
<Function name='GetLastSecond'/>
<Function name='GetLyricsPath'/> <Function name='GetLyricsPath'/>
<Function name='GetMusicPath'/> <Function name='GetMusicPath'/>
<Function name='GetOneSteps'/> <Function name='GetOneSteps'/>
@@ -1318,6 +1382,7 @@
</Class> </Class>
<Class name='Steps'> <Class name='Steps'>
<Function name='GetAuthorCredit'/> <Function name='GetAuthorCredit'/>
<Function name='GetChartName'/>
<Function name='GetChartStyle'/> <Function name='GetChartStyle'/>
<Function name='GetDescription'/> <Function name='GetDescription'/>
<Function name='GetDifficulty'/> <Function name='GetDifficulty'/>
@@ -1327,6 +1392,7 @@
<Function name='GetRadarValues'/> <Function name='GetRadarValues'/>
<Function name='GetStepsType'/> <Function name='GetStepsType'/>
<Function name='GetTimingData'/> <Function name='GetTimingData'/>
<Function name='HasAttacks'/>
<Function name='HasSignificantTimingChanges'/> <Function name='HasSignificantTimingChanges'/>
<Function name='IsAPlayerEdit'/> <Function name='IsAPlayerEdit'/>
<Function name='IsAnEdit'/> <Function name='IsAnEdit'/>
@@ -1377,10 +1443,17 @@
<Function name='GetBPMs'/> <Function name='GetBPMs'/>
<Function name='GetBPMsAndTimes'/> <Function name='GetBPMsAndTimes'/>
<Function name='GetBeatFromElapsedTime'/> <Function name='GetBeatFromElapsedTime'/>
<Function name='GetCombos'/>
<Function name='GetDelays'/> <Function name='GetDelays'/>
<Function name='GetElapsedTimeFromBeat'/> <Function name='GetElapsedTimeFromBeat'/>
<Function name='GetFakes'/>
<Function name='GetLabels'/> <Function name='GetLabels'/>
<Function name='GetScrolls'/>
<Function name='GetSpeeds'/>
<Function name='GetStops'/> <Function name='GetStops'/>
<Function name='GetTickcounts'/>
<Function name='GetTimeSignatures'/>
<Function name='GetWarps'/>
<Function name='HasBPMChanges'/> <Function name='HasBPMChanges'/>
<Function name='HasFakes'/> <Function name='HasFakes'/>
<Function name='HasNegativeBPMs'/> <Function name='HasNegativeBPMs'/>
@@ -1408,6 +1481,7 @@
<Function name='GetCode'/> <Function name='GetCode'/>
<Function name='GetCourse'/> <Function name='GetCourse'/>
<Function name='GetDescription'/> <Function name='GetDescription'/>
<Function name='GetRequirePassChallengeSteps'/>
<Function name='GetRequirePassHardSteps'/> <Function name='GetRequirePassHardSteps'/>
<Function name='GetRequirement'/> <Function name='GetRequirement'/>
<Function name='GetSong'/> <Function name='GetSong'/>
@@ -1421,6 +1495,7 @@
<Function name='roulette'/> <Function name='roulette'/>
<Function name='song'/> <Function name='song'/>
<Function name='steps'/> <Function name='steps'/>
<Function name='steps_type'/>
</Class> </Class>
<Class name='UnlockManager'> <Class name='UnlockManager'>
<Function name='AnyUnlocksToCelebrate'/> <Function name='AnyUnlocksToCelebrate'/>
@@ -1470,6 +1545,7 @@
<Function name='GetCreditsMessage'/> <Function name='GetCreditsMessage'/>
</Namespace> </Namespace>
<Namespace name='SongUtil'> <Namespace name='SongUtil'>
<Function name='GetPlayableSteps'/>
<Function name='IsStepsPlayable'/> <Function name='IsStepsPlayable'/>
<Function name='IsStepsTypePlayable'/> <Function name='IsStepsTypePlayable'/>
</Namespace> </Namespace>
@@ -2024,8 +2100,9 @@
<Enum name='UnlockRewardType'> <Enum name='UnlockRewardType'>
<EnumValue name='&apos;UnlockRewardType_Song&apos;' value='0'/> <EnumValue name='&apos;UnlockRewardType_Song&apos;' value='0'/>
<EnumValue name='&apos;UnlockRewardType_Steps&apos;' value='1'/> <EnumValue name='&apos;UnlockRewardType_Steps&apos;' value='1'/>
<EnumValue name='&apos;UnlockRewardType_Course&apos;' value='2'/> <EnumValue name='&apos;UnlockRewardType_StepsType&apos;' value='2'/>
<EnumValue name='&apos;UnlockRewardType_Modifier&apos;' value='3'/> <EnumValue name='&apos;UnlockRewardType_Course&apos;' value='3'/>
<EnumValue name='&apos;UnlockRewardType_Modifier&apos;' value='4'/>
</Enum> </Enum>
<Enum name='VertAlign'> <Enum name='VertAlign'>
<EnumValue name='&apos;VertAlign_Top&apos;' value='0'/> <EnumValue name='&apos;VertAlign_Top&apos;' value='0'/>
@@ -2060,6 +2137,6 @@
<Constant name='sGame' value='&apos;dance&apos;'/> <Constant name='sGame' value='&apos;dance&apos;'/>
<Constant name='top' value='&apos;VertAlign_Top&apos;'/> <Constant name='top' value='&apos;VertAlign_Top&apos;'/>
</Constants> </Constants>
<Version>StepMania 5 v5.0 Preview 1a</Version> <Version>StepMania 5 v5.0 Preview 2</Version>
<Date>2011-06-04</Date> <Date>2011-07-04</Date>
</Lua> </Lua>
+7 -1
View File
@@ -395,7 +395,13 @@
$type='bool' or $type='bool' or
$type='table' or $type='table' or
$type='color' or $type='color' or
$type='Enum'"> $type='Enum' or
$type='ThreadVariable' or
$type='LuaOptionRow' or
$type='ActorDef' or
$type='chunk' or
$type='unsigned' or
$type='various'">
<span class="primitiveType"> <span class="primitiveType">
<xsl:value-of select="$type" /> <xsl:value-of select="$type" />
</span> </span>
+318 -27
View File
@@ -23,6 +23,9 @@
<Documentation xmlns='http://www.stepmania.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.stepmania.com Lua.xsd'> <Documentation xmlns='http://www.stepmania.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.stepmania.com Lua.xsd'>
<!-- Global functions --> <!-- Global functions -->
<GlobalFunctions> <GlobalFunctions>
<Function name='Alpha' theme='_fallback' return='color' arguments='color c, float percent'>
[03 HSV.lua] Returns a <code>color</code> with the specified alpha.
</Function>
<Function name='AreStagePlayerModsForced' theme='_fallback' return='bool' arguments=''> <Function name='AreStagePlayerModsForced' theme='_fallback' return='bool' arguments=''>
[02 StageMods.lua] [02 StageMods.lua]
</Function> </Function>
@@ -36,10 +39,10 @@
Returns the base name of file path. Returns the base name of file path.
</Function> </Function>
<Function name='BoostColor' theme='_fallback' return='color' arguments='color c, float fBoost'> <Function name='BoostColor' theme='_fallback' return='color' arguments='color c, float fBoost'>
[02 Colors.lua] [02 Colors.lua] Boosts the specified color by multiplying its values by <code>fBoost</code>.
</Function> </Function>
<Function name='Brightness' theme='_fallback' return='color' arguments='color c, float percent'> <Function name='Brightness' theme='_fallback' return='color' arguments='color c, float percent'>
[03 HSV.lua] [03 HSV.lua] Modifies the brightness of the specified color.
</Function> </Function>
<Function name='Center1Player' theme='_fallback' return='bool' arguments=''> <Function name='Center1Player' theme='_fallback' return='bool' arguments=''>
[03 ProductivityHelpers.lua] Returns <code>true</code> if Center 1P is being used. [03 ProductivityHelpers.lua] Returns <code>true</code> if Center 1P is being used.
@@ -48,7 +51,8 @@
[03 Gameplay.lua] [03 Gameplay.lua]
</Function> </Function>
<Function name='clamp' return='float' arguments='float fValue, float fLow, float fHigh'> <Function name='clamp' return='float' arguments='float fValue, float fLow, float fHigh'>
CLAMP is an all-female Japanese mangaka group that formed in the mid 1980s. Erm, I mean... Clamps <code>fValue</code> between <code>fLow</code> and <code>fHigh</code>. CLAMP is an all-female Japanese mangaka group that formed in the mid 1980s.
Erm, I mean... Clamps <code>fValue</code> between <code>fLow</code> and <code>fHigh</code>.
</Function> </Function>
<Function name='CloseConnection' return='void' arguments=''> <Function name='CloseConnection' return='void' arguments=''>
Closes any connection to an online server. Closes any connection to an online server.
@@ -59,6 +63,21 @@
<Function name='color' return='color' arguments='string color'> <Function name='color' return='color' arguments='string color'>
Returns a color from a string. <code>color</code> can be in hex (<code>"#FFFFFFFF"</code>) or 0..1 values (<code>"1.0,1.0,1.0,1.0"</code>), in RGBA order. Returns a color from a string. <code>color</code> can be in hex (<code>"#FFFFFFFF"</code>) or 0..1 values (<code>"1.0,1.0,1.0,1.0"</code>), in RGBA order.
</Function> </Function>
<Function name='ColorDarkTone' theme='_fallback' return='' arguments='color c'>
[02 Colors.lua] Returns a darker tone of the color. (Specifically <code>c[1]/2, c[2]/2, c[3]/2, c[4]</code>)
</Function>
<Function name='ColorLightTone' theme='_fallback' return='' arguments='color c'>
[02 Colors.lua] Returns a lighter tone of the color. (Specifically <code>c[1]+(c[1]/2), c[2]+(c[2]/2), c[3]+(c[3]/2), c[4]</code>)
</Function>
<Function name='ColorMidTone' theme='_fallback' return='' arguments='color c'>
[02 Colors.lua] Returns a midtone of the color. (Specifically <code>c[1]/1.5, c[2]/1.5, c[3]/1.5, c[4]</code>)
</Function>
<Function name='ColorToHex' theme='_fallback' return='string' arguments='color c'>
[03 HSV.lua] Returns a hex representation for the specified color.
</Function>
<Function name='ColorToHSV' theme='_fallback' return='table' arguments='color c'>
[03 HSV.lua] Takes in a color and returns a table with the HSV values.
</Function>
<Function name='ComboContinue' theme='_fallback' return='TapNoteScore' arguments=''> <Function name='ComboContinue' theme='_fallback' return='TapNoteScore' arguments=''>
[03 Gameplay.lua] Determines what TapNoteScore allows for continuing the combo. [03 Gameplay.lua] Determines what TapNoteScore allows for continuing the combo.
</Function> </Function>
@@ -68,6 +87,12 @@
<Function name='ComboPerRow' theme='_fallback' return='bool' arguments=''> <Function name='ComboPerRow' theme='_fallback' return='bool' arguments=''>
[03 Gameplay.lua] Determines if combo should be per row (Jump = 1) or per column (Jump = 2). [03 Gameplay.lua] Determines if combo should be per row (Jump = 1) or per column (Jump = 2).
</Function> </Function>
<Function name='ComboTransformCommand' theme='_fallback' return='void' arguments='Actor self, params p'>
[02 Other.lua] The combo trasform command.
</Function>
<Function name='ComboUnderField' theme='_fallback' return='bool' arguments=''>
[03 Gameplay.lua] Returns the <code>UserPrefComboUnderField</code> user preference value.
</Function>
<Function name='ConnectToServer' return='bool' arguments='string sAddress'> <Function name='ConnectToServer' return='bool' arguments='string sAddress'>
Tries to connect to the server at <code>sAddress</code>. Tries to connect to the server at <code>sAddress</code>.
</Function> </Function>
@@ -77,14 +102,23 @@
<Function name='DayOfYear' return='int' arguments=''> <Function name='DayOfYear' return='int' arguments=''>
Returns the current day of the year. Returns the current day of the year.
</Function> </Function>
<Function name='DeepCopy' theme='_fallback' return='table' arguments='table from, table to, table already_copied'>
[02 Serialize] Recursively deep-copy a table.
</Function>
<Function name='dofile' theme='_fallback' return='chunk' arguments='string sFilePath'> <Function name='dofile' theme='_fallback' return='chunk' arguments='string sFilePath'>
[01 base.lua] "Override Lua's dofile to use our <Link function="loadfile">loadfile</Link>." [01 base.lua] "Override Lua's dofile to use our <Link function="loadfile">loadfile</Link>."
</Function> </Function>
<Function name='fapproach' theme='_fallback' return='float' arguments='float val, float other_val, float to_move'>
[02 Utilities.lua]
</Function>
<Function name='FindSelection' theme='_fallback' return='int' arguments='table list'>
[02 Utilities.lua] Return the index of a true value in <code>list</code>.
</Function>
<Function name='FindValue' theme='_fallback' return='string' arguments='table tab, various value'> <Function name='FindValue' theme='_fallback' return='string' arguments='table tab, various value'>
[02 Utilities.lua] Find a key in <code>tab</code> with the given <code>value</code>. [02 Utilities.lua] Find a key in <code>tab</code> with the given <code>value</code>.
</Function> </Function>
<Function name='FindSelection' theme='_fallback' return='int' arguments='table list'> <Function name='foreach_ordered' theme='_fallback' return='void' arguments='table t, function f'>
[02 Utilities.lua] Return the index of a true value in <code>list</code>. <code>func</code> takes a key and a value.
</Function> </Function>
<Function name='FormatNumberAndSuffix' return='string' arguments='int num'> <Function name='FormatNumberAndSuffix' return='string' arguments='int num'>
Returns the number passed to the function followed by its suffix (&quot;th&quot;, &quot;nd&quot;, and so on). Returns the number passed to the function followed by its suffix (&quot;th&quot;, &quot;nd&quot;, and so on).
@@ -98,6 +132,12 @@
<Function name='GetCustomDifficulty' return='string' arguments='StepsType st, Difficulty d, CourseType ct'> <Function name='GetCustomDifficulty' return='string' arguments='StepsType st, Difficulty d, CourseType ct'>
Returns the corresponding CustomDifficulty string for a StepsType/Difficulty (/optional CourseType) combination. Returns the corresponding CustomDifficulty string for a StepsType/Difficulty (/optional CourseType) combination.
</Function> </Function>
<Function name='GetDirectRadar' theme='_fallback' return='RadarValues' arguments='PlayerNumber pn'>
[04 Scoring.lua] "Get the radar values directly. The individual steps aren't used much."
</Function>
<Function name='GetEditModeSubScreens' theme='_fallback' return='string' arguments=''>
[02 Other.lua] Returns a string with the Edit Mode SubScreens.
</Function>
<Function name='getenv' theme='_fallback' return='various' arguments='string name'> <Function name='getenv' theme='_fallback' return='various' arguments='string name'>
[03 EnvUtils2.lua] Returns the value of <code>name</code> from the Env table. [03 EnvUtils2.lua] Returns the value of <code>name</code> from the Env table.
</Function> </Function>
@@ -113,21 +153,45 @@
<Function name='GetOSName' return='string' arguments=''> <Function name='GetOSName' return='string' arguments=''>
Returns a string representing the name of the operating system being used. (e.g. "Windows", "Linux", "Mac, "Unknown") Returns a string representing the name of the operating system being used. (e.g. "Windows", "Linux", "Mac, "Unknown")
</Function> </Function>
<Function name='GetPlayerOrMachineProfile' theme='_fallback' return='Profile' arguments='PlayerNumber pn'>
[03 ProductivityHelpers.lua] "This returns a profile, preferably a player one. If there isn't one, [it falls] back on the machine profile."
</Function>
<Function name='GetProTiming' theme='default' return='bool' arguments='PlayerNumber pn'> <Function name='GetProTiming' theme='default' return='bool' arguments='PlayerNumber pn'>
[03 ThemePrefs.lua] Returns <code>true</code> if player <code>pn</code> is using ProTiming. [03 ThemePrefs.lua] Returns <code>true</code> if player <code>pn</code> is using ProTiming.
</Function> </Function>
<Function name='GetRandomSongBackground' theme='_fallback' return='string' arguments=''> <Function name='GetRandomSongBackground' theme='_fallback' return='string' arguments=''>
[02 Utilities.lua] Returns a path to a random song background. [02 Utilities.lua] Returns a path to a random song background.
</Function> </Function>
<Function name='GetReal' theme="_fallback" return='float' arguments=''>
[03 ProductivityHelpers.lua]
</Function>
<Function name='GetRealInverse' theme="_fallback" return='float' arguments=''>
[03 ProductivityHelpers.lua]
</Function>
<Function name='GetScreenAspectRatio' return='float' arguments=''>
Returns the display aspect ratio.
</Function>
<Function name='GetServerName' return='string' arguments=''> <Function name='GetServerName' return='string' arguments=''>
Returns the name of the currently connected server. Returns the name of the currently connected server.
</Function> </Function>
<Function name='GetSongBackground' theme='_fallback' return='string' arguments=''> <Function name='GetSongBackground' theme='_fallback' return='string' arguments=''>
[02 Utilities.lua] Returns a path to the current songs background. [02 Utilities.lua] Returns a path to the current songs background.
</Function> </Function>
<Function name='GetTapPosition' theme='_fallback' return='float' arguments=''>
[03 Gameplay.lua]
</Function>
<Function name='GetThemeAspectRatio' return='float' arguments=''> <Function name='GetThemeAspectRatio' return='float' arguments=''>
Returns the theme's aspect ratio. Returns the theme's aspect ratio.
</Function> </Function>
<Function name='GetThemePref' theme='_fallback' return='' arguments=''>
[03 ThemePrefs.lua] (Alias for <Link class='ThemePrefs' function='Get' />.)
</Function>
<Function name='GetTimingDifficulty' return='int' arguments=''>
Returns the current Timing difficulty.
</Function>
<Function name='GetTotalItems' theme='_fallback' return='float' arguments='RadarValues radars'>
[04 Scoring.lua] "Retrieve the amount of taps/holds/rolls involved." Used in some scoring formulas.
</Function>
<Function name='GetUserPref' theme='_fallback' return='string' arguments='string name'> <Function name='GetUserPref' theme='_fallback' return='string' arguments='string name'>
[03 UserPreferences2.lua] Themer-facing function for getting a user preference. [03 UserPreferences2.lua] Themer-facing function for getting a user preference.
</Function> </Function>
@@ -140,9 +204,38 @@
<Function name='GetUserPrefN' theme='_fallback' return='float' arguments='string name'> <Function name='GetUserPrefN' theme='_fallback' return='float' arguments='string name'>
[03 UserPreferences2.lua] Themer-facing function for getting a user preference as a number. [03 UserPreferences2.lua] Themer-facing function for getting a user preference as a number.
</Function> </Function>
<Function name='HasAlpha' theme='_fallback' return='float' arguments='color c'>
[03 HSV.lua] Returns the color's alpha if it has any, otherwise returns 1.
</Function>
<Function name='HitCombo' theme='_fallback' return='int' arguments=''>
[03 Gameplay.lua] Returns the value to start showing the combo at.
</Function>
<Function name='HoldHeadStep' theme='_fallback' return='bool' arguments=''>
[03 Gameplay.lua] Returns <code>true</code> if you need to step on hold heads to activate them.
</Function>
<Function name='HoldTiming' theme='_fallback' return='float' arguments=''>
[03 Gameplay.lua] Returns 0 in <code>pump</code> mode, <code>TimingWindowSecondsHold</code> preference value in any other game mode.
</Function>
<Function name='Hour' return='int' arguments=''> <Function name='Hour' return='int' arguments=''>
Returns the current hour. Returns the current hour.
</Function> </Function>
<Function name='HSV' theme='_fallback' return='color' arguments='float h, float s, float v'>
[03 HSV.lua] Converts a color from HSV values to something StepMania can understand.
hue is from <code>0-360</code>, saturation and value are <code>0..1</code>
</Function>
<Function name='HSVA' theme='_fallback' return='color' arguments='float h, float s, float v, float a'>
[03 HSV.lua] Converts a color from HSV values with alpha to something StepMania can understand.
hue is from <code>0-360</code>, saturation, value, and alpha are <code>0..1</code>
</Function>
<Function name='HSVToColor' theme='_fallback' return='color' arguments='table hsv'>
[03 HSV.lua] "Converts a set of HSV values to a color."
</Function>
<Function name='HSVToHex' theme='_fallback' return='string' arguments='table hsv'>
[03 HSV.lua] "Takes in a normal color and returns the hex representation. (Adapted from code in LuaBit)"
</Function>
<Function name='Hue' theme='_fallback' return='color' arguments='color c, int newHue'>
[03 HSV.lua] Changes the hue of the input color.
</Function>
<Function name='InitUserPrefs' theme='default' return='void' arguments=''> <Function name='InitUserPrefs' theme='default' return='void' arguments=''>
[03 ThemePrefs.lua] Initializes various user preferences. [03 ThemePrefs.lua] Initializes various user preferences.
</Function> </Function>
@@ -206,6 +299,12 @@
<Function name='Minute' return='int' arguments=''> <Function name='Minute' return='int' arguments=''>
Returns the current Minute. Returns the current Minute.
</Function> </Function>
<Function name='MissCombo' theme='_fallback' return='int' arguments=''>
[03 Gameplay.lua] Returns the value to start showing the miss combo at.
</Function>
<Function name='module' return='' arguments='string name, ...'>
Creates a module. See the Lua manual for more details.
</Function>
<Function name='MonthOfYear' return='int' arguments=''> <Function name='MonthOfYear' return='int' arguments=''>
Returns the current month of the year. Returns the current month of the year.
</Function> </Function>
@@ -215,6 +314,20 @@
<Function name='MonthToString' return='string' arguments='Month m'> <Function name='MonthToString' return='string' arguments='Month m'>
Returns Month <code>m</code> as a string. Returns Month <code>m</code> as a string.
</Function> </Function>
<Function name='next' return='' arguments='table t, int index'>
"Allows a program to traverse all fields of a table. Its first argument is a
table and its second argument is an index in this table.
<code>next</code> returns the next index of the table and its associated value."
See the Lua manual for more details.
</Function>
<Function name='OptionRowProTiming' theme='default' return='LuaOptionRow' arguments=''>
[03 ThemePrefs.lua] Returns a Lua option row for ProTiming.
</Function>
<Function name='pairs' return='' arguments='table t'>
"Returns three values: the <Link class='GLOBAL' function='next' /> function, the table <code>t</code>, and <code>nil</code>,
so that the construction <code>for k,v in pairs(t) do body end</code>
will iterate over all keyvalue pairs of table <code>t</code>."
</Function>
<Function name='pname' theme='_fallback' return='string' arguments='PlayerNumber pn'> <Function name='pname' theme='_fallback' return='string' arguments='PlayerNumber pn'>
[03 ProductivityHelpers.lua] Converts a PlayerNumber into a short string (e.g. "P1", "P2"). [03 ProductivityHelpers.lua] Converts a PlayerNumber into a short string (e.g. "P1", "P2").
</Function> </Function>
@@ -233,6 +346,16 @@
<Function name='ProductVersion' return='string' arguments=''> <Function name='ProductVersion' return='string' arguments=''>
Returns the product version. Returns the product version.
</Function> </Function>
<Function name='rawequal' return='bool' arguments='various v1, varoius v2'>
"Checks whether <code>v1</code> is equal to <code>v2</code>, without invoking any metamethod."
</Function>
<Function name='rawget' return='various' arguments='table t, various index'>
"Gets the real value of <code>t[index]</code>, without invoking any metamethod."
</Function>
<Function name='rawset' return='table' arguments='table t, int index, various value'>
"Sets the real value of <code>t[index]</code> to <code>value</code>, without invoking any metamethod."
The modified <code>t</code> is then returned.
</Function>
<Function name='ResolveRelativePath' theme='_fallback' return='string' arguments='string path, int level'> <Function name='ResolveRelativePath' theme='_fallback' return='string' arguments='string path, int level'>
[02 ActorDef.lua] [02 ActorDef.lua]
</Function> </Function>
@@ -242,12 +365,27 @@
<Function name='ReadPrefFromFile' theme='_fallback' return='string' arguments='string prefName'> <Function name='ReadPrefFromFile' theme='_fallback' return='string' arguments='string prefName'>
[03 UserPreferences2.lua] (internal) Reads the specified user preference from its config file. [03 UserPreferences2.lua] (internal) Reads the specified user preference from its config file.
</Function> </Function>
<Function name='ReportStyle' return='void' arguments=''>
Sends the current style to the server.
</Function>
<Function name='require' return='' arguments='string modname'>
Loads the specified module. See the Lua manual for more information.
</Function>
<Function name='round' theme='_fallback' return='int' arguments='float val, int decimal'> <Function name='round' theme='_fallback' return='int' arguments='float val, int decimal'>
[02 Utilities.lua] Round a number. [02 Utilities.lua] Round a number.
</Function> </Function>
<Function name='Saturation' theme='_fallback' return='color' arguments='color c, float percent'>
[03 HSV.lua] Modifies the saturation of the specified color
</Function>
<Function name='ScoreKeeperClass' theme='_fallback' return='string' arguments=''> <Function name='ScoreKeeperClass' theme='_fallback' return='string' arguments=''>
[03 Gameplay.lua] Returns the primary ScoreKeeper class to use. [03 Gameplay.lua] Returns the primary ScoreKeeper class to use.
</Function> </Function>
<Function name='ScreenMetric' theme='_fallback' return='string' arguments='string s'>
[00 alias.lua, 02 Other.lua] alias for <Link class='Screen' function='Metric' />.
</Function>
<Function name='ScreenString' theme='_fallback' return='string' arguments='string s'>
[00 alias.lua, 02 Other.lua] alias for <Link class='Screen' function='String' />.
</Function>
<Function name='Second' return='int' arguments=''> <Function name='Second' return='int' arguments=''>
Returns the current second. Returns the current second.
</Function> </Function>
@@ -269,12 +407,20 @@
<Function name='SecondsToMMSSMsMsMs' return='string' arguments='float fSecs'> <Function name='SecondsToMMSSMsMsMs' return='string' arguments='float fSecs'>
Converts <code>fSecs</code> to Minutes:Seconds.Milliseconds format using two digits for each section except Milliseconds (uses 3). Converts <code>fSecs</code> to Minutes:Seconds.Milliseconds format using two digits for each section except Milliseconds (uses 3).
</Function> </Function>
<Function name='select' return='various' arguments='various index, ...'>
"If <code>index</code> is a number, returns all arguments after argument
number <code>index</code>. Otherwise, <code>index</code> must be the string
<code>"#"</code>, and [it] returns the total number of extra arguments it received."
</Function>
<Function name='SelectMusicOrCourse' theme='_fallback' return='string' arguments=''> <Function name='SelectMusicOrCourse' theme='_fallback' return='string' arguments=''>
[02 Branches.lua] Determines the correct music/course selection screen to use and returns it. [02 Branches.lua] Determines the correct music/course selection screen to use and returns it.
</Function> </Function>
<Function name='SelectProfileKeys' theme='_fallback' return='string' arguments=''> <Function name='SelectProfileKeys' theme='_fallback' return='string' arguments=''>
[03 Gameplay.lua] (soon to be deprecated) Returns a list of codes to use on ScreenSelectProfile. [03 Gameplay.lua] (soon to be deprecated) Returns a list of codes to use on ScreenSelectProfile.
</Function> </Function>
<Function name='Serialize' return='string' arguments='table t'>
[02 Serialize.lua] Serialize the table <code>t</code>.
</Function>
<Function name='setenv' theme='_fallback' return='various' arguments='string name, various value'> <Function name='setenv' theme='_fallback' return='various' arguments='string name, various value'>
[03 EnvUtils2.lua] Sets the value of <code>name</code> to <code>value</code> in the Env table. [03 EnvUtils2.lua] Sets the value of <code>name</code> to <code>value</code> in the Env table.
</Function> </Function>
@@ -299,6 +445,12 @@
<Function name='StandardDecorationFromFileOptional' theme='_fallback' return='Actor' arguments='string sMetricsName, string sFileName'> <Function name='StandardDecorationFromFileOptional' theme='_fallback' return='Actor' arguments='string sMetricsName, string sFileName'>
[02 ActorDef.lua] [02 ActorDef.lua]
</Function> </Function>
<Function name='tableshuffle' theme='_fallback' return='table' arguments='table t'>
[02 Utilities.lua] Returns a shuffled version of <code>t</code>.
</Function>
<Function name='tableslice' theme='_fallback' return='table' arguments='table t, int num'>
[02 Utilities.lua] Returns a slice of the specified table of size <code>num</code>.
</Function>
<Function name='TableStringLookup' theme='_fallback' return='table' arguments='table t, string group'> <Function name='TableStringLookup' theme='_fallback' return='table' arguments='table t, string group'>
[02 Utilities.lua] Look up each value in a table, returning a table with the resulting strings. [02 Utilities.lua] Look up each value in a table, returning a table with the resulting strings.
</Function> </Function>
@@ -308,42 +460,64 @@
<Function name='tobool' theme='_fallback' return='bool' arguments='various v'> <Function name='tobool' theme='_fallback' return='bool' arguments='various v'>
[03 ProductivityHelpers.lua] Converts a string or number to a bool. [03 ProductivityHelpers.lua] Converts a string or number to a bool.
</Function> </Function>
<Function name='tonumber' return='float' arguments='various e, int base'>
Tries to convert <code>e</code> to a number. Returns <code>nil</code> if
it can't convert the input to a number. (<code>base</code> is optional.)
</Function>
<Function name='tostring' return='string' arguments='various e'>
Converts <code>e</code> to a string.
</Function>
<Function name='ToEnumShortString' theme='_fallback' return='string' arguments='enum e'> <Function name='ToEnumShortString' theme='_fallback' return='string' arguments='enum e'>
[02 Enum.lua] Returns a string representing an enum starting from '_'. For example, passing <Link class='ENUM' function='PlayerNumber'>PlayerNumber_P1</Link> to this function will return <code>P1</code>. [02 Enum.lua] Returns a string representing an enum starting from '_'. For example, passing <Link class='ENUM' function='PlayerNumber'>PlayerNumber_P1</Link> to this function will return <code>P1</code>.
</Function> </Function>
<Function name='Trace' theme='_fallback' return='void' arguments='string sString'> <Function name='Trace' theme='_fallback' return='void' arguments='string sString'>
[00 init.lua] Alias for <Link class='lua' function='Trace' />. [00 init.lua] Alias for <Link class='lua' function='Trace' />.
</Function> </Function>
<Function name='type' return='string' arguments='various v'>
Returns the type of the object as a string. See the Lua manual for valid return values.
</Function>
<Function name='unpack' return='' arguments='table list, int i, int j'>
"Returns the elements from the given table.
This function is equivalent to <code>return list[i], list[i+1], ···, list[j]</code>"
(<code>i</code> and <code>j</code> are optional; "by default, i is 1 and j is the length of the list.")
</Function>
<Function name='URLEncode' return='string' arguments='string sInput'> <Function name='URLEncode' return='string' arguments='string sInput'>
Returns a string with characters escaped for URLs. (e.g. a space becomes '%20') Returns a string with characters escaped for URLs. (e.g. a space becomes '%20')
</Function> </Function>
<Function name='Var' theme='_fallback' return='ThreadVariable' arguments=''> <Function name='Var' theme='_fallback' return='ThreadVariable' arguments=''>
[01 base.lua] Alias for <Link class="lua" function="GetThreadVariable">lua.GetThreadVariable</Link>. [01 base.lua] Alias for <Link class="lua" function="GetThreadVariable">lua.GetThreadVariable</Link>.
</Function> </Function>
<Function name='VersionDate' return='string' arguments=''>
Returns the current version's build date.
</Function>
<Function name='VersionTime' return='string' arguments=''>
Returns the current version's build time.
</Function>
<Function name='Warn' theme='_fallback' return='void' arguments='string sString'> <Function name='Warn' theme='_fallback' return='void' arguments='string sString'>
[00 init.lua] Alias for <Link class='lua' function='Warn' />. [00 init.lua] Alias for <Link class='lua' function='Warn' />.
</Function> </Function>
<Function name='WideScale' theme='_fallback' return='float' arguments='float ar43, float ar169'> <Function name='WideScale' theme='_fallback' return='float' arguments='float ar43, float ar169'>
[04 WidescreenHelpers.lua] Depending on the screen width, scales between <code>ar43</code> (4:3; 640px) and <code>ar169</code> (16:9; 854px). [04 WidescreenHelpers.lua] Depending on the screen width, scales between <code>ar43</code> (4:3; 640px) and <code>ar169</code> (16:9; 854px).
</Function> </Function>
<Function name='wrap' theme='_fallback' return='float' arguments='float val, float n'>
[02 Utilities.lua]
</Function>
<Function name='WrapInActorFrame' theme='_fallback' return='ActorFrame' arguments='table children'> <Function name='WrapInActorFrame' theme='_fallback' return='ActorFrame' arguments='table children'>
[02 ActorDef.lua] Wraps the children in an ActorFrame. [02 ActorDef.lua] Wraps the children in an ActorFrame.
</Function> </Function>
<Function name='WriteFile' theme='_fallback' return='bool' arguments='string path, string buf'> <Function name='WriteFile' theme='_fallback' return='bool' arguments='string path, string buf'>
[04 FileUtils.lua] Writes <code>buf</code> to the file at <code>path</code>. [04 FileUtils.lua] Writes <code>buf</code> to the file at <code>path</code>.
</Function> </Function>
<Function name='WriteGamePrefToFile' theme='_fallback' return='' arguments='string name'>
[03 GamePreferences.lua]
</Function>
<Function name='WritePrefToFile' theme='_fallback' return='bool' arguments='string prefName, various value'> <Function name='WritePrefToFile' theme='_fallback' return='bool' arguments='string prefName, various value'>
[03 UserPreferences2.lua] (internal) Writes user preference <code>prefName</code> to its config file with <code>value</code> being <code>tostring</code>'d. [03 UserPreferences2.lua] (internal) Writes user preference <code>prefName</code> to its config file with <code>value</code> being <code>tostring</code>'d.
</Function> </Function>
<Function name='Year' return='int' arguments=''> <Function name='Year' return='int' arguments=''>
Returns the current year. Returns the current year.
</Function> </Function>
<!-- new sm-ssc additions here -->
<!-- default theme preferences -->
<Function name='OptionRowProTiming' theme='default' return='LuaOptionRow' arguments=''>
[03 ThemePrefs.lua] Returns a Lua option row for ProTiming.
</Function>
<Function name='UserPrefAutoSetStyle' theme='default' return='LuaOptionRow' arguments=''> <Function name='UserPrefAutoSetStyle' theme='default' return='LuaOptionRow' arguments=''>
[03 ThemePrefs.lua] Returns a Lua option row for toggling AutoSetStyle. [03 ThemePrefs.lua] Returns a Lua option row for toggling AutoSetStyle.
</Function> </Function>
@@ -367,9 +541,16 @@
<!-- Namespaces --> <!-- Namespaces -->
<Namespaces> <Namespaces>
<Namespace name='ActorUtil'> <Namespace name='ActorUtil'>
<Function name='GetFileType' return='FileType' arguments='string sPath'>
Returns the <Link class='ENUM' function='FileType' /> for the file at <code>sPath</code>.
</Function>
<Function name='IsRegisteredClass' return='bool' arguments='string sClassName'> <Function name='IsRegisteredClass' return='bool' arguments='string sClassName'>
Returns <code>true</code> if <code>sClassName</code> is a registered Class. Returns <code>true</code> if <code>sClassName</code> is a registered Class.
</Function> </Function>
<Function name='LoadAllCommandsAndSetXY' return='void' arguments='Actor a'>
Loads all commands and sets X and Y for the specified Actor.
</Function>
<Function name='ResolvePath' return='string' arguments='string sPath, int iLevel' />
</Namespace> </Namespace>
<Namespace name='Enum'> <Namespace name='Enum'>
<Description> <Description>
@@ -414,6 +595,20 @@
</Function> </Function>
</Namespace> </Namespace>
<Namespace name='lua'> <Namespace name='lua'>
<Function name='CheckType' return='bool' arguments='string sType, various v'>
Returns <code>true</code> if the type of <code>v</code> is <code>sType</code>.
</Function>
<Function name='Flush' return='void' arguments='' >
Flushes log files to disk.
</Function>
<Function name='GetThreadVariable' return='LuaThreadVariable' arguments='string s' />
<Function name='ReadFile' return='string' arguments='string sPath'>
Tries to read the file at <code>sPath</code>. If successful, it returns the file's contents.
If unsuccessful, it returns two values: <code>nil</code> and <code>"error"</code>.
</Function>
<Function name='RunWithThreadVariables' return='int' arguments='function func, table t, ...'>
Calls <code>func(...)</code> with two LuaThreadVariables set, and returns the return values of <code>func()</code>.
</Function>
<Function name='Trace' return='void' arguments='string sString'> <Function name='Trace' return='void' arguments='string sString'>
Writes <code>sString</code> to log.txt. Aliased by Writes <code>sString</code> to log.txt. Aliased by
<Link class='GLOBAL' function='Trace' />. <Link class='GLOBAL' function='Trace' />.
@@ -422,9 +617,6 @@
Writes <code>sString</code> to info.txt and log.txt as Writes <code>sString</code> to info.txt and log.txt as
a warning. Aliased by <Link class='GLOBAL' function='Warn' />. a warning. Aliased by <Link class='GLOBAL' function='Warn' />.
</Function> </Function>
<Function name='Flush' return='void' arguments='' >
Flushes log files to disk.
</Function>
</Namespace> </Namespace>
<Namespace name='RageFileUtil'> <Namespace name='RageFileUtil'>
<Function name='CreateRageFile' return='RageFile' arguments=''> <Function name='CreateRageFile' return='RageFile' arguments=''>
@@ -437,6 +629,9 @@
</Function> </Function>
</Namespace> </Namespace>
<Namespace name='SongUtil'> <Namespace name='SongUtil'>
<Function name='GetPlayableSteps' return='Steps' arguments='Song so'>
Gets the playable Steps for the present Song based on the present Game.
</Function>
<Function name='IsStepsPlayable' return='bool' arguments='Song so, Steps st'> <Function name='IsStepsPlayable' return='bool' arguments='Song so, Steps st'>
Returns true if the song's steps (<code>st</code>) are playable. Returns true if the song's steps (<code>st</code>) are playable.
</Function> </Function>
@@ -560,7 +755,21 @@
[02 Actor.lua] [02 Actor.lua]
</Function> </Function>
<Function name='Center' theme='_fallback' return='void' arguments=''> <Function name='Center' theme='_fallback' return='void' arguments=''>
[02 Actor.lua] Centers an Actor. [02 Actor.lua] Centers an Actor on the screen. (equivalent to <code>x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y</code>)
</Function>
<Function name='CenterX' theme='_fallback' return='void' arguments=''>
[03 ProductivityHelpers.lua] Centers an Actor on the X axis. (equivalent to <code>x,SCREEN_CENTER_X</code>)
</Function>
<Function name='CenterY' theme='_fallback' return='void' arguments=''>
[03 ProductivityHelpers.lua] Centers an Actor on the y axis. (equivalent to <code>y,SCREEN_CENTER_Y</code>)
</Function>
<Function name='clearzbuffer' return='void' arguments='bool bClear'>
Determines if the z-buffer should be cleared or not.
</Function>
<Function name='compound' theme='_fallback' return='void' arguments='float length, string tweens'>
[02 Actor.lua] Combines multiple interpolators for complex tweens. <code>tweens</code>
can either be a string like <code>"linear,0.25,accelerate,0.75"</code> or
a table with tween information <code>{ {Type="linear", Percent=0.25, Bezier=nil}, {Type="accelerate", Percent=0.75, Bezier=nil} }</code>
</Function> </Function>
<Function name='cropbottom' return='void' arguments='float percent'> <Function name='cropbottom' return='void' arguments='float percent'>
Crops <code>percent</code> of the Actor from the bottom, where <code>percent</code> is in the range 0..1. Crops <code>percent</code> of the Actor from the bottom, where <code>percent</code> is in the range 0..1.
@@ -853,6 +1062,9 @@
<Function name='stopeffect' return='void' arguments=''> <Function name='stopeffect' return='void' arguments=''>
Stops any effect the Actor has. Stops any effect the Actor has.
</Function> </Function>
<Function name='stoptweening' return='void' arguments=''>
Stops any tweening.
</Function>
<Function name='stretchto' return='void' arguments='float x1, float y1, float x2, float y2'> <Function name='stretchto' return='void' arguments='float x1, float y1, float x2, float y2'>
Stretches the Actor to a rectangle of a specific size. Stretches the Actor to a rectangle of a specific size.
</Function> </Function>
@@ -877,6 +1089,12 @@
<Function name='z' return='void' arguments='float zPos'> <Function name='z' return='void' arguments='float zPos'>
Set the z position of the Actor to <code>zPos</code>. Set the z position of the Actor to <code>zPos</code>.
</Function> </Function>
<Function name='zbias' return='void' arguments='float fBias'>
Sets the z bias to <code>fBias</code>.
</Function>
<Function name='zbuffer' return='void' arguments='bool bUse'>
Enables/disables z-buffer depending on <code>bUse</code>.
</Function>
<Function name='zoom' return='void' arguments='float zoom'> <Function name='zoom' return='void' arguments='float zoom'>
Zooms the Actor to <code>zoom</code> scale. Zooms the Actor to <code>zoom</code> scale.
</Function> </Function>
@@ -898,19 +1116,19 @@
<Function name='zoomz' return='void' arguments='float zoom'> <Function name='zoomz' return='void' arguments='float zoom'>
Zooms the Actor to <code>zoom</code> scale on the Z axis. Zooms the Actor to <code>zoom</code> scale on the Z axis.
</Function> </Function>
<Function name='ztest' return='void' arguments='bool bTest'>
Sets the z testing mode to write on pass if <code>true</code>, turns it off if <code>false</code>
</Function>
<Function name='ztestmode' return='void' arguments='ZTestMode testMode'>
Sets the z testing mode to <code>testMode</code>.
</Function>
<Function name='zwrite' return='void' arguments='bool bWrite'>
Sets z writing to <code>true</code> or <code>false</code> based on <code>bWrite</code>.
</Function>
<!-- addons from scripts that come with sm-ssc (non-compat) --> <!-- addons from scripts that come with sm-ssc (non-compat) -->
<Function name='bezier' theme='_fallback' return='void' arguments=''> <Function name='bezier' theme='_fallback' return='void' arguments=''>
[02 Actor.lua] [02 Actor.lua]
</Function> </Function>
<Function name='Center' theme='_fallback' return='void' arguments=''>
[02 Actor.lua] Centers an Actor on the screen. (equivalent to <code>x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y</code>)
</Function>
<Function name='CenterX' theme='_fallback' return='void' arguments=''>
[03 ProductivityHelpers.lua] Centers an Actor on the X axis. (equivalent to <code>x,SCREEN_CENTER_X</code>)
</Function>
<Function name='CenterY' theme='_fallback' return='void' arguments=''>
[03 ProductivityHelpers.lua] Centers an Actor on the y axis. (equivalent to <code>y,SCREEN_CENTER_Y</code>)
</Function>
<Function name='FullScreen' theme='_fallback' return='void' arguments=''> <Function name='FullScreen' theme='_fallback' return='void' arguments=''>
[02 Actor.lua] Stretches an Actor to cover the screen. (equivalent to <code>stretchto,0,0,SCREEN_WIDTH,SCREEN_HEIGHT</code>) [02 Actor.lua] Stretches an Actor to cover the screen. (equivalent to <code>stretchto,0,0,SCREEN_WIDTH,SCREEN_HEIGHT</code>)
</Function> </Function>
@@ -1163,7 +1381,7 @@
Loads the card image from the specified Character. Loads the card image from the specified Character.
</Function> </Function>
<Function name='LoadFromCachedBanner' return='void' arguments='string sPath'> <Function name='LoadFromCachedBanner' return='void' arguments='string sPath'>
Loads the banner from the cache based on <code>sPath</code> (typically <Link class='Song' function='GetBannerPath' /> or <Link class='Course' function='GetBannerPath' />).
</Function> </Function>
<Function name='LoadFromCourse' return='void' arguments='Course c'> <Function name='LoadFromCourse' return='void' arguments='Course c'>
Loads a Banner from a specified Course. Loads a Banner from a specified Course.
@@ -1322,6 +1540,9 @@
<Function name='GetRandomCharacter' return='Character' arguments=''> <Function name='GetRandomCharacter' return='Character' arguments=''>
Returns a random character. Returns a random character.
</Function> </Function>
<Function name='GetCharacterCount' return='int' arguments=''>
Returns the number of characters available.
</Function>
</Class> </Class>
<Class name='ComboGraph'> <Class name='ComboGraph'>
<Function name='Load' return='void' arguments='string sMetricsGroup'> <Function name='Load' return='void' arguments='string sMetricsGroup'>
@@ -1452,6 +1673,9 @@
<Function name='MD5String' return='string' arguments='string s'> <Function name='MD5String' return='string' arguments='string s'>
Returns the MD5 hash for <code>s</code>. Returns the MD5 hash for <code>s</code>.
</Function> </Function>
<Function name='SHA1File' return='string' arguments='string sPath'>
Returns the SHA-1 hash for the file at <code>sPath</code>.
</Function>
<Function name='SHA1String' return='string' arguments='string s'> <Function name='SHA1String' return='string' arguments='string s'>
Returns the SHA-1 hash for <code>s</code>. Returns the SHA-1 hash for <code>s</code>.
</Function> </Function>
@@ -2004,6 +2228,9 @@
</Function> </Function>
</Class> </Class>
<Class name='LifeMeterBattery'> <Class name='LifeMeterBattery'>
<Function name='ChangeLives' return='void' arguments='int iNumLives'>
Changes the player's life by <code>iNumLives</code>. (Negative values subtract lives.)
</Function>
<Function name='GetLivesLeft' return='int' arguments=''> <Function name='GetLivesLeft' return='int' arguments=''>
Returns the number of lives remaining. Returns the number of lives remaining.
</Function> </Function>
@@ -2347,6 +2574,9 @@
</Function> </Function>
<Function name='GetSongAttacks' return='float' arguments=''> <Function name='GetSongAttacks' return='float' arguments=''>
This function is deprecated. Please use GetStepAttacks() instead.
</Function>
<Function name='GetStepAttacks' return='float' arguments=''>
</Function> </Function>
<Function name='GetSplit' return='float' arguments=''> <Function name='GetSplit' return='float' arguments=''>
@@ -2701,7 +2931,9 @@
</Function> </Function>
</Class> </Class>
<Class name='ProfileManager'> <Class name='ProfileManager'>
<Function name='GetLocalProfile' return='Profile' arguments='string sProfileID' /> <Function name='GetLocalProfile' return='Profile' arguments='string sProfileID'>
Returns the Profile for the specified profile ID.
</Function>
<Function name='GetLocalProfileFromIndex' return='Profile' arguments='int iIndex' /> <Function name='GetLocalProfileFromIndex' return='Profile' arguments='int iIndex' />
<Function name='GetLocalProfileIDFromIndex' return='string' arguments='int iIndex' /> <Function name='GetLocalProfileIDFromIndex' return='string' arguments='int iIndex' />
<Function name='GetLocalProfileIndexFromID' return='int' arguments='string sProfileID' /> <Function name='GetLocalProfileIndexFromID' return='int' arguments='string sProfileID' />
@@ -2723,6 +2955,9 @@
<Function name='IsSongNew' return='bool' arguments='Song s'> <Function name='IsSongNew' return='bool' arguments='Song s'>
Returns <code>true</code> if Song <code>s</code> has never been played before (according to the machine profile). Returns <code>true</code> if Song <code>s</code> has never been played before (according to the machine profile).
</Function> </Function>
<Function name='ProfileWasLoadedFromMemoryCard' return='bool' arguments='PlayerNumber pn'>
Returns <code>true</code> if <code>pn</code>'s Profile was loaded from a memory card.
</Function>
<Function name='LastLoadWasFromLastGood' return='bool' arguments='PlayerNumber pn'> <Function name='LastLoadWasFromLastGood' return='bool' arguments='PlayerNumber pn'>
Returns <code>true</code> if the last load of player <code>pn</code>'s profile was a LastGood copy of the profile. Returns <code>true</code> if the last load of player <code>pn</code>'s profile was a LastGood copy of the profile.
</Function> </Function>
@@ -2858,12 +3093,21 @@
<Function name='GetPrevScreenName' return='string' arguments=''> <Function name='GetPrevScreenName' return='string' arguments=''>
Returns the name of the previous Screen. Returns the name of the previous Screen.
</Function> </Function>
<Function name='GetScreenType' return='ScreenType' arguments=''>
Returns the ScreenType for this Screen.
</Function>
<Function name='lockinput' return='void' arguments='float f'> <Function name='lockinput' return='void' arguments='float f'>
Locks input for <code>f</code> seconds. Locks input for <code>f</code> seconds.
</Function> </Function>
<Function name='Metric' theme='_fallback' return='string' arguments='string sName'>
[02 Other.lua] Gets a metric from the current Screen.
</Function>
<Function name='PostScreenMessage' return='void' arguments='string sScreenMsg'> <Function name='PostScreenMessage' return='void' arguments='string sScreenMsg'>
Posts a message with the text <code>sScreenMsg</code> to the Screen. Posts a message with the text <code>sScreenMsg</code> to the Screen.
</Function> </Function>
<Function name='String' theme='_fallback' return='string' arguments='string sName'>
[02 Other.lua] Gets a string from the current Screen in the current language.
</Function>
</Class> </Class>
<Class name='ScreenEdit'> <Class name='ScreenEdit'>
<Function name='GetEditState' return='EditState' arguments=''> <Function name='GetEditState' return='EditState' arguments=''>
@@ -3078,6 +3322,9 @@
<Function name='GetFirstBeat' return='float' arguments=''> <Function name='GetFirstBeat' return='float' arguments=''>
Returns the first beat of the song. Returns the first beat of the song.
</Function> </Function>
<Function name='GetFirstSecond' return='float' arguments=''>
Returns the first second of the song.
</Function>
<Function name='GetGenre' return='string' arguments=''> <Function name='GetGenre' return='string' arguments=''>
Returns the genre of the song. Returns the genre of the song.
</Function> </Function>
@@ -3087,6 +3334,9 @@
<Function name='GetLastBeat' return='float' arguments=''> <Function name='GetLastBeat' return='float' arguments=''>
Returns the last beat of the song. Returns the last beat of the song.
</Function> </Function>
<Function name='GetLastSecond' return='float' arguments=''>
Returns the last second of the song.
</Function>
<Function name='GetLyricsPath' return='string' arguments=''> <Function name='GetLyricsPath' return='string' arguments=''>
Gets the path to the lyrics. Gets the path to the lyrics.
</Function> </Function>
@@ -3328,6 +3578,9 @@
<Function name='LoadBanner' return='void' arguments='string sPath'> <Function name='LoadBanner' return='void' arguments='string sPath'>
Load the song banner texture at <code>sPath</code>. Load the song banner texture at <code>sPath</code>.
</Function> </Function>
<Function name='LoadFromCurrentSongBackground' theme='_fallback' return='void' arguments=''>
[02 Sprite.lua] Loads the background from the current Song or the first Trail entry.
</Function>
<Function name='LoadFromSongBackground' theme='_fallback' return='void' arguments='Song song'> <Function name='LoadFromSongBackground' theme='_fallback' return='void' arguments='Song song'>
[02 Sprite.lua] Load the texture for <code>song</code>'s background. [02 Sprite.lua] Load the texture for <code>song</code>'s background.
</Function> </Function>
@@ -3340,6 +3593,9 @@
<Function name='SetEffectMode' return='void' arguments='EffectMode mode'> <Function name='SetEffectMode' return='void' arguments='EffectMode mode'>
Set the <Link class='ENUM' function='EffectMode' /> to <code>mode</code>. Set the <Link class='ENUM' function='EffectMode' /> to <code>mode</code>.
</Function> </Function>
<Function name='SetSecondsIntoAnimation' return='void' arguments='float fSeconds'>
Sets the number of seconds into the animation to <code>fSeconds</code>.
</Function>
<Function name='SetTexture' return='void' arguments='RageTexture texture'> <Function name='SetTexture' return='void' arguments='RageTexture texture'>
Set the texture to <code>texture</code>. Set the texture to <code>texture</code>.
</Function> </Function>
@@ -3445,6 +3701,9 @@
<Function name='GetAuthorCredit' return='string' arguments=''> <Function name='GetAuthorCredit' return='string' arguments=''>
Returns the author that made that particular Steps pattern. Returns the author that made that particular Steps pattern.
</Function> </Function>
<Function name='GetChartName' return='string' arguments=''>
Returns the Steps chart name.
</Function>
<Function name='GetChartStyle' return='string' arguments=''> <Function name='GetChartStyle' return='string' arguments=''>
Returns the Chart Style for this Steps. Returns the Chart Style for this Steps.
</Function> </Function>
@@ -3463,8 +3722,11 @@
<Function name='GetMeter' return='int' arguments=''> <Function name='GetMeter' return='int' arguments=''>
Returns the numerical difficulty of the Steps. Returns the numerical difficulty of the Steps.
</Function> </Function>
<Function name='HasAttacks' return='bool' arguments=''>
Returns <code>true</code> if the Steps has any attacks.
</Function>
<Function name='HasSignificantTimingChanges' return='bool' arguments=''> <Function name='HasSignificantTimingChanges' return='bool' arguments=''>
returns <code>true</code> if the song has significant timing changes. Returns <code>true</code> if the Steps pattern has significant timing changes.
</Function> </Function>
<Function name='GetRadarValues' return='RadarValues' arguments='PlayerNumber pn'> <Function name='GetRadarValues' return='RadarValues' arguments='PlayerNumber pn'>
Returns the complete list of RadarValues for player <code>pn</code>. Use <Link class='RadarValues' function='GetValue' /> to grab a specific value. Returns the complete list of RadarValues for player <code>pn</code>. Use <Link class='RadarValues' function='GetValue' /> to grab a specific value.
@@ -3608,6 +3870,27 @@
<Function name='GetLabels' return='{string}' arguments=''> <Function name='GetLabels' return='{string}' arguments=''>
Returns a table of the Labels and the times they happen as strings with the format "<code>beat=label name</code>." Returns a table of the Labels and the times they happen as strings with the format "<code>beat=label name</code>."
</Function> </Function>
<Function name='GetWarps' return='{string}' arguments=''>
Returns a table of the Warps and the times they happen as strings with the format "<code>beat=number of beats warped over</code>."
</Function>
<Function name='GetCombos' return='{string}' arguments=''>
Returns a table of the Combos and the times they happen as strings with the format "<code>beat=combo value</code>."
</Function>
<Function name='GetTimeSignatures' return='{string}' arguments=''>
Returns a table of the Time Signatures and the times they happen as strings with the format "<code>beat=beats per measure (numerator)=denominator</code>."
</Function>
<Function name='GetTickcounts' return='{string}' arguments=''>
Returns a table of the Tickcountss and the times they happen as strings with the format "<code>beat=number of ticks per beat</code>."
</Function>
<Function name='GetFakes' return='{string}' arguments=''>
Returns a table of the Fakes and the times they happen as strings with the format "<code>beat=number of beats to not judge</code>."
</Function>
<Function name='GetScrolls' return='{string}' arguments=''>
Returns a table of the Scrolls and the times they happen as strings with the format "<code>beat=scroll rate ratio</code>."
</Function>
<Function name='GetSpeeds' return='{string}' arguments=''>
Returns a table of the Speeds and the times they happen as strings with the format "<code>beat=scroll rate ratio=length of time to fully activate=unit of activation (0 for beats, 1 for seconds)</code>."
</Function>
<Function name='HasBPMChanges' return='bool' arguments=''> <Function name='HasBPMChanges' return='bool' arguments=''>
Returns <code>true</code> if the TimingData contains BPM changes. Returns <code>true</code> if the TimingData contains BPM changes.
</Function> </Function>
@@ -3690,6 +3973,9 @@
<Function name='GetRequirePassHardSteps' return='bool' arguments=''> <Function name='GetRequirePassHardSteps' return='bool' arguments=''>
Returns <code>true</code> if the UnlockEntry requires you to pass Hard steps. Returns <code>true</code> if the UnlockEntry requires you to pass Hard steps.
</Function> </Function>
<Function name='GetRequirePassChallengeSteps' return='bool' arguments=''>
Returns <code>true</code> if the UnlockEntry requires you to pass Challenge steps.
</Function>
<Function name='GetSong' return='Song' arguments=''> <Function name='GetSong' return='Song' arguments=''>
Returns the Song related to the UnlockEntry. Returns the Song related to the UnlockEntry.
</Function> </Function>
@@ -3720,6 +4006,9 @@
Sets the UnlockEntry to unlock a specified song's steps.<br /> Sets the UnlockEntry to unlock a specified song's steps.<br />
Example: <code>steps,"In The Groove/Pandemonium","expert"</code> Example: <code>steps,"In The Groove/Pandemonium","expert"</code>
</Function> </Function>
<Function name='steps_type' return='void' arguments='string sSong, string sSteps, string sStepsType'>
Sets the UnlockEntry to unlock a specified song's stepstype.
</Function>
</Class> </Class>
<Class name='UnlockManager'> <Class name='UnlockManager'>
<Function name='AnyUnlocksToCelebrate' return='bool' arguments=''> <Function name='AnyUnlocksToCelebrate' return='bool' arguments=''>
@@ -3755,7 +4044,9 @@
<Function name='GetUnlockEntryIndexToCelebrate' return='int' arguments=''> <Function name='GetUnlockEntryIndexToCelebrate' return='int' arguments=''>
Returns the UnlockEntry index to celebrate. Returns the UnlockEntry index to celebrate.
</Function> </Function>
<Function name='PreferUnlockEntryID' return='void' arguments='string sUnlockEntryID' /> <Function name='PreferUnlockEntryID' return='void' arguments='string sUnlockEntryID'>
Sets the preferred Song/Course to the specified <code>sUnlockEntryID</code>
</Function>
<Function name='UnlockEntryID' return='void' arguments='string sUnlockEntryID'> <Function name='UnlockEntryID' return='void' arguments='string sUnlockEntryID'>
Unlocks an entry by ID. Unlocks an entry by ID.
</Function> </Function>
+11 -6
View File
@@ -21,19 +21,19 @@
#DELAYS:; #DELAYS:;
#LABELS:; #LABELS:;
#TIMESIGNATURES:; #TIMESIGNATURES:;
#LASTBEATHINT:;
#SAMPLESTART:; #SAMPLESTART:;
#SAMPLELENGTH:; #SAMPLELENGTH:;
#DISPLAYBPM:[xxx][xxx:xxx]|[*]; #DISPLAYBPM:[xxx][xxx:xxx]|[*];
#SELECTABLE:; #SELECTABLE:;
#LASTSECONDHINT:;
#BGCHANGES:; #BGCHANGES:;
#FGCHANGES:; #FGCHANGES:;
#KEYSOUNDS:; #KEYSOUNDS:;
#ATTACKS:; #ATTACKS:;
// stored in cache // stored in cache
#FIRSTBEAT:; // calculated #FIRSTSECOND:; // calculated
#LASTBEAT:; // calculated #LASTSECOND:; // calculated
#SONGFILENAME:; #SONGFILENAME:;
#MUSICBYTES:; // ignored by loader #MUSICBYTES:; // ignored by loader
#HASMUSIC:; #HASMUSIC:;
@@ -42,6 +42,7 @@
// begin // begin
#NOTEDATA# // marks a new note data section #NOTEDATA# // marks a new note data section
// information from #NOTES moved here // information from #NOTES moved here
#CHARTNAME:;
#STEPSTYPE:; #STEPSTYPE:;
#DESCRIPTION:; #DESCRIPTION:;
#CHARTSTYLE:; #CHARTSTYLE:;
@@ -51,6 +52,7 @@
#CREDIT:; #CREDIT:;
// steps-based timingdata // steps-based timingdata
#OFFSET:;
#BPMS:; #BPMS:;
#STOPS:; #STOPS:;
#DELAYS:; #DELAYS:;
@@ -61,8 +63,11 @@
#SCROLLS:; #SCROLLS:;
#FAKES:; #FAKES:;
#LABELS:; #LABELS:;
#ATTACKS:; // Not yet in use. #ATTACKS:;
#OFFSET:; #DISPLAYBPM:;
// actual step data // only in cache files
#STEPFILENAME:;
// actual step data (not in cache files)
#NOTES:; #NOTES:;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

+2
View File
@@ -1,5 +1,7 @@
[NoteDisplay] [NoteDisplay]
DrawHoldHeadForTapsOnSameRow=1 DrawHoldHeadForTapsOnSameRow=1
DrawRollHeadForTapsOnSameRow=1
TapHoldRollOnRowMeansHold=1
AnimationIsBeatBased=1 AnimationIsBeatBased=1
TapNoteAnimationLength=1 TapNoteAnimationLength=1
TapMineAnimationLength=1 TapMineAnimationLength=1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

+2 -2
View File
@@ -20,14 +20,14 @@ ret.Redir = function(sButton, sElement)
if sElement == "Hold Head Active" or if sElement == "Hold Head Active" or
sElement == "Roll Head Active" sElement == "Roll Head Active"
then then
sElement = "Hold Head Active"; sElement = "Tap Note";
end end
-- Test -- Test
if sElement == "Hold Head Inactive" or if sElement == "Hold Head Inactive" or
sElement == "Roll Head Inactive" sElement == "Roll Head Inactive"
then then
sElement = "Hold Head Inactive"; sElement = "Tap Note";
end end
if sElement == "Tap Fake" if sElement == "Tap Fake"
+10 -3
View File
@@ -3,7 +3,8 @@ FallbackNoteSkin=default
[NoteDisplay] [NoteDisplay]
TapNoteAnimationIsVivid=0 TapNoteAnimationIsVivid=0
DrawHoldHeadForTapsOnSameRow=1 HoldHeadAnimationIsVivid=0
DrawHoldHeadForTapsOnSameRow=0
TapNoteAnimationLength=4 TapNoteAnimationLength=4
TapAdditionAnimationLength=4 TapAdditionAnimationLength=4
TapMineAnimationLength=1 TapMineAnimationLength=1
@@ -34,8 +35,14 @@ TapNoteNoteColorTextureCoordSpacingY=0.125
TapFakeNoteColorTextureCoordSpacingX=0 TapFakeNoteColorTextureCoordSpacingX=0
TapFakeNoteColorTextureCoordSpacingY=0.125 TapFakeNoteColorTextureCoordSpacingY=0.125
HoldHeadAdditionTextureCoordOffsetX=0
HoldHeadAdditionTextureCoordOffsetY=0
HoldHeadNoteColorTextureCoordSpacingX=0 HoldHeadNoteColorTextureCoordSpacingX=0
HoldHeadNoteColorTextureCoordSpacingY=0 HoldHeadNoteColorTextureCoordSpacingY=0
HoldTopCapAdditionTextureCoordOffsetX=0
HoldTopCapAdditionTextureCoordOffsetY=0
HoldTopCapNoteColorTextureCoordSpacingX=0
HoldTopCapNoteColorTextureCoordSpacingY=0
[GhostArrowDim] [GhostArrowDim]
NoneCommand= NoneCommand=
@@ -62,8 +69,8 @@ LetGoCommand=blend,'BlendMode_Add';
HeldCommand=blend,'BlendMode_Add';diffuse,1.0,1.0,0.3,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 HeldCommand=blend,'BlendMode_Add';diffuse,1.0,1.0,0.3,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
[HoldGhostArrow] [HoldGhostArrow]
HoldingOnCommand=visible,true HoldingOnCommand=blend,'BlendMode_Add';pulse;effectmagnitude,1,1.125,1;effectperiod,0.05;effectclock,'beatnooffset';visible,true
HoldingOffCommand=visible,false HoldingOffCommand=blend,'BlendMode_Add';stopeffect;visible,false
[ReceptorArrow] [ReceptorArrow]
W3Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 W3Command=stoptweening;zoom,0.85;linear,0.12;zoom,1
+3 -3
View File
@@ -1,9 +1,9 @@
[Global] [Global]
FallbackNoteSkin=default FallbackNoteSkin=midi-note
[NoteDisplay] [NoteDisplay]
TapNoteAnimationIsVivid=0 TapNoteAnimationIsVivid=0
DrawHoldHeadForTapsOnSameRow=1 DrawHoldHeadForTapsOnSameRow=0
TapNoteAnimationLength=4 TapNoteAnimationLength=4
TapAdditionAnimationLength=4 TapAdditionAnimationLength=4
TapMineAnimationLength=1 TapMineAnimationLength=1
@@ -35,7 +35,7 @@ TapFakeNoteColorTextureCoordSpacingX=0
TapFakeNoteColorTextureCoordSpacingY=0.125 TapFakeNoteColorTextureCoordSpacingY=0.125
HoldHeadNoteColorTextureCoordSpacingX=0 HoldHeadNoteColorTextureCoordSpacingX=0
HoldHeadNoteColorTextureCoordSpacingY=0.125 HoldHeadNoteColorTextureCoordSpacingY=0
[GhostArrowDim] [GhostArrowDim]
NoneCommand= NoneCommand=
@@ -1 +0,0 @@
Down Tap Explosion Bright
+5
View File
@@ -4,7 +4,12 @@ DrawHoldHeadForTapsOnSameRow=0
StartDrawingHoldBodyOffsetFromHead=0 StartDrawingHoldBodyOffsetFromHead=0
StopDrawingHoldBodyOffsetFromTail=-32 StopDrawingHoldBodyOffsetFromTail=-32
TapNoteAnimationIsVivid=0
# control the vertical # control the vertical
TapNoteNoteColorTextureCoordSpacingX=0
TapNoteNoteColorTextureCoordSpacingY=0
TapNoteAdditionTextureCoordOffsetX=0 TapNoteAdditionTextureCoordOffsetX=0
TapNoteAdditionTextureCoordOffsetY=0.5 TapNoteAdditionTextureCoordOffsetY=0.5
+5
View File
@@ -4,7 +4,12 @@ DrawHoldHeadForTapsOnSameRow=0
StartDrawingHoldBodyOffsetFromHead=0 StartDrawingHoldBodyOffsetFromHead=0
StopDrawingHoldBodyOffsetFromTail=-32 StopDrawingHoldBodyOffsetFromTail=-32
TapNoteAnimationIsVivid=0
# control the vertical # control the vertical
TapNoteNoteColorTextureCoordSpacingX=0
TapNoteNoteColorTextureCoordSpacingY=0
TapNoteAdditionTextureCoordOffsetX=0 TapNoteAdditionTextureCoordOffsetX=0
TapNoteAdditionTextureCoordOffsetY=0.5 TapNoteAdditionTextureCoordOffsetY=0.5
+2 -3
View File
@@ -15,10 +15,9 @@ return Def.ActorFrame {
--tap --tap
NOTESKIN:LoadActor(Var "Button", "Ready Receptor")..{ NOTESKIN:LoadActor(Var "Button", "Ready Receptor")..{
Name="Tap"; Name="Tap";
Frames = { { Frame = 2 } }; --Frames = { { Frame = 2 ; Delay = 1 } };
TapCommand=cmd(finishtweening;diffusealpha,1;zoom,1;linear,0.2;diffusealpha,0;zoom,1.2); TapCommand=cmd(finishtweening;diffusealpha,1;zoom,1;linear,0.2;diffusealpha,0;zoom,1.2);
InitCommand=cmd(pause;setstate,2;playcommand,"Tap");
InitCommand=cmd(playcommand,"Tap");
HeldCommand=cmd(playcommand,"Tap"); HeldCommand=cmd(playcommand,"Tap");
ColumnJudgmentMessageCommand=cmd(playcommand,"Tap"); ColumnJudgmentMessageCommand=cmd(playcommand,"Tap");
--TapNoneCommand=cmd(playcommand,"Tap"); --TapNoneCommand=cmd(playcommand,"Tap");
+6 -2
View File
@@ -1,12 +1,16 @@
local function Beat(self) local function Beat(self)
-- too many locals
local this = self:GetChildren() local this = self:GetChildren()
local player = GAMESTATE:GetMasterPlayerNumber()
local playerstate = GAMESTATE:GetPlayerState( player )
local songposition = playerstate:GetSongPosition() -- GAMESTATE:GetSongPosition()
local beat = GAMESTATE:GetSongBeat() local beat = songposition:GetSongBeat() -- GAMESTATE:GetSongBeat()
local part = beat%1 local part = beat%1
part = clamp(part,0,0.5) part = clamp(part,0,0.5)
local eff = scale(part,0,0.5,1,0) local eff = scale(part,0,0.5,1,0)
if (GAMESTATE:GetSongPosition():GetDelay() or false) and part == 0 then eff = 0 end if (songposition:GetDelay() or false) and part == 0 then eff = 0 end
if beat < 0 then if beat < 0 then
eff = 0 eff = 0
end end
Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 621 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

+8
View File
@@ -0,0 +1,8 @@
[How to Install Songs]
Songs are laid out based on the group that they are in.
Songs\ : root folder
StepMania 5\ : group folder
MechaTribe Assault\ : song/simfile folder
*.png, *.mp3/*.ogg, *.sm/*.ssc/etc files
@@ -25,7 +25,8 @@ local ssc = {
} }
local sm_ssc = { local sm_ssc = {
"Jason Felds (wolfman2000)", "Jason Felds (wolfman2000)", -- Timing Segments, Split Timing, optimization
"Thai Pangsakulyanont (theDtTvB)", -- BMS, Split Timing, optimization
"Alberto Ramos (Daisuke Master)", "Alberto Ramos (Daisuke Master)",
"Jack Walstrom (FSX)", "Jack Walstrom (FSX)",
} }
@@ -39,9 +40,10 @@ local stepmania = {
local contrib = { local contrib = {
"Aldo Fregoso (Aldo_MX)", -- delays "Aldo Fregoso (Aldo_MX)", -- delays
"Chris Eldridge (kurisu)", -- dance-threepanel
"cerbo", "cerbo",
"cesarmades", -- pump/cmd* noteskins "cesarmades", -- pump/cmd* noteskins
"Chris Eldridge (kurisu)", -- dance-threepanel
"Christophe Goulet-LeBlanc (Kommisar)",
"corec", -- various fixes "corec", -- various fixes
"galopin", -- piu PlayStation2 usb mat support "galopin", -- piu PlayStation2 usb mat support
"gholms", -- automake 1.11 support "gholms", -- automake 1.11 support
@@ -49,8 +51,8 @@ local contrib = {
"Kaox", -- pump/default noteskin "Kaox", -- pump/default noteskin
"NitroX72", -- pump/frame noteskin "NitroX72", -- pump/frame noteskin
"sy567", -- beginner helper fix "sy567", -- beginner helper fix
"Thai Pangsakulyanont (theDtTvB)",
"v1toko", -- x-mode from StepNXA "v1toko", -- x-mode from StepNXA
"waiei", -- custom scoring fixes + Hybrid scoring
} }
local thanks = { local thanks = {
@@ -70,10 +72,11 @@ local thanks = {
local shoutout = { local shoutout = {
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell. "The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
"Mojang", -- minecraft forever -freem "Mojang AB", -- minecraft forever -freem
"NAKET Coder", "NAKET Coder",
"Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits "Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits
--Image(), -- we should have some logos probably to look super pro --Image(), -- we should have some logos probably to look super pro
"#KBO",
"You showed us... your ultimate dance", "You showed us... your ultimate dance",
-- "Can't stop crying... buckets of tears!" -- "Can't stop crying... buckets of tears!"
} }
@@ -0,0 +1 @@
return Def.ActorFrame { Name="YOU_WISH_YOU_WERE_PLAYING_BEATMANIA_RIGHT_NOW" };
@@ -1 +0,0 @@
_blank
@@ -0,0 +1,289 @@
function MakeScoreList(StagesAgo)
local c;
local Stats;
local PlayerStats = { }
local children = {
LoadActor( "difficulty cap 9x1" ) .. {
Name="DifficultyP1";
InitCommand = cmd(x,-66;pause;halign,1);
OnCommand=cmd(zoomx,0;sleep,0.3;bounceend,0.3;zoomx,1);
OffCommand=cmd(bouncebegin,0.1;zoomx,0);
};
LoadActor( "difficulty cap 9x1" ) .. {
Name="DifficultyP2";
InitCommand = cmd(x,66;pause;halign,1;zoomx,0);
OnCommand=cmd(zoomx,0;sleep,0.3;bounceend,0.3;zoomx,-1);
OffCommand=cmd(bouncebegin,0.1;zoomx,0);
};
LoadActor( "banner mask" ) .. {
Name="BannerMask";
InitCommand=cmd(clearzbuffer,true;zwrite,true;blend,"BlendMode_NoEffect");
OnCommand=cmd(zoom,0;bounceend,0.3;zoom,1);
OffCommand=cmd(bouncebegin,0.3;zoom,0);
};
Def.Sprite {
Name = "Banner";
InitCommand = cmd(setsize,300,100;zoom,0.5;ztest,true);
OnCommand=cmd(zoom,0;bounceend,0.3;zoom,0.5);
OffCommand=cmd(bouncebegin,0.3;zoom,0);
};
LoadActor( "banner frame" ) .. {
Name="BannerFrame";
OnCommand=cmd(zoom,0;bounceend,0.3;zoom,1);
OffCommand=cmd(bouncebegin,0.3;zoom,0);
};
LoadActor( "side score frame" ) .. {
Name="ScoreFrameP1";
InitCommand=cmd();
OnCommand=cmd(x,-266;addx,-250;diffusealpha,1;decelerate,0.3;addx,250);
OffCommand=cmd(linear,0.3;addx,-150;diffusealpha,0);
};
LoadActor( "side score frame" ) .. {
Name="ScoreFrameP2";
InitCommand=cmd(zoomx,-1);
OnCommand=cmd(x,266;addx,250;diffusealpha,1;decelerate,0.3;addx,-250);
OffCommand=cmd(linear,0.3;addx,150;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="PlayerScoreP1";
InitCommand=cmd(x,-135;diffuse,color("#fdf991");shadowlength,0;zoom,0.6);
OnCommand=cmd(x,-135;addx,50;zoom,0;diffusealpha,0;sleep,0.1;accelerate,0.3;addx,-50;diffusealpha,1;zoom,0.6);
OffCommand=cmd(linear,0.3;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="PlayerScoreP2";
InitCommand=cmd(x,135;diffuse,color("#abfe8e");shadowlength,0;zoom,0.6);
OnCommand=cmd(x,135;addx,-50;zoom,0;diffusealpha,0;sleep,0.1;accelerate,0.3;addx,50;diffusealpha,1;zoom,0.6);
OffCommand=cmd(linear,0.3;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="MachineBestP1";
InitCommand=cmd(diffuse,color("#ffffff");shadowlength,0;zoom,0.5);
OnCommand=cmd(x,-250;addx,-250;diffusealpha,1;decelerate,0.3;addx,250);
OffCommand=cmd(linear,0.3;addx,-150;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="MachineBestP2";
InitCommand=cmd(diffuse,color("#ffffff");shadowlength,0;zoom,0.5);
OnCommand=cmd(x,250;addx,250;diffusealpha,1;decelerate,0.3;addx,-250);
OffCommand=cmd(linear,0.3;addx,150;diffusealpha,0);
};
};
return Def.ActorFrame {
children = children;
InitCommand = function(self)
c = self:GetChildren();
c.PlayerScore = {};
c.PlayerScore[PLAYER_1] = c.PlayerScoreP1;
c.PlayerScore[PLAYER_2] = c.PlayerScoreP2;
c.MachineBest = {};
c.MachineBest[PLAYER_1] = c.MachineBestP1;
c.MachineBest[PLAYER_2] = c.MachineBestP2;
c.ScoreFrame = {};
c.ScoreFrame[PLAYER_1] = c.ScoreFrameP1;
c.ScoreFrame[PLAYER_2] = c.ScoreFrameP2;
c.Difficulty = {};
c.Difficulty[PLAYER_1] = c.DifficultyP1;
c.Difficulty[PLAYER_2] = c.DifficultyP2;
end;
BeginCommand = function(self)
Stats = STATSMAN:GetPlayedStageStats(StagesAgo);
if not Stats then
self:visible(false);
return;
end;
self:visible(true);
PlayerStats[PLAYER_1] = Stats:GetPlayerStageStats(PLAYER_1);
PlayerStats[PLAYER_2] = Stats:GetPlayerStageStats(PLAYER_2);
local Current;
local CurrentPart = {}
if GAMESTATE:IsCourseMode() then
Current = GAMESTATE:GetCurrentCourse();
CurrentPart[PLAYER_1] = GAMESTATE:GetCurrentTrail( PLAYER_1 );
CurrentPart[PLAYER_2] = GAMESTATE:GetCurrentTrail( PLAYER_2 );
else
Current = Stats:GetPlayedSongs()[1];
CurrentPart[PLAYER_1] = PlayerStats[PLAYER_1]:GetPlayedSteps()[1];
CurrentPart[PLAYER_2] = PlayerStats[PLAYER_2]:GetPlayedSteps()[1];
end
assert(Current);
local sBannerPath = Current:GetBannerPath() or THEME:GetPathG("Common","fallback banner");
c.Banner:LoadBanner( sBannerPath );
for pn in ivalues(PlayerNumber) do
local visible = GAMESTATE:IsHumanPlayer(pn) and CurrentPart[pn] ~= nil; -- was present for this song
c.MachineBest[pn]:visible( visible );
c.PlayerScore[pn]:visible( visible );
c.ScoreFrame[pn]:visible( visible );
c.Difficulty[pn]:visible( visible );
local MachineProfile = PROFILEMAN:GetMachineProfile();
if visible then
assert(CurrentPart[pn]);
-- c.Difficulty[pn]:SetDifficultyAndStepsTypeFrame( CurrentPart[pn] );
local hsl = MachineProfile:GetHighScoreList( Current, CurrentPart[pn] );
assert( hsl );
-- Find the first high score that isn't one that we're entering now.
local HighScores = hsl:GetHighScores();
local hs;
for h in ivalues(HighScores) do
if not hs and not h:IsFillInMarker() then
hs = h;
end
end
if hs then
local fMachineScore = hs:GetPercentDP() or 0;
local sName = hs:GetName() or "";
local sText = sName .. " " .. FormatPercentScore( fMachineScore );
c.MachineBest[pn]:settext( sText );
else
c.ScoreFrame[pn]:visible( false );
end
local fPlayerScore = PlayerStats[pn]:GetPercentDancePoints();
local sText = FormatPercentScore( fPlayerScore );
c.PlayerScore[pn]:settext( sText );
local colors = {
[PLAYER_1] = color("#fdf991"),
[PLAYER_2] = color("#abfe8e"),
};
if Stats:PlayerHasHighScore(pn) then
colors = {
[PLAYER_1] = color("#feef01"),
[PLAYER_2] = color("#0ffc03"),
};
end
c.PlayerScore[pn]:diffuse(colors[pn]);
end;
end;
end;
};
end
local children = {
LoadActor( "center frame" ) .. {
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+9);
OnCommand=cmd(fadetop,0.3; croptop,1; linear,0.5; croptop,-0.3);
OffCommand=cmd(linear,0.5; croptop,1);
};
LoadActor( "line" ) .. {
InitCommand=cmd(x,SCREEN_CENTER_X;SetWidth,336;y,SCREEN_CENTER_Y+65;fadeleft,0.3; faderight,0.3);
OnCommand=cmd(cropleft,.5;cropright,.5;
sleep,0.2;
linear,0.3;
cropleft,-.2;cropright,-.2);
OffCommand=cmd(linear,0.3;cropleft,.5;cropright,.5);
};
};
for i = 1,5 do
children[#children+1] =
MakeScoreList(i) .. {
Name="Row" .. tostring(i);
InitCommand=cmd(x,SCREEN_CENTER_X);
};
end
--[[ children[#children+1] =
LoadActor( THEME:GetPathB("","_shared underlay") ) .. { OnCommand=cmd(); }; --]]
children[#children+1] = LoadActor( "keyboard" ) .. {
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+80);
BeginCommand = cmd(visible,SCREENMAN:GetTopScreen():GetAnyEntering());
};
for pn in ivalues(PlayerNumber) do
local FrameX = pn == PLAYER_1 and (SCREEN_CENTER_X-265) or (SCREEN_CENTER_X+267);
local P1 = pn == PLAYER_1 and 1 or -1;
children[#children+1] = LoadActor( "name frame" ) .. {
InitCommand=cmd(y,SCREEN_CENTER_Y+119;
zoomx,pn == PLAYER_1 and 1.0 or -1.0);
BeginCommand=cmd(visible,SCREENMAN:GetTopScreen():GetEnteringName(pn));
OnCommand=cmd(finishtweening;x,FrameX;addx,-200*P1;zoom,0;bounceend,0.3;zoom,1;addx,200*P1);
OffCommand=cmd(stoptweening;bouncebegin,0.3;zoom,0;addx,-200*P1);
};
children[#children+1] = LoadFont( "Common Normal" ) .. {
-- children[#children+1] = LoadFont( "_regra bold 30px" ) .. {
Name="PlayerText";
InitCommand=cmd(x,pn == PLAYER_1 and (SCREEN_CENTER_X-WideScale(310,330)) or (SCREEN_CENTER_X+WideScale(198,204));
halign,0;
y,SCREEN_CENTER_Y+115;shadowlength,0;zoom,1);
BeginCommand=cmd(visible,SCREENMAN:GetTopScreen():GetEnteringName(pn));
OnCommand=cmd(finishtweening;diffusealpha,0;sleep,0.1;linear,0.3;diffusealpha,1);
OffCommand=cmd(stoptweening;bouncebegin,0.3;zoom,0;addx,-200*P1);
EntryChangedMessageCommand=function(self,params)
if params.PlayerNumber ~= pn then
return;
end;
self:settext( params.Text );
end;
};
end;
return Def.ActorFrame {
children = children;
BeginCommand = function(self)
local StagesPlayed = STATSMAN:GetStagesPlayed();
local c = self:GetChildren();
local fYCenter = SCREEN_CENTER_Y-60;
local fYMinSpacing = 44;
local fYMaxSpacing = 70;
local fYSpacing = scale(StagesPlayed, 4, 5, fYMaxSpacing, fYMinSpacing);
fYSpacing = clamp(fYSpacing, fYMinSpacing, fYMaxSpacing);
fYSpacing = fYSpacing + math.mod(fYSpacing, 2); -- even
fYSpacing = -fYSpacing;
local fYStart = fYSpacing*(StagesPlayed-1)/2;
local fYEnd = -fYSpacing*(StagesPlayed-1)/2;
for i = 1,StagesPlayed do
local Name = "Row" .. tostring(i);
local row = c[Name];
assert(row);
local fY = fYCenter + fYEnd + (i-1)*fYSpacing;
row:y( fY );
end
local Timer = SCREENMAN:GetTopScreen():GetChild("Timer");
if not SCREENMAN:GetTopScreen():GetAnyEntering() then
Timer:setseconds(5);
Timer:silent(true);
else
Timer:setseconds(25);
Timer:silent(false);
end
end;
OnCommand = function(self)
local StagesPlayed = STATSMAN:GetStagesPlayed();
local c = self:GetChildren();
for i = 1,StagesPlayed do
local Name = "Row" .. tostring(i);
local row = c[Name];
assert(row);
row:hibernate(0.3+(i/StagesPlayed)*0.3);
end
end;
};
@@ -0,0 +1,285 @@
local function distance( x1, y1, x2, y2 )
return math.pow( math.pow(x1-x2, 2) + math.pow(y1-y2, 2), 0.5 );
end
local children = {
};
local Letters = {
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "?", "!",
"BACK", "ENTER"
};
local LetterIndexes = { };
for i, l in ipairs(Letters) do
LetterIndexes[l] = i;
end
local MapNameToLetter = {};
local MapLetterToName = {};
local letter = LoadFont( "Common Normal" ) .. {
-- local letter = LoadFont( "_regra bold 30px" ) .. {
InitCommand=cmd(zoom,0.8;shadowlength,0);
PulseCommand = function(self)
self:finishtweening();
local z = self:GetZoomX();
(cmd(accelerate,0.15;zoom,1.2;decelerate,0.15;zoom,z))(self);
end;
};
for l in ivalues(Letters) do
local Name = "letter " .. l;
MapNameToLetter[Name] = l;
MapLetterToName[l] = Name;
children[#children+1] = letter .. {
Name = Name;
Text = l;
};
if l == "BACK" or l == "ENTER" then
children[#children].File = THEME:GetPathF("", "Common Normal");
-- children[#children].File = THEME:GetPathF("", "_venacti 26px normal");
end;
end;
--[[ children[#children+1] = LoadActor( THEME:GetPathS(Var "LoadingScreen", "type key") ) .. { Name = "Type"; SupportPan = true; }
children[#children+1] = LoadActor( THEME:GetPathS(Var "LoadingScreen", "back") ) .. { Name = "Back"; SupportPan = true; }
children[#children+1] = LoadActor( THEME:GetPathS(Var "LoadingScreen", "enter") ) .. { Name = "Enter"; SupportPan = true; }
children[#children+1] = LoadActor( THEME:GetPathS(Var "LoadingScreen", "move cursor") ) .. { Name = "Move"; SupportPan = true; } --]]
children[#children+1] = LoadActor( THEME:GetPathS("Common", "value") ) .. { Name = "Type"; SupportPan = true; }
children[#children+1] = LoadActor( THEME:GetPathS("Common", "cancel") ) .. { Name = "Back"; SupportPan = true; }
children[#children+1] = LoadActor( THEME:GetPathS("Common", "start") ).. { Name = "Enter"; SupportPan = true; }
children[#children+1] = LoadActor( THEME:GetPathS("MusicWheel", "change") ) .. { Name = "Move"; SupportPan = true; }
local CursorFiles = {
[PLAYER_1] = "Cursor P1",
[PLAYER_2] = "Cursor P2"
};
for pn in ivalues(PlayerNumber) do
children[#children+1] = LoadActor( THEME:GetPathG("_frame", "1D"),
{ 4/10, 2/10, 4/10 },
LoadActor(CursorFiles[pn])
) .. {
Name = CursorFiles[pn];
BeginCommand = cmd(visible,SCREENMAN:GetTopScreen():GetEnteringName(pn));
OnCommand = cmd(
zoom,0;
rotationz,-360*2;
sleep,0.55;
decelerate,0.5;
zoom,1;
rotationz,0;
);
OffCommand = cmd(sleep,0.3;queuecommand,"TweenOff");
PlayerFinishedMessageCommand = function(self,param)
if param.PlayerNumber ~= pn then return end
self:playcommand("TweenOff" );
end;
TweenOffCommand = function(self,param)
(cmd(
accelerate,0.25;
zoomx,0;
))(self);
end;
};
end
local c;
local Keys = {};
local Selection = {};
local PlayerX = {};
local PlayerY = {};
return Def.ActorFrame {
children = children;
BeginCommand = function(self)
c = self:GetChildren();
c.Cursors = {};
c.Cursors[PLAYER_1] = c["Cursor P1"];
c.Cursors[PLAYER_2] = c["Cursor P2"];
for l in ivalues(Letters) do
local Name = MapLetterToName[l];
assert(Name);
Keys[l] = {
Text = c[Name];
Width = c[Name]:GetWidth();
Height = c[Name]:GetHeight();
};
assert(c[Name], Name);
end;
-- Position letters.
local RowWidths = {};
local fX = 0;
local fXPadding = 4;
local fY = 0;
local iRow = 1;
for l in ivalues(Letters) do
if l == "O" or l == "0" or l == "BACK"
then
fX = 0;
fY = fY + 30;
iRow = iRow + 1;
end;
Keys[l].Row = iRow;
Keys[l].Text:x(fX + Keys[l].Width/2);
Keys[l].Text:y(fY + Keys[l].Height/2);
fX = fX + Keys[l].Width;
RowWidths[iRow] = fX;
fX = fX + fXPadding;
end;
for l in ivalues(Letters) do
local iRow = Keys[l].Row;
Keys[l].Text:addx(-RowWidths[iRow]/2);
end;
Keys["BACK"].Text:x(-140);
Keys["ENTER"].Text:x(140);
for pn in ivalues(PlayerNumber) do
local sName = SCREENMAN:GetTopScreen():GetSelection(pn);
local DefaultKey = "A"
if #sName > 0 then
DefaultKey = "ENTER"
end
self:playcommand("SelectKey", { Key = DefaultKey, PlayerNumber = pn });
c.Cursors[pn]:finishtweening();
end
end;
CodeMessageCommand = function(self, param)
local pn = param.PlayerNumber;
if not SCREENMAN:GetTopScreen():GetAnyStillEntering() and param.Name == "Enter" then
if SCREENMAN:GetTopScreen():Finish(pn) then
c.Enter:play();
end
return;
end
if SCREENMAN:GetTopScreen():GetFinalized( pn ) then
return;
end
if param.Name == "Left" or param.Name == "Right" then
local iDir = param.Name == "Left" and -1 or 1;
local idx = LetterIndexes[Selection[pn]];
idx = idx + iDir;
idx = math.mod(idx+#Letters-1, #Letters)+1;
self:playcommand("SelectKey", { Key = Letters[idx], PlayerNumber = pn });
c.Move:playforplayer(pn);
return;
end
if param.Name == "JumpToEnter" then
self:playcommand("SelectKey", { Key = "ENTER", PlayerNumber = pn });
c.Move:playforplayer(pn);
return;
end
if param.Name == "Backspace" then
if SCREENMAN:GetTopScreen():Backspace(pn) then
c.Back:playforplayer(pn);
end
return;
end
if param.Name == "NextRow" or param.Name == "PrevRow" then
local iDir = param.Name == "PrevRow" and -1 or 1;
local idx = LetterIndexes[Selection[pn]];
local iRow = Keys[Selection[pn]].Row;
iRow = iRow + iDir;
iRow = math.mod(iRow+4-1, 4)+1;
local NearestLetter
local NearestLetterDistance
for l in ivalues(Letters) do
if iRow == Keys[l].Row then
local Text = Keys[l].Text;
local fDist = distance( PlayerX[pn], PlayerY[pn],
Text:GetX(), Text:GetY() );
if not NearestLetterDistance or fDist < NearestLetterDistance then
NearestLetterDistance = fDist;
NearestLetter = l;
end
end
end
assert( NearestLetter );
self:playcommand("SelectKey", { Key = NearestLetter, PlayerNumber = pn, NoStore = true });
c.Move:playforplayer(pn);
return;
end
if param.Name == "Enter" then
if Selection[pn] == "BACK" then
if SCREENMAN:GetTopScreen():Backspace(pn) then
Keys[Selection[pn]].Text:playcommand( "Pulse" );
c.Back:playforplayer(pn);
end
elseif Selection[pn] == "ENTER" then
if SCREENMAN:GetTopScreen():Finish(pn) then
Keys[Selection[pn]].Text:playcommand( "Pulse" );
c.Enter:playforplayer(pn);
end
else
local key = Selection[pn]; -- EnterKey may change this
if SCREENMAN:GetTopScreen():EnterKey(pn, key) then
Keys[key].Text:playcommand( "Pulse" );
c.Type:playforplayer(pn);
end
end
end
end;
SelectKeyMessageCommand = function(self, param)
local key = param.Key;
local pn = param.PlayerNumber;
if not Keys[key] then return end
Selection[pn] = key;
c.Cursors[pn]:stoptweening();
c.Cursors[pn]:playcommand( "SetSize", { Width=Keys[key].Width+6; tween=cmd(stoptweening;linear,0.10); } );
c.Cursors[pn]:x( Keys[key].Text:GetX() );
c.Cursors[pn]:y( Keys[key].Text:GetY() );
if not param.NoStore then
PlayerX[pn] = Keys[key].Text:GetX();
PlayerY[pn] = Keys[key].Text:GetY();
end
-- SCREENMAN:GetTopScreen():EnterKey(PLAYER_2,"x");
end;
MenuTimerExpiredMessageCommand = function(self, param)
for pn in ivalues(PlayerNumber) do
SCREENMAN:GetTopScreen():Finish(pn);
end
c.Enter:play();
end;
OnCommand = function(self, param)
for key in ivalues(Letters) do
local fDist = distance( Keys[key].Text:GetX(), Keys[key].Text:GetY(), 0, 100 );
local f = cmd(
diffusealpha,0;zoom,0;
sleep,0.25 + (fDist / 400);
decelerate,0.5;
diffusealpha,1;zoom,0.8);
f(Keys[key].Text);
end
end;
OffCommand = function(self, param)
for key in ivalues(Letters) do
local fDist = distance( Keys[key].Text:GetX(), Keys[key].Text:GetY(), 0, 100 );
local f = cmd(
sleep,0.0 + (fDist / 400);
decelerate,0.5;
diffusealpha,0;zoom,0);
f(Keys[key].Text);
end
end;
};
@@ -1,49 +1,2 @@
local function CreditsText( pn ) local t = Def.ActorFrame {};
function update(self)
local str = ScreenSystemLayerHelpers.GetCreditsMessage(pn);
self:settext(str);
end
function UpdateVisible(self)
local screen = SCREENMAN:GetTopScreen();
local bShow = true;
if screen then
local sClass = screen:GetName();
bShow = THEME:GetMetric( sClass, "ShowCreditDisplay" );
end
self:visible( bShow );
end
local text = LoadFont(Var "LoadingScreen","credits") .. {
InitCommand=function(self)
self:name("Credits" .. PlayerNumberToString(pn))
ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen");
end;
UpdateTextCommand=function(self)
local str = ScreenSystemLayerHelpers.GetCreditsMessage(pn);
self:settext(str);
end;
UpdateVisibleCommand=function(self)
local screen = SCREENMAN:GetTopScreen();
local bShow = true;
if screen then
local sClass = screen:GetName();
bShow = THEME:GetMetric( sClass, "ShowCreditDisplay" );
end
self:visible( bShow );
end;
--[[ RefreshCreditTextMessageCommand=update;
CoinInsertedMessageCommand=update;
PlayerJoinedMessageCommand=update;
ScreenChangedMessageCommand=UpdateVisible; --]]
};
return text;
end
local t = Def.ActorFrame {
CreditsText( PLAYER_1 );
CreditsText( PLAYER_2 );
};
return t; return t;
@@ -1,4 +1,50 @@
local function CreditsText( pn )
function update(self)
local str = ScreenSystemLayerHelpers.GetCreditsMessage(pn);
self:settext(str);
end
function UpdateVisible(self)
local screen = SCREENMAN:GetTopScreen();
local bShow = true;
if screen then
local sClass = screen:GetName();
bShow = THEME:GetMetric( sClass, "ShowCreditDisplay" );
end
self:visible( bShow );
end
local text = LoadFont(Var "LoadingScreen","credits") .. {
InitCommand=function(self)
self:name("Credits" .. PlayerNumberToString(pn))
ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen");
end;
UpdateTextCommand=function(self)
local str = ScreenSystemLayerHelpers.GetCreditsMessage(pn);
self:settext(str);
end;
UpdateVisibleCommand=function(self)
local screen = SCREENMAN:GetTopScreen();
local bShow = true;
if screen then
local sClass = screen:GetName();
bShow = THEME:GetMetric( sClass, "ShowCreditDisplay" );
end
self:visible( bShow );
end;
--[[ RefreshCreditTextMessageCommand=update;
CoinInsertedMessageCommand=update;
PlayerJoinedMessageCommand=update;
ScreenChangedMessageCommand=UpdateVisible; --]]
};
return text;
end;
--
local t = Def.ActorFrame { local t = Def.ActorFrame {
CreditsText( PLAYER_1 );
CreditsText( PLAYER_2 );
Def.ActorFrame { Def.ActorFrame {
Def.Quad { Def.Quad {
InitCommand=cmd(zoomtowidth,SCREEN_WIDTH;zoomtoheight,30;horizalign,left;vertalign,top;y,SCREEN_TOP;diffuse,color("0,0,0,0")); InitCommand=cmd(zoomtowidth,SCREEN_WIDTH;zoomtoheight,30;horizalign,left;vertalign,top;y,SCREEN_TOP;diffuse,color("0,0,0,0"));
Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

+26
View File
@@ -261,6 +261,7 @@ AdvanceExtraPixels=0
253=12 253=12
254=15 254=15
255=12 255=12
[alt] [alt]
0=10 0=10
1=10 1=10
@@ -390,3 +391,28 @@ AdvanceExtraPixels=0
125=12 125=12
126=6 126=6
127=7 127=7
[polish]
Baseline=23
Top=6
line 0=ĄĆĘŁŃŚŹŻ
line 1=ąćęłńśźż
0=15
1=10
2=12
3=12
4=12
5=12
6=13
7=13
8=11
9=11
10=11
11=6
12=11
13=10
14=10
15=10
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

+40 -9
View File
@@ -372,7 +372,7 @@ MaxTextureResolution=Choose the maximum texture resolution. Setting this to any
MenuTimer=When &oq;ON&cq;, menus have a time limit. MenuTimer=When &oq;ON&cq;, menus have a time limit.
Mines=Mines Mines=Mines
MoveRandomToEnd=Determines if courses with random songs should be placed at the end of the course select wheel. MoveRandomToEnd=Determines if courses with random songs should be placed at the end of the course select wheel.
MovieColorDepth=Choose the color depth of textures. 32 bit textures use more memory, but look nicer. MovieColorDepth=Choose the color depth of movies. 32 bit textures use more memory, but look nicer.
MusicWheelSwitchSpeed=Adjusts the speed of the music wheel. MusicWheelSwitchSpeed=Adjusts the speed of the music wheel.
MusicWheelUsesSections=&oq;Always&cq; means sections in group + ABC; &oq;Never&cq; means no sections; &oq;Title Only&cq; shows sections in ABC order. MusicWheelUsesSections=&oq;Always&cq; means sections in group + ABC; &oq;Never&cq; means no sections; &oq;Title Only&cq; shows sections in ABC order.
Network Options=Connect to a server or change server options. Network Options=Connect to a server or change server options.
@@ -656,6 +656,7 @@ Never=Never
New=New New=New
NewEdit=-New Edit- NewEdit=-New Edit-
No=No No=No
NoAttacks=No Attacks
NoHands=No Hands NoHands=No Hands
NoHolds=No Holds NoHolds=No Holds
NoJumps=No Jumps NoJumps=No Jumps
@@ -707,7 +708,8 @@ Skip=Skip
Skippy=Skippy Skippy=Skippy
Slow=Slow Slow=Slow
SN2=Supernova 2 SN2=Supernova 2
SongAttacks=Song Attacks SongAttacks=Step Attacks
StepAttacks=Step Attacks
Song BGAnimation=Song BGAnimation Song BGAnimation=Song BGAnimation
Song Bitmap=Song Bitmap Song Bitmap=Song Bitmap
Song Movie=Song Movie Song Movie=Song Movie
@@ -800,6 +802,7 @@ CelShadeModels=Cel-shaded Models
Center Image=Center Image Center Image=Center Image
Chaos=Chaos Chaos=Chaos
Characters=Characters Characters=Characters
Chart Name=Chart Name
Chart Style=Chart Style Chart Style=Chart Style
Choose=Choose Choose=Choose
Clear Bookkeeping Data=Clear Bookkeeping Data Clear Bookkeeping Data=Clear Bookkeeping Data
@@ -807,13 +810,20 @@ Clear Machine Edits=Clear Machine Edits
Clear Machine Stats=Clear Machine Scores Clear Machine Stats=Clear Machine Scores
Clear USB edits=Clear USB edits Clear USB edits=Clear USB edits
Clear area=Clear area Clear area=Clear area
Clear clipboard=Clear clipboard
CoinMode=Coin Mode CoinMode=Coin Mode
CoinModeNoHome=Coin Mode CoinModeNoHome=Coin Mode
CoinsPerCredit=Coins&nbsp;Per Credit CoinsPerCredit=Coins&nbsp;Per Credit
Connection=Connection Connection=Connection
Convert pause to beats=Convert pause to beats Convert pause to beats=Convert stop to beats
Convert selection to pause=Convert selection to pause Convert delay to beats=Convert delay to beats
Convert selection to attack=Convert selection to Attack
Convert selection to pause=Convert selection to stop
Convert selection to delay=Convert selection to delay
Convert selection to warp=Convert selection to Warp Segment
Convert selection to fake=Convert selection to Fake Segment
Copy=Copy Copy=Copy
Copy timing data=Copy timing data
CourseSortOrder=Course Sort CourseSortOrder=Course Sort
Create New=Create New Create New=Create New
Create New Course=Create New Create New Course=Create New
@@ -829,6 +839,8 @@ DelayedTextureDelete=Keep&nbsp;Textures In&nbsp;Memory
Delete=Delete Delete=Delete
Delete beat and shift up=Delete beat and shift up Delete beat and shift up=Delete beat and shift up
Description=Description Description=Description
Designate as Music Preview=Designate as Music Preview
Designate last second at current beat=Designate last second at current beat
Difficulty=Difficulty Difficulty=Difficulty
Display BPM=Display BPM Display BPM=Display BPM
DisplayAspectRatio=Aspect Ratio DisplayAspectRatio=Aspect Ratio
@@ -867,6 +879,7 @@ Entry %d=Entry %d
EventMode=Event Mode EventMode=Event Mode
Exit=Exit Exit=Exit
Fail=Fail Fail=Fail
Fakes=Fakes
FastLoad=Fast\nLoad FastLoad=Fast\nLoad
File1 Global BGAnimation=File1 Global BGAnimation File1 Global BGAnimation=File1 Global BGAnimation
File1 Global Movie=File1 Global Movie File1 Global Movie=File1 Global Movie
@@ -904,11 +917,13 @@ Insert=Insert
Insert Credit=Insert Credit Insert Credit=Insert Credit
Insert beat and shift down=Insert beat and shift down Insert beat and shift down=Insert beat and shift down
Insert Entry=Insert Entry Insert Entry=Insert Entry
Invert notes' player=Invert player notes (routine only)
Jumps=Jumps Jumps=Jumps
Key Joy Mappings=Config Key/Joy Mappings Key Joy Mappings=Config Key/Joy Mappings
Language=Language Language=Language
Last beat hint=Last beat hint Last second hint=Last second hint
Layer=Layer Layer=Layer
Lifts=Lifts
LifeDifficulty=Life Difficulty LifeDifficulty=Life Difficulty
LifeType=Life Type LifeType=Life Type
Low Meter=Low Meter Low Meter=Low Meter
@@ -921,6 +936,8 @@ MenuTimer=Menu Timer
Meter=Meter Meter=Meter
Min BPM=Min Specified BPM Min BPM=Min Specified BPM
Mines=Mines Mines=Mines
Mirror Player 1 to 2=Mirror P1's notes to P2 (routine only)
Mirror Player 2 to 1=Mirror P2's notes to P1 (routine only)
MoveRandomToEnd=Random At&nbsp;End MoveRandomToEnd=Random At&nbsp;End
More Options=More Options More Options=More Options
MovieColorDepth=Movie Color MovieColorDepth=Movie Color
@@ -936,6 +953,7 @@ OsMountPlayer1=OS&nbsp;Mount Player1
OsMountPlayer2=OS&nbsp;Mount Player2 OsMountPlayer2=OS&nbsp;Mount Player2
Paste at begin marker=Paste at begin marker Paste at begin marker=Paste at begin marker
Paste at current beat=Paste at current beat Paste at current beat=Paste at current beat
Paste timing data=Paste timing data
Persp=Persp Persp=Persp
Play current beat to end=Play current beat to end Play current beat to end=Play current beat to end
Play preview music=Play preview music Play preview music=Play preview music
@@ -971,7 +989,8 @@ Remove Change=Remove Change
Rename=Rename Rename=Rename
Reset To Defaults=Reset Options To Default Values Reset To Defaults=Reset Options To Default Values
Revert from disk=Revert from disk Revert from disk=Revert from disk
Revert to last save=Revert to last save Revert to last save=Revert from cache
Rolls=Rolls
Save=Save Save=Save
SaveScores=Save Scores SaveScores=Save Scores
SaveReplays=Save Replays SaveReplays=Save Replays
@@ -1036,6 +1055,7 @@ Type=Type
Turn=Turn Turn=Turn
Undo=Undo Undo=Undo
UseUnlockSystem=Unlock System UseUnlockSystem=Unlock System
View steps data=View Steps Data
VisualDelaySeconds=Visual Delay VisualDelaySeconds=Visual Delay
Voltage=Voltage Voltage=Voltage
Vsync=Wait For Vsync Vsync=Wait For Vsync
@@ -1216,6 +1236,7 @@ Write Profiles=Write Profiles
off=off off=off
on=on on=on
or=or or=or
Zoom In Camera=Zoom In Camera
[ScreenEdit] [ScreenEdit]
%s notes=%s notes %s notes=%s notes
@@ -1228,7 +1249,7 @@ Enter a new Stop value.=Enter a new Stop value.\n\nType "0" to remove.
Enter a new Delay value.=Enter a new Delay value.\n\nType "0" to remove. Enter a new Delay value.=Enter a new Delay value.\n\nType "0" to remove.
Enter a new Time Signature.=Enter a new time signature.\nUse the format "x/y".\nEnter the previous value to remove. Enter a new Time Signature.=Enter a new time signature.\nUse the format "x/y".\nEnter the previous value to remove.
Enter a new Tickcount value.=Enter a new Tickcount value.\n\nEnter the previous value to remove. Enter a new Tickcount value.=Enter a new Tickcount value.\n\nEnter the previous value to remove.
Enter a new Combo value.=Enter a new Combo value.\n\nEnter the previous value to remove. Enter a new Combo value.=Enter a new Combo value.\nUse the format "x/y".\nEnter the previous value to remove.
Enter a new Label value.=Enter a name for this section of the chart.\n\nEnter a previously used label to remove. Enter a new Label value.=Enter a name for this section of the chart.\n\nEnter a previously used label to remove.
Enter a new Warp value.=Enter the number of beats you will warp over.\n\nType "0" to remove this segment. Enter a new Warp value.=Enter the number of beats you will warp over.\n\nType "0" to remove this segment.
Enter a new Speed percent value.=Enter the ratio for speed scrolling.\nEnter the previous value to remove.\n1 is the default scroll. Enter a new Speed percent value.=Enter the ratio for speed scrolling.\nEnter the previous value to remove.\n1 is the default scroll.
@@ -1242,11 +1263,12 @@ Enter a new artist.=Enter a new artist.
Enter a new genre.=Enter a new genre. Enter a new genre.=Enter a new genre.
Enter a new credit.=Enter a new credit. Enter a new credit.=Enter a new credit.
Enter a new description.=Enter a new description. Enter a new description.=Enter a new description.
Enter a new chart name.=Enter the name/title of this chart.
Enter a new chart style.=Enter a new chart style (e.g. "Pad", "Keyboard"). Enter a new chart style.=Enter a new chart style (e.g. "Pad", "Keyboard").
Enter a new meter.=Enter the difficulty rating for this chart. Enter a new meter.=Enter the difficulty rating for this chart.
Enter the author who made this step pattern.=Enter the author who made this step pattern. Enter the author who made this step pattern.=Enter the author who made this step pattern.
Enter the offset for the song.=Enter the beat 0 offset for the song. Enter the offset for the song.=Enter the beat 0 offset for the song.
Enter a new last beat hint.=Enter a new last beat hint. Enter a new last second hint.=Enter a new last second hint.
Enter a new main title transliteration.=Enter a new main title transliteration. Enter a new main title transliteration.=Enter a new main title transliteration.
Enter a new main title.=Enter a new main title. Enter a new main title.=Enter a new main title.
Enter a new sub title transliteration.=Enter a new sub title transliteration. Enter a new sub title transliteration.=Enter a new sub title transliteration.
@@ -1257,7 +1279,7 @@ Enter a new min BPM.=Enter the minimum displayed BPM.
Enter a new max BPM.=Enter the maximum displayed BPM. Enter a new max BPM.=Enter the maximum displayed BPM.
More than %d notes per measure is not allowed. This change has been reverted.=More than %d notes per measure is not allowed. This change has been reverted. More than %d notes per measure is not allowed. This change has been reverted.=More than %d notes per measure is not allowed. This change has been reverted.
No backgrounds available=No backgrounds available No backgrounds available=No backgrounds available
EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nN and M keys:\n swap tap notes\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nCreate roll note:\n Hold Shift,\n then create a\n hold note.\nSpace bar:\n Set area\n marker\nEnter:\n Area Menu\nEscape:\n Main Menu\nF4:\n Timing Menu\nF1:\n Show help\n EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nN and M keys:\n swap tap notes\nCtrl + N/M:\n swap cycled segment\nCtrl + ,/.:\n cycle segments\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nCreate roll note:\n Hold Shift,\n then create a\n hold note.\nSpace bar: Set area\n marker\nT key: Switch Timing\nEnter: Area Menu\nA Key: Alter Menu\nEscape: Main Menu\nF4: Timing Menu\nF1: Show help\n
PlayRecordHelpText=Press START to end PlayRecordHelpText=Press START to end
Save successful.=Save successful. Save successful.=Save successful.
Saved as SM and DWI.=Saved as SM and DWI. Saved as SM and DWI.=Saved as SM and DWI.
@@ -1269,6 +1291,7 @@ This change creates notes past the end of the music and is not allowed.=This cha
This will destroy all unsaved changes.=This will destroy all unsaved changes. This will destroy all unsaved changes.=This will destroy all unsaved changes.
Undo=Undo Undo=Undo
You must be in Song Timing Mode to edit BG Changes.=You must be in Song Timing Mode to edit BG Changes. You must be in Song Timing Mode to edit BG Changes.=You must be in Song Timing Mode to edit BG Changes.
You must have an area selected to enter the Alter Menu.=You must have an area selected to enter the Alter Menu.
Current beat=Current beat Current beat=Current beat
Current second=Current second Current second=Current second
@@ -1276,10 +1299,13 @@ Snap to=Snap to
Selection beat=Selection beat Selection beat=Selection beat
Difficulty=Difficulty Difficulty=Difficulty
Description=Description Description=Description
Chart Name=Chart Name
Chart Style=Chart Style Chart Style=Chart Style
Step Author=Step Author
Main title=Main title Main title=Main title
Subtitle=Subtitle Subtitle=Subtitle
Tap Note=Tap Note Tap Note=Tap Note
Segment=Segment
Tap Steps=Tap Steps Tap Steps=Tap Steps
Jumps=Jumps Jumps=Jumps
Hands=Hands Hands=Hands
@@ -1657,11 +1683,15 @@ Error adding file '%s'.=Error adding file '%s'.
Loading courses...=Loading courses... Loading courses...=Loading courses...
Loading songs...=Loading songs... Loading songs...=Loading songs...
Reloading...=Reloading... Reloading...=Reloading...
Unloading songs...=Unloading songs...
Unloading courses...=Unloading courses...
The folder "%s" appears to be a song folder. All song folders must reside in a group folder. For example, "Songs/Originals/My Song".=The folder "%s" appears to be a song folder. All song folders must reside in a group folder. For example, "Songs/Originals/My Song" will contain the music file (MP3, OGG...), the steps file (.sm, .dwi, .ksf...) and other related files. The folder "%s" appears to be a song folder. All song folders must reside in a group folder. For example, "Songs/Originals/My Song".=The folder "%s" appears to be a song folder. All song folders must reside in a group folder. For example, "Songs/Originals/My Song" will contain the music file (MP3, OGG...), the steps file (.sm, .dwi, .ksf...) and other related files.
[SongUtil] [SongUtil]
You must supply a name for your new edit.=You must supply a name for your new edit. You must supply a name for your new edit.=You must supply a name for your new edit.
The name you chose conflicts with another chart. Please use a different name.=The name you chose conflicts with another chart. Please use a different name.
The name you chose conflicts with another edit. Please use a different name.=The name you chose conflicts with another edit. Please use a different name. The name you chose conflicts with another edit. Please use a different name.=The name you chose conflicts with another edit. Please use a different name.
The chart name cannot contain any of the following characters: %s=The chart name cannot contain any of the following characters: %s
The edit name cannot contain any of the following characters: %s=The edit name can not contain any of the following characters: %s The edit name cannot contain any of the following characters: %s=The edit name can not contain any of the following characters: %s
The step author's name cannot contain any of the following characters: %s=The step author's name cannot contain any of the following characters: %s The step author's name cannot contain any of the following characters: %s=The step author's name cannot contain any of the following characters: %s
@@ -1897,6 +1927,7 @@ P2=P2
[UnlockRewardType] [UnlockRewardType]
Song=Song Song=Song
Steps=Steps Steps=Steps
StepsType=StepsType
Course=Course Course=Course
Modifier=Modifier Modifier=Modifier
@@ -10,7 +10,7 @@
#BACKGROUND:; #BACKGROUND:;
#LYRICSPATH:; #LYRICSPATH:;
#CDTITLE:; #CDTITLE:;
#MUSIC:ScreenGameplaySyncMachine music.ogg; #MUSIC:_sync music.ogg;
#OFFSET:-0.012; #OFFSET:-0.012;
#SAMPLESTART:0.000; #SAMPLESTART:0.000;
#SAMPLELENGTH:12.000; #SAMPLELENGTH:12.000;
@@ -26,6 +26,8 @@
#DIFFICULTY:Beginner; #DIFFICULTY:Beginner;
#METER:1; #METER:1;
#RADARVALUES:0.302,0.205,0.000,0.000,0.000; #RADARVALUES:0.302,0.205,0.000,0.000,0.000;
#BPMS:0.000=132.000;
#OFFSET:-0.012;
#NOTES: #NOTES:
// measure 1 // measure 1
0000 0000
@@ -100,6 +102,8 @@
#DIFFICULTY:Beginner; #DIFFICULTY:Beginner;
#METER:1; #METER:1;
#RADARVALUES:0.302,0.205,0.000,0.000,0.000; #RADARVALUES:0.302,0.205,0.000,0.000,0.000;
#BPMS:0.000=132.000;
#OFFSET:-0.012;
#NOTES: #NOTES:
// measure 1 // measure 1
00000 00000
@@ -13,6 +13,8 @@
#DESCRIPTION:BASIC; #DESCRIPTION:BASIC;
#DIFFICULTY:easy; #DIFFICULTY:easy;
#METER:1; #METER:1;
#BPMS:0.000=100.000;
#STOPS:16=2,18=2,20=2,22=2;
#RADARVALUES:0,0,0,0,0; #RADARVALUES:0,0,0,0,0;
#NOTES: #NOTES:
0000 0000
@@ -72,6 +74,8 @@
#DESCRIPTION:NORMAL; #DESCRIPTION:NORMAL;
#DIFFICULTY:easy; #DIFFICULTY:easy;
#METER:1; #METER:1;
#BPMS:0.000=100.000;
#STOPS:16=2,18=2,20=2,22=2;
#RADARVALUES:0,0,0,0,0; #RADARVALUES:0,0,0,0,0;
#NOTES: #NOTES:
00000 00000
-9
View File
@@ -56,15 +56,6 @@ function ActorScroller:setfastcatchup(bFastCatchup)
self:SetFastCatchup(bFastCatchup) self:SetFastCatchup(bFastCatchup)
end end
-- renaming various StepMania functions to sm-ssc ones:
if ScreenString then
ScreenString = Screen.String
end
if ScreenMetric then
ScreenMetric = Screen.Metric
end
--[[ GameState ]] --[[ GameState ]]
--Aliases for old GAMESTATE timing functions. --Aliases for old GAMESTATE timing functions.
--These have been converted to SongPosition, but most themes still use these old functions. --These have been converted to SongPosition, but most themes still use these old functions.
+59 -6
View File
@@ -83,6 +83,44 @@ local DropBezier =
function Actor:drop(t) function Actor:drop(t)
self:tween( t, "TweenType_Bezier", DropBezier ); self:tween( t, "TweenType_Bezier", DropBezier );
end end
-- compound tweens "combine multiple interpolators to allow generating more
-- complex tweens." length is how long to span the animation for, while
-- ... is either a string (e.g. "linear,0.25,accelerate,0.75") or a table
-- with the tween information.
function Actor:compound(length,...)
local tweens = ...
if type(tweens) == "string" then
local parsed = split(";",tweens)
tweens = {} -- convert to table
for i,s in pairs(parsed) do
local res = split(",",s)
tweens[i] = {
Type = res[1],
Percent = res[2],
Bezier = res[3] or nil
}
end
end
for i,t in pairs(tweens) do
if t.Type == "linear" then self:linear(t.Percent*length)
elseif t.Type == "accelerate" then self:accelerate(t.Percent*length)
elseif t.Type == "decelerate" then self:decelerate(t.Percent*length)
elseif t.Type == "spring" then self:spring(t.Percent*length)
elseif t.Type == "bouncebegin" then self:bouncebegin(t.Percent*length)
elseif t.Type == "bounceend" then self:bounceend(t.Percent*length)
elseif t.Type == "smooth" then self:smooth(t.Percent*length)
elseif t.Type == "drop" then self:smooth(t.Percent*length)
--elseif t.Type == "ease" then self:ease(t.Percent*length)
elseif t.Type == "bezier" then
-- todo: handle using tween and 'TweenType_Bezier'
end
end
end
-- Hide if b is true, but don't unhide if b is false. -- Hide if b is true, but don't unhide if b is false.
function Actor:hide_if(b) function Actor:hide_if(b)
if b then if b then
@@ -114,17 +152,32 @@ function Actor:FullScreen()
end end
--[[ Typical background sizes: --[[ Typical background sizes:
320x240 - DDR 1st-Extreme, most NVLM_ZK songs 320x240 - [4:3]
640x480 - most simfiles in distribution today are this big. 640x480 - [4:3] (most simfiles in distribution today use this res.)
768x480 - 16:10 aspect ratio backgrounds 768x480 - [16:10]
854x480 - pump it up pro 854x480 - [16:9]
]] ]]
-- "Most backgrounds are 640x480. Some are 768x480. Stretch the 4:3 ones."
function Actor:scale_or_crop_background() function Actor:scale_or_crop_background()
if (self:GetWidth() * 3) / 4 == self:GetHeight() then local gw = self:GetWidth()
local gh = self:GetHeight()
local graphicAspect = gw/gh
local displayAspect = DISPLAY:GetDisplayWidth()/DISPLAY:GetDisplayHeight()
if graphicAspect == displayAspect then
-- bga matches the current aspect, we can stretch it.
self:stretchto( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT ); self:stretchto( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT );
else else
-- temp
self:scaletocover( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT ); self:scaletocover( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT );
--[[
-- bga doesn't match the aspect.
if displayAspect > graphicAspect then
-- the graphic is smaller than the display aspect ratio
else
-- the graphic is bigger than the display aspect ratio; crop me
end
--]]
end end
end end
+9 -2
View File
@@ -65,7 +65,11 @@ Branch = {
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
return "ScreenHowToInstallSongs"; return "ScreenHowToInstallSongs";
end; end;
return "ScreenSelectProfile"; if PROFILEMAN:GetNumLocalProfiles() >= 2 then
return "ScreenSelectProfile";
else
return "ScreenProfileLoad";
end
end, end,
OptionsEdit = function() OptionsEdit = function()
-- Similar to above, don't let anyone in here with 0 songs. -- Similar to above, don't let anyone in here with 0 songs.
@@ -75,7 +79,7 @@ Branch = {
return "ScreenOptionsEdit"; return "ScreenOptionsEdit";
end, end,
AfterProfileLoad = function() AfterProfileLoad = function()
return "ScreenSelectProfile" return Branch.AfterSelectProfile()
end, end,
AfterSelectProfile = function() AfterSelectProfile = function()
if ( THEME:GetMetric("Common","AutoSetStyle") == true ) then if ( THEME:GetMetric("Common","AutoSetStyle") == true ) then
@@ -189,4 +193,7 @@ Branch = {
Network = function() Network = function()
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu" return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
end, end,
AfterSaveSummary = function()
return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
end,
} }
+6 -7
View File
@@ -1,5 +1,5 @@
-- SSC Color Module and Library -- SSC Color Module and Library
local nilColor = color("0,0,0,0")
-- Original Color Module. -- Original Color Module.
Color = { Color = {
-- Color Library -- Color Library
@@ -16,7 +16,7 @@ Color = {
Purple = color("#92278f"), Purple = color("#92278f"),
Outline = color("0,0,0,0.5"), Outline = color("0,0,0,0.5"),
Invisible = color("1,1,1,0"), Invisible = color("1,1,1,0"),
Stealth = nilColor, Stealth = color("0,0,0,0"),
-- Color Functions -- Color Functions
-- These functions alter colors in a certain way so that you can make -- These functions alter colors in a certain way so that you can make
-- new ones without having to copy a color or find a new one. -- new ones without having to copy a color or find a new one.
@@ -30,8 +30,11 @@ Color = {
return { c[1],c[2],c[3],fAlpha }; return { c[1],c[2],c[3],fAlpha };
end end
} }
setmetatable(Color, { __call = function(self, c) return self[c] end })
-- Remapped Color Module, since some themes are crazy -- Remapped Color Module, since some themes are crazy
Colors = Color; -- Colors = Color;
GameColor = { GameColor = {
PlayerColors = { PlayerColors = {
@@ -95,10 +98,6 @@ GameColor.Difficulty["Nightmare"] = GameColor.Difficulty["Challenge"];
GameColor.Difficulty["HalfDouble"] = GameColor.Difficulty["Medium"]; GameColor.Difficulty["HalfDouble"] = GameColor.Difficulty["Medium"];
--[[ Fallbacks ]] --[[ Fallbacks ]]
function Color(c)
return Colors[c]
end
function BoostColor( cColor, fBoost ) function BoostColor( cColor, fBoost )
local c = cColor local c = cColor
return { c[1]*fBoost, c[2]*fBoost, c[3]*fBoost, c[4] } return { c[1]*fBoost, c[2]*fBoost, c[3]*fBoost, c[4] }
+11 -10
View File
@@ -98,16 +98,17 @@ end
-- Get a metric from the currently-loading screen. This is only valid while loading -- Get a metric from the currently-loading screen. This is only valid while loading
-- an actor, such as from File or InitCommand attributes; not from commands. -- an actor, such as from File or InitCommand attributes; not from commands.
Screen = { Screen.Metric = function ( sName )
Metric = function ( sName ) local sClass = Var "LoadingScreen"
local sClass = Var "LoadingScreen" return THEME:GetMetric( sClass, sName )
return THEME:GetMetric( sClass, sName ) end
end, ScreenMetric = Screen.Metric
String = function ( sName )
local sClass = Var "LoadingScreen"; Screen.String = function ( sName )
return THEME:GetString( sClass, sName ) local sClass = Var "LoadingScreen";
end return THEME:GetString( sClass, sName )
}; end
ScreenString = Screen.String
function TextBannerAfterSet(self,param) function TextBannerAfterSet(self,param)
local Title=self:GetChild("Title"); local Title=self:GetChild("Title");
+28 -11
View File
@@ -13,20 +13,38 @@ function AreStageSongModsForced()
return bExtraStage or bOni or bBattle or bRave return bExtraStage or bOni or bBattle or bRave
end end
function SetFail()
local sFail = "";
if GetGamePref("DefaultFail") then
sFail = string.format("Fail%s", GetGamePref("DefaultFail"));
else
sFail = "FailOff";
end
sFail = tostring(sFail);
-- SCREENMAN:SystemMessage( 'NEW FAIL IS: ' .. tostring(sFail) );
for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
-- GAMESTATE:ApplyGameCommand( "stagemod,FailImmediateContinue", pn );
-- GAMESTATE:GetPlayerState(pn):SetPlayerOptions( "ModsLevel_Song", 'mod,FailImmediateContinue' );
MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} );
end
-- GAMESTATE:SetSongOptions( "ModsLevel_Preferred", 'mod,FailImmediateContinue' );
-- GAMESTATE:SetSongOptions( "ModsLevel_Stage", 'mod,FailImmediateContinue' );
-- GAMESTATE:SetSongOptions( "ModsLevel_Song",'mod,FailImmediateContinue' );
GAMESTATE:ApplyGameCommand( "mod," .. sFail);
-- GAMESTATE:ApplyGameCommand( "stagemod,FailImmediateContinue");
MESSAGEMAN:Broadcast( "SongOptionsChanged" );
end
function ScreenSelectMusic:setupmusicstagemods() function ScreenSelectMusic:setupmusicstagemods()
Trace( "setupmusicstagemods" ) Trace( "setupmusicstagemods" )
local pm = GAMESTATE:GetPlayMode() local pm = GAMESTATE:GetPlayMode()
if pm == "PlayMode_Battle" or pm == "PlayMode_Rave" then if pm == "PlayMode_Battle" or pm == "PlayMode_Rave" then
-- FIX DAT BUG; local so = GAMESTATE:GetDefaultSongOptions();
local sFail = "";
if GetGamePref("DefaultFail") then
sFail = string.format("Fail%s", GetGamePref("DefaultFail") );
else
sFail = "Failoff";
end;
--
local so = GAMESTATE:GetDefaultSongOptions() .. "," .. sFail;
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so ); GAMESTATE:SetSongOptions( "ModsLevel_Stage", so );
MESSAGEMAN:Broadcast( "SongOptionsChanged" ); MESSAGEMAN:Broadcast( "SongOptionsChanged" );
elseif GAMESTATE:IsAnExtraStage() then elseif GAMESTATE:IsAnExtraStage() then
@@ -46,6 +64,7 @@ function ScreenSelectMusic:setupmusicstagemods()
po = THEME:GetMetric("SongManager","ExtraStagePlayerModifiers"); po = THEME:GetMetric("SongManager","ExtraStagePlayerModifiers");
so = THEME:GetMetric("SongManager","ExtraStageStageModifiers"); so = THEME:GetMetric("SongManager","ExtraStageStageModifiers");
end end
local difficulty = steps:GetDifficulty() local difficulty = steps:GetDifficulty()
local Reverse = PlayerNumber:Reverse() local Reverse = PlayerNumber:Reverse()
@@ -59,8 +78,6 @@ function ScreenSelectMusic:setupmusicstagemods()
MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} ) MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} )
end end
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so ) GAMESTATE:SetSongOptions( "ModsLevel_Stage", so )
MESSAGEMAN:Broadcast( "SongOptionsChanged" ) MESSAGEMAN:Broadcast( "SongOptionsChanged" )
end end
+15 -13
View File
@@ -1,9 +1,12 @@
--[[ --[[
Custom Speed Mods v2.0 (for sm-ssc) Custom Speed Mods v2.1 (for StepMania 5)
by AJ Kelly of KKI Labs ( http://kki.ajworld.net/ ) by AJ Kelly of KKI Labs ( http://kki.ajworld.net/ )
changelog: changelog:
v2.1 (StepMania 5 Preview 2)
* Added support for m-Mods.
v2.0 (for sm-ssc) v2.0 (for sm-ssc)
Giant rewrite of the speed mod parser. Giant rewrite of the speed mod parser.
This rewrite comes with the following changes/features: This rewrite comes with the following changes/features:
@@ -38,9 +41,6 @@ v1.2
v1.1 v1.1
* Cleaned up code some, I think. * Cleaned up code some, I think.
________________________________________________________________________________
anticipated future changes:
* M-Mod support (when sm-ssc integrates it)
]] ]]
-- ProfileDir(slot): gets the profile dir for slot, -- ProfileDir(slot): gets the profile dir for slot,
@@ -68,7 +68,7 @@ local function ParseSpeedModFile(path)
return mods return mods
else else
-- error; write a fallback mod file and return it -- error; write a fallback mod file and return it
local fallbackString = "0.5x,1x,1.5x,2x,3x,4x,8x,C200,C400" local fallbackString = "0.5x,1x,1.5x,2x,3x,4x,8x,C250,C450,m550"
Trace("[CustomSpeedMods]: Could not read SpeedMods; writing fallback to "..path) Trace("[CustomSpeedMods]: Could not read SpeedMods; writing fallback to "..path)
file:Open(path, 2) file:Open(path, 2)
file:Write(fallbackString) file:Write(fallbackString)
@@ -148,8 +148,8 @@ end
local function SpeedModSort(tab) local function SpeedModSort(tab)
local xMods = {} local xMods = {}
local mMods = {}
local cMods = {} local cMods = {}
--local mMods = {}
-- convert to numbers so sorting works: -- convert to numbers so sorting works:
for i=1,#tab do for i=1,#tab do
@@ -159,10 +159,10 @@ local function SpeedModSort(tab)
if string.find(tab[i],"C%d") then if string.find(tab[i],"C%d") then
typ = cMods typ = cMods
val = string.gsub(tab[i], "C", "") val = string.gsub(tab[i], "C", "")
elseif string.find(tab[i],"M%d") then -- support both cases because I want to hit people -freem
Trace("[CustomSpeedMods] OpenITG's M-Mods are not supported yet in sm-ssc.") elseif string.find(tab[i],"m%d") or string.find(tab[i],"M%d") then
--typ = mMods typ = mMods
--val = string.gsub(tab[i], "M", "") val = string.gsub(tab[i], "m", "")
else else
typ = xMods typ = xMods
val = string.gsub(tab[i], "x", "") val = string.gsub(tab[i], "x", "")
@@ -175,7 +175,7 @@ local function SpeedModSort(tab)
-- sort cMods -- sort cMods
cMods = AnonSort(cMods) cMods = AnonSort(cMods)
-- sort mMods -- sort mMods
--mMods = AnonSort(mMods) mMods = AnonSort(mMods)
local fin = {} local fin = {}
-- convert it back to a string since that's what it expects -- convert it back to a string since that's what it expects
for i=1,#xMods do for i=1,#xMods do
@@ -184,7 +184,9 @@ local function SpeedModSort(tab)
for i=1,#cMods do for i=1,#cMods do
table.insert(fin, "C"..cMods[i]) table.insert(fin, "C"..cMods[i])
end end
--for i=1,#mMods do table.insert(fin, "M"..mMods[i]); end; for i=1,#mMods do
table.insert(fin, "m"..mMods[i])
end
return fin return fin
end end
@@ -295,7 +297,7 @@ function SpeedMods()
end end
--[[ --[[
Copyright © 2008-2009 AJ Kelly/KKI Labs. Copyright © 2008-2011 AJ Kelly/KKI Labs.
Use freely, so long this notice and the above documentation remains. Use freely, so long this notice and the above documentation remains.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+10 -2
View File
@@ -11,7 +11,7 @@ function GetExtraColorThreshold()
sGame = GAMESTATE:GetCurrentGame():GetName() sGame = GAMESTATE:GetCurrentGame():GetName()
local Modes = { local Modes = {
dance = 10, dance = 10,
pump = 15, pump = 21,
beat = 12, beat = 12,
kb7 = 10, kb7 = 10,
para = 10, para = 10,
@@ -105,6 +105,10 @@ function ComboPerRow()
end end
end end
function EvalUsesCheckpointsWithJudgments()
return (GAMESTATE:GetCurrentGame():GetName() == "pump") and true or false
end
-- these need cleanup really. -- these need cleanup really.
function HitCombo() function HitCombo()
sGame = GAMESTATE:GetCurrentGame():GetName() sGame = GAMESTATE:GetCurrentGame():GetName()
@@ -183,7 +187,11 @@ function HoldTiming()
end end
function ShowHoldJudgments() function ShowHoldJudgments()
return not GAMESTATE:GetCurrentGame():GetName() == "pump" if GAMESTATE:GetCurrentGame():GetName() == "pump" then
return false
else
return true
end
end end
function HoldHeadStep() function HoldHeadStep()
+12
View File
@@ -247,3 +247,15 @@ function Hue(color,newHue)
c.Hue = newHue c.Hue = newHue
return HSVToColor(c) return HSVToColor(c)
end; end;
function Alpha(color,percent)
local c = ColorToHSV(color);
-- error checking
if percent < 0 then
percent = 0.0;
elseif percent > 1 then
percent = 1.0;
end;
c.Alpha = percent;
return HSVToColor(c);
end;
@@ -148,7 +148,9 @@ end
-- MaskSource([clearzbuffer]) -- MaskSource([clearzbuffer])
-- Sets an actor up as the source for a mask. Clears zBuffer by default. -- Sets an actor up as the source for a mask. Clears zBuffer by default.
function Actor:MaskSource(noclear) function Actor:MaskSource(noclear)
self:clearzbuffer(noclear or true) if noclear == true then
self:clearzbuffer(true)
end
self:zwrite(true) self:zwrite(true)
self:blend('BlendMode_NoEffect') self:blend('BlendMode_NoEffect')
end end
@@ -224,10 +226,10 @@ end;
--[[ ----------------------------------------------------------------------- ]] --[[ ----------------------------------------------------------------------- ]]
--[[ profile stuff ]] --[[ profile stuff ]]
-- Profile(pn) -- GetPlayerOrMachineProfile(pn)
-- This returns a profile, preferably a player one. -- This returns a profile, preferably a player one.
-- If there isn't one, we fall back on the machine profile. -- If there isn't one, we fall back on the machine profile.
function Profile(pn) function GetPlayerOrMachineProfile(pn)
if PROFILEMAN:IsPersistentProfile(pn) then if PROFILEMAN:IsPersistentProfile(pn) then
-- player profile -- player profile
return PROFILEMAN:GetProfile(pn); return PROFILEMAN:GetProfile(pn);
+1 -1
View File
@@ -150,7 +150,7 @@ function InitUserPrefs()
end; end;
function UserPrefScoringMode() function UserPrefScoringMode()
local baseChoices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR Extreme', 'DDR SuperNOVA', 'DDR SuperNOVA 2', 'MIGS' }; --'[SSC] Radar Master' local baseChoices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR Extreme', 'DDR SuperNOVA', 'DDR SuperNOVA 2', 'MIGS', 'HYBRID' }; --'[SSC] Radar Master'
local t = { local t = {
Name = "UserPrefScoringMode"; Name = "UserPrefScoringMode";
LayoutType = "ShowAllInRow"; LayoutType = "ShowAllInRow";
+84 -19
View File
@@ -67,7 +67,7 @@ r['DDR 4thMIX'] = function(params, pss)
local capScore = 999999999; local capScore = 999999999;
local bestPoints = scoreLookupTable['TapNoteScore_W1']; local bestPoints = scoreLookupTable['TapNoteScore_W1'];
local bestCombo = bestPoints and comboBonusForThisStep or 0; local bestCombo = bestPoints and comboBonusForThisStep or 0;
pss:SeCurMaxScore(clamp(pss:GeCurMaxScore()+bestPoints+bestCombo,0,capScore)); pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+bestPoints+bestCombo,0,capScore));
local localPoints = scoreLookupTable[params.TapNoteScore]; local localPoints = scoreLookupTable[params.TapNoteScore];
local localCombo = localPoints and comboBonusForThisStep or 0; local localCombo = localPoints and comboBonusForThisStep or 0;
pss:SetScore(clamp(pss:GetScore()+localPoints+localCombo,0,capScore)); pss:SetScore(clamp(pss:GetScore()+localPoints+localCombo,0,capScore));
@@ -84,14 +84,19 @@ r['DDR Extreme'] = function(params, pss)
setmetatable(judgmentBase, ZeroIfNotFound); setmetatable(judgmentBase, ZeroIfNotFound);
local steps = GAMESTATE:GetCurrentSteps(params.Player); local steps = GAMESTATE:GetCurrentSteps(params.Player);
local radarValues = steps:GetRadarValues(params.Player); local radarValues = steps:GetRadarValues(params.Player);
local baseScore = (steps:IsAnEdit() and local meter = steps:GetMeter();
5 or steps:GetMeter()) * 1000000; if (steps:IsAnEdit()) then
meter = 5;
elseif (meter < 1) then
meter = 1;
elseif (meter > 10) then
meter = 10;
end;
local baseScore = meter * 1000000;
if (GAMESTATE:GetCurrentSong():IsMarathon()) then if (GAMESTATE:GetCurrentSong():IsMarathon()) then
baseScore = baseScore * 3; baseScore = baseScore * 3;
else elseif (GAMESTATE:GetCurrentSong():IsLong()) then
if (GAMESTATE:GetCurrentSong():IsLong()) then baseScore = baseScore * 2;
baseScore = baseScore * 2;
end;
end; end;
local totalItems = GetTotalItems(radarValues); local totalItems = GetTotalItems(radarValues);
local singleStep = (1 + totalItems) * totalItems / 2; local singleStep = (1 + totalItems) * totalItems / 2;
@@ -122,6 +127,47 @@ r['DDR Extreme'] = function(params, pss)
Shared.CurrentStep[pn] = 0; -- Reset for the next song. Shared.CurrentStep[pn] = 0; -- Reset for the next song.
end; end;
end; end;
-----------------------------------------------------------
--HYBRID Scoring
-----------------------------------------------------------
r['HYBRID'] = function(params, pss)
local multLookup =
{
['TapNoteScore_W1'] = 10,
['TapNoteScore_W2'] = 9,
['TapNoteScore_W3'] = 5
};
setmetatable(multLookup, ZeroIfNotFound);
local radarValues = GetDirectRadar(params.Player);
local totalItems = GetTotalItems(radarValues);
-- 1+2+3+...+totalItems の値
local sTotal = (totalItems+1)*totalItems/2;
-- [en] Score for one song
-- [ja] 1つあたりのスコア
local sOne = math.floor(100000000/sTotal);
-- [ja] 端数は最後の1ステップで加算するのでその値を取得
local sLast = 100000000-(sOne*sTotal);
-- [ja] 現在何個目の譜面か
pss:SetCurMaxScore(pss:GetCurMaxScore()+1);
-- [en] current score
-- [ja] 今回のスコア
local vScore = sOne*(pss:GetCurMaxScore());
if (params.HoldNoteScore == 'HoldNoteScore_Held') then
vScore = vScore;
else
if (params.HoldNoteScore == 'HoldNoteScore_LetGo') then
vScore = 0;
else
vScore = vScore*multLookup[params.TapNoteScore]/10;
end;
end;
if ((vScore > 0) and (pss:GetCurMaxScore() == totalItems)) then
vScore = vScore+sLast;
end;
pss:SetScore(pss:GetScore()+vScore);
end;
----------------------------------------------------------- -----------------------------------------------------------
--DDR SuperNOVA(-esque) scoring --DDR SuperNOVA(-esque) scoring
----------------------------------------------------------- -----------------------------------------------------------
@@ -148,24 +194,43 @@ end;
r['DDR SuperNOVA 2'] = function(params, pss) r['DDR SuperNOVA 2'] = function(params, pss)
local multLookup = local multLookup =
{ {
['TapNoteScore_W1'] = 1, ['TapNoteScore_W1'] = 10,
['TapNoteScore_W2'] = 1, ['TapNoteScore_W2'] = 10,
['TapNoteScore_W3'] = 0.5 ['TapNoteScore_W3'] = 5
}; };
setmetatable(multLookup, ZeroIfNotFound); setmetatable(multLookup, ZeroIfNotFound);
local radarValues = GetDirectRadar(params.Player); local radarValues = GetDirectRadar(params.Player);
local totalItems = GetTotalItems(radarValues); local totalItems = GetTotalItems(radarValues);
local base = 100000 / totalItems;
local hold = base * (params.HoldNoteScore == 'HoldNoteScore_Held' and 1 or 0); -- handle holds
local maxScore = (base * multLookup['TapNoteScore_W1']) + hold; local maxAdd = 0;
pss:SetCurMaxScore(pss:GetCurMaxScore() + (math.round(maxScore) * 10)); if params.HoldNoteScore == 'HoldNoteScore_Held' then
local preW1 = base * multLookup[params.TapNoteScore]; maxAdd = 10;
local buildScore = (preW1 - (IsW1Allowed(params.TapNoteScore) and 10 or 0)) + hold; elseif params.HoldNoteScore == 'HoldNoteScore_LetGo' then
pss:SetScore(pss:GetScore() + (math.round(buildScore) * 10)); maxAdd = 0;
else
maxAdd = multLookup[params.TapNoteScore];
if params.TapNoteScore == 'TapNoteScore_W2' or 'TapNoteScore_W3' then
-- [ja] 超最終手段
pss:SetCurMaxScore( pss:GetCurMaxScore() + 1000000 );
end;
end;
pss:SetCurMaxScore(pss:GetCurMaxScore() + maxAdd);
--[[
[ja] パフェ数取得 この方法で取得するとロングノートの場合2つカウントされる そのため使えない
pss:GetTapNoteScores('TapNoteScore_W2')
仕方がないのでパフェ数を 1000000 単位で GetCurMaxScore に記録
その後、情報を分解して取り出す
--]]
local vScore = pss:GetCurMaxScore() % 1000000
local vSub = math.floor( pss:GetCurMaxScore()/1000000 )
pss:SetScore( math.floor(10000*vScore/totalItems) * 10 - (vSub*10) );
end; end;
----------------------------------------------------------- -----------------------------------------------------------
--Radar Master (doesn't work in 1.2.1, disabled) --Radar Master (doesn't work in sm-ssc 1.2.1, disabled)
--don't try to "fix it up", either. you *cannot* make it work in 1.2.1. --todo: get this working with StepMania 5
----------------------------------------------------------- -----------------------------------------------------------
r['[SSC] Radar Master'] = function(params, pss) r['[SSC] Radar Master'] = function(params, pss)
local masterTable = { local masterTable = {
+118 -118
View File
@@ -28,7 +28,7 @@ ScreenHeight=480
AutoSetStyle=GetUserPrefB("UserPrefAutoSetStyle") AutoSetStyle=GetUserPrefB("UserPrefAutoSetStyle")
# Default modifiers and noteskin. # Default modifiers and noteskin.
DefaultModifiers="default,1.5x" DefaultModifiers="1x"
DefaultNoteSkinName="default" DefaultNoteSkinName="default"
# Difficulties to show. Useful for custom games where you want to hide these. # Difficulties to show. Useful for custom games where you want to hide these.
@@ -124,6 +124,8 @@ ExtraColor=color("#ff0000") -- red
[UnlockManager] [UnlockManager]
# Unlock specific things. # Unlock specific things.
AutoLockChallengeSteps=false AutoLockChallengeSteps=false
AutoLockEditSteps=false
SongsNotAdditional=true
UnlockNames="" UnlockNames=""
# useful commands: # useful commands:
@@ -200,6 +202,8 @@ BeatOffsetHeight=15
BeatPIHeight=2 BeatPIHeight=2
MiniPercentBase=0.5 MiniPercentBase=0.5
MiniPercentGate=1 MiniPercentGate=1
TinyPercentBase=0.5
TinyPercentGate=1
DizzyHoldHeads=false DizzyHoldHeads=false
QuantizeArrowYPosition=false QuantizeArrowYPosition=false
@@ -411,72 +415,7 @@ SortLevel5Color=color("0,1,0,1")
# Custom system that lets you rename certain classes of difficulties to # Custom system that lets you rename certain classes of difficulties to
# something else. Mostly for custom games and game emulation, PIU for example. # something else. Mostly for custom games and game emulation, PIU for example.
# The names of which Names=
Names="PumpHard,PumpFreestyle,PumpNightmare,PumpHalfDouble,PumpRoutine"
# Names="DanceCoupleBeginner,DanceCoupleEasy,DanceCoupleMedium,DanceCoupleHard,DanceCoupleExpert,PumpHard"
# That get remapped to
DanceCoupleBeginnerStepsType="StepsType_Dance_Couple"
DanceCoupleBeginnerDifficulty="Difficulty_Beginner"
DanceCoupleBeginnerCourseType=nil
DanceCoupleBeginnerString="Beginner"
#--#
DanceCoupleEasyStepsType="StepsType_Dance_Couple"
DanceCoupleEasyDifficulty="Difficulty_Easy"
DanceCoupleEasyCourseType=nil
DanceCoupleEasyString="Easy"
#--#
DanceCoupleMediumStepsType="StepsType_Dance_Couple"
DanceCoupleMediumDifficulty="Difficulty_Medium"
DanceCoupleMediumCourseType=nil
DanceCoupleMediumString="Medium"
#--#
DanceCoupleHardStepsType="StepsType_Dance_Couple"
DanceCoupleHardDifficulty="Difficulty_Hard"
DanceCoupleHardCourseType=nil
DanceCoupleHardString="Hard"
#--#
DanceCoupleExpertStepsType="StepsType_Dance_Couple"
DanceCoupleExpertDifficulty="Difficulty_Expert"
DanceCoupleExpertCourseType=nil
DanceCoupleExpertString="Expert"
#===#
PumpHardStepsType="StepsType_Pump_Single"
PumpHardDifficulty="Difficulty_Hard"
PumpHardCourseType=nil
PumpHardString="Crazy"
#--#
PumpFreestyleStepsType="StepsType_Pump_Double"
PumpFreestyleDifficulty="Difficulty_Medium"
PumpFreestyleCourseType=nil
PumpFreestyleString="Freestyle"
#--#
PumpNightmareStepsType="StepsType_Pump_Double"
PumpNightmareDifficulty="Difficulty_Hard"
PumpNightmareCourseType=nil
PumpNightmareString="Nightmare"
#--#
PumpHalfDoubleStepsType="StepsType_Pump_Halfdouble"
PumpHalfDoubleDifficulty="Difficulty_Medium"
PumpHalfDoubleCourseType=nil
PumpHalfDoubleString="HalfDouble"
#--#
PumpRoutineStepsType="StepsType_Pump_Routine"
PumpRoutineDifficulty="Difficulty_Medium"
PumpRoutineCourseType=nil
PumpRoutineString="Routine"
#
# Difficulty_Beginner-StepsType_Pump_Single=Easy
# Difficulty_Easy-StepsType_Pump_Single=Normal
# Difficulty_Medium-StepsType_Pump_Single=Hard
# Difficulty_Hard-StepsType_Pump_Single=Crazy
# Difficulty_Medium-StepsType_Pump_Halfdouble=Half-Double
# Difficulty_Medium-StepsType_Pump_Double=Freestyle
# Difficulty_Hard-StepsType_Pump_Double=Nightmare
# Difficulty_Edit-StepsType_Pump_Single=Edit
# Difficulty_Edit-StepsType_Pump_Halfdouble=Edit
# Difficulty_Edit-StepsType_Pump_Double=Edit
# Course=Progressive
[DifficultyList] [DifficultyList]
# A list that shows difficulties in a song. # A list that shows difficulties in a song.
@@ -606,7 +545,19 @@ OverY=0
[LifeMeterBattery] [LifeMeterBattery]
# The bar that shows up in Oni mode. # The bar that shows up in Oni mode.
# any score below this one will cause you to lose a life.
MinScoreToKeepLife='TapNoteScore_W3'
# how many lives you'll lose upon doing so.
SubtractLives=1
# how many lives you'll lose hitting a mine
MinesSubtractLives=1
# how many lives a successful hold will net you.
HeldAddLives=0
# how many lives an unsuccessful hold will cost you.
LetGoSubtractLives=1
# How many lives trigger the "Danger" state.
DangerThreshold=1
# How long it flashes when you lose a life. # How long it flashes when you lose a life.
BatteryBlinkTime=1.2 BatteryBlinkTime=1.2
# Where the batteries are # Where the batteries are
@@ -614,11 +565,16 @@ BatteryP1X=-92
BatteryP1Y=2 BatteryP1Y=2
BatteryP2X=92 BatteryP2X=92
BatteryP2Y=2 BatteryP2Y=2
# Where your live count is # Where your life count is
NumLivesFormat="x%d"
NumLivesP1X=-92 NumLivesP1X=-92
NumLivesP1Y=0 NumLivesP1Y=0
NumLivesP1GainLifeCommand=
NumLivesP1LoseLifeCommand=zoom,1.5;linear,0.15;zoom,1
NumLivesP2X=92 NumLivesP2X=92
NumLivesP2Y=0 NumLivesP2Y=0
NumLivesP2GainLifeCommand=
NumLivesP2LoseLifeCommand=zoom,1.5;linear,0.15;zoom,1
[LifeMeterBattery Percent] [LifeMeterBattery Percent]
# The percentage on the bar. I wouldn't even bother changing this, because I # The percentage on the bar. I wouldn't even bother changing this, because I
@@ -1012,8 +968,8 @@ StopOffsetX=50
DelayOffsetX=120 DelayOffsetX=120
WarpOffsetX=90 WarpOffsetX=90
TimeSignatureOffsetX=30 TimeSignatureOffsetX=30
TickcountOffsetX=70 TickcountOffsetX=50
ComboOffsetX=50 ComboOffsetX=70
LabelOffsetX=130 LabelOffsetX=130
SpeedOffsetX=30 SpeedOffsetX=30
ScrollOffsetX=100 ScrollOffsetX=100
@@ -1067,7 +1023,8 @@ CheckpointsUseTickcounts=(GAMESTATE:GetCurrentGame():GetName() == "pump")
; deprecated? ; deprecated?
CheckpointsUseTimeSignatures=false CheckpointsUseTimeSignatures=false
CheckpointsTapsSeparateJudgment=CheckpointsTapsSeparateJudgment() CheckpointsTapsSeparateJudgment=CheckpointsTapsSeparateJudgment()
CheckpointsFlashOnHold=false ; someone misunderstood me :x -Daisu
CheckpointsFlashOnHold=(GAMESTATE:GetCurrentGame():GetName() == "pump")
ImmediateHoldLetGo=ImmediateHoldLetGo() ImmediateHoldLetGo=ImmediateHoldLetGo()
RequireStepOnHoldHeads=HoldHeadStep() RequireStepOnHoldHeads=HoldHeadStep()
RequireStepOnMines=false RequireStepOnMines=false
@@ -1081,6 +1038,7 @@ ComboStoppedAt=50
AttackRunTimeRandom=6 AttackRunTimeRandom=6
AttackRunTimeMine=7 AttackRunTimeMine=7
BattleRaveMirror=true BattleRaveMirror=true
MModHighCap=600
[PlayerOptions] [PlayerOptions]
RandomSpeedChance=0.2 RandomSpeedChance=0.2
@@ -1527,7 +1485,7 @@ AllowRepeatingInput=false
PreSwitchPageSeconds=0 PreSwitchPageSeconds=0
PostSwitchPageSeconds=0 PostSwitchPageSeconds=0
ScrollerSecondsPerItem=0 ScrollerSecondsPerItem=0
ScrollerNumItemsToDraw=1024 ScrollerNumItemsToDraw=16
ScrollerTransform=function(self,offset,itemIndex,numItems) end ScrollerTransform=function(self,offset,itemIndex,numItems) end
ScrollerSubdivisions=1 ScrollerSubdivisions=1
OverrideSleepAfterTweenOffSeconds=false OverrideSleepAfterTweenOffSeconds=false
@@ -1791,8 +1749,7 @@ CodeUp="+MenuUp"
CodeUp2="+Up" CodeUp2="+Up"
CodeDown="+MenuDown" CodeDown="+MenuDown"
CodeDown2="+Down" CodeDown2="+Down"
# Holding Start let us skip ( annoying ) CodeStart="+Start"
CodeStart="~Start,+Start"
CodeBack="Back" CodeBack="Back"
CodeCenter="Center" CodeCenter="Center"
CodeDownLeft="DownLeft" CodeDownLeft="DownLeft"
@@ -1817,6 +1774,7 @@ ChoiceDouble="name,Double;style,double;text,Double;screen,"..Branch.AfterSelectP
ChoiceSolo="name,Solo;style,solo;text,Solo;screen,"..Branch.AfterSelectPlayMode() ChoiceSolo="name,Solo;style,solo;text,Solo;screen,"..Branch.AfterSelectPlayMode()
ChoiceVersus="name,Versus;style,versus;text,Versus;screen,"..Branch.AfterSelectPlayMode() ChoiceVersus="name,Versus;style,versus;text,Versus;screen,"..Branch.AfterSelectPlayMode()
ChoiceCouple="name,Couple;style,couple;text,Couple;screen,"..Branch.AfterSelectPlayMode() ChoiceCouple="name,Couple;style,couple;text,Couple;screen,"..Branch.AfterSelectPlayMode()
ChoiceRoutine="name,Routine;style,routine;text,Routine;screen,"..Branch.AfterSelectPlayMode()
ChoiceHalfDouble="name,HalfDouble;style,halfdouble;text,HalfDouble;screen,"..Branch.AfterSelectPlayMode() ChoiceHalfDouble="name,HalfDouble;style,halfdouble;text,HalfDouble;screen,"..Branch.AfterSelectPlayMode()
Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectPlayMode() Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectPlayMode()
Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectPlayMode() Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectPlayMode()
@@ -2064,7 +2022,8 @@ ForceTimer=true
TimerMetricsGroup="MenuTimerNoSound" TimerMetricsGroup="MenuTimerNoSound"
TimerSeconds=5 TimerSeconds=5
# #
ScreenBeginCommand=%SetFail
#
[ScreenOptions] [ScreenOptions]
Fallback="ScreenWithMenuElements" Fallback="ScreenWithMenuElements"
NavigationMode="normal" NavigationMode="normal"
@@ -2134,6 +2093,7 @@ OptionRowExitMetricsGroup="OptionRowExit"
Fallback="ScreenOptions" Fallback="ScreenOptions"
Class="ScreenOptionsMaster" Class="ScreenOptionsMaster"
NoteSkinSortOrder="" NoteSkinSortOrder=""
StepsUseChartName=false
# ExitItem is an exit row with the "Exit" text as a menu item; ExitTitle # ExitItem is an exit row with the "Exit" text as a menu item; ExitTitle
# uses the menu title. # uses the menu title.
@@ -2177,22 +2137,23 @@ Accel,5="mod,boomerang;name,Boomerang"
# Accel,5="mod,expand;name,Expand" # Accel,5="mod,expand;name,Expand"
# Accel,6="mod,boomerang;name,Boomerang" # Accel,6="mod,boomerang;name,Boomerang"
Effect="14;selectmultiple" Effect="15;selectmultiple"
EffectDefault="mod,no drunk,no dizzy,,no twirl,no roll,no confusion,no mini,no tiny,no flip,no invert,no tornado,no tipsy,no bumpy,no beat,no xmode" EffectDefault="mod,no drunk,no dizzy,,no twirl,no roll,no confusion,no mini,no tiny,no flip,no invert,no tornado,no tipsy,no bumpy,no beat,no xmode"
Effect,1="mod,drunk;name,Drunk" Effect,1="mod,drunk;name,Drunk"
Effect,2="mod,dizzy;name,Dizzy" Effect,2="mod,dizzy;name,Dizzy"
Effect,3="mod,twirl;name,Twirl" Effect,3="mod,twirl;name,Twirl"
Effect,4="mod,roll;name,Roll" Effect,4="mod,roll;name,Roll"
Effect,5="mod,confusion;name,Confusion" Effect,5="mod,confusion;name,Confusion"
Effect,6="mod,tiny;name,Tiny" Effect,6="mod,mini;name,Mini"
Effect,7="mod,-100% mini;name,Big" Effect,7="mod,tiny;name,Tiny"
Effect,8="mod,flip;name,Flip" Effect,8="mod,-100% mini;name,Big"
Effect,9="mod,invert;name,Invert" Effect,9="mod,flip;name,Flip"
Effect,10="mod,tornado;name,Tornado" Effect,10="mod,invert;name,Invert"
Effect,11="mod,tipsy;name,Tipsy" Effect,11="mod,tornado;name,Tornado"
Effect,12="mod,bumpy;name,Bumpy" Effect,12="mod,tipsy;name,Tipsy"
Effect,13="mod,beat;name,Beat" Effect,13="mod,bumpy;name,Bumpy"
Effect,14="mod,45% xmode;name,XMode" Effect,14="mod,beat;name,Beat"
Effect,15="mod,45% xmode;name,XMode"
EffectsReceptor="selectmultiple" EffectsReceptor="selectmultiple"
EffectsReceptorDefault="" EffectsReceptorDefault=""
@@ -2335,18 +2296,11 @@ Mines,2="name,On"
Mines,3="mod,mines;name,Add" Mines,3="mod,mines;name,Add"
Mines,4="mod,attackmines;name,AttackMines" Mines,4="mod,attackmines;name,AttackMines"
# Mines="4"
# MinesDefault="mod,no nomines,no mines, no attackmines"
# Mines,1="mod,nomines;name,Off"
# Mines,2="name,On"
# Mines,3="mod,mines;name,Add"
# Mines,4="mod,attackmines;name,AttackMines"
Attacks="3" Attacks="3"
AttacksDefault="mod,songattacks" AttacksDefault="mod,no randomattacks, no noattacks"
Attacks,3="mod,no randomattacks,no songattacks;name,Off" Attacks,1="name,On"
Attacks,2="mod,randomattacks;name,RandomAttacks" Attacks,2="mod,randomattacks;name,RandomAttacks"
Attacks,1="name,SongAttacks" Attacks,3="mod,noattacks;name,Off"
PlayerAutoPlay="2" PlayerAutoPlay="2"
PlayerAutoPlayDefault="mod,no playerautoplay" PlayerAutoPlayDefault="mod,no playerautoplay"
@@ -2357,7 +2311,7 @@ Hide="3;selectmultiple"
HideDefault="mod,no dark,no blind,no cover" HideDefault="mod,no dark,no blind,no cover"
Hide,1="mod,dark;name,Dark" Hide,1="mod,dark;name,Dark"
Hide,2="mod,blind;name,Blind" Hide,2="mod,blind;name,Blind"
Hide,3="mod,60% cover;name,Cover" Hide,3="mod,80% cover;name,Cover"
# Hide="3" # Hide="3"
# HideDefault="mod,no dark,no blind" # HideDefault="mod,no dark,no blind"
@@ -2373,12 +2327,6 @@ Persp,3="mod,space;name,Space"
Persp,4="mod,hallway;name,Hallway" Persp,4="mod,hallway;name,Hallway"
Persp,5="mod,distant;name,Distant" Persp,5="mod,distant;name,Distant"
ScoreDisplay="3"
ScoreDisplayDefault="mod,addscore"
ScoreDisplay,1="mod,addscore;name,Add"
ScoreDisplay,2="mod,subtractscore;name,Subtract"
ScoreDisplay,3="mod,averagescore;name,Average"
# Song options # Song options
# LifeType="3;together" # LifeType="3;together"
LifeType=(GAMESTATE:IsCourseMode() and 3 or 2)..";together" LifeType=(GAMESTATE:IsCourseMode() and 3 or 2)..";together"
@@ -2507,6 +2455,7 @@ LineHighlightP2ChangeToExitCommand=
CursorOnCommand=visible,false CursorOnCommand=visible,false
[ScreenOptionsService] [ScreenOptionsService]
AllowOperatorMenuButton=false
Class="ScreenOptionsMaster" Class="ScreenOptionsMaster"
Fallback="ScreenOptionsSimpleService" Fallback="ScreenOptionsSimpleService"
# #
@@ -2884,7 +2833,6 @@ Line11="list,Attacks"
Line12="list,PlayerAutoPlay" Line12="list,PlayerAutoPlay"
Line13="list,Hide" Line13="list,Hide"
Line14="list,Persp" Line14="list,Persp"
Line15="list,ScoreDisplay"
Line16="list,Steps" Line16="list,Steps"
Line17="list,Characters" Line17="list,Characters"
@@ -3276,10 +3224,13 @@ PlayerType="PlayerShared"
Class="ScreenEvaluation" Class="ScreenEvaluation"
Fallback="ScreenWithMenuElements" Fallback="ScreenWithMenuElements"
# #
NextScreen=Branch.AfterEvaluation()
PrevScreen=Branch.AfterEvaluation()
#
LightsMode="LightsMode_MenuStartOnly" LightsMode="LightsMode_MenuStartOnly"
# #
Summary=false Summary=false
CheckpointsWithJudgments=false CheckpointsWithJudgments=EvalUsesCheckpointsWithJudgments()
# #
TimerSeconds=20 TimerSeconds=20
# #
@@ -3361,30 +3312,34 @@ DetailLineFormat="%3d/%3d"
[ScreenEvaluationNormal] [ScreenEvaluationNormal]
Fallback="ScreenEvaluation" Fallback="ScreenEvaluation"
# #
NextScreen="ScreenProfileSave" NextScreen=Branch.AfterEvaluation()
PrevScreen=Branch.AfterEvaluation()
[ScreenEvaluationSummary] [ScreenEvaluationSummary]
Fallback="ScreenEvaluation" Fallback="ScreenEvaluation"
# #
NextScreen="ScreenSelectMusic" NextScreen=Branch.AfterSummary()
# #
Summary=true Summary=true
#
[ScreenNameEntry] [ScreenNameEntry]
# !!! # # !!! #
Class="ScreenNameEntry" Class="ScreenNameEntry"
Fallback="ScreenWithMenuElementsBlank" Fallback="ScreenWithMenuElementsBlank"
#
TimerX=SCREEN_CENTER_X+0 TimerX=SCREEN_CENTER_X+0
TimerY=SCREEN_CENTER_Y-210 TimerY=SCREEN_CENTER_Y-210
#
CategoryY=SCREEN_CENTER_Y+190 CategoryY=SCREEN_CENTER_Y+190
CategoryZoom=0.7 CategoryZoom=0.7
#
CharsZoomSmall=1.0 CharsZoomSmall=1.0
CharsZoomLarge=1.5 CharsZoomLarge=1.5
CharsSpacingY=40 CharsSpacingY=40
CharsChoices=" ABCDEFGHIJKLMNOPQRSTUVWXYZ" CharsChoices=" ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ScrollingCharsCommand=diffuse,0.6,0.8,0.8,1 ScrollingCharsCommand=diffuse,0.6,0.8,0.8,1
SelectedCharsCommand=diffuse,0.8,1,1,1 SelectedCharsCommand=diffuse,0.8,1,1,1
#
ReceptorArrowsY=SCREEN_CENTER_Y-140 ReceptorArrowsY=SCREEN_CENTER_Y-140
NumCharsToDrawBehind=2 NumCharsToDrawBehind=2
NumCharsToDrawTotal=10 NumCharsToDrawTotal=10
@@ -3394,7 +3349,9 @@ TimerSeconds=24
TimerStealth=false TimerStealth=false
ShowStyleIcon=false ShowStyleIcon=false
MaxRankingNameLength=4 MaxRankingNameLength=4
#
NextScreen="ScreenProfileSave" NextScreen="ScreenProfileSave"
#
PlayerP1OnePlayerOneSideX=SCREEN_CENTER_X-160 PlayerP1OnePlayerOneSideX=SCREEN_CENTER_X-160
PlayerP2OnePlayerOneSideX=SCREEN_CENTER_X+160 PlayerP2OnePlayerOneSideX=SCREEN_CENTER_X+160
PlayerP1TwoPlayersTwoSidesX=SCREEN_CENTER_X-160 PlayerP1TwoPlayersTwoSidesX=SCREEN_CENTER_X-160
@@ -3402,6 +3359,31 @@ PlayerP2TwoPlayersTwoSidesX=SCREEN_CENTER_X+160
PlayerP1OnePlayerTwoSidesX=SCREEN_CENTER_X PlayerP1OnePlayerTwoSidesX=SCREEN_CENTER_X
PlayerP2OnePlayerTwoSidesX=SCREEN_CENTER_X PlayerP2OnePlayerTwoSidesX=SCREEN_CENTER_X
[ScreenNameEntryTraditional]
Class="ScreenNameEntryTraditional"
Fallback="ScreenWithMenuElements"
#
TimerSeconds=30
#
RepeatRate=15
RepeatDelay=1/4
#
NextScreen="ScreenProfileSaveSummary"
#
HelpText="Enter your name!"
#
CancelTransitionsOut=true
MaxRankingNameLength=4
CodeNames="Backspace,Left,Right,NextRow1=NextRow,NextRow2=NextRow,PrevRow,JumpToEnter,Enter"
CodeLeft="+MenuLeft"
CodeRight="+MenuRight"
CodePrevRow="+MenuUp"
CodeNextRow1="+MenuDown"
CodeNextRow2="Select,~Select"
CodeBackspace="@Select-MenuLeft"
CodeJumpToEnter="@Select-Start"
CodeEnter="Start"
[ScreenProfileSave] [ScreenProfileSave]
Class="ScreenProfileSave" Class="ScreenProfileSave"
Fallback="ScreenWithMenuElementsBlank" Fallback="ScreenWithMenuElementsBlank"
@@ -3414,8 +3396,8 @@ TimerSeconds=-1
[ScreenProfileSaveSummary] [ScreenProfileSaveSummary]
Fallback="ScreenProfileSave" Fallback="ScreenProfileSave"
# #
NextScreen="ScreenGameOver" NextScreen=Branch.AfterSaveSummary()
PrevScreen="ScreenGameOver" PrevScreen=Branch.AfterSaveSummary()
[ScreenGameOver] [ScreenGameOver]
Class="ScreenEnding" Class="ScreenEnding"
@@ -3638,19 +3620,22 @@ PlayRecordHelpOnCommand=halign,0;valign,0;shadowlength,1
LoopOnChartEnd=true LoopOnChartEnd=true
CurrentBeatFormat="%s:\n %.5f\n" CurrentBeatFormat="%s:\n %.6f\n"
CurrentSecondFormat="%s:\n %.5f\n" CurrentSecondFormat="%s:\n %.6f\n"
SnapToFormat="%s:\n %s\n" SnapToFormat="%s: %s\n"
SelectionBeatBeginFormat="%s:\n %.5f" SelectionBeatBeginFormat="%s:\n %.6f"
SelectionBeatUnfinishedFormat=" ...\n" SelectionBeatUnfinishedFormat=" ...\n"
SelectionBeatEndFormat="-%.5f\n" SelectionBeatEndFormat="-%.6f\n"
DifficultyFormat="%s:\n %s\n" DifficultyFormat="%s:\n %s\n"
RoutinePlayerFormat="%s:\n %d\n" RoutinePlayerFormat="%s: %d\n"
DescriptionFormat="%s:\n %s\n" DescriptionFormat="%s:\n %s\n"
StepAuthorFormat="%s:\n %s\n"
ChartNameFormat="%s:\n %s\n"
ChartStyleFormat="%s:\n %s\n" ChartStyleFormat="%s:\n %s\n"
MainTitleFormat="%s:\n %s\n" MainTitleFormat="%s:\n %s\n"
SubtitleFormat="%s:\n %s\n" SubtitleFormat="%s:\n %s\n"
TapNoteTypeFormat="%s: %s\n" TapNoteTypeFormat="%s: %s\n"
SegmentTypeFormat="%s: %s\n"
NumStepsFormat="%s: %d\n" NumStepsFormat="%s: %d\n"
NumJumpsFormat="%s: %d\n" NumJumpsFormat="%s: %d\n"
NumHoldsFormat="%s: %d\n" NumHoldsFormat="%s: %d\n"
@@ -3659,10 +3644,18 @@ NumHandsFormat="%s: %d\n"
NumRollsFormat="%s: %d\n" NumRollsFormat="%s: %d\n"
NumLiftsFormat="%s: %d\n" NumLiftsFormat="%s: %d\n"
NumFakesFormat="%s: %d\n" NumFakesFormat="%s: %d\n"
NumStepsFormatTwoPlayer="%s: %d/%d\n"
NumJumpsFormatTwoPlayer="%s: %d/%d\n"
NumHoldsFormatTwoPlayer="%s: %d/%d\n"
NumMinesFormatTwoPlayer="%s: %d/%d\n"
NumHandsFormatTwoPlayer="%s: %d/%d\n"
NumRollsFormatTwoPlayer="%s: %d/%d\n"
NumLiftsFormatTwoPlayer="%s: %d/%d\n"
NumFakesFormatTwoPlayer="%s: %d/%d\n"
TimingModeFormat="%s:\n %s\n" TimingModeFormat="%s:\n %s\n"
Beat0OffsetFormat="%s:\n %.5f secs\n" Beat0OffsetFormat="%s:\n %.6f secs\n"
PreviewStartFormat="%s:\n %.5f secs\n" PreviewStartFormat="%s:\n %.6f secs\n"
PreviewLengthFormat="%s:\n %.5f secs\n" PreviewLengthFormat="%s:\n %.6f secs\n"
[ScreenPracticeMenu] [ScreenPracticeMenu]
Fallback="ScreenEditMenu" Fallback="ScreenEditMenu"
@@ -3753,9 +3746,15 @@ TitleX=SCREEN_CENTER_X-80
[ScreenMiniMenuAreaMenu] [ScreenMiniMenuAreaMenu]
Fallback="ScreenMiniMenu" Fallback="ScreenMiniMenu"
[ScreenMiniMenuAlterMenu]
Fallback="ScreenMiniMenu"
[ScreenMiniMenuStepsInformation] [ScreenMiniMenuStepsInformation]
Fallback="ScreenMiniMenu" Fallback="ScreenMiniMenu"
[ScreenMiniMenuStepsData]
Fallback="ScreenMiniMenu"
[ScreenMiniMenuSongInformation] [ScreenMiniMenuSongInformation]
Fallback="ScreenMiniMenu" Fallback="ScreenMiniMenu"
@@ -3949,6 +3948,7 @@ PrevScreen="ScreenNetRoom"
NextScreen="ScreenStageInformation" NextScreen="ScreenStageInformation"
NoSongsScreen=Branch.TitleMenu() NoSongsScreen=Branch.TitleMenu()
RoomSelectScreen="ScreenNetRoom" RoomSelectScreen="ScreenNetRoom"
PlayerOptionsScreen="ScreenPlayerOptions"
Codes="CodeDetectorOnline" Codes="CodeDetectorOnline"
ShowStyleIcon=false ShowStyleIcon=false
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

@@ -1,512 +0,0 @@
local t = Def.ActorFrame{}
local newBPS;
local oldBPS;
-- DECORATIONS ////////////////////////
-- Left Hex Corner Decoration
t[#t+1] = LoadActor("decoration_corner") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1));
OnCommand=cmd(horizalign,left;x,SCREEN_LEFT;vertalign,top;y,SCREEN_TOP;zoomy,0.4;zoomx,0.6;diffusealpha,0.3;blend,Blend.Add);
};
-- Right Hex Corner Decoration
t[#t+1] = LoadActor("decoration_corner") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2));
OnCommand=cmd(horizalign,left;x,SCREEN_RIGHT;vertalign,top;y,SCREEN_TOP;zoomy,0.4;;zoomx,-0.6;diffusealpha,0.3;blend,Blend.Add);
};
-- WAVY LINE (thanks AJ) ////////////////////////
--P1
t[#t+1] = LoadActor("hot_lores") .. {
OnCommand=cmd(diffusealpha,0;visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;texcoordvelocity,0.1,0;queuecommand,"Begin");
BeginCommand=function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false);
else
local move = GAMESTATE:GetSongBPS()/2
if GAMESTATE:GetSongFreeze() then
move = 0;
end
self:texcoordvelocity(move,0);
self:sleep(0.001);
self:queuecommand("Begin");
end;
end;
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_1 then
local lifeP1=params.LifeMeter:GetLife();
if lifeP1>=THEME:GetMetric("LifeMeterBar", "HotValue") then
self:diffusealpha(0.5);
else
self:diffusealpha(0);
end;
end;
end;
};
--P2
t[#t+1] = LoadActor("hot_lores") .. {
OnCommand=cmd(diffusealpha,0;visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,left;x,SCREEN_RIGHT-18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,(SCREEN_WIDTH/2-26)*-1;texcoordvelocity,0.1,0;queuecommand,"Begin");
BeginCommand=function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false);
else
local move = GAMESTATE:GetSongBPS()/2
if GAMESTATE:GetSongFreeze() then
move = 0;
end
self:texcoordvelocity(move,0);
self:sleep(0.001);
self:queuecommand("Begin");
end;
end;
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_2 then
local lifeP2=params.LifeMeter:GetLife();
if lifeP2>=THEME:GetMetric("LifeMeterBar", "HotValue") then
self:diffusealpha(0.5);
else
self:diffusealpha(0);
end;
end;
end;
};
--Double
--customtexturerect,0,0,[PixelsToCoverWidth]/[ImageWidth],[PixelsToCoverHeight]/[ImageHeight]
--I said that I was gonna write it down. thx midi
t[#t+1] = LoadActor("hot_lores") .. {
OnCommand=cmd(diffusealpha,0;horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH-36;texcoordvelocity,0.1,0;customtexturerect,0,0,600/(SCREEN_WIDTH-36),1;queuecommand,"Begin");
BeginCommand=function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
local move = GAMESTATE:GetSongBPS()/2
if GAMESTATE:GetSongFreeze() then
move = 0;
end
self:texcoordvelocity(move,0);
self:sleep(0.001);
self:queuecommand("Begin");
else
self:visible(false);
end;
end;
LifeChangedMessageCommand=function(self,params)
local life=params.LifeMeter:GetLife();
if life>=THEME:GetMetric("LifeMeterBar", "HotValue") then
self:diffusealpha(0.5);
else
self:diffusealpha(0);
end;
end;
};
-- DANGER ////////////////////////
--DANGER P1 single
t[#t+1] = LoadActor("danger") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;zoomy,0.5);
OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On");
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_1 then
local lifeP1 = params.LifeMeter:GetLife();
if lifeP1 <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false);
else
self:visible(true);
end;
else
self:visible(false);
end;
end;
end;
};
--DANGER P2 single
t[#t+1] = LoadActor("danger") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,right;x,SCREEN_RIGHT-18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;zoomy,0.5);
OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On");
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_2 then
local lifeP2 = params.LifeMeter:GetLife();
if lifeP2 <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false);
else
self:visible(true);
end;
else
self:visible(false);
end;
end;
end;
};
--DANGER double
t[#t+1] = LoadActor("danger") .. {
InitCommand=cmd(visible,false;horizalign,center;x,SCREEN_CENTER_X;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH-36;zoomy,0.5);
OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On");
LifeChangedMessageCommand=function(self,params)
local life = params.LifeMeter:GetLife();
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
if life <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- METERS ////////////////////////
---basemeter masked P1
t[#t+1] = LoadActor("basemeter") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;valign,0.5;y,SCREEN_TOP+41;zoomy,0.5;blend,Blend.Add);
OnCommand=cmd(bounce;effectmagnitude,-40,0,0;effectclock,"bgm";effecttiming,2,0,0,0;);
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_1 then
local style = GAMESTATE:GetCurrentStyle();
local lifeP1 = params.LifeMeter:GetLife();
if GAMESTATE:IsHumanPlayer(PLAYER_1)==true then
if lifeP1==0 then
self:visible(false);
else
if lifeP1==1 then
self:effectmagnitude(0,0,0);
else
self:effectmagnitude(-40,0,0);
end;
self:visible(true);
end
end
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:zoomtowidth((SCREEN_WIDTH-40)*lifeP1+5);
else
self:zoomtowidth((SCREEN_WIDTH/2-26)*lifeP1);
end;
end;
end;
};
---basemeter masked P2
t[#t+1] = LoadActor("basemeter") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,right;x,SCREEN_RIGHT+18;valign,0.5;y,SCREEN_TOP+41;zoomy,0.5;blend,Blend.Add;queuecommand,"Set");
OnCommand=cmd(bob;effectmagnitude,40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;);
SetCommand=function(self,params)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:effectmagnitude(-40,0,0);
self:horizalign(left);
self:x(SCREEN_LEFT+18);
end;
end;
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_2 then
local style = GAMESTATE:GetCurrentStyle();
local lifeP2 = params.LifeMeter:GetLife();
if GAMESTATE:IsHumanPlayer(PLAYER_2)==true then
if lifeP2==0 then
self:visible(false);
else
if lifeP2==1 then
self:effectmagnitude(0,0,0);
else
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:effectmagnitude(-40,0,0);
else
self:effectmagnitude(40,0,0);
end
end;
self:visible(true);
end
end
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:zoomtowidth((SCREEN_WIDTH-40)*lifeP2);
else
self:zoomtowidth(((SCREEN_WIDTH/2-26)*lifeP2)+40);
end;
end;
end;
};
-- FRAMES & TIPS ////////////////////////
-- Left Corner
t[#t+1] = LoadActor("mask") .. {
OnCommand=cmd(horizalign,right;x,SCREEN_LEFT+130;vertalign,top;y,SCREEN_TOP+12;zoom,0.45;queuecommand,"Set");
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(true);
else
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- Right Corner
t[#t+1] = LoadActor("mask") .. {
OnCommand=cmd(horizalign,right;x,SCREEN_RIGHT-130;vertalign,top;y,SCREEN_TOP+12;zoomx,-0.45;zoomy,0.45;queuecommand,"Set");
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(true);
else
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- Left Corner
t[#t+1] = LoadActor("corner") .. {
OnCommand=cmd(horizalign,left;x,SCREEN_LEFT+15;vertalign,top;y,SCREEN_TOP+16;zoom,0.75;queuecommand,"Set");
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(true);
else
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- Right Corner
t[#t+1] = LoadActor("corner") .. {
OnCommand=cmd(horizalign,left;x,SCREEN_RIGHT-15;vertalign,top;y,SCREEN_TOP+16;zoomx,-0.75;zoomy,0.75;queuecommand,"Set");
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(true);
else
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- Center Corner Left
t[#t+1] = LoadActor("center") .. {
OnCommand=cmd(horizalign,left;x,SCREEN_CENTER_X+5;vertalign,top;y,SCREEN_TOP+16;zoomx,-0.75;zoomy,0.75;queuecommand,"Set");
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false);
else
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- Center Corner Right
t[#t+1] = LoadActor("center") .. {
OnCommand=cmd(horizalign,left;x,SCREEN_CENTER_X-5;vertalign,top;y,SCREEN_TOP+16;zoom,0.75;queuecommand,"Set");
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false);
else
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
self:visible(true);
else
self:visible(false);
end;
end;
end;
};
-- Center part 1
t[#t+1] = LoadActor("frame") .. {
OnCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+52.5;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-85;zoomy,0.75;queuecommand,"Set";);
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:zoomtowidth(SCREEN_WIDTH-105);
self:visible(true)
else
if GAMESTATE:IsHumanPlayer(PLAYER_1) == false then
self:visible(false)
else
self:visible(true)
end
end;
end;
};
-- Center part 2
t[#t+1] = LoadActor("frame") .. {
OnCommand=cmd(horizalign,right;x,SCREEN_RIGHT-52.5;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-85;zoomy,0.75;queuecommand,"Set";);
SetCommand = function(self)
local style = GAMESTATE:GetCurrentStyle();
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:visible(false)
else
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
self:visible(true)
else
self:visible(false)
end;
end;
end;
};
---tip P1
t[#t+1] = LoadActor("tip") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);valign,0.5;y,SCREEN_TOP+41;zoom,0.5;blend,Blend.Add;queuecommand,"Set");
--OnCommand=cmd(bob;effectmagnitude,-40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;);
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_1 then
local style = GAMESTATE:GetCurrentStyle();
local lifeP1 = params.LifeMeter:GetLife();
if GAMESTATE:IsHumanPlayer(PLAYER_1)==true then
if lifeP1==0 then
self:visible(false);
else
self:visible(true);
end
end
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:x((SCREEN_WIDTH-40)*lifeP1+20);
else
self:x((SCREEN_WIDTH/2-26)*lifeP1+20);
end;
end;
end;
};
---tip P2
t[#t+1] = LoadActor("tip") .. {
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);valign,0.5;y,SCREEN_TOP+41;zoom,0.5;blend,Blend.Add;);
--OnCommand=cmd(bob;effectmagnitude,40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;);
LifeChangedMessageCommand=function(self,params)
if params.Player == PLAYER_2 then
local style = GAMESTATE:GetCurrentStyle();
local lifeP2 = params.LifeMeter:GetLife();
local fullstate;
if GAMESTATE:IsHumanPlayer(PLAYER_2)==true then
if lifeP2==0 then
self:visible(false);
else
self:visible(true);
end
end
if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then
self:x((SCREEN_WIDTH-40)*lifeP2+20);
else
self:x(SCREEN_RIGHT-((SCREEN_WIDTH/2-26)*lifeP2)-20);
end;
end;
end;
};
-- NAMES ////////////////////////
--P1 NAME
t[#t+1] = LoadFont("Common Normal") .. {
InitCommand=cmd(horizalign,left;x,SCREEN_LEFT+30;y,SCREEN_TOP+15;zoom,0.4;shadowlength,1;uppercase,true);
BeginCommand=function(self)
local profile = PROFILEMAN:GetProfile(PLAYER_1);
local name = profile:GetDisplayName();
if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then
if name=="" then
self:settext("Player 1");
else
self:settext( name );
end
end
end;
};
--P2 NAME
t[#t+1] = LoadFont("Common Normal") .. {
InitCommand=cmd(horizalign,right;x,SCREEN_RIGHT-30;y,SCREEN_TOP+15;zoom,0.4;shadowlength,1;uppercase,true);
BeginCommand=function(self)
local profile = PROFILEMAN:GetProfile(PLAYER_2);
local name = profile:GetDisplayName();
if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then
if name=="" then
self:settext("Player 2");
else
self:settext( name );
end
end
end;
};
return t
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

@@ -1,250 +0,0 @@
local c;
local player = Var "Player";
local bShowProtiming = GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(player) );
local function MakeAverage( t )
local sum = 0;
for i=1,#t do
sum = sum + t[i];
end
return sum / #t
end
-- New
local function PosCount( t )
local Count = 0;
for i=1,#t do
if t[i] > 0 then Count = Count + 1 end
end
return Count
end
local function NegCount( t )
local Count = 0;
for i=1,#t do
if t[i] < 0 then Count = Count + 1 end
end
return Count
end
local function StdDev( t )
local avg = MakeAverage( t );
local sum = 0;
for i=1,#t do
sum = sum + math.pow(t[i] - avg, 2);
end
return math.sqrt(sum / (#t - 1))
end
--
local tTotalJudgments = {};
-- Global?
--[[ tPlayerData = {};
for pn in ivalues(GAMESTATE:GetHumanPlayers())
tPlayerData[pn].SignedJudgments = {};
tPlayerData[pn].AverageDifference = 0;
tPlayerData[pn].AbsoluteDifference = 0;
tPlayerData[pn].StandardDeviation = 0;
tPlayerData[pn].StandardDeviation = 0;
tPlayerData[pn].Early = 0;
tPlayerData[pn].Late = 0;
end ]]
--
local JudgeCmds = {
TapNoteScore_W1 = THEME:GetMetric( "Judgment", "JudgmentW1Command" );
TapNoteScore_W2 = THEME:GetMetric( "Judgment", "JudgmentW2Command" );
TapNoteScore_W3 = THEME:GetMetric( "Judgment", "JudgmentW3Command" );
TapNoteScore_W4 = THEME:GetMetric( "Judgment", "JudgmentW4Command" );
TapNoteScore_W5 = THEME:GetMetric( "Judgment", "JudgmentW5Command" );
TapNoteScore_Miss = THEME:GetMetric( "Judgment", "JudgmentMissCommand" );
};
local ProtimingCmds = {
TapNoteScore_W1 = THEME:GetMetric( "Protiming", "ProtimingW1Command" );
TapNoteScore_W2 = THEME:GetMetric( "Protiming", "ProtimingW2Command" );
TapNoteScore_W3 = THEME:GetMetric( "Protiming", "ProtimingW3Command" );
TapNoteScore_W4 = THEME:GetMetric( "Protiming", "ProtimingW4Command" );
TapNoteScore_W5 = THEME:GetMetric( "Protiming", "ProtimingW5Command" );
TapNoteScore_Miss = THEME:GetMetric( "Protiming", "ProtimingMissCommand" );
};
local AverageCmds = {
Pulse = THEME:GetMetric( "Protiming", "AveragePulseCommand" );
};
local TNSFrames = {
TapNoteScore_W1 = 0;
TapNoteScore_W2 = 1;
TapNoteScore_W3 = 2;
TapNoteScore_W4 = 3;
TapNoteScore_W5 = 4;
TapNoteScore_Miss = 5;
};
local t = Def.ActorFrame {};
t[#t+1] = Def.ActorFrame {
LoadActor(THEME:GetPathG("Judgment","Normal")) .. {
Name="Judgment";
InitCommand=cmd(pause;visible,false);
OnCommand=THEME:GetMetric("Judgment","JudgmentOnCommand");
ResetCommand=cmd(finishtweening;stopeffect;visible,false);
};
LoadFont("Combo Numbers") .. {
Name="ProtimingDisplay";
Text="";
InitCommand=cmd(visible,false);
OnCommand=THEME:GetMetric("Protiming","ProtimingOnCommand");
ResetCommand=cmd(finishtweening;stopeffect;visible,false);
};
LoadFont("Common Normal") .. {
Name="ProtimingAverage";
Text="";
InitCommand=cmd(visible,false);
OnCommand=THEME:GetMetric("Protiming","AverageOnCommand");
ResetCommand=cmd(finishtweening;stopeffect;visible,false);
};
Def.Quad {
Name="ProtimingGraphBG";
InitCommand=cmd(visible,false;y,32;zoomto,192,16);
ResetCommand=cmd(finishtweening;diffusealpha,0.8;visible,false);
OnCommand=cmd(diffuse,Color("Black");diffusetopedge,color("0.1,0.1,0.1,1");diffusealpha,0.8;shadowlength,2;);
};
Def.Quad {
Name="ProtimingGraphWindowW3";
InitCommand=cmd(visible,false;y,32;zoomto,192-4,16-4);
ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false);
OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W3"];);
};
Def.Quad {
Name="ProtimingGraphWindowW2";
InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW2"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,192-4),16-4);
ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false);
OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W2"];);
};
Def.Quad {
Name="ProtimingGraphWindowW1";
InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW1"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,192-4),16-4);
ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false);
OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W1"];);
};
Def.Quad {
Name="ProtimingGraphUnderlay";
InitCommand=cmd(visible,false;y,32;zoomto,192-4,16-4);
ResetCommand=cmd(finishtweening;diffusealpha,0.25;visible,false);
OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25);
};
Def.Quad {
Name="ProtimingGraphFill";
InitCommand=cmd(visible,false;y,32;zoomto,0,16-4;horizalign,left;);
ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false);
OnCommand=cmd(diffuse,Color("Red"););
};
Def.Quad {
Name="ProtimingGraphAverage";
InitCommand=cmd(visible,false;y,32;zoomto,2,7;);
ResetCommand=cmd(finishtweening;diffusealpha,0.85;visible,false);
OnCommand=cmd(diffuse,Color("Orange");diffusealpha,0.85);
};
Def.Quad {
Name="ProtimingGraphCenter";
InitCommand=cmd(visible,false;y,32;zoomto,2,16-4;);
ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false);
OnCommand=cmd(diffuse,Color("White");diffusealpha,1);
};
InitCommand = function(self)
c = self:GetChildren();
end;
JudgmentMessageCommand=function(self, param)
if param.Player ~= player then return end;
if param.HoldNoteScore then return end;
local iNumStates = c.Judgment:GetNumStates();
local iFrame = TNSFrames[param.TapNoteScore];
if not iFrame then return end
if iNumStates == 12 then
iFrame = iFrame * 2;
if not param.Early then
iFrame = iFrame + 1;
end
end
local fTapNoteOffset = param.TapNoteOffset;
if param.HoldNoteScore then
fTapNoteOffset = 1;
else
fTapNoteOffset = param.TapNoteOffset;
end
if param.TapNoteScore == 'TapNoteScore_Miss' then
fTapNoteOffset = 1;
bUseNegative = true;
else
-- fTapNoteOffset = fTapNoteOffset;
bUseNegative = false;
end;
if fTapNoteOffset ~= 1 then
-- we're safe, you can push the values
tTotalJudgments[#tTotalJudgments+1] = bUseNegative and fTapNoteOffset or math.abs( fTapNoteOffset );
-- New
-- tPlayerData[player].SignedJudgments[#(tPlayerData[player].SignedJudgments)+1] = fTapNoteOffset;
-- table.getn(tPlayerData[player].SignedJudgments = bUseNegative and fTapNoteOffset or fTapNoteOffset;
end
self:playcommand("Reset");
c.Judgment:visible( not bShowProtiming );
c.Judgment:setstate( iFrame );
JudgeCmds[param.TapNoteScore](c.Judgment);
c.ProtimingDisplay:visible( bShowProtiming );
c.ProtimingDisplay:settextf("%i",math.abs(fTapNoteOffset * 1000));
ProtimingCmds[param.TapNoteScore](c.ProtimingDisplay);
c.ProtimingAverage:visible( bShowProtiming );
c.ProtimingAverage:settextf("%.2f%%",clamp(100 - MakeAverage( tTotalJudgments ) * 1000 ,0,100));
AverageCmds['Pulse'](c.ProtimingAverage);
c.ProtimingGraphBG:visible( bShowProtiming );
c.ProtimingGraphUnderlay:visible( bShowProtiming );
c.ProtimingGraphWindowW3:visible( bShowProtiming );
c.ProtimingGraphWindowW2:visible( bShowProtiming );
c.ProtimingGraphWindowW1:visible( bShowProtiming );
c.ProtimingGraphFill:visible( bShowProtiming );
c.ProtimingGraphFill:finishtweening();
c.ProtimingGraphFill:decelerate(1/60);
-- c.ProtimingGraphFill:zoomtowidth( clamp(fTapNoteOffset * 188,-188/2,188/2) );
c.ProtimingGraphFill:zoomtowidth( clamp(
scale(
fTapNoteOffset,
0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),
0,188/2),
-188/2,188/2)
);
c.ProtimingGraphAverage:visible( bShowProtiming );
c.ProtimingGraphAverage:zoomtowidth( clamp(
scale(
MakeAverage( tTotalJudgments ),
0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),
0,188),
0,188)
);
-- c.ProtimingGraphAverage:zoomtowidth( clamp(MakeAverage( tTotalJudgments ) * 1880,0,188) );
c.ProtimingGraphCenter:visible( bShowProtiming );
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphBG);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphUnderlay);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW3);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW2);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW1);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphFill);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphAverage);
(cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphCenter);
end;
};
return t;
+5 -2
View File
@@ -1,5 +1,8 @@
[Global] [Global]
FallbackTheme=default FallbackTheme=default
[ScreenTitleMenu]
ChoiceNames="1,4,5,6,PopScreen,7"
ChoicePopScreen="name,Boobs;text,Boobs";
[ScreenGameplay] [ScreenGameplay]
LifeP1OnCommand=visible,false # LifeP1OnCommand=visible,false
LifeP2OnCommand=visible,false # LifeP2OnCommand=visible,false
@@ -13,7 +13,7 @@ local t = Def.ActorFrame {
LoadActor("_grid")..{ LoadActor("_grid")..{
InitCommand=cmd(customtexturerect,0,0,(SCREEN_WIDTH+1)/4,SCREEN_HEIGHT/4;SetTextureFiltering,true); InitCommand=cmd(customtexturerect,0,0,(SCREEN_WIDTH+1)/4,SCREEN_HEIGHT/4;SetTextureFiltering,true);
OnCommand=cmd(zoomto,SCREEN_WIDTH+1,SCREEN_HEIGHT;diffuse,Color("Black");diffuseshift;effecttiming,(1/8)*4,0,(7/8)*4,0;effectclock,'beatnooffset'; OnCommand=cmd(zoomto,SCREEN_WIDTH+1,SCREEN_HEIGHT;diffuse,Color("Black");diffuseshift;effecttiming,(1/8)*4,0,(7/8)*4,0;effectclock,'beatnooffset';
effectcolor2,Color("Black");effectcolor1,Colors.Alpha(Color("Black"),0.45);fadebottom,0.25;fadetop,0.25;croptop,48/480;cropbottom,48/480;diffusealpha,0.345); effectcolor2,Color("Black");effectcolor1,Color.Alpha(Color("Black"),0.45);fadebottom,0.25;fadetop,0.25;croptop,48/480;cropbottom,48/480;diffusealpha,0.345);
}; };
}; };

Some files were not shown because too many files have changed in this diff Show More