profilepic 0.1.1 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Manifest.txt +9 -0
- data/lib/profilepic/builder.rb +84 -12
- data/lib/profilepic/public/doge-24x24.csv +23 -0
- data/lib/profilepic/public/doge-24x24.png +0 -0
- data/lib/profilepic/public/marcs-24x24.csv +149 -0
- data/lib/profilepic/public/marcs-24x24.png +0 -0
- data/lib/profilepic/public/spritesheet.js +126 -0
- data/lib/profilepic/public/yeoldepunks-24x24.csv +134 -0
- data/lib/profilepic/public/yeoldepunks-24x24.png +0 -0
- data/lib/profilepic/service.rb +270 -1
- data/lib/profilepic/version.rb +1 -1
- data/lib/profilepic/views/doge.erb +74 -0
- data/lib/profilepic/views/index.erb +15 -4
- data/lib/profilepic/views/layout.erb +1 -0
- data/lib/profilepic/views/marcs.erb +167 -33
- data/lib/profilepic/views/yeoldepunks.erb +231 -0
- metadata +11 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5d41ebabc80cb160ec234b527e6c1fc7d04ef28794a57fc7c1bba83fa9d357fc
|
|
4
|
+
data.tar.gz: 83175dee4ce2769394a40aff87ad1358082c9a3f89522e918977577b69eaf0e2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b47049d03f7a3d935b31e2e3d9682d02ba55e9bc0238b4b8a55b9b93d6cd84518e2384945acaf562de43a1661094657f3e2ffb3ef8ca51765ee567e631863b6a
|
|
7
|
+
data.tar.gz: 2cd589f2713dfa6f007290566037b8956fe11b1f4010b358dcfd07dc5f1487a01ceb23cce0d2a9cc2cef92d1ebf63f211cedefd4286f736409e68dfcf05aa0bb
|
data/Manifest.txt
CHANGED
|
@@ -5,11 +5,20 @@ Rakefile
|
|
|
5
5
|
bin/profilepic
|
|
6
6
|
lib/profilepic.rb
|
|
7
7
|
lib/profilepic/builder.rb
|
|
8
|
+
lib/profilepic/public/doge-24x24.csv
|
|
9
|
+
lib/profilepic/public/doge-24x24.png
|
|
10
|
+
lib/profilepic/public/marcs-24x24.csv
|
|
11
|
+
lib/profilepic/public/marcs-24x24.png
|
|
12
|
+
lib/profilepic/public/spritesheet.js
|
|
8
13
|
lib/profilepic/public/style.css
|
|
14
|
+
lib/profilepic/public/yeoldepunks-24x24.csv
|
|
15
|
+
lib/profilepic/public/yeoldepunks-24x24.png
|
|
9
16
|
lib/profilepic/service.rb
|
|
10
17
|
lib/profilepic/version.rb
|
|
18
|
+
lib/profilepic/views/doge.erb
|
|
11
19
|
lib/profilepic/views/index.erb
|
|
12
20
|
lib/profilepic/views/layout.erb
|
|
13
21
|
lib/profilepic/views/marcs.erb
|
|
14
22
|
lib/profilepic/views/shared/_more_options.erb
|
|
15
23
|
lib/profilepic/views/shared/_version.erb
|
|
24
|
+
lib/profilepic/views/yeoldepunks.erb
|
data/lib/profilepic/builder.rb
CHANGED
|
@@ -56,25 +56,76 @@ class ImageReq ## (Generate) Image Request
|
|
|
56
56
|
background: background )
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
+
def self.build_doge( params )
|
|
60
|
+
puts "==> image request params:"
|
|
61
|
+
pp params
|
|
59
62
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
name = 'doge'
|
|
64
|
+
archetype = _norm_key( params[:t] || 'classic' )
|
|
65
|
+
more_attributes = _parse_attributes( params[:attributes] || '' )
|
|
66
|
+
|
|
67
|
+
hair = _norm_key( params[:hair] || 'none' )
|
|
68
|
+
headwear = _norm_key( params[:headwear] || 'none' )
|
|
69
|
+
eyewear = _norm_key( params[:eyewear] || 'none' )
|
|
70
|
+
|
|
71
|
+
zoom = _parse_zoom( params[:z] || '1' )
|
|
72
|
+
background = _norm_key( params[:bg] || 'none' )
|
|
63
73
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
attributes = [archetype]
|
|
75
|
+
attributes << hair if hair != 'none'
|
|
76
|
+
attributes << headwear if headwear != 'none'
|
|
77
|
+
attributes << eyewear if eyewear != 'none'
|
|
78
|
+
|
|
79
|
+
new( name: name,
|
|
80
|
+
attributes: attributes + more_attributes,
|
|
81
|
+
zoom: zoom,
|
|
82
|
+
background: background )
|
|
71
83
|
end
|
|
72
84
|
|
|
73
|
-
|
|
74
|
-
|
|
85
|
+
|
|
86
|
+
def self.build_yeoldepunk( params )
|
|
87
|
+
puts "==> image request params:"
|
|
88
|
+
pp params
|
|
89
|
+
|
|
90
|
+
name = 'yeoldepunk'
|
|
91
|
+
archetype = _norm_key( params[:t] || 'male 3' )
|
|
92
|
+
|
|
93
|
+
hair = _norm_key( params[:hair] || 'none' )
|
|
94
|
+
beard = _norm_key( params[:beard] || 'none' )
|
|
95
|
+
eyes = _norm_key( params[:eyes] || 'none' )
|
|
96
|
+
eyewear = _norm_key( params[:eyewear] || 'none' )
|
|
97
|
+
blemish = _norm_key( params[:blemish] || 'none' )
|
|
98
|
+
nose = _norm_key( params[:nose] || 'none' )
|
|
99
|
+
mouth = _norm_key( params[:mouth] || 'none' )
|
|
100
|
+
mouthprop = _norm_key( params[:mouthprop] || 'none' )
|
|
101
|
+
earring = _norm_key( params[:earring] || 'none' )
|
|
102
|
+
headwear = _norm_key( params[:headwear] || 'none' )
|
|
103
|
+
neck = _norm_key( params[:neck] || 'none' )
|
|
104
|
+
|
|
105
|
+
zoom = _parse_zoom( params[:z] || '1' )
|
|
106
|
+
background = _norm_key( params[:bg] || 'none' )
|
|
107
|
+
|
|
108
|
+
attributes = [archetype]
|
|
109
|
+
attributes << hair if hair != 'none'
|
|
110
|
+
attributes << blemish if blemish != 'none'
|
|
111
|
+
attributes << beard if beard != 'none'
|
|
112
|
+
attributes << eyes if eyes != 'none'
|
|
113
|
+
attributes << eyewear if eyewear != 'none'
|
|
114
|
+
attributes << nose if nose != 'none'
|
|
115
|
+
attributes << mouth if mouth != 'none'
|
|
116
|
+
attributes << mouthprop if mouthprop != 'none'
|
|
117
|
+
attributes << earring if earring != 'none'
|
|
118
|
+
attributes << headwear if headwear != 'none'
|
|
119
|
+
attributes << neck if neck != 'none'
|
|
120
|
+
|
|
121
|
+
new( name: name,
|
|
122
|
+
attributes: attributes,
|
|
123
|
+
zoom: zoom,
|
|
124
|
+
background: background )
|
|
75
125
|
end
|
|
76
126
|
|
|
77
127
|
|
|
128
|
+
|
|
78
129
|
attr_reader :name,
|
|
79
130
|
:attributes,
|
|
80
131
|
:zoom,
|
|
@@ -101,5 +152,26 @@ class ImageReq ## (Generate) Image Request
|
|
|
101
152
|
end
|
|
102
153
|
@key
|
|
103
154
|
end
|
|
155
|
+
|
|
156
|
+
#####
|
|
157
|
+
# (static) helpers
|
|
158
|
+
|
|
159
|
+
def self._norm_key( str )
|
|
160
|
+
str.downcase.strip
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def self._parse_attributes( str )
|
|
164
|
+
# convert attributes to array
|
|
165
|
+
## allow various separators
|
|
166
|
+
attributes = str.split( %r{[,;|+/]+} )
|
|
167
|
+
attributes = attributes.map { |attr| attr.strip }
|
|
168
|
+
attributes = attributes.select { |attr| !attr.empty?} ## remove empty strings (if any)
|
|
169
|
+
attributes
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def self._parse_zoom( str )
|
|
173
|
+
str.strip.to_i( 10 )
|
|
174
|
+
end
|
|
175
|
+
|
|
104
176
|
end
|
|
105
177
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
id, category, name, more_names
|
|
2
|
+
0, , classic,
|
|
3
|
+
1, , dark,
|
|
4
|
+
2, , zombie,
|
|
5
|
+
3, , alien,
|
|
6
|
+
4, , crazyhair,
|
|
7
|
+
5, , beanie,
|
|
8
|
+
6, , cap,
|
|
9
|
+
7, , capforward,
|
|
10
|
+
8, , cowboyhat,
|
|
11
|
+
9, , fedora,
|
|
12
|
+
10, , knittedcap,
|
|
13
|
+
11, , tophat,
|
|
14
|
+
12, , bandana,
|
|
15
|
+
13, , headband,
|
|
16
|
+
14, , tiara,
|
|
17
|
+
15, , 3dglasses,
|
|
18
|
+
16, , bigshades,
|
|
19
|
+
17, , classicshades,
|
|
20
|
+
18, , regularshades,
|
|
21
|
+
19, , smallshades,
|
|
22
|
+
20, , nerdglasses,
|
|
23
|
+
21, , eyepatch,
|
|
Binary file
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
id, category, name, more_names
|
|
2
|
+
0, , marc-classic,
|
|
3
|
+
1, , ape-classic,
|
|
4
|
+
2, , Marc 1, Marc Dark
|
|
5
|
+
3, , Marc 2, Marc Mid | Marc Medium
|
|
6
|
+
4, , Marc 3, Marc | Marc Light
|
|
7
|
+
5, , Marc 4, Marc Albino
|
|
8
|
+
6, , Marc Gold, Gold | Marc Golden
|
|
9
|
+
7, , madlad,
|
|
10
|
+
8, , zombie,
|
|
11
|
+
9, , ape,
|
|
12
|
+
10, , Golden Ape, Ape Gold | Ape Golden
|
|
13
|
+
11, , Pink Ape, Ape Pink
|
|
14
|
+
12, , Blue Alien, Alien | Alien Blue
|
|
15
|
+
13, , Green Alien, Alien Green
|
|
16
|
+
14, , Devil 1, Devil | Demon | Demon 1
|
|
17
|
+
15, , Devil 2, Demon 2
|
|
18
|
+
16, , Devil 3, Demon 3
|
|
19
|
+
17, , orc,
|
|
20
|
+
18, , skeleton,
|
|
21
|
+
19, , bot,
|
|
22
|
+
20, , blue_eyes,
|
|
23
|
+
21, , green_eyes,
|
|
24
|
+
22, , blue_eye_shadow,
|
|
25
|
+
23, , green_eye_shadow,
|
|
26
|
+
24, , purple_eye_shadow,
|
|
27
|
+
25, , bagner,
|
|
28
|
+
26, , horns,
|
|
29
|
+
27, , marc_tyson,
|
|
30
|
+
28, , cleft,
|
|
31
|
+
29, , mole,
|
|
32
|
+
30, , rosy_cheeks,
|
|
33
|
+
31, , shine,
|
|
34
|
+
32, , spots,
|
|
35
|
+
33, , black_lipstick,
|
|
36
|
+
34, , hot_lipstick,
|
|
37
|
+
35, , purple_lipstick,
|
|
38
|
+
36, , buck_teeth,
|
|
39
|
+
37, , clown_nose,
|
|
40
|
+
38, , gold_ring,
|
|
41
|
+
39, , diamond_earring,
|
|
42
|
+
40, , gold_earring,
|
|
43
|
+
41, , diamond_helix,
|
|
44
|
+
42, , gold_helix,
|
|
45
|
+
43, , frown,
|
|
46
|
+
44, , smile,
|
|
47
|
+
45, , big_beard_white,
|
|
48
|
+
46, , big_beard,
|
|
49
|
+
47, , chinstrap,
|
|
50
|
+
48, , front_beard,
|
|
51
|
+
49, , front_beard_dark,
|
|
52
|
+
50, , full_mustache,
|
|
53
|
+
51, , full_mustache_dark,
|
|
54
|
+
52, , goat,
|
|
55
|
+
53, , goat_dark,
|
|
56
|
+
54, , handlebar,
|
|
57
|
+
55, , luxurious_beard,
|
|
58
|
+
56, , mustache,
|
|
59
|
+
57, , mutton_chop,
|
|
60
|
+
58, , normal_beard,
|
|
61
|
+
59, , normal_beard_black,
|
|
62
|
+
60, , shadow_beard,
|
|
63
|
+
61, , soul_patch,
|
|
64
|
+
62, , bandana,
|
|
65
|
+
63, , beanie,
|
|
66
|
+
64, , bunny_ears,
|
|
67
|
+
65, , cap,
|
|
68
|
+
66, , skull_cap,
|
|
69
|
+
67, , cap_forward,
|
|
70
|
+
68, , police_cap,
|
|
71
|
+
69, , cowboy_hat,
|
|
72
|
+
70, , do_rag,
|
|
73
|
+
71, , fast_food,
|
|
74
|
+
72, , marcdonalds,
|
|
75
|
+
73, , fedora,
|
|
76
|
+
74, , headband,
|
|
77
|
+
75, , roaring_headband,
|
|
78
|
+
76, , hoodie,
|
|
79
|
+
77, , purple_hoodie,
|
|
80
|
+
78, , knitted_cap,
|
|
81
|
+
79, , laurels,
|
|
82
|
+
80, , shemagh,
|
|
83
|
+
81, , tassle_hat,
|
|
84
|
+
82, , tiarra,
|
|
85
|
+
83, , top_hat,
|
|
86
|
+
84, , uncle_sam,
|
|
87
|
+
85, , viking,
|
|
88
|
+
86, , welding_goggles,
|
|
89
|
+
87, , blonde_bob,
|
|
90
|
+
88, , chad,
|
|
91
|
+
89, , clown_hair,
|
|
92
|
+
90, , crazy_white_hair,
|
|
93
|
+
91, , crazy_hair,
|
|
94
|
+
92, , frumpy_hair,
|
|
95
|
+
93, , marc_three,
|
|
96
|
+
94, , purple_hair,
|
|
97
|
+
95, , stringy_hair,
|
|
98
|
+
96, , vampire_hair,
|
|
99
|
+
97, , wild_blonde_hair,
|
|
100
|
+
98, , wild_hair,
|
|
101
|
+
99, , clown_eyes_blue,
|
|
102
|
+
100, , clown_eyes_green,
|
|
103
|
+
101, , lasers,
|
|
104
|
+
102, , tears,
|
|
105
|
+
103, , 3d_glasses,
|
|
106
|
+
104, , aviators,
|
|
107
|
+
105, , big_shades,
|
|
108
|
+
106, , classic_shades,
|
|
109
|
+
107, , deal_with_it,
|
|
110
|
+
108, , glasses,
|
|
111
|
+
109, , gold_glasses,
|
|
112
|
+
110, , horned_rim_glasses,
|
|
113
|
+
111, , monocle,
|
|
114
|
+
112, , nerd_glasses,
|
|
115
|
+
113, , pink_shades,
|
|
116
|
+
114, , polarized,
|
|
117
|
+
115, , polarized_white,
|
|
118
|
+
116, , regular_shades,
|
|
119
|
+
117, , small_shades,
|
|
120
|
+
118, , VR Headset, VR
|
|
121
|
+
119, , eye_mask,
|
|
122
|
+
120, , eye_patch,
|
|
123
|
+
121, , cigar,
|
|
124
|
+
122, , cigarette,
|
|
125
|
+
123, , hookah,
|
|
126
|
+
124, , pipe,
|
|
127
|
+
125, , vape,
|
|
128
|
+
126, , medical_mask,
|
|
129
|
+
127, , bubble_gum,
|
|
130
|
+
128, , black_tie,
|
|
131
|
+
129, , blue_tie,
|
|
132
|
+
130, , red_tie,
|
|
133
|
+
131, , blue_shirt,
|
|
134
|
+
132, , blue_t_shirt,
|
|
135
|
+
133, , Fast Food Shirt,
|
|
136
|
+
134, , green_shirt,
|
|
137
|
+
135, , grey_shirt,
|
|
138
|
+
136, , purple_t_shirt,
|
|
139
|
+
137, , white_t_shirt,
|
|
140
|
+
138, , jumpsuit,
|
|
141
|
+
139, , labcoat,
|
|
142
|
+
140, , choker,
|
|
143
|
+
141, , double_gold_chain,
|
|
144
|
+
142, , gold_chain,
|
|
145
|
+
143, , silver_chain,
|
|
146
|
+
144, , thick_chain,
|
|
147
|
+
145, , hemp,
|
|
148
|
+
146, , ice,
|
|
149
|
+
147, , medallion,
|
|
Binary file
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
function parseCsv( str ) {
|
|
2
|
+
const lines = str.split( /\r?\n/ );
|
|
3
|
+
let rows = [];
|
|
4
|
+
|
|
5
|
+
for( let line of lines ) {
|
|
6
|
+
line = line.trim();
|
|
7
|
+
|
|
8
|
+
// skip empty & comment lines
|
|
9
|
+
if( line.length === 0 || line.startsWith('#') ) {
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
values = line.split(',');
|
|
13
|
+
|
|
14
|
+
values = values.map( (val, index) => val.trim() );
|
|
15
|
+
console.log( values );
|
|
16
|
+
|
|
17
|
+
rows.push( values );
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return rows
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Spritesheet {
|
|
25
|
+
constructor( img, names,
|
|
26
|
+
tileWidth=24,
|
|
27
|
+
tileHeight=24 ) {
|
|
28
|
+
this.img = img;
|
|
29
|
+
this.names = this._build_names( names );
|
|
30
|
+
this.tileWidth = tileWidth;
|
|
31
|
+
this.tileHeight = tileHeight;
|
|
32
|
+
}
|
|
33
|
+
static read( src, names,
|
|
34
|
+
tileWidth=24,
|
|
35
|
+
tileHeight=24 ) {
|
|
36
|
+
let img = new Image();
|
|
37
|
+
img.src = src;
|
|
38
|
+
return new Spritesheet( img, names, tileWidth, tileHeight );
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
_build_names( str ) {
|
|
43
|
+
// assume text records in comma-separated values (.csv)
|
|
44
|
+
// e.g.
|
|
45
|
+
// 0, Male 1
|
|
46
|
+
// 1, Male 2
|
|
47
|
+
// ...
|
|
48
|
+
// 11, Rosy Cheeks (m)
|
|
49
|
+
|
|
50
|
+
const rows = parseCsv( str );
|
|
51
|
+
let names = {};
|
|
52
|
+
for( let row of rows ) {
|
|
53
|
+
let id = parseInt( row[0] );
|
|
54
|
+
let name = this._norm_name( row[1] );
|
|
55
|
+
|
|
56
|
+
names[ name ] = id;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return names;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
_norm_name( str ) {
|
|
63
|
+
str = str.toLowerCase();
|
|
64
|
+
str = str.replaceAll( /[ _-]/ig, '' );
|
|
65
|
+
console.log( str );
|
|
66
|
+
return str;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
drawSprite( name, sel, zoom=1 ) {
|
|
70
|
+
let el = (typeof sel === 'string') ?
|
|
71
|
+
document.querySelector( sel )
|
|
72
|
+
:
|
|
73
|
+
sel;
|
|
74
|
+
|
|
75
|
+
let num = this.names[ this._norm_name( name ) ];
|
|
76
|
+
this._drawSprite( num, el, zoom );
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_drawSprite( num, el, zoom=1 ) {
|
|
80
|
+
|
|
81
|
+
let canvas = document.createElement( 'canvas' );
|
|
82
|
+
|
|
83
|
+
canvas.width = this.tileWidth*zoom;
|
|
84
|
+
canvas.height =this.tileHeight*zoom;
|
|
85
|
+
|
|
86
|
+
console.log( "==> Spritesheet.drawSprite" );
|
|
87
|
+
console.log( canvas.width, canvas.height );
|
|
88
|
+
|
|
89
|
+
let cols = this.img.naturalWidth / this.tileHeight;
|
|
90
|
+
let rows = this.img.naturalHeight / this.tileWidth;
|
|
91
|
+
console.log( cols, rows );
|
|
92
|
+
|
|
93
|
+
let dy = Math.floor( num / cols );
|
|
94
|
+
let dx = num % cols;
|
|
95
|
+
console.log( dx, dy );
|
|
96
|
+
|
|
97
|
+
let cx = canvas.getContext( "2d" );
|
|
98
|
+
cx.clearRect( 0, 0, this.tileWidth, this.tileHeight );
|
|
99
|
+
cx.imageSmoothingEnabled = false;
|
|
100
|
+
cx.drawImage( this.img,
|
|
101
|
+
// source rect
|
|
102
|
+
dx*this.tileWidth, dy*this.tileHeight, this.tileWidth, this.tileHeight,
|
|
103
|
+
// dest rect
|
|
104
|
+
0, 0, this.tileWidth*zoom, this.tileHeight*zoom );
|
|
105
|
+
|
|
106
|
+
el.appendChild( canvas );
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
draw( sel='span.sprite', zoom=1 ) {
|
|
110
|
+
// note: use onload (async) callback to wait for (required) image download to complete
|
|
111
|
+
this.img.onload = () => {
|
|
112
|
+
console.log( " image.onload callback " );
|
|
113
|
+
let els = document.querySelectorAll( sel );
|
|
114
|
+
// console.log( els );
|
|
115
|
+
|
|
116
|
+
for( let el of Array.from( els ) ) {
|
|
117
|
+
let name = el.dataset.name;
|
|
118
|
+
console.log( name );
|
|
119
|
+
|
|
120
|
+
this.drawSprite( name, el, zoom );
|
|
121
|
+
}
|
|
122
|
+
console.log( "done Spritesheet.draw()" );
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
id, name, gender, size, type, more_names
|
|
2
|
+
0, Male 1, m, l, Archetype,
|
|
3
|
+
1, Male 2, m, l, Archetype,
|
|
4
|
+
2, Male 3, m, l, Archetype,
|
|
5
|
+
3, Male 4, m, l, Archetype,
|
|
6
|
+
4, Female 1, f, s, Archetype,
|
|
7
|
+
5, Female 2, f, s, Archetype,
|
|
8
|
+
6, Female 3, f, s, Archetype,
|
|
9
|
+
7, Female 4, f, s, Archetype,
|
|
10
|
+
8, Zombie, m, l, Archetype,
|
|
11
|
+
9, Ape, m, l, Archetype,
|
|
12
|
+
10, Alien, m, l, Archetype,
|
|
13
|
+
11, Rosy Cheeks, m, l, ?,
|
|
14
|
+
12, Luxurious Beard, m, l, ?,
|
|
15
|
+
13, Clown Hair Green, m, l, ?,
|
|
16
|
+
14, Mohawk Dark, m, l, ?,
|
|
17
|
+
15, Cowboy Hat, m, l, ?,
|
|
18
|
+
16, Mustache, m, l, ?,
|
|
19
|
+
17, Clown Nose, m, l, ?,
|
|
20
|
+
18, Cigarette, m, l, ?,
|
|
21
|
+
19, Nerd Glasses, m, l, ?,
|
|
22
|
+
20, Regular Shades, m, l, ?,
|
|
23
|
+
21, Knitted Cap, m, l, ?,
|
|
24
|
+
22, Shadow Beard, m, l, ?,
|
|
25
|
+
23, Frown, m, l, ?,
|
|
26
|
+
24, Cap Forward, m, l, ?,
|
|
27
|
+
25, Goat, m, l, ?,
|
|
28
|
+
26, Mole, m, l, ?,
|
|
29
|
+
27, Purple Hair, m, l, ?,
|
|
30
|
+
28, Small Shades, m, l, ?,
|
|
31
|
+
29, Shaved Head, m, l, ?,
|
|
32
|
+
30, Classic Shades, m, l, ?,
|
|
33
|
+
31, Vape, m, l, ?,
|
|
34
|
+
32, Silver Chain, m, l, ?,
|
|
35
|
+
33, Smile, m, l, ?,
|
|
36
|
+
34, Big Shades, m, l, ?,
|
|
37
|
+
35, Mohawk Thin, m, l, ?,
|
|
38
|
+
36, Beanie, m, l, ?,
|
|
39
|
+
37, Cap, m, l, ?,
|
|
40
|
+
38, Clown Eyes Green, m, l, ?,
|
|
41
|
+
39, Normal Beard Black, m, l, ?,
|
|
42
|
+
40, Medical Mask, m, l, ?,
|
|
43
|
+
41, Normal Beard, m, l, ?,
|
|
44
|
+
42, VR, m, l, ?,
|
|
45
|
+
43, Eye Patch, m, l, ?,
|
|
46
|
+
44, Wild Hair, m, l, ?,
|
|
47
|
+
45, Top Hat, m, l, ?,
|
|
48
|
+
46, Bandana, m, l, ?,
|
|
49
|
+
47, Handlebars, m, l, ?,
|
|
50
|
+
48, Frumpy Hair, m, l, ?,
|
|
51
|
+
49, Crazy Hair, m, l, ?,
|
|
52
|
+
50, Police Cap, m, l, ?,
|
|
53
|
+
51, Buck Teeth, m, l, ?,
|
|
54
|
+
52, Do-rag, m, l, ?,
|
|
55
|
+
53, Front Beard, m, l, ?,
|
|
56
|
+
54, Spots, m, l, ?,
|
|
57
|
+
55, Big Beard, m, l, ?,
|
|
58
|
+
56, Vampire Hair, m, l, ?,
|
|
59
|
+
57, Peak Spike, m, l, ?,
|
|
60
|
+
58, Chinstrap, m, l, ?,
|
|
61
|
+
59, Fedora, m, l, ?,
|
|
62
|
+
60, Earring, m, l, ?,
|
|
63
|
+
61, Horned Rim Glasses, m, l, ?,
|
|
64
|
+
62, Headband, m, l, ?,
|
|
65
|
+
63, Pipe, m, l, ?,
|
|
66
|
+
64, Messy Hair, m, l, ?,
|
|
67
|
+
65, Front Beard Dark, m, l, ?,
|
|
68
|
+
66, Hoodie, m, l, ?,
|
|
69
|
+
67, Gold Chain, m, l, ?,
|
|
70
|
+
68, Muttonchops, m, l, ?,
|
|
71
|
+
69, Stringy Hair, m, l, ?,
|
|
72
|
+
70, Eye Mask, m, l, ?,
|
|
73
|
+
71, 3D Glasses, m, l, ?,
|
|
74
|
+
72, Clown Eyes Blue, m, l, ?,
|
|
75
|
+
73, Mohawk, m, l, ?,
|
|
76
|
+
74, Pilot Helmet, f, s, ?,
|
|
77
|
+
75, Tassle Hat, f, s, ?,
|
|
78
|
+
76, Hot Lipstick, f, s, ?,
|
|
79
|
+
77, Blue Eye Shadow, f, s, ?,
|
|
80
|
+
78, Straight Hair Dark, f, s, ?,
|
|
81
|
+
79, Choker, f, s, ?,
|
|
82
|
+
80, Crazy Hair, f, s, ?,
|
|
83
|
+
81, Regular Shades, f, s, ?,
|
|
84
|
+
82, Wild Blonde, f, s, ?,
|
|
85
|
+
83, 3D Glasses, f, s, ?,
|
|
86
|
+
84, Mole, f, s, ?,
|
|
87
|
+
85, Wild White Hair, f, s, ?,
|
|
88
|
+
86, Spots, f, s, ?,
|
|
89
|
+
87, Frumpy Hair, f, s, ?,
|
|
90
|
+
88, Nerd Glasses, f, s, ?,
|
|
91
|
+
89, Tiara, f, s, ?,
|
|
92
|
+
90, Orange Side, f, s, ?,
|
|
93
|
+
91, Red Mohawk, f, s, ?,
|
|
94
|
+
92, Messy Hair, f, s, ?,
|
|
95
|
+
93, Clown Eyes Blue, f, s, ?,
|
|
96
|
+
94, Pipe, f, s, ?,
|
|
97
|
+
95, Wild Hair, f, s, ?,
|
|
98
|
+
96, Purple Eye Shadow, f, s, ?,
|
|
99
|
+
97, Stringy Hair, f, s, ?,
|
|
100
|
+
98, Dark Hair, f, s, ?,
|
|
101
|
+
99, Eye Patch, f, s, ?,
|
|
102
|
+
100, Blonde Short, f, s, ?,
|
|
103
|
+
101, Classic Shades, f, s, ?,
|
|
104
|
+
102, Eye Mask, f, s, ?,
|
|
105
|
+
103, Clown Hair Green, f, s, ?,
|
|
106
|
+
104, Cap, f, s, ?,
|
|
107
|
+
105, Medical Mask, f, s, ?,
|
|
108
|
+
106, Bandana, f, s, ?,
|
|
109
|
+
107, Purple Lipstick, f, s, ?,
|
|
110
|
+
108, Clown Nose, f, s, ?,
|
|
111
|
+
109, Headband, f, s, ?,
|
|
112
|
+
110, Pigtails, f, s, ?,
|
|
113
|
+
111, Straight Hair Blonde, f, s, ?,
|
|
114
|
+
112, Knitted Cap, f, s, ?,
|
|
115
|
+
113, Clown Eyes Green, f, s, ?,
|
|
116
|
+
114, Cigarette, f, s, ?,
|
|
117
|
+
115, Welding Goggles, f, s, ?,
|
|
118
|
+
116, Mohawk Thin, f, s, ?,
|
|
119
|
+
117, Gold Chain, f, s, ?,
|
|
120
|
+
118, VR, f, s, ?,
|
|
121
|
+
119, Vape, f, s, ?,
|
|
122
|
+
120, Pink With Hat, f, s, ?,
|
|
123
|
+
121, Blonde Bob, f, s, ?,
|
|
124
|
+
122, Mohawk, f, s, ?,
|
|
125
|
+
123, Big Shades, f, s, ?,
|
|
126
|
+
124, Earring, f, s, ?,
|
|
127
|
+
125, Green Eye Shadow, f, s, ?,
|
|
128
|
+
126, Straight Hair, f, s, ?,
|
|
129
|
+
127, Rosy Cheeks, f, s, ?,
|
|
130
|
+
128, Half Shaved, f, s, ?,
|
|
131
|
+
129, Mohawk Dark, f, s, ?,
|
|
132
|
+
130, Black Lipstick, f, s, ?,
|
|
133
|
+
131, Horned Rim Glasses, f, s, ?,
|
|
134
|
+
132, Silver Chain, f, s, ?,
|
|
Binary file
|