Files
itgmania212121/Themes/_fallback/Scripts/03 Gameplay.lua
T
2011-03-17 01:47:30 -04:00

270 lines
5.5 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.
-- shakesoda calls this pump.lua
-- GetExtraColorThreshold()
-- [en] returns the difficulty threshold in meter
-- for songs that should be counted as boss songs.
function GetExtraColorThreshold()
sGame = GAMESTATE:GetCurrentGame():GetName()
local Modes = {
dance = 10,
pump = 15,
beat = 12,
kb7 = 10,
para = 10,
techno = 10,
lights = 10, -- lights shouldn't be playable
}
return Modes[sGame]
end
-- 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 sGame = GAMESTATE:GetCurrentGame():GetName()
if sGame == "pump" then
return "Up,Down,Start,Back,Center,DownLeft,DownRight"
elseif sGame == "dance" then
return "Up,Down,Start,Back,Up2,Down2"
else
return "Up,Down,Start,Back"
end
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_W3",
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
-- these need cleanup really.
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
function RoutineSkinP1()
sGame = GAMESTATE:GetCurrentGame():GetName()
local Combo = {
dance = "midi-routine-p1",
pump = "cmd-routine-p1",
beat = "default",
kb7 = "default",
para = "default",
guitar = "default"
}
return Combo[sGame]
end
function RoutineSkinP2()
sGame = GAMESTATE:GetCurrentGame():GetName()
local Combo = {
dance = "midi-routine-p2",
pump = "cmd-routine-p2",
beat = "default",
kb7 = "retrobar",
para = "default",
guitar = "default"
}
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
function ComboUnderField()
return GetUserPrefB("UserPrefComboUnderField")
end