profilepic 0.1.1 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|