Update readme
[DivinEntity.git] / README.md
1 #What is this?
2 This is the DivinEntity noteskin for OpenITG/ITG/StepMania 3.95 presented by DivinElegy.
3
4 This master branch of the project will always be the latest stable release and should always remain backwards compatible with existing simfiles.
5
6 #Why?
7 The existing "God" and "Satan" NoteSkins floating around the Internet are ugly behomoths of cobbled together code with no real structure. They are hard for a novice to know how to use (and even for a relative expert). The DivinEntity NoteSkin aims to empower step artists with creative tools to make the best simfiles possible, without having to deal with too much bullshit.
8
9 From a code point of view, the main goal of the DivinEntity NoteSkin is to remove as much Lua as possible from XML files and keep everything neat, organised and maintainable.
10
11 #How?
12 For detailed documentation on the NoteSkin, see the readme in the [DivinEntity folder](https://github.com/DivinElegy/DivinEntity-Noteskin/tree/master/NoteSkins/dance/DivinEntity)
13
14 The central idea of this NoteSkin is to provide functions that expose out elements of the NoteSkin for use in a simfile. Every function will return a _table_ of Actors. The neat thing about these tables is that you can run Actor commands on them, and every element in the table will have that command applied to it. For example:
15
16 ```Lua
17 DIVINE_ENTITY:GetTapNotes('Down', '4th'):Load('mySprite.sprite')
18 ```
19
20 Will replace the graphic for every down 4th note with mySprite.sprite.
21
22 The table also has a fluent interface, allowing you to chain functions without having to start a new line. For example:
23
24 ```Lua
25 DIVINE_ENTITY:GetTapNotes('Down', '4th'):Load('mySprite.sprite'):vibrate()
26 ```
27
28 Will load mySprite and cause all the notes to vibrate.
29
30 The functions always return as many actors as possible based on their arguments. Here are specific examples for GetTapNotes:
31
32 Get all tap notes:
33
34 ```Lua
35 DIVINE_ENTITY:GetTapNotes()
36 ```
37
38 Get all tap notes associated with the direction 'Down':
39
40 ```Lua
41 DIVINE_ENTITY:GetTapNotes('Down')
42 ```
43
44 Get all tap notes associated with the quantity 16th:
45
46 ```Lua
47 DIVINE_ENTITY:GetTapNotes(nil, '16th')
48 ```
49
50 Get only Left Tap Note 64th:
51
52 ```Lua
53 DIVINE_ENTITY:GetTapNotes('Left', '64th')
54 ```
55
56 #Installation
57 To install the NoteSkin follow these steps:
58
59 1. Download the NoteSkin using the "Download ZIP" button to the right.
60 2. Extract the zip to your desktop (or wherever else you'd like).
61 3. Copy the NoteSkins directory to the _root_ of your OpenITG/SM install. For example if you have OpenITG installed in C:\Program Files\OpenITG, simply copy the NoteSkins folder from the zip in to C:\Program Files\OpenITG
62
63 Windows might prompt you about an existing NoteSkins folder. Make sure you tell it to _merge_ the two folders.
64
65 #Functions
66 Below is a list of functions you can use to access and modify NoteSkin elements:
67
68 **DIVINE_ENTITY:GetTapNotes(direction, quant, clone)**
69
70 **DIVINE_ENTITY:GetActiveHoldHeads(direction, quant)**
71
72 **DIVINE_ENTITY:GetInactiveHoldHeads(direction, quant)**
73
74 **DIVINE_ENTITY:GetActiveRollHeads(direction, quant)**
75
76 **DIVINE_ENTITY:GetInactiveRollHeads(direction, quant)**
77
78 **DIVINE_ENTITY:GetMines(direction)**
79
80 **DIVINE_ENTITY:GetTapExplosions(direction, explosionType, TNS)**
81
82 In each function, ```direction``` can be one of "Up", "Down", "Left" and "Right" and ```quant``` can be any note quantity from "4th" to "192nd". In ```GetTapExplosions```, ```explosionType``` can be either "Dim" or "Bright" (bright explosions occur when the player's combo is above 100) and ```TNS``` can be one of "Marvelous", "Perfect", "Great", "Good", "Boo", "Miss" or "HitMine".
83
84 #Message Commands
85 Below is a list of message commands the NoteSkin broadcasts.
86
87 **StepP1LeftPressedMessageCommand** - Broadcast when player 1 steps on the left receptor.
88
89 **StepP1DownPressedMessageCommand** - Broadcast when player 1 steps on the down receptor.
90
91 **StepP1UpPressedMessageCommand** - Broadcast when player 1 steps on the up receptor.
92
93 **StepP1RightPressedMessageCommand** - Broadcast when player 1 steps on the right receptor.
94
95 **StepP1LeftLiftedMessageCommand** - Broadcast when player 1 lifts off the left receptor.
96
97 **StepP1DownLiftedMessageCommand** - Broadcast when player 1 lifts off the down receptor.
98
99 **StepP1UpLiftedMessageCommand** - Broadcast when player 1 lifts off the up receptor.
100
101 **StepP1RightLiftedMessageCommand** - Broadcast when player 1 lifts off the right receptor.
102
103 **P1FantasticMessageCommand** - Broadcast when player 1 gets a Fantastic.
104
105 **P1ExcellentMessageCommand** - Broadcast when player 1 gets an Excellent.
106
107 **P1GreatMessageCommand** - Broadcast when player 1 gets a Great.
108
109 **P1DecentMessageCommand** - Broadcast when player 1 gets a Decent.
110
111 **P1WayOffMessageCommand** - Broadcast when player 1 gets a WayOff.
112
113 **P1HitMineMessageCommand** - Broadcast when player 1 hits a mine.
114
115 The same commands exist for player 2, you just substitute P1 with P2.
116
117 #Contributing
118 If you feel you have something of value to add to this project, _please_ make a fork under your own GitHub account, then send a pull request. This is the best way to keep track of changes and give credit where credit is due. Thanks.
119
120 #Maintainer
121 This NoteSkin is maintained by Cameron Ball.
122
123 #Acknowledgments
124 This noteskin would not exist were it not for the hard work by the following people:
125
126 - Alan James (https://www.youtube.com/taro4012)
127 - Nick Psyhogios (https://www.youtube.com/WinDEU)
128 - Jona Day (https://www.youtube.com/puurokulho)
129 - Jayce Newton (https://www.youtube.com/divinejayce)
130 - Cameron Ball