[character_creator] Downgrade to Git commit 0c0e187:

For compatibility with stable server.
master
AntumDeluge 2017-05-15 19:20:30 -07:00
parent 130e546209
commit 0563baec2a
8 changed files with 381 additions and 654 deletions

View File

@ -73,7 +73,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
* player_action/
* [throwing][] ([WTFPL][lic.wtfpl]) -- version: [0.14-79ad788 Git][ver.throwing] *2012-02-10*
* player_visuals/
* [character_creator][] ([MIT / CC-BY-SA][lic.character_creator]) -- version: [6a0e6aa Git][ver.character_creator]
* [character_creator][] ([MIT / CC-BY-SA][lic.character_creator]) -- version: [0c0e187 Git][ver.character_creator] *2015-08-28*
* [hidename][] ([MIT][lic.hidename]) -- version [bb52dbc Git][ver.hidename]
* [invisibility][] ([MIT][lic.invisibility]) -- version: [bf4156b Git][ver.invisibility] *2016-08-19* ([patched][patch.invisibility])
* [playeranim][] ([BSD 2-Clause][lic.playeranim]) - version [0ca8e5a Git][ver.playeranim] *2016-12-07* ([patched][patch.playeranim])
@ -415,7 +415,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
[ver.bookmarks_gui]: https://github.com/cornernote/minetest-bookmarks_gui/tree/d369dba
[ver.bridges]: https://github.com/Sokomine/bridges/tree/5b5f475
[ver.campfire]: https://github.com/Napiophelios/campfire/tree/b45acd2
[ver.character_creator]: https://github.com/Rui-Minetest/character_creator/tree/6a0e6aa
[ver.character_creator]: https://github.com/Rui-Minetest/character_creator/tree/0c0e187
[ver.christmas]: https://github.com/TheZenKitteh/minetest-christmas/tree/d3bd872
[ver.cme]: https://github.com/BlockMen/cme/tree/e3502a1
[ver.coloredwood]: https://github.com/minetest-mods/coloredwood/tree/fc4ab15

View File

@ -1,4 +1,3 @@
3d_armor?
multiskin?
inventory_plus?
unified_inventory?
unified_inventory?

View File

@ -1 +0,0 @@
Allows the creation of customized character skins inside the game.

View File

@ -1,357 +1,170 @@
character_creator = {}
character_creator.skins = dofile(minetest.get_modpath("character_creator") .. "/skins.lua")
local cc = character_creator
local skin_default = {
gender = "Male",
height = 1,
width = 1,
local modpath = minetest.get_modpath("character_creator")
local datafile = minetest.get_worldpath().."/character_creator.mt"
skin = "Fair Skin",
face = "Human Face",
hair = "Brown Hair",
hair_style = "Medium Hair",
eyes = "Blue Eyes",
tshirt = "Green T-Shirt",
pants = "Blue Pants",
shoes = "Leather Shoes"
}
dofile(modpath.."/skins.lua")
local skins = character_creator.skins
local skins_array = {}
minetest.after(0, function()
local function associative_to_array(associative)
local array = {}
for key in pairs(associative) do
table.insert(array, key)
end
return array
local function table_to_list(tbl)
local list = ""
for str in pairs(tbl) do
list = list == "" and str or list..","..str
end
skins_array = {
skin = associative_to_array(skins.skin),
face = associative_to_array(skins.face),
hair = associative_to_array(skins.hair),
hair_style = associative_to_array(skins.hair_style),
eyes = associative_to_array(skins.eyes),
tshirt = associative_to_array(skins.tshirt),
pants = associative_to_array(skins.pants),
shoes = associative_to_array(skins.shoes)
}
end)
-- Saved skins_array indexes in this
local skin_indexes = {}
local function show_formspec(player)
local indexes = skin_indexes[player]
local formspec = "size[15,9.5]"
.. "bgcolor[#00000000]"
-- Gender
.. "button[10,;2.5,.5;male;Male]"
.. "button[12.5,;2.5,.5;female;Female]"
-- Height
.. "button[10,1.1;2.5,.5;taller;Taller]"
.. "button[10,2;2.5,.5;shorter;Shorter]"
-- Width
.. "button[12.5,1.1;2.5,.5;wider;Wider]"
.. "button[12.5,2;2.5,.5;thinner;Thinner]"
-- Skin
.. "button[10,2.75;5,1;skin;" .. skins_array.skin[indexes.skin] .. "]"
.. "button[10,2.75;1,1;skin_back;<<]"
.. "button[14,2.75;1,1;skin_next;>>]"
-- Face
.. "button[10,3.5;5,1;face;" .. skins_array.face[indexes.face] .. "]"
.. "button[10,3.5;1,1;face_back;<<]"
.. "button[14,3.5;1,1;face_next;>>]"
-- Hair
.. "button[10,4.25;5,1;hair;" .. skins_array.hair[indexes.hair] .. "]"
.. "button[10,4.25;1,1;hair_back;<<]"
.. "button[14,4.25;1,1;hair_next;>>]"
-- Hair Style
.. "button[10,5;5,1;hair_style;" .. skins_array.hair_style[indexes.hair_style] .. "]"
.. "button[10,5;1,1;hair_style_back;<<]"
.. "button[14,5;1,1;hair_style_next;>>]"
-- Eyes
.. "button[10,5.75;5,1;eyes;" .. skins_array.eyes[indexes.eyes] .. "]"
.. "button[10,5.75;1,1;eyes_back;<<]"
.. "button[14,5.75;1,1;eyes_next;>>]"
-- T-Shirt
.. "button[10,6.5;5,1;tshirt;" .. skins_array.tshirt[indexes.tshirt] .. "]"
.. "button[10,6.5;1,1;tshirt_back;<<]"
.. "button[14,6.5;1,1;tshirt_next;>>]"
-- Pants
.. "button[10,7.25;5,1;pants;" .. skins_array.pants[indexes.pants] .. "]"
.. "button[10,7.25;1,1;pants_back;<<]"
.. "button[14,7.25;1,1;pants_next;>>]"
-- Shoes
.. "button[10,8;5,1;shoes;" .. skins_array.shoes[indexes.shoes] .. "]"
.. "button[10,8;1,1;shoes_back;<<]"
.. "button[14,8;1,1;shoes_next;>>]"
-- Done
.. "button_exit[10,9;2.5,.5;done;Done]"
.. "button_exit[12.5,9;2.5,.5;cancel;Cancel]"
minetest.show_formspec(player:get_player_name(), "character_creator", formspec)
return list
end
local function load_skin(player)
skin_indexes[player] = {}
local skin = table_to_list(cc.skin)
local face = table_to_list(cc.face)
local hair = table_to_list(cc.hair)
local hair_style = table_to_list(cc.hair_style)
local eyes = table_to_list(cc.eyes)
local tshirt = table_to_list(cc.tshirt)
local pants = table_to_list(cc.pants)
local shoes = table_to_list(cc.shoes)
if not player:get_attribute("character_creator:gender") then
player:set_attribute("character_creator:gender", skin_default.gender)
end
if not player:get_attribute("character_creator:width") then
player:set_attribute("character_creator:width", skin_default.width)
end
if not player:get_attribute("character_creator:height") then
player:set_attribute("character_creator:height", skin_default.height)
end
local function load_data(data_name)
local key = player:get_attribute("character_creator:" .. data_name)
local index = table.indexof(skins_array[data_name], key)
if index == -1 then
index = table.indexof(skins_array[data_name], skin_default[data_name])
end
local indexes = skin_indexes[player]
indexes[data_name] = index
end
load_data("skin")
load_data("face")
load_data("eyes")
load_data("hair_style")
load_data("hair")
load_data("tshirt")
load_data("pants")
load_data("shoes")
local function show_formspec(name)
minetest.show_formspec(name, "character_creator",
"size[15,10]"..
"button_exit[,;2,.5;;Close]"..
"textlist[0.00,0.75;3.75,4;cc_skin;"..skin..";1;true]"..
"textlist[3.75,0.75;3.75,4;cc_face;"..face..";1;true]"..
"textlist[7.50,0.75;3.75,4;cc_hair;"..hair..";1;true]"..
"textlist[11.25,0.75;3.75,4;cc_hair_style;"..hair_style..";1;true]"..
"textlist[0.00,4.75;3.75,4;cc_eyes;"..eyes..";1;true]"..
"textlist[3.75,4.75;3.75,4;cc_tshirt;"..tshirt..";1;true]"..
"textlist[7.50,4.75;3.75,4;cc_pants;"..pants..";1;true]"..
"textlist[11.25,4.75;3.75,4;cc_shoes;"..shoes..";1;true]"
)
end
local function save_skin(player)
local function save_data(data_name)
local indexes = skin_indexes[player]
local index = indexes[data_name]
local key = skins_array[data_name][index]
player:set_attribute("character_creator:" .. data_name, key)
end
-- MEMO:skin>face>hair(hairstyle)>eyes>tshirt>pants>shoes
save_data("skin")
save_data("face")
save_data("eyes")
save_data("hair_style")
save_data("hair")
save_data("tshirt")
save_data("pants")
save_data("shoes")
local playerdata = {}
local input = io.open(datafile, "r")
if input then
playerdata = minetest.deserialize(input:read("*all")) or {}
input:close()
end
local function change_skin(player)
local indexes = skin_indexes[player]
local texture = (function()
local texture = ""
local gender = player:get_attribute("character_creator:gender")
local skin_key = skins_array.skin[indexes.skin]
local skin = skins.skin[skin_key]
texture = texture .. skin
local face_key = skins_array.face[indexes.face]
local face = skins.face[face_key][gender][skin_key]
texture = texture .. "^" .. face
local eyes_key = skins_array.eyes[indexes.eyes]
local eyes = skins.eyes[eyes_key]
texture = texture .. "^" .. eyes
local hair_style = skins_array.hair_style[indexes.hair_style]
local hair_key = skins_array.hair[indexes.hair]
local hair = skins.hair[hair_key][gender][hair_style]
texture = texture .. "^" .. hair
local tshirt_key = skins_array.tshirt[indexes.tshirt]
local tshirt = skins.tshirt[tshirt_key]
texture = texture .. "^" .. tshirt
local pants_key = skins_array.pants[indexes.pants]
local pants = skins.pants[pants_key]
texture = texture .. "^" .. pants
local shoes_key = skins_array.shoes[indexes.shoes]
local shoes = skins.shoes[shoes_key]
texture = texture .. "^" .. shoes
return texture
end)()
local width = tonumber(player:get_attribute("character_creator:width"))
local height = tonumber(player:get_attribute("character_creator:height"))
player:set_properties({
visual_size = {
x = width,
y = height
}
})
local name = player:get_player_name()
if minetest.get_modpath("multiskin") then
multiskin.layers[name].skin = texture
armor:set_player_armor(player)
multiskin:set_player_textures(player, {textures = {texture}})
elseif minetest.get_modpath("3d_armor") then
armor.textures[name].skin = texture
local data = playerdata[name]
local skin = {
data.skin.."^"..
data.face.."^"..
data.eyes.."^"..
data.hair.."^"..
data.tshirt.."^"..
data.pants.."^"..
data.shoes
}
if minetest.get_modpath("3d_armor") then
armor.textures[name].skin = skin
armor:set_player_armor(player)
else
player:set_properties({textures = {texture}})
player:set_properties({textures = skin})
end
save_skin(player)
end
minetest.register_on_joinplayer(function(player)
load_skin(player)
minetest.after(0, change_skin, player)
end)
local skin_temp = {}
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "character_creator" then
return
end
local indexes = skin_indexes[player]
if not skin_temp[player] then
skin_temp[player] = {
gender = player:get_attribute("character_creator:gender"),
width = player:get_attribute("character_creator:width"),
height = player:get_attribute("character_creator:height"),
indexes = table.copy(indexes)
}
end
-- Gender
do
if fields.male then
player:set_attribute("character_creator:gender", "Male")
player:set_attribute("character_creator:width", 1)
player:set_attribute("character_creator:height", 1)
end
if fields.female then
player:set_attribute("character_creator:gender", "Female")
player:set_attribute("character_creator:width", 0.95)
player:set_attribute("character_creator:height", 1)
end
end
-- Height
do
local height = tonumber(player:get_attribute("character_creator:height"))
if fields.taller and height < 1.25 then
player:set_attribute("character_creator:height", height + 0.05)
end
if fields.shorter and height > 0.75 then
player:set_attribute("character_creator:height", height - 0.05)
end
end
-- Width
do
local width = tonumber(player:get_attribute("character_creator:width"))
if fields.wider and width < 1.25 then
player:set_attribute("character_creator:width", width + 0.05)
end
if fields.thinner and width > 0.75 then
player:set_attribute("character_creator:width", width - 0.05)
end
end
-- Switch skin
do
local function switch_skin(data_name, next_index)
local index = indexes[data_name] + next_index
local max = #skins_array[data_name]
if index == 0 then
index = max
elseif index == (max + 1) then
index = 1
end
indexes[data_name] = index
end
for field in pairs(fields) do
if field:find("_back$") then
local data_name = field:match("(.+)_back$")
switch_skin(data_name, -1)
elseif field:find("_next$") then
local data_name = field:match("(.+)_next$")
switch_skin(data_name, 1)
end
end
end
-- Close or update
do
local quit = false
if fields.cancel then
local temp = skin_temp[player]
player:set_attribute("character_creator:gender", temp.gender)
player:set_attribute("character_creator:width", temp.width)
player:set_attribute("character_creator:height", temp.height)
skin_indexes[player] = table.copy(temp.indexes)
skin_temp[player] = nil
quit = true
elseif fields.quit then
skin_temp[player] = nil
quit = true
end
if not quit then
show_formspec(player)
end
end
change_skin(player)
end)
minetest.register_chatcommand("character_creator", {
func = function(name)
minetest.after(0.5, function()
local player = minetest.get_player_by_name(name)
if player then
show_formspec(player)
end
end)
minetest.after(.1, show_formspec, name)
end
})
if minetest.global_exists("unified_inventory") then
local old_param = {}
minetest.register_on_joinplayer(function(player)
local name = player:get_player_name()
playerdata[name] = playerdata[name] or {
skin = "cc_skin_fair.png",
face = "cc_face_human_fair_M.png",
hair = "cc_hair_medium_brown_M.png",
eyes = "cc_eyes_brown.png",
tshirt = "cc_tshirt_green.png",
pants = "cc_pants_blue.png",
shoes = "cc_shoes_leather.png",
}
old_param[name] = {
skin = "Fair Skin",
face = "Human Face (Male)",
hair = "Brown Hair (Male)",
hair_style = "Medium Hair",
}
minetest.after(0, change_skin, player)
end)
minetest.register_on_shutdown(function()
local output = io.open(datafile, "w")
output:write(minetest.serialize(playerdata))
output.close()
end)
minetest.register_on_player_receive_fields(function(player, _, fields)
local name = player:get_player_name()
local e_skin = minetest.explode_textlist_event(fields.cc_skin)
local e_face = minetest.explode_textlist_event(fields.cc_face)
local e_hair = minetest.explode_textlist_event(fields.cc_hair)
local e_hair_style = minetest.explode_textlist_event(fields.cc_hair_style)
local e_eyes = minetest.explode_textlist_event(fields.cc_eyes)
local e_tshirt = minetest.explode_textlist_event(fields.cc_tshirt)
local e_pants = minetest.explode_textlist_event(fields.cc_pants)
local e_shoes = minetest.explode_textlist_event(fields.cc_shoes)
if e_skin.type == "CHG" then
local face_name = face:split(",")[e_face.index] or old_param[name].face
local skin_name = skin:split(",")[e_skin.index]
playerdata[name].skin = cc.skin[skin_name]
playerdata[name].face = cc.face[face_name][skin_name]
old_param[name].skin = skin_name
elseif e_face.type == "CHG" then
local face_name = face:split(",")[e_face.index]
local skin_name = skin:split(",")[e_skin.index] or old_param[name].skin
playerdata[name].face = cc.face[face_name][skin_name]
old_param[name].face = face_name
elseif e_hair.type == "CHG" then
local hair_name = hair:split(",")[e_hair.index]
local hair_style_name = hair_style:split(",")[e_hair_style.index] or old_param[name].hair_style
playerdata[name].hair = cc.hair[hair_name][hair_style_name]
old_param[name].hair = hair_name
elseif e_hair_style.type == "CHG" then
local hair_name = hair:split(",")[e_hair.index] or old_param[name].hair
local hair_style_name = hair_style:split(",")[e_hair_style.index]
playerdata[name].hair = cc.hair[hair_name][hair_style_name]
old_param[name].hair_style = hair_style_name
elseif e_eyes.type == "CHG" then
local eyes_name = eyes:split(",")[e_eyes.index]
playerdata[name].eyes = cc.eyes[eyes_name]
elseif e_tshirt.type == "CHG" then
local tshirt_name = tshirt:split(",")[e_tshirt.index]
playerdata[name].tshirt = cc.tshirt[tshirt_name]
elseif e_pants.type == "CHG" then
local pants_name = pants:split(",")[e_pants.index]
playerdata[name].pants = cc.pants[pants_name]
elseif e_shoes.type == "CHG" then
local shoes_name = shoes:split(",")[e_shoes.index]
playerdata[name].shoes = cc.shoes[shoes_name]
end
change_skin(player)
end)
if rawget(_G, "unified_inventory") then
unified_inventory.register_button("character_creator", {
type = "image",
image = "inventory_plus_character_creator.png",
action = show_formspec
type = "image",
image = "inventory_plus_character_creator.png",
action = function(player)
show_formspec(player:get_player_name())
end
})
elseif minetest.global_exists("inventory_plus") then
elseif rawget(_G, "inventory_plus") then
minetest.register_on_joinplayer(function(player)
inventory_plus.register_button(player, "character_creator", "Character Creator")
end)
minetest.register_on_player_receive_fields(function(player, _, fields)
if fields.character_creator then
show_formspec(player)
show_formspec(player:get_player_name())
end
end)
end
end

View File

@ -1,52 +0,0 @@
License of source code
----------------------
MIT License
Copyright (c) 2017 Rui
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License of textures
--------------------------------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Copyright (C) 2017 Voxelands http://www.voxelands.com/
Copyright (C) 2017 darkrose
Copyright (C) 2017 sdzen
You are free to:
Share - copy and redistribute the material in any medium or format
Adapt - remix, transform, and build upon the material
for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
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.
ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
No additional restrictions - You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
Notices:
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.
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.
For more details:
http://creativecommons.org/licenses/by-sa/3.0/

View File

@ -1 +0,0 @@
name = character_creator

View File

@ -1,5 +0,0 @@
This mod is attributed to the Voxelands project.
Voxelands creators:
sdzen
darkrose

View File

@ -1,270 +1,244 @@
return {
skin = {
["Fair Skin"] = "cc_skin_fair.png",
["Green Skin"] = "cc_skin_green.png",
["Red Skin"] = "cc_skin_red.png",
["Tanned Skin"] = "cc_skin_tanned.png",
["White Skin"] = "cc_skin_white.png",
["Black Skin"] = "cc_skin_black.png",
["Dark Skin"] = "cc_skin_dark.png",
},
local cc = character_creator
face = {
["Human Face"] = {
["Male"] = {
["Fair Skin"] = "cc_face_human_fair_M.png",
["Green Skin"] = "cc_face_human_green_M.png",
["Red Skin"] = "cc_face_human_red_M.png",
["Tanned Skin"] = "cc_face_human_tanned_M.png",
["White Skin"] = "cc_face_human_white_M.png",
["Black Skin"] = "cc_face_human_black_M.png",
["Dark Skin"] = "cc_face_human_dark_M.png",
},
["Female"] = {
["Fair Skin"] = "cc_face_human_fair_F.png",
["Green Skin"] = "cc_face_human_green_F.png",
["Red Skin"] = "cc_face_human_red_F.png",
["Tanned Skin"] = "cc_face_human_tanned_F.png",
["White Skin"] = "cc_face_human_white_F.png",
["Black Skin"] = "cc_face_human_black_F.png",
["Dark Skin"] = "cc_face_human_dark_F.png",
}
},
["Alien Face"] = {
["Male"] = {
["Fair Skin"] = "cc_face_alien_fair_M.png",
["Green Skin"] = "cc_face_alien_green_M.png",
["Red Skin"] = "cc_face_alien_red_M.png",
["Tanned Skin"] = "cc_face_alien_tanned_M.png",
["White Skin"] = "cc_face_alien_white_M.png",
["Black Skin"] = "cc_face_alien_black_M.png",
["Dark Skin"] = "cc_face_alien_dark_M.png",
},
["Female"] = {
["Fair Skin"] = "cc_face_alien_fair_F.png",
["Green Skin"] = "cc_face_alien_green_F.png",
["Red Skin"] = "cc_face_alien_red_F.png",
["Tanned Skin"] = "cc_face_alien_tanned_F.png",
["White Skin"] = "cc_face_alien_white_F.png",
["Black Skin"] = "cc_face_alien_black_F.png",
["Dark Skin"] = "cc_face_alien_dark_F.png",
}
},
["Dwarven Face"] = {
["Male"] = {
["Fair Skin"] = "cc_face_dwarven_fair_M.png",
["Green Skin"] = "cc_face_dwarven_green_M.png",
["Red Skin"] = "cc_face_dwarven_red_M.png",
["Tanned Skin"] = "cc_face_dwarven_tanned_M.png",
["White Skin"] = "cc_face_dwarven_white_M.png",
["Black Skin"] = "cc_face_dwarven_black_M.png",
["Dark Skin"] = "cc_face_dwarven_dark_M.png",
},
["Female"] = {
["Fair Skin"] = "cc_face_dwarven_fair_F.png",
["Green Skin"] = "cc_face_dwarven_green_F.png",
["Red Skin"] = "cc_face_dwarven_red_F.png",
["Tanned Skin"] = "cc_face_dwarven_tanned_F.png",
["White Skin"] = "cc_face_dwarven_white_F.png",
["Black Skin"] = "cc_face_dwarven_black_F.png",
["Dark Skin"] = "cc_face_dwarven_dark_F.png",
}
},
["Elven Face"] = {
["Male"] = {
["Fair Skin"] = "cc_face_elven_fair_M.png",
["Green Skin"] = "cc_face_elven_green_M.png",
["Red Skin"] = "cc_face_elven_red_M.png",
["Tanned Skin"] = "cc_face_elven_tanned_M.png",
["White Skin"] = "cc_face_elven_white_M.png",
["Black Skin"] = "cc_face_elven_black_M.png",
["Dark Skin"] = "cc_face_elven_dark_M.png",
},
["Female"] = {
["Fair Skin"] = "cc_face_elven_fair_F.png",
["Green Skin"] = "cc_face_elven_green_F.png",
["Red Skin"] = "cc_face_elven_red_F.png",
["Tanned Skin"] = "cc_face_elven_tanned_F.png",
["White Skin"] = "cc_face_elven_white_F.png",
["Black Skin"] = "cc_face_elven_black_F.png",
["Dark Skin"] = "cc_face_elven_dark_F.png",
}
}
},
hair = {
["Brown Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_brown_M.png",
["Short Hair"] = "cc_hair_short_brown_M.png",
["Styled Hair"] = "cc_hair_special_brown_M.png",
["Long Hair"] = "cc_hair_long_brown_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_brown_F.png",
["Short Hair"] = "cc_hair_short_brown_F.png",
["Styled Hair"] = "cc_hair_special_brown_F.png",
["Long Hair"] = "cc_hair_long_brown_F.png",
}
},
["Green Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_green_M.png",
["Short Hair"] = "cc_hair_short_green_M.png",
["Styled Hair"] = "cc_hair_special_green_M.png",
["Long Hair"] = "cc_hair_long_green_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_green_F.png",
["Short Hair"] = "cc_hair_short_green_F.png",
["Styled Hair"] = "cc_hair_special_green_F.png",
["Long Hair"] = "cc_hair_long_green_F.png",
}
},
["Orange Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_orange_M.png",
["Short Hair"] = "cc_hair_short_orange_M.png",
["Styled Hair"] = "cc_hair_special_orange_M.png",
["Long Hair"] = "cc_hair_long_orange_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_orange_F.png",
["Short Hair"] = "cc_hair_short_orange_F.png",
["Styled Hair"] = "cc_hair_special_orange_F.png",
["Long Hair"] = "cc_hair_long_orange_F.png",
}
},
["Purple Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_purple_M.png",
["Short Hair"] = "cc_hair_short_purple_M.png",
["Styled Hair"] = "cc_hair_special_purple_M.png",
["Long Hair"] = "cc_hair_long_purple_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_purple_F.png",
["Short Hair"] = "cc_hair_short_purple_F.png",
["Styled Hair"] = "cc_hair_special_purple_F.png",
["Long Hair"] = "cc_hair_long_purple_F.png",
}
},
["Red Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_red_M.png",
["Short Hair"] = "cc_hair_short_red_M.png",
["Styled Hair"] = "cc_hair_special_red_M.png",
["Long Hair"] = "cc_hair_long_red_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_red_F.png",
["Short Hair"] = "cc_hair_short_red_F.png",
["Styled Hair"] = "cc_hair_special_red_F.png",
["Long Hair"] = "cc_hair_long_red_F.png",
}
},
["White Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_white_M.png",
["Short Hair"] = "cc_hair_short_white_M.png",
["Styled Hair"] = "cc_hair_special_white_M.png",
["Long Hair"] = "cc_hair_long_white_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_white_F.png",
["Short Hair"] = "cc_hair_short_white_F.png",
["Styled Hair"] = "cc_hair_special_white_F.png",
["Long Hair"] = "cc_hair_long_white_F.png",
}
},
["Black Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_black_M.png",
["Short Hair"] = "cc_hair_short_black_M.png",
["Styled Hair"] = "cc_hair_special_black_M.png",
["Long Hair"] = "cc_hair_long_black_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_black_F.png",
["Short Hair"] = "cc_hair_short_black_F.png",
["Styled Hair"] = "cc_hair_special_black_F.png",
["Long Hair"] = "cc_hair_long_black_F.png",
}
},
["Blonde Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_blonde_M.png",
["Short Hair"] = "cc_hair_short_blonde_M.png",
["Styled Hair"] = "cc_hair_special_blonde_M.png",
["Long Hair"] = "cc_hair_long_blonde_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_blonde_F.png",
["Short Hair"] = "cc_hair_short_blonde_F.png",
["Styled Hair"] = "cc_hair_special_blonde_F.png",
["Long Hair"] = "cc_hair_long_blonde_F.png",
}
},
["Blue Hair"] = {
["Male"] = {
["Medium Hair"] = "cc_hair_medium_blue_M.png",
["Short Hair"] = "cc_hair_short_blue_M.png",
["Styled Hair"] = "cc_hair_special_blue_M.png",
["Long Hair"] = "cc_hair_long_blue_M.png",
},
["Female"] = {
["Medium Hair"] = "cc_hair_medium_blue_F.png",
["Short Hair"] = "cc_hair_short_blue_F.png",
["Styled Hair"] = "cc_hair_special_blue_F.png",
["Long Hair"] = "cc_hair_long_blue_F.png",
}
}
},
hair_style = {
["Medium Hair"] = "medium",
["Short Hair"] = "short",
["Styled Hair"] = "styled",
["Long Hair"] = "long",
},
eyes = {
["Blue Eyes"] = "cc_eyes_blue.png",
["Brown Eyes"] = "cc_eyes_brown.png",
["Green Eyes"] = "cc_eyes_green.png",
["Orange Eyes"] = "cc_eyes_orange.png",
["Purple Eyes"] = "cc_eyes_purple.png",
["Red Eyes"] = "cc_eyes_red.png",
["White Eyes"] = "cc_eyes_white.png",
["Yellow Eyes"] = "cc_eyes_yellow.png",
["Black Eyes"] = "cc_eyes_black.png",
},
tshirt = {
["Green T-Shirt"] = "cc_tshirt_green.png",
["Orange T-Shirt"] = "cc_tshirt_orange.png",
["Purple T-Shirt"] = "cc_tshirt_purple.png",
["Red T-Shirt"] = "cc_tshirt_red.png",
["White T-Shirt"] = "cc_tshirt_white.png",
["Yellow T-Shirt"] = "cc_tshirt_yellow.png",
["Black T-Shirt"] = "cc_tshirt_black.png",
["Blue T-Shirt"] = "cc_tshirt_blue.png",
},
pants = {
["Blue Pants"] = "cc_pants_blue.png",
["Green Pants"] = "cc_pants_green.png",
["Orange Pants"] = "cc_pants_orange.png",
["Purple Pants"] = "cc_pants_purple.png",
["Red Pants"] = "cc_pants_red.png",
["White Pants"] = "cc_pants_white.png",
["Yellow Pants"] = "cc_pants_yellow.png",
["Black Pants"] = "cc_pants_black.png",
},
shoes = {
["Leather Shoes"] = "cc_shoes_leather.png",
["Canvas Shoes"] = "cc_shoes_canvas.png",
["Fur Shoes"] = "cc_shoes_fur.png",
}
cc.skin = {
["Fair Skin"] = "cc_skin_fair.png",
["Green Skin"] = "cc_skin_green.png",
["Red Skin"] = "cc_skin_red.png",
["Tanned Skin"] = "cc_skin_tanned.png",
["White Skin"] = "cc_skin_white.png",
["Black Skin"] = "cc_skin_black.png",
["Dark Skin"] = "cc_skin_dark.png",
}
cc.face = {
["Human Face (Male)"] = {
["Fair Skin"] = "cc_face_human_fair_M.png",
["Green Skin"] = "cc_face_human_green_M.png",
["Red Skin"] = "cc_face_human_red_M.png",
["Tanned Skin"] = "cc_face_human_tanned_M.png",
["White Skin"] = "cc_face_human_white_M.png",
["Black Skin"] = "cc_face_human_black_M.png",
["Dark Skin"] = "cc_face_human_dark_M.png",
},
["Alien Face (Male)"] = {
["Fair Skin"] = "cc_face_alien_fair_M.png",
["Green Skin"] = "cc_face_alien_green_M.png",
["Red Skin"] = "cc_face_alien_red_M.png",
["Tanned Skin"] = "cc_face_alien_tanned_M.png",
["White Skin"] = "cc_face_alien_white_M.png",
["Black Skin"] = "cc_face_alien_black_M.png",
["Dark Skin"] = "cc_face_alien_dark_M.png",
},
["Dwarven Face (Male)"] = {
["Fair Skin"] = "cc_face_dwarven_fair_M.png",
["Green Skin"] = "cc_face_dwarven_green_M.png",
["Red Skin"] = "cc_face_dwarven_red_M.png",
["Tanned Skin"] = "cc_face_dwarven_tanned_M.png",
["White Skin"] = "cc_face_dwarven_white_M.png",
["Black Skin"] = "cc_face_dwarven_black_M.png",
["Dark Skin"] = "cc_face_dwarven_dark_M.png",
},
["Elven Face (Male)"] = {
["Fair Skin"] = "cc_face_elven_fair_M.png",
["Green Skin"] = "cc_face_elven_green_M.png",
["Red Skin"] = "cc_face_elven_red_M.png",
["Tanned Skin"] = "cc_face_elven_tanned_M.png",
["White Skin"] = "cc_face_elven_white_M.png",
["Black Skin"] = "cc_face_elven_black_M.png",
["Dark Skin"] = "cc_face_elven_dark_M.png",
},
["Human Face (Female)"] = {
["Fair Skin"] = "cc_face_human_fair_F.png",
["Green Skin"] = "cc_face_human_green_F.png",
["Red Skin"] = "cc_face_human_red_F.png",
["Tanned Skin"] = "cc_face_human_tanned_F.png",
["White Skin"] = "cc_face_human_white_F.png",
["Black Skin"] = "cc_face_human_black_F.png",
["Dark Skin"] = "cc_face_human_dark_F.png",
},
["Alien Face (Female)"] = {
["Fair Skin"] = "cc_face_alien_fair_F.png",
["Green Skin"] = "cc_face_alien_green_F.png",
["Red Skin"] = "cc_face_alien_red_F.png",
["Tanned Skin"] = "cc_face_alien_tanned_F.png",
["White Skin"] = "cc_face_alien_white_F.png",
["Black Skin"] = "cc_face_alien_black_F.png",
["Dark Skin"] = "cc_face_alien_dark_F.png",
},
["Dwarven Face (Female)"] = {
["Fair Skin"] = "cc_face_dwarven_fair_F.png",
["Green Skin"] = "cc_face_dwarven_green_F.png",
["Red Skin"] = "cc_face_dwarven_red_F.png",
["Tanned Skin"] = "cc_face_dwarven_tanned_F.png",
["White Skin"] = "cc_face_dwarven_white_F.png",
["Black Skin"] = "cc_face_dwarven_black_F.png",
["Dark Skin"] = "cc_face_dwarven_dark_F.png",
},
["Elven Face (Female)"] = {
["Fair Skin"] = "cc_face_elven_fair_F.png",
["Green Skin"] = "cc_face_elven_green_F.png",
["Red Skin"] = "cc_face_elven_red_F.png",
["Tanned Skin"] = "cc_face_elven_tanned_F.png",
["White Skin"] = "cc_face_elven_white_F.png",
["Black Skin"] = "cc_face_elven_black_F.png",
["Dark Skin"] = "cc_face_elven_dark_F.png",
},
}
cc.hair = {
["Brown Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_brown_M.png",
["Short Hair"] = "cc_hair_short_brown_M.png",
["Styled Hair"] = "cc_hair_special_brown_M.png",
["Long Hair"] = "cc_hair_long_brown_M.png",
},
["Green Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_green_M.png",
["Short Hair"] = "cc_hair_short_green_M.png",
["Styled Hair"] = "cc_hair_special_green_M.png",
["Long Hair"] = "cc_hair_long_green_M.png",
},
["Orange Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_orange_M.png",
["Short Hair"] = "cc_hair_short_orange_M.png",
["Styled Hair"] = "cc_hair_special_orange_M.png",
["Long Hair"] = "cc_hair_long_orange_M.png",
},
["Purple Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_purple_M.png",
["Short Hair"] = "cc_hair_short_purple_M.png",
["Styled Hair"] = "cc_hair_special_purple_M.png",
["Long Hair"] = "cc_hair_long_purple_M.png",
},
["Red Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_red_M.png",
["Short Hair"] = "cc_hair_short_red_M.png",
["Styled Hair"] = "cc_hair_special_red_M.png",
["Long Hair"] = "cc_hair_long_red_M.png",
},
["White Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_white_M.png",
["Short Hair"] = "cc_hair_short_white_M.png",
["Styled Hair"] = "cc_hair_special_white_M.png",
["Long Hair"] = "cc_hair_long_white_M.png",
},
["Black Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_black_M.png",
["Short Hair"] = "cc_hair_short_black_M.png",
["Styled Hair"] = "cc_hair_special_black_M.png",
["Long Hair"] = "cc_hair_long_black_M.png",
},
["Blonde Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_blonde_M.png",
["Short Hair"] = "cc_hair_short_blonde_M.png",
["Styled Hair"] = "cc_hair_special_blonde_M.png",
["Long Hair"] = "cc_hair_long_blonde_M.png",
},
["Blue Hair (Male)"] = {
["Medium Hair"] = "cc_hair_medium_blue_M.png",
["Short Hair"] = "cc_hair_short_blue_M.png",
["Styled Hair"] = "cc_hair_special_blue_M.png",
["Long Hair"] = "cc_hair_long_blue_M.png",
},
["Brown Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_brown_F.png",
["Short Hair"] = "cc_hair_short_brown_F.png",
["Styled Hair"] = "cc_hair_special_brown_F.png",
["Long Hair"] = "cc_hair_long_brown_F.png",
},
["Green Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_green_F.png",
["Short Hair"] = "cc_hair_short_green_F.png",
["Styled Hair"] = "cc_hair_special_green_F.png",
["Long Hair"] = "cc_hair_long_green_F.png",
},
["Orange Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_orange_F.png",
["Short Hair"] = "cc_hair_short_orange_F.png",
["Styled Hair"] = "cc_hair_special_orange_F.png",
["Long Hair"] = "cc_hair_long_orange_F.png",
},
["Purple Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_purple_F.png",
["Short Hair"] = "cc_hair_short_purple_F.png",
["Styled Hair"] = "cc_hair_special_purple_F.png",
["Long Hair"] = "cc_hair_long_purple_F.png",
},
["Red Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_red_F.png",
["Short Hair"] = "cc_hair_short_red_F.png",
["Styled Hair"] = "cc_hair_special_red_F.png",
["Long Hair"] = "cc_hair_long_red_F.png",
},
["White Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_white_F.png",
["Short Hair"] = "cc_hair_short_white_F.png",
["Styled Hair"] = "cc_hair_special_white_F.png",
["Long Hair"] = "cc_hair_long_white_F.png",
},
["Black Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_black_F.png",
["Short Hair"] = "cc_hair_short_black_F.png",
["Styled Hair"] = "cc_hair_special_black_F.png",
["Long Hair"] = "cc_hair_long_black_F.png",
},
["Blonde Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_blonde_F.png",
["Short Hair"] = "cc_hair_short_blonde_F.png",
["Styled Hair"] = "cc_hair_special_blonde_F.png",
["Long Hair"] = "cc_hair_long_blonde_F.png",
},
["Blue Hair (Female)"] = {
["Medium Hair"] = "cc_hair_medium_blue_F.png",
["Short Hair"] = "cc_hair_short_blue_F.png",
["Styled Hair"] = "cc_hair_special_blue_F.png",
["Long Hair"] = "cc_hair_long_blue_F.png",
},
}
cc.hair_style = {
["Medium Hair"] = "medium",
["Short Hair"] = "short",
["Styled Hair"] = "styled",
["Long Hair"] = "long",
}
cc.eyes = {
["Blue Eyes"] = "cc_eyes_blue.png",
["Brown Eyes"] = "cc_eyes_brown.png",
["Green Eyes"] = "cc_eyes_green.png",
["Orange Eyes"] = "cc_eyes_orange.png",
["Purple Eyes"] = "cc_eyes_purple.png",
["Red Eyes"] = "cc_eyes_red.png",
["White Eyes"] = "cc_eyes_white.png",
["Yellow Eyes"] = "cc_eyes_yellow.png",
["Black Eyes"] = "cc_eyes_black.png",
}
cc.tshirt = {
["Green T-Shirt"] = "cc_tshirt_green.png",
["Orange T-Shirt"] = "cc_tshirt_orange.png",
["Purple T-Shirt"] = "cc_tshirt_purple.png",
["Red T-Shirt"] = "cc_tshirt_red.png",
["White T-Shirt"] = "cc_tshirt_white.png",
["Yellow T-Shirt"] = "cc_tshirt_yellow.png",
["Black T-Shirt"] = "cc_tshirt_black.png",
["Blue T-Shirt"] = "cc_tshirt_blue.png",
}
cc.pants = {
["Blue Pants"] = "cc_pants_blue.png",
["Green Pants"] = "cc_pants_green.png",
["Orange Pants"] = "cc_pants_orange.png",
["Purple Pants"] = "cc_pants_purple.png",
["Red Pants"] = "cc_pants_red.png",
["White Pants"] = "cc_pants_white.png",
["Yellow Pants"] = "cc_pants_yellow.png",
["Black Pants"] = "cc_pants_black.png",
}
cc.shoes = {
["Leather Shoes"] = "cc_shoes_leather.png",
["Canvas Shoes"] = "cc_shoes_canvas.png",
["Fur Shoes"] = "cc_shoes_fur.png",
}