kittyverse 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +3 -0
- data/README.md +110 -19
- data/lib/kittyverse.rb +22 -5
- data/lib/kittyverse/catalog.rb +9 -15
- data/lib/kittyverse/cattributes.rb +116 -0
- data/lib/kittyverse/fancies.rb +489 -151
- data/lib/kittyverse/purrstige.rb +200 -0
- data/lib/kittyverse/traits.rb +9 -9
- data/lib/kittyverse/version.rb +1 -1
- data/test/test_cattributes.rb +56 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b83f8ccd15b5d6499f12627e7a8bb1261b33176b
|
4
|
+
data.tar.gz: 9086b03449228f510ac73ee7198fe9264744a93c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bcfa16de3bb45b077bbfff8d503e87a7f28de68d55a2b1257b4540eb91ac5f28a88fceb94b814b7167b5b4a7aeb1812628fd33200ce81ae785fa90507c8f8c1
|
7
|
+
data.tar.gz: 22938b98bdd3bfb741033537516d28dff5f5b0e527571600c5016514e1969f7422fafa81885a9bcc0a5ae3823a918c681377ae5fc2daec0970784e08d8149fac
|
data/Manifest.txt
CHANGED
@@ -5,12 +5,15 @@ README.md
|
|
5
5
|
Rakefile
|
6
6
|
lib/kittyverse.rb
|
7
7
|
lib/kittyverse/catalog.rb
|
8
|
+
lib/kittyverse/cattributes.rb
|
8
9
|
lib/kittyverse/fancies.rb
|
9
10
|
lib/kittyverse/links.rb
|
10
11
|
lib/kittyverse/mewtations.rb
|
11
12
|
lib/kittyverse/pages/genes.rb
|
13
|
+
lib/kittyverse/purrstige.rb
|
12
14
|
lib/kittyverse/traits.rb
|
13
15
|
lib/kittyverse/traits_timeline.rb
|
14
16
|
lib/kittyverse/version.rb
|
15
17
|
test/helper.rb
|
18
|
+
test/test_cattributes.rb
|
16
19
|
test/test_traits.rb
|
data/README.md
CHANGED
@@ -34,28 +34,107 @@ t = Trait.find_by( name: 'Savannah' )
|
|
34
34
|
t = Traits[ :body ][ '1' ]
|
35
35
|
t = Traits[ :body ][ '00' ]
|
36
36
|
t = Traits[ :body ][ 0 ]
|
37
|
-
t = Traits['FU']['00']
|
38
|
-
t = Traits['FU'][0]
|
39
|
-
t = Traits[:FU][0]
|
40
|
-
t = Traits[:FU00]
|
41
|
-
t = Traits['Fur'][0]
|
37
|
+
t = Traits[ 'FU' ][ '00' ]
|
38
|
+
t = Traits[ 'FU' ][0]
|
39
|
+
t = Traits[ :FU ][0]
|
40
|
+
t = Traits[ :FU00 ]
|
41
|
+
t = Traits[ 'Fur' ][0]
|
42
42
|
# ...
|
43
43
|
```
|
44
44
|
|
45
|
+
#### What about `totesbasic`?
|
46
|
+
|
47
|
+
Note, the `totesbasic` pattern cattribute has _three_ traits, that is, `totesbasic 1` with the code `PA14`
|
48
|
+
and `totesbasic 2` with `PA15` and `totesbasic 3` with `PA23`.
|
49
|
+
Use:
|
50
|
+
|
51
|
+
``` ruby
|
52
|
+
t = Traits[ 'PA14' ]
|
53
|
+
p t.class #=> Trait
|
54
|
+
p t.name #=> "totesbasic 1"
|
55
|
+
p t.type.name #=> "Pattern"
|
56
|
+
p t.code #=> "PA14"
|
57
|
+
p t.kai #=> "f"
|
58
|
+
|
59
|
+
# -or-
|
60
|
+
|
61
|
+
t = Trait.find_by_code( 'PA14' )
|
62
|
+
t = Trait.find_by( code: 'PA14' )
|
63
|
+
t = Traits[ 'totesbasic 1' ]
|
64
|
+
t = Traits[ 'Totesbasic 1' ]
|
65
|
+
t = Trait.find_by_name( 'Totesbasic 1' )
|
66
|
+
t = Trait.find_by( name: 'Totesbasic 1' )
|
67
|
+
t = Traits[ :body ][ 'f' ]
|
68
|
+
t = Traits[ :body ][ '14' ]
|
69
|
+
t = Traits[ :body ][ 14 ]
|
70
|
+
# ...
|
71
|
+
```
|
72
|
+
|
73
|
+
|
74
|
+
|
45
75
|
For trait types (e.g. fur, pattern, eye color, eye shape, base color, etc.)
|
46
76
|
use:
|
47
77
|
|
48
78
|
``` ruby
|
49
|
-
|
50
|
-
p
|
51
|
-
p
|
52
|
-
p
|
53
|
-
p
|
79
|
+
tt = Traits[ :body ]
|
80
|
+
p tt.class #=> TraitType
|
81
|
+
p tt.name #=> "Fur"
|
82
|
+
p tt.code #=> "FU"
|
83
|
+
p tt.genes #=> "0-3"
|
54
84
|
|
55
85
|
# -or-
|
56
86
|
|
57
|
-
|
58
|
-
|
87
|
+
tt = TraitType.find_by_key( :body )
|
88
|
+
tt = TraitType.find_by( key: 'body' )
|
89
|
+
tt = Traits[ 'Fur' ]
|
90
|
+
tt = TraitType.find_by_name( 'Fur' )
|
91
|
+
tt = TraitType.find_by( name: 'Fur' )
|
92
|
+
tt = Traits[ 'FU' ]
|
93
|
+
tt = Traits[ :FU ]
|
94
|
+
tt = TraitType.find_by_code( 'FU' )
|
95
|
+
tt = TraitType.find_by( code: 'FU' )
|
96
|
+
# ...
|
97
|
+
```
|
98
|
+
|
99
|
+
|
100
|
+
### Cattributes
|
101
|
+
|
102
|
+
Use the `Cattribute` helper class to lookup cattributes incl. purrstige cattributes with timed trait recipes / forumlas:
|
103
|
+
|
104
|
+
``` ruby
|
105
|
+
c = Cattribute[ 'savannah' ]
|
106
|
+
p c.class #=> Cattribute
|
107
|
+
p c.name #=> "savannah"
|
108
|
+
p c.type.name #=> "Fur"
|
109
|
+
p c.traits.size #=> 1
|
110
|
+
p c.traits #=> ["savannah"]
|
111
|
+
p c.traits[0].code #=> "FU00"
|
112
|
+
# ...
|
113
|
+
|
114
|
+
c = Cattribute[ 'totesbasic' ]
|
115
|
+
p c.class #=> Cattribute
|
116
|
+
p c.name #=> "totesbasic"
|
117
|
+
p c.type.name #=> "Pattern"
|
118
|
+
p c.traits.size #=> 3
|
119
|
+
p c.traits #=> ["totesbasic 1", "totesbasic 2", "totesbasic 3"]
|
120
|
+
p c.traits[0].code #=> "PA14"
|
121
|
+
p c.traits[1].code #=> "PA15"
|
122
|
+
p c.traits[2].code #=> "PA23"
|
123
|
+
# ...
|
124
|
+
|
125
|
+
c = Cattribute[ 'bionic' ]
|
126
|
+
p c.class #=> Cattribute
|
127
|
+
p c.name #=> "bionic"
|
128
|
+
p c.type.name #=> "Purrstige"
|
129
|
+
p c.traits.size #=> 0
|
130
|
+
p c.traits #=> []
|
131
|
+
p c.recipe #=> {time: {start: "2019-05-01", end: "2019-08-31"},
|
132
|
+
# traits: ["ragdoll",
|
133
|
+
# "WE05",
|
134
|
+
# ["totesbasic 1", "totesbasic 2", "totesbasic 3"],
|
135
|
+
# "PU30"]}
|
136
|
+
|
137
|
+
# ...
|
59
138
|
```
|
60
139
|
|
61
140
|
|
@@ -63,21 +142,28 @@ t = TraitType.find_by( key: 'body' )
|
|
63
142
|
|
64
143
|
## Real World Usage
|
65
144
|
|
66
|
-
|
145
|
+
### Reference Pages / Cheat Sheets
|
67
146
|
|
147
|
+
Auto-generated CryptoKitties reference pages / cheat sheets include:
|
68
148
|
|
69
|
-
|
149
|
+
- [**CryptoKitties Cattributes Rarity / Popularity Statistics**](CATTRIBUTES.md)
|
150
|
+
- [**CryptoKitties Updates - Fancy / Exclusive / Special Edition Cats - Timeline**](updates/FANCIES.md)
|
151
|
+
- [**CryptoKitties Updates - Purrstige Trait Recipes / Formulas - Timeline**](updates/PURRSTIGES.md)
|
152
|
+
- and others
|
70
153
|
|
71
|
-
- [Programming Crypto Collectibles Step-by-Step Book / Guide](https://github.com/cryptocopycats/programming-cryptocollectibles) -
|
72
|
-
Let's start with CryptoKitties & Copycats. Inside Unique Bits & Bytes on the Blockchain...
|
73
|
-
- [Ruby Quiz - Challenge #8 - Base32 Alphabet](https://github.com/planetruby/quiz/tree/master/008) - Convert the Super "Sekretoooo" 256-Bit CryptoKitties Genome to Kai Notation - Annipurrsary!
|
74
154
|
|
75
155
|
|
156
|
+
### More
|
76
157
|
|
158
|
+
See the [copycats command line tool (and core library)](https://github.com/cryptocopycats/copycats) - crypto cats / kitties collectibles unchained - buy! sell! hodl! sire! - play for free - runs off the blockchain - no ether / gas required
|
77
159
|
|
78
|
-
## Questions? Comments?
|
79
160
|
|
80
|
-
|
161
|
+
## More Documentation / Articles / Samples
|
162
|
+
|
163
|
+
- [Programming Crypto Collectibles Step-by-Step Book / Guide](https://github.com/openblockchains/programming-cryptocollectibles) -
|
164
|
+
Let's start with CryptoKitties & Copycats. Inside Unique Bits & Bytes on the Blockchain...
|
165
|
+
- [Ruby Quiz - Challenge #8 - Base32 Alphabet](https://github.com/planetruby/quiz/tree/master/008) - Convert the Super "Sekretoooo" 256-Bit CryptoKitties Genome to Kai Notation - Annipurrsary!
|
166
|
+
|
81
167
|
|
82
168
|
|
83
169
|
## License
|
@@ -86,3 +172,8 @@ Post them on the [cryptokitties reddit](https://www.reddit.com/r/cryptokitties).
|
|
86
172
|
|
87
173
|
The `kittyverse` scripts are dedicated to the public domain.
|
88
174
|
Use it as you please with no restrictions whatsoever.
|
175
|
+
|
176
|
+
|
177
|
+
## Questions? Comments?
|
178
|
+
|
179
|
+
Post them on the [cryptokitties reddit](https://www.reddit.com/r/cryptokitties). Thanks.
|
data/lib/kittyverse.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
## std libs
|
4
|
+
require 'date'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
|
8
|
+
## 3rd party libs
|
3
9
|
require 'base32-alphabets'
|
4
10
|
|
5
11
|
|
@@ -9,8 +15,10 @@ require 'kittyverse/traits'
|
|
9
15
|
require 'kittyverse/traits_timeline'
|
10
16
|
require 'kittyverse/mewtations'
|
11
17
|
require 'kittyverse/fancies'
|
18
|
+
require 'kittyverse/purrstige'
|
12
19
|
require 'kittyverse/catalog'
|
13
20
|
|
21
|
+
|
14
22
|
require 'kittyverse/links'
|
15
23
|
require 'kittyverse/pages/genes'
|
16
24
|
|
@@ -77,11 +85,16 @@ class TraitType
|
|
77
85
|
# note: all keys are the same except:
|
78
86
|
ALT_TRAIT_TYPE_KEYS =
|
79
87
|
{
|
80
|
-
:colorprimary => :color1,
|
81
|
-
:colorsecondary => :color2,
|
82
|
-
:colortertiary => :color3
|
88
|
+
# :colorprimary => :color1,
|
89
|
+
# :colorsecondary => :color2,
|
90
|
+
# :colortertiary => :color3
|
91
|
+
|
92
|
+
:color1 => :colorprimary,
|
93
|
+
:color2 => :colorsecondary,
|
94
|
+
:color3 => :colortertiary
|
83
95
|
}
|
84
96
|
|
97
|
+
|
85
98
|
def self.find_by_key( key )
|
86
99
|
## note: allow string AND symbols (thus, use .to_sym !!!)
|
87
100
|
## note: allow known alternative mappings/key (e.g. "internal" cryptokitties keys if different)
|
@@ -111,7 +124,7 @@ class TraitType
|
|
111
124
|
'tertiary color' => 'accent color',
|
112
125
|
'accent colour' => 'accent color', # british (canadian) spelling
|
113
126
|
'wild' => 'wild element',
|
114
|
-
'
|
127
|
+
'secret' => 'secret y gene'
|
115
128
|
}
|
116
129
|
|
117
130
|
def self.find_by_name( name )
|
@@ -154,7 +167,8 @@ class TraitType
|
|
154
167
|
:name,
|
155
168
|
:code,
|
156
169
|
:genes,
|
157
|
-
:traits
|
170
|
+
:traits, ## array of 32 traits
|
171
|
+
:cattributes ## array of 29/31/x cattributes
|
158
172
|
|
159
173
|
def initialize( **kwargs )
|
160
174
|
update( kwargs )
|
@@ -271,6 +285,9 @@ class Traits
|
|
271
285
|
end # class Traits
|
272
286
|
|
273
287
|
|
288
|
+
require 'kittyverse/cattributes'
|
289
|
+
|
290
|
+
|
274
291
|
|
275
292
|
# say hello
|
276
293
|
puts Kittyverse.banner if defined?($RUBYLIBS_DEBUG) && $RUBYLIBS_DEBUG
|
data/lib/kittyverse/catalog.rb
CHANGED
@@ -3,29 +3,23 @@
|
|
3
3
|
|
4
4
|
class Catalog ## todo: use a module - move to its own file - why? why not?
|
5
5
|
|
6
|
-
@@
|
7
|
-
@@exclusives
|
8
|
-
@@fancies
|
9
|
-
|
10
|
-
@@prestiges = {} # purrstige cattributes
|
6
|
+
@@special_editions = {} # special edition fancies
|
7
|
+
@@exclusives = {} # exclusive fancies
|
8
|
+
@@fancies = {} # "normal" fancies
|
11
9
|
|
12
10
|
|
13
11
|
## use special_cats, exclusive_cats, etc. - why? why not?
|
14
|
-
def self.
|
15
|
-
def self.exclusives()
|
16
|
-
def self.fancies()
|
17
|
-
|
18
|
-
## use prestige(purrstige)_cattributes - why? why not?
|
19
|
-
def self.prestiges() @@prestiges; end
|
12
|
+
def self.special_editions() @@special_editions; end
|
13
|
+
def self.exclusives() @@exclusives; end
|
14
|
+
def self.fancies() @@fancies; end
|
20
15
|
|
21
16
|
|
17
|
+
## auto-fill
|
22
18
|
FANCIES.each do |key,h|
|
23
|
-
if h[:
|
24
|
-
|
19
|
+
if h[:specialedition]
|
20
|
+
special_editions[key] = h
|
25
21
|
elsif h[:exclusive]
|
26
22
|
exclusives[key] = h
|
27
|
-
elsif h[:prestige]
|
28
|
-
prestiges[key] = h
|
29
23
|
else
|
30
24
|
fancies[key] = h
|
31
25
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
class Cattribute
|
5
|
+
|
6
|
+
def self.cattributes_by_name() @@cattributes_by_name ||= {}; end
|
7
|
+
|
8
|
+
def self.find_by_name( name )
|
9
|
+
## note: allow string AND symbols (thus, use .to_s !!!)
|
10
|
+
## note: downcase name e.g. allow Savannah too (not just savannah)
|
11
|
+
@@cattributes_by_name[ name.downcase.to_s ]
|
12
|
+
end
|
13
|
+
|
14
|
+
## add "generic" convenience find helper
|
15
|
+
def self.find_by( **kwargs )
|
16
|
+
if kwargs[ :name ]
|
17
|
+
find_by_name( kwargs[ :name ] )
|
18
|
+
else
|
19
|
+
## todo/fix: throw argument except!!!
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.[]( name ) find_by_name( name ); end
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
attr_accessor :type,
|
29
|
+
:name,
|
30
|
+
:traits,
|
31
|
+
:recipe
|
32
|
+
|
33
|
+
def initialize( **kwargs )
|
34
|
+
update( kwargs )
|
35
|
+
end
|
36
|
+
|
37
|
+
def update( **kwargs )
|
38
|
+
kwargs.each do |name,value|
|
39
|
+
send( "#{name}=", value ) ## use "regular" plain/classic attribute setter
|
40
|
+
end
|
41
|
+
self ## return self for chaining
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
## autofill cattributes
|
47
|
+
TRAITS.each do |key, h|
|
48
|
+
puts "key: #{key}"
|
49
|
+
|
50
|
+
tt = Traits[ key ]
|
51
|
+
tt.cattributes ||= [] ## if nil make sure it's an empty array when starting
|
52
|
+
## pp tt
|
53
|
+
|
54
|
+
next if [:secret, :prestige].include?( key)
|
55
|
+
|
56
|
+
h[:kai].each do |kai, trait_name|
|
57
|
+
## 1) skip "unnamed" traits
|
58
|
+
next if trait_name =~ /_[1-9a-z]$/
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
## 2) special case for totebasic - one cattribute, three traits
|
64
|
+
## (that is, totesbasic 1, totesbasic 2, totesbasic 3)
|
65
|
+
if TOTESBASIC.include?( trait_name )
|
66
|
+
if trait_name == TOTESBASIC.first
|
67
|
+
t1 = Traits[ TOTESBASIC[0] ]
|
68
|
+
t2 = Traits[ TOTESBASIC[1] ]
|
69
|
+
t3 = Traits[ TOTESBASIC[2] ]
|
70
|
+
|
71
|
+
cattribute = Cattribute.new(
|
72
|
+
name: 'totesbasic',
|
73
|
+
type: tt,
|
74
|
+
traits: [t1,t2,t3]
|
75
|
+
)
|
76
|
+
else
|
77
|
+
next ## skip all other totesbasic traits
|
78
|
+
end
|
79
|
+
else
|
80
|
+
t = Traits[trait_name]
|
81
|
+
pp t.name
|
82
|
+
|
83
|
+
cattribute = Cattribute.new(
|
84
|
+
name: trait_name,
|
85
|
+
type: tt,
|
86
|
+
traits: [t]
|
87
|
+
)
|
88
|
+
## pp cattribute
|
89
|
+
end
|
90
|
+
|
91
|
+
tt.cattributes << cattribute
|
92
|
+
|
93
|
+
cattributes_by_name[ cattribute.name ] = cattribute
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
## add purrstiges traits
|
98
|
+
tt = Traits[:prestige]
|
99
|
+
tt.cattributes ||= [] ## if nil make sure it's an empty array when starting
|
100
|
+
PURRSTIGES.each do |key, h|
|
101
|
+
puts "key: #{key}"
|
102
|
+
pp h
|
103
|
+
|
104
|
+
cattribute = Cattribute.new(
|
105
|
+
name: key.to_s,
|
106
|
+
type: tt,
|
107
|
+
traits: [], ## empty traits
|
108
|
+
recipe: h[:recipe] ## todo/fix: add recipe as a struct (NOT as a hash)
|
109
|
+
)
|
110
|
+
tt.cattributes << cattribute
|
111
|
+
|
112
|
+
cattributes_by_name[ cattribute.name ] = cattribute
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
end # class Cattribute
|
data/lib/kittyverse/fancies.rb
CHANGED
@@ -9,6 +9,10 @@
|
|
9
9
|
# https://blog.kotobaza.co/timeline/
|
10
10
|
|
11
11
|
|
12
|
+
##
|
13
|
+
## todo/fix:
|
14
|
+
## use count: for time-limited fancies do NOT use limit!!! change limit to count!!!
|
15
|
+
|
12
16
|
##
|
13
17
|
## note:
|
14
18
|
## for time limits for fancies use:
|
@@ -18,195 +22,529 @@
|
|
18
22
|
## e.g. overflow: 1 # 888+1 (=889)
|
19
23
|
|
20
24
|
|
21
|
-
|
22
|
-
##
|
23
|
-
##
|
25
|
+
### todo/fix:
|
26
|
+
## split into EXCLUSIVES
|
27
|
+
## and into SPECIAL_EDITIONS (SPECIALS?) - why? why not?
|
28
|
+
|
29
|
+
|
24
30
|
|
25
31
|
FANCIES =
|
26
32
|
{
|
33
|
+
# Apr 27, 2019
|
34
|
+
# Krakitten Fancy Cat is discovered. Fancy Cat
|
35
|
+
krakitten: { name: 'Krakitten',
|
36
|
+
recipe: {
|
37
|
+
time: { start: '2019-04-27', end: '2019-05-06' },
|
38
|
+
traits: ['cobalt', 'ducky', 'salty', 'splat']}
|
39
|
+
},
|
40
|
+
# Apr 13, 2019
|
41
|
+
# Furbeard Fancy Cat is discovered. Fancy Cat
|
42
|
+
furbeard: { name: 'Furbeard', date: '2019-04-13',
|
43
|
+
recipe: {
|
44
|
+
limit: 3733, ### todo -check if furbear was time windowed???
|
45
|
+
traits: ['inflatablepool', 'hanauma', 'neckbeard']}
|
46
|
+
},
|
47
|
+
|
48
|
+
# Apr 10, 2019
|
49
|
+
# Sparkles Special Edition Cat is released.Special Edition Cat
|
50
|
+
sparkles: { name: 'Sparkles', date: '2019-04-10',
|
51
|
+
specialedition: {
|
52
|
+
limit: 100 },
|
53
|
+
desc: 'Freebie for CryptoKitties Community Events'
|
54
|
+
},
|
55
|
+
|
56
|
+
papacatuanuku: { name: 'Papacatuanuku', date: '2019-03-31',
|
57
|
+
exclusive: {
|
58
|
+
limit: 1, ids: [1500000] },
|
59
|
+
desc: 'Kitty #1500000'
|
60
|
+
},
|
61
|
+
|
62
|
+
# Mar 30, 2019
|
63
|
+
# Glitter Fancy Cat is discovered. Fancy Cat
|
64
|
+
glitter: { name: 'Glitter',
|
65
|
+
recipe: {
|
66
|
+
time: { start: '2019-03-30', end: '2019-11-30'},
|
67
|
+
traits: ['rorschach', 'juju', 'unicorn', 'hyacinth'] }
|
68
|
+
},
|
69
|
+
|
70
|
+
|
71
|
+
# Mar 26, 2019
|
72
|
+
# Sir Meowsalot Exclusive Cat is released. Exclusive Cat
|
73
|
+
sirmeowsalot: { name: 'Sir Meowsalot', date: '2019-03-26',
|
74
|
+
exclusive: {
|
75
|
+
limit: 21, ids: (201..221).to_a }
|
76
|
+
},
|
77
|
+
|
78
|
+
# Mar 16, 2019
|
79
|
+
# Clover Fancy Cat is discovered. Fancy Cat
|
80
|
+
clover: { name: 'Clover', date: '2019-03-16',
|
81
|
+
recipe: {
|
82
|
+
limit: 2506,
|
83
|
+
traits: ['shamrock', 'emeraldgreen', 'roadtogold', 'PU27'] },
|
84
|
+
desc: "Celebrating St. Patrick's Day 2019 (March/19th)"
|
85
|
+
},
|
86
|
+
|
87
|
+
# Mar 2, 2019
|
88
|
+
# Glasswalker Fancy Cat is discovered. Fancy Cat
|
89
|
+
glasswalker: { name: 'Glasswalker', date: '2019-03-02',
|
90
|
+
recipe: {
|
91
|
+
limit: 1230,
|
92
|
+
traits: ['cloudwhite', 'henna', 'pearl', 'firedup'] },
|
93
|
+
desc: "Ninja Fancy Cat"
|
94
|
+
},
|
95
|
+
|
96
|
+
cyberberry: { name: 'Cyber Berry', date: '2019-03-02',
|
97
|
+
exclusive: {
|
98
|
+
limit: 1, ids: [282] },
|
99
|
+
desc: "Winner of the NFTme Sweetstakes"
|
100
|
+
},
|
101
|
+
|
102
|
+
# Mar 1, 2019
|
103
|
+
# Hinecatone Exclusive Cat is discovered. Exclusive Cat
|
104
|
+
hinecatone: { name: 'Hinecatone', date: '2019-03-01',
|
105
|
+
exclusive: {
|
106
|
+
limit: 15, ids: [1423547, 1433380, 1433486, 1440835, 1453366, 1456935, 1456973, 1459319, 1463197, 1466118, 1474082, 1484593, 1484982, 1492154, 1498885]}
|
107
|
+
},
|
108
|
+
|
109
|
+
|
110
|
+
# Feb 21, 2019
|
111
|
+
# Ande Fancy Cat is discovered. Fancy Cat
|
112
|
+
ande: { name: 'Ande', date: '2019-02-21',
|
113
|
+
recipe: {
|
114
|
+
limit: 440,
|
115
|
+
traits: ['munchkin', 'cashewmilk', 'moue', 'PU30', 'WE10'] }
|
116
|
+
},
|
117
|
+
# Feb 17, 2019
|
118
|
+
# Al Fancy Cat is discovered. Fancy Cat
|
119
|
+
al: { name: 'Al',
|
120
|
+
recipe: {
|
121
|
+
time: { start: '2019-02-17', end: '2019-12-01'},
|
122
|
+
traits: ['munchkin','moue','cashewmilk','brownies'] }
|
123
|
+
},
|
124
|
+
# Feb 16, 2019
|
125
|
+
# Pizzazz Fancy Cat is discovered.Fancy Cat
|
126
|
+
pizzazz: { name: 'Pizzazz',
|
127
|
+
recipe: {
|
128
|
+
time: { start: '2019-02-16', end: '2019-12-01'},
|
129
|
+
traits: ['mekong', 'scarlet', 'spangled', 'wonky'] }
|
130
|
+
},
|
131
|
+
|
132
|
+
# Feb 15, 2019
|
133
|
+
# Felono Exclusive Cat is discovered. Exclusive Cat
|
134
|
+
felono: { name: 'Felono', date: '2019-02-15',
|
135
|
+
exclusive: {
|
136
|
+
limit: 30, ids: [1394641, 1404595, 1406021, 1413065, 1414375, 1420553, 1421315, 1421864, 1424104 ,1425433, 1431823, 1435517, 1436333, 1449860, 1451482, 1455458, 1459320, 1462952, 1463069, 1476999, 1483225, 1487210, 1487551, 1489681, 1490345, 1491632, 1492206, 1492739, 1492817, 1498778]}
|
137
|
+
},
|
138
|
+
|
139
|
+
# Feb 9, 2019
|
140
|
+
# Miss Purrfect Fancy Cat is discovered.Fancy Cat
|
141
|
+
misspurrfect: { name: 'Miss Purrfect', date: '2019-02-09',
|
142
|
+
recipe: {
|
143
|
+
limit: 1298,
|
144
|
+
traits: ['allyouneed', 'butterscotch', 'asif', 'satiated', 'flapflap']},
|
145
|
+
desc: "Celebrating St. Valentine's Day 2019 (Feb/14th)"
|
146
|
+
},
|
147
|
+
|
27
148
|
## 2019
|
28
149
|
## January
|
29
150
|
|
151
|
+
# Jan 26, 2019
|
152
|
+
# Squib Fancy Cat is discovered. Fancy Cat
|
153
|
+
squib: { name: 'Squib', date: '2019-01-26',
|
154
|
+
recipe: {
|
155
|
+
limit: 1443,
|
156
|
+
traits: ['oldlace', 'razzledazzle', 'buzzed', 'rollercoaster']},
|
157
|
+
desc: 'Celebrating American Football Super Bowl LIII in 2019'
|
158
|
+
},
|
159
|
+
|
160
|
+
tallythepurrocious: { name: 'Tally The Purrocious',
|
161
|
+
recipe: {
|
162
|
+
time: { start: '2019-01-10', end: '2019-01-21' }, count: 3992,
|
163
|
+
traits: ['selkirk', 'koala', 'arcreactor', 'sully'] },
|
164
|
+
desc: 'Gods Unchained Promotion - Mystical Cat Talisman'
|
165
|
+
},
|
166
|
+
## date: '2019-01-10 ??? -- use for date "announced" or something - why? why not?
|
167
|
+
aeoncat: { name: 'Aeoncat',
|
168
|
+
specialedition: {
|
169
|
+
time: { start: '2019-01-17', end: '2019-01-28' },
|
170
|
+
limit: 380 }, ## Don't sleep - there's only 380 up for grabs!
|
171
|
+
desc: 'Goddess Aeona - Goddess of Nature - Gods Unchained Promotion'
|
172
|
+
},
|
173
|
+
hypurrion: { name: 'Hypurrion', date: '2019-01-10',
|
174
|
+
exclusive: {
|
175
|
+
limit: 1, ids: [269]},
|
176
|
+
desc: 'Hyperion - Mythic Titan of Light - Gods Unchained Promotion'
|
177
|
+
},
|
30
178
|
|
31
179
|
## 2018
|
32
180
|
## December
|
33
|
-
catzy: { name: 'Catzy', date: '2018-12-31',
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
lit: { name: 'Lit', date: '2018-12-14',
|
55
|
-
time: { start: '2018-12-14', end: '2019-01-07' }, prestige: true,
|
56
|
-
traits: ['elk', 'PU30'],
|
57
|
-
open: true },
|
181
|
+
catzy: { name: 'Catzy', date: '2018-12-31',
|
182
|
+
specialedition: {
|
183
|
+
limit: 10, ids: (1137653..1137662).to_a },
|
184
|
+
desc: 'Changpeng "CZ" Zhao - CEO of Binance - Top 10 Blockchain Influencer of the Year 2018 by CoinDesk'
|
185
|
+
},
|
186
|
+
purremyallaire: { name: 'Purremy Allaire', date: '2018-12-31',
|
187
|
+
specialedition: {
|
188
|
+
limit: 10, ids: (1137663..1137672).to_a },
|
189
|
+
desc: 'Jeremy Allaire - Top 10 Blockchain Influencer of the Year 2018 by CoinDesk'
|
190
|
+
},
|
191
|
+
genedough: { name: 'Gene Dough',
|
192
|
+
recipe: {
|
193
|
+
time: { start: '2018-12-23', end: '2019-01-07' }, count: 1376,
|
194
|
+
traits: ['hotcocoa', 'mittens', 'frosting'] }
|
195
|
+
},
|
196
|
+
pawrula: { name: 'Pawrula the Bright',
|
197
|
+
recipe: {
|
198
|
+
time: { start: '2018-12-15', end: '2019-11-30' },
|
199
|
+
traits: ['camo', 'butterscotch', 'fox'] },
|
200
|
+
desc: 'Neha Narula - Director of the Digital Currency Initiative at the MIT Media Lab'
|
201
|
+
},
|
58
202
|
|
59
203
|
## November
|
60
|
-
draco: { name: 'Draco',
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
204
|
+
draco: { name: 'Draco',
|
205
|
+
recipe: {
|
206
|
+
time: { start: '2018-11-30', end: '2018-12-07' }, count: 1115,
|
207
|
+
traits: ['toyger', 'martian', 'peppermint', 'dragonwings', 'SE03'] }
|
208
|
+
},
|
209
|
+
dracothemagnificent: { name: 'Draco The Magnificent', date: '2018-11-27',
|
210
|
+
exclusive: {
|
211
|
+
limit: 12, ids: (270..281).to_a }
|
212
|
+
},
|
213
|
+
bugcatv2: { name: 'Bug Cat V2', date: '2018-11-27',
|
214
|
+
exclusive: {
|
215
|
+
limit: 20, ids: (167..186).to_a },
|
216
|
+
desc: 'Bug Bounty II (Offers Contract) Kitty'
|
217
|
+
},
|
218
|
+
dracojunior: { name: 'Draco Junior',
|
219
|
+
recipe: {
|
220
|
+
time: { start: '2018-11-26', end: '2018-12-07' }, count: 1398,
|
221
|
+
traits: ['lynx', 'verdigris', 'dragontail', 'SE03']}
|
222
|
+
},
|
223
|
+
dreggo: { name: 'Dreggo',
|
224
|
+
recipe: {
|
225
|
+
time: { start: '2018-11-21', end: '2018-12-07' }, count: 3624,
|
226
|
+
traits: ['siberian', 'bananacream', 'SE03'] }
|
227
|
+
},
|
228
|
+
pickles: { name: 'Pickles', date: '2018-11-14',
|
229
|
+
recipe: {
|
230
|
+
limit: 303,
|
231
|
+
traits: ['lynx', 'martian', 'highsociety', 'emeraldgreen']}
|
232
|
+
},
|
233
|
+
lilbub: { name: 'Lil Bub Ub Bub (BUB)', date: '2018-11-13',
|
234
|
+
specialedition: {
|
235
|
+
limit: 468 }
|
236
|
+
},
|
73
237
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
traits: ['neckbeard',['PU24','PU25','PU26']]}, ## Purrstige: PU24 / PU25 / PU26
|
238
|
+
lilbubthemagicalspacecat: { name: 'Lil Bub Ub Bub (BUB) The Magical Space Cat', date: '2018-11-13',
|
239
|
+
exclusive: {
|
240
|
+
limit: 3, ids: [266,267,268]}
|
241
|
+
},
|
79
242
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
243
|
+
## October
|
244
|
+
dukecat: { name: 'Dukecat', date: '2018-10-18',
|
245
|
+
recipe: {
|
246
|
+
limit: 1366,
|
247
|
+
traits: ['cymric', 'periwinkle', 'simple', 'tongue']}
|
248
|
+
},
|
249
|
+
sheilapurren: { name: 'Sheila Purren', date: '2018-10-04',
|
250
|
+
recipe: {
|
251
|
+
limit: 1971,
|
252
|
+
traits: ['mauveover', 'icy', 'wingtips', 'fangtastic']},
|
253
|
+
desc: 'Sheila Warren Kitty-fied - Head of Blockchain and Distributed Ledger Technology at the World Economic Forum (WEF)'
|
254
|
+
},
|
84
255
|
|
85
256
|
## September
|
86
|
-
pawzilla: { name: 'Pawzilla', date: '2018-09-22',
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
257
|
+
pawzilla: { name: 'Pawzilla', date: '2018-09-22',
|
258
|
+
recipe: {
|
259
|
+
limit: 1185,
|
260
|
+
traits: ['jaguar', 'universe', 'atlantis', 'littlefoot']}
|
261
|
+
},
|
262
|
+
vulcat: { name: 'Vulcat', date: '2018-09-12',
|
263
|
+
exclusive: {
|
264
|
+
limit: 1, ids: [1000000] },
|
265
|
+
desc: '1 000 000th Kitty'
|
266
|
+
},
|
267
|
+
meowstro: { name: 'Meowstro', date: '2018-09-09',
|
268
|
+
recipe: {
|
269
|
+
limit: 1698,
|
270
|
+
traits: ['onyx', 'wowza', 'eclipse']}
|
271
|
+
},
|
272
|
+
atlas: { name: 'Atlas', date: '2018-09-07',
|
273
|
+
recipe: {
|
274
|
+
limit: 998,
|
275
|
+
traits: ['highlander', 'kittencream', 'swarley', 'topoftheworld']}
|
276
|
+
},
|
97
277
|
|
98
278
|
## August
|
99
|
-
vulcant: { name: 'Vulcant',
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
279
|
+
vulcant: { name: 'Vulcant', date: '2018-08-31',
|
280
|
+
exclusive: {
|
281
|
+
limit: 20, ids: [932914,937360,938299,946526,948925,949058,950617,952280,952981,956374,956908,958570,964205,967234,983046,984451,990713,992861,995745,997469] }
|
282
|
+
},
|
283
|
+
purrity: { name: 'Purrity', date: '2018-08-23',
|
284
|
+
recipe: {
|
285
|
+
limit: 5984,
|
286
|
+
traits: ['selkirk', 'chronic', 'cloudwhite', 'cheeky'] }
|
287
|
+
},
|
288
|
+
rabbidkitty: { name: 'Rabbid Kitty', date: '2018-08-23',
|
289
|
+
exclusive: {
|
290
|
+
limit: 6, ids: (260..265).to_a },
|
291
|
+
desc: 'Ubisoft Blockchain Heroes Hackathon'
|
292
|
+
},
|
293
|
+
squiddlesworth: { name: 'Squiddlesworth', date: '2018-08-16',
|
294
|
+
recipe: {
|
295
|
+
limit: 1510,
|
296
|
+
traits: ['sphynx', 'redvelvet', 'patrickstarfish', 'dragontail'] },
|
297
|
+
desc: 'Lava Squid Cat'
|
298
|
+
},
|
105
299
|
|
106
300
|
## July
|
107
|
-
purrspero: { name: 'Purrspero',
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
301
|
+
purrspero: { name: 'Purrspero', date: '2018-07-27',
|
302
|
+
recipe: {
|
303
|
+
limit: 4448,
|
304
|
+
traits: ['dippedcone', 'googly', 'royalpurple', 'beard']}
|
305
|
+
},
|
306
|
+
catbury: { name: 'Catbury', date: '2018-07-25',
|
307
|
+
recipe: {
|
308
|
+
limit: 76,
|
309
|
+
traits: ['ragdoll', 'crazy', 'chocolate', 'mintmacaron', 'yokel', 'WE02']}
|
310
|
+
},
|
311
|
+
honu: { name: 'Honu', date: '2018-07-20',
|
312
|
+
exclusive: {
|
313
|
+
limit: 1, ids: [251] },
|
314
|
+
desc: 'Kitties for Good - Save Turtle Habitats'
|
315
|
+
},
|
316
|
+
victoire: { name: 'Victoire', date: '2018-07-18',
|
317
|
+
exclusive: {
|
318
|
+
limit: 1, ids: [402] },
|
319
|
+
desc: 'France Football World Cup Champion'
|
320
|
+
},
|
321
|
+
lulu: { name: 'Lulu', date: '2018-07-13',
|
322
|
+
recipe: {
|
323
|
+
limit: 999,
|
324
|
+
traits: ['cyan', 'verdigris', 'turtleback', 'salty']}
|
325
|
+
},
|
326
|
+
boot: { name: 'Boot', date: '2018-07-05',
|
327
|
+
recipe: {
|
328
|
+
limit: 1440,
|
329
|
+
traits: ['ganado', 'wiley', 'cerulian', 'rollercoaster'],
|
330
|
+
variants: {
|
331
|
+
belgium: { name: 'Belgium', count: 97, traits: [['orangesoda','onyx']]}, ## Base Color: Orangesoda / Onyx
|
332
|
+
brazil: { name: 'Brazil', count: 195, traits: [['hintomint','bananacream','verdigris']]}, ## Base Color: Hintomint / Bananacream / Verdigris
|
333
|
+
croatia: { name: 'Croatia', count: 253, traits: [['cottoncandy','mauveover','oldlace']]}, ## Base Color: Cottoncandy / Mauveover / Oldlace
|
334
|
+
england: { name: 'England', count: 168, traits: [['greymatter','martian']]}, ## Base Color: Greymatter / Martian
|
335
|
+
france: { name: 'France', count: 317, traits: [['harbourfog','cinderella','lavender']]}, ## Base Color: Harbourfog / Cinderella / Lavender
|
336
|
+
russia: { name: 'Russia', count: 94, traits: [['shadowgrey','salmon','cloudwhite']]}, ## Base Color: Shadowgrey / Salmon/ Cloudwhite
|
337
|
+
sweden: { name: 'Sweden', count: 123, traits: [['brownies','dragonfruit','redvelvet']]}, ## Base Color: Brownies / Dragonfruit / Redvelvet
|
338
|
+
uruguay: { name: 'Uruguay', count: 193, traits: [['aquamarine','nachocheez','koala']]}, ## Base Color: Aquamarine / Nachocheez / Koala
|
339
|
+
}},
|
340
|
+
desc: 'Football World Cup',
|
127
341
|
},
|
128
342
|
## note: boot - different variants for world cup teams
|
129
343
|
## Although there are 8 unique Fancies, they're actually each a variant on the same Fancy - Boot.
|
130
344
|
## Their colours are different, and you can collect all 8 as a set
|
131
345
|
|
132
346
|
## June
|
133
|
-
raspoutine: { name: 'Raspoutine',
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
347
|
+
raspoutine: { name: 'Raspoutine', date: '2018-06-28',
|
348
|
+
recipe: {
|
349
|
+
limit: 1867,
|
350
|
+
traits: ['buzzed', 'nachocheez', 'sandalwood', 'belch']}
|
351
|
+
},
|
352
|
+
furlin: { name: 'Furlin', date: '2018-06-26',
|
353
|
+
exclusive: {
|
354
|
+
limit: 52, ids: (115..126).to_a + (128..166).to_a }
|
355
|
+
},
|
356
|
+
kittypride: { name: 'Kitty Pride', date: '2018-06-21',
|
357
|
+
recipe: {
|
358
|
+
limit: 1316,
|
359
|
+
traits: ['fabulous','cinderella','garnet']}
|
360
|
+
},
|
361
|
+
furrmingo: { name: 'Furrmingo', date: '2018-06-14',
|
362
|
+
recipe: {
|
363
|
+
limit: 333,
|
364
|
+
traits: ['bobtail', 'egyptiankohl', 'flamingo', 'whixtensions']}
|
365
|
+
},
|
140
366
|
|
141
367
|
## May
|
142
|
-
page: { name: 'Page',
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
368
|
+
page: { name: 'Page', date: '2018-05-31',
|
369
|
+
recipe: {
|
370
|
+
limit: 50_000,
|
371
|
+
traits: ['rascal', 'peach', 'wasntme' ]}
|
372
|
+
},
|
373
|
+
"schrödingerscat": { name: "Schrödinger's Cat", date: '2018-05-20',
|
374
|
+
recipe: {
|
375
|
+
limit: 73,
|
376
|
+
traits: ['forgetmenot','tinybox','PU20','SE25']}
|
377
|
+
},
|
378
|
+
chatplongeur: { name: 'Chat Plongeur', date: '2018-05-19',
|
379
|
+
recipe: {
|
380
|
+
limit: 1910,
|
381
|
+
traits: ['aquamarine', 'skyblue', 'seafoam'] }
|
382
|
+
},
|
383
|
+
docpurr: { name: 'Doc Purr', date: '2018-05-16',
|
384
|
+
recipe: {
|
385
|
+
limit: 250,
|
386
|
+
traits: ['persian','spock','raisedbrow','violet','tongue'] }
|
387
|
+
},
|
388
|
+
celestialcyberdimension: { name: 'Celestial Cyber Dimension', date: '2018-05-12',
|
389
|
+
exclusive: {
|
390
|
+
limit: 1, ids: [127] }
|
391
|
+
},
|
392
|
+
swish: { name: 'Swish', date: '2018-05-08',
|
393
|
+
recipe: {
|
394
|
+
limit: 2880,
|
395
|
+
traits: ['norwegianforest', 'luckystripe', 'thicccbrowz', 'orangesoda'] }
|
396
|
+
},
|
153
397
|
|
154
398
|
## April
|
155
|
-
flutterbee: { name: 'Flutterbee', date: '2018-04-28',
|
156
|
-
|
157
|
-
|
158
|
-
|
399
|
+
flutterbee: { name: 'Flutterbee', date: '2018-04-28',
|
400
|
+
recipe: {
|
401
|
+
limit: 275,
|
402
|
+
traits: ['cloudwhite','jaguar','lemonade','azaleablush','WE14'] }
|
403
|
+
},
|
404
|
+
vernon: { name: 'Vernon', date: '2018-04-16',
|
405
|
+
recipe: {
|
406
|
+
limit: 320,
|
407
|
+
traits: ['amur','fabulous','cottoncandy','springcrocus','belleblue','soserious']},
|
408
|
+
desc: 'Spring Equinox Kitty' ## first, see https://www.cryptokitties.co/kitty/696398
|
409
|
+
},
|
159
410
|
|
160
411
|
## March
|
161
|
-
berry: { name: 'Berry',
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
412
|
+
berry: { name: 'Berry', date: '2018-03-16',
|
413
|
+
recipe: {
|
414
|
+
limit: 200,
|
415
|
+
traits: ['dragonfruit','thunderstruck','emeraldgreen','apricot','simple'] }
|
416
|
+
},
|
417
|
+
pussforprogress: { name: 'Puss For Progress', date: '2018-03-08',
|
418
|
+
recipe: {
|
419
|
+
limit: 1920,
|
420
|
+
traits: ['himalayan','peach','safetyvest','gerbil'] },
|
421
|
+
desc: "Women's Day"
|
422
|
+
},
|
423
|
+
fortunecat: { name: 'Fortune Cat', name_cn: '红包喵', date: '2018-03-08',
|
424
|
+
recipe: {
|
425
|
+
limit: 888,
|
426
|
+
traits: ['harbourfog','calicool','swampgreen','sapphire','beard']}
|
427
|
+
}, ## todo: check date for china launch specials!!!
|
428
|
+
goldendragoncat: { name: 'Golden Dragon Cat', name_cn: '帝龙喵', date: '2018-03-08',
|
429
|
+
exclusive: {
|
430
|
+
limit: 1, ids: [888] },
|
431
|
+
desc: 'China Launch'
|
432
|
+
}, ## todo: check date for china launch specials!!!
|
433
|
+
goldendogcat: { name: 'Golden Dog Cat', name_cn: '旺财汪', date: '2018-03-08',
|
434
|
+
exclusive: {
|
435
|
+
limit: 11, ids: [1802,1803,1805,1806,1808,1809,1812,1816]+(1825..1828).to_a },
|
436
|
+
desc: 'China Launch'
|
437
|
+
}, ## todo: check date for china launch specials!!!
|
438
|
+
liondance: { name: 'Lion Dance', name_cn: '咚咚锵', date: '2018-03-07',
|
439
|
+
recipe: {
|
440
|
+
limit: 888, overflow: 1, ## use count 889 ?? - why? why not?
|
441
|
+
traits: ['manx','royalblue','googly','starstruck']}
|
442
|
+
},
|
443
|
+
dogcat: { name: 'Dog Cat', name_cn: '汪星爷', date: '2018-03-02',
|
444
|
+
recipe: {
|
445
|
+
limit: 88,
|
446
|
+
traits: ['tigerpunk','periwinkle','barkbrown','sweetmeloncakes','yokel']},
|
447
|
+
desc: 'Year of the Dog (Greater China)'
|
448
|
+
},
|
449
|
+
knightkitty: { name: 'Knight Kitty', date: '2018-03-01',
|
450
|
+
exclusive: {
|
451
|
+
limit: 11, ids: (104..114).to_a }
|
452
|
+
},
|
174
453
|
|
175
454
|
## February
|
176
|
-
tabby: { name: 'Tabby',
|
177
|
-
|
178
|
-
|
179
|
-
traits: ['
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
455
|
+
tabby: { name: 'Tabby', date: '2018-02-26',
|
456
|
+
recipe: {
|
457
|
+
limit: 250,
|
458
|
+
traits: ['ragamuffin','morningglory','otaku','cheeky'] }
|
459
|
+
},
|
460
|
+
yuricatsuki: { name: 'Yuri Catsuki', date: '2018-02-20',
|
461
|
+
recipe: {
|
462
|
+
limit: 250,
|
463
|
+
traits: ['cymric','tiger','neckbeard','elk'] },
|
464
|
+
desc: 'Figure Scating Kitty - Winter Olympics (Korea)'
|
465
|
+
},
|
466
|
+
misterpurrfect: { name: 'Mister Purrfect', date: '2018-02-14',
|
467
|
+
recipe: {
|
468
|
+
limit: 1000,
|
469
|
+
traits: ['chocolate','baddate','strawberry','wuvme'] },
|
470
|
+
desc: "Valentine's Day"
|
471
|
+
},
|
472
|
+
earnie: { name: 'Earnie', date: '2018-02-13',
|
473
|
+
recipe: {
|
474
|
+
limit: 500,
|
475
|
+
traits: ['birman','orangesoda','hotrod','grim'] },
|
476
|
+
desc: 'Earn.com - Golden Kitty Award (Product Hunt)'
|
477
|
+
},
|
478
|
+
cathena: { name: 'Cathena', date: '2018-02-06',
|
479
|
+
exclusive: {
|
480
|
+
limit: 1, ids: [500000] },
|
481
|
+
desc: '500 000th Kitty'
|
482
|
+
},
|
185
483
|
|
186
484
|
## January
|
187
|
-
'momo-chan': { name: 'Momo-chan',
|
188
|
-
|
189
|
-
|
190
|
-
traits: ['onyx','henna','wolfgrey','
|
191
|
-
|
192
|
-
|
485
|
+
'momo-chan': { name: 'Momo-chan', date: '2018-01-31',
|
486
|
+
recipe: {
|
487
|
+
limit: 500,
|
488
|
+
traits: ['onyx','henna','bloodred','wolfgrey','sass'] },
|
489
|
+
desc: 'Ninja Kitty'
|
490
|
+
},
|
491
|
+
negato: { name: 'Negato', date: '2018-01-29',
|
492
|
+
recipe: {
|
493
|
+
limit: 500,
|
494
|
+
traits: ['onyx','henna','wolfgrey','slyboots'] },
|
495
|
+
desc: 'Ninja Kitty'
|
496
|
+
},
|
497
|
+
stitches: { name: 'Stitches', date: '2018-01-10',
|
498
|
+
recipe: {
|
499
|
+
limit: 500,
|
500
|
+
traits: ['hintomint','seafoam','swampgreen','saycheese'] },
|
501
|
+
desc: 'Zombie Kitty'
|
502
|
+
},
|
193
503
|
|
194
504
|
## 2017
|
195
505
|
## December
|
196
|
-
phuziqaat: { name: 'Phu Ziqaat',
|
197
|
-
|
198
|
-
|
199
|
-
traits: ['
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
506
|
+
phuziqaat: { name: 'Phu Ziqaat', date: '2017-12-31',
|
507
|
+
recipe: {
|
508
|
+
limit: 1000,
|
509
|
+
traits: ['chartreux','spock','alien','pouty'] },
|
510
|
+
desc: 'Alien Kitty'
|
511
|
+
},
|
512
|
+
santaclaws: { name: 'Santa Claws', date: '2017-12-12',
|
513
|
+
recipe: {
|
514
|
+
limit: 1000, overflow: 2,
|
515
|
+
traits: ['cloudwhite','scarlet','beard','wild_d'] },
|
516
|
+
desc: 'Ho Ho Ho - Santa Claus Kitty'
|
517
|
+
},
|
518
|
+
mistletoe: { name: 'Mistletoe', date: '2017-12-09',
|
519
|
+
recipe: {
|
520
|
+
limit: 2000,
|
521
|
+
traits: ['oldlace','crazy','gerbil'] },
|
522
|
+
desc: "XMas Kitty"
|
523
|
+
},
|
524
|
+
dracula: { name: 'Dracula', date: '2017-12-01',
|
525
|
+
recipe: {
|
526
|
+
limit: 2000,
|
527
|
+
traits: ['laperm','spock','strawberry','WE01'] }
|
528
|
+
},
|
204
529
|
|
205
530
|
## November
|
206
|
-
ducat: { name: 'Du Cat',
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
531
|
+
ducat: { name: 'Du Cat', date: '2017-11-29',
|
532
|
+
recipe: {
|
533
|
+
limit: 10_000,
|
534
|
+
traits: ['cymric','tongue']}
|
535
|
+
},
|
536
|
+
genesis: { name: 'Genesis', date: '2017-11-24',
|
537
|
+
exclusive: {
|
538
|
+
limit: 1, ids: [1] },
|
539
|
+
desc: '1st Kitty'
|
540
|
+
},
|
541
|
+
shipcat: { name: 'Ship Cat', date: '2017-11-23',
|
542
|
+
recipe: {
|
543
|
+
limit: 2000,
|
544
|
+
traits: ['sphynx','orangesoda','luckystripe','crazy']}
|
545
|
+
},
|
546
|
+
bugcat: { name: 'Bug Cat', date: '2017-11-23',
|
547
|
+
exclusive: {
|
548
|
+
limit: 3, ids: [101,102,103] },
|
549
|
+
desc: 'Bug Bounty Kitty' }
|
212
550
|
}
|