and another merge
@@ -5,13 +5,28 @@ from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
|||||||
________________________________________________________________________________
|
________________________________________________________________________________
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
StepMania 5.0 alpha 1 | 201201xx
|
StepMania 5.0 alpha 1 | 20120108
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
2012/01/08
|
||||||
|
----------
|
||||||
|
* [ScreenManager] Made AddScreenToTop take a second (optional) parameter for
|
||||||
|
posting a ScreenMessage on screen pop. [AJ]
|
||||||
|
* Only read certain tags during first load; makes song loading faster. [theDtTvB]
|
||||||
|
|
||||||
|
2012/01/07
|
||||||
|
----------
|
||||||
|
* Fix Portable.ini not working on Mac OS X. [shakesoda]
|
||||||
|
|
||||||
2012/01/05
|
2012/01/05
|
||||||
----------
|
----------
|
||||||
* [PercentageDisplay] Remove unused ApplyScoreDisplayOptions metric;
|
* [PercentageDisplay] Remove unused ApplyScoreDisplayOptions metric;
|
||||||
added PercentFormat and RemainderFormat metrics. [AJ]
|
added PercentFormat and RemainderFormat metrics. [AJ]
|
||||||
|
* Fix Portable.ini not working in Linux. [FSX]
|
||||||
|
|
||||||
|
2012/01/04
|
||||||
|
----------
|
||||||
|
* Fix a scoring/grading bug with Lifts. [FSX]
|
||||||
|
|
||||||
2011/12/27
|
2011/12/27
|
||||||
----------
|
----------
|
||||||
|
|||||||
@@ -3649,8 +3649,8 @@ save yourself some time, copy this for undocumented things:
|
|||||||
</Function>
|
</Function>
|
||||||
</Class>
|
</Class>
|
||||||
<Class name='ScreenManager'>
|
<Class name='ScreenManager'>
|
||||||
<Function name='AddNewScreenToTop' return='void' arguments='string sScreenName'>
|
<Function name='AddNewScreenToTop' return='void' arguments='string sScreenName, string sMessage'>
|
||||||
Adds a screen at the top of the screen stack.
|
Adds a screen at the top of the screen stack. (<code>sMessage</code> is an optional ScreenMessage posted once the new screen is finished.)
|
||||||
</Function>
|
</Function>
|
||||||
<Function name='GetTopScreen' return='Screen' arguments=''>
|
<Function name='GetTopScreen' return='Screen' arguments=''>
|
||||||
Gets the screen at the top of the screen stack.
|
Gets the screen at the top of the screen stack.
|
||||||
|
|||||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_center', 'explosion' );
|
||||||
|
InitCommand=cmd(blend,"BlendMode_Add";finishtweening;diffusealpha,0.2;zoom,0.6;linear,0.1;diffusealpha,0;zoom,0.8);
|
||||||
|
};
|
||||||
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
@@ -0,0 +1,8 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_center', 'explosion' );
|
||||||
|
W1Command=cmd(blend,"BlendMode_Add";finishtweening;diffusealpha,0.2;zoom,0.6;linear,0.1;diffusealpha,0;zoom,0.8);
|
||||||
|
W2Command=cmd(blend,"BlendMode_Add";finishtweening;diffusealpha,0.2;zoom,0.6;linear,0.1;diffusealpha,0;zoom,0.8);
|
||||||
|
W3Command=cmd(blend,"BlendMode_Add";finishtweening;diffusealpha,0.2;zoom,0.6;linear,0.1;diffusealpha,0;zoom,0.8);
|
||||||
|
W4Command=cmd(blend,"BlendMode_Add";finishtweening;diffusealpha,0.2;zoom,0.6;linear,0.1;diffusealpha,0;zoom,0.8);
|
||||||
|
W5Command=cmd(blend,"BlendMode_Add";finishtweening;diffusealpha,0.2;zoom,0.6;linear,0.1;diffusealpha,0;zoom,0.8);
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_centerp1', 'tap note' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_centerp1', 'tap note' );
|
||||||
|
Frame0000=3;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
|
||||||
|
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
|
||||||
|
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
|
||||||
|
|
||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( "_centerp1", "Tap Note" );
|
||||||
|
Frame0000=99;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(;glowblink;effectcolor1,0.4,0.4,0.4,0.4;effectcolor2,0.8,0.8,0.8,0.4;effectclock,'beat';effecttiming,0.2,0,0.8,0);
|
||||||
|
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
|
||||||
|
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
|
||||||
|
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
|
||||||
|
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
|
||||||
|
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
|
||||||
|
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
|
||||||
|
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
|
||||||
|
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_centerp1', 'tap fake' );
|
||||||
|
Frames = Sprite.LinearFrames( 6, 1 );
|
||||||
|
};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_centerp1', 'tap lift' );
|
||||||
|
Frames = Sprite.LinearFrames( 6, 1 );
|
||||||
|
};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_centerp1', 'tap note' );
|
||||||
|
Frames = Sprite.LinearFrames( 6, 1 );
|
||||||
|
};
|
||||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,6 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'explosion' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(diffuseblink;effectcolor1,1,1,1,0.8;effectcolor2,1,1,1,1;effectclock,'beat';effectperiod,0.25);
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=1;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,21 @@
|
|||||||
|
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
|
||||||
|
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
|
||||||
|
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
|
||||||
|
|
||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( "_Down", "Tap Note" );
|
||||||
|
Frame0000=69;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(;glowblink;effectcolor1,0.4,0.4,0.4,0.4;effectcolor2,0.8,0.8,0.8,0.4;effectclock,'beat';effecttiming,0.2,0,0.8,0);
|
||||||
|
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
|
||||||
|
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
|
||||||
|
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
|
||||||
|
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
|
||||||
|
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
|
||||||
|
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
|
||||||
|
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
|
||||||
|
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'explosion' );
|
||||||
|
Frame0000=1;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'explosion' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap fake' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
Frame0001=1;
|
||||||
|
Delay0001=1;
|
||||||
|
Frame0002=2;
|
||||||
|
Delay0002=1;
|
||||||
|
Frame0003=3;
|
||||||
|
Delay0003=1;
|
||||||
|
Frame0004=0;
|
||||||
|
Delay0004=1;
|
||||||
|
Frame0005=1;
|
||||||
|
Delay0005=1;
|
||||||
|
Frame0006=2;
|
||||||
|
Delay0006=1;
|
||||||
|
Frame0007=3;
|
||||||
|
Delay0007=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap lift' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
Frame0001=1;
|
||||||
|
Delay0001=1;
|
||||||
|
Frame0002=2;
|
||||||
|
Delay0002=1;
|
||||||
|
Frame0003=3;
|
||||||
|
Delay0003=1;
|
||||||
|
Frame0004=0;
|
||||||
|
Delay0004=1;
|
||||||
|
Frame0005=1;
|
||||||
|
Delay0005=1;
|
||||||
|
Frame0006=2;
|
||||||
|
Delay0006=1;
|
||||||
|
Frame0007=3;
|
||||||
|
Delay0007=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap mine underlay' );
|
||||||
|
Frames = Sprite.LinearFrames( 1, 1 );
|
||||||
|
InitCommand=cmd(diffuseshift;effectcolor1,0.4,0,0,1;effectcolor2,1,0,0,1;effectclock,'beat');
|
||||||
|
};
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap mine base' );
|
||||||
|
Frames = Sprite.LinearFrames( 1, 1 );
|
||||||
|
InitCommand=cmd(spin;effectclock,'beat';effectmagnitude,0,0,80);
|
||||||
|
};
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap mine overlay' );
|
||||||
|
Frames = Sprite.LinearFrames( 1, 1 );
|
||||||
|
InitCommand=cmd(spin;effectclock,'beat';effectmagnitude,0,0,-40);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
Frame0001=1;
|
||||||
|
Delay0001=1;
|
||||||
|
Frame0002=2;
|
||||||
|
Delay0002=1;
|
||||||
|
Frame0003=3;
|
||||||
|
Delay0003=1;
|
||||||
|
Frame0004=0;
|
||||||
|
Delay0004=1;
|
||||||
|
Frame0005=1;
|
||||||
|
Delay0005=1;
|
||||||
|
Frame0006=2;
|
||||||
|
Delay0006=1;
|
||||||
|
Frame0007=3;
|
||||||
|
Delay0007=1;
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_downleftp1', 'tap note' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_downleftp1', 'tap note' );
|
||||||
|
Frame0000=3;
|
||||||
|
Delay0000=1;
|
||||||
|
};
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
--If a Command has "NOTESKIN:GetMetricA" in it, that means it gets the command from the metrics.ini, else use cmd(); to define command.
|
||||||
|
--If you dont know how "NOTESKIN:GetMetricA" works here is an explanation.
|
||||||
|
--NOTESKIN:GetMetricA("The [Group] in the metrics.ini", "The actual Command to fallback on in the metrics.ini");
|
||||||
|
|
||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( "_downleftp1", "Tap Note" );
|
||||||
|
Frame0000=99;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(;glowblink;effectcolor1,0.4,0.4,0.4,0.4;effectcolor2,0.8,0.8,0.8,0.4;effectclock,'beat';effecttiming,0.2,0,0.8,0);
|
||||||
|
NoneCommand=NOTESKIN:GetMetricA("ReceptorArrow", "NoneCommand");
|
||||||
|
PressCommand=NOTESKIN:GetMetricA("ReceptorArrow", "PressCommand");
|
||||||
|
LiftCommand=NOTESKIN:GetMetricA("ReceptorArrow", "LiftCommand");
|
||||||
|
W5Command=NOTESKIN:GetMetricA("ReceptorArrow", "W5Command");
|
||||||
|
W4Command=NOTESKIN:GetMetricA("ReceptorArrow", "W4Command");
|
||||||
|
W3Command=NOTESKIN:GetMetricA("ReceptorArrow", "W3Command");
|
||||||
|
W2Command=NOTESKIN:GetMetricA("ReceptorArrow", "W2Command");
|
||||||
|
W1Command=NOTESKIN:GetMetricA("ReceptorArrow", "W1Command");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_downleftp1', 'tap fake' );
|
||||||
|
Frames = Sprite.LinearFrames( 6, 1 );
|
||||||
|
};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_downleftp1', 'tap lift' );
|
||||||
|
Frames = Sprite.LinearFrames( 6, 1 );
|
||||||
|
};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
return Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_downleftp1', 'tap note' );
|
||||||
|
Frames = Sprite.LinearFrames( 6, 1 );
|
||||||
|
};
|
||||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,209 @@
|
|||||||
|
--[[
|
||||||
|
USW Noteskin.lua Version V2
|
||||||
|
Made for Version Stepmania 5 Preview 4
|
||||||
|
|
||||||
|
I am the bone of my noteskin
|
||||||
|
Arrows are my body, and explosions are my blood
|
||||||
|
I have created over a thousand noteskins
|
||||||
|
Unknown to death
|
||||||
|
Nor known to life
|
||||||
|
Have withstood pain to create many noteskins
|
||||||
|
Yet these hands will never hold anything
|
||||||
|
So as I pray, Unlimited Stepman Works
|
||||||
|
|
||||||
|
If you want to know the list of lua commands you can use here is the main page for help http://kki.ajworld.net/lua/sm5/Lua.xml
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local ret = ... or {};
|
||||||
|
|
||||||
|
--I always had the problem were I wrote var instead of Var, which really iritated me wondering why a code wouldnt work
|
||||||
|
--You can edit it out if you want, But I'm just gonna leave it here so incase a person wants to make a noteskin
|
||||||
|
--And gets the same problem as me were you use var instead of Var, atleast this should make it still work
|
||||||
|
--But its best to use Var, And make sure to check all your code for little mistakes while you write ;)
|
||||||
|
local var = Var;
|
||||||
|
|
||||||
|
--[[
|
||||||
|
This is the general redirect table, Not the general redirect code, We use this if we are lazy ;)
|
||||||
|
Or if we cant a directon of a noteskin use the exact same files as another direction
|
||||||
|
The most re used direction in this case is "Down"
|
||||||
|
You can add and remove values if you want, It works for every game type,
|
||||||
|
If you want an easy way to know how all directions are called go in to stepmaniaoptions and change gametype
|
||||||
|
Then if you go to key configure look at the names for the keys, They are the same names that are used in the noteskin.lua
|
||||||
|
--]]
|
||||||
|
ret.RedirTable =
|
||||||
|
{
|
||||||
|
Up = "Down",
|
||||||
|
Down = "Down",
|
||||||
|
Left = "Down",
|
||||||
|
Right = "Down",
|
||||||
|
Center = "Down",
|
||||||
|
DownLeft = "Down",
|
||||||
|
DownRight = "Down",
|
||||||
|
UpLeft = "Down",
|
||||||
|
UpRight = "Down",
|
||||||
|
};
|
||||||
|
|
||||||
|
--[[
|
||||||
|
This is the general redirect code, We use this if we want to redirect parts of noteskins to other parts
|
||||||
|
Because unlike the ret.RedirTable which redirects everything to the defined direction.
|
||||||
|
Here we can add redirects for seperate elements which means we can use separate images if we want
|
||||||
|
--]]
|
||||||
|
local OldRedir = ret.Redir;
|
||||||
|
ret.Redir = function(sButton, sElement)
|
||||||
|
sButton, sElement = OldRedir(sButton, sElement);
|
||||||
|
|
||||||
|
--This is were we call the ret.RedirTable and define it as sButton
|
||||||
|
--So it get called when we return sButton including the code under here
|
||||||
|
sButton = ret.RedirTable[sButton];
|
||||||
|
|
||||||
|
--We want to use custom hold/roll per direction, But keep global hold/roll heads and explosions.
|
||||||
|
if string.find(sElement, "Hold") or string.find(sElement, "Roll") then
|
||||||
|
if not string.find(sElement, "Head") and not string.find(sElement, "Explosion") then
|
||||||
|
if Var "Button" == "Left" then sButton = "Left"; end
|
||||||
|
if Var "Button" == "Right" then sButton = "Right"; end
|
||||||
|
if Var "Button" == "Down" then sButton = "Down"; end
|
||||||
|
if Var "Button" == "Up" then sButton = "Up"; end
|
||||||
|
if Var "Button" == "UpLeft" then sButton = "UpLeft"; end
|
||||||
|
if Var "Button" == "UpRight" then sButton = "UpRight"; end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--Making Roll Head/Explosion fallback on Hold
|
||||||
|
if sElement == "Roll Head Inactive" then sElement = "Hold Head Inactive"; end
|
||||||
|
if sElement == "Roll Head Active" then sElement = "Hold Head Active"; end
|
||||||
|
if sElement == "Roll Explosion" then sElement = "Hold Explosion"; end
|
||||||
|
|
||||||
|
--Adding stuff for more directions for diffrent gametypes
|
||||||
|
if GAMESTATE:GetCurrentGame():GetName() == "dance" then
|
||||||
|
--Making the Upleft and Upright Hold/Roll body/BottomCap/TopCap but not Explosions use SoloUpLeft and SoloUpRight instead
|
||||||
|
--When the gametype is dance this way we can define diffrent images for diffrent gametypes
|
||||||
|
if string.find(sElement, "Hold") or string.find(sElement, "Roll") then
|
||||||
|
if Var "Button" == "UpLeft" and not string.find(sElement, "Explosion") then sButton = "SoloUpLeft"; end
|
||||||
|
if Var "Button" == "UpRight" and not string.find(sElement, "Explosion") then sButton = "SoloUpRight"; end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if GAMESTATE:GetCurrentGame():GetName() == "pump" then
|
||||||
|
--Making Pump it up be rythm color based, Only problem is that in sm player 1 and player 2 noteskins are both defined as player 1
|
||||||
|
--Need a way to get the parent but atm it ends up as nil because of no parent
|
||||||
|
--So Player 1 and 2 both use Player 1 images for now
|
||||||
|
--We also let every direction aside from Center use DownLeftp1
|
||||||
|
if GAMESTATE:GetMasterPlayerNumber() == "PlayerNumber_P1" then
|
||||||
|
if Var "Button" == "UpLeft" then sButton = "DownLeftp1"; end
|
||||||
|
if Var "Button" == "UpRight" then sButton = "DownLeftp1"; end
|
||||||
|
if Var "Button" == "DownLeft" then sButton = "DownLeftp1"; end
|
||||||
|
if Var "Button" == "DownRight" then sButton = "DownLeftp1"; end
|
||||||
|
if Var "Button" == "Center" then sButton = "Centerp1"; end
|
||||||
|
elseif GAMESTATE:GetMasterPlayerNumber() == "PlayerNumber_P2" then
|
||||||
|
if Var "Button" == "UpLeft" then sButton = "Downleftp2"; end
|
||||||
|
if Var "Button" == "UpRight" then sButton = "Downleftp2"; end
|
||||||
|
if Var "Button" == "DownLeft" then sButton = "DownLeftp2"; end
|
||||||
|
if Var "Button" == "DownRight" then sButton = "DownLeftp2"; end
|
||||||
|
if Var "Button" == "Center" then sButton = "Centerp2"; end
|
||||||
|
end
|
||||||
|
--We already defined everything for diffrent players above
|
||||||
|
--But we want to use the same Center hold images for every direction and player
|
||||||
|
if string.find(sElement, "Bottomcap") then sButton = "Center"; end
|
||||||
|
if string.find(sElement, "Topcap") then sButton = "Center"; end
|
||||||
|
if string.find(sElement, "Body") then sButton = "Center"; end
|
||||||
|
--Lets also add explosion as Center
|
||||||
|
if string.find(sElement, "Explosion") then sButton = "Center"; end
|
||||||
|
if sElement == "Tap Explosion Dim" then sElement = "Tap Explosion Bright"; end
|
||||||
|
end
|
||||||
|
|
||||||
|
--Define that every direction uses Tap Mine from Down
|
||||||
|
if Var "Element" == "Tap Mine" then sButton = "Down"; end
|
||||||
|
|
||||||
|
return sButton, sElement;
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
|
This is the general function code
|
||||||
|
In here we can define how we want the stuff to act
|
||||||
|
Which basicly means instead of using a load of lua files for just some effect
|
||||||
|
We can just use code in here so we need to use less files
|
||||||
|
Which is nice if you want to save up space ;)
|
||||||
|
Only problem is that the Hold/Roll parts are written down in the code as sprite files
|
||||||
|
Which is the original old 3.9 code, Which basicly means that their code doesnt work in here
|
||||||
|
|
||||||
|
Also unlike the general redirect code which has sElement and sButton defined in the common noteskin
|
||||||
|
They need to be defined here manualy which can be done with
|
||||||
|
local sElement = Var "Element";
|
||||||
|
local sButton = Var "Button";
|
||||||
|
To make it easier for everyone I already added them
|
||||||
|
The reason we use local to define the stuff is for when a code doesnt accept the full code
|
||||||
|
Like for example if we did string.find(Var "Element", "Down") it wouldnt work
|
||||||
|
--]]
|
||||||
|
local OldFunc = ret.Load;
|
||||||
|
function ret.Load()
|
||||||
|
local t = OldFunc();
|
||||||
|
local sElement = Var "Element";
|
||||||
|
local sButton = Var "Button";
|
||||||
|
|
||||||
|
--Explosion should not be rotated; it calls other actors.
|
||||||
|
if Var "Element" == "Explosion" then
|
||||||
|
t.BaseRotationZ = nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if GAMESTATE:GetCurrentGame():GetName() == "dance" then
|
||||||
|
--We define that we dont want the hold heads for UpLeft and UpRight to be rotated because we rotate them in a lua file
|
||||||
|
if Var "Button" == "UpLeft" and string.find(sElement, "Head") then t.BaseRotationZ = nil; end
|
||||||
|
if Var "Button" == "UpRight" and string.find(sElement, "Head") then t.BaseRotationZ = nil; end
|
||||||
|
end
|
||||||
|
if GAMESTATE:GetCurrentGame():GetName() == "pump" then
|
||||||
|
--Because the images for Pump it up are using the DownLeft for every direction aside from center, We let it be rotated here
|
||||||
|
--Because the rotate table is set up for dance and these are for PIU
|
||||||
|
if Var "Button" == "UpLeft" then t.BaseRotationZ = 90; end
|
||||||
|
if Var "Button" == "UpRight" then t.BaseRotationZ = 180; end
|
||||||
|
if Var "Button" == "DownLeft" then t.BaseRotationZ = nil; end
|
||||||
|
if Var "Button" == "DownRight" then t.BaseRotationZ = -90; end
|
||||||
|
if Var "Element" == "Tap Mine" then t.InitCommand=cmd(zoom,-0.8); end
|
||||||
|
end
|
||||||
|
return t;
|
||||||
|
end
|
||||||
|
-- >
|
||||||
|
|
||||||
|
|
||||||
|
--Define which parts of noteskins which we want to rotate
|
||||||
|
ret.PartsToRotate =
|
||||||
|
{
|
||||||
|
["Receptor"] = true,
|
||||||
|
["Tap Explosion Bright"] = true,
|
||||||
|
["Tap Explosion Dim"] = true,
|
||||||
|
["Tap Note"] = true,
|
||||||
|
["Tap Fake"] = true,
|
||||||
|
["Tap Lift"] = true,
|
||||||
|
["Tap Addition"] = true,
|
||||||
|
["Hold Explosion"] = true,
|
||||||
|
["Hold Head Active"] = true,
|
||||||
|
["Hold Head Inactive"] = true,
|
||||||
|
["Roll Explosion"] = true,
|
||||||
|
["Roll Head Active"] = true,
|
||||||
|
["Roll Head Inactive"] = true,
|
||||||
|
};
|
||||||
|
--Defined the parts to be rotated at which degree
|
||||||
|
ret.Rotate =
|
||||||
|
{
|
||||||
|
Up = 180,
|
||||||
|
Down = 0,
|
||||||
|
Left = 90,
|
||||||
|
Right = -90,
|
||||||
|
UpLeft = 135,
|
||||||
|
UpRight = -135,
|
||||||
|
Center = 0,
|
||||||
|
DownLeft = 0,
|
||||||
|
DownRight = -0,
|
||||||
|
};
|
||||||
|
|
||||||
|
--Parts that should be Redirected to _Blank.png
|
||||||
|
--you can add/remove stuff if you want
|
||||||
|
ret.Blank =
|
||||||
|
{
|
||||||
|
["Hold Tail Active"] = true,
|
||||||
|
["Hold Tail Inactive"] = true,
|
||||||
|
["Roll Tail Active"] = true,
|
||||||
|
["Roll Tail Inactive"] = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
--dont forget to close the ret cuz else it wont work ;>
|
||||||
|
return ret;
|
||||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,15 @@
|
|||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_upleftsolo', 'underlay' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd();
|
||||||
|
};
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(rotationz,135);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_upleftsolo', 'underlay' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd();
|
||||||
|
};
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=1;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(rotationz,135);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,15 @@
|
|||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_upleftsolo', 'underlay' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(zoomx,-1);
|
||||||
|
};
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(rotationz,-135);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
local t = Def.ActorFrame {
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_upleftsolo', 'underlay' );
|
||||||
|
Frame0000=0;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(zoomx,-1);
|
||||||
|
};
|
||||||
|
Def.Sprite {
|
||||||
|
Texture=NOTESKIN:GetPath( '_down', 'tap note' );
|
||||||
|
Frame0000=1;
|
||||||
|
Delay0000=1;
|
||||||
|
InitCommand=cmd(rotationz,-135);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return t;
|
||||||
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 17 KiB |