[default -> Xcode4] Lion is approaching.
@@ -0,0 +1,8 @@
|
||||
#COURSE:Jupiter;
|
||||
#SCRIPTER:Midiman;
|
||||
|
||||
#GAINSECONDS:120;
|
||||
#SONG:*:Hard;
|
||||
|
||||
#GAINSECONDS:25;
|
||||
#SONG:*:Hard;
|
||||
@@ -39,17 +39,17 @@ WeightW2=30
|
||||
WeightW1=50
|
||||
|
||||
[Skill5]
|
||||
WeightMiss=
|
||||
WeightW5=1
|
||||
WeightW4=1
|
||||
WeightMiss=2
|
||||
WeightW5=3
|
||||
WeightW4=5
|
||||
WeightW3=5
|
||||
WeightW2=30
|
||||
WeightW1=55
|
||||
|
||||
[Skill6]
|
||||
WeightMiss=
|
||||
WeightW5=
|
||||
WeightW4=
|
||||
WeightMiss=2
|
||||
WeightW5=3
|
||||
WeightW4=5
|
||||
WeightW3=5
|
||||
WeightW2=30
|
||||
WeightW1=70
|
||||
WeightW1=55
|
||||
|
||||
@@ -9,6 +9,34 @@ change to JSON, but it is unsure if this will be done.
|
||||
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
|
||||
* Split Timing officially implemented.
|
||||
* #SPEEDS tag for modified scroll speeds.
|
||||
|
||||
@@ -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
|
||||
----------
|
||||
* Changed default MusicWheelSwitchSpeed to 15 (was 10). [AJ]
|
||||
|
||||
@@ -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'>
|
||||
<GlobalFunctions>
|
||||
<Function name='Alpha'/>
|
||||
<Function name='AreStagePlayerModsForced'/>
|
||||
<Function name='AreStageSongModsForced'/>
|
||||
<Function name='Basename'/>
|
||||
@@ -39,11 +40,8 @@
|
||||
<Function name='FormatNumberAndSuffix'/>
|
||||
<Function name='FormatPercentScore'/>
|
||||
<Function name='GameCompatibleModes'/>
|
||||
<Function name='GamePrefAutoSetStyle'/>
|
||||
<Function name='GamePrefComboOnRolls'/>
|
||||
<Function name='GamePrefComboUnderField'/>
|
||||
<Function name='GamePrefDefaultFail'/>
|
||||
<Function name='GamePrefNotePosition'/>
|
||||
<Function name='GetCoursesToShowRanking'/>
|
||||
<Function name='GetCustomDifficulty'/>
|
||||
<Function name='GetDefaultOptionLines'/>
|
||||
@@ -57,6 +55,7 @@
|
||||
<Function name='GetGradeFromPercent'/>
|
||||
<Function name='GetLifeDifficulty'/>
|
||||
<Function name='GetOSName'/>
|
||||
<Function name='GetPlayerOrMachineProfile'/>
|
||||
<Function name='GetProTiming'/>
|
||||
<Function name='GetRandomSongBackground'/>
|
||||
<Function name='GetReal'/>
|
||||
@@ -130,7 +129,6 @@
|
||||
<Function name='PrintTable'/>
|
||||
<Function name='ProductID'/>
|
||||
<Function name='ProductVersion'/>
|
||||
<Function name='Profile'/>
|
||||
<Function name='RadarCategoryToLocalizedString'/>
|
||||
<Function name='ReadGamePrefFromFile'/>
|
||||
<Function name='ReadPrefFromFile'/>
|
||||
@@ -143,6 +141,8 @@
|
||||
<Function name='Saturation'/>
|
||||
<Function name='ScoreKeeperClass'/>
|
||||
<Function name='ScoreMissedHoldsAndRolls'/>
|
||||
<Function name='ScreenMetric'/>
|
||||
<Function name='ScreenString'/>
|
||||
<Function name='Second'/>
|
||||
<Function name='SecondsToHHMMSS'/>
|
||||
<Function name='SecondsToMMSS'/>
|
||||
@@ -153,6 +153,7 @@
|
||||
<Function name='SelectMusicOrCourse'/>
|
||||
<Function name='SelectProfileKeys'/>
|
||||
<Function name='Serialize'/>
|
||||
<Function name='SetFail'/>
|
||||
<Function name='SetGamePref'/>
|
||||
<Function name='SetThemePref'/>
|
||||
<Function name='SetUserPref'/>
|
||||
@@ -322,6 +323,7 @@
|
||||
<Function name='bouncebegin'/>
|
||||
<Function name='bounceend'/>
|
||||
<Function name='clearzbuffer'/>
|
||||
<Function name='compound'/>
|
||||
<Function name='cropbottom'/>
|
||||
<Function name='cropleft'/>
|
||||
<Function name='cropright'/>
|
||||
@@ -578,6 +580,7 @@
|
||||
<Function name='GetAllCharacters'/>
|
||||
<Function name='GetCharacter'/>
|
||||
<Function name='GetRandomCharacter'/>
|
||||
<Function name='GetCharacterCount'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='ComboGraph'>
|
||||
<Function name='Load'/>
|
||||
@@ -823,6 +826,7 @@
|
||||
<Function name='IsInDanger'/>
|
||||
</Class>
|
||||
<Class base='LifeMeter' name='LifeMeterBattery'>
|
||||
<Function name='ChangeLives'/>
|
||||
<Function name='GetLivesLeft'/>
|
||||
<Function name='GetTotalLives'/>
|
||||
</Class>
|
||||
@@ -889,6 +893,7 @@
|
||||
<Function name='LoadFromStats'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='Player'>
|
||||
<Function name='GetPlayerTimingData'/>
|
||||
<Function name='SetActorWithComboPosition'/>
|
||||
<Function name='SetActorWithJudgmentPosition'/>
|
||||
</Class>
|
||||
@@ -929,6 +934,7 @@
|
||||
<Function name='GetMines'/>
|
||||
<Function name='GetMini'/>
|
||||
<Function name='GetMirror'/>
|
||||
<Function name='GetNoAttacks'/>
|
||||
<Function name='GetNoFakes'/>
|
||||
<Function name='GetNoHands'/>
|
||||
<Function name='GetNoHolds'/>
|
||||
@@ -956,6 +962,7 @@
|
||||
<Function name='GetSongAttacks'/>
|
||||
<Function name='GetSplit'/>
|
||||
<Function name='GetStealth'/>
|
||||
<Function name='GetStepAttacks'/>
|
||||
<Function name='GetStomp'/>
|
||||
<Function name='GetSudden'/>
|
||||
<Function name='GetSuddenOffset'/>
|
||||
@@ -1026,6 +1033,52 @@
|
||||
<Function name='SetPreference'/>
|
||||
<Function name='SetPreferenceToDefault'/>
|
||||
</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'>
|
||||
<Function name='GetLocalProfile'/>
|
||||
<Function name='GetLocalProfileFromIndex'/>
|
||||
@@ -1093,6 +1146,15 @@
|
||||
</Class>
|
||||
<Class base='BitmapText' name='ScoreDisplayAliveTime'/>
|
||||
<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='ScreenEdit'>
|
||||
<Function name='GetEditState'/>
|
||||
@@ -1185,9 +1247,11 @@
|
||||
<Function name='GetDisplayMainTitle'/>
|
||||
<Function name='GetDisplaySubTitle'/>
|
||||
<Function name='GetFirstBeat'/>
|
||||
<Function name='GetFirstSecond'/>
|
||||
<Function name='GetGenre'/>
|
||||
<Function name='GetGroupName'/>
|
||||
<Function name='GetLastBeat'/>
|
||||
<Function name='GetLastSecond'/>
|
||||
<Function name='GetLyricsPath'/>
|
||||
<Function name='GetMusicPath'/>
|
||||
<Function name='GetOneSteps'/>
|
||||
@@ -1318,6 +1382,7 @@
|
||||
</Class>
|
||||
<Class name='Steps'>
|
||||
<Function name='GetAuthorCredit'/>
|
||||
<Function name='GetChartName'/>
|
||||
<Function name='GetChartStyle'/>
|
||||
<Function name='GetDescription'/>
|
||||
<Function name='GetDifficulty'/>
|
||||
@@ -1327,6 +1392,7 @@
|
||||
<Function name='GetRadarValues'/>
|
||||
<Function name='GetStepsType'/>
|
||||
<Function name='GetTimingData'/>
|
||||
<Function name='HasAttacks'/>
|
||||
<Function name='HasSignificantTimingChanges'/>
|
||||
<Function name='IsAPlayerEdit'/>
|
||||
<Function name='IsAnEdit'/>
|
||||
@@ -1377,10 +1443,17 @@
|
||||
<Function name='GetBPMs'/>
|
||||
<Function name='GetBPMsAndTimes'/>
|
||||
<Function name='GetBeatFromElapsedTime'/>
|
||||
<Function name='GetCombos'/>
|
||||
<Function name='GetDelays'/>
|
||||
<Function name='GetElapsedTimeFromBeat'/>
|
||||
<Function name='GetFakes'/>
|
||||
<Function name='GetLabels'/>
|
||||
<Function name='GetScrolls'/>
|
||||
<Function name='GetSpeeds'/>
|
||||
<Function name='GetStops'/>
|
||||
<Function name='GetTickcounts'/>
|
||||
<Function name='GetTimeSignatures'/>
|
||||
<Function name='GetWarps'/>
|
||||
<Function name='HasBPMChanges'/>
|
||||
<Function name='HasFakes'/>
|
||||
<Function name='HasNegativeBPMs'/>
|
||||
@@ -1408,6 +1481,7 @@
|
||||
<Function name='GetCode'/>
|
||||
<Function name='GetCourse'/>
|
||||
<Function name='GetDescription'/>
|
||||
<Function name='GetRequirePassChallengeSteps'/>
|
||||
<Function name='GetRequirePassHardSteps'/>
|
||||
<Function name='GetRequirement'/>
|
||||
<Function name='GetSong'/>
|
||||
@@ -1421,6 +1495,7 @@
|
||||
<Function name='roulette'/>
|
||||
<Function name='song'/>
|
||||
<Function name='steps'/>
|
||||
<Function name='steps_type'/>
|
||||
</Class>
|
||||
<Class name='UnlockManager'>
|
||||
<Function name='AnyUnlocksToCelebrate'/>
|
||||
@@ -1470,6 +1545,7 @@
|
||||
<Function name='GetCreditsMessage'/>
|
||||
</Namespace>
|
||||
<Namespace name='SongUtil'>
|
||||
<Function name='GetPlayableSteps'/>
|
||||
<Function name='IsStepsPlayable'/>
|
||||
<Function name='IsStepsTypePlayable'/>
|
||||
</Namespace>
|
||||
@@ -2024,8 +2100,9 @@
|
||||
<Enum name='UnlockRewardType'>
|
||||
<EnumValue name=''UnlockRewardType_Song'' value='0'/>
|
||||
<EnumValue name=''UnlockRewardType_Steps'' value='1'/>
|
||||
<EnumValue name=''UnlockRewardType_Course'' value='2'/>
|
||||
<EnumValue name=''UnlockRewardType_Modifier'' value='3'/>
|
||||
<EnumValue name=''UnlockRewardType_StepsType'' value='2'/>
|
||||
<EnumValue name=''UnlockRewardType_Course'' value='3'/>
|
||||
<EnumValue name=''UnlockRewardType_Modifier'' value='4'/>
|
||||
</Enum>
|
||||
<Enum name='VertAlign'>
|
||||
<EnumValue name=''VertAlign_Top'' value='0'/>
|
||||
@@ -2060,6 +2137,6 @@
|
||||
<Constant name='sGame' value=''dance''/>
|
||||
<Constant name='top' value=''VertAlign_Top''/>
|
||||
</Constants>
|
||||
<Version>StepMania 5 v5.0 Preview 1a</Version>
|
||||
<Date>2011-06-04</Date>
|
||||
<Version>StepMania 5 v5.0 Preview 2</Version>
|
||||
<Date>2011-07-04</Date>
|
||||
</Lua>
|
||||
|
||||
@@ -395,7 +395,13 @@
|
||||
$type='bool' or
|
||||
$type='table' 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">
|
||||
<xsl:value-of select="$type" />
|
||||
</span>
|
||||
|
||||
@@ -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'>
|
||||
<!-- Global functions -->
|
||||
<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=''>
|
||||
[02 StageMods.lua]
|
||||
</Function>
|
||||
@@ -36,10 +39,10 @@
|
||||
Returns the base name of file path.
|
||||
</Function>
|
||||
<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 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 name='Center1Player' theme='_fallback' return='bool' arguments=''>
|
||||
[03 ProductivityHelpers.lua] Returns <code>true</code> if Center 1P is being used.
|
||||
@@ -48,7 +51,8 @@
|
||||
[03 Gameplay.lua]
|
||||
</Function>
|
||||
<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 name='CloseConnection' return='void' arguments=''>
|
||||
Closes any connection to an online server.
|
||||
@@ -59,6 +63,21 @@
|
||||
<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.
|
||||
</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=''>
|
||||
[03 Gameplay.lua] Determines what TapNoteScore allows for continuing the combo.
|
||||
</Function>
|
||||
@@ -68,6 +87,12 @@
|
||||
<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).
|
||||
</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'>
|
||||
Tries to connect to the server at <code>sAddress</code>.
|
||||
</Function>
|
||||
@@ -77,14 +102,23 @@
|
||||
<Function name='DayOfYear' return='int' arguments=''>
|
||||
Returns the current day of the year.
|
||||
</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'>
|
||||
[01 base.lua] "Override Lua's dofile to use our <Link function="loadfile">loadfile</Link>."
|
||||
</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'>
|
||||
[02 Utilities.lua] Find a key in <code>tab</code> with the given <code>value</code>.
|
||||
</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 name='foreach_ordered' theme='_fallback' return='void' arguments='table t, function f'>
|
||||
<code>func</code> takes a key and a value.
|
||||
</Function>
|
||||
<Function name='FormatNumberAndSuffix' return='string' arguments='int num'>
|
||||
Returns the number passed to the function followed by its suffix ("th", "nd", and so on).
|
||||
@@ -98,6 +132,12 @@
|
||||
<Function name='GetCustomDifficulty' return='string' arguments='StepsType st, Difficulty d, CourseType ct'>
|
||||
Returns the corresponding CustomDifficulty string for a StepsType/Difficulty (/optional CourseType) combination.
|
||||
</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'>
|
||||
[03 EnvUtils2.lua] Returns the value of <code>name</code> from the Env table.
|
||||
</Function>
|
||||
@@ -113,21 +153,45 @@
|
||||
<Function name='GetOSName' return='string' arguments=''>
|
||||
Returns a string representing the name of the operating system being used. (e.g. "Windows", "Linux", "Mac, "Unknown")
|
||||
</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'>
|
||||
[03 ThemePrefs.lua] Returns <code>true</code> if player <code>pn</code> is using ProTiming.
|
||||
</Function>
|
||||
<Function name='GetRandomSongBackground' theme='_fallback' return='string' arguments=''>
|
||||
[02 Utilities.lua] Returns a path to a random song background.
|
||||
</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=''>
|
||||
Returns the name of the currently connected server.
|
||||
</Function>
|
||||
<Function name='GetSongBackground' theme='_fallback' return='string' arguments=''>
|
||||
[02 Utilities.lua] Returns a path to the current songs background.
|
||||
</Function>
|
||||
<Function name='GetTapPosition' theme='_fallback' return='float' arguments=''>
|
||||
[03 Gameplay.lua]
|
||||
</Function>
|
||||
<Function name='GetThemeAspectRatio' return='float' arguments=''>
|
||||
Returns the theme's aspect ratio.
|
||||
</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'>
|
||||
[03 UserPreferences2.lua] Themer-facing function for getting a user preference.
|
||||
</Function>
|
||||
@@ -140,9 +204,38 @@
|
||||
<Function name='GetUserPrefN' theme='_fallback' return='float' arguments='string name'>
|
||||
[03 UserPreferences2.lua] Themer-facing function for getting a user preference as a number.
|
||||
</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=''>
|
||||
Returns the current hour.
|
||||
</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=''>
|
||||
[03 ThemePrefs.lua] Initializes various user preferences.
|
||||
</Function>
|
||||
@@ -206,6 +299,12 @@
|
||||
<Function name='Minute' return='int' arguments=''>
|
||||
Returns the current Minute.
|
||||
</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=''>
|
||||
Returns the current month of the year.
|
||||
</Function>
|
||||
@@ -215,6 +314,20 @@
|
||||
<Function name='MonthToString' return='string' arguments='Month m'>
|
||||
Returns Month <code>m</code> as a string.
|
||||
</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 key–value pairs of table <code>t</code>."
|
||||
</Function>
|
||||
<Function name='pname' theme='_fallback' return='string' arguments='PlayerNumber pn'>
|
||||
[03 ProductivityHelpers.lua] Converts a PlayerNumber into a short string (e.g. "P1", "P2").
|
||||
</Function>
|
||||
@@ -233,6 +346,16 @@
|
||||
<Function name='ProductVersion' return='string' arguments=''>
|
||||
Returns the product version.
|
||||
</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'>
|
||||
[02 ActorDef.lua]
|
||||
</Function>
|
||||
@@ -242,12 +365,27 @@
|
||||
<Function name='ReadPrefFromFile' theme='_fallback' return='string' arguments='string prefName'>
|
||||
[03 UserPreferences2.lua] (internal) Reads the specified user preference from its config file.
|
||||
</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'>
|
||||
[02 Utilities.lua] Round a number.
|
||||
</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=''>
|
||||
[03 Gameplay.lua] Returns the primary ScoreKeeper class to use.
|
||||
</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=''>
|
||||
Returns the current second.
|
||||
</Function>
|
||||
@@ -269,12 +407,20 @@
|
||||
<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).
|
||||
</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=''>
|
||||
[02 Branches.lua] Determines the correct music/course selection screen to use and returns it.
|
||||
</Function>
|
||||
<Function name='SelectProfileKeys' theme='_fallback' return='string' arguments=''>
|
||||
[03 Gameplay.lua] (soon to be deprecated) Returns a list of codes to use on ScreenSelectProfile.
|
||||
</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'>
|
||||
[03 EnvUtils2.lua] Sets the value of <code>name</code> to <code>value</code> in the Env table.
|
||||
</Function>
|
||||
@@ -299,6 +445,12 @@
|
||||
<Function name='StandardDecorationFromFileOptional' theme='_fallback' return='Actor' arguments='string sMetricsName, string sFileName'>
|
||||
[02 ActorDef.lua]
|
||||
</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'>
|
||||
[02 Utilities.lua] Look up each value in a table, returning a table with the resulting strings.
|
||||
</Function>
|
||||
@@ -308,42 +460,64 @@
|
||||
<Function name='tobool' theme='_fallback' return='bool' arguments='various v'>
|
||||
[03 ProductivityHelpers.lua] Converts a string or number to a bool.
|
||||
</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'>
|
||||
[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 name='Trace' theme='_fallback' return='void' arguments='string sString'>
|
||||
[00 init.lua] Alias for <Link class='lua' function='Trace' />.
|
||||
</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'>
|
||||
Returns a string with characters escaped for URLs. (e.g. a space becomes '%20')
|
||||
</Function>
|
||||
<Function name='Var' theme='_fallback' return='ThreadVariable' arguments=''>
|
||||
[01 base.lua] Alias for <Link class="lua" function="GetThreadVariable">lua.GetThreadVariable</Link>.
|
||||
</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'>
|
||||
[00 init.lua] Alias for <Link class='lua' function='Warn' />.
|
||||
</Function>
|
||||
<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).
|
||||
</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'>
|
||||
[02 ActorDef.lua] Wraps the children in an ActorFrame.
|
||||
</Function>
|
||||
<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>.
|
||||
</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'>
|
||||
[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 name='Year' return='int' arguments=''>
|
||||
Returns the current year.
|
||||
</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=''>
|
||||
[03 ThemePrefs.lua] Returns a Lua option row for toggling AutoSetStyle.
|
||||
</Function>
|
||||
@@ -367,9 +541,16 @@
|
||||
<!-- Namespaces -->
|
||||
<Namespaces>
|
||||
<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'>
|
||||
Returns <code>true</code> if <code>sClassName</code> is a registered Class.
|
||||
</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 name='Enum'>
|
||||
<Description>
|
||||
@@ -414,6 +595,20 @@
|
||||
</Function>
|
||||
</Namespace>
|
||||
<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'>
|
||||
Writes <code>sString</code> to log.txt. Aliased by
|
||||
<Link class='GLOBAL' function='Trace' />.
|
||||
@@ -422,9 +617,6 @@
|
||||
Writes <code>sString</code> to info.txt and log.txt as
|
||||
a warning. Aliased by <Link class='GLOBAL' function='Warn' />.
|
||||
</Function>
|
||||
<Function name='Flush' return='void' arguments='' >
|
||||
Flushes log files to disk.
|
||||
</Function>
|
||||
</Namespace>
|
||||
<Namespace name='RageFileUtil'>
|
||||
<Function name='CreateRageFile' return='RageFile' arguments=''>
|
||||
@@ -437,6 +629,9 @@
|
||||
</Function>
|
||||
</Namespace>
|
||||
<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'>
|
||||
Returns true if the song's steps (<code>st</code>) are playable.
|
||||
</Function>
|
||||
@@ -560,7 +755,21 @@
|
||||
[02 Actor.lua]
|
||||
</Function>
|
||||
<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 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.
|
||||
@@ -853,6 +1062,9 @@
|
||||
<Function name='stopeffect' return='void' arguments=''>
|
||||
Stops any effect the Actor has.
|
||||
</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'>
|
||||
Stretches the Actor to a rectangle of a specific size.
|
||||
</Function>
|
||||
@@ -877,6 +1089,12 @@
|
||||
<Function name='z' return='void' arguments='float zPos'>
|
||||
Set the z position of the Actor to <code>zPos</code>.
|
||||
</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'>
|
||||
Zooms the Actor to <code>zoom</code> scale.
|
||||
</Function>
|
||||
@@ -898,19 +1116,19 @@
|
||||
<Function name='zoomz' return='void' arguments='float zoom'>
|
||||
Zooms the Actor to <code>zoom</code> scale on the Z axis.
|
||||
</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) -->
|
||||
<Function name='bezier' theme='_fallback' return='void' arguments=''>
|
||||
[02 Actor.lua]
|
||||
</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=''>
|
||||
[02 Actor.lua] Stretches an Actor to cover the screen. (equivalent to <code>stretchto,0,0,SCREEN_WIDTH,SCREEN_HEIGHT</code>)
|
||||
</Function>
|
||||
@@ -1163,7 +1381,7 @@
|
||||
Loads the card image from the specified Character.
|
||||
</Function>
|
||||
<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 name='LoadFromCourse' return='void' arguments='Course c'>
|
||||
Loads a Banner from a specified Course.
|
||||
@@ -1322,6 +1540,9 @@
|
||||
<Function name='GetRandomCharacter' return='Character' arguments=''>
|
||||
Returns a random character.
|
||||
</Function>
|
||||
<Function name='GetCharacterCount' return='int' arguments=''>
|
||||
Returns the number of characters available.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='ComboGraph'>
|
||||
<Function name='Load' return='void' arguments='string sMetricsGroup'>
|
||||
@@ -1452,6 +1673,9 @@
|
||||
<Function name='MD5String' return='string' arguments='string s'>
|
||||
Returns the MD5 hash for <code>s</code>.
|
||||
</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'>
|
||||
Returns the SHA-1 hash for <code>s</code>.
|
||||
</Function>
|
||||
@@ -2004,6 +2228,9 @@
|
||||
</Function>
|
||||
</Class>
|
||||
<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=''>
|
||||
Returns the number of lives remaining.
|
||||
</Function>
|
||||
@@ -2347,6 +2574,9 @@
|
||||
|
||||
</Function>
|
||||
<Function name='GetSongAttacks' return='float' arguments=''>
|
||||
This function is deprecated. Please use GetStepAttacks() instead.
|
||||
</Function>
|
||||
<Function name='GetStepAttacks' return='float' arguments=''>
|
||||
|
||||
</Function>
|
||||
<Function name='GetSplit' return='float' arguments=''>
|
||||
@@ -2701,7 +2931,9 @@
|
||||
</Function>
|
||||
</Class>
|
||||
<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='GetLocalProfileIDFromIndex' return='string' arguments='int iIndex' />
|
||||
<Function name='GetLocalProfileIndexFromID' return='int' arguments='string sProfileID' />
|
||||
@@ -2723,6 +2955,9 @@
|
||||
<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).
|
||||
</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'>
|
||||
Returns <code>true</code> if the last load of player <code>pn</code>'s profile was a LastGood copy of the profile.
|
||||
</Function>
|
||||
@@ -2858,12 +3093,21 @@
|
||||
<Function name='GetPrevScreenName' return='string' arguments=''>
|
||||
Returns the name of the previous Screen.
|
||||
</Function>
|
||||
<Function name='GetScreenType' return='ScreenType' arguments=''>
|
||||
Returns the ScreenType for this Screen.
|
||||
</Function>
|
||||
<Function name='lockinput' return='void' arguments='float f'>
|
||||
Locks input for <code>f</code> seconds.
|
||||
</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'>
|
||||
Posts a message with the text <code>sScreenMsg</code> to the Screen.
|
||||
</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 name='ScreenEdit'>
|
||||
<Function name='GetEditState' return='EditState' arguments=''>
|
||||
@@ -3078,6 +3322,9 @@
|
||||
<Function name='GetFirstBeat' return='float' arguments=''>
|
||||
Returns the first beat of the song.
|
||||
</Function>
|
||||
<Function name='GetFirstSecond' return='float' arguments=''>
|
||||
Returns the first second of the song.
|
||||
</Function>
|
||||
<Function name='GetGenre' return='string' arguments=''>
|
||||
Returns the genre of the song.
|
||||
</Function>
|
||||
@@ -3087,6 +3334,9 @@
|
||||
<Function name='GetLastBeat' return='float' arguments=''>
|
||||
Returns the last beat of the song.
|
||||
</Function>
|
||||
<Function name='GetLastSecond' return='float' arguments=''>
|
||||
Returns the last second of the song.
|
||||
</Function>
|
||||
<Function name='GetLyricsPath' return='string' arguments=''>
|
||||
Gets the path to the lyrics.
|
||||
</Function>
|
||||
@@ -3328,6 +3578,9 @@
|
||||
<Function name='LoadBanner' return='void' arguments='string sPath'>
|
||||
Load the song banner texture at <code>sPath</code>.
|
||||
</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'>
|
||||
[02 Sprite.lua] Load the texture for <code>song</code>'s background.
|
||||
</Function>
|
||||
@@ -3340,6 +3593,9 @@
|
||||
<Function name='SetEffectMode' return='void' arguments='EffectMode mode'>
|
||||
Set the <Link class='ENUM' function='EffectMode' /> to <code>mode</code>.
|
||||
</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'>
|
||||
Set the texture to <code>texture</code>.
|
||||
</Function>
|
||||
@@ -3445,6 +3701,9 @@
|
||||
<Function name='GetAuthorCredit' return='string' arguments=''>
|
||||
Returns the author that made that particular Steps pattern.
|
||||
</Function>
|
||||
<Function name='GetChartName' return='string' arguments=''>
|
||||
Returns the Steps chart name.
|
||||
</Function>
|
||||
<Function name='GetChartStyle' return='string' arguments=''>
|
||||
Returns the Chart Style for this Steps.
|
||||
</Function>
|
||||
@@ -3463,8 +3722,11 @@
|
||||
<Function name='GetMeter' return='int' arguments=''>
|
||||
Returns the numerical difficulty of the Steps.
|
||||
</Function>
|
||||
<Function name='HasAttacks' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the Steps has any attacks.
|
||||
</Function>
|
||||
<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 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.
|
||||
@@ -3608,6 +3870,27 @@
|
||||
<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>."
|
||||
</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=''>
|
||||
Returns <code>true</code> if the TimingData contains BPM changes.
|
||||
</Function>
|
||||
@@ -3690,6 +3973,9 @@
|
||||
<Function name='GetRequirePassHardSteps' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the UnlockEntry requires you to pass Hard steps.
|
||||
</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=''>
|
||||
Returns the Song related to the UnlockEntry.
|
||||
</Function>
|
||||
@@ -3720,6 +4006,9 @@
|
||||
Sets the UnlockEntry to unlock a specified song's steps.<br />
|
||||
Example: <code>steps,"In The Groove/Pandemonium","expert"</code>
|
||||
</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 name='UnlockManager'>
|
||||
<Function name='AnyUnlocksToCelebrate' return='bool' arguments=''>
|
||||
@@ -3755,7 +4044,9 @@
|
||||
<Function name='GetUnlockEntryIndexToCelebrate' return='int' arguments=''>
|
||||
Returns the UnlockEntry index to celebrate.
|
||||
</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'>
|
||||
Unlocks an entry by ID.
|
||||
</Function>
|
||||
|
||||
@@ -21,19 +21,19 @@
|
||||
#DELAYS:;
|
||||
#LABELS:;
|
||||
#TIMESIGNATURES:;
|
||||
#LASTBEATHINT:;
|
||||
#SAMPLESTART:;
|
||||
#SAMPLELENGTH:;
|
||||
#DISPLAYBPM:[xxx][xxx:xxx]|[*];
|
||||
#SELECTABLE:;
|
||||
#LASTSECONDHINT:;
|
||||
#BGCHANGES:;
|
||||
#FGCHANGES:;
|
||||
#KEYSOUNDS:;
|
||||
#ATTACKS:;
|
||||
|
||||
// stored in cache
|
||||
#FIRSTBEAT:; // calculated
|
||||
#LASTBEAT:; // calculated
|
||||
#FIRSTSECOND:; // calculated
|
||||
#LASTSECOND:; // calculated
|
||||
#SONGFILENAME:;
|
||||
#MUSICBYTES:; // ignored by loader
|
||||
#HASMUSIC:;
|
||||
@@ -42,6 +42,7 @@
|
||||
// begin
|
||||
#NOTEDATA# // marks a new note data section
|
||||
// information from #NOTES moved here
|
||||
#CHARTNAME:;
|
||||
#STEPSTYPE:;
|
||||
#DESCRIPTION:;
|
||||
#CHARTSTYLE:;
|
||||
@@ -51,6 +52,7 @@
|
||||
#CREDIT:;
|
||||
|
||||
// steps-based timingdata
|
||||
#OFFSET:;
|
||||
#BPMS:;
|
||||
#STOPS:;
|
||||
#DELAYS:;
|
||||
@@ -61,8 +63,11 @@
|
||||
#SCROLLS:;
|
||||
#FAKES:;
|
||||
#LABELS:;
|
||||
#ATTACKS:; // Not yet in use.
|
||||
#OFFSET:;
|
||||
#ATTACKS:;
|
||||
#DISPLAYBPM:;
|
||||
|
||||
// actual step data
|
||||
// only in cache files
|
||||
#STEPFILENAME:;
|
||||
|
||||
// actual step data (not in cache files)
|
||||
#NOTES:;
|
||||
|
||||
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 466 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
@@ -1,5 +1,7 @@
|
||||
[NoteDisplay]
|
||||
DrawHoldHeadForTapsOnSameRow=1
|
||||
DrawRollHeadForTapsOnSameRow=1
|
||||
TapHoldRollOnRowMeansHold=1
|
||||
AnimationIsBeatBased=1
|
||||
TapNoteAnimationLength=1
|
||||
TapMineAnimationLength=1
|
||||
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
@@ -20,14 +20,14 @@ ret.Redir = function(sButton, sElement)
|
||||
if sElement == "Hold Head Active" or
|
||||
sElement == "Roll Head Active"
|
||||
then
|
||||
sElement = "Hold Head Active";
|
||||
sElement = "Tap Note";
|
||||
end
|
||||
|
||||
-- Test
|
||||
if sElement == "Hold Head Inactive" or
|
||||
sElement == "Roll Head Inactive"
|
||||
then
|
||||
sElement = "Hold Head Inactive";
|
||||
sElement = "Tap Note";
|
||||
end
|
||||
|
||||
if sElement == "Tap Fake"
|
||||
|
||||
@@ -3,7 +3,8 @@ FallbackNoteSkin=default
|
||||
|
||||
[NoteDisplay]
|
||||
TapNoteAnimationIsVivid=0
|
||||
DrawHoldHeadForTapsOnSameRow=1
|
||||
HoldHeadAnimationIsVivid=0
|
||||
DrawHoldHeadForTapsOnSameRow=0
|
||||
TapNoteAnimationLength=4
|
||||
TapAdditionAnimationLength=4
|
||||
TapMineAnimationLength=1
|
||||
@@ -34,8 +35,14 @@ TapNoteNoteColorTextureCoordSpacingY=0.125
|
||||
TapFakeNoteColorTextureCoordSpacingX=0
|
||||
TapFakeNoteColorTextureCoordSpacingY=0.125
|
||||
|
||||
HoldHeadAdditionTextureCoordOffsetX=0
|
||||
HoldHeadAdditionTextureCoordOffsetY=0
|
||||
HoldHeadNoteColorTextureCoordSpacingX=0
|
||||
HoldHeadNoteColorTextureCoordSpacingY=0
|
||||
HoldTopCapAdditionTextureCoordOffsetX=0
|
||||
HoldTopCapAdditionTextureCoordOffsetY=0
|
||||
HoldTopCapNoteColorTextureCoordSpacingX=0
|
||||
HoldTopCapNoteColorTextureCoordSpacingY=0
|
||||
|
||||
[GhostArrowDim]
|
||||
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
|
||||
|
||||
[HoldGhostArrow]
|
||||
HoldingOnCommand=visible,true
|
||||
HoldingOffCommand=visible,false
|
||||
HoldingOnCommand=blend,'BlendMode_Add';pulse;effectmagnitude,1,1.125,1;effectperiod,0.05;effectclock,'beatnooffset';visible,true
|
||||
HoldingOffCommand=blend,'BlendMode_Add';stopeffect;visible,false
|
||||
|
||||
[ReceptorArrow]
|
||||
W3Command=stoptweening;zoom,0.85;linear,0.12;zoom,1
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
[Global]
|
||||
FallbackNoteSkin=default
|
||||
FallbackNoteSkin=midi-note
|
||||
|
||||
[NoteDisplay]
|
||||
TapNoteAnimationIsVivid=0
|
||||
DrawHoldHeadForTapsOnSameRow=1
|
||||
DrawHoldHeadForTapsOnSameRow=0
|
||||
TapNoteAnimationLength=4
|
||||
TapAdditionAnimationLength=4
|
||||
TapMineAnimationLength=1
|
||||
@@ -35,7 +35,7 @@ TapFakeNoteColorTextureCoordSpacingX=0
|
||||
TapFakeNoteColorTextureCoordSpacingY=0.125
|
||||
|
||||
HoldHeadNoteColorTextureCoordSpacingX=0
|
||||
HoldHeadNoteColorTextureCoordSpacingY=0.125
|
||||
HoldHeadNoteColorTextureCoordSpacingY=0
|
||||
|
||||
[GhostArrowDim]
|
||||
NoneCommand=
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Down Tap Explosion Bright
|
||||
@@ -4,7 +4,12 @@ DrawHoldHeadForTapsOnSameRow=0
|
||||
StartDrawingHoldBodyOffsetFromHead=0
|
||||
StopDrawingHoldBodyOffsetFromTail=-32
|
||||
|
||||
TapNoteAnimationIsVivid=0
|
||||
|
||||
# control the vertical
|
||||
TapNoteNoteColorTextureCoordSpacingX=0
|
||||
TapNoteNoteColorTextureCoordSpacingY=0
|
||||
|
||||
TapNoteAdditionTextureCoordOffsetX=0
|
||||
TapNoteAdditionTextureCoordOffsetY=0.5
|
||||
|
||||
|
||||
@@ -4,7 +4,12 @@ DrawHoldHeadForTapsOnSameRow=0
|
||||
StartDrawingHoldBodyOffsetFromHead=0
|
||||
StopDrawingHoldBodyOffsetFromTail=-32
|
||||
|
||||
TapNoteAnimationIsVivid=0
|
||||
|
||||
# control the vertical
|
||||
TapNoteNoteColorTextureCoordSpacingX=0
|
||||
TapNoteNoteColorTextureCoordSpacingY=0
|
||||
|
||||
TapNoteAdditionTextureCoordOffsetX=0
|
||||
TapNoteAdditionTextureCoordOffsetY=0.5
|
||||
|
||||
|
||||
@@ -15,10 +15,9 @@ return Def.ActorFrame {
|
||||
--tap
|
||||
NOTESKIN:LoadActor(Var "Button", "Ready Receptor")..{
|
||||
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);
|
||||
|
||||
InitCommand=cmd(playcommand,"Tap");
|
||||
InitCommand=cmd(pause;setstate,2;playcommand,"Tap");
|
||||
HeldCommand=cmd(playcommand,"Tap");
|
||||
ColumnJudgmentMessageCommand=cmd(playcommand,"Tap");
|
||||
--TapNoneCommand=cmd(playcommand,"Tap");
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
local function Beat(self)
|
||||
-- too many locals
|
||||
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
|
||||
part = clamp(part,0,0.5)
|
||||
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
|
||||
eff = 0
|
||||
end
|
||||
|
||||
|
After Width: | Height: | Size: 747 B |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 477 B |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 509 B |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 420 B |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 455 B |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 457 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 621 KiB |
|
After Width: | Height: | Size: 105 KiB |
@@ -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 = {
|
||||
"Jason Felds (wolfman2000)",
|
||||
"Jason Felds (wolfman2000)", -- Timing Segments, Split Timing, optimization
|
||||
"Thai Pangsakulyanont (theDtTvB)", -- BMS, Split Timing, optimization
|
||||
"Alberto Ramos (Daisuke Master)",
|
||||
"Jack Walstrom (FSX)",
|
||||
}
|
||||
@@ -39,9 +40,10 @@ local stepmania = {
|
||||
|
||||
local contrib = {
|
||||
"Aldo Fregoso (Aldo_MX)", -- delays
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel
|
||||
"cerbo",
|
||||
"cesarmades", -- pump/cmd* noteskins
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel
|
||||
"Christophe Goulet-LeBlanc (Kommisar)",
|
||||
"corec", -- various fixes
|
||||
"galopin", -- piu PlayStation2 usb mat support
|
||||
"gholms", -- automake 1.11 support
|
||||
@@ -49,8 +51,8 @@ local contrib = {
|
||||
"Kaox", -- pump/default noteskin
|
||||
"NitroX72", -- pump/frame noteskin
|
||||
"sy567", -- beginner helper fix
|
||||
"Thai Pangsakulyanont (theDtTvB)",
|
||||
"v1toko", -- x-mode from StepNXA
|
||||
"waiei", -- custom scoring fixes + Hybrid scoring
|
||||
}
|
||||
|
||||
local thanks = {
|
||||
@@ -70,10 +72,11 @@ local thanks = {
|
||||
|
||||
local shoutout = {
|
||||
"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",
|
||||
"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
|
||||
"#KBO",
|
||||
"You showed us... your ultimate dance",
|
||||
-- "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 )
|
||||
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 );
|
||||
};
|
||||
local t = Def.ActorFrame {};
|
||||
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 {
|
||||
CreditsText( PLAYER_1 );
|
||||
CreditsText( PLAYER_2 );
|
||||
Def.ActorFrame {
|
||||
Def.Quad {
|
||||
InitCommand=cmd(zoomtowidth,SCREEN_WIDTH;zoomtoheight,30;horizalign,left;vertalign,top;y,SCREEN_TOP;diffuse,color("0,0,0,0"));
|
||||
|
||||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
@@ -261,6 +261,7 @@ AdvanceExtraPixels=0
|
||||
253=12
|
||||
254=15
|
||||
255=12
|
||||
|
||||
[alt]
|
||||
0=10
|
||||
1=10
|
||||
@@ -390,3 +391,28 @@ AdvanceExtraPixels=0
|
||||
125=12
|
||||
126=6
|
||||
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
|
||||
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 480 B |
@@ -372,7 +372,7 @@ MaxTextureResolution=Choose the maximum texture resolution. Setting this to any
|
||||
MenuTimer=When &oq;ON&cq;, menus have a time limit.
|
||||
Mines=Mines
|
||||
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.
|
||||
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.
|
||||
@@ -656,6 +656,7 @@ Never=Never
|
||||
New=New
|
||||
NewEdit=-New Edit-
|
||||
No=No
|
||||
NoAttacks=No Attacks
|
||||
NoHands=No Hands
|
||||
NoHolds=No Holds
|
||||
NoJumps=No Jumps
|
||||
@@ -707,7 +708,8 @@ Skip=Skip
|
||||
Skippy=Skippy
|
||||
Slow=Slow
|
||||
SN2=Supernova 2
|
||||
SongAttacks=Song Attacks
|
||||
SongAttacks=Step Attacks
|
||||
StepAttacks=Step Attacks
|
||||
Song BGAnimation=Song BGAnimation
|
||||
Song Bitmap=Song Bitmap
|
||||
Song Movie=Song Movie
|
||||
@@ -800,6 +802,7 @@ CelShadeModels=Cel-shaded Models
|
||||
Center Image=Center Image
|
||||
Chaos=Chaos
|
||||
Characters=Characters
|
||||
Chart Name=Chart Name
|
||||
Chart Style=Chart Style
|
||||
Choose=Choose
|
||||
Clear Bookkeeping Data=Clear Bookkeeping Data
|
||||
@@ -807,13 +810,20 @@ Clear Machine Edits=Clear Machine Edits
|
||||
Clear Machine Stats=Clear Machine Scores
|
||||
Clear USB edits=Clear USB edits
|
||||
Clear area=Clear area
|
||||
Clear clipboard=Clear clipboard
|
||||
CoinMode=Coin Mode
|
||||
CoinModeNoHome=Coin Mode
|
||||
CoinsPerCredit=Coins Per Credit
|
||||
Connection=Connection
|
||||
Convert pause to beats=Convert pause to beats
|
||||
Convert selection to pause=Convert selection to pause
|
||||
Convert pause to beats=Convert stop to beats
|
||||
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 timing data=Copy timing data
|
||||
CourseSortOrder=Course Sort
|
||||
Create New=Create New
|
||||
Create New Course=Create New
|
||||
@@ -829,6 +839,8 @@ DelayedTextureDelete=Keep Textures In Memory
|
||||
Delete=Delete
|
||||
Delete beat and shift up=Delete beat and shift up
|
||||
Description=Description
|
||||
Designate as Music Preview=Designate as Music Preview
|
||||
Designate last second at current beat=Designate last second at current beat
|
||||
Difficulty=Difficulty
|
||||
Display BPM=Display BPM
|
||||
DisplayAspectRatio=Aspect Ratio
|
||||
@@ -867,6 +879,7 @@ Entry %d=Entry %d
|
||||
EventMode=Event Mode
|
||||
Exit=Exit
|
||||
Fail=Fail
|
||||
Fakes=Fakes
|
||||
FastLoad=Fast\nLoad
|
||||
File1 Global BGAnimation=File1 Global BGAnimation
|
||||
File1 Global Movie=File1 Global Movie
|
||||
@@ -904,11 +917,13 @@ Insert=Insert
|
||||
Insert Credit=Insert Credit
|
||||
Insert beat and shift down=Insert beat and shift down
|
||||
Insert Entry=Insert Entry
|
||||
Invert notes' player=Invert player notes (routine only)
|
||||
Jumps=Jumps
|
||||
Key Joy Mappings=Config Key/Joy Mappings
|
||||
Language=Language
|
||||
Last beat hint=Last beat hint
|
||||
Last second hint=Last second hint
|
||||
Layer=Layer
|
||||
Lifts=Lifts
|
||||
LifeDifficulty=Life Difficulty
|
||||
LifeType=Life Type
|
||||
Low Meter=Low Meter
|
||||
@@ -921,6 +936,8 @@ MenuTimer=Menu Timer
|
||||
Meter=Meter
|
||||
Min BPM=Min Specified BPM
|
||||
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 End
|
||||
More Options=More Options
|
||||
MovieColorDepth=Movie Color
|
||||
@@ -936,6 +953,7 @@ OsMountPlayer1=OS Mount Player1
|
||||
OsMountPlayer2=OS Mount Player2
|
||||
Paste at begin marker=Paste at begin marker
|
||||
Paste at current beat=Paste at current beat
|
||||
Paste timing data=Paste timing data
|
||||
Persp=Persp
|
||||
Play current beat to end=Play current beat to end
|
||||
Play preview music=Play preview music
|
||||
@@ -971,7 +989,8 @@ Remove Change=Remove Change
|
||||
Rename=Rename
|
||||
Reset To Defaults=Reset Options To Default Values
|
||||
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
|
||||
SaveScores=Save Scores
|
||||
SaveReplays=Save Replays
|
||||
@@ -1036,6 +1055,7 @@ Type=Type
|
||||
Turn=Turn
|
||||
Undo=Undo
|
||||
UseUnlockSystem=Unlock System
|
||||
View steps data=View Steps Data
|
||||
VisualDelaySeconds=Visual Delay
|
||||
Voltage=Voltage
|
||||
Vsync=Wait For Vsync
|
||||
@@ -1216,6 +1236,7 @@ Write Profiles=Write Profiles
|
||||
off=off
|
||||
on=on
|
||||
or=or
|
||||
Zoom In Camera=Zoom In Camera
|
||||
|
||||
[ScreenEdit]
|
||||
%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 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 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 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.
|
||||
@@ -1242,11 +1263,12 @@ Enter a new artist.=Enter a new artist.
|
||||
Enter a new genre.=Enter a new genre.
|
||||
Enter a new credit.=Enter a new credit.
|
||||
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 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 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.=Enter a new main title.
|
||||
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.
|
||||
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
|
||||
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
|
||||
Save successful.=Save successful.
|
||||
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.
|
||||
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 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 second=Current second
|
||||
@@ -1276,10 +1299,13 @@ Snap to=Snap to
|
||||
Selection beat=Selection beat
|
||||
Difficulty=Difficulty
|
||||
Description=Description
|
||||
Chart Name=Chart Name
|
||||
Chart Style=Chart Style
|
||||
Step Author=Step Author
|
||||
Main title=Main title
|
||||
Subtitle=Subtitle
|
||||
Tap Note=Tap Note
|
||||
Segment=Segment
|
||||
Tap Steps=Tap Steps
|
||||
Jumps=Jumps
|
||||
Hands=Hands
|
||||
@@ -1657,11 +1683,15 @@ Error adding file '%s'.=Error adding file '%s'.
|
||||
Loading courses...=Loading courses...
|
||||
Loading songs...=Loading songs...
|
||||
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.
|
||||
|
||||
[SongUtil]
|
||||
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 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 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]
|
||||
Song=Song
|
||||
Steps=Steps
|
||||
StepsType=StepsType
|
||||
Course=Course
|
||||
Modifier=Modifier
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#BACKGROUND:;
|
||||
#LYRICSPATH:;
|
||||
#CDTITLE:;
|
||||
#MUSIC:ScreenGameplaySyncMachine music.ogg;
|
||||
#MUSIC:_sync music.ogg;
|
||||
#OFFSET:-0.012;
|
||||
#SAMPLESTART:0.000;
|
||||
#SAMPLELENGTH:12.000;
|
||||
@@ -26,6 +26,8 @@
|
||||
#DIFFICULTY:Beginner;
|
||||
#METER:1;
|
||||
#RADARVALUES:0.302,0.205,0.000,0.000,0.000;
|
||||
#BPMS:0.000=132.000;
|
||||
#OFFSET:-0.012;
|
||||
#NOTES:
|
||||
// measure 1
|
||||
0000
|
||||
@@ -100,6 +102,8 @@
|
||||
#DIFFICULTY:Beginner;
|
||||
#METER:1;
|
||||
#RADARVALUES:0.302,0.205,0.000,0.000,0.000;
|
||||
#BPMS:0.000=132.000;
|
||||
#OFFSET:-0.012;
|
||||
#NOTES:
|
||||
// measure 1
|
||||
00000
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#DESCRIPTION:BASIC;
|
||||
#DIFFICULTY:easy;
|
||||
#METER:1;
|
||||
#BPMS:0.000=100.000;
|
||||
#STOPS:16=2,18=2,20=2,22=2;
|
||||
#RADARVALUES:0,0,0,0,0;
|
||||
#NOTES:
|
||||
0000
|
||||
@@ -72,6 +74,8 @@
|
||||
#DESCRIPTION:NORMAL;
|
||||
#DIFFICULTY:easy;
|
||||
#METER:1;
|
||||
#BPMS:0.000=100.000;
|
||||
#STOPS:16=2,18=2,20=2,22=2;
|
||||
#RADARVALUES:0,0,0,0,0;
|
||||
#NOTES:
|
||||
00000
|
||||
|
||||
@@ -20,4 +20,4 @@ local _screen = {
|
||||
h = SCREEN_HEIGHT,
|
||||
cx = SCREEN_CENTER_X,
|
||||
cy = SCREEN_CENTER_Y
|
||||
}
|
||||
}
|
||||
@@ -56,15 +56,6 @@ function ActorScroller:setfastcatchup(bFastCatchup)
|
||||
self:SetFastCatchup(bFastCatchup)
|
||||
end
|
||||
|
||||
-- renaming various StepMania functions to sm-ssc ones:
|
||||
if ScreenString then
|
||||
ScreenString = Screen.String
|
||||
end
|
||||
|
||||
if ScreenMetric then
|
||||
ScreenMetric = Screen.Metric
|
||||
end
|
||||
|
||||
--[[ GameState ]]
|
||||
--Aliases for old GAMESTATE timing functions.
|
||||
--These have been converted to SongPosition, but most themes still use these old functions.
|
||||
|
||||
@@ -83,6 +83,44 @@ local DropBezier =
|
||||
function Actor:drop(t)
|
||||
self:tween( t, "TweenType_Bezier", DropBezier );
|
||||
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.
|
||||
function Actor:hide_if(b)
|
||||
if b then
|
||||
@@ -114,17 +152,32 @@ function Actor:FullScreen()
|
||||
end
|
||||
|
||||
--[[ Typical background sizes:
|
||||
320x240 - DDR 1st-Extreme, most NVLM_ZK songs
|
||||
640x480 - most simfiles in distribution today are this big.
|
||||
768x480 - 16:10 aspect ratio backgrounds
|
||||
854x480 - pump it up pro
|
||||
320x240 - [4:3]
|
||||
640x480 - [4:3] (most simfiles in distribution today use this res.)
|
||||
768x480 - [16:10]
|
||||
854x480 - [16:9]
|
||||
]]
|
||||
-- "Most backgrounds are 640x480. Some are 768x480. Stretch the 4:3 ones."
|
||||
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 );
|
||||
else
|
||||
-- temp
|
||||
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
|
||||
|
||||
|
||||
@@ -65,7 +65,11 @@ Branch = {
|
||||
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
|
||||
return "ScreenHowToInstallSongs";
|
||||
end;
|
||||
return "ScreenSelectProfile";
|
||||
if PROFILEMAN:GetNumLocalProfiles() >= 2 then
|
||||
return "ScreenSelectProfile";
|
||||
else
|
||||
return "ScreenProfileLoad";
|
||||
end
|
||||
end,
|
||||
OptionsEdit = function()
|
||||
-- Similar to above, don't let anyone in here with 0 songs.
|
||||
@@ -75,7 +79,7 @@ Branch = {
|
||||
return "ScreenOptionsEdit";
|
||||
end,
|
||||
AfterProfileLoad = function()
|
||||
return "ScreenSelectProfile"
|
||||
return Branch.AfterSelectProfile()
|
||||
end,
|
||||
AfterSelectProfile = function()
|
||||
if ( THEME:GetMetric("Common","AutoSetStyle") == true ) then
|
||||
@@ -189,4 +193,7 @@ Branch = {
|
||||
Network = function()
|
||||
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
|
||||
end,
|
||||
AfterSaveSummary = function()
|
||||
return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
-- SSC Color Module and Library
|
||||
local nilColor = color("0,0,0,0")
|
||||
|
||||
-- Original Color Module.
|
||||
Color = {
|
||||
-- Color Library
|
||||
@@ -16,7 +16,7 @@ Color = {
|
||||
Purple = color("#92278f"),
|
||||
Outline = color("0,0,0,0.5"),
|
||||
Invisible = color("1,1,1,0"),
|
||||
Stealth = nilColor,
|
||||
Stealth = color("0,0,0,0"),
|
||||
-- Color Functions
|
||||
-- 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.
|
||||
@@ -30,8 +30,11 @@ Color = {
|
||||
return { c[1],c[2],c[3],fAlpha };
|
||||
end
|
||||
}
|
||||
|
||||
setmetatable(Color, { __call = function(self, c) return self[c] end })
|
||||
|
||||
-- Remapped Color Module, since some themes are crazy
|
||||
Colors = Color;
|
||||
-- Colors = Color;
|
||||
|
||||
GameColor = {
|
||||
PlayerColors = {
|
||||
@@ -95,10 +98,6 @@ GameColor.Difficulty["Nightmare"] = GameColor.Difficulty["Challenge"];
|
||||
GameColor.Difficulty["HalfDouble"] = GameColor.Difficulty["Medium"];
|
||||
|
||||
--[[ Fallbacks ]]
|
||||
function Color(c)
|
||||
return Colors[c]
|
||||
end
|
||||
|
||||
function BoostColor( cColor, fBoost )
|
||||
local c = cColor
|
||||
return { c[1]*fBoost, c[2]*fBoost, c[3]*fBoost, c[4] }
|
||||
|
||||
@@ -98,16 +98,17 @@ end
|
||||
|
||||
-- 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.
|
||||
Screen = {
|
||||
Metric = function ( sName )
|
||||
local sClass = Var "LoadingScreen"
|
||||
return THEME:GetMetric( sClass, sName )
|
||||
end,
|
||||
String = function ( sName )
|
||||
local sClass = Var "LoadingScreen";
|
||||
return THEME:GetString( sClass, sName )
|
||||
end
|
||||
};
|
||||
Screen.Metric = function ( sName )
|
||||
local sClass = Var "LoadingScreen"
|
||||
return THEME:GetMetric( sClass, sName )
|
||||
end
|
||||
ScreenMetric = Screen.Metric
|
||||
|
||||
Screen.String = function ( sName )
|
||||
local sClass = Var "LoadingScreen";
|
||||
return THEME:GetString( sClass, sName )
|
||||
end
|
||||
ScreenString = Screen.String
|
||||
|
||||
function TextBannerAfterSet(self,param)
|
||||
local Title=self:GetChild("Title");
|
||||
|
||||
@@ -13,23 +13,41 @@ function AreStageSongModsForced()
|
||||
return bExtraStage or bOni or bBattle or bRave
|
||||
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()
|
||||
Trace( "setupmusicstagemods" )
|
||||
local pm = GAMESTATE:GetPlayMode()
|
||||
|
||||
|
||||
if pm == "PlayMode_Battle" or pm == "PlayMode_Rave" then
|
||||
-- FIX DAT BUG;
|
||||
local sFail = "";
|
||||
if GetGamePref("DefaultFail") then
|
||||
sFail = string.format("Fail%s", GetGamePref("DefaultFail") );
|
||||
else
|
||||
sFail = "Failoff";
|
||||
end;
|
||||
--
|
||||
local so = GAMESTATE:GetDefaultSongOptions() .. "," .. sFail;
|
||||
local so = GAMESTATE:GetDefaultSongOptions();
|
||||
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so );
|
||||
MESSAGEMAN:Broadcast( "SongOptionsChanged" );
|
||||
elseif GAMESTATE:IsAnExtraStage() then
|
||||
elseif GAMESTATE:IsAnExtraStage() then
|
||||
if GAMESTATE:GetPreferredSongGroup() == "---Group All---" then
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
GAMESTATE:SetPreferredSongGroup( song:GetGroupName() )
|
||||
@@ -46,6 +64,7 @@ function ScreenSelectMusic:setupmusicstagemods()
|
||||
po = THEME:GetMetric("SongManager","ExtraStagePlayerModifiers");
|
||||
so = THEME:GetMetric("SongManager","ExtraStageStageModifiers");
|
||||
end
|
||||
|
||||
local difficulty = steps:GetDifficulty()
|
||||
local Reverse = PlayerNumber:Reverse()
|
||||
|
||||
@@ -58,8 +77,6 @@ function ScreenSelectMusic:setupmusicstagemods()
|
||||
GAMESTATE:SetPreferredDifficulty( pn, difficulty )
|
||||
MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} )
|
||||
end
|
||||
|
||||
|
||||
|
||||
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so )
|
||||
MESSAGEMAN:Broadcast( "SongOptionsChanged" )
|
||||
|
||||
@@ -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/ )
|
||||
|
||||
changelog:
|
||||
|
||||
v2.1 (StepMania 5 Preview 2)
|
||||
* Added support for m-Mods.
|
||||
|
||||
v2.0 (for sm-ssc)
|
||||
Giant rewrite of the speed mod parser.
|
||||
This rewrite comes with the following changes/features:
|
||||
@@ -38,9 +41,6 @@ v1.2
|
||||
|
||||
v1.1
|
||||
* 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,
|
||||
@@ -68,7 +68,7 @@ local function ParseSpeedModFile(path)
|
||||
return mods
|
||||
else
|
||||
-- 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)
|
||||
file:Open(path, 2)
|
||||
file:Write(fallbackString)
|
||||
@@ -148,8 +148,8 @@ end
|
||||
|
||||
local function SpeedModSort(tab)
|
||||
local xMods = {}
|
||||
local mMods = {}
|
||||
local cMods = {}
|
||||
--local mMods = {}
|
||||
|
||||
-- convert to numbers so sorting works:
|
||||
for i=1,#tab do
|
||||
@@ -159,10 +159,10 @@ local function SpeedModSort(tab)
|
||||
if string.find(tab[i],"C%d") then
|
||||
typ = cMods
|
||||
val = string.gsub(tab[i], "C", "")
|
||||
elseif string.find(tab[i],"M%d") then
|
||||
Trace("[CustomSpeedMods] OpenITG's M-Mods are not supported yet in sm-ssc.")
|
||||
--typ = mMods
|
||||
--val = string.gsub(tab[i], "M", "")
|
||||
-- support both cases because I want to hit people -freem
|
||||
elseif string.find(tab[i],"m%d") or string.find(tab[i],"M%d") then
|
||||
typ = mMods
|
||||
val = string.gsub(tab[i], "m", "")
|
||||
else
|
||||
typ = xMods
|
||||
val = string.gsub(tab[i], "x", "")
|
||||
@@ -175,7 +175,7 @@ local function SpeedModSort(tab)
|
||||
-- sort cMods
|
||||
cMods = AnonSort(cMods)
|
||||
-- sort mMods
|
||||
--mMods = AnonSort(mMods)
|
||||
mMods = AnonSort(mMods)
|
||||
local fin = {}
|
||||
-- convert it back to a string since that's what it expects
|
||||
for i=1,#xMods do
|
||||
@@ -184,7 +184,9 @@ local function SpeedModSort(tab)
|
||||
for i=1,#cMods do
|
||||
table.insert(fin, "C"..cMods[i])
|
||||
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
|
||||
end
|
||||
|
||||
@@ -295,7 +297,7 @@ function SpeedMods()
|
||||
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.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
|
||||
@@ -11,7 +11,7 @@ function GetExtraColorThreshold()
|
||||
sGame = GAMESTATE:GetCurrentGame():GetName()
|
||||
local Modes = {
|
||||
dance = 10,
|
||||
pump = 15,
|
||||
pump = 21,
|
||||
beat = 12,
|
||||
kb7 = 10,
|
||||
para = 10,
|
||||
@@ -105,6 +105,10 @@ function ComboPerRow()
|
||||
end
|
||||
end
|
||||
|
||||
function EvalUsesCheckpointsWithJudgments()
|
||||
return (GAMESTATE:GetCurrentGame():GetName() == "pump") and true or false
|
||||
end
|
||||
|
||||
-- these need cleanup really.
|
||||
function HitCombo()
|
||||
sGame = GAMESTATE:GetCurrentGame():GetName()
|
||||
@@ -183,7 +187,11 @@ function HoldTiming()
|
||||
end
|
||||
|
||||
function ShowHoldJudgments()
|
||||
return not GAMESTATE:GetCurrentGame():GetName() == "pump"
|
||||
if GAMESTATE:GetCurrentGame():GetName() == "pump" then
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function HoldHeadStep()
|
||||
@@ -267,4 +275,4 @@ end
|
||||
|
||||
function ComboUnderField()
|
||||
return GetUserPrefB("UserPrefComboUnderField")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -246,4 +246,16 @@ function Hue(color,newHue)
|
||||
end
|
||||
c.Hue = newHue
|
||||
return HSVToColor(c)
|
||||
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])
|
||||
-- Sets an actor up as the source for a mask. Clears zBuffer by default.
|
||||
function Actor:MaskSource(noclear)
|
||||
self:clearzbuffer(noclear or true)
|
||||
if noclear == true then
|
||||
self:clearzbuffer(true)
|
||||
end
|
||||
self:zwrite(true)
|
||||
self:blend('BlendMode_NoEffect')
|
||||
end
|
||||
@@ -224,10 +226,10 @@ end;
|
||||
--[[ ----------------------------------------------------------------------- ]]
|
||||
|
||||
--[[ profile stuff ]]
|
||||
-- Profile(pn)
|
||||
-- GetPlayerOrMachineProfile(pn)
|
||||
-- This returns a profile, preferably a player one.
|
||||
-- If there isn't one, we fall back on the machine profile.
|
||||
function Profile(pn)
|
||||
function GetPlayerOrMachineProfile(pn)
|
||||
if PROFILEMAN:IsPersistentProfile(pn) then
|
||||
-- player profile
|
||||
return PROFILEMAN:GetProfile(pn);
|
||||
|
||||
@@ -150,7 +150,7 @@ function InitUserPrefs()
|
||||
end;
|
||||
|
||||
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 = {
|
||||
Name = "UserPrefScoringMode";
|
||||
LayoutType = "ShowAllInRow";
|
||||
|
||||
@@ -67,7 +67,7 @@ r['DDR 4thMIX'] = function(params, pss)
|
||||
local capScore = 999999999;
|
||||
local bestPoints = scoreLookupTable['TapNoteScore_W1'];
|
||||
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 localCombo = localPoints and comboBonusForThisStep or 0;
|
||||
pss:SetScore(clamp(pss:GetScore()+localPoints+localCombo,0,capScore));
|
||||
@@ -84,14 +84,19 @@ r['DDR Extreme'] = function(params, pss)
|
||||
setmetatable(judgmentBase, ZeroIfNotFound);
|
||||
local steps = GAMESTATE:GetCurrentSteps(params.Player);
|
||||
local radarValues = steps:GetRadarValues(params.Player);
|
||||
local baseScore = (steps:IsAnEdit() and
|
||||
5 or steps:GetMeter()) * 1000000;
|
||||
local meter = steps:GetMeter();
|
||||
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
|
||||
baseScore = baseScore * 3;
|
||||
else
|
||||
if (GAMESTATE:GetCurrentSong():IsLong()) then
|
||||
baseScore = baseScore * 2;
|
||||
end;
|
||||
elseif (GAMESTATE:GetCurrentSong():IsLong()) then
|
||||
baseScore = baseScore * 2;
|
||||
end;
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
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.
|
||||
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
|
||||
-----------------------------------------------------------
|
||||
@@ -148,24 +194,43 @@ end;
|
||||
r['DDR SuperNOVA 2'] = function(params, pss)
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1'] = 1,
|
||||
['TapNoteScore_W2'] = 1,
|
||||
['TapNoteScore_W3'] = 0.5
|
||||
['TapNoteScore_W1'] = 10,
|
||||
['TapNoteScore_W2'] = 10,
|
||||
['TapNoteScore_W3'] = 5
|
||||
};
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
local radarValues = GetDirectRadar(params.Player);
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
local base = 100000 / totalItems;
|
||||
local hold = base * (params.HoldNoteScore == 'HoldNoteScore_Held' and 1 or 0);
|
||||
local maxScore = (base * multLookup['TapNoteScore_W1']) + hold;
|
||||
pss:SetCurMaxScore(pss:GetCurMaxScore() + (math.round(maxScore) * 10));
|
||||
local preW1 = base * multLookup[params.TapNoteScore];
|
||||
local buildScore = (preW1 - (IsW1Allowed(params.TapNoteScore) and 10 or 0)) + hold;
|
||||
pss:SetScore(pss:GetScore() + (math.round(buildScore) * 10));
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
|
||||
-- handle holds
|
||||
local maxAdd = 0;
|
||||
if params.HoldNoteScore == 'HoldNoteScore_Held' then
|
||||
maxAdd = 10;
|
||||
elseif params.HoldNoteScore == 'HoldNoteScore_LetGo' then
|
||||
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;
|
||||
-----------------------------------------------------------
|
||||
--Radar Master (doesn't work in 1.2.1, disabled)
|
||||
--don't try to "fix it up", either. you *cannot* make it work in 1.2.1.
|
||||
--Radar Master (doesn't work in sm-ssc 1.2.1, disabled)
|
||||
--todo: get this working with StepMania 5
|
||||
-----------------------------------------------------------
|
||||
r['[SSC] Radar Master'] = function(params, pss)
|
||||
local masterTable = {
|
||||
|
||||
@@ -28,7 +28,7 @@ ScreenHeight=480
|
||||
AutoSetStyle=GetUserPrefB("UserPrefAutoSetStyle")
|
||||
|
||||
# Default modifiers and noteskin.
|
||||
DefaultModifiers="default,1.5x"
|
||||
DefaultModifiers="1x"
|
||||
DefaultNoteSkinName="default"
|
||||
|
||||
# Difficulties to show. Useful for custom games where you want to hide these.
|
||||
@@ -124,6 +124,8 @@ ExtraColor=color("#ff0000") -- red
|
||||
[UnlockManager]
|
||||
# Unlock specific things.
|
||||
AutoLockChallengeSteps=false
|
||||
AutoLockEditSteps=false
|
||||
SongsNotAdditional=true
|
||||
UnlockNames=""
|
||||
|
||||
# useful commands:
|
||||
@@ -200,6 +202,8 @@ BeatOffsetHeight=15
|
||||
BeatPIHeight=2
|
||||
MiniPercentBase=0.5
|
||||
MiniPercentGate=1
|
||||
TinyPercentBase=0.5
|
||||
TinyPercentGate=1
|
||||
DizzyHoldHeads=false
|
||||
QuantizeArrowYPosition=false
|
||||
|
||||
@@ -411,72 +415,7 @@ SortLevel5Color=color("0,1,0,1")
|
||||
# Custom system that lets you rename certain classes of difficulties to
|
||||
# something else. Mostly for custom games and game emulation, PIU for example.
|
||||
|
||||
# The names of which
|
||||
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
|
||||
Names=
|
||||
|
||||
[DifficultyList]
|
||||
# A list that shows difficulties in a song.
|
||||
@@ -606,7 +545,19 @@ OverY=0
|
||||
|
||||
[LifeMeterBattery]
|
||||
# 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.
|
||||
BatteryBlinkTime=1.2
|
||||
# Where the batteries are
|
||||
@@ -614,11 +565,16 @@ BatteryP1X=-92
|
||||
BatteryP1Y=2
|
||||
BatteryP2X=92
|
||||
BatteryP2Y=2
|
||||
# Where your live count is
|
||||
# Where your life count is
|
||||
NumLivesFormat="x%d"
|
||||
NumLivesP1X=-92
|
||||
NumLivesP1Y=0
|
||||
NumLivesP1GainLifeCommand=
|
||||
NumLivesP1LoseLifeCommand=zoom,1.5;linear,0.15;zoom,1
|
||||
NumLivesP2X=92
|
||||
NumLivesP2Y=0
|
||||
NumLivesP2GainLifeCommand=
|
||||
NumLivesP2LoseLifeCommand=zoom,1.5;linear,0.15;zoom,1
|
||||
|
||||
[LifeMeterBattery Percent]
|
||||
# The percentage on the bar. I wouldn't even bother changing this, because I
|
||||
@@ -1012,8 +968,8 @@ StopOffsetX=50
|
||||
DelayOffsetX=120
|
||||
WarpOffsetX=90
|
||||
TimeSignatureOffsetX=30
|
||||
TickcountOffsetX=70
|
||||
ComboOffsetX=50
|
||||
TickcountOffsetX=50
|
||||
ComboOffsetX=70
|
||||
LabelOffsetX=130
|
||||
SpeedOffsetX=30
|
||||
ScrollOffsetX=100
|
||||
@@ -1067,7 +1023,8 @@ CheckpointsUseTickcounts=(GAMESTATE:GetCurrentGame():GetName() == "pump")
|
||||
; deprecated?
|
||||
CheckpointsUseTimeSignatures=false
|
||||
CheckpointsTapsSeparateJudgment=CheckpointsTapsSeparateJudgment()
|
||||
CheckpointsFlashOnHold=false
|
||||
; someone misunderstood me :x -Daisu
|
||||
CheckpointsFlashOnHold=(GAMESTATE:GetCurrentGame():GetName() == "pump")
|
||||
ImmediateHoldLetGo=ImmediateHoldLetGo()
|
||||
RequireStepOnHoldHeads=HoldHeadStep()
|
||||
RequireStepOnMines=false
|
||||
@@ -1081,6 +1038,7 @@ ComboStoppedAt=50
|
||||
AttackRunTimeRandom=6
|
||||
AttackRunTimeMine=7
|
||||
BattleRaveMirror=true
|
||||
MModHighCap=600
|
||||
|
||||
[PlayerOptions]
|
||||
RandomSpeedChance=0.2
|
||||
@@ -1527,7 +1485,7 @@ AllowRepeatingInput=false
|
||||
PreSwitchPageSeconds=0
|
||||
PostSwitchPageSeconds=0
|
||||
ScrollerSecondsPerItem=0
|
||||
ScrollerNumItemsToDraw=1024
|
||||
ScrollerNumItemsToDraw=16
|
||||
ScrollerTransform=function(self,offset,itemIndex,numItems) end
|
||||
ScrollerSubdivisions=1
|
||||
OverrideSleepAfterTweenOffSeconds=false
|
||||
@@ -1791,8 +1749,7 @@ CodeUp="+MenuUp"
|
||||
CodeUp2="+Up"
|
||||
CodeDown="+MenuDown"
|
||||
CodeDown2="+Down"
|
||||
# Holding Start let us skip ( annoying )
|
||||
CodeStart="~Start,+Start"
|
||||
CodeStart="+Start"
|
||||
CodeBack="Back"
|
||||
CodeCenter="Center"
|
||||
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()
|
||||
ChoiceVersus="name,Versus;style,versus;text,Versus;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()
|
||||
Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectPlayMode()
|
||||
Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectPlayMode()
|
||||
@@ -2064,7 +2022,8 @@ ForceTimer=true
|
||||
TimerMetricsGroup="MenuTimerNoSound"
|
||||
TimerSeconds=5
|
||||
#
|
||||
|
||||
ScreenBeginCommand=%SetFail
|
||||
#
|
||||
[ScreenOptions]
|
||||
Fallback="ScreenWithMenuElements"
|
||||
NavigationMode="normal"
|
||||
@@ -2134,6 +2093,7 @@ OptionRowExitMetricsGroup="OptionRowExit"
|
||||
Fallback="ScreenOptions"
|
||||
Class="ScreenOptionsMaster"
|
||||
NoteSkinSortOrder=""
|
||||
StepsUseChartName=false
|
||||
|
||||
# ExitItem is an exit row with the "Exit" text as a menu item; ExitTitle
|
||||
# uses the menu title.
|
||||
@@ -2177,22 +2137,23 @@ Accel,5="mod,boomerang;name,Boomerang"
|
||||
# Accel,5="mod,expand;name,Expand"
|
||||
# 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"
|
||||
Effect,1="mod,drunk;name,Drunk"
|
||||
Effect,2="mod,dizzy;name,Dizzy"
|
||||
Effect,3="mod,twirl;name,Twirl"
|
||||
Effect,4="mod,roll;name,Roll"
|
||||
Effect,5="mod,confusion;name,Confusion"
|
||||
Effect,6="mod,tiny;name,Tiny"
|
||||
Effect,7="mod,-100% mini;name,Big"
|
||||
Effect,8="mod,flip;name,Flip"
|
||||
Effect,9="mod,invert;name,Invert"
|
||||
Effect,10="mod,tornado;name,Tornado"
|
||||
Effect,11="mod,tipsy;name,Tipsy"
|
||||
Effect,12="mod,bumpy;name,Bumpy"
|
||||
Effect,13="mod,beat;name,Beat"
|
||||
Effect,14="mod,45% xmode;name,XMode"
|
||||
Effect,6="mod,mini;name,Mini"
|
||||
Effect,7="mod,tiny;name,Tiny"
|
||||
Effect,8="mod,-100% mini;name,Big"
|
||||
Effect,9="mod,flip;name,Flip"
|
||||
Effect,10="mod,invert;name,Invert"
|
||||
Effect,11="mod,tornado;name,Tornado"
|
||||
Effect,12="mod,tipsy;name,Tipsy"
|
||||
Effect,13="mod,bumpy;name,Bumpy"
|
||||
Effect,14="mod,beat;name,Beat"
|
||||
Effect,15="mod,45% xmode;name,XMode"
|
||||
|
||||
EffectsReceptor="selectmultiple"
|
||||
EffectsReceptorDefault=""
|
||||
@@ -2335,18 +2296,11 @@ Mines,2="name,On"
|
||||
Mines,3="mod,mines;name,Add"
|
||||
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"
|
||||
AttacksDefault="mod,songattacks"
|
||||
Attacks,3="mod,no randomattacks,no songattacks;name,Off"
|
||||
AttacksDefault="mod,no randomattacks, no noattacks"
|
||||
Attacks,1="name,On"
|
||||
Attacks,2="mod,randomattacks;name,RandomAttacks"
|
||||
Attacks,1="name,SongAttacks"
|
||||
Attacks,3="mod,noattacks;name,Off"
|
||||
|
||||
PlayerAutoPlay="2"
|
||||
PlayerAutoPlayDefault="mod,no playerautoplay"
|
||||
@@ -2357,7 +2311,7 @@ Hide="3;selectmultiple"
|
||||
HideDefault="mod,no dark,no blind,no cover"
|
||||
Hide,1="mod,dark;name,Dark"
|
||||
Hide,2="mod,blind;name,Blind"
|
||||
Hide,3="mod,60% cover;name,Cover"
|
||||
Hide,3="mod,80% cover;name,Cover"
|
||||
|
||||
# Hide="3"
|
||||
# HideDefault="mod,no dark,no blind"
|
||||
@@ -2373,12 +2327,6 @@ Persp,3="mod,space;name,Space"
|
||||
Persp,4="mod,hallway;name,Hallway"
|
||||
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
|
||||
# LifeType="3;together"
|
||||
LifeType=(GAMESTATE:IsCourseMode() and 3 or 2)..";together"
|
||||
@@ -2507,6 +2455,7 @@ LineHighlightP2ChangeToExitCommand=
|
||||
CursorOnCommand=visible,false
|
||||
|
||||
[ScreenOptionsService]
|
||||
AllowOperatorMenuButton=false
|
||||
Class="ScreenOptionsMaster"
|
||||
Fallback="ScreenOptionsSimpleService"
|
||||
#
|
||||
@@ -2884,7 +2833,6 @@ Line11="list,Attacks"
|
||||
Line12="list,PlayerAutoPlay"
|
||||
Line13="list,Hide"
|
||||
Line14="list,Persp"
|
||||
Line15="list,ScoreDisplay"
|
||||
Line16="list,Steps"
|
||||
Line17="list,Characters"
|
||||
|
||||
@@ -3276,10 +3224,13 @@ PlayerType="PlayerShared"
|
||||
Class="ScreenEvaluation"
|
||||
Fallback="ScreenWithMenuElements"
|
||||
#
|
||||
NextScreen=Branch.AfterEvaluation()
|
||||
PrevScreen=Branch.AfterEvaluation()
|
||||
#
|
||||
LightsMode="LightsMode_MenuStartOnly"
|
||||
#
|
||||
Summary=false
|
||||
CheckpointsWithJudgments=false
|
||||
CheckpointsWithJudgments=EvalUsesCheckpointsWithJudgments()
|
||||
#
|
||||
TimerSeconds=20
|
||||
#
|
||||
@@ -3361,30 +3312,34 @@ DetailLineFormat="%3d/%3d"
|
||||
[ScreenEvaluationNormal]
|
||||
Fallback="ScreenEvaluation"
|
||||
#
|
||||
NextScreen="ScreenProfileSave"
|
||||
NextScreen=Branch.AfterEvaluation()
|
||||
PrevScreen=Branch.AfterEvaluation()
|
||||
|
||||
[ScreenEvaluationSummary]
|
||||
Fallback="ScreenEvaluation"
|
||||
#
|
||||
NextScreen="ScreenSelectMusic"
|
||||
NextScreen=Branch.AfterSummary()
|
||||
#
|
||||
Summary=true
|
||||
#
|
||||
|
||||
[ScreenNameEntry]
|
||||
# !!! #
|
||||
Class="ScreenNameEntry"
|
||||
Fallback="ScreenWithMenuElementsBlank"
|
||||
#
|
||||
TimerX=SCREEN_CENTER_X+0
|
||||
TimerY=SCREEN_CENTER_Y-210
|
||||
#
|
||||
CategoryY=SCREEN_CENTER_Y+190
|
||||
CategoryZoom=0.7
|
||||
#
|
||||
CharsZoomSmall=1.0
|
||||
CharsZoomLarge=1.5
|
||||
CharsSpacingY=40
|
||||
CharsChoices=" ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
ScrollingCharsCommand=diffuse,0.6,0.8,0.8,1
|
||||
SelectedCharsCommand=diffuse,0.8,1,1,1
|
||||
#
|
||||
ReceptorArrowsY=SCREEN_CENTER_Y-140
|
||||
NumCharsToDrawBehind=2
|
||||
NumCharsToDrawTotal=10
|
||||
@@ -3394,7 +3349,9 @@ TimerSeconds=24
|
||||
TimerStealth=false
|
||||
ShowStyleIcon=false
|
||||
MaxRankingNameLength=4
|
||||
#
|
||||
NextScreen="ScreenProfileSave"
|
||||
#
|
||||
PlayerP1OnePlayerOneSideX=SCREEN_CENTER_X-160
|
||||
PlayerP2OnePlayerOneSideX=SCREEN_CENTER_X+160
|
||||
PlayerP1TwoPlayersTwoSidesX=SCREEN_CENTER_X-160
|
||||
@@ -3402,6 +3359,31 @@ PlayerP2TwoPlayersTwoSidesX=SCREEN_CENTER_X+160
|
||||
PlayerP1OnePlayerTwoSidesX=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]
|
||||
Class="ScreenProfileSave"
|
||||
Fallback="ScreenWithMenuElementsBlank"
|
||||
@@ -3414,8 +3396,8 @@ TimerSeconds=-1
|
||||
[ScreenProfileSaveSummary]
|
||||
Fallback="ScreenProfileSave"
|
||||
#
|
||||
NextScreen="ScreenGameOver"
|
||||
PrevScreen="ScreenGameOver"
|
||||
NextScreen=Branch.AfterSaveSummary()
|
||||
PrevScreen=Branch.AfterSaveSummary()
|
||||
|
||||
[ScreenGameOver]
|
||||
Class="ScreenEnding"
|
||||
@@ -3638,19 +3620,22 @@ PlayRecordHelpOnCommand=halign,0;valign,0;shadowlength,1
|
||||
|
||||
LoopOnChartEnd=true
|
||||
|
||||
CurrentBeatFormat="%s:\n %.5f\n"
|
||||
CurrentSecondFormat="%s:\n %.5f\n"
|
||||
SnapToFormat="%s:\n %s\n"
|
||||
SelectionBeatBeginFormat="%s:\n %.5f"
|
||||
CurrentBeatFormat="%s:\n %.6f\n"
|
||||
CurrentSecondFormat="%s:\n %.6f\n"
|
||||
SnapToFormat="%s: %s\n"
|
||||
SelectionBeatBeginFormat="%s:\n %.6f"
|
||||
SelectionBeatUnfinishedFormat=" ...\n"
|
||||
SelectionBeatEndFormat="-%.5f\n"
|
||||
SelectionBeatEndFormat="-%.6f\n"
|
||||
DifficultyFormat="%s:\n %s\n"
|
||||
RoutinePlayerFormat="%s:\n %d\n"
|
||||
RoutinePlayerFormat="%s: %d\n"
|
||||
DescriptionFormat="%s:\n %s\n"
|
||||
StepAuthorFormat="%s:\n %s\n"
|
||||
ChartNameFormat="%s:\n %s\n"
|
||||
ChartStyleFormat="%s:\n %s\n"
|
||||
MainTitleFormat="%s:\n %s\n"
|
||||
SubtitleFormat="%s:\n %s\n"
|
||||
TapNoteTypeFormat="%s: %s\n"
|
||||
SegmentTypeFormat="%s: %s\n"
|
||||
NumStepsFormat="%s: %d\n"
|
||||
NumJumpsFormat="%s: %d\n"
|
||||
NumHoldsFormat="%s: %d\n"
|
||||
@@ -3659,10 +3644,18 @@ NumHandsFormat="%s: %d\n"
|
||||
NumRollsFormat="%s: %d\n"
|
||||
NumLiftsFormat="%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"
|
||||
Beat0OffsetFormat="%s:\n %.5f secs\n"
|
||||
PreviewStartFormat="%s:\n %.5f secs\n"
|
||||
PreviewLengthFormat="%s:\n %.5f secs\n"
|
||||
Beat0OffsetFormat="%s:\n %.6f secs\n"
|
||||
PreviewStartFormat="%s:\n %.6f secs\n"
|
||||
PreviewLengthFormat="%s:\n %.6f secs\n"
|
||||
|
||||
[ScreenPracticeMenu]
|
||||
Fallback="ScreenEditMenu"
|
||||
@@ -3753,9 +3746,15 @@ TitleX=SCREEN_CENTER_X-80
|
||||
[ScreenMiniMenuAreaMenu]
|
||||
Fallback="ScreenMiniMenu"
|
||||
|
||||
[ScreenMiniMenuAlterMenu]
|
||||
Fallback="ScreenMiniMenu"
|
||||
|
||||
[ScreenMiniMenuStepsInformation]
|
||||
Fallback="ScreenMiniMenu"
|
||||
|
||||
[ScreenMiniMenuStepsData]
|
||||
Fallback="ScreenMiniMenu"
|
||||
|
||||
[ScreenMiniMenuSongInformation]
|
||||
Fallback="ScreenMiniMenu"
|
||||
|
||||
@@ -3949,6 +3948,7 @@ PrevScreen="ScreenNetRoom"
|
||||
NextScreen="ScreenStageInformation"
|
||||
NoSongsScreen=Branch.TitleMenu()
|
||||
RoomSelectScreen="ScreenNetRoom"
|
||||
PlayerOptionsScreen="ScreenPlayerOptions"
|
||||
Codes="CodeDetectorOnline"
|
||||
|
||||
ShowStyleIcon=false
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
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
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
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;
|
||||
@@ -1,5 +1,8 @@
|
||||
[Global]
|
||||
FallbackTheme=default
|
||||
[ScreenTitleMenu]
|
||||
ChoiceNames="1,4,5,6,PopScreen,7"
|
||||
ChoicePopScreen="name,Boobs;text,Boobs";
|
||||
[ScreenGameplay]
|
||||
LifeP1OnCommand=visible,false
|
||||
LifeP2OnCommand=visible,false
|
||||
# LifeP1OnCommand=visible,false
|
||||
# LifeP2OnCommand=visible,false
|
||||
|
||||