huge merge

This commit is contained in:
Colby Klein
2011-05-02 10:50:56 -07:00
655 changed files with 11203 additions and 7674 deletions
@@ -0,0 +1,141 @@
local function Fooled()
local phrases = {
"hornswaggled",
"bamboozled",
"hoodwinked",
"swindled",
"duped",
"hoaxed",
"fleeced",
"shafted",
"caboodled",
"beguiled",
"finagled",
"two-timed",
"suckered",
"flimflammed"
}
return phrases[math.random(#phrases)]
end
local ssc = {
"AJ Kelly as freem",
"Jonathan Payne (Midiman)",
"Colby Klein (shakesoda)",
}
local sm_ssc = {
"Jason Felds (wolfman2000)",
"Alberto Ramos (Daisuke Master)",
"Jack Walstrom (FSX)",
}
local stepmania = {
"Chris Danford",
"Glenn Maynard",
"Steve Checkoway",
-- and various other contributors
}
local contrib = {
"Aldo Fregoso (Aldo_MX)", -- delays
"Chris Eldridge (kurisu)", -- dance-threepanel
"cerbo",
"cesarmades", -- pump/cmd* noteskins
"corec", -- various fixes
"galopin", -- piu PlayStation2 usb mat support
"gholms", -- automake 1.11 support
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
"Kaox", -- pump/default noteskin
"NitroX72", -- pump/frame noteskin
"sy567", -- beginner helper fix
"Thai Pangsakulyanont (theDtTvB)",
"v1toko", -- x-mode from StepNXA
}
local thanks = {
"A Pseudonymous Coder", -- support
"Bill Shillito (DM Ashura)", -- Music (not yet though)
"cpubasic13", -- testing (a lot)
"Dreamwoods",
"Infamouspat", -- oitg bro
"Jason Bolt (LightningXCE)",
"Jousway", -- Noteskins
"Matt1360", -- Automake magic + oitg bro
"Mark Cannon (vyhd)", -- oitg bro + twirl/roll
"Petriform", -- Music
"Renard",
"Ryan McKanna (Plaguefox)",
}
local shoutout = {
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
"Mojang", -- 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
"You showed us... your ultimate dance",
-- "Can't stop crying... buckets of tears!"
}
local copyright = {
"StepMania is released under the terms of the MIT license.",
"If you paid for the program you've been " .. Fooled() .. ".",
"All content is the sole property of their respectful owners."
}
local sections = {
{ "the spinal shark collective (project lead)", ssc },
{ "sm-ssc Team", sm_ssc },
{ "StepMania Team", stepmania },
{ "Other Contributors", contrib },
{ "Special Thanks", thanks },
{ "Shoutouts", shoutout },
{ "Copyright", copyright },
}
-- To add people or sections modify the above.
local lineOn = cmd(zoom,0.875;strokecolor,color("#444444");shadowcolor,color("#444444");shadowlength,3)
local sectionOn = cmd(diffuse,color("#88DDFF");strokecolor,color("#446688");shadowcolor,color("#446688");shadowlength,3)
local item_padding_start = 4;
local creditScroller = Def.ActorScroller {
SecondsPerItem = 0.5;
NumItemsToDraw = 40;
TransformFunction = function( self, offset, itemIndex, numItems)
self:y(30*offset)
end;
OnCommand = cmd(scrollwithpadding,item_padding_start,15);
}
local function AddLine( text, command )
local text = Def.ActorFrame{
LoadFont("Common normal")..{
Text = text or "";
OnCommand = command or lineOn;
}
}
table.insert( creditScroller, text )
end
-- Add sections with padding.
for section in ivalues(sections) do
AddLine( section[1], sectionOn )
for name in ivalues(section[2]) do
AddLine( name )
end
AddLine()
AddLine()
end
creditScroller.BeginCommand=function(self)
SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) );
end;
return Def.ActorFrame{
creditScroller..{
InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64),
}
};
@@ -1,9 +1,9 @@
function GetLocalProfiles()
local ret = {};
local t = {};
for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do
local profile=PROFILEMAN:GetLocalProfileFromIndex(p);
local item = Def.ActorFrame {
local ProfileCard = Def.ActorFrame {
--[[ Def.Quad {
InitCommand=cmd(zoomto,200,1;y,40/2);
OnCommand=cmd(diffuse,Color('Outline'););
@@ -22,10 +22,10 @@ function GetLocalProfiles()
end;
};
};
table.insert( ret, item );
t[#t+1]=ProfileCard;
end;
return ret;
return t;
end;
function LoadCard(cColor)
@@ -38,14 +38,14 @@ function LoadCard(cColor)
return t
end
function LoadPlayerStuff(Player)
local ret = {};
local t = {};
local pn = (Player == PLAYER_1) and 1 or 2;
--[[ local t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 200, 230) .. {
Name = 'BigFrame';
}; --]]
local t = Def.ActorFrame {
t[#t+1] = Def.ActorFrame {
Name = 'JoinFrame';
LoadCard(Color('Orange'));
--[[ Def.Quad {
@@ -62,23 +62,13 @@ function LoadPlayerStuff(Player)
OnCommand=cmd(diffuseshift;effectcolor1,Color('White');effectcolor2,color("0.5,0.5,0.5"));
};
};
table.insert( ret, t );
t = Def.ActorFrame {
t[#t+1] = Def.ActorFrame {
Name = 'BigFrame';
LoadCard(PlayerColor(Player));
};
table.insert( ret, t );
--[[ t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 170, 20) .. {
t[#t+1] = Def.ActorFrame {
Name = 'SmallFrame';
}; --]]
t = Def.ActorFrame {
Name = 'SmallFrame';
--[[ Def.Quad {
InitCommand=cmd(zoomto,170+4,32+4);
OnCommand=cmd(shadowlength,1);
}; --]]
InitCommand=cmd(y,-2);
Def.Quad {
InitCommand=cmd(zoomto,200-10,40+2);
@@ -97,9 +87,8 @@ function LoadPlayerStuff(Player)
OnCommand=cmd(diffuse,PlayerColor(Player);glow,color("1,1,1,0.25"));
};
};
table.insert( ret, t );
t = Def.ActorScroller{
t[#t+1] = Def.ActorScroller{
Name = 'Scroller';
NumItemsToDraw=6;
-- InitCommand=cmd(y,-230/2+20;);
@@ -114,34 +103,17 @@ function LoadPlayerStuff(Player)
end;
children = GetLocalProfiles();
};
table.insert( ret, t );
t = Def.ActorFrame {
t[#t+1] = Def.ActorFrame {
Name = "EffectFrame";
--[[ Def.Quad {
InitCommand=cmd(y,-230/2;vertalign,top;zoomto,200,8;fadebottom,1);
OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25);
};
Def.Quad {
InitCommand=cmd(y,230/2;vertalign,bottom;zoomto,200,8;fadetop,1);
OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25);
}; --]]
};
table.insert( ret, t );
--[[ t = Def.BitmapText {
OnCommand = cmd(y,160);
Name = 'SelectedProfileText';
Font = "Common Normal";
Text = 'No profile';
}; --]]
t = LoadFont("Common Normal") .. {
t[#t+1] = LoadFont("Common Normal") .. {
Name = 'SelectedProfileText';
--InitCommand=cmd(y,160;shadowlength,1;diffuse,PlayerColor(Player));
InitCommand=cmd(y,160;shadowlength,1;);
};
table.insert( ret, t );
return ret;
return t;
end;
function UpdateInternal3(self, Player)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

+3 -2
View File
@@ -1,4 +1,4 @@
[common]
[common]
Top=5
Baseline=26
LineSpacing=28
@@ -42,4 +42,5 @@ line 2=큰탑터투트티펌페
line 3=폼핑할함해행헤혀
line 4=환회휘태난터까시
line 5=간너샐러버문쳐달
line 6=깡천림홍석
line 6=깡천림홍석악전반
line 7=
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 B

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 672 B

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 B

After

Width:  |  Height:  |  Size: 488 B

@@ -0,0 +1 @@
_blank
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 104 B

+11 -14
View File
@@ -435,7 +435,7 @@ SoundResampleQuality=Advanced: Select the resampling quality to use.
SoundVolume=Adjust the volume level during gameplay.
SoundVolumeAttract=Adjust the volume level during attract mode.
Speed=Speed
Stepmania Credits=The Stepmania Development Team
StepMania Credits=The StepMania Development Team.
Steps=Steps
Style=
Test Input=Test the responsiveness of connected joysticks.
@@ -534,6 +534,7 @@ x2.5=2.5x
8=8
8th=8th
9=9
Actual=Actual
Add=Additive
All Music=All Music
AllDifficulties=All Difficulties
@@ -706,6 +707,7 @@ Song BGAnimation=Song BGAnimation
Song Bitmap=Song Bitmap
Song Movie=Song Movie
Space=Space
Specified=Specified
Split=Split
Standard=Standard
Start=Start
@@ -822,6 +824,7 @@ Delete=Delete
Delete beat and shift up=Delete beat and shift up
Description=Description
Difficulty=Difficulty
Display BPM=Display BPM
DisplayAspectRatio=Aspect Ratio
DisplayColorDepth=Display Color
DisplayResolution=Display Resolution
@@ -843,6 +846,7 @@ Edit time signature (top)=Edit time signature (beats per measure)
Edit time signature (bottom)=Edit time signature (single beat note value)
Edit tickcount=Edit tickcount
Edit combo=Edit combo
Edit warp=Edit warp
Editor options=Options
EditorShowBGChangesPlay=Show Backgrounds
Effect=Effect
@@ -900,9 +904,11 @@ Low Meter=Low Meter
Advanced Options=Advanced Options
Main title=Main title
Main title transliteration=Main title transliteration
Max BPM=Max Specified BPM
MaxTextureResolution=Texture Resolution
MenuTimer=Menu Timer
Meter=Meter
Min BPM=Min Specified BPM
Mines=Mines
MoveRandomToEnd=Random At End
More Options=More Options
@@ -985,7 +991,7 @@ ShowSongOptions=Show Song Options
ShowStats=Show Stats
SmoothLines=SmoothLines
SoundEffect=Sound Effect
Stepmania Credits=Stepmania Credits
StepMania Credits=StepMania Credits
Center1Player=Center 1 Player
Song=Song
Song Group=Song Group
@@ -1209,6 +1215,7 @@ Enter a new Time Signature numerator value.=Enter the number of beats per measur
Enter a new Time Signature denominator value.=Enter the note value that represents one beat.
Enter a new Tickcount value.=Enter a new Tickcount value.
Enter a new Combo value.=Enter a new Combo value.
Enter a new Warp value.=Enter the beat you will warp to when you reach this point.
Enter a new artist transliteration.=Enter a new artist transliteration.
Enter a new artist.=Enter a new artist.
Enter a new genre.=Enter a new genre.
@@ -1221,6 +1228,8 @@ 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.
Enter a new sub title.=Enter a new sub title.
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\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\nF1:\n Show help\n
@@ -2221,18 +2230,6 @@ HeaderText=Edit Course
HelpText=&MENUUP;&MENUDOWN; Move &MENULEFT;&MENURIGHT; Change Value
[ScreenOptionsCourseOverview]
HeaderText=Course Overview
[ScreenQuickSetupOverview]
HeaderText=Quick Setup - Welcome!
[ScreenQuickSetupPhaseOne]
HeaderText=Quick Setup - Page 1: Profile
[ScreenQuickSetupPhaseTwo]
HeaderText=Quick Setup - Page 2: Gameplay
[ScreenQuickSetupPhaseThree]
HeaderText=Quick Setup - Page 3: Appearance
[ScreenQuickSetupPhaseFour]
HeaderText=Quick Setup - Page 4: Extra
[ScreenQuickSetupFinished]
HeaderText=Quick Setup - Finished!
[ScreenSelectProfile]
HeaderText=Select Profile
[ScreenSelectPlayStyle]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 104 B

+7 -6
View File
@@ -71,6 +71,13 @@ Branch = {
end;
return "ScreenSelectProfile";
end,
OptionsEdit = function()
-- Similar to above, don't let anyone in here with 0 songs.
if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then
return "ScreenHowToInstallSongs";
end;
return "ScreenOptionsEdit";
end,
AfterProfileLoad = function()
return "ScreenSelectProfile"
end,
@@ -186,10 +193,4 @@ Branch = {
Network = function()
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
end,
QuickSetupStart = "ScreenQuickSetupOverview",
QuickSetupA = "ScreenQuickSetupPhaseOne",
QuickSetupB = "ScreenQuickSetupPhaseTwo",
QuickSetupC = "ScreenQuickSetupPhaseThree",
QuickSetupD = "ScreenQuickSetupPhaseFour",
QuickSetupFinished = "ScreenQuickSetupFinished"
}
+1
View File
@@ -1,5 +1,6 @@
function Actor:LyricCommand(side)
self:settext( Var "LyricText" )
self:draworder(102)
self:stoptweening()
self:shadowlengthx(0)
@@ -40,7 +40,7 @@ v1.1
* Cleaned up code some, I think.
________________________________________________________________________________
anticipated future changes:
* M-Mod support (when sm-ssc imntegrates it)
* 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,0.75x,1x,1.75x,2x,2.25x,2.5x,C150,C300"
local fallbackString = "0.5x,1x,1.5x,2x,3x,4x,8x,C200,C400"
Trace("[CustomSpeedMods]: Could not read SpeedMods; writing fallback to "..path)
file:Open(path, 2)
file:Write(fallbackString)
@@ -141,6 +141,10 @@ function Actor:xy(actorX,actorY)
self:y(actorY)
end
function PositionPerPlayer(player, p1X, p2X)
return player == PLAYER_1 and p1X or p2X
end
-- MaskSource([clearzbuffer])
-- Sets an actor up as the source for a mask. Clears zBuffer by default.
function Actor:MaskSource(noclear)
Binary file not shown.
+148 -132
View File
@@ -64,6 +64,7 @@ OverlayScreens="ScreenSystemLayer,ScreenSyncOverlay,ScreenStatsOverlay,ScreenDeb
PercentScoreDecimalPlaces=2
# 02 #
[LightsManager]
# Mostly useless since it doesn't work, as well as that barely anyone has
# lights to play around with.
@@ -122,12 +123,39 @@ UnlockColor=color("1,0.5,0,1")
ExtraColor=color("#ff0000") -- red
[UnlockManager]
# Unlock specific things. we'll go in-depth with this one day, but it really
# isnt what sm-ssc was designed for.
# Unlock specific things.
AutoLockChallengeSteps=false
UnlockNames=""
# useful commands:
# require,(UnlockRequirement),(value);
# where (UnlockRequirement) is one of the UnlockRequirement enums.
# song,(Song Name);
# sets a Song to be unlocked
# course,(Course Name);
# sets a Course to be unlocked
# roulette;
# Song shows up in roulette (useful with Song only)
# mod,(modifier);
# sets a modifier to be unlocked.
# code,(code);
# assigns a code to the unlock
# examples:
# 1) The song "Pledge" requires 500 AP.
# Unlock1Command=song,"Pledge";require,"UnlockRequirement_ArcadePoints",500
# 2) The song "ABC" can be unlocked via roulette; pick an arbitrary code
# to use to store the unlock.
# Unlock2Command=song,"ABC";code,"59183751";roulette
# 03 #
[ArrowEffects]
# Complicated stuff you probably shouldn't ever mess with or else you'll
# destroy mods completely!
@@ -193,6 +221,8 @@ BottomEdge=SCREEN_BOTTOM
# Scroll stuff when you roll over it, DDR Extreme style.
ScrollRandom=false
ScrollRoulette=false
# Control how fast the banner scrolls. Higher numbers mean slower.
ScrollSpeedDivisor=2
[BitmapText]
# The colors in the 'roulette' text. you can have alot!
@@ -233,6 +263,11 @@ FormatString="%03.0f"
[CodeDetector]
# Codes on the MusicWheel that change stuff!
# For Future Reference:
# @ = Holding
# - = In Conjuction With / Then
# ~ = Released
# + = At The Same Time
PrevSteps1="Up,Up"
PrevSteps2="MenuUp,MenuUp"
NextSteps1="Down,Down"
@@ -279,6 +314,7 @@ SaveScreenshot1="MenuLeft-MenuRight"
SaveScreenshot2=""
CancelAllPlayerOptions="Left,Right,Left,Right,Left,Right"
BackInEventMode=""
[CodeDetectorOnline]
Fallback="CodeDetector"
PrevSteps1="MenuUp,MenuUp"
@@ -337,6 +373,7 @@ TipShowTime=4
TipSwitchTime=1
# The Command when its made
TipOnCommand=shadowlength,0;diffuseblink
[Judgment]
# New #
JudgmentOnCommand=
@@ -438,6 +475,7 @@ PumpRoutineString="Routine"
# Difficulty_Edit-StepsType_Pump_Halfdouble=Edit
# Difficulty_Edit-StepsType_Pump_Double=Edit
# Course=Progressive
[CustomScoring]
# Custom scoring, usually good for custom games.
@@ -464,6 +502,7 @@ PointsCheckpointMiss=-5
PointsNone=0
PointsHoldHeld=+5
PointsHoldLetGo=-5
[DifficultyList]
# A list that shows difficulties in a song.
CapitalizeDifficultyNames=false
@@ -483,6 +522,9 @@ BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0
# ?
BannerResetFadeCommand=diffusealpha,1
BannerRouletteCommand=
BannerRandomCommand=
[Gameplay]
# System Direction
ComboIsPerRow=ComboPerRow()
@@ -585,6 +627,7 @@ StreamX=0
StreamY=0
OverX=0
OverY=0
[LifeMeterBattery]
# The bar that shows up in Oni mode.
@@ -627,7 +670,6 @@ DancePointsP2Y=0
DancePointsP2OnCommand=zoom,0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2)
DancePointsP2OffCommand=
[LifeMeterTime]
# The Lifemeter that shows up when you're playing survival.
@@ -838,16 +880,19 @@ PortalColor=color("1,0,0,1")
SortOrders={ "SortOrder_Preferred", "SortOrder_Group", "SortOrder_Title", "SortOrder_BPM", "SortOrder_Artist", "SortOrder_Genre" }
# SortOrders={ "SortOrder_Preferred", "SortOrder_Group", "SortOrder_Title", "SortOrder_BPM", "SortOrder_Popularity", "SortOrder_Artist", "SortOrder_Genre" }
#
ShowRoulette=true
ShowRandom=false
ShowPortal=false
#
SortBPMDivision=20
SortLengthDivision=5
MostPlayedSongsToShow=30
RecentSongsToShow=30
#
UseEasyMarkerFlag=false
#
ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent"
# ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent,NormalMode,BattleMode"
ChoicePreferred="sort,Preferred"
@@ -870,7 +915,7 @@ ChoiceLength="sort,Length"
ChoiceRecent="sort,Recent"
ChoiceNormalMode="playmode,regular"
ChoiceBattleMode="playmode,battle"
#
CustomWheelItemNames=""
[CourseWheel]
@@ -963,6 +1008,7 @@ RoutineNoteSkinP2=RoutineSkinP2()
BPMColor=color("1,0,0,1")
StopColor=color("0.8,0.8,0,1")
DelayColor=color("0,0.8,0.8,1")
WarpColor=color("1,0,0.5,1")
TimeSignatureColor=color("1,0.55,0,1")
TickcountColor=color("0,1,0,1")
ComboColor=color("0.55,1,0,1")
@@ -970,13 +1016,15 @@ ComboColor=color("0.55,1,0,1")
BPMIsLeftSide=true
StopIsLeftSide=true
DelayIsLeftSide=true
WarpIsLeftSide=false
TimeSignatureIsLeftSide=true
TickcountIsLeftSide=false
ComboIsLeftSide=false
#
BPMOffsetX=60
StopOffsetX=10
DelayOffsetX=10
StopOffsetX=50
DelayOffsetX=120
WarpOffsetX=60
TimeSignatureOffsetX=30
TickcountOffsetX=10
ComboOffsetX=30
@@ -1095,7 +1143,6 @@ TextOffCommand=
[ScoreDisplayOni]
[ScoreDisplayLifeTime]
FrameX=
FrameY=
@@ -1245,6 +1292,7 @@ SoundProperty="Pitch"
PropertyMin=7/8
PropertyCenter=1.0
PropertyMax=9/8
[StepsDisplayListRow]
FrameX=0
FrameY=0
@@ -1321,6 +1369,7 @@ ShowTraining=false
BlinkPlayersBest=true
# 04 #
[Screen]
ScreenInitCommand=
ScreenOnCommand=
@@ -1371,6 +1420,7 @@ HeaderTextOffCommand=
LineOnCommand=zoom,0.75
#
[ScreenSystemLayer]
Class="ScreenSystemLayer"
Fallback="Screen"
@@ -1421,6 +1471,7 @@ Fallback="Screen"
StatusOnCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+150;shadowlength,2;strokecolor,color("#000000");
AdjustmentsOnCommand=x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y;
#
[ScreenStatsOverlay]
Class="ScreenStatsOverlay"
Fallback="Screen"
@@ -1434,6 +1485,7 @@ SkipOnCommand=zoom,0.5
SkipWidth=190
SkipSpacingY=14
#
[ScreenWithMenuElements]
Class="ScreenWithMenuElements"
Fallback="Screen"
@@ -1657,21 +1709,18 @@ Choice1="applydefaultoptions;text,Game Start;screen,"..Branch.StartGame()
Choice2="screen,ScreenNetworkOptions;text,Play Online"
Choice3="screen,ScreenSelectGame;text,Select Game"
Choice4="screen,ScreenOptionsService;text,Options"
Choice5="screen,ScreenOptionsEdit;text,Edit/Share"
Choice5="text,Edit/Share;screen,"..Branch.OptionsEdit()
Choice6="screen,ScreenJukeboxMenu;text,Jukebox"
Choice7="screen,ScreenExit;text,Exit"
Choice8="screen,ScreenTest;text,Sandbox"
Choice9="screen,ScreenQuickSetupOverview;text,Setup"
# Aliases for the future.
ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup"
ChoiceGameStart="applydefaultoptions;screen,ScreenSelectProfile;text,Game Start"
ChoiceGameStart="applydefaultoptions;text,Game Start;screen,"..Branch.StartGame()
ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online"
ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game"
ChoiceOptions="screen,ScreenOptionsSystemDirection;text,Options"
ChoiceEdit="screen,ScreenOptionsEdit;text,Edit/Share"
ChoiceEdit="text,Edit/Share;screen,"..Branch.OptionsEdit()
ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox"
ChoiceSandbox="screen,ScreenTest;text,Sandbox"
ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup"
ChoiceExit="screen,ScreenExit;text,Exit"
#
AllowRepeatingInput=true
@@ -1720,87 +1769,7 @@ LogoX=SCREEN_CENTER_X
LogoY=SCREEN_CENTER_Y-80
LogoOnCommand=bob;effectperiod,4;effectmagnitude,0,8,0;zoom,0;bounceend,0.35;zoom,1
LogoOffCommand=
[ScreenQuickSetupOverview]
Class="ScreenSelectMaster"
Fallback="ScreenSelectMaster"
#
NextScreen=Branch.QuickSetupA
PrevScreen=Branch.TitleMenu()
#
TimerSeconds=-1
#
DefaultChoice="Start"
ChoiceNames="Start,Back"
#
ChoiceStart="name,Start;screen,".. Branch.QuickSetupA
ChoiceBack="name,Back;screen,".. Branch.TitleMenu
#
PerChoiceScrollElement=false
PerChoiceIconElement=false
#
ShowScroller=true
WrapScroller=false
ShowIcon=true
[ScreenQuickSetupPhaseOne]
Class="ScreenSelectMaster"
Fallback="ScreenQuickSetupOverview"
#
NextScreen=Branch.QuickSetupBl
PrevScreen=Branch.QuickSetupStart
#
DefaultChoice="Set"
ChoiceNames="Set,Back"
#
ChoiceSet="name,Set;screen,".. Branch.QuickSetupB
ChoiceBack="name,Back;screen,".. Branch.QuickSetupStart
[ScreenQuickSetupPhaseTwo]
Class="ScreenSelectMaster"
Fallback="ScreenQuickSetupOverview"
#
NextScreen=Branch.QuickSetupC
PrevScreen=Branch.QuickSetupA
#
DefaultChoice="Set"
ChoiceNames="Set,Back"
#
ChoiceSet="name,Set;screen,".. Branch.QuickSetupC
ChoiceBack="name,Back;screen,".. Branch.QuickSetupA
[ScreenQuickSetupPhaseThree]
Class="ScreenSelectMaster"
Fallback="ScreenQuickSetupOverview"
#
NextScreen=Branch.QuickSetupD
PrevScreen=Branch.QuickSetupB
#
DefaultChoice="Set"
ChoiceNames="Set,Back"
#
ChoiceSet="name,Set;screen,".. Branch.QuickSetupD
ChoiceBack="name,Back;screen,".. Branch.QuickSetupB
[ScreenQuickSetupPhaseFour]
Class="ScreenSelectMaster"
Fallback="ScreenQuickSetupOverview"
#
NextScreen=Branch.QuickSetupFinished
PrevScreen=Branch.QuickSetupC
#
DefaultChoice="Set"
ChoiceNames="Set,Back"
#
ChoiceSet="name,Set;screen,".. Branch.QuickSetupFinished
ChoiceBack="name,Back;screen,".. Branch.QuickSetupC
[ScreenQuickSetupFinished]
Class="ScreenSelectMaster"
Fallback="ScreenQuickSetupOverview"
#
NextScreen=Branch.TitleMenu()
PrevScreen=Branch.QuickSetupD
#
DefaultChoice="Set"
ChoiceNames="Set,Back"
#
ChoiceSet="name,Set;screen,".. Branch.TitleMenu
ChoiceBack="name,Back;screen,".. Branch.QuickSetupD
[ScreenProfileLoad]
Class="ScreenProfileLoad"
Fallback="ScreenWithMenuElementsBlank"
@@ -1817,7 +1786,7 @@ LoadEdits=true
Fallback="ScreenWithMenuElements"
Class="ScreenSelectProfile"
#
ScreenOnCommand=lockinput,1
ScreenOnCommand=%function(self) self:lockinput(3); end;
#
NextScreen=Branch.AfterSelectProfile()
PrevScreen=Branch.TitleMenu()
@@ -1830,7 +1799,8 @@ CodeUp="+MenuUp"
CodeUp2="+Up"
CodeDown="+MenuDown"
CodeDown2="+Down"
CodeStart="Start"
# Holding Start let us skip ( annoying )
CodeStart="~Start,+Start"
CodeBack="Back"
CodeCenter="Center"
CodeDownLeft="DownLeft"
@@ -1850,16 +1820,16 @@ DefaultChoice="Single"
ChoiceNames=GameCompatibleModes()
#
OptionOrderAuto="1:2,2:1"
ChoiceSingle="name,Single;style,single;screen,"..Branch.AfterSelectPlayMode()
ChoiceDouble="name,Double;style,double;screen,"..Branch.AfterSelectPlayMode()
ChoiceSolo="name,Solo;style,solo;screen,"..Branch.AfterSelectPlayMode()
ChoiceVersus="name,Versus;style,versus;screen,"..Branch.AfterSelectPlayMode()
ChoiceCouple="name,Couple;style,couple;screen,"..Branch.AfterSelectPlayMode()
ChoiceHalfDouble="name,HalfDouble;style,halfdouble;screen,"..Branch.AfterSelectPlayMode()
Choice5Keys="name,5Keys;style,single5;;screen,"..Branch.AfterSelectPlayMode()
Choice7Keys="name,7Keys;style,single7;screen,"..Branch.AfterSelectPlayMode()
Choice10Keys="name,10Keys;style,double10;screen,"..Branch.AfterSelectPlayMode()
Choice14Keys="name,14Keys;style,double14;screen,"..Branch.AfterSelectPlayMode()
ChoiceSingle="name,Single;style,single;text,Single;screen,"..Branch.AfterSelectPlayMode()
ChoiceDouble="name,Double;style,double;text,Double;screen,"..Branch.AfterSelectPlayMode()
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()
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()
Choice10Keys="name,10Keys;style,double10;text,10Keys;screen,"..Branch.AfterSelectPlayMode()
Choice14Keys="name,14Keys;style,double14;text,14Keys;screen,"..Branch.AfterSelectPlayMode()
ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectPlayMode()
#
PerChoiceScrollElement=false
@@ -1880,7 +1850,7 @@ PrevScreen=Branch.TitleMenu()
#
TimerSeconds=40
#
DefaultChoice="Easy"
DefaultChoice="Normal"
ChoiceNames="Normal,Rave,Extended,Oni,Endless"
#
PerChoiceScrollElement=false
@@ -1890,13 +1860,13 @@ ShowScroller=true
WrapScroller=true
ShowIcon=false
#
ChoiceEasy="applydefaultoptions;name,Easy;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceNormal="applydefaultoptions;name,Normal;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceHard="applydefaultoptions;name,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceRave="applydefaultoptions;name,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave"
ChoiceExtended="applydefaultoptions;name,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended"
ChoiceOni="applydefaultoptions;name,Oni;playmode,oni;screen,ScreenSelectCourse;setenv,sMode,Oni"
ChoiceEndless="applydefaultoptions;name,Endless;playmode,endless;screen,ScreenSelectCourse;setenv,sMode,Endless"
ChoiceEasy="applydefaultoptions;name,Easy;text,Easy;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceNormal="applydefaultoptions;name,Normal;text,Normal;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceHard="applydefaultoptions;name,Hard;text,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal"
ChoiceRave="applydefaultoptions;name,Rave;text,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave"
ChoiceExtended="applydefaultoptions;name,Extended;text,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended"
ChoiceOni="applydefaultoptions;name,Oni;text,Oni;playmode,oni;screen,ScreenSelectCourse;setenv,sMode,Oni"
ChoiceEndless="applydefaultoptions;name,Endless;text,Endless;playmode,endless;screen,ScreenSelectCourse;setenv,sMode,Endless"
[ScreenSelectCharacter]
Class="ScreenSelectMaster"
@@ -1911,6 +1881,7 @@ PerChoiceIconElement=false
ShowScroller=true
WrapScroller=true
ShowIcon=false
[ScreenGameInformation]
Class="ScreenSelectMaster"
Fallback="ScreenSelectMaster"
@@ -2035,6 +2006,7 @@ ScreenModsCommand=setupcoursestagemods
#
MusicWheelType="CourseWheel"
Codes="CourseCodeDetector"
[CourseCodeDetector]
Fallback="CodeDetector"
NextSort1=
@@ -2042,7 +2014,6 @@ NextSort2=
NextSort3=
NextSort4=
[StepsDisplay]
FrameX=0
FrameY=0
@@ -2076,7 +2047,7 @@ ShowAutogen=true
AutogenX=40
AutogenY=0
AutogenOnCommand=
AutogenSetCommand=%function(self,param) if param.CustomDifficulty then self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); end end
AutogenSetCommand=
ShowStepsType=false
StepsTypeX=0
StepsTypeY=0
@@ -2137,9 +2108,12 @@ PageOnCommand=
ContainerOnCommand=
ContainerOffCommand=
CursorOnCommand=
LineHighlightOnCommand=
LineHighlightChangeCommand=
LineHighlightChangeToExitCommand=
LineHighlightP1OnCommand=
LineHighlightP1ChangeCommand=
LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
ShowScrollBar=false
ScrollBarHeight=0
ScrollBarTime=0
@@ -2527,9 +2501,13 @@ Fallback="ScreenOptionsSimple"
OptionRowNormalMetricsGroup="OptionRowService"
LineHighlightOnCommand=visible,false
LineHighlightChangeCommand=
LineHighlightChangeToExitCommand=
LineHighlightP1OnCommand=visible,false
LineHighlightP1ChangeCommand=
LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=visible,false
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
CursorOnCommand=visible,false
@@ -2540,7 +2518,7 @@ Fallback="ScreenOptionsSimpleService"
NextScreen=Branch.Init()
PrevScreen=Branch.Init()
LineNames="SystemDirection,KeyConfig,GameType,6,8,Reload,MoreOptions"
LineNames="SystemDirection,KeyConfig,GameType,6,8,Reload,Credits,MoreOptions"
# LineNames="SystemDirection,1,2,Sync,13,3,10,11,4,12,6,5,Theme,8,9"
Line1="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings"
Line2="gamecommand;screen,ScreenTestInput;name,Test Input"
@@ -2561,6 +2539,7 @@ LineKeyConfig="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings"
LineGameType="gamecommand;screen,ScreenSelectGame;name,Select Game"
LineSync="gamecommand;screen,ScreenGameplaySyncMachine;name,Calibrate Machine Sync"
LineReload="gamecommand;screen,ScreenReloadSongs;name,Reload Songs"
LineCredits="gamecommand;screen,ScreenCredits;name,StepMania Credits"
LineMoreOptions="gamecommand;screen,ScreenOptionsExtended;name,More Options"
[ScreenOptionsExtended]
@@ -2585,9 +2564,13 @@ PrevScreen="ScreenOptionsService"
NextScreen="ScreenOptionsService"
HelpText=Screen.String("HelpTextOptionsAndBack")
LineHighlightOnCommand=visible,false
LineHighlightChangeCommand=
LineHighlightChangeToExitCommand=
LineHighlightP1OnCommand=visible,false
LineHighlightP1ChangeCommand=
LineHighlightP1ChangeToExitCommand=
LineHighlightP2OnCommand=visible,false
LineHighlightP2ChangeCommand=
LineHighlightP2ChangeToExitCommand=
#
ExplanationTogetherX=SCREEN_CENTER_X
ExplanationTogetherY=SCREEN_CENTER_Y+174
@@ -2596,6 +2579,7 @@ ExplanationTogetherOffCommand=
[ScreenOptionsServiceExtendedChild]
Fallback="ScreenOptionsServiceChild"
[ScreenMiniMenu]
Class="ScreenMiniMenu"
Fallback="ScreenOptions"
@@ -2915,12 +2899,14 @@ Line16="list,Steps"
Line17="list,Characters"
#
[ScreenPlayerOptionsRestricted]
Fallback="ScreenPlayerOptions"
NextScreen="ScreenStageInformation"
LineNames="1,8,16,17"
# funny
[ScreenSongOptions]
Fallback="ScreenOptions"
Class="ScreenSongOptions"
@@ -2955,6 +2941,7 @@ AllowStartToSkip=false
PrepareScreen=
# 05 # A
[ScreenExit]
# Midiman:
# Fun fact, if you don't enable this screen, Force Crashing will hang
@@ -3248,6 +3235,7 @@ DebugX=SCREEN_CENTER_X
DebugY=SCREEN_BOTTOM-72
DebugOnCommand=zoom,0.75
#
SongNumberFormat="%d"
SongNumberP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") - 60
SongNumberP1Y=SCREEN_TOP+24+7
SongNumberP1OnCommand=visible,false
@@ -3299,6 +3287,7 @@ PlayerOptionsHideFailType=false
MaxComboNumDigits=4
#
ShowBannerArea=true
RollingNumbersClass="RollingNumbersJudgment"
ShowSharedJudgmentLineLabels=false
ShowJudgmentLineW1=false
ShowJudgmentLineW2=false
@@ -3367,6 +3356,7 @@ DisqualifiedP2OffCommand=
#
DetailLineFormat="%3d/%3d"
#
[ScreenEvaluationNormal]
Fallback="ScreenEvaluation"
#
@@ -3419,11 +3409,13 @@ NextScreen=Branch.AfterProfileSave()
PrevScreen=Branch.TitleMenu()
#
TimerSeconds=-1
[ScreenProfileSaveSummary]
Fallback="ScreenProfileSave"
#
NextScreen="ScreenGameOver"
PrevScreen="ScreenGameOver"
[ScreenGameOver]
Class="ScreenEnding"
Fallback="ScreenAttract"
@@ -3486,6 +3478,7 @@ Answer3Of3OffCommand=
#
# stuff for edit mode:
#
[ScreenOptionsEdit]
Class="ScreenOptionsMaster"
Fallback="ScreenOptionsSimpleService"
@@ -3614,6 +3607,7 @@ TimerSeconds=-1
HelpText=Screen.String("HelpTextOptionsAndBack")
# could use a redo but whatever
[ScreenEdit]
Class="ScreenEdit"
Fallback="ScreenWithMenuElementsBlank"
@@ -3628,6 +3622,7 @@ ShowHelp=false
AllowOperatorMenuButton=false
ShowCreditDisplay=false
ShowStyleIcon=false
InvertScrollSpeedButtons=false
TimerSeconds=-1
EditModifiers="no reverse"
EditHelpX=SCREEN_LEFT+4
@@ -3694,13 +3689,14 @@ CancelTransitionsOut=true
PlayMusic=false
TimerSeconds=-1
ShowStyleIcon=false
LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16"
LineNames="1,2,3,4,5,6,R,7,8,9,10,11,12,13,14,15,16"
Line1="list,Speed"
Line2="list,Accel"
Line3="list,Effect"
Line4="list,Appearance"
Line5="list,Turn"
Line6="list,Insert"
LineR="list,Remove"
Line7="list,Scroll"
Line8="list,NoteSkins"
Line9="list,Holds"
@@ -3717,6 +3713,7 @@ OutCancelCommand=
Fallback="StepsDisplay"
# oh, right, minimenus.
[ScreenMiniMenuEditHelp]
Fallback="ScreenMiniMenu"
ShowFooter=false
@@ -3778,6 +3775,7 @@ Fallback="ScreenMiniMenu"
Fallback="ScreenMiniMenu"
# Export Packages
[ScreenOptionsExportPackage]
Class="ScreenOptionsExportPackage"
Fallback="ScreenOptionsSimpleService"
@@ -3795,6 +3793,7 @@ Fallback="OptionRowService"
TitleX=SCREEN_CENTER_X-150
# Manage Courses
[OptionRowCourseOverview]
Fallback="OptionRowService"
ItemsLongRowSharedX=SCREEN_CENTER_X-100
@@ -3843,6 +3842,7 @@ EditScreen="ScreenOptionsEditCourse"
OptionRowNormalMetricsGroup="OptionRowCourseOverview"
# visual/interactive syncing
[ScreenGameplaySyncMachine]
Class="ScreenGameplaySyncMachine"
Fallback="ScreenGameplay"
@@ -3851,7 +3851,7 @@ NextScreen="ScreenOptionsExtended"
PlayerType="PlayerSyncMachine"
AllowCenter1Player=false
SyncInfoOnCommand=x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y;zoom,0;decelerate,0.5;zoom,0.6
SyncInfoOnCommand=x,PositionPerPlayer(GAMESTATE:GetMasterPlayerNumber(),SCREEN_CENTER_X+160,SCREEN_CENTER_X-160);y,SCREEN_CENTER_Y;zoom,0;decelerate,0.5;zoom,0.6
# hidden by default:
LifeP1OnCommand=visible,false
@@ -3872,6 +3872,7 @@ Fallback="Player"
ComboOnCommand=visible,false
# sm-ssc helper screens
[ScreenHowToInstallSongs]
Class="ScreenSplash"
Fallback="ScreenSplash"
@@ -3882,6 +3883,7 @@ TimerSeconds=-1
ShowHelp=false
# stuff for online mode:
[ScreenSMOnlineLogin]
Class="ScreenSMOnlineLogin"
Fallback="ScreenOptionsServiceChild"
@@ -4126,6 +4128,7 @@ UserOnCommand=
UserOffCommand=
# Arcade
[ScreenLogo]
Fallback="ScreenAttract"
#
@@ -4189,6 +4192,7 @@ ChoiceNames="1"
IdleCommentSeconds=-1
IdleTimeoutSeconds=-1
IdleTimeoutScreen=Branch.AfterInit()
[ScreenDemonstration]
Fallback="ScreenGameplay"
Class="ScreenDemonstration"
@@ -4232,3 +4236,15 @@ StartScreen="ScreenTitleMenu"
LightsMode="LightsMode_Demonstration"
ShowCourseModifiersProbability=0
AllowAdvancedModifiers=true
[ScreenCredits]
Class="ScreenSplash"
Fallback="ScreenSplash"
AllowStartToSkip=true
NextScreen=Branch.TitleMenu()
PrevScreen=Branch.TitleMenu()
TimerSeconds=40
TimerStealth=true
ForceTimer=true
TimerMetricsGroup="MenuTimerNoSound"
TimerOnCommand=visible,false
@@ -0,0 +1 @@
return Def.Actor { OnCommand=cmd(sleep,0.3); }
@@ -0,0 +1 @@
return Def.Actor { OnCommand=cmd(sleep,0.3); }
@@ -0,0 +1,384 @@
local PlayerIndexes = { PlayerNumber_P1 = 1, PlayerNumber_P2 = 1 }
-- Reads mods from a file
-- keywords: Speed, Noteskins, None, Clear
local function ReadMods()
local file = THEME:GetCurrentThemeDirectory() .. "mods.txt"
local mods = File.Read( file )
if not mods
or mods == ""
then
local buff = ";Set mods here, one per line or various in one separated with commas\r\n;Keywords: 'Speed', 'Noteskins', 'None', 'Clear'\r\nSpeeds\r\nNoteskins"
File.Write(file,buff)
return {
ReadSpeedMods();
NOTESKIN:GetNoteSkinNames();
"Clear";
}
end
mods = string.gsub(mods,"\r","")
mods = split("\n",mods)
local ret = {}
local clear = false
for k,v in ipairs(mods) do
if string.sub(v,1,1) == ";"
or v == ""
then
--skip
elseif v == "Speeds" then
table.insert(ret, ReadSpeedMods())
elseif v == "Noteskins" then
table.insert(ret, NOTESKIN:GetNoteSkinNames())
else
local ModToAdd = string.gsub(v,"%s","")
if string.find(ModToAdd, ",") ~= nil then
ModToAdd = split(",", ModToAdd)
if ModToAdd[1] ~= "None" then
table.insert(ModToAdd,1,"None")
end
table.insert(ret,ModToAdd)
else
if ModToAdd == "Clear" then
if not clear then table.insert(ret,ModToAdd) end
clear = true
end
end
end
end
-- This will happen...
if not clear then table.insert(ret,"Clear") end
return ret
end
local modslist = ReadMods()
-- Displays the mods with actorscrollers
local function OptionsListDisplay(player)
local function GetPlayerMods()
local playerstate = GAMESTATE:GetPlayerState(player)
local playermods = playerstate:GetPlayerOptionsArray('ModsLevel_Preferred')
return playermods
end
local make = {}
-- iterate modslist entries
for k,v in ipairs(modslist) do
-- not kinopio
local RowToAdd
if type(v) == "table" then
-- it's a table, make it a scroller
local choices = {}
-- build the choices
for i,j in ipairs(v) do
choices[i] = LoadFont()..{ Text=j };
end
RowToAdd = Def.ActorScroller {
NumItemsToDraw=3;
SecondsPerItem=0.075;
-- init indexes here
-- I like how InitCommand is not allowed to be played or queued
-- (HURR TOO MUCH COMMANDS ARG!)
SetChoicesCommand=function(self)
local found = false
--SCREENMAN:SystemMessage(join(",", defmods))
for idx,Mod in ipairs(GetPlayerMods()) do
-- In before I forgot what's this: those are the nod entries
for jdx,Nod in ipairs(v) do
if Mod == Nod then
found = true
self:SetCurrentAndDestinationItem(jdx-1);
break
end
end
end
-- oops, no defaults, set them
if not found then
for idx,Mod in ipairs(v) do
if Mod == "1x"
or Mod == "default"
or Mod == "None"
then
self:SetCurrentAndDestinationItem(idx-1);
break
else
self:SetCurrentAndDestinationItem(0);
end
end
end
end;
CleanModsMessageCommand=function(self,params)
if player ~= params.PlayerNumber then return end
self:playcommand("SetChoices");
end;
InitCommand=function(self)
self:SetLoop(true);
self:playcommand("SetChoices");
end;
TransformFunction=function(self, offset, itemIndex, numItems)
self:x(offset * 100);
local focus = math.abs(offset)
focus = scale(focus,0,1,1,0.75)
self:zoom(focus)
end;
ChoiceSwapMessageCommand=function(self,params)
if params.PlayerNumber ~= player then return end
if params.Row ~= k then return end
local index = params.Index
--SCREENMAN:SystemMessage(ToEnumShortString(player).." row mods index: "..index);
if params.bHasLooped then
self:SetCurrentAndDestinationItem(-1)
end
self:SetDestinationItem(index-1)
end;
-- actors are wrapped here:
children = choices;
};
elseif type(v) == "string" then
-- it's not, make single switchable choice
RowToAdd = Def.ActorFrame {
LoadFont()..{
Text=v;
-- init highlights here
SetChoicesCommand=function(self)
local cc = color("#000000")
for idx,Mod in ipairs(GetPlayerMods()) do
if Mod == v then
cc = color("#ffffff")
break
end
end
if v == "Clear" then
cc = color("#0000ff")
end
self:diffuse(cc);
end;
InitCommand=function(self)
self:playcommand("SetChoices");
end;
-- Following commands you'll understand (I've heard that somewhere...)
CleanModsMessageCommand=function(self,params)
--if v == "Clear" then return end
if player ~= params.PlayerNumber then return end
self:playcommand("SetChoices");
--self:diffuse(color("#000000"));
end;
-- cmd(diffuse,color("#000000"));
ChoiceToggleMessageCommand=function(self,params)
if params.PlayerNumber ~= player then return end
if params.Row ~= k then return end
local cc = color("#ffffff")
if not params.Activated then
cc = color("#000000")
end
--self:visible(params.Activated)
-- why the fuck is not coloring itself? oh I think I got it... duh!
self:diffuse(cc)
end;
}
}
else
--table.remove(modslist,k)
--Def.Actor { };
end
make[k] = RowToAdd
end
return Def.ActorFrame {
Draw.RoundBox(300,320,50,50,color("1,0,1,0.5"));
Draw.RoundBox(300,50,25,25,color("1,0,0,0.5"));
Def.ActorScroller {
Name="OptionsListScroller";
NumItemsToDraw=5;
SecondsPerItem=0.075;
InitCommand=function(self)
self:SetLoop(true);
end;
TransformFunction=function(self, offset, itemIndex, numItems)
self:y(offset * 50);
end;
children = make;
};
}
end
-- Internals
return Def.ActorFrame {
OptionsListDisplay(PLAYER_1)..{
Name="OptionsListDisplay"..PLAYER_1;
Condition=GAMESTATE:IsHumanPlayer(PLAYER_1);
InitCommand=function(self)
if #GAMESTATE:GetHumanPlayers() == 1
and PREFSMAN:GetPreference("Center1Player")
then
self:CenterX()
else
self:FromLeft(160)
end
self:CenterY();
end;
};
OptionsListDisplay(PLAYER_2)..{
Name="OptionsListDisplay"..PLAYER_2;
Condition=GAMESTATE:IsHumanPlayer(PLAYER_2);
InitCommand=function(self)
if #GAMESTATE:GetHumanPlayers() == 1
and PREFSMAN:GetPreference("Center1Player")
then
self:CenterX()
else
self:FromRight(-160)
end
self:CenterY();
end;
};
-- Everything here and beyond is pure magic
CodeMessageCommand=function(self,params)
-- I'm reusing code from CustomCodeDetector
local code = params.Name
local player = params.PlayerNumber
local movement = "none"
local modscleared = false
if not GAMESTATE:IsHumanPlayer(player) then return end;
if code == "Back" then
--SCREENMAN:SystemMessage(ToEnumShortString(player).." closed the oplist")
SCREENMAN:GetTopScreen():Cancel();
elseif code == "Prev" then
PlayerIndexes[player] = PlayerIndexes[player]-1
if PlayerIndexes[player] < 1 then
PlayerIndexes[player] = #modslist
movement = "first"
end
--SCREENMAN:SystemMessage(ToEnumShortString(player).." index: "..PlayerIndexes[player]);
elseif code == "Next" then
PlayerIndexes[player] = PlayerIndexes[player]+1
if PlayerIndexes[player] > #modslist then
PlayerIndexes[player] = 1
movement = "last"
end
--SCREENMAN:SystemMessage(ToEnumShortString(player).." index: "..PlayerIndexes[player]);
elseif code == "Toggle" then
-- changes will be done here
-- get playerstate and playermods
local playerstate = GAMESTATE:GetPlayerState(player)
local playermods = playerstate:GetPlayerOptionsArray('ModsLevel_Preferred')
-- let's check in what index we are
local ModToAdd = modslist[PlayerIndexes[player]]
--the mod is a table, scroll those
if type(ModToAdd) == "table" then
-- iteration, once again, like in the custom code detector I made :x
local index = 1
local found = false
local looped = false
for i,j in ipairs(playermods) do
for k,l in ipairs(ModToAdd) do
if j == l then
found = true
index = k+1
if index > #ModToAdd then
index = 1
looped = true
end
--replace
playermods[i] = ModToAdd[index]
break
end
end
end
-- looks like nothing was found, we can assume those are the default mods
-- (1x and default noteskin) they are not listed for some reason...
if not found then
-- set the first on the list (nono, better list 1x and default)
for k,v in ipairs(ModToAdd) do
if v == "1x"
or v == "default"
then
index = k+1
if index > #ModToAdd then
index = 1
looped = true
end
table.insert(playermods, ModToAdd[index])
break
elseif v == "None" then
table.insert(playermods, ModToAdd[2])
index = 2
end
end
end
-- send message broadcasts to be able to move things on the oplist displays
MESSAGEMAN:Broadcast("ChoiceSwap",{ Row = PlayerIndexes[player]; Index = index; PlayerNumber = player; bHasLooped = looped })
elseif ModToAdd == "Clear" then
local defaultmods = PREFSMAN:GetPreference("DefaultModifiers")
playermods = split(",", defaultmods)
modscleared = true
--MESSAGEMAN:Broadcast("CleanMods",{ PlayerNumber = player });
else
-- if type(ModToAdd) == "string" then end
-- we know it's a string...
local found = false
for i,j in ipairs(playermods) do
if j == ModToAdd then
-- remove it
found = true
table.remove(playermods, i)
break
end
end
if not found then
table.insert(playermods, ModToAdd)
end
MESSAGEMAN:Broadcast("ChoiceToggle",{ Row = PlayerIndexes[player]; Activated = not found; PlayerNumber = player })
end
-- let's check if noteskins aren't missing (we're avoiding crashes here...)
local found = false
-- iterate again uh
for i,j in ipairs(playermods) do
-- yes because noteskins are stored in the second slot...
for k,l in ipairs(modslist[2]) do
if j == l then
found = true
break
end
end
end
-- apparently there aren't any noteskins...
if not found then
table.insert(playermods, "default")
end
-- everything is ready to be set
playermods = join(", ",playermods)
playerstate:SetPlayerOptions('ModsLevel_Preferred',playermods)
-- and thats pretty much it :D
end
if modscleared then
MESSAGEMAN:Broadcast("CleanMods",{ PlayerNumber = player });
end
--this moves the scroller...
local scroller = self:GetChild("OptionsListDisplay"..player):GetChild("OptionsListScroller")
if movement ~= "none" then
local tomove
if movement == "first" then
tomove = PlayerIndexes[player]
elseif movement == "last" then
tomove = PlayerIndexes[player]-2
end
scroller:SetCurrentAndDestinationItem(tomove);
end
scroller:SetDestinationItem(PlayerIndexes[player]-1);
end;
};
@@ -0,0 +1,118 @@
local function Labels()
local captions = {
"Perfect",
"Great",
"Good",
"Bad",
"Miss",
"Combo",
"Score",
};
local t = Def.ActorFrame {}
for idx,k in ipairs(captions) do
local _ = idx-1
t[#t+1] = LoadFont("_arial black 20px")..{
Text=k;
InitCommand=cmd(y,_*40;diffuse,color("#000000");Stroke,color("#ffffff"));
};
end
return t
end
local function Scores(player)
if not player or not GAMESTATE:IsPlayerEnabled(player) then return Def.Actor {} end
local curstats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player)
local timmings = {
{
curstats:GetTapNoteScores('TapNoteScore_CheckpointHit'),
curstats:GetTapNoteScores('TapNoteScore_W1'),
curstats:GetTapNoteScores('TapNoteScore_W2'),
},
{
curstats:GetTapNoteScores('TapNoteScore_W3')
},
{
curstats:GetTapNoteScores('TapNoteScore_W4')
},
{
curstats:GetTapNoteScores('TapNoteScore_W5')
},
{
curstats:GetTapNoteScores('TapNoteScore_CheckpointMiss'),
curstats:GetTapNoteScores('TapNoteScore_Miss'),
},
{
curstats:MaxCombo()
},
{
curstats:GetScore()
}
}
local t = Def.ActorFrame {}
for idx,k in ipairs(timmings) do
local _ = idx-1
local curstats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player)
local number = 0
for i,v in ipairs(k) do
number = number + v-- curstats:GetTapNoteScores(v);
end
t[#t+1] = LoadFont("_arial black 20px")..{
Text=string.format("%03d", number); --curstats:GetTapNoteScores(k)
InitCommand=cmd(y,_*40;diffuse,color("#000000");Stroke,color("#ffffff"));
};
end
return t
end
local function Grade(player)
if not player or not GAMESTATE:IsPlayerEnabled(player) then return Def.Actor {} end
local captions = {
Grade_Tier01 = "S";
Grade_Tier02 = "S";
Grade_Tier03 = "A";
Grade_Tier04 = "B";
Grade_Tier05 = "C";
Grade_Tier06 = "D";
Grade_Tier07 = "F";
Grade_Failed = "S";
}
local grade = STATSMAN:GetCurStageStats():GetPlayerStageStats(player):GetGrade()
return LoadFont("_impact 50px")..{
Text=captions[grade];
--OnCommand=cmd(zoom,2;diffuse,color("#000000");Stroke,color("#ffffff");diffusealpha,0;sleep,1;linear,1;zoom,1;diffuse,color("#000000");Stroke,color("#ffffff");;diffusealpha,1);
}
end
return Def.ActorFrame {
LoadFont("_impact 50px")..{
Text="Evaluation";
InitCommand=cmd(CenterX;y,50;diffuse,color("#000000");Stroke,color("#ffffff"));
};
Labels()..{
InitCommand=cmd(CenterX;FromTop,130);
};
Scores(PLAYER_1)..{
InitCommand=cmd(FromCenterX,-160;FromTop,130);
};
Scores(PLAYER_2)..{
InitCommand=cmd(FromCenterX,160;FromTop,130);
};
Grade(PLAYER_1)..{
InitCommand=cmd(FromLeft,50;FromTop,240);
};
Grade(PLAYER_2)..{
InitCommand=cmd(FromRight,-50;FromTop,240);
};
}
@@ -0,0 +1,6 @@
return Def.ActorFrame {
LoadFont("_impact 50px")..{
Text="THE GAME IS OVER";
InitCommand=cmd(Center;diffuse,color("#000000");Stroke,color("#ffffff"));
};
}
@@ -0,0 +1 @@
return Def.Actor { OnCommand=cmd(sleep,1); }
@@ -0,0 +1,30 @@
--a simple life display...
local function LifeDisplay(pn)
local function update(self)
--local this = self:GetChildren()
local lifemeter = SCREENMAN:GetTopScreen():GetLifeMeter(pn)
--ºvº
local life = lifemeter:GetLife()
life = clamp(life,0,1)
self:GetChild("LifeText"):settextf("Life: %.2f%%", life*100)
end
return Def.ActorFrame {
InitCommand=cmd(player,pn;SetUpdateFunction,update);
LoadFont("_arial black 20px")..{
--Text="100%";
Name="LifeText";
};
};
end
return Def.ActorFrame {
LoadFont("_impact 50px")..{
InitCommand=cmd(CenterX;FromTop,30);
Text=string.format("%02i", STATSMAN:GetStagesPlayed()+1);
};
LifeDisplay(PLAYER_1)..{ InitCommand=cmd(FromCenterX,-160;FromTop,20); };
LifeDisplay(PLAYER_2)..{ InitCommand=cmd(FromCenterX,160;FromTop,20); };
}
@@ -0,0 +1,115 @@
-- CH32 asked me if this was possible, and as you can see, it is!!
local function GetSpeedChanges()
local smfile = GAMESTATE:GetCurrentSong():GetSongFilePath()
local file = File.Read( smfile )
if not file then return end
-- search the tag
local find = string.find(file , "#SPEED:")
if not find then return end
-- search the next semicolon
local last = string.find(file , ";" , find)
local found = string.sub(file,find,last)
-- cleans
found = string.gsub(found, "\r", "")
found = string.gsub(found, "\n", "")
found = string.gsub(found, "#SPEED:", "")
found = string.gsub(found, ";", "")
-- make it a table
found = split(",", found)
-- return it
return found
end
local speeds = GetSpeedChanges()
-- what are those things made of?
local function update(self)
if speeds ~= nil then
for idx,Spd in ipairs(speeds) do
local part = split("=", Spd)
local ebeat = tonumber(part[1]) --WHERE
assert(ebeat)
local songbeat = GAMESTATE:GetSongBeat()
if songbeat >= ebeat
-- 1/20 beat
and songbeat <= ebeat + (1/20)
--and not GAMESTATE:GetSongFreeze()
--and not GAMESTATE:GetSongDelay()
then
local bps = 60 / GAMESTATE:GetCurrentSong():GetTimingData():GetBPMAtBeat( ebeat )
--local bps = GAMESTATE:GetSongBPS()
local value = tonumber(part[2]) --SPEED
local approach = part[3] --APPLY TIME
-- Odd, it needs to be a string to be evaluated o_o;
if not approach then approach = tostring(4*bps) end
if string.sub(approach,approach:len()) == "s" then
approach = string.sub(approach,1,approach:len()-1)
approach = tonumber(approach)
approach = 1/approach
else
approach = 1/(approach*bps)
end
local pastspeed = 1
if idx > 1 then
pastspeed = split("=", speeds[idx-1])
pastspeed = tonumber(pastspeed[2])
end
approach = approach * math.abs(value-pastspeed)
approach = approach + 0.05
--if value ~= 0 then
--approach = value/approach
--approach = scale(value,0,approach,0,1)
--end
MESSAGEMAN:Broadcast("SpeedModLaunched",{ Value = value ; Approach = approach });
--SCREENMAN:SystemMessage("APP: " .. approach .. " SPD: " .. value);
return
end
end
end
end
return Def.ActorFrame {
InitCommand=cmd(SetUpdateFunction,update);
SpeedModLaunchedMessageCommand=function(self,params)
local approach = params.Approach
local value = params.Value
local playerstate = GAMESTATE:GetPlayerState(PLAYER_1)
local playermods = playerstate:GetPlayerOptionsArray('ModsLevel_Preferred')
local found = false
for idx,Mod in ipairs(playermods) do
if string.find(Mod,"%dx") ~= nil
--or string.find(Mod,"%d.%dx") ~= nil
then
found = true
local xmod = playermods[idx]
xmod = string.gsub(xmod,"x","")
xmod = tonumber(xmod)
xmod = xmod * value
--duh, floats
xmod = string.format("*%.2f %.2fx",approach,xmod)
playermods[idx] = xmod
--SCREENMAN:SystemMessage(xmod)
end
end
if not found then
local xmod = string.format("*%.2f %.2fx",approach,value)
table.insert( playermods, xmod)
end
playermods = join(",",playermods)
playerstate:SetPlayerOptions('ModsLevel_Song', playermods)
--self:GetChild("_debug"):settext(playermods)
--SCREENMAN:SystemMessage(playerstate:GetPlayerOptions('ModsLevel_Preferred'));
--SCREENMAN:SystemMessage(value)
end;
--LoadFont()..{ Name="_debug"; InitCommand=cmd(x,50;CenterY;rotationz,90); };
}
@@ -0,0 +1,6 @@
return Def.ActorFrame {
LoadFont("_impact 50px")..{
Text="Try next stage";
InitCommand=cmd(Center;diffuse,color("#000000");Stroke,color("#ffffff"));
};
}
@@ -0,0 +1,21 @@
return Def.ActorFrame {
BeginCommand=function(self)
self:visible(false);
if SCREENMAN:GetTopScreen():HaveProfileToLoad() then
self:visible(true);
self:sleep(1);
end;
self:queuecommand("Load");
end;
LoadCommand=function(self)
SCREENMAN:GetTopScreen():Continue();
end;
--
Draw.Box(SCREEN_WIDTH,50)..{
InitCommand=cmd(Center);
};
LoadFont("_arial black 20px")..{
Text="Loading Profiles...";
InitCommand=cmd(Center;skewx,-0.1;diffuse,color("#000000");Stroke,color("#ffffff"));
};
}
@@ -0,0 +1,21 @@
return Def.ActorFrame {
BeginCommand=function(self)
self:visible(false);
if SCREENMAN:GetTopScreen():HaveProfileToSave() then
self:visible(true);
self:sleep(1);
end;
self:queuecommand("Save");
end;
SaveCommand=function(self)
SCREENMAN:GetTopScreen():Continue();
end;
--
Draw.Box(SCREEN_WIDTH,50)..{
InitCommand=cmd(Center);
};
LoadFont("_arial black 20px")..{
Text="Saving Profiles...";
InitCommand=cmd(Center;skewx,-0.1;diffuse,color("#000000");Stroke,color("#ffffff"));
};
}
@@ -0,0 +1,224 @@
--Whew... this one took some time...
local function ModIcons(p)
local oldmods
--todo: add more
local noteskinbuttons = {
pump = "UpLeft";
dance ="Down";
};
local function ModiconRow(caption)
return Def.ActorFrame {
Draw.RoundBox(35,35,6,6,color("#32ff00"));
Draw.RoundBox(25,25,3,3,color("#32c800"));
LoadFont("_arial black")..{
Name="caption";
Text=caption or "";
};
LoadActor("i can flash")..{
Name="sfx";
InitCommand=cmd(blend,Blend.Add;zoom,0.125);
SFXCommand=cmd(stoptweening;diffusealpha,1;zoom,0.5;linear,0.2;zoom,1;diffusealpha,0);
};
}
end
--ActorScrollers <3
return Def.ActorScroller {
--TransformFunctions are both love and hate...
TransformFunction=function(self, offset, itemIndex, numItems)
self:y(offset * 40);
end;
InitCommand=function(self)
local items = self:GetNumChildren()
self:SetCurrentAndDestinationItem(items/2);
if SSC then
self:SetNumItemsToDraw(items);
end
self:SetLoop(true);
self:playcommand("Set");
end;
PlayerOptionsChangedMessageCommand=cmd(playcommand,"Set");
PlayerJoinedMessageCommand=cmd(playcommand,"Set");
--Here's where the magic happens
SetCommand=function(self)
local playermods = GAMESTATE:GetPlayerState(p):GetPlayerOptionsArray('ModsLevel_Preferred')
--clean (invisible everything)
for k,v in pairs(self:GetChildren()) do
self:GetChild(k):visible(false);
end
--stop early
if not GAMESTATE:IsHumanPlayer(p) then return end;
--this thing is based on iteration... ugh
for k,v in ipairs(playermods) do
--check if it's speed
if string.find(v,"%dx") ~= nil then
local c = self:GetChild("%dx")
c:visible(true);
c:GetChild("caption"):settext(v);
c:GetChild("sfx"):playcommand("SFX");
else
--check if it's noteskin
local noteskins = NOTESKIN:GetNoteSkinNames()
for i,n in ipairs(noteskins) do
if n == v then
local c = self:GetChild("Noteskin")
local button = noteskinbuttons[sGame] or "fallback"
local toload = NOTESKIN:GetPathForNoteSkin(button, "Tap Note", v)
--make it visible
c:visible(true);
--adjust sizes here
c:GetChild("skingraphic"):Load(toload);
c:GetChild("skingraphic"):zoom(0.45);
--effects
c:GetChild("skinframe"):GetChild("sfx"):playcommand("SFX");
else
--it's anything else then
local c = self:GetChild(v)
if c then
c:visible(true);
c:GetChild("sfx"):playcommand("SFX");
end
end
end
end
--yeah whatever...
self:GetChild("revg"):visible(getenv("GradeReverse"..p));
self:GetChild("revg"):GetChild("sfx"):playcommand("SFX");
end
oldmods = playermods
end;
--speed
ModiconRow("1x")..{ Name="%dx" };
--reserved for noteskins
Def.ActorFrame {
Name="Noteskin";
ModiconRow("")..{ Name="skinframe"; };
Def.Sprite { Name="skingraphic"; };
};
--the rest
ModiconRow("RS")..{ Name="SuperShuffle" };
ModiconRow("MR")..{ Name="Left" };
ModiconRow("VN")..{ Name="Hidden" };
ModiconRow("FD")..{ Name="Dark" };
ModiconRow("XM")..{ Name="XMode" };
ModiconRow("RG")..{ Name="revg" };
}
end
local function DifficultyMeter(p)
return LoadFont("_impact 50px")..{
Text="";
SetCommand=function(self)
if not GAMESTATE:IsHumanPlayer(p) then return end;
local steps = GAMESTATE:GetCurrentSteps(p)
local diff = steps:GetDifficulty()
local stype = steps:GetStepsType()
local desc = steps:GetDescription()
local meter = steps:GetMeter()
--local autogen = steps:IsAutogen() and "AUTO " or ""
--compatible
local text = DifficultyAndStepstypeToString(diff,stype,desc)
text = string.upper(text);
self:settextf("%s [%d]",text,meter);
end;
CurrentSongChangedMessageCommand=function(self)
local song = GAMESTATE:GetCurrentSong()
if not song then self:visible(false); return end
self:visible(true);
end;
};
end
local function SongInformationDisplay()
local index = 1
return LoadFont("_arial black 20px")..{
--Text="asd";
SetCommand=function(self)
local song = GAMESTATE:GetCurrentSong()
if not song then self:diffusealpha(0); return end
local title = song:GetDisplayFullTitle();
local artist = song:GetDisplayArtist();
local bpm = song:GetDisplayBpms() --GetTimmingData():GetActualBPM()
local group = song:GetGroupName();
local length = song:MusicLengthSeconds();
if length == 150 then
length = "Lengthless"
else
local longmara
if song:IsLong() then
longmara = " Long song"
elseif song:IsMarathon() then
longmara = " Marathon song"
else
longmara = ""
end
length = string.format("%02d:%02d%s",length/60,length%60,longmara)
end
if bpm[1] == bpm[2] then
bpm = string.format("BPM %d", bpm[1])
else
bpm = string.format("BPM %d - %d",bpm[1],bpm[2])
end
local metadata = {title,artist,bpm,group,length}
local toset = metadata[index]
index = index+1
if index > #metadata then index = 1 end
--self:finishtweening();
self:settext(toset);
self:linear(0.2);
self:diffusealpha(1);
self:sleep(1);
self:linear(0.2)
self:diffusealpha(0);
self:queuecommand("Set");
end;
CurrentSongChangedMessageCommand=function(self)
--reset index
index = 1
--start looping
self:stoptweening();
self:linear(0.2)
self:diffusealpha(0);
self:queuecommand("Set")
end;
OffCommand=cmd(finishtweening);
};
end
return Def.ActorFrame {
DifficultyMeter(PLAYER_1)..{
InitCommand=cmd(FromCenterX,-120;FromTop,100;zoom,0.75;diffuse,color("#646464");Stroke,color("#ffffff"));
CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set");
};
DifficultyMeter(PLAYER_2)..{
InitCommand=cmd(FromCenterX,120;FromTop,100;zoom,0.75;diffuse,color("#646464");Stroke,color("#ffffff"));
CurrentStepsP2ChangedMessageCommand=cmd(playcommand,"Set");
};
Draw.RoundBox(SCREEN_WIDTH*0.75+10,50,color("#ffffff"))..{
InitCommand=cmd(CenterX;FromBottom,-75);
};
Draw.RoundBox(SCREEN_WIDTH*0.75,40,5,5,color("#0000c8"))..{
InitCommand=cmd(CenterX;FromBottom,-75);
};
SongInformationDisplay()..{
InitCommand=cmd(CenterX;FromBottom,-75;diffuse,color("#009600");Stroke,color("#000000"));
};
ModIcons(PLAYER_1)..{
InitCommand=cmd(FromLeft,30;FromTop,240);
Condition=not GetUserPrefB("OptionsMode");
};
ModIcons(PLAYER_2)..{
InitCommand=cmd(FromRight,-30;FromTop,240);
Condition=not GetUserPrefB("OptionsMode");
};
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,66 @@
return Def.ActorFrame {
InitCommand=function(self)
setenv("GradeReverse" .. PLAYER_1, false)
setenv("GradeReverse" .. PLAYER_2, false)
--setenv("UnderAttack", false)
--setenv("Drop", false)
end;
CodeMessageCommand=function(self,params)
local code = params.Name
local player = params.PlayerNumber
if not GAMESTATE:IsHumanPlayer(player) then return end;
if not GetUserPrefB("OptionsMode") then
--Yeah
if not CustomCodeDetector(code,player,true) then
--handling envutils here
if code == "GradeReverse"
--or code == "any envutil wich requires to be per player"
then
if not getenv( code..player ) then
setenv( code..player, true)
else
setenv( code..player, false)
end
else --general envutils (not per player)
if not getenv( code ) then
setenv( code, true)
else
setenv( code, false)
end
end
end
if code == "Cancel" then
setenv("GradeReverse"..player,false)
end
MESSAGEMAN:Broadcast("PlayerOptionsChanged", { PlayerNumber = player })
--SOUND:PlayOnce(THEME:GetPathS("ScreenSelectMusic","Options"))
else
if code == "Summon" then
--this lua binding is awesome
--SCREENMAN:SystemMessage(ToEnumShortString(player).." opened the oplist")
self:sleep(0.5);
self:queuecommand("OpenCustomOpList");
end
end
end;
OpenCustomOpListCommand=function(self) SCREENMAN:AddNewScreenToTop("ScreenCustomOptionsList") end;
PlayerOptionsChangedMessageCommand=function(self,params)
local player = params.PlayerNumber
local playermods = GAMESTATE:GetPlayerState(player):GetPlayerOptions('ModsLevel_Preferred')
--SCREENMAN:SystemMessage(ToEnumShortString(player).." mods: "..playermods);
end;
LoadSound("START")..{
OffCommand=cmd(play);
};
LoadSound("ScreenSelectMusic","Options")..{
PlayerOptionsChangedMessageCommand=cmd(stop;play);
};
LoadSound("3-2")..{
--TwoPartConfirmCanceledMessageCommand=cmd(play);
SongChosenMessageCommand=cmd(stop;play);
OffCommand=cmd(play);
};
}
@@ -0,0 +1,6 @@
return Def.ActorFrame {
LoadFont("_impact 50px")..{
Text="Epic fail...";
InitCommand=cmd(Center;diffuse,color("#000000");Stroke,color("#ffffff"));
};
}
@@ -0,0 +1,24 @@
local song = GAMESTATE:GetCurrentSong()
--assert(song,"WHY THIS HAPPENS LOL")
if not song then
song = SONGMAN:GetRandomSong()
GAMESTATE:SetCurrentSong( song )
for k,v in ipairs(PlayerNumber) do
local stepsplayer = GAMESTATE:GetCurrentSteps(v)
steps = song:GetOneSteps( stepsplayer:GetStepsType() , stepsplayer:GetDifficulty() )
GAMESTATE:SetCurrentSteps( steps )
end
end
local path = song:GetBackgroundPath()
SplitMode();
if not path then
path = THEME:GetPathG("Common", "fallback background")
end
return LoadActor(path)..{
InitCommand=cmd(scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
};
@@ -0,0 +1,79 @@
local function PlayerName(player)
local puns = {
--TODO: add moar...
["asd"] = "qwe";
["qwe"] = "asd";
};
return LoadFont("_arial black 20px")..{
--Text="PlaceHolder";
InitCommand=cmd(zoomx,1);
SetCommand=function(self)
self:settext("");
if PROFILEMAN:IsPersistentProfile(player) then
local profile = PROFILEMAN:GetProfile(player)
local name = profile:GetDisplayName()
if name == "" then
name = string.gsub(player,"Number_P"," ")
end
--max 20 chars ºvº
name = string.sub(name,1,20)
--name = puns[name] or name
self:settext(name)
end
end;
PlayerJoinedMessageCommand=cmd(playcommand,"Set");
CoinInsertedMessageCommand=cmd(playcommand,"Set");
CoinModeChangedMessageCommand=cmd(playcommand,"Set");
ScreenChangedMessageCommand=cmd(playcommand,"Set");
StorageDevicesChangedMessageCommand=cmd(playcommand,"Set");
};
end
return Def.ActorFrame {
LoadFont("_fixedsys")..{
InitCommand=cmd(blend,'BlendMode_Add'xy,10,5;shadowlength,0;Stroke,{0,0,0,1};wrapwidthpixels,SCREEN_WIDTH*0.45;maxwidth,SCREEN_WIDTH*0.45;horizalign,left;SetTextureFiltering,false;vertalign,top;zoom,1.5);
SystemMessageMessageCommand=function(self,params)
self:settext(params.Message);
self:finishtweening();
self:diffusealpha(1);
self:sleep(3);
self:diffusealpha(0);
end;
HideSystemMessageMessageCommand=cmd(finishtweening);
};
LoadFont("_arial black 20px")..{
InitCommand=cmd(xy,SCREEN_CENTER_X,SCREEN_HEIGHT-20;zoom,1;shadowlength,0;playcommand,"Text");
TextCommand=function(self)
if GAMESTATE:GetCoinMode() == 'CoinMode_Pay' then
local Coins = GAMESTATE:GetCoins()
local CoinForCredit = GAMESTATE:GetCoinsNeededToJoin()
local Credits = math.floor(Coins/CoinForCredit)
local Remain = Coins % CoinForCredit
self:settext(string.format("CREDIT(S) %i[%i/%i]", Credits, Remain, CoinForCredit))
elseif GAMESTATE:GetCoinMode() == 'CoinMode_Free' then
self:settext("Free Play")
else --homemode
self:settext("Home Mode");
end
end;
PlayerJoinedMessageCommand=cmd(playcommand,"Text");
CoinInsertedMessageCommand=cmd(playcommand,"Text");
CoinModeChangedMessageCommand=cmd(playcommand,"Text");
ScreenChangedMessageCommand=cmd(playcommand,"Text");
};
ScreenChangedMessageCommand=function(self)
self:visible(THEME:GetMetric(SCREENMAN:GetTopScreen():GetName(),"ShowCreditDisplay"));
end;
PlayerName(PLAYER_1)..{
InitCommand=cmd(xy,20,SCREEN_HEIGHT-20;horizalign,left);
};
PlayerName(PLAYER_2)..{
InitCommand=cmd(xy,SCREEN_WIDTH-20,SCREEN_HEIGHT-20;horizalign,right);
};
}
@@ -0,0 +1,6 @@
return Def.ActorFrame {
LoadFont("_arial black 20px")..{
Text="Background logo or video must go here...";
InitCommand=cmd(CenterX;y,200;Stroke,color("#000000"));
};
}
@@ -0,0 +1,22 @@
local particles = {
Def.Quad { InitCommand=cmd(FullScreen;diffuse,color("#003200");diffusetopedge,color("#000000")); }
}
for i=1,30 do
particles[#particles+1] = Draw.Oval(math.random(20,80))..{
InitCommand=function(self)
self:finishtweening();
self:decelerate(0.25);
self:x(math.random(20,SCREEN_WIDTH-20));
self:y(math.random(20,SCREEN_HEIGHT-20));
self:diffuse(math.random(0.2,1),math.random(0.2,1),math.random(0.2,1),math.random(0.75,0.95))
end;
ScreenChangedMessageCommand=cmd(playcommand,"Init");
}
end
return Def.ActorFrame {
children = particles;
}
@@ -0,0 +1,13 @@
--stolen from default theme
local File, Width = ...
assert( File );
assert( Width );
local FullFile = THEME:GetPathB('','_frame files 3x1/'..File )
local Frame = LoadActor( FullFile )
return Def.ActorFrame {
Frame .. { InitCommand=cmd(setstate,0;pause;horizalign,right;x,-Width/2) };
Frame .. { InitCommand=cmd(setstate,1;pause;zoomtowidth,Width) };
Frame .. { InitCommand=cmd(setstate,2;pause;horizalign,left;x,Width/2) };
};
@@ -0,0 +1 @@
_arial black 20px
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

@@ -0,0 +1,352 @@
[common]
Baseline=25
Top=11
LineSpacing=28
DrawExtraPixelsLeft=1
DrawExtraPixelsRight=0
AdvanceExtraPixels=0
[main]
Line 0= !"#$%&'()*+,-.
Line 1=/0123456789:;<=
Line 2=>?@ABCDEFGHIJKL
Line 3=MNOPQRSTUVWXYZ[
Line 4=\]^_`abcdefghij
Line 5=klmnopqrstuvwxy
Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š
Line 7=‹ŒŽ‘’“”•–—˜™š›œ
Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬
Line 9=­®¯°±²³´µ¶·¸¹º»
Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ
Line 11=ËÌÍÎÏÐÑÒÓÔÕÖרÙ
Line 12=ÚÛÜÝÞßàáâãäåæçè
Line 13=éêëìíîïðñòóôõö÷
Line 14=øùúûüýþÿ
0=7
1=7
2=10
3=13
4=13
5=20
6=18
7=6
8=8
9=8
10=11
11=13
12=7
13=7
14=7
15=6
16=13
17=13
18=13
19=13
20=13
21=13
22=13
23=13
24=13
25=13
26=7
27=7
28=13
29=13
30=13
31=12
32=15
33=16
34=16
35=16
36=16
37=14
38=13
39=17
40=17
41=8
42=13
43=17
44=13
45=19
46=17
47=17
48=14
49=17
50=16
51=14
52=14
53=17
54=16
55=20
56=16
57=16
58=14
59=8
60=6
61=8
62=13
63=10
64=7
65=13
66=13
67=13
68=13
69=13
70=8
71=13
72=13
73=7
74=7
75=13
76=7
77=20
78=13
79=13
80=13
81=13
82=9
83=12
84=9
85=13
86=12
87=19
88=13
89=12
90=11
91=8
92=6
93=8
94=13
95=13
96=6
97=13
98=10
99=20
100=13
101=13
102=7
103=20
104=14
105=7
106=20
107=14
108=6
109=6
110=10
111=10
112=10
113=10
114=20
115=7
116=19
117=12
118=7
119=20
120=11
121=16
122=7
123=7
124=13
125=13
126=13
127=13
128=6
129=13
130=7
131=16
132=8
133=13
134=13
135=7
136=16
137=10
138=8
139=13
140=8
141=8
142=7
143=13
144=17
145=7
146=7
147=8
148=8
149=13
150=20
151=20
152=20
153=12
154=16
155=16
156=16
157=16
158=16
159=16
160=20
161=16
162=14
163=14
164=14
165=14
166=8
167=8
168=8
169=8
170=16
171=17
172=17
173=17
174=17
175=17
176=17
177=13
178=17
179=17
180=17
181=17
182=17
183=16
184=14
185=13
186=13
187=13
188=13
189=13
190=13
191=13
192=20
193=13
194=13
195=13
196=13
197=13
198=7
199=7
200=7
201=7
202=13
203=13
204=13
205=13
206=13
207=13
208=13
209=13
210=13
211=13
212=13
213=13
214=13
215=12
216=13
217=12
[alt]
Line 0= Ą˘Ł¤ĽŚ§¨Š
Line 1=ŞŤŹ­ŽŻ°ą˛ł
Line 2=´ľśˇ¸šşťź˝
Line 3=žżŔÁÂĂÄĹĆÇ
Line 4=ČÉĘËĚÍÎĎĐŃ
Line 5=ŇÓÔŐÖ×ŘŮÚŰ
Line 6=ÜÝŢßŕáâăäĺ
Line 7=ćçčéęëěíîď
Line 8=đńňóôőö÷řů
Line 9=úűüýţ˙
0=7
1=16
2=7
3=13
4=13
5=13
6=14
7=13
8=7
9=14
10=14
11=14
12=14
13=7
14=14
15=14
16=8
17=13
18=7
19=7
20=7
21=10
22=12
23=7
24=7
25=12
26=12
27=13
28=11
29=7
30=11
31=11
32=16
33=16
34=16
35=16
36=16
37=13
38=16
39=16
40=16
41=14
42=14
43=14
44=14
45=8
46=8
47=16
48=16
49=17
50=17
51=17
52=17
53=17
54=17
55=13
56=16
57=17
58=17
59=17
60=17
61=16
62=14
63=13
64=9
65=13
66=13
67=13
68=13
69=7
70=13
71=13
72=13
73=13
74=13
75=13
76=13
77=7
78=7
79=17
80=13
81=13
82=13
83=13
84=13
85=13
86=13
87=13
88=9
89=13
90=13
91=13
92=13
93=12
94=9
95=7
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

@@ -0,0 +1,352 @@
[common]
Baseline=13
Top=4
LineSpacing=15
DrawExtraPixelsLeft=0
DrawExtraPixelsRight=0
AdvanceExtraPixels=0
[main]
Line 0= !"#$%&'()*+,-.
Line 1=/0123456789:;<=
Line 2=>?@ABCDEFGHIJKL
Line 3=MNOPQRSTUVWXYZ[
Line 4=\]^_`abcdefghij
Line 5=klmnopqrstuvwxy
Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š
Line 7=‹ŒŽ‘’“”•–—˜™š›œ
Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬
Line 9=­®¯°±²³´µ¶·¸¹º»
Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ
Line 11=ËÌÍÎÏÐÑÒÓÔÕÖרÙ
Line 12=ÚÛÜÝÞßàáâãäåæçè
Line 13=éêëìíîïðñòóôõö÷
Line 14=øùúûüýþÿ
0=8
1=8
2=8
3=8
4=8
5=8
6=8
7=8
8=8
9=8
10=8
11=8
12=8
13=8
14=8
15=8
16=8
17=8
18=8
19=8
20=8
21=8
22=8
23=8
24=8
25=8
26=8
27=8
28=8
29=8
30=8
31=8
32=8
33=8
34=8
35=8
36=8
37=8
38=8
39=8
40=8
41=8
42=8
43=8
44=8
45=8
46=8
47=8
48=8
49=8
50=8
51=8
52=8
53=8
54=8
55=8
56=8
57=8
58=8
59=8
60=8
61=8
62=8
63=8
64=8
65=8
66=8
67=8
68=8
69=8
70=8
71=8
72=8
73=8
74=8
75=8
76=8
77=8
78=8
79=8
80=8
81=8
82=8
83=8
84=8
85=8
86=8
87=8
88=8
89=8
90=8
91=8
92=8
93=8
94=8
95=8
96=8
97=8
98=8
99=8
100=8
101=8
102=8
103=8
104=8
105=8
106=8
107=8
108=8
109=8
110=8
111=8
112=8
113=8
114=8
115=8
116=8
117=8
118=8
119=8
120=8
121=8
122=8
123=8
124=8
125=8
126=8
127=8
128=8
129=8
130=8
131=8
132=8
133=8
134=8
135=8
136=8
137=8
138=8
139=8
140=8
141=8
142=8
143=8
144=8
145=8
146=8
147=8
148=8
149=8
150=8
151=8
152=8
153=8
154=8
155=8
156=8
157=8
158=8
159=8
160=8
161=8
162=8
163=8
164=8
165=8
166=8
167=8
168=8
169=8
170=8
171=8
172=8
173=8
174=8
175=8
176=8
177=8
178=8
179=8
180=8
181=8
182=8
183=8
184=8
185=8
186=8
187=8
188=8
189=8
190=8
191=8
192=8
193=8
194=8
195=8
196=8
197=8
198=8
199=8
200=8
201=8
202=8
203=8
204=8
205=8
206=8
207=8
208=8
209=8
210=8
211=8
212=8
213=8
214=8
215=8
216=8
217=8
[alt]
Line 0= Ą˘Ł¤ĽŚ§¨Š
Line 1=ŞŤŹ­ŽŻ°ą˛ł
Line 2=´ľśˇ¸šşťź˝
Line 3=žżŔÁÂĂÄĹĆÇ
Line 4=ČÉĘËĚÍÎĎĐŃ
Line 5=ŇÓÔŐÖ×ŘŮÚŰ
Line 6=ÜÝŢßŕáâăäĺ
Line 7=ćçčéęëěíîď
Line 8=đńňóôőö÷řů
Line 9=úűüýţ˙
0=8
1=8
2=8
3=8
4=8
5=8
6=8
7=8
8=8
9=8
10=8
11=8
12=8
13=8
14=8
15=8
16=8
17=8
18=8
19=8
20=8
21=8
22=8
23=8
24=8
25=8
26=8
27=8
28=8
29=8
30=8
31=8
32=8
33=8
34=8
35=8
36=8
37=8
38=8
39=8
40=8
41=8
42=8
43=8
44=8
45=8
46=8
47=8
48=8
49=8
50=8
51=8
52=8
53=8
54=8
55=8
56=8
57=8
58=8
59=8
60=8
61=8
62=8
63=8
64=8
65=8
66=8
67=8
68=8
69=8
70=8
71=8
72=8
73=8
74=8
75=8
76=8
77=8
78=8
79=8
80=8
81=8
82=8
83=8
84=8
85=8
86=8
87=8
88=8
89=8
90=8
91=8
92=8
93=8
94=8
95=8
Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

+352
View File
@@ -0,0 +1,352 @@
[common]
Baseline=57
Top=18
LineSpacing=50
DrawExtraPixelsLeft=4
DrawExtraPixelsRight=4
AdvanceExtraPixels=0
[main]
Line 0= !"#$%&'()*+,-.
Line 1=/0123456789:;<=
Line 2=>?@ABCDEFGHIJKL
Line 3=MNOPQRSTUVWXYZ[
Line 4=\]^_`abcdefghij
Line 5=klmnopqrstuvwxy
Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š
Line 7=‹ŒŽ‘’“”•–—˜™š›œ
Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬
Line 9=­®¯°±²³´µ¶·¸¹º»
Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ
Line 11=ËÌÍÎÏÐÑÒÓÔÕÖרÙ
Line 12=ÚÛÜÝÞßàáâãäåæçè
Line 13=éêëìíîïðñòóôõö÷
Line 14=øùúûüýþÿ
0=9
1=14
2=18
3=31
4=27
5=35
6=29
7=9
8=16
9=16
10=14
11=27
12=8
13=15
14=9
15=20
16=27
17=19
18=25
19=27
20=25
21=27
22=27
23=20
24=27
25=27
26=10
27=10
28=27
29=27
30=27
31=26
32=39
33=25
34=28
35=28
36=28
37=21
38=20
39=28
40=28
41=14
42=17
43=27
44=19
45=36
46=27
47=27
48=25
49=27
50=27
51=26
52=23
53=27
54=25
55=41
56=23
57=24
58=20
59=14
60=20
61=14
62=24
63=28
64=17
65=25
66=26
67=25
68=26
69=26
70=14
71=26
72=26
73=13
74=13
75=24
76=13
77=39
78=26
79=26
80=26
81=26
82=18
83=24
84=15
85=26
86=22
87=32
88=22
89=22
90=18
91=18
92=14
93=18
94=26
95=27
96=8
97=22
98=17
99=28
100=27
101=27
102=17
103=51
104=26
105=10
106=34
107=20
108=8
109=8
110=17
111=17
112=17
113=25
114=50
115=17
116=39
117=24
118=10
119=38
120=18
121=24
122=9
123=14
124=26
125=27
126=27
127=24
128=14
129=24
130=17
131=39
132=16
133=19
134=27
135=15
136=39
137=28
138=17
139=27
140=16
141=16
142=17
143=24
144=29
145=17
146=17
147=12
148=16
149=19
150=31
151=32
152=35
153=26
154=25
155=25
156=25
157=25
158=25
159=25
160=36
161=28
162=21
163=21
164=21
165=21
166=14
167=14
168=14
169=14
170=28
171=27
172=27
173=27
174=27
175=27
176=27
177=27
178=27
179=27
180=27
181=27
182=27
183=24
184=25
185=28
186=25
187=25
188=25
189=25
190=25
191=25
192=38
193=25
194=26
195=26
196=26
197=26
198=13
199=13
200=13
201=13
202=26
203=26
204=26
205=26
206=26
207=26
208=26
209=27
210=26
211=26
212=26
213=26
214=26
215=22
216=26
217=22
[alt]
Line 0= Ą˘Ł¤ĽŚ§¨Š
Line 1=ŞŤŹ­ŽŻ°ą˛ł
Line 2=´ľśˇ¸šşťź˝
Line 3=žżŔÁÂĂÄĹĆÇ
Line 4=ČÉĘËĚÍÎĎĐŃ
Line 5=ŇÓÔŐÖ×ŘŮÚŰ
Line 6=ÜÝŢßŕáâăäĺ
Line 7=ćçčéęëěíîď
Line 8=đńňóôőö÷řů
Line 9=úűüýţ˙
0=9
1=25
2=17
3=19
4=27
5=22
6=26
7=24
8=17
9=26
10=26
11=23
12=20
13=15
14=20
15=20
16=17
17=25
18=17
19=13
20=17
21=21
22=24
23=17
24=17
25=24
26=24
27=23
28=18
29=17
30=18
31=18
32=27
33=25
34=25
35=25
36=25
37=19
38=28
39=28
40=28
41=21
42=21
43=21
44=21
45=14
46=14
47=28
48=28
49=27
50=27
51=27
52=27
53=27
54=27
55=27
56=27
57=27
58=27
59=27
60=27
61=24
62=23
63=28
64=18
65=25
66=25
67=25
68=25
69=13
70=25
71=25
72=25
73=26
74=26
75=26
76=26
77=13
78=13
79=33
80=26
81=26
82=26
83=26
84=26
85=26
86=26
87=27
88=18
89=26
90=26
91=26
92=26
93=22
94=15
95=17
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

+3
View File
@@ -0,0 +1,3 @@
[main]
line 0=01234
line 1=56789
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

@@ -0,0 +1 @@
MusicWheelItem SectionExpanded NormalPart
@@ -0,0 +1,30 @@
return Def.ActorFrame {
Draw.RoundBox(276,212,20,20,color("#323232"));
Draw.RoundBox(256,192,10,10)..{
Name="ColorFill";
--InitCommand=cmd(zoomto,256,192);
SetMessageCommand=function(self,params)
local color = {1,1,1,1}
if PREFSMAN:GetPreference("MusicWheelUsesSections") ~= 'MusicWheelUsesSections_Never'
and GAMESTATE:GetSortOrder() == 'SortOrder_Group'
then
local goupcolor = SONGMAN:GetSongGroupColor(params.SongGroup)
if goupcolor ~= nil then
color = SONGMAN:GetSongGroupColor(params.SongGroup)
end
end
self:diffuse(color);
end;
};
LoadFont("_impact 50px")..{
Name="GroupName";
InitCommand=cmd(shadowlength,0;Stroke,color("#000000");maxwidth,210);
SetMessageCommand=function(self,params)
text = params.SongGroup
self:settext(text);
end;
};
}
@@ -0,0 +1,32 @@
return Def.ActorFrame {
Draw.RoundBox(276,212,20,20,color("#323232"));
Def.Banner {
Name="SongBanner";
InitCommand=cmd(scaletoclipped,256,192);
SetMessageCommand=function(self,params)
local path = params.Song:GetBannerPath()
if not path then path = THEME:GetPathG("Common","fallback banner") end
local bHighResTextures = PREFSMAN:GetPreference("HighResolutionTextures")
--banner loading stuff...
--is on
if bHighResTextures == 'HighResolutionTextures_ForceOn' or GetUserPrefB("goodbanners") then
self:LoadFromSong(params.Song);
--is off
elseif bHighResTextures == 'HighResolutionTextures_ForceOff' then
self:LoadFromCachedBanner(path);
--is auto
elseif bHighResTextures == 'HighResolutionTextures_Auto' then
local iWidth = DISPLAY:GetDisplayHeight()
--display is over ninethousand eh... 480
if iWidth > 480 then
self:LoadFromSong(params.Song);
--display is 480 or less
else
self:LoadFromCachedBanner(path);
end
end
end;
};
}
@@ -0,0 +1 @@
_blank
@@ -0,0 +1,120 @@
--Sí, ando usando judge premiere para el themekit ¿Y qué?
local player = Var "Player"
-- blah
--if not getenv then getenv = function() return false end end
--frame correspondiente de cada judgment
local TNSframe = {
TapNoteScore_CheckpointHit = 0;
TapNoteScore_W1 = 0;
TapNoteScore_W2 = 0;
TapNoteScore_W3 = 1;
TapNoteScore_W4 = 2;
TapNoteScore_W5 = 3;
TapNoteScore_Miss = 4;
TapNoteScore_CheckpointMiss = 4;
}
--frames para RG
local TNSframeReversed = {
TapNoteScore_CheckpointHit = 4;
TapNoteScore_W1 = 4;
TapNoteScore_W2 = 4;
TapNoteScore_W3 = 3;
TapNoteScore_W4 = 2;
TapNoteScore_W5 = 1;
TapNoteScore_Miss = 0;
TapNoteScore_CheckpointMiss = 0;
}
return Def.ActorFrame {
--init
InitCommand=function(self)
local this = self:GetChildren()
this.judgm:pause();
--this.judgm:y(-35);
--this.combo:y(42);
this.combo:vertalign(top);
this.label:vertalign(top);
this.judgm:visible(false);
this.combo:visible(false);
this.label:visible(false);
--self:runcommandsonleaves(cmd( SetTextureFiltering,false ))
end;
--judges
LoadActor("judge")..{
Name="judgm";
NormalCommand=cmd(shadowlength,0;diffusealpha,1;zoomx,0.913;zoomy,1.175;decelerate,0.175;zoomx,0.62;zoomy,0.78;accelerate,0.06;zoomx,0.63;zoomy,0.82;sleep,0.04;diffusealpha,0.5;zoomx,0.97;zoomy,0.82;sleep,0.04;zoomx,0.63;zoomy,0.82;decelerate,0.175;zoomx,0.82;zoomy,0.82;diffusealpha,0)
};
--label
LoadActor("label")..{
Name="label";
NormalCommand=cmd(shadowlength,0;diffusealpha,1;zoomx,1.58;zoomy,1.6;y,100;decelerate,0.175;zoomx,1.09;zoomy,1.1;y,70;accelerate,0.06;zoomx,1.14;zoomy,1.1;y,71;sleep,0.04;diffusealpha,0.5;zoomx,1.66;zoomy,1.1;sleep,0.04;zoomx,1.14;zoomy,1.1;decelerate,0.175;zoomx,1.34;zoomy,1.1;diffusealpha,0)
};
--combo
LoadFont("combo")..{
Name="combo";
NormalCommand=cmd(shadowlength,0;diffusealpha,1;zoomx,1.58;zoomy,1.6;y,30;decelerate,0.175;zoomx,1.09;zoomy,1.1;y,21;accelerate,0.06;zoomx,1.14;zoomy,1.1;y,22;sleep,0.04;diffusealpha,0.5;zoomx,1.66;zoomy,1.1;sleep,0.04;zoomx,1.14;zoomy,1.1;decelerate,0.175;zoomx,1.34;zoomy,1.1;diffusealpha,0)
};
--"PERFECT"!
JudgmentMessageCommand=function(self,param)
local this = self:GetChildren()
local iTns = TNSframe[param.TapNoteScore]
if getenv("ReverseGrade"..player) then
iTns = TNSframeReversed[param.TapNoteScore]
end
--no player, no job
if param.Player ~= player then return end
if param.HoldNoteScore then return end
this.judgm:visible(true);
this.judgm:setstate(iTns);
--this.combo:visible(true);
--this.label:visible(true);
this.judgm:stoptweening();
this.judgm:queuecommand("Normal");
end;
ComboCommand=function(self,param)
local this = self:GetChildren()
local combo = param.Misses or param.Combo;
--color misses o RG
local ccolor
if param.Misses then
ccolor = color("1,0,0,1");
--GradeReverse, combo misses no rojo
--puedes cambiar userprefs por getenv
if getenv("ReverseGrade"..player) then
ccolor = color("1,1,1,1");
end
else
ccolor = color("1,1,1,1");
--GradeReverse, combo rojo
if getenv("ReverseGrade"..player) then
ccolor = color("1,0,0,1");
end
end;
--visibilidad
this.combo:visible(combo >= 4);
this.combo:stoptweening();
this.combo:settextf("%03i",combo);
this.combo:diffuse(ccolor);
this.combo:queuecommand("Normal");
this.label:visible(combo >= 4);
this.label:stoptweening();
this.label:diffuse(ccolor);
this.label:queuecommand("Normal");
end;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 B

@@ -0,0 +1,6 @@
return LoadFont("Common", "Normal")..{
Text="EXIT";
InitCommand=cmd(CenterX);
GainFocusCommand=cmd(diffuse,color("#FF0000"));
LoseFocusCommand=cmd(diffuse,color("#FFFFFF"));
}
@@ -0,0 +1,18 @@
local gc = Var("GameCommand");
return Def.ActorFrame {
InitCommand=function(self)
local this = self:GetChildren()
this.ttf:settext(gc:GetText());
this.ttf:Stroke(color("#000000"));
this.ttf:diffuse(color("#ffffff"));
--this.bkg:zoomto(150,40);
--this.bkg:diffuse(color("#c0c0c0"));
--this.bkg:fadeleft(0.2);
--this.bkg:faderight(0.2);
end;
--GainFocusCommand=cmd(stoptweening;zoom,1.2);
--LoseFocusCommand=cmd(stoptweening;zoom,1.0);
--Def.Quad { Name="bkg" };
LoadFont("_arial", "black 20px")..{ Name="ttf" };
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+57
View File
@@ -0,0 +1,57 @@
[Common]
WindowTitle=THEMEKIT PIU
[Judgment]
W1=TERRIFIC
W2=PERFECT
W3=GREAT
W4=GOOD
W5=BAD
Miss=MISS
[OptionTitles]
OptionsMode=Options Type
[OptionExplanations]
OptionsMode=magic
[OptionNames]
0.5x=0.5x
1.5x=1.5x
1x=1x
2x=2x
3x=3x
4x=4x
5x=5x
6x=6x
7x=7x
8x=8x
Speed=Speed
Noteskins=Noteskins
FadeNotes=Fade Notes
Scroll=Scroll
Effect=Effect
Receptor=Receptor
ResetOptions=Reset Options
Vanish=Vanish
RndVanish=Random Vanish
Appear=Appear
Nonstep=Nonstep
Accel=Acceleration
Decel=Deceleration
Worm=EarthWorm
Spin=Spin
Snake=Snake
Drift=Drift
Shrink=Shrink
Jumps=Jumps
Freedom=Freedom
Center=Center
Codes=Custom Code Detector
OptionsList=Custom Options List
@@ -0,0 +1,18 @@
ThemeInfo = {
Name="_Themekit_PIU";
Version="pretty much final";
Code="DSMT-PIUKIT";
Date = {31,7,2010};
};
WORKING_VERSION = (ProductVersion() == "v1.0 rc2")
if GetUserPrefB("OptionsMode") == nil then
SetUserPref("OptionsMode", false)
end
--no anda así, mejor uso pantallas
--assert(SSC and WORKING_VERSION, "El Themekit PIU es compatible sólo con SM-SSC")
--not working like this, better use screens
--assert(SSC and WORKING_VERSION, "Themekit PIU is compatible only with SM-SSC RC1.5")

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