From 81b4011423cb46c72d54b9ece1a824df40012038 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 31 Jan 2010 00:27:42 -0500 Subject: [PATCH] View the list: * Added new metric to cap the max life of a hold. No sanity checking yet: need a way to keep <= 1. * Added more Pump specific behavior to lua. * Fixed combo and hold judgment graphics due to it being defined twice. Minor cleanup of the ProductivityHelpers is going to have to happen later on. --- .../Scripts/03 ProductivityHelpers.lua | 53 +++++++++++++++++-- Themes/_fallback/metrics.ini | 5 +- .../Scripts/03 ProductivityHelpers.lua | 49 +++++++++++++++++ Themes/default/metrics.ini | 7 +-- src/Player.cpp | 3 +- 5 files changed, 105 insertions(+), 12 deletions(-) create mode 100644 Themes/default/Scripts/03 ProductivityHelpers.lua diff --git a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua index 4894b5921b..30d7e471bf 100644 --- a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua +++ b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua @@ -173,24 +173,60 @@ function ComboPerRow() 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 = "", + kb7 = "", + para = "", + }; + 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; + function HoldTiming() if GAMESTATE:GetCurrentGame():GetName() == "pump" then - return "0"; + return 0; else return PREFSMAN:GetPreference("TimingWindowSecondsHold"); end; end; function HoldJudgmentFail() if GAMESTATE:GetCurrentGame():GetName() == "pump" then - return ""; - else return "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"; + 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 ""; - else return "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"; + 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; @@ -208,6 +244,13 @@ function InitialHoldLife() 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; diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 5bc3f07878..1077fbdaf6 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -161,8 +161,6 @@ MeterWidth=0.0 MeterHeight=0.0 [Combo] -ShowComboAt=(GAMESTATE:GetCurrentGame():GetName() == "pump") and 4 or 2 -ShowMissesAt=(GAMESTATE:GetCurrentGame():GetName() == "pump") and 4 or "" NumberMinZoom=0.8 NumberMaxZoom=1 @@ -711,6 +709,7 @@ ImmediateHoldLetGo=ImmediateHoldLetGo() RequireStepOnHoldHeads=HoldHeadStep() CheckpointsUseTimeSignatures=(GAMESTATE:GetCurrentGame():GetName() == "pump") InitialHoldLife=InitialHoldLife() +MaxHoldLife=MaxHoldLife() RollBodyIncrementsCombo=RollBodyIncrementsCombo() CheckpointsTapsSeparateJudgment=CheckpointsTapsSeparateJudgment() ScoreMissedHoldsAndRolls=ScoreMissedHoldsAndRolls() @@ -2488,7 +2487,7 @@ PlayerInitCommand=y,SCREEN_CENTER_Y;zoom,(THEME:GetMetric("Common","ScreenHeight StartGivesUp=true BackGivesUp=false # -FailOnMissCombo=-1 +FailOnMissCombo=FailCombo() GivingUpGoesToPrevScreen=false GivingUpGoesToNextScreen=false # diff --git a/Themes/default/Scripts/03 ProductivityHelpers.lua b/Themes/default/Scripts/03 ProductivityHelpers.lua new file mode 100644 index 0000000000..e088a81344 --- /dev/null +++ b/Themes/default/Scripts/03 ProductivityHelpers.lua @@ -0,0 +1,49 @@ +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 = cmd(), + kb7 = cmd(), + para = cmd(), + }; + 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; + +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; \ No newline at end of file diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 1fdbc9d7e5..019e95d806 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -31,7 +31,8 @@ ShowQMarksInRandomCycle=true [HelpDisplay] TipShowTime=7 [Combo] -ShowComboAt=2 +ShowComboAt=HitCombo() +ShowMissesAt=MissCombo() NumberMinZoom=0.8 NumberMaxZoom=1 @@ -43,8 +44,8 @@ LabelOnCommand=x,6;y,22;shadowlength,1;horizalign,left;vertalign,bottom [HoldJudgment] # !!! # -HoldJudgmentLetGoCommand=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 -HoldJudgmentHeldCommand=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 +HoldJudgmentLetGoCommand=HoldJudgmentFail() +HoldJudgmentHeldCommand=HoldJudgmentPass() [Judgment] # New # diff --git a/src/Player.cpp b/src/Player.cpp index 5d0024a2e7..a47f1939ec 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -127,6 +127,7 @@ static Preference g_bEnableMineSoundPlayback ( "EnableMineHitSound", true Preference g_fTimingWindowHopo ( "TimingWindowHopo", 0.25 ); // max time between notes in a hopo chain Preference g_fTimingWindowStrum ( "TimingWindowStrum", 0.1f ); // max time between strum and when the frets must match ThemeMetric INITIAL_HOLD_LIFE ( "Player", "InitialHoldLife" ); +ThemeMetric MAX_HOLD_LIFE ( "Player", "MaxHoldLife" ); ThemeMetric PENALIZE_TAP_SCORE_NONE ( "Player", "PenalizeTapScoreNone" ); ThemeMetric JUDGE_HOLD_NOTES_ON_SAME_ROW_TOGETHER ( "Player", "JudgeHoldNotesOnSameRowTogether" ); ThemeMetric HOLD_CHECKPOINTS ( "Player", "HoldCheckpoints" ); @@ -1039,7 +1040,7 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector