Converting most of DDR Extreme scoring to lua.
There is a bit more to do...refactoring may be worth looking into.
This commit is contained in:
@@ -23,6 +23,42 @@ r['DDR 4thMIX'] = function(params, pss)
|
|||||||
pss:SetScore(pss:GetScore()+scoreLookupTable[params.TapNoteScore]+(scoreLookupTable[params.TapNoteScore] and comboBonusForThisStep or 0));
|
pss:SetScore(pss:GetScore()+scoreLookupTable[params.TapNoteScore]+(scoreLookupTable[params.TapNoteScore] and comboBonusForThisStep or 0));
|
||||||
end;
|
end;
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
|
--DDR MAX2/Extreme Scoring
|
||||||
|
-----------------------------------------------------------
|
||||||
|
r['DDR Extreme'] = function(params, pss)
|
||||||
|
local judgmentBase = {
|
||||||
|
['TapNoteScore_W1'] = 10,
|
||||||
|
['TapNoteScore_W2'] = 9,
|
||||||
|
['TapNoteScore_W3'] = 5
|
||||||
|
};
|
||||||
|
setmetatable(judgmentBase, ZeroIfNotFound);
|
||||||
|
local steps = GAMESTATE:GetCurrentSteps(params.Player);
|
||||||
|
local radarValues = steps:GetRadarValues(params.Player);
|
||||||
|
local baseScore = (steps:IsAnEdit() and
|
||||||
|
5 or steps:GetMeter()) * 10000000;
|
||||||
|
local currentStep = 0; -- TODO: Get current step/hold.
|
||||||
|
local totalItems = radarValues:GetValue('RadarCategory_TapsAndHolds')
|
||||||
|
+ radarValues:GetValue('RadarCategory_Holds')
|
||||||
|
+ radarValues:GetValue('RadarCategory_Rolls');
|
||||||
|
local singleStep = (1 + totalItems) * totalItems / 2;
|
||||||
|
local stepLast = math.floor(baseScore / singleStep) * currentStep);
|
||||||
|
local judgeScore = 0;
|
||||||
|
if (params.HoldNoteScore == 'HoldNoteScore_Held') then
|
||||||
|
judgeScore = judgmentBase['TapNoteScore_W1'];
|
||||||
|
else
|
||||||
|
judgeScore = judgmentBase[params.TapNoteScore];
|
||||||
|
if (params.TapNoteScore == 'TapNoteScore_W2'
|
||||||
|
and (PREFSMAN:GetPreference("AllowW1") ~= 'AllowW1_Never'
|
||||||
|
or not (GAMESTATE:IsCourseMode() and
|
||||||
|
PREFSMAN:GetPreference("AllowW1") == 'AllowW1_CoursesOnly'))) then
|
||||||
|
judgeScore = judgmentBase['TapNoteScore_W1'];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
local stepScore = judgeScore * stepLast;
|
||||||
|
|
||||||
|
pss:SetScore(pss:GetScore() + stepScore);
|
||||||
|
end;
|
||||||
|
-----------------------------------------------------------
|
||||||
--DDR SuperNOVA(-esque) scoring
|
--DDR SuperNOVA(-esque) scoring
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
r['DDR SuperNOVA'] = function(params, pss)
|
r['DDR SuperNOVA'] = function(params, pss)
|
||||||
|
|||||||
Reference in New Issue
Block a user