204 lines
4.6 KiB
Lua
204 lines
4.6 KiB
Lua
-- sm-ssc fallback theme | script ring 03 | Gameplay.lua
|
|
-- [en] This file is used to store settings that should be different in each
|
|
-- game mode.
|
|
|
|
-- GameCompatibleModes:
|
|
-- [en] returns possible modes for ScreenSelectPlayMode
|
|
function GameCompatibleModes()
|
|
sGame = GAMESTATE:GetCurrentGame():GetName();
|
|
local Modes = {
|
|
dance = "Single,Double,Solo,Versus,Couple",
|
|
pump = "Single,Double,HalfDouble,Versus,Couple",
|
|
beat = "5Keys,7Keys,10Keys,14Keys",
|
|
kb7 = "KB7",
|
|
para = "Single",
|
|
techno = "Single4,Single5,Single8,Double4,Double8",
|
|
lights = "Single", -- lights shouldn't be playable
|
|
};
|
|
return Modes[sGame];
|
|
end
|
|
|
|
function SelectProfileKeys()
|
|
local game = GAMESTATE:GetCurrentGame():GetName();
|
|
return game == "dance" and "Up,Down,Start,Back,Up2,Down2" or "Up,Down,Start,Back";
|
|
end;
|
|
|
|
-- ScoreKeeperClass:
|
|
-- [en] Determines the correct ScoreKeeper class to use.
|
|
function ScoreKeeperClass()
|
|
sGame = GAMESTATE:GetCurrentGame():GetName();
|
|
local ScoreKeepers = {
|
|
-- xxx: allow for ScoreKeeperShared when needed
|
|
dance = "ScoreKeeperNormal",
|
|
pump = "ScoreKeeperNormal",
|
|
beat = "ScoreKeeperNormal",
|
|
kb7 = "ScoreKeeperNormal",
|
|
para = "ScoreKeeperNormal",
|
|
techno = "ScoreKeeperNormal",
|
|
ez2 = "ScoreKeeperNormal",
|
|
ds3ddx = "ScoreKeeperNormal",
|
|
maniax = "ScoreKeeperNormal",
|
|
guitar = "ScoreKeeperGuitar",
|
|
};
|
|
return ScoreKeepers[sGame]
|
|
end;
|
|
|
|
-- ComboContinue:
|
|
-- [en]
|
|
function ComboContinue()
|
|
sGame = GAMESTATE:GetCurrentGame():GetName();
|
|
local Continue = {
|
|
dance = GAMESTATE:GetPlayMode() == "PlayMode_Oni" and "TapNoteScore_W2" or "TapNoteScore_W3",
|
|
pump = "TapNoteScore_W4",
|
|
beat = "TapNoteScore_W3",
|
|
kb7 = "TapNoteScore_W3",
|
|
para = "TapNoteScore_W4",
|
|
};
|
|
return Continue[sGame]
|
|
end;
|
|
|
|
function ComboMaintain()
|
|
sGame = GAMESTATE:GetCurrentGame():GetName();
|
|
local Maintain = {
|
|
dance = "TapNoteScore_W3",
|
|
pump = "TapNoteScore_W4",
|
|
beat = "TapNoteScore_W3",
|
|
kb7 = "TapNoteScore_W3",
|
|
para = "TapNoteScore_W4",
|
|
};
|
|
return Maintain[sGame]
|
|
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,
|
|
guitar = 2,
|
|
};
|
|
return Combo[sGame]
|
|
end;
|
|
|
|
function MissCombo()
|
|
sGame = GAMESTATE:GetCurrentGame():GetName();
|
|
local Combo = {
|
|
dance = 2,
|
|
pump = 4,
|
|
beat = 0,
|
|
kb7 = 0,
|
|
para = 0,
|
|
guitar = 0,
|
|
};
|
|
return Combo[sGame]
|
|
end;
|
|
|
|
-- FailCombo:
|
|
-- [en] The combo that causes game failure.
|
|
function FailCombo()
|
|
sGame = GAMESTATE:GetCurrentGame():GetName();
|
|
local Combo = {
|
|
dance = -1, -- ITG uses 30
|
|
pump = 51, -- Pump Pro uses 30, real Pump uses 51
|
|
beat = -1,
|
|
kb7 = -1,
|
|
para = -1,
|
|
guitar = -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 ShowHoldJudgments()
|
|
return not GAMESTATE:GetCurrentGame():GetName() == "pump";
|
|
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()
|
|
return false
|
|
--[[ 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;
|
|
|
|
local tNotePositions = {
|
|
-- StepMania 3.9/4.0
|
|
Normal = {
|
|
-144,
|
|
144,
|
|
},
|
|
-- ITG
|
|
Lower = {
|
|
-125,
|
|
145,
|
|
},
|
|
}
|
|
function GetTapPosition( sType )
|
|
bCategory = (sType == 'Standard') and 1 or 2;
|
|
-- true: Normal
|
|
-- false: Lower
|
|
bPreference = GetUserPrefB("UserPrefNotePosition") and "Normal" or "Lower";
|
|
tNotePos = tNotePositions[bPreference];
|
|
return tNotePos[bCategory]
|
|
end |