diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index 692931b019..744581b3fc 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -395,6 +395,7 @@ Profiles=Edit the player profiles stored on this machine. ProgressiveLifebar=Set whether the lifebar is harsher on consecutive boo/miss judgments. OFF for no effect, 8 to make each consecutive miss a multiple of the first miss. ProgressiveNonstopLifebar=Determine whether the lifebar gets harsher as a nonstop course progresses. LifeDifficulty + this = LifeDifficulty on a final stage of a course. ProgressiveStageLifebar=Determine whether the lifebar gets harsher on later stages. LifeDifficulty + this = LifeDifficulty on a final stage. (No effect if Event Mode). +ProTiming=ProTiming RandomBackgroundMode=Choose background style. &oq;Animations&cq; uses random items in the BGAnimations folder; &oq;Random Movies&cq; cycles through movies in the RandomMovies folder. RandomModifiers= Rate=Rate @@ -915,6 +916,7 @@ Profiles=Profiles ProgressiveLifebar=Progressive Lifebar ProgressiveNonstopLifebar=Progressive Nonstop Lifebar ProgressiveStageLifebar=Progressive Stage Lifebar +ProTiming=Protiming Quads=Quads Quantize=Quantize RandomBackgroundMode=Mode diff --git a/Themes/_fallback/Scripts/03 Gameplay.lua b/Themes/_fallback/Scripts/03 Gameplay.lua index 420739e505..fa2137d326 100644 --- a/Themes/_fallback/Scripts/03 Gameplay.lua +++ b/Themes/_fallback/Scripts/03 Gameplay.lua @@ -4,6 +4,23 @@ -- shakesoda calls this pump.lua +-- GetExtraColorThreshold() +-- [en] returns the difficulty threshold in meter +-- for songs that should be counted as boss songs. +function GetExtraColorThreshold() + sGame = GAMESTATE:GetCurrentGame():GetName() + local Modes = { + dance = 10, + pump = 15, + beat = 12, + kb7 = 10, + para = 10, + techno = 10, + lights = 10, -- lights shouldn't be playable + } + return Modes[sGame] +end + -- GetEditModifiers -- [en] returns modifiers for ScreenEdit to use. function GetEditModifiers() diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index f7d0f02826..3e8fc7df82 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -75,7 +75,7 @@ OMESStageModifiers="suddendeath" NumSongGroupColors=10 NumCourseGroupColors=1 # Legacy metric: how difficult a song has to be for it to glow. -ExtraColorMeter=10 +ExtraColorMeter=GetExtraColorThreshold() # The maximum difficulty a OMES stage can be. ExtraStage2DifficultyMax=8 # Allow special colors for unlocks and 'preffered' sort diff --git a/Themes/default/Graphics/Player judgment/default.lua b/Themes/default/Graphics/Player judgment/default.lua index 8a56b692b5..9fbb1a7100 100644 --- a/Themes/default/Graphics/Player judgment/default.lua +++ b/Themes/default/Graphics/Player judgment/default.lua @@ -1,6 +1,6 @@ local c; local player = Var "Player"; - +local bShowProtiming = GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(player) ); local JudgeCmds = { TapNoteScore_W1 = THEME:GetMetric( "Judgment", "JudgmentW1Command" ); TapNoteScore_W2 = THEME:GetMetric( "Judgment", "JudgmentW2Command" ); @@ -35,14 +35,13 @@ t[#t+1] = Def.ActorFrame { OnCommand=THEME:GetMetric("Judgment","JudgmentOnCommand"); ResetCommand=cmd(finishtweening;stopeffect;visible,false); }; - LoadFont("Common Normal") .. { + LoadFont("Combo Numbers") .. { Name="ProtimingDisplay"; Text=""; InitCommand=cmd(visible,false); OnCommand=THEME:GetMetric("Protiming","ProtimingOnCommand"); ResetCommand=cmd(finishtweening;stopeffect;visible,false); }; - InitCommand = function(self) c = self:GetChildren(); end; @@ -66,12 +65,12 @@ t[#t+1] = Def.ActorFrame { self:playcommand("Reset"); - c.Judgment:visible( true ); + c.Judgment:visible( not bShowProtiming ); c.Judgment:setstate( iFrame ); JudgeCmds[param.TapNoteScore](c.Judgment); ---~ c.ProtimingDisplay:visible( true ); - c.ProtimingDisplay:settext( math.floor(math.abs(param.TapNoteOffset * 1000)) ); + c.ProtimingDisplay:visible( bShowProtiming ); + c.ProtimingDisplay:settextf("%i%%",100 - math.floor(math.abs(param.TapNoteOffset * 1000)) ); ProtimingCmds[param.TapNoteScore](c.ProtimingDisplay); end; diff --git a/Themes/default/Scripts/03 ThemePrefs.lua b/Themes/default/Scripts/03 ThemePrefs.lua index a1955526b9..dc33cc848d 100644 --- a/Themes/default/Scripts/03 ThemePrefs.lua +++ b/Themes/default/Scripts/03 ThemePrefs.lua @@ -22,6 +22,12 @@ function InitUserPrefs() if GetUserPrefB("UserPrefComboOnRolls") == nil then SetUserPref("UserPrefComboOnRolls", false); end; + if GetUserPrefB("UserPrefProtimingP1") == nil then + SetUserPref("UserPrefProtimingP1", false); + end; + if GetUserPrefB("UserPrefProtimingP2") == nil then + SetUserPref("UserPrefProtimingP2", false); + end; if GetUserPrefB("FlashyCombos") == nil then SetUserPref("FlashyCombos", false); end; @@ -55,23 +61,41 @@ function OptionRowProTiming() ExportOnChange = false; Choices = { 'Off','On' }; LoadSelections = function(self, list, pn) - local pname = ToEnumShortString(pn); + local bShow; + if GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(pn) ) then + bShow = GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(pn) ); + if bShow then + list[2] = true; + else + list[1] = true; + end + else + list[1] = true; + end; +--[[ local pname = ToEnumShortString(pn); if getenv("ProTiming"..pname) == true then list[2] = true; else list[1] = true; - end; + end; --]] end; SaveSelections = function(self, list, pn) - local val; + local bSave; + if list[2] then + bSave = true; + else + bSave = false; + end; + SetUserPref("UserPrefProtiming" .. ToEnumShortString(pn),bSave); +--[[ local val; if list[2] then val = true; else val = false; end; local pname = ToEnumShortString(pn); - setenv("ProTiming"..pname, val); + setenv("ProTiming"..pname, val); --]] end; }; setmetatable( t, t ); @@ -188,8 +212,8 @@ end function GetDefaultOptionLines() local LineSets = { - "1,2,3,4,5,6,R,7,8,9,10,11,12,13,14,15,16,17", -- All - "1,2,7,8,13,14,16,17", -- DDR Essentials ( no turns, fx ) + "1,2,3,4,5,6,R,7,8,9,10,11,12,13,14,15,16,17,18", -- All + "1,2,7,8,13,14,16,17,18", -- DDR Essentials ( no turns, fx ) }; local function IsExtra() if GAMESTATE:IsExtraStage() or GAMESTATE:IsExtraStage2() then @@ -205,7 +229,7 @@ function GetDefaultOptionLines() return LineSets[2]; -- Just make sure! end else - return "1,2,7,8,13,14,17" -- "failsafe" list + return "1,2,7,8,13,14,17,18" -- "failsafe" list end end; diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index eaa145175e..846b814e6e 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -303,14 +303,14 @@ LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) [Protiming] -ProtimingOnCommand=y,24 +ProtimingOnCommand=shadowlength,1;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; -ProtimingW1Command= -ProtimingW2Command= -ProtimingW3Command= -ProtimingW4Command= -ProtimingW5Command= -ProtimingMissCommand= +ProtimingW1Command=diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_W1"];linear,0.05;zoom,1;glow,Color("Invisible");sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW2Command=diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_W2"];linear,0.05;zoom,1;glow,Color("Invisible");sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW3Command=diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_W3"];linear,0.05;zoom,1;glow,Color("Invisible");sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW4Command=diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_W4"];linear,0.05;zoom,1;glow,Color("Invisible");sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW5Command=diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_W5"]; +ProtimingMissCommand=diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_Miss"];linear,0.05;zoom,1;glow,Color("Invisible");sleep,2;linear,0.5;diffuse,Color("Invisible"); [Player] ReceptorArrowsYStandard=GetTapPosition('Standard') @@ -1222,7 +1222,7 @@ PercentScoreP1OnCommand=visible,THEME:GetMetric(Var "LoadingScreen","ShowPercent PercentScoreP1OffCommand=bouncebegin,0.15;zoomx,0; # ShowPercentScoreP2=GAMESTATE:IsHumanPlayer(PLAYER_2) -PercentScoreP2X=SCREEN_CENTER_X+160-1 +PercentScoreP2X=SCREEN_CENTER_X+240-1 PercentScoreP2Y=SCREEN_BOTTOM-60 PercentScoreP2OnCommand=visible,THEME:GetMetric(Var "LoadingScreen","ShowPercentScoreP2");addy,SCREEN_CENTER_Y;decelerate,0.35;addy,-SCREEN_CENTER_Y PercentScoreP2OffCommand=bouncebegin,0.15;zoomx,0; @@ -1290,6 +1290,7 @@ Line14="list,Persp" Line15="list,ScoreDisplay" Line16="list,Steps" Line17="list,Characters" +Line18="lua,OptionRowProTiming()" [ScreenEditOptions] Line1="lua,SpeedMods()"