diff --git a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua index f867444d34..edcc7e8714 100644 --- a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua +++ b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua @@ -124,7 +124,7 @@ function pname(pn) return ToEnumShortString(pn); end; -- from http://ardoris.wordpress.com/2008/11/07/rounding-to-a-certain-number-of-decimal-places-in-lua/ function round(what, precision) - return math.floor(what*math.pow(10,precision)+0.5) / math.pow(10,precision) + return math.floor(what*math.pow(10,precision)+0.5) / math.pow(10,precision) end --[[ end helper functions ]] @@ -167,4 +167,121 @@ function ComboMaintain() para = "TapNoteScore_W4", }; return Maintain[sGame] -end; \ No newline at end of file +end; + +function ComboPerRow() + sGame = GAMESTATE:GetCurrentGame():GetName(); + if sGame == "pump" then + return true; + elseif GAMESTATE:GetPlayMode() == "PlayMode_Oni" then + return true; + else return false; + end; +end; + +function HitCombo() + sGame = GAMESTATE:GetCurrentGame():GetName(); + local Combo = { + dance = 2, + pump = 4, + beat = 2, + kb7 = 2, + para = 2, + }; + return Combo[sGame] +end; + +function MissCombo() + sGame = GAMESTATE:GetCurrentGame():GetName(); + local Combo = { + dance = 2, + pump = 4, + beat = 0, + kb7 = 0, + para = 0, + }; + return Combo[sGame] +end; + +function FailCombo() -- The combo that causes game failure. + sGame = GAMESTATE:GetCurrentGame():GetName(); + local Combo = { + dance = 30, -- ITG/Pump Pro does it this way. + pump = 51, + beat = -1, + kb7 = -1, + para = -1, + }; + return Combo[sGame] +end; + +-- todo: use tables for some of these -aj +function HoldTiming() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return 0; + else return PREFSMAN:GetPreference("TimingWindowSecondsHold"); + end; +end; + +function HoldJudgmentFail() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return cmd(); + else return cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0); + end; +end; + +function HoldJudgmentPass() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return cmd(); + else return cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0); + end; +end; + +function HoldHeadStep() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return false; + else return true; + end; +end; + +function InitialHoldLife() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return 0.05; + else return 1; + end; +end; + +function MaxHoldLife() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return 0.05; + else return 1; + end; +end; + +function ImmediateHoldLetGo() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return false; + else return true; + end; +end; + +function RollBodyIncrementsCombo() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return false; + else return true; + end; +end; + +function CheckpointsTapsSeparateJudgment() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return false; + else return true; + end; +end; + +function ScoreMissedHoldsAndRolls() + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + return false; + else return true; + end; +end; diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 4060d24709..864815f669 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -167,7 +167,8 @@ MeterWidth=0.0 MeterHeight=0.0 [Combo] -ShowComboAt=2 +ShowComboAt=HitCombo() +ShowMissesAt=MissCombo() NumberMinZoom=0.8 NumberMaxZoom=1 @@ -179,8 +180,8 @@ LabelOnCommand=x,6;y,22;shadowlength,1;horizalign,left;vertalign,bottom [HoldJudgment] # !!! # -HoldJudgmentLetGoCommand=shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 -HoldJudgmentHeldCommand=shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 +HoldJudgmentLetGoCommand=HoldJudgmentFail() +HoldJudgmentHeldCommand=HoldJudgmentPass() [HelpDisplay] TipShowTime=4 @@ -274,7 +275,7 @@ BannerResetFadeCommand=diffusealpha,1 [Gameplay] # todo: make some of these play nice with other gametypes -ComboIsPerRow=GAMESTATE:GetPlayMode() == "PlayMode_Oni" +ComboIsPerRow=ComboPerRow() MinScoreToContinueCombo=ComboContinue() MinScoreToMaintainCombo=ComboMaintain() ToastyTriggersAt=250 @@ -720,16 +721,16 @@ TapJudgmentsUnderField=false HoldJudgmentsUnderField=false ComboUnderField=true PenalizeTapScoreNone=false -JudgeHoldNotesOnSameRowTogether=false +JudgeHoldNotesOnSameRowTogether=(GAMESTATE:GetCurrentGame():GetName() == "pump") HoldCheckpoints=(GAMESTATE:GetCurrentGame():GetName() == "pump") -ImmediateHoldLetGo=(GAMESTATE:GetCurrentGame():GetName() == "pump") and false or true -RequireStepOnHoldHeads=(GAMESTATE:GetCurrentGame():GetName() == "pump") and false or true -CheckpointsUseTimeSignatures=false -InitialHoldLife=1 -MaxHoldLife=1 -RollBodyIncrementsCombo=true -CheckpointsTapsSeparateJudgment=true -ScoreMissedHoldsAndRolls=(GAMESTATE:GetCurrentGame():GetName() == "pump") and false or true +ImmediateHoldLetGo=ImmediateHoldLetGo() +RequireStepOnHoldHeads=HoldHeadStep() +CheckpointsUseTimeSignatures=(GAMESTATE:GetCurrentGame():GetName() == "pump") +InitialHoldLife=InitialHoldLife() +MaxHoldLife=MaxHoldLife() +RollBodyIncrementsCombo=RollBodyIncrementsCombo() +CheckpointsTapsSeparateJudgment=CheckpointsTapsSeparateJudgment() +ScoreMissedHoldsAndRolls=ScoreMissedHoldsAndRolls() [Profile] ShowCoinData=true @@ -2546,7 +2547,7 @@ PlayerInitCommand=y,SCREEN_CENTER_Y;zoom,(THEME:GetMetric("Common","ScreenHeight StartGivesUp=true BackGivesUp=false # -FailOnMissCombo=-1 +FailOnMissCombo=FailCombo() GivingUpGoesToPrevScreen=false GivingUpGoesToNextScreen=false #