Codebase list minetest-mod-character-creator / upstream/1.0
New upstream version 1.0 Julien Puydt 6 years ago
171 changed file(s) with 690 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 3d_armor?
1 multiskin?
2 inventory_plus?
3 unified_inventory?
0 Allows the creation of customized character skins inside the game.
0 character_creator = {}
1 character_creator.skins = dofile(minetest.get_modpath("character_creator") .. "/skins.lua")
2
3 local skin_default = {
4 gender = "Male",
5 height = 1,
6 width = 1,
7
8 skin = "Fair Skin",
9 face = "Human Face",
10 hair = "Brown Hair",
11 hair_style = "Medium Hair",
12 eyes = "Blue Eyes",
13 tshirt = "Green T-Shirt",
14 pants = "Blue Pants",
15 shoes = "Leather Shoes"
16 }
17
18 local skins = character_creator.skins
19 local skins_array = {}
20
21 minetest.after(0, function()
22 local function associative_to_array(associative)
23 local array = {}
24 for key in pairs(associative) do
25 table.insert(array, key)
26 end
27 return array
28 end
29
30 skins_array = {
31 skin = associative_to_array(skins.skin),
32 face = associative_to_array(skins.face),
33 hair = associative_to_array(skins.hair),
34 hair_style = associative_to_array(skins.hair_style),
35 eyes = associative_to_array(skins.eyes),
36 tshirt = associative_to_array(skins.tshirt),
37 pants = associative_to_array(skins.pants),
38 shoes = associative_to_array(skins.shoes)
39 }
40 end)
41
42 -- Saved skins_array indexes in this
43 local skin_indexes = {}
44
45 local function show_formspec(player)
46 local indexes = skin_indexes[player]
47
48 local formspec = "size[15,9.5]"
49 .. "bgcolor[#00000000]"
50 -- Gender
51 .. "button[10,;2.5,.5;male;Male]"
52 .. "button[12.5,;2.5,.5;female;Female]"
53 -- Height
54 .. "button[10,1.1;2.5,.5;taller;Taller]"
55 .. "button[10,2;2.5,.5;shorter;Shorter]"
56 -- Width
57 .. "button[12.5,1.1;2.5,.5;wider;Wider]"
58 .. "button[12.5,2;2.5,.5;thinner;Thinner]"
59 -- Skin
60 .. "button[10,2.75;5,1;skin;" .. skins_array.skin[indexes.skin] .. "]"
61 .. "button[10,2.75;1,1;skin_back;<<]"
62 .. "button[14,2.75;1,1;skin_next;>>]"
63 -- Face
64 .. "button[10,3.5;5,1;face;" .. skins_array.face[indexes.face] .. "]"
65 .. "button[10,3.5;1,1;face_back;<<]"
66 .. "button[14,3.5;1,1;face_next;>>]"
67 -- Hair
68 .. "button[10,4.25;5,1;hair;" .. skins_array.hair[indexes.hair] .. "]"
69 .. "button[10,4.25;1,1;hair_back;<<]"
70 .. "button[14,4.25;1,1;hair_next;>>]"
71 -- Hair Style
72 .. "button[10,5;5,1;hair_style;" .. skins_array.hair_style[indexes.hair_style] .. "]"
73 .. "button[10,5;1,1;hair_style_back;<<]"
74 .. "button[14,5;1,1;hair_style_next;>>]"
75 -- Eyes
76 .. "button[10,5.75;5,1;eyes;" .. skins_array.eyes[indexes.eyes] .. "]"
77 .. "button[10,5.75;1,1;eyes_back;<<]"
78 .. "button[14,5.75;1,1;eyes_next;>>]"
79 -- T-Shirt
80 .. "button[10,6.5;5,1;tshirt;" .. skins_array.tshirt[indexes.tshirt] .. "]"
81 .. "button[10,6.5;1,1;tshirt_back;<<]"
82 .. "button[14,6.5;1,1;tshirt_next;>>]"
83 -- Pants
84 .. "button[10,7.25;5,1;pants;" .. skins_array.pants[indexes.pants] .. "]"
85 .. "button[10,7.25;1,1;pants_back;<<]"
86 .. "button[14,7.25;1,1;pants_next;>>]"
87 -- Shoes
88 .. "button[10,8;5,1;shoes;" .. skins_array.shoes[indexes.shoes] .. "]"
89 .. "button[10,8;1,1;shoes_back;<<]"
90 .. "button[14,8;1,1;shoes_next;>>]"
91 -- Done
92 .. "button_exit[10,9;2.5,.5;done;Done]"
93 .. "button_exit[12.5,9;2.5,.5;cancel;Cancel]"
94
95 minetest.show_formspec(player:get_player_name(), "character_creator", formspec)
96 end
97
98 local function load_skin(player)
99 skin_indexes[player] = {}
100
101 if not player:get_attribute("character_creator:gender") then
102 player:set_attribute("character_creator:gender", skin_default.gender)
103 end
104
105 if not player:get_attribute("character_creator:width") then
106 player:set_attribute("character_creator:width", skin_default.width)
107 end
108
109 if not player:get_attribute("character_creator:height") then
110 player:set_attribute("character_creator:height", skin_default.height)
111 end
112
113 local function load_data(data_name)
114 local key = player:get_attribute("character_creator:" .. data_name)
115 local index = table.indexof(skins_array[data_name], key)
116 if index == -1 then
117 index = table.indexof(skins_array[data_name], skin_default[data_name])
118 end
119
120 local indexes = skin_indexes[player]
121 indexes[data_name] = index
122 end
123
124 load_data("skin")
125 load_data("face")
126 load_data("eyes")
127 load_data("hair_style")
128 load_data("hair")
129 load_data("tshirt")
130 load_data("pants")
131 load_data("shoes")
132 end
133
134 local function save_skin(player)
135 local function save_data(data_name)
136 local indexes = skin_indexes[player]
137 local index = indexes[data_name]
138 local key = skins_array[data_name][index]
139 player:set_attribute("character_creator:" .. data_name, key)
140 end
141
142 save_data("skin")
143 save_data("face")
144 save_data("eyes")
145 save_data("hair_style")
146 save_data("hair")
147 save_data("tshirt")
148 save_data("pants")
149 save_data("shoes")
150 end
151
152 local function change_skin(player)
153 local indexes = skin_indexes[player]
154
155 local texture = (function()
156 local texture = ""
157 local gender = player:get_attribute("character_creator:gender")
158
159 local skin_key = skins_array.skin[indexes.skin]
160 local skin = skins.skin[skin_key]
161 texture = texture .. skin
162
163 local face_key = skins_array.face[indexes.face]
164 local face = skins.face[face_key][gender][skin_key]
165 texture = texture .. "^" .. face
166
167 local eyes_key = skins_array.eyes[indexes.eyes]
168 local eyes = skins.eyes[eyes_key]
169 texture = texture .. "^" .. eyes
170
171 local hair_style = skins_array.hair_style[indexes.hair_style]
172 local hair_key = skins_array.hair[indexes.hair]
173 local hair = skins.hair[hair_key][gender][hair_style]
174 texture = texture .. "^" .. hair
175
176 local tshirt_key = skins_array.tshirt[indexes.tshirt]
177 local tshirt = skins.tshirt[tshirt_key]
178 texture = texture .. "^" .. tshirt
179
180 local pants_key = skins_array.pants[indexes.pants]
181 local pants = skins.pants[pants_key]
182 texture = texture .. "^" .. pants
183
184 local shoes_key = skins_array.shoes[indexes.shoes]
185 local shoes = skins.shoes[shoes_key]
186 texture = texture .. "^" .. shoes
187
188 return texture
189 end)()
190
191 local width = tonumber(player:get_attribute("character_creator:width"))
192 local height = tonumber(player:get_attribute("character_creator:height"))
193
194 player:set_properties({
195 visual_size = {
196 x = width,
197 y = height
198 }
199 })
200
201 local name = player:get_player_name()
202
203 if minetest.get_modpath("multiskin") then
204 multiskin.layers[name].skin = texture
205 armor:set_player_armor(player)
206 multiskin:set_player_textures(player, {textures = {texture}})
207 elseif minetest.get_modpath("3d_armor") then
208 armor.textures[name].skin = texture
209 armor:set_player_armor(player)
210 else
211 player:set_properties({textures = {texture}})
212 end
213
214 save_skin(player)
215 end
216
217 minetest.register_on_joinplayer(function(player)
218 load_skin(player)
219 minetest.after(0, change_skin, player)
220 end)
221
222 local skin_temp = {}
223 minetest.register_on_player_receive_fields(function(player, formname, fields)
224 if formname ~= "character_creator" then
225 return
226 end
227
228 local indexes = skin_indexes[player]
229 if not skin_temp[player] then
230 skin_temp[player] = {
231 gender = player:get_attribute("character_creator:gender"),
232 width = player:get_attribute("character_creator:width"),
233 height = player:get_attribute("character_creator:height"),
234 indexes = table.copy(indexes)
235 }
236 end
237
238 -- Gender
239 do
240 if fields.male then
241 player:set_attribute("character_creator:gender", "Male")
242 player:set_attribute("character_creator:width", 1)
243 player:set_attribute("character_creator:height", 1)
244 end
245
246 if fields.female then
247 player:set_attribute("character_creator:gender", "Female")
248 player:set_attribute("character_creator:width", 0.95)
249 player:set_attribute("character_creator:height", 1)
250 end
251 end
252
253 -- Height
254 do
255 local height = tonumber(player:get_attribute("character_creator:height"))
256
257 if fields.taller and height < 1.25 then
258 player:set_attribute("character_creator:height", height + 0.05)
259 end
260
261 if fields.shorter and height > 0.75 then
262 player:set_attribute("character_creator:height", height - 0.05)
263 end
264 end
265
266 -- Width
267 do
268 local width = tonumber(player:get_attribute("character_creator:width"))
269
270 if fields.wider and width < 1.25 then
271 player:set_attribute("character_creator:width", width + 0.05)
272 end
273
274 if fields.thinner and width > 0.75 then
275 player:set_attribute("character_creator:width", width - 0.05)
276 end
277 end
278
279 -- Switch skin
280 do
281 local function switch_skin(data_name, next_index)
282 local index = indexes[data_name] + next_index
283 local max = #skins_array[data_name]
284
285 if index == 0 then
286 index = max
287 elseif index == (max + 1) then
288 index = 1
289 end
290
291 indexes[data_name] = index
292 end
293
294 for field in pairs(fields) do
295 if field:find("_back$") then
296 local data_name = field:match("(.+)_back$")
297 switch_skin(data_name, -1)
298 elseif field:find("_next$") then
299 local data_name = field:match("(.+)_next$")
300 switch_skin(data_name, 1)
301 end
302 end
303 end
304
305 -- Close or update
306 do
307 local quit = false
308
309 if fields.cancel then
310 local temp = skin_temp[player]
311 player:set_attribute("character_creator:gender", temp.gender)
312 player:set_attribute("character_creator:width", temp.width)
313 player:set_attribute("character_creator:height", temp.height)
314 skin_indexes[player] = table.copy(temp.indexes)
315 skin_temp[player] = nil
316 quit = true
317 elseif fields.quit then
318 skin_temp[player] = nil
319 quit = true
320 end
321
322 if not quit then
323 show_formspec(player)
324 end
325 end
326
327 change_skin(player)
328 end)
329
330 minetest.register_chatcommand("character_creator", {
331 func = function(name)
332 minetest.after(0.5, function()
333 local player = minetest.get_player_by_name(name)
334 if player then
335 show_formspec(player)
336 end
337 end)
338 end
339 })
340
341 if minetest.global_exists("unified_inventory") then
342 unified_inventory.register_button("character_creator", {
343 type = "image",
344 image = "inventory_plus_character_creator.png",
345 action = show_formspec
346 })
347 elseif minetest.global_exists("inventory_plus") then
348 minetest.register_on_joinplayer(function(player)
349 inventory_plus.register_button(player, "character_creator", "Character Creator")
350 end)
351 minetest.register_on_player_receive_fields(function(player, _, fields)
352 if fields.character_creator then
353 show_formspec(player)
354 end
355 end)
356 end
0 License of source code
1 ----------------------
2
3 MIT License
4
5 Copyright (c) 2017 Rui
6
7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to deal
9 in the Software without restriction, including without limitation the rights
10 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in all
15 copies or substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 SOFTWARE.
24
25
26 License of textures
27 --------------------------------------
28
29 Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
30
31 Copyright (C) 2017 Voxelands http://www.voxelands.com/
32 Copyright (C) 2017 darkrose
33 Copyright (C) 2017 sdzen
34
35 You are free to:
36 Share - copy and redistribute the material in any medium or format
37 Adapt - remix, transform, and build upon the material
38 for any purpose, even commercially.
39 The licensor cannot revoke these freedoms as long as you follow the license terms.
40
41 Under the following terms:
42 Attribution - You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
43 ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
44 No additional restrictions - You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
45
46 Notices:
47 You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.
48 No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
49
50 For more details:
51 http://creativecommons.org/licenses/by-sa/3.0/
0 name = character_creator
0 This mod is attributed to the Voxelands project.
1
2 Voxelands creators:
3 sdzen
4 darkrose
0 return {
1 skin = {
2 ["Fair Skin"] = "cc_skin_fair.png",
3 ["Green Skin"] = "cc_skin_green.png",
4 ["Red Skin"] = "cc_skin_red.png",
5 ["Tanned Skin"] = "cc_skin_tanned.png",
6 ["White Skin"] = "cc_skin_white.png",
7 ["Black Skin"] = "cc_skin_black.png",
8 ["Dark Skin"] = "cc_skin_dark.png",
9 },
10
11 face = {
12 ["Human Face"] = {
13 ["Male"] = {
14 ["Fair Skin"] = "cc_face_human_fair_M.png",
15 ["Green Skin"] = "cc_face_human_green_M.png",
16 ["Red Skin"] = "cc_face_human_red_M.png",
17 ["Tanned Skin"] = "cc_face_human_tanned_M.png",
18 ["White Skin"] = "cc_face_human_white_M.png",
19 ["Black Skin"] = "cc_face_human_black_M.png",
20 ["Dark Skin"] = "cc_face_human_dark_M.png",
21 },
22 ["Female"] = {
23 ["Fair Skin"] = "cc_face_human_fair_F.png",
24 ["Green Skin"] = "cc_face_human_green_F.png",
25 ["Red Skin"] = "cc_face_human_red_F.png",
26 ["Tanned Skin"] = "cc_face_human_tanned_F.png",
27 ["White Skin"] = "cc_face_human_white_F.png",
28 ["Black Skin"] = "cc_face_human_black_F.png",
29 ["Dark Skin"] = "cc_face_human_dark_F.png",
30 }
31 },
32 ["Alien Face"] = {
33 ["Male"] = {
34 ["Fair Skin"] = "cc_face_alien_fair_M.png",
35 ["Green Skin"] = "cc_face_alien_green_M.png",
36 ["Red Skin"] = "cc_face_alien_red_M.png",
37 ["Tanned Skin"] = "cc_face_alien_tanned_M.png",
38 ["White Skin"] = "cc_face_alien_white_M.png",
39 ["Black Skin"] = "cc_face_alien_black_M.png",
40 ["Dark Skin"] = "cc_face_alien_dark_M.png",
41 },
42 ["Female"] = {
43 ["Fair Skin"] = "cc_face_alien_fair_F.png",
44 ["Green Skin"] = "cc_face_alien_green_F.png",
45 ["Red Skin"] = "cc_face_alien_red_F.png",
46 ["Tanned Skin"] = "cc_face_alien_tanned_F.png",
47 ["White Skin"] = "cc_face_alien_white_F.png",
48 ["Black Skin"] = "cc_face_alien_black_F.png",
49 ["Dark Skin"] = "cc_face_alien_dark_F.png",
50 }
51 },
52 ["Dwarven Face"] = {
53 ["Male"] = {
54 ["Fair Skin"] = "cc_face_dwarven_fair_M.png",
55 ["Green Skin"] = "cc_face_dwarven_green_M.png",
56 ["Red Skin"] = "cc_face_dwarven_red_M.png",
57 ["Tanned Skin"] = "cc_face_dwarven_tanned_M.png",
58 ["White Skin"] = "cc_face_dwarven_white_M.png",
59 ["Black Skin"] = "cc_face_dwarven_black_M.png",
60 ["Dark Skin"] = "cc_face_dwarven_dark_M.png",
61 },
62 ["Female"] = {
63 ["Fair Skin"] = "cc_face_dwarven_fair_F.png",
64 ["Green Skin"] = "cc_face_dwarven_green_F.png",
65 ["Red Skin"] = "cc_face_dwarven_red_F.png",
66 ["Tanned Skin"] = "cc_face_dwarven_tanned_F.png",
67 ["White Skin"] = "cc_face_dwarven_white_F.png",
68 ["Black Skin"] = "cc_face_dwarven_black_F.png",
69 ["Dark Skin"] = "cc_face_dwarven_dark_F.png",
70 }
71 },
72 ["Elven Face"] = {
73 ["Male"] = {
74 ["Fair Skin"] = "cc_face_elven_fair_M.png",
75 ["Green Skin"] = "cc_face_elven_green_M.png",
76 ["Red Skin"] = "cc_face_elven_red_M.png",
77 ["Tanned Skin"] = "cc_face_elven_tanned_M.png",
78 ["White Skin"] = "cc_face_elven_white_M.png",
79 ["Black Skin"] = "cc_face_elven_black_M.png",
80 ["Dark Skin"] = "cc_face_elven_dark_M.png",
81 },
82 ["Female"] = {
83 ["Fair Skin"] = "cc_face_elven_fair_F.png",
84 ["Green Skin"] = "cc_face_elven_green_F.png",
85 ["Red Skin"] = "cc_face_elven_red_F.png",
86 ["Tanned Skin"] = "cc_face_elven_tanned_F.png",
87 ["White Skin"] = "cc_face_elven_white_F.png",
88 ["Black Skin"] = "cc_face_elven_black_F.png",
89 ["Dark Skin"] = "cc_face_elven_dark_F.png",
90 }
91 }
92 },
93
94 hair = {
95 ["Brown Hair"] = {
96 ["Male"] = {
97 ["Medium Hair"] = "cc_hair_medium_brown_M.png",
98 ["Short Hair"] = "cc_hair_short_brown_M.png",
99 ["Styled Hair"] = "cc_hair_special_brown_M.png",
100 ["Long Hair"] = "cc_hair_long_brown_M.png",
101 },
102 ["Female"] = {
103 ["Medium Hair"] = "cc_hair_medium_brown_F.png",
104 ["Short Hair"] = "cc_hair_short_brown_F.png",
105 ["Styled Hair"] = "cc_hair_special_brown_F.png",
106 ["Long Hair"] = "cc_hair_long_brown_F.png",
107 }
108 },
109 ["Green Hair"] = {
110 ["Male"] = {
111 ["Medium Hair"] = "cc_hair_medium_green_M.png",
112 ["Short Hair"] = "cc_hair_short_green_M.png",
113 ["Styled Hair"] = "cc_hair_special_green_M.png",
114 ["Long Hair"] = "cc_hair_long_green_M.png",
115 },
116 ["Female"] = {
117 ["Medium Hair"] = "cc_hair_medium_green_F.png",
118 ["Short Hair"] = "cc_hair_short_green_F.png",
119 ["Styled Hair"] = "cc_hair_special_green_F.png",
120 ["Long Hair"] = "cc_hair_long_green_F.png",
121 }
122 },
123 ["Orange Hair"] = {
124 ["Male"] = {
125 ["Medium Hair"] = "cc_hair_medium_orange_M.png",
126 ["Short Hair"] = "cc_hair_short_orange_M.png",
127 ["Styled Hair"] = "cc_hair_special_orange_M.png",
128 ["Long Hair"] = "cc_hair_long_orange_M.png",
129 },
130 ["Female"] = {
131 ["Medium Hair"] = "cc_hair_medium_orange_F.png",
132 ["Short Hair"] = "cc_hair_short_orange_F.png",
133 ["Styled Hair"] = "cc_hair_special_orange_F.png",
134 ["Long Hair"] = "cc_hair_long_orange_F.png",
135 }
136 },
137 ["Purple Hair"] = {
138 ["Male"] = {
139 ["Medium Hair"] = "cc_hair_medium_purple_M.png",
140 ["Short Hair"] = "cc_hair_short_purple_M.png",
141 ["Styled Hair"] = "cc_hair_special_purple_M.png",
142 ["Long Hair"] = "cc_hair_long_purple_M.png",
143 },
144 ["Female"] = {
145 ["Medium Hair"] = "cc_hair_medium_purple_F.png",
146 ["Short Hair"] = "cc_hair_short_purple_F.png",
147 ["Styled Hair"] = "cc_hair_special_purple_F.png",
148 ["Long Hair"] = "cc_hair_long_purple_F.png",
149 }
150 },
151 ["Red Hair"] = {
152 ["Male"] = {
153 ["Medium Hair"] = "cc_hair_medium_red_M.png",
154 ["Short Hair"] = "cc_hair_short_red_M.png",
155 ["Styled Hair"] = "cc_hair_special_red_M.png",
156 ["Long Hair"] = "cc_hair_long_red_M.png",
157 },
158 ["Female"] = {
159 ["Medium Hair"] = "cc_hair_medium_red_F.png",
160 ["Short Hair"] = "cc_hair_short_red_F.png",
161 ["Styled Hair"] = "cc_hair_special_red_F.png",
162 ["Long Hair"] = "cc_hair_long_red_F.png",
163 }
164 },
165 ["White Hair"] = {
166 ["Male"] = {
167 ["Medium Hair"] = "cc_hair_medium_white_M.png",
168 ["Short Hair"] = "cc_hair_short_white_M.png",
169 ["Styled Hair"] = "cc_hair_special_white_M.png",
170 ["Long Hair"] = "cc_hair_long_white_M.png",
171 },
172 ["Female"] = {
173 ["Medium Hair"] = "cc_hair_medium_white_F.png",
174 ["Short Hair"] = "cc_hair_short_white_F.png",
175 ["Styled Hair"] = "cc_hair_special_white_F.png",
176 ["Long Hair"] = "cc_hair_long_white_F.png",
177 }
178 },
179 ["Black Hair"] = {
180 ["Male"] = {
181 ["Medium Hair"] = "cc_hair_medium_black_M.png",
182 ["Short Hair"] = "cc_hair_short_black_M.png",
183 ["Styled Hair"] = "cc_hair_special_black_M.png",
184 ["Long Hair"] = "cc_hair_long_black_M.png",
185 },
186 ["Female"] = {
187 ["Medium Hair"] = "cc_hair_medium_black_F.png",
188 ["Short Hair"] = "cc_hair_short_black_F.png",
189 ["Styled Hair"] = "cc_hair_special_black_F.png",
190 ["Long Hair"] = "cc_hair_long_black_F.png",
191 }
192 },
193 ["Blonde Hair"] = {
194 ["Male"] = {
195 ["Medium Hair"] = "cc_hair_medium_blonde_M.png",
196 ["Short Hair"] = "cc_hair_short_blonde_M.png",
197 ["Styled Hair"] = "cc_hair_special_blonde_M.png",
198 ["Long Hair"] = "cc_hair_long_blonde_M.png",
199 },
200 ["Female"] = {
201 ["Medium Hair"] = "cc_hair_medium_blonde_F.png",
202 ["Short Hair"] = "cc_hair_short_blonde_F.png",
203 ["Styled Hair"] = "cc_hair_special_blonde_F.png",
204 ["Long Hair"] = "cc_hair_long_blonde_F.png",
205 }
206 },
207 ["Blue Hair"] = {
208 ["Male"] = {
209 ["Medium Hair"] = "cc_hair_medium_blue_M.png",
210 ["Short Hair"] = "cc_hair_short_blue_M.png",
211 ["Styled Hair"] = "cc_hair_special_blue_M.png",
212 ["Long Hair"] = "cc_hair_long_blue_M.png",
213 },
214 ["Female"] = {
215 ["Medium Hair"] = "cc_hair_medium_blue_F.png",
216 ["Short Hair"] = "cc_hair_short_blue_F.png",
217 ["Styled Hair"] = "cc_hair_special_blue_F.png",
218 ["Long Hair"] = "cc_hair_long_blue_F.png",
219 }
220 }
221 },
222
223 hair_style = {
224 ["Medium Hair"] = "medium",
225 ["Short Hair"] = "short",
226 ["Styled Hair"] = "styled",
227 ["Long Hair"] = "long",
228 },
229
230 eyes = {
231 ["Blue Eyes"] = "cc_eyes_blue.png",
232 ["Brown Eyes"] = "cc_eyes_brown.png",
233 ["Green Eyes"] = "cc_eyes_green.png",
234 ["Orange Eyes"] = "cc_eyes_orange.png",
235 ["Purple Eyes"] = "cc_eyes_purple.png",
236 ["Red Eyes"] = "cc_eyes_red.png",
237 ["White Eyes"] = "cc_eyes_white.png",
238 ["Yellow Eyes"] = "cc_eyes_yellow.png",
239 ["Black Eyes"] = "cc_eyes_black.png",
240 },
241
242 tshirt = {
243 ["Green T-Shirt"] = "cc_tshirt_green.png",
244 ["Orange T-Shirt"] = "cc_tshirt_orange.png",
245 ["Purple T-Shirt"] = "cc_tshirt_purple.png",
246 ["Red T-Shirt"] = "cc_tshirt_red.png",
247 ["White T-Shirt"] = "cc_tshirt_white.png",
248 ["Yellow T-Shirt"] = "cc_tshirt_yellow.png",
249 ["Black T-Shirt"] = "cc_tshirt_black.png",
250 ["Blue T-Shirt"] = "cc_tshirt_blue.png",
251 },
252
253 pants = {
254 ["Blue Pants"] = "cc_pants_blue.png",
255 ["Green Pants"] = "cc_pants_green.png",
256 ["Orange Pants"] = "cc_pants_orange.png",
257 ["Purple Pants"] = "cc_pants_purple.png",
258 ["Red Pants"] = "cc_pants_red.png",
259 ["White Pants"] = "cc_pants_white.png",
260 ["Yellow Pants"] = "cc_pants_yellow.png",
261 ["Black Pants"] = "cc_pants_black.png",
262 },
263
264 shoes = {
265 ["Leather Shoes"] = "cc_shoes_leather.png",
266 ["Canvas Shoes"] = "cc_shoes_canvas.png",
267 ["Fur Shoes"] = "cc_shoes_fur.png",
268 }
269 }
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown