Merge, Round II
@@ -1,18 +1,18 @@
|
|||||||
local Color1 = color(Var "Color1");
|
local Color1 = color(Var "Color1");
|
||||||
local Color2 = color(Var "Color2");
|
local Color2 = color(Var "Color2");
|
||||||
|
|
||||||
local t = Def.ActorFrame {};
|
local t = Def.ActorFrame {
|
||||||
|
LoadActor(Var "File1") .. {
|
||||||
t[#t+1] = LoadActor(Var "File1") .. {
|
|
||||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||||
};
|
|
||||||
|
|
||||||
if Var("File2") ~= nil then
|
|
||||||
t[#t+1] = LoadActor(Var("File2")) .. {
|
|
||||||
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color2;effectclock,"music");
|
|
||||||
GainFocusCommand=cmd(play);
|
GainFocusCommand=cmd(play);
|
||||||
LoseFocusCommand=cmd(pause);
|
LoseFocusCommand=cmd(pause);
|
||||||
};
|
};
|
||||||
end;
|
|
||||||
|
LoadActor(Var "File2") .. {
|
||||||
|
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color2;effectclock,"music");
|
||||||
|
GainFocusCommand=cmd(play);
|
||||||
|
LoseFocusCommand=cmd(pause);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
local Color1 = color(Var "Color1");
|
|
||||||
local Color2 = color(Var "Color2");
|
|
||||||
|
|
||||||
local t = Def.ActorFrame {
|
|
||||||
LoadActor(Var "File1") .. {
|
|
||||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
|
||||||
GainFocusCommand=cmd(play);
|
|
||||||
LoseFocusCommand=cmd(pause);
|
|
||||||
};
|
|
||||||
|
|
||||||
LoadActor(Var "File2") .. {
|
|
||||||
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color2;effectclock,"music");
|
|
||||||
GainFocusCommand=cmd(play);
|
|
||||||
LoseFocusCommand=cmd(pause);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
return t;
|
|
||||||
@@ -4,6 +4,7 @@ The following is a list of known issues with StepMania 5.
|
|||||||
NoteSkins. Random Vanish, in particular, has caused crashes.
|
NoteSkins. Random Vanish, in particular, has caused crashes.
|
||||||
* In a more technical and general sense, diffuse commands do not
|
* In a more technical and general sense, diffuse commands do not
|
||||||
work properly with ActorFrames.
|
work properly with ActorFrames.
|
||||||
|
* This is most evident with the default dance mode noteskin.
|
||||||
|
|
||||||
* The course editor is not working. (It could stand to be rewritten.)
|
* The course editor is not working. (It could stand to be rewritten.)
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@ The following is a list of known issues with StepMania 5.
|
|||||||
* Routine mode (dance or pump) isn't perfect yet.
|
* Routine mode (dance or pump) isn't perfect yet.
|
||||||
* Attempting to use the Jukebox to show Routine steps will lead to an infinite
|
* Attempting to use the Jukebox to show Routine steps will lead to an infinite
|
||||||
loop that is not escapable short of killing the program.
|
loop that is not escapable short of killing the program.
|
||||||
* Practice mode and routine steps may cause a crash. (?)
|
* Attempting to select routine mode in the Practice menu causes a crash.
|
||||||
|
|
||||||
* The attempted unlock code written around Previews 2-4 (?) does not seem to
|
* The attempted unlock code written around Previews 2-4 (?) does not seem to
|
||||||
work at this time. Assistance may be needed here.
|
work at this time. Assistance may be needed here.
|
||||||
@@ -31,6 +32,7 @@ The following is a list of known issues with StepMania 5.
|
|||||||
shouldn't be all the time.
|
shouldn't be all the time.
|
||||||
|
|
||||||
* C-Mods have not been fully tested with all of the new segments yet.
|
* C-Mods have not been fully tested with all of the new segments yet.
|
||||||
|
Warp segments are ignored when C-Mods are used.
|
||||||
|
|
||||||
* Split Timing needs adjustments with only one chart in place.
|
* Split Timing needs adjustments with only one chart in place.
|
||||||
* Either that, or all tags must be allowable in song timing.
|
* Either that, or all tags must be allowable in song timing.
|
||||||
@@ -46,12 +48,13 @@ The following is a list of known issues with StepMania 5.
|
|||||||
|
|
||||||
* FFMPEG ruins our lives. I suspect init problems for Linux, since it
|
* FFMPEG ruins our lives. I suspect init problems for Linux, since it
|
||||||
works perfectly fine seemingly at random. Unsure for other platforms.
|
works perfectly fine seemingly at random. Unsure for other platforms.
|
||||||
|
* is this still an issue with ffmpeg 0.10? -freem
|
||||||
|
|
||||||
* VBR MP3's don't seek correctly in the editor, which botches sync.
|
* VBR MP3's don't seek correctly in the editor, which botches sync.
|
||||||
|
|
||||||
* While ScreenHowToPlay no longer crashes (?), the steps do not show up.
|
* While ScreenHowToPlay no longer crashes (?), the steps do not show up.
|
||||||
The steps themselves are being read, as the character will react to where
|
The steps themselves are being read, as the character will still step
|
||||||
the arrows would be.
|
to the arrows would be.
|
||||||
|
|
||||||
* There is no make install target for linux systems - this is important for
|
* There is no make install target for linux systems - this is important for
|
||||||
packaging purposes in particular (it would be great to release .debs!)
|
packaging purposes in particular (it would be great to release .debs!)
|
||||||
@@ -60,3 +63,5 @@ The following is a list of known issues with StepMania 5.
|
|||||||
|
|
||||||
* Survival courses crash if you set a noteskin in the player options
|
* Survival courses crash if you set a noteskin in the player options
|
||||||
just before starting the course.
|
just before starting the course.
|
||||||
|
|
||||||
|
* On some graphics cards, 3D models may cause crashes.
|
||||||
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
@@ -152,7 +152,7 @@ function FailCombo()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local RoutineSkins = {
|
local RoutineSkins = {
|
||||||
dance = { P1 = "midi-routine-p1", P2 = "midi-routine-p1" },
|
dance = { P1 = "midi-routine-p1", P2 = "midi-routine-p2" },
|
||||||
pump = { P1 = "cmd-routine-p1", P2 = "cmd-routine-p2" },
|
pump = { P1 = "cmd-routine-p1", P2 = "cmd-routine-p2" },
|
||||||
kb7 = { P1 = "default", P2 = "retrobar" },
|
kb7 = { P1 = "default", P2 = "retrobar" },
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
|
|||||||
@@ -236,60 +236,6 @@ r['DDR SuperNOVA'] = function(params, pss)
|
|||||||
-- [ja] 計算して代入
|
-- [ja] 計算して代入
|
||||||
pss:SetScore(math.floor(10000000 * sntmp_Score[p] / totalItems / 3));
|
pss:SetScore(math.floor(10000000 * sntmp_Score[p] / totalItems / 3));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
--DDR SuperNOVA 2 scoring by @waiei
|
|
||||||
-----------------------------------------------------------
|
|
||||||
local sn2tmp_Sub={0,0};
|
|
||||||
local sn2tmp_Score={0,0};
|
|
||||||
local sn2tmp_Steps={0,0};
|
|
||||||
r['DDR SuperNOVA 2'] = function(params, pss)
|
|
||||||
local multLookup =
|
|
||||||
{
|
|
||||||
['TapNoteScore_W1'] = 10,
|
|
||||||
['TapNoteScore_W2'] = 10,
|
|
||||||
['TapNoteScore_W3'] = 5
|
|
||||||
};
|
|
||||||
setmetatable(multLookup, ZeroIfNotFound);
|
|
||||||
local radarValues = GetDirectRadar(params.Player);
|
|
||||||
local totalItems = GetTotalItems(radarValues);
|
|
||||||
local p = (params.Player == 'PlayerNumber_P1') and 1 or 2;
|
|
||||||
|
|
||||||
-- [ja] スコアが0の時に初期化
|
|
||||||
if pss:GetScore()==0 then
|
|
||||||
sn2tmp_Sub[p]=0;
|
|
||||||
sn2tmp_Score[p]=0;
|
|
||||||
sn2tmp_Steps[p]=0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
-- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%)
|
|
||||||
local maxAdd = 0;
|
|
||||||
-- [ja] O.K.判定時は問答無用で満点
|
|
||||||
if params.HoldNoteScore == 'HoldNoteScore_Held' then
|
|
||||||
maxAdd = 10;
|
|
||||||
else
|
|
||||||
-- [ja] N.G.判定時は問答無用で0点
|
|
||||||
if params.HoldNoteScore == 'HoldNoteScore_LetGo' then
|
|
||||||
maxAdd = 0;
|
|
||||||
-- [ja] それ以外ということは、ロングノート以外の判定である
|
|
||||||
else
|
|
||||||
maxAdd = multLookup[params.TapNoteScore];
|
|
||||||
if (params.TapNoteScore == 'TapNoteScore_W2') or (params.TapNoteScore=='TapNoteScore_W3') then
|
|
||||||
-- [ja] W2とW3の数を記録
|
|
||||||
sn2tmp_Sub[p]=sn2tmp_Sub[p]+1;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
sn2tmp_Score[p]=sn2tmp_Score[p]+maxAdd;
|
|
||||||
-- [ja] 踏み踏みしたステップ数
|
|
||||||
sn2tmp_Steps[p]=sn2tmp_Steps[p]+1;
|
|
||||||
-- [ja] 現時点での、All W1判定の時のスコア
|
|
||||||
pss:SetCurMaxScore(math.floor(10000*sn2tmp_Steps[p]/totalItems) * 10);
|
|
||||||
|
|
||||||
-- [ja] 計算して代入
|
|
||||||
pss:SetScore((math.floor(10000*sn2tmp_Score[p]/totalItems) * 10) - (sn2tmp_Sub[p]*10) );
|
|
||||||
end;
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
--Radar Master (disabled; todo: get this working with StepMania 5)
|
--Radar Master (disabled; todo: get this working with StepMania 5)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
@@ -340,15 +286,6 @@ r['MIGS'] = function(params,pss)
|
|||||||
curScore = math.max(0,curScore + ( pss:GetHoldNoteScores('HoldNoteScore_Held') * 6 ));
|
curScore = math.max(0,curScore + ( pss:GetHoldNoteScores('HoldNoteScore_Held') * 6 ));
|
||||||
pss:SetScore(curScore);
|
pss:SetScore(curScore);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
--------------------------------------------------------------
|
|
||||||
--1bilDP scoring because I can.
|
|
||||||
--------------------------------------------------------------
|
|
||||||
r['Billions DP']= function(params,pss)
|
|
||||||
local poss = pss:GetPossibleDancePoints()
|
|
||||||
pss:SetScore(math.floor((pss:GetActualDancePoints()/poss)*1000000000))
|
|
||||||
pss:SetCurMaxScore(math.floor((pss:GetCurrentPossibleDancePoints()/poss)*1000000000))
|
|
||||||
end
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
-- Formulas end here.
|
-- Formulas end here.
|
||||||
for v in ivalues(DisabledScoringModes) do r[v] = nil end
|
for v in ivalues(DisabledScoringModes) do r[v] = nil end
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ local function CreateOldScoringShim(name)
|
|||||||
judg,pss,player,mode=coroutine.yield()
|
judg,pss,player,mode=coroutine.yield()
|
||||||
while true do
|
while true do
|
||||||
if mode=="update" then
|
if mode=="update" then
|
||||||
func(judg,pss)
|
if not judg.TapNoteScore:find("Mine") then func(judg,pss) end
|
||||||
judg,pss,player,mode=coroutine.yield(pss:GetScore(),pss:GetCurMaxScore())
|
judg,pss,player,mode=coroutine.yield(pss:GetScore(),pss:GetCurMaxScore())
|
||||||
elseif mode=="finalize" then
|
elseif mode=="finalize" then
|
||||||
return pss:GetScore(),pss:GetCurMaxScore()
|
return pss:GetScore(),pss:GetCurMaxScore()
|
||||||
@@ -28,7 +28,9 @@ function GetDirectRadar(player)
|
|||||||
return GAMESTATE:GetCurrentSteps(player):GetRadarValues(player)
|
return GAMESTATE:GetCurrentSteps(player):GetRadarValues(player)
|
||||||
end
|
end
|
||||||
|
|
||||||
--The code here is an example of native modes.
|
--[[----------------------------------------------------------------------------
|
||||||
|
Scoring modes begin here.
|
||||||
|
--]]----------------------------------------------------------------------------
|
||||||
|
|
||||||
--[[There are three operation modes:
|
--[[There are three operation modes:
|
||||||
init mode: The JudgmentCommand is invalid in this mode.
|
init mode: The JudgmentCommand is invalid in this mode.
|
||||||
@@ -129,6 +131,61 @@ score=score+math.floor((actradar:GetValue(k)/thispossradar)*(thispossradar*v))
|
|||||||
return score,bestscore
|
return score,bestscore
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ScoringModes["DDR SuperNOVA 2"]=function(judge,pss,player,mode)
|
||||||
|
local function dTransform(number)
|
||||||
|
return 10*math.round(number/10)
|
||||||
|
end
|
||||||
|
local curScore=0
|
||||||
|
local curMaxScore=0
|
||||||
|
local tnsMultiplier={
|
||||||
|
TapNoteScore_W1=1,
|
||||||
|
TapNoteScore_W2=1,
|
||||||
|
TapNoteScore_W3=0.5,
|
||||||
|
TapNoteScore_AvoidMine=1}
|
||||||
|
local subtract10Points = {
|
||||||
|
TapNoteScore_W2=IsW1Allowed('TapNoteScore_W2'),
|
||||||
|
TapNoteScore_W3=true}
|
||||||
|
setmetatable(tnsMultiplier, ZeroIfNotFound)
|
||||||
|
local radar = pss:GetRadarPossible()
|
||||||
|
local stepScore = 1000000/math.max(radar:GetValue('RadarCategory_TapsAndHolds')+
|
||||||
|
radar:GetValue('RadarCategory_Mines')+
|
||||||
|
radar:GetValue('RadarCategory_Holds')+
|
||||||
|
radar:GetValue('RadarCategory_Rolls'),1)
|
||||||
|
--this is how one activates ScoringEngine2's built-in filter system.
|
||||||
|
judge,pss,player,mode=coroutine.yield({{'TapNoteScore_None','TapNoteScore_CheckpointHit','TapNoteScore_CheckpointMiss'},{"HoldNoteScore_None"}})
|
||||||
|
local mineWasHit=false
|
||||||
|
while mode=="update" do
|
||||||
|
if judge.TapNoteScore:find("Mine") then mineWasHit = true end
|
||||||
|
curScore=curScore+(stepScore*(not judge.HoldNoteScore and tnsMultiplier[judge.TapNoteScore] -
|
||||||
|
(subtract10Points[judge.TapNoteScore] and 10 or 0) or
|
||||||
|
(judge.HoldNoteScore=='HoldNoteScore_Held' and 1 or 0)))
|
||||||
|
curMaxScore=curMaxScore+stepScore
|
||||||
|
judge,pss,player,mode=coroutine.yield(dTransform(curScore),dTransform(curMaxScore))
|
||||||
|
end
|
||||||
|
--We might not always be able to register mines in gameplay. Add the scores after gameplay if we couldn't.
|
||||||
|
if not mineWasHit and radar:GetValue('RadarCategory_Mines')~=0 then
|
||||||
|
curMaxScore=curMaxScore+(stepScore*radar:GetValue('RadarCategory_Mines'))
|
||||||
|
curScore=curScore+(stepScore*pss:GetRadarActual():GetValue('RadarCategory_Miines'))
|
||||||
|
end
|
||||||
|
return dTransform(curScore),dTransform(curMaxScore)
|
||||||
|
end
|
||||||
|
|
||||||
|
ScoringModes["Billions DP"]=function(judge,pss,player,mode)
|
||||||
|
local possibleDP=pss:GetPossibleDancePoints()
|
||||||
|
possibleDP=possibleDP>0 and possibleDP or 1
|
||||||
|
local curScore = 0
|
||||||
|
local curMaxScore = 0
|
||||||
|
while true do
|
||||||
|
judge,pss,player,mode=coroutine.yield(curScore,curMaxScore)
|
||||||
|
curScore = (pss:GetActualDancePoints()/possibleDP)*1000000000
|
||||||
|
curMaxScore = (pss:GetCurrentPossibleDancePoints()/possibleDP)*1000000000
|
||||||
|
if mode=="finalize" then return curScore,curMaxScore end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[----------------------------------------------------------------------------
|
||||||
|
Scoring modes end here.
|
||||||
|
--]]----------------------------------------------------------------------------
|
||||||
for k,v in pairs(Scoring) do
|
for k,v in pairs(Scoring) do
|
||||||
if ScoringModes[k] == nil then
|
if ScoringModes[k] == nil then
|
||||||
ScoringModes[k] = CreateOldScoringShim(k)
|
ScoringModes[k] = CreateOldScoringShim(k)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 940 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 797 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 653 B After Width: | Height: | Size: 653 B |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -1870,6 +1870,21 @@ SongInformationY=SCREEN_TOP+100
|
|||||||
SongInformationOnCommand=playcommand,"Set";draworder,105
|
SongInformationOnCommand=playcommand,"Set";draworder,105
|
||||||
SongInformationOffCommand=
|
SongInformationOffCommand=
|
||||||
|
|
||||||
|
ShowWinArea=GAMESTATE:GetPlayMode() == 'PlayMode_Rave'
|
||||||
|
WinFrameP1X=
|
||||||
|
WinFrameP1Y=
|
||||||
|
WinFrameP1OnCommand=
|
||||||
|
WinFrameP2X=
|
||||||
|
WinFrameP2Y=
|
||||||
|
WinFrameP2OnCommand=
|
||||||
|
#----#
|
||||||
|
WinP1X=SCREEN_CENTER_X-224
|
||||||
|
WinP1Y=SCREEN_BOTTOM-224
|
||||||
|
WinP1OnCommand=draworder,101
|
||||||
|
WinP2X=SCREEN_CENTER_X+224
|
||||||
|
WinP2Y=SCREEN_BOTTOM-224
|
||||||
|
WinP2OnCommand=draworder,101
|
||||||
|
|
||||||
[ScreenEvaluationNormal]
|
[ScreenEvaluationNormal]
|
||||||
Fallback="ScreenEvaluation"
|
Fallback="ScreenEvaluation"
|
||||||
#
|
#
|
||||||
|
|||||||