diff --git a/Themes/default/Scripts/03 ThemePrefs.lua b/Themes/default/Scripts/03 ThemePrefs.lua index 6dae14bd73..5dd959d7b9 100644 --- a/Themes/default/Scripts/03 ThemePrefs.lua +++ b/Themes/default/Scripts/03 ThemePrefs.lua @@ -240,7 +240,7 @@ function UserPrefSpecialScoringMode() SelectType = "SelectOne"; OneChoiceForAllPlayers = true; ExportOnChange = false; - Choices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR SuperNOVA', 'DDR SuperNOVA 2' }; + Choices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR SuperNOVA', 'DDR SuperNOVA 2', '[SSC] Radar Master' }; LoadSelections = function(self, list, pn) if ReadPrefFromFile("UserPrefSpecialScoringMode") ~= nil then local theValue = ReadPrefFromFile("UserPrefSpecialScoringMode"); diff --git a/Themes/default/Scripts/04 SpecialScoring.lua b/Themes/default/Scripts/04 SpecialScoring.lua index fea72b06ff..112a050d11 100644 --- a/Themes/default/Scripts/04 SpecialScoring.lua +++ b/Themes/default/Scripts/04 SpecialScoring.lua @@ -6,7 +6,7 @@ local ZeroIfNotFound = { __index = function() return 0 end; }; --DDR 1st Mix and 2nd Mix Scoring ----------------------------------------------------------- r['DDR 1stMIX'] = function(params, pss) - local dCombo = math.floor(pss:GetCurrentCombo()/4); + local dCombo = math.floor((pss:GetCurrentCombo()+1)/4); local bScore = (dCombo^2+1) * 100; local multLookup = { ['TapNoteScore_W1']=3, ['TapNoteScore_W2']=3, ['TapNoteScore_W3']=1 }; setmetatable(multLookup, ZeroIfNotFound); @@ -18,7 +18,7 @@ end; r['DDR 4thMIX'] = function(params, pss) local scoreLookupTable = { ['TapNoteScore_W1']=777, ['TapNoteScore_W2']=777, ['TapNoteScore_W3']=555 }; setmetatable(scoreLookupTable, ZeroIfNotFound); - local comboBonusForThisStep = pss:GetCurrentCombo()*333; + local comboBonusForThisStep = (pss:GetCurrentCombo()+1)*333; pss:SetScore(pss:GetScore()+scoreLookupTable[params.TapNoteScore]+comboBonusForThisStep); end; ----------------------------------------------------------- @@ -37,4 +37,31 @@ r['DDR SuperNOVA 2'] = function(params, pss) if dp == 0 then pss:SetScore(0) return nil end pss:SetScore(math.round((pss:GetActualDancePoints()/dp)*100000)*10); end; +----------------------------------------------------------- +--Radar Master +----------------------------------------------------------- +r['[SSC] Radar Master'] = function(params, pss) + local masterTable = { + ['RadarCategory_Stream'] = 0, + ['RadarCategory_Voltage'] = 0, + ['RadarCategory_Air'] = 0, + ['RadarCategory_Freeze'] = 0, + ['RadarCategory_Chaos'] = 0 + }; + local totalRadar = 0; + local finalScore = 0; + for k,v in ipairs(masterTable) do + local firstRadar = pss:GetRadarPossible():GetValue(k); + if firstRadar == 0 then + masterTable[k] = nil; + else + v = pss:GetRadarPossible():GetValue(k); + totalRadar = totalRadar + v[1]; + end; + end; + for k,v in ipairs(masterTable) do + local curPortion = pss:GetRadarActual():GetValue(k) / v; + finalScore = finalScore + curPortion*(500000000*(v/totalRadar)); + end; +end; SpecialScoring = r;