Top Level Namespace

Defined Under Namespace

Classes: Cattribute, Fancy, Gene, Genome, Kittyverse, Recipe, Trait, TraitType, Traits

Constant Summary collapse

MUTATION_TIER =

Tier 0 (Base) (1-g)

Tier 1 (Mewtation I)    (h-p)
Tier 2 (Mewtation II)   (q-t)
Tier 3 (Mewtation III)  (u,v)
Tier 4 (Mewtation IIII) (w)      # note: use IIII instead of IV
{    ## todo/fix: use an algo to calculate - why? why not?
  '1' => 0,
  '2' => 0,
  '3' => 0,
  '4' => 0,
  '5' => 0,
  '6' => 0,
  '7' => 0,
  '8' => 0,
  '9' => 0,
  'a' => 0,
  'b' => 0,
  'c' => 0,
  'd' => 0,
  'e' => 0,
  'f' => 0,
  'g' => 0,
  'h' => 1,
  'i' => 1,
  'j' => 1,
  'k' => 1,
  'm' => 1,
  'n' => 1,
  'o' => 1,
  'p' => 1,
  'q' => 2,
  'r' => 2,
  's' => 2,
  't' => 2,
  'u' => 3,
  'v' => 3,
  'w' => 4,
  'x' => nil
}
MUTATION_TIER_ROMAN =

(quick ā€˜nā€™ dirty) kai to mutation/mewtation tier level in roman numerals (I,II,III,IIII) - as strings (and nil)

{
  '1' => '',
  '2' => '',
  '3' => '',
  '4' => '',
  '5' => '',
  '6' => '',
  '7' => '',
  '8' => '',
  '9' => '',
  'a' => '',
  'b' => '',
  'c' => '',
  'd' => '',
  'e' => '',
  'f' => '',
  'g' => '',
  'h' => 'I',
  'i' => 'I',
  'j' => 'I',
  'k' => 'I',
  'm' => 'I',
  'n' => 'I',
  'o' => 'I',
  'p' => 'I',
  'q' => 'II',
  'r' => 'II',
  's' => 'II',
  't' => 'II',
  'u' => 'III',
  'v' => 'III',
  'w' => 'IIII',
  'x' => ''          ## Use nil and NOT empty string "" - why? why not?
}
MUTATION_PAIR =
{
  '1' => '',   ## todo: use nil for "" - why? why not?
  '2' => '',
  '3' => '',
  '4' => '',
  '5' => '',
  '6' => '',
  '7' => '',
  '8' => '',
  '9' => '',
  'a' => '',
  'b' => '',
  'c' => '',
  'd' => '',
  'e' => '',
  'f' => '',
  'g' => '',
  'h' => '1+2',
  'i' => '3+4',
  'j' => '5+6',
  'k' => '7+8',
  'm' => '9+a',
  'n' => 'b+c',
  'o' => 'd+e',
  'p' => 'f+g',
  'q' => 'h+i',
  'r' => 'j+k',
  's' => 'm+n',
  't' => 'o+p',
  'u' => 'q+r',
  'v' => 's+t',
  'w' => 'u+v',
  'x' => ''
}
MEWTATION_TIER =

add alias(es)

MUTATION_TIER
MEWTATION_TIER_ROMAN =
MUTATION_TIER_ROMAN
MEWTATION_PAIR =
MUTATION_PAIR
COLORS_BODY =

31 colors body

{
 meowgarine:      "#fcfc95",
 cornflower:      "#7592fc",
 icicle:          "#c5e2ff",
 hotcocoa:        "#5e4a47",
 firstblush:      "#fcd0f8",
 tundra:          "#dbccbf",
 glacier:         "#ccffff",
 hyacinth:        "#a45de2",
 shamrock:        "#50c878",
 shadowgrey:      "#b1b1be",
 salmon:          "#f4a792",
 orangesoda:      "#f7bc56",
 cottoncandy:     "#ecd1eb",
 mauveover:       "#ded0ee",
 aquamarine:      "#add5d2",
 nachocheez:      "#fcda86",
 harbourfog:      "#afb4d5",
 cinderella:      "#5ab0f1",
 greymatter:      "#d1dadf",
 brownies:        "#b78662",
 dragonfruit:     "#ec79f2",
 hintomint:       "#d0ead2",
 bananacream:     "#f8f8e0",
 cloudwhite:      "#ffffff",
 oldlace:         "#ffebe9",
 koala:           "#85828a",
 lavender:        "#bc99ff",
 redvelvet:       "#f77272",
 verdigris:       "#73ffc3",
 onyx:            "#42414c",
 martian:         "#a4ff6f"
}
COLORS_EYES =

31 colors eyes

{
 olive:           "#729100",
 pinefresh:       "#177a25",
 oasis:           "#ccffef",
 dioscuri:        "#0ba09c",
 isotope:         "#e4ff73",
 bridesmaid:      "#ffc2df",
 downbythebay:    "#83b293",
 gemini:          "#ffd150",
 kaleidoscope:    "#bcba5e",
 thundergrey:     "#828282",
 gold:            "#fcdf35",
 topaz:           "#0ba09c",
 mintgreen:       "#43edac",
 sizzurp:         "#7c40ff",
 chestnut:        "#a56429",
 strawberry:      "#ef4b62",
 sapphire:        "#4c7aef",
 forgetmenot:     "#4eb4f9",
 dahlia:          "#b8bdff",
 coralsunrise:    "#ff9088",
 doridnudibranch: "#fa9fff",
 parakeet:        "#49b749",
 cyan:            "#45f0f4",
 pumpkin:         "#ffa039",
 limegreen:       "#aef72f",
 bubblegum:       "#ef52d1",
 twilightsparkle: "#ba8aff",
 palejade:        "#c3d8cf",
 eclipse:         "#484c5b",
 babypuke:        "#bcba5e",
 autumnmoon:      "#ffe8bb"
}
COLORS_SECONDARY =

31 colors secondary

{
 cyborg:          "#959cae",
 ooze:            "#daea31",
 peppermint:      "#00a86b",
 inflatablepool:  "#4fb9c5",
 prairierose:     "#e0115f",
 springcrocus:    "#ab7fef",
 egyptiankohl:    "#4a4855",
 poisonberry:     "#773c5f",
 lilac:           "#e5e5f9",
 apricot:         "#f4a45b",
 royalpurple:     "#cf5be8",
 padparadscha:    "#ffd5c7",
 swampgreen:      "#44e192",
 violet:          "#765be8",
 scarlet:         "#ea5f5a",
 barkbrown:       "#886662",
 coffee:          "#756650",
 lemonade:        "#ffef85",
 chocolate:       "#c47e33",
 butterscotch:    "#ffce6c",
 safetyvest:      "#b0f852",
 turtleback:      "#387573",
 rosequartz:      "#ffaefb",
 wolfgrey:        "#737184",
 cerulian:        "#385877",
 skyblue:         "#83d5ff",
 garnet:          "#f4679a",
 universe:        "#494981",
 royalblue:       "#5b6ee8",
 mertail:         "#36f2bc",
 pearl:           "#fff8fa"
}
COLORS_TERTIARY =

31 colors tertiary

{
 hanauma:         "#7accb5",
 belleblue:       "#afd0f7",
 peach:           "#f9cfad",
 granitegrey:     "#b1aeb9",
 kittencream:     "#f7ebda",
 emeraldgreen:    "#8be179",
 bloodred:        "#ff7a7a",
 daffodil:        "#fff09f",
 sandalwood:      "#b8916c",
 icy:             "#eef8f8",
 flamingo:        "#ec87ba",
 seafoam:         "#9eeec5",
 azaleablush:     "#ffccd8",
 morningglory:    "#887cff",
 purplehaze:      "#dad6e1",
 missmuffett:     "#f4b3f0",
 summerbonnet:    "#cbb0ff",
 mallowflower:    "#c170b1",
 fallspice:       "#ff9331",
 dreamboat:       "#fd6cd5",
 periwinkle:      "#cacaff",
 frosting:        "#ffdce6",
 patrickstarfish: "#ffad97",
 mintmacaron:     "#b0f1f4",
 shale:           "#585666",
 cashewmilk:      "#f9efef",
 buttercup:       "#f4e65d",
 cobalt:          "#5262db",
 sully:           "#70f9f9",
 kalahari:        "#ffcf8a",
 atlantis:        "#2a7f96"
}
COLORS =
{}.merge( COLORS_BODY )
.merge( COLORS_EYES )
.merge( COLORS_SECONDARY )
.merge( COLORS_TERTIARY )
TRAITS =

ordered by gene position (0,1,3.4,5,ā€¦ etc.)

12 traits (4 genes each)
{
  body: {
    genes: '0-3',
    name:  'Fur',  code: 'FU',
    kai: {
    '1' => 'Savannah',
    '2' => 'Selkirk',
    '3' => 'Chantilly',
    '4' => 'Birman',
    '5' => 'Koladiviya',
    '6' => 'Bobtail',
    '7' => 'Manul',
    '8' => 'Pixiebob',
    '9' => 'Siberian',
    'a' => 'Cymric',
    'b' => 'Chartreux',
    'c' => 'Himalayan',
    'd' => 'Munchkin',
    'e' => 'Sphynx',
    'f' => 'Ragamuffin',
    'g' => 'Ragdoll',
    'h' => 'Norwegianforest',
    'i' => 'Mekong',
    'j' => 'Highlander',
    'k' => 'Balinese',
    'm' => 'Lynx',
    'n' => 'Mainecoon',
    'o' => 'Laperm',
    'p' => 'Persian',
    'q' => 'Fox',
    'r' => 'Kurilian',
    's' => 'Toyger',
    't' => 'Manx',
    'u' => 'Lykoi',
    'v' => 'Burmilla',
    'w' => 'Liger',
    'x' => ''
    }
  },
  pattern: {
    genes: '4-7',
    name: 'Pattern', code: 'PA',
    kai: {
    '1' => 'Vigilante',
    '2' => 'Tiger',
    '3' => 'Rascal',
    '4' => 'Ganado',
    '5' => 'Leopard',
    '6' => 'Camo',
    '7' => 'Rorschach',
    '8' => 'Spangled',
    '9' => 'Calicool',
    'a' => 'Luckystripe',
    'b' => 'Amur',
    'c' => 'Jaguar',
    'd' => 'Spock',
    'e' => 'Mittens',
    'f' => 'Totesbasic 1',   ## use totesbasic_f or totesbasic (14) - why? why not?
    'g' => 'Totesbasic 2',   ## use totesbasic_g or totesbasic (15)
    'h' => 'Splat',
    'i' => 'Thunderstruck',
    'j' => 'Dippedcone',
    'k' => 'Highsociety',
    'm' => 'Tigerpunk',
    'n' => 'Henna',
    'o' => 'Arcreactor',
    'p' => 'Totesbasic 3',   ## use totesbasic_p or totesbasic (23) - why? why not?
    'q' => 'Scorpius',
    'r' => 'Razzledazzle',
    's' => 'Hotrod',
    't' => 'Allyouneed',
    'u' => 'Avatar',
    'v' => 'Gyre',
    'w' => 'Moonrise',
    'x' => ''
    }
  },
  coloreyes: {
    genes: '8-11',
    name:  'Eye Color', code: 'EC',
    kai: {
    '1' => 'Thundergrey',
    '2' => 'Gold',
    '3' => 'Topaz',
    '4' => 'Mintgreen',
    '5' => 'Isotope',
    '6' => 'Sizzurp',
    '7' => 'Chestnut',
    '8' => 'Strawberry',
    '9' => 'Sapphire',
    'a' => 'Forgetmenot',
    'b' => 'Dahlia',
    'c' => 'Coralsunrise',
    'd' => 'Olive',
    'e' => 'Doridnudibranch',
    'f' => 'Parakeet',
    'g' => 'Cyan',
    'h' => 'Pumpkin',
    'i' => 'Limegreen',
    'j' => 'Bridesmaid',
    'k' => 'Bubblegum',
    'm' => 'Twilightsparkle',
    'n' => 'Palejade',
    'o' => 'Pinefresh',
    'p' => 'Eclipse',
    'q' => 'Babypuke',
    'r' => 'Downbythebay',
    's' => 'Autumnmoon',
    't' => 'Oasis',
    'u' => 'Gemini',
    'v' => 'Dioscuri',
    'w' => 'Kaleidoscope',
    'x' => ''
    }
  },
  eyes: {
    genes: '12-15',
    name: 'Eye Shape', code: 'ES',     ##  eye type
    kai: {
    '1' => 'Swarley',
    '2' => 'Wonky',
    '3' => 'Serpent',
    '4' => 'Googly',
    '5' => 'Otaku',
    '6' => 'Simple',
    '7' => 'Crazy',
    '8' => 'Thicccbrowz',
    '9' => 'Caffeine',
    'a' => 'Wowza',
    'b' => 'Baddate',
    'c' => 'Asif',
    'd' => 'Chronic',
    'e' => 'Slyboots',
    'f' => 'Wiley',
    'g' => 'Stunned',
    'h' => 'Chameleon',
    'i' => 'Alien',
    'j' => 'Fabulous',
    'k' => 'Raisedbrow',
    'm' => 'Tendertears',
    'n' => 'Hacker',
    'o' => 'Sass',
    'p' => 'Sweetmeloncakes',
    'q' => 'Oceanid',
    'r' => 'Wingtips',
    's' => 'Firedup',
    't' => 'Buzzed',
    'u' => 'Bornwithit',
    'v' => 'Candyshoppe',
    'w' => 'Drama',
    'x' => ''
    }
  },
  colorprimary: {
    genes: '16-19',
    name: 'Base Color', code: 'BC',   ##  color1 / colorprimary / body color
    kai: {
    '1' => 'Shadowgrey',
    '2' => 'Salmon',
    '3' => 'Meowgarine',
    '4' => 'Orangesoda',
    '5' => 'Cottoncandy',
    '6' => 'Mauveover',
    '7' => 'Aquamarine',
    '8' => 'Nachocheez',
    '9' => 'Harbourfog',
    'a' => 'Cinderella',
    'b' => 'Greymatter',
    'c' => 'Tundra',
    'd' => 'Brownies',
    'e' => 'Dragonfruit',
    'f' => 'Hintomint',
    'g' => 'Bananacream',
    'h' => 'Cloudwhite',
    'i' => 'Cornflower',
    'j' => 'Oldlace',
    'k' => 'Koala',
    'm' => 'Lavender',
    'n' => 'Glacier',
    'o' => 'Redvelvet',
    'p' => 'Verdigris',
    'q' => 'Icicle',
    'r' => 'Onyx',
    's' => 'Hyacinth',
    't' => 'Martian',
    'u' => 'Hotcocoa',
    'v' => 'Shamrock',
    'w' => 'Firstblush',
    'x' => ''
    }
  },
  colorsecondary: {
    genes: '20-23',
    name:  'Highlight Color', code: 'HC',    ## color2 / colorsecondary / sec color / pattern color
    kai: {
    '1' => 'Cyborg',
    '2' => 'Springcrocus',
    '3' => 'Egyptiankohl',
    '4' => 'Poisonberry',
    '5' => 'Lilac',
    '6' => 'Apricot',
    '7' => 'Royalpurple',
    '8' => 'Padparadscha',
    '9' => 'Swampgreen',
    'a' => 'Violet',
    'b' => 'Scarlet',
    'c' => 'Barkbrown',
    'd' => 'Coffee',
    'e' => 'Lemonade',
    'f' => 'Chocolate',
    'g' => 'Butterscotch',
    'h' => 'Ooze',
    'i' => 'Safetyvest',
    'j' => 'Turtleback',
    'k' => 'Rosequartz',
    'm' => 'Wolfgrey',
    'n' => 'Cerulian',
    'o' => 'Skyblue',
    'p' => 'Garnet',
    'q' => 'Peppermint',
    'r' => 'Universe',
    's' => 'Royalblue',
    't' => 'Mertail',
    'u' => 'Inflatablepool',
    'v' => 'Pearl',
    'w' => 'Prairierose',
    'x' => ''
    }
  },
  colortertiary: {
    genes: '24-27',
    name: 'Accent Color', code: 'AC',   ## color3 / colortertiary
    kai: {
    '1' => 'Belleblue',
    '2' => 'Sandalwood',
    '3' => 'Peach',
    '4' => 'Icy',
    '5' => 'Granitegrey',
    '6' => 'Cashewmilk',
    '7' => 'Kittencream',
    '8' => 'Emeraldgreen',
    '9' => 'Kalahari',
    'a' => 'Shale',
    'b' => 'Purplehaze',
    'c' => 'Hanauma',
    'd' => 'Azaleablush',
    'e' => 'Missmuffett',
    'f' => 'Morningglory',
    'g' => 'Frosting',
    'h' => 'Daffodil',
    'i' => 'Flamingo',
    'j' => 'Buttercup',
    'k' => 'Bloodred',
    'm' => 'Atlantis',
    'n' => 'Summerbonnet',
    'o' => 'Periwinkle',
    'p' => 'Patrickstarfish',
    'q' => 'Seafoam',
    'r' => 'Cobalt',
    's' => 'Mallowflower',
    't' => 'Mintmacaron',
    'u' => 'Sully',
    'v' => 'Fallspice',
    'w' => 'Dreamboat',
    'x' => ''
    }
  },
  wild: {
    genes: '28-31',
    name: 'Wild Element', code: 'WE',
    kai: {
    'h' => 'Littlefoot',
    'i' => 'Elk',
    'j' => 'Ducky',
    'k' => 'Trioculus',
    'm' => 'Daemonwings',
    'n' => 'Featherbrain',
    'o' => 'Flapflap',
    'p' => 'Daemonhorns',
    'q' => 'Dragontail',
    'r' => 'Aflutter',
    's' => 'Foghornpawhorn',
    't' => 'Unicorn',
    'u' => 'Dragonwings',
    'v' => 'Alicorn',
    'w' => 'Wyrm',
    'x' => ''
    }
  },
  mouth: {
    genes: '32-35',
    name:  'Mouth', code: 'MO',
    kai: {
    '1' => 'Whixtensions',
    '2' => 'Wasntme',
    '3' => 'Wuvme',
    '4' => 'Gerbil',
    '5' => 'Confuzzled',
    '6' => 'Impish',
    '7' => 'Belch',
    '8' => 'Rollercoaster',
    '9' => 'Beard',
    'a' => 'Pouty',
    'b' => 'Saycheese',
    'c' => 'Grim',
    'd' => 'Fangtastic',
    'e' => 'Moue',
    'f' => 'Happygokitty',
    'g' => 'Soserious',
    'h' => 'Cheeky',
    'i' => 'Starstruck',
    'j' => 'Samwise',
    'k' => 'Ruhroh',
    'm' => 'Dali',
    'n' => 'Grimace',
    'o' => 'Majestic',
    'p' => 'Tongue',
    'q' => 'Yokel',
    'r' => 'Topoftheworld',
    's' => 'Neckbeard',
    't' => 'Satiated',
    'u' => 'Walrus',
    'v' => 'Struck',
    'w' => 'Delite',
    'x' => ''
   }
  },
  environment: {
      genes: '36-39',
      name: 'Environment', code: 'EN',
      kai: {
        'h' => 'Salty',
        'i' => 'Dune',
        'j' => 'Juju',
        'k' => 'Tinybox',
        'm' => 'Myparade',
        'n' => 'Finalfrontier',
        'o' => 'Metime',
        'p' => 'Drift',
        'q' => 'Secretgarden',
        'r' => 'Frozen',
        's' => 'Roadtogold',
        't' => 'Jacked',
        'u' => 'Floorislava',
        'v' => 'Prism',
        'w' => 'Junglebook',
        'x' => ''
      }
  },
  secret: {
      genes: '40-43',
      name: 'Secret Y Gene', code: 'SE',   ## todo: change to Y Gene or Y (see https://guide.cryptokitties.co/guide/cat-features/genes)
      kai: { }
  },
  prestige: {
      genes: '44-47',
      name: 'Purrstige', code: 'PU',
      kai: { }
      ##  prune, furball, duckduckcat, or thatsawrap - more like fancies (not really traits)
  }
}
ALT_TRAIT_TYPE_KEYS =

quick hack - map copycats keys to (internal) cryptokitties trait type keys

note: all keys are the same except:
{
  :color1    => :colorprimary,
  :color2    => :colorsecondary,
  :color3    => :colortertiary,
  :purrstige => :prestige,
  ## add :fur, etc. too - why? why not?
}
ALT_TRAIT_TYPE_NAMES =
{
  'body'             => 'fur',
  'eyes'             => 'eye shape',
  'eye type'         => 'eye shape',
  'body color'       => 'base color',
  'primary color'    => 'base color',
  'base colour'      => 'base color',       # british (canadian) spelling
  'secondary color'  => 'highlight color',
  'sec color'        => 'highlight color',
  'pattern color'    => 'highlight color',
  'highlight colour' => 'highlight color',  # british (canadian) spelling
  'tertiary color'   => 'accent color',
  'accent colour'    => 'accent color',     # british (canadian) spelling
  'wild'             => 'wild element',
  'secret'           => 'secret y gene',
  'prestige'         => 'purrstige',
}
ALT_TRAIT_NAMES =
{
  'totesbasic (14)' => 'totesbasic 1',
  'totesbasic (15)' => 'totesbasic 2',
  'totesbasic (23)' => 'totesbasic 3',
  'totesbasic_14'   => 'totesbasic 1',
  'totesbasic_15'   => 'totesbasic 2',
  'totesbasic_23'   => 'totesbasic 3',
  'totesbasic 14'   => 'totesbasic 1',
  'totesbasic 15'   => 'totesbasic 2',
  'totesbasic 23'   => 'totesbasic 3',

  'totesbasic (f)'  => 'totesbasic 1',
  'totesbasic (g)'  => 'totesbasic 2',
  'totesbasic (p)'  => 'totesbasic 3',
  'totesbasic f'    => 'totesbasic 1',
  'totesbasic g'    => 'totesbasic 2',
  'totesbasic p'    => 'totesbasic 3',
  'totesbasic_f'    => 'totesbasic 1',
  'totesbasic_g'    => 'totesbasic 2',
  'totesbasic_p'    => 'totesbasic 3',

  'totesbasic_1'    => 'totesbasic 1',
  'totesbasic_2'    => 'totesbasic 2',
  'totesbasic_3'    => 'totesbasic 3',
}
TOTESBASIC =

note: totesbasic has three traits / genes

['Totesbasic 1', 'Totesbasic 2', 'Totesbasic 3']
ANY_TOTESBASIC =
ALL_TOTESBASIC = TOTESBASIC
RECIPES =
{

######################
# 2021

#  16.01.21 - New fancy - Ellie
#    An Elephantastic Fancy!
#   The first of our next Fancy Family has been released into the wild...
#     Shiny-enabled Fancy, Ellie!
ellie: { name: 'Ellie', date: '2021-01-16',   ## 1st in Elephant series
                recipe: {
                  limit: 2500, count: 2,
                  traits: [ 'shadowgrey', 'flamingo', 'littlefoot', 'walrus'] },
       },

#################
# 2020
#  19.12.20 - New fancy - Dave    -- Winter Series
dave: { name: 'Dave',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-12-19', end: '?' }, count: 239,
             traits: ['norwegianforest', 'icy', 'frozen'] },
      },
#  19.12.20 - New fancy - Holly   -- Winter Series
holly: { name: 'Holly',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-12-19', end: '?' }, count: 261,
             traits: ['chartreux', 'wingtips', 'icy'] },
      },
#  06.12.20 - New fancy - CatFrost    -- Winter Series
#  The breeding window for the shiny-enabled Cat Frost ends at 9:50am PT on 12/19
catfrost: { name: 'Cat Frost',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-12-06', end: '2020-12-19' }, count: 288,
             traits: ['splat', 'wiley', 'icicle', 'icy'] },
      },

#  21.11.20 - New fancy - Abby
abby: { name: 'Abby',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-11-21', end: '?' }, count: 299,
             traits: ['ragamuffin', 'swarley', 'dune'] },
      },
#  08.11.20 - New fancy - Dart
dart: { name: 'Dart',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-11-08', end: '?' }, count: 370,
             traits: ['camo', 'oldlace', 'coffee', 'dune'] },
      },

#  30.09.20 - New fancy - Boris
boris: { name: 'Boris',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-09-30', end: '?' }, count: 667,
             traits: ['savannah', 'safetyvest', 'jacked'] },
      },

#  29.08.20 - New fancy - Mibbles
mibbles: { name: 'Mibbles',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-08-29', end: '?' }, count: 1301,
             traits: ['kurilian', 'impish'] },
      },
#  08.08.20 - New fancy - Reeves   - Wild West Series?
reeves: { name: 'Reeves',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-08-08', end: '?' }, count: 198,
             traits: ['rascal', 'swarley', 'daemonwings', 'dune'] },
      },
#  25.07.20 - New fancy - Pickett   - Wild West Series?
pickett: { name: 'Pickett',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-07-25', end: '?' }, count: 224,
             traits: ['swarley', 'lavender', 'dune'] },
      },


#  16.07.20 - New fancy - Joan
joan: { name: 'Joan',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-07-16', end: '?' }, count: 338,
             traits: ['lykoi', 'drama', 'glacier', 'springcrocus', 'prism'] },
      },
#  11.07.20 - New fancy - Starchild
starchild: { name: 'Starchild',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-07-11', end: '?' }, count: 367,
             traits: ['razzledazzle', 'drama', 'glacier', 'wolfgrey', 'prism'] },
      },

#  04.07.20 - New fancy - Travis
travis: { name: 'Travis',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-07-04', end: '?' }, count: 300,
             traits: ['firedup', 'wolfgrey', 'glacier', 'prism'] },
      },
#  04.07.20 - New fancy - Steel
steel: { name: 'Steel',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-07-04', end: '?' }, count: 436,
             traits: ['lykoi', 'hintomint', 'springcrocus', 'prism'] },
      },

#  20.06.20 - New fancy - Pawvril
pawvril: { name: 'Pawvril',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-06-20', end: '?' }, count: 700,
             traits: ['glacier', 'springcrocus', 'drama'] },
      },
#  20.06.20 - New fancy - Janis
janis: { name: 'Janis',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-06-20', end: '?' }, count: 929,
             traits: ['glacier', 'springcrocus', 'prism'] },
      },

#  06.06.20 - New fancy - Kunst
kunst: { name: 'Kunst',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-06-06', end: '?' }, count: 1001,
             traits: ['mainecoon', 'candyshoppe', 'royalblue'] },
      },
#  23.05.20 - New fancy - Kitiovanni
kitiovanni: { name: 'Kitiovanni',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-05-23', end: '?' }, count: 735,
             traits: ['manx', 'candyshoppe', 'firstblush', 'springcrocus', 'wyrm'] },
      },

#  09.05.20 - New fancy - Hunter
hunter: { name: 'Hunter',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-05-09', end: '?' }, count: 1140,
             traits: ['avatar', 'chameleon', 'tongue', 'dragontail'] },
      },

#  25.04.20 - New fancy - Vince
vince: { name: 'Vince',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-04-25', end: '?' }, count: 1424,
             traits: ['pixiebob', 'bananacream', 'daffodil', 'ooze'] },
      },
#  18.04.20 - New fancy - Zelig
zelig: { name: 'Zelig',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-04-18', end: '?' }, count: 505,
             traits: ['avatar', 'glacier', 'chameleon', 'happygokitty'] },
      },
#  11.04.20 - New fancy - Billie
billie: { name: 'Billie',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-04-11', end: '?' }, count: 1261,
             traits: ['pixiebob', 'cornflower', 'cerulian', 'mintmacaron'] },
        },

#  28.03.20 - New fancy - Bodhi
bodhi: { name: 'Bodhi',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-03-28', end: '?' }, count: 616,
             traits: ['avatar', 'chameleon', 'mertail', 'majestic'] },
        },
#  21.03.20 - New fancy - Cindi
cindi: { name: 'Cindi',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-03-21', end: '?' }, count: 897,
             traits: ['pixiebob', 'dragonfruit', 'prairierose', 'missmuffett'] },
        },
#  17.03.20 - New fancy - Potricia
potricia: { name: 'Potricia',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-03-17', end: '?' }, count: 665,
             traits: ['onyx', 'gold', 'mertail', 'roadtogold'] },
        },
#  07.03.20 - New fancy - Cai
cai: { name: 'Cai',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2020-03-07', end: '?' }, count: 526,
             traits: ['pixiebob', 'shamrock', 'mertail', 'hanauma'] },
        },
#  20.02.20 - New fancy - MissMatheson
missmatheson: { name: 'Miss Matheson',   ## todo/check: was time-limited?
               recipe: {
             time: { start: '2020-02-20', end: '?' }, count: 375,
             traits: ['liger','icicle','hacker','kittencream'] },
        },

#  15.02.20 - New fancy - Felis
felis: { name: 'Felis',   ## todo/check: was time-limited?
               recipe: {
             time: { start: '2020-02-15', end: '?' }, count: 1264,
             traits: ['mekong','moonrise','buzzed','finalfrontier'] },
        },
#  08.02.20 - New fancy - Meuwn
meuwn: { name: 'Meuwn',   ## todo/check: was time-limited?
               recipe: {
             time: { start: '2020-02-08', end: '?' }, count: 509,
             traits: ['razzledazzle', 'cloudwhite', 'springcrocus', 'finalfrontier'] },
        },

#  01.02.20 - New fancy - LilPurrfect
lilpurrfect: { name: 'Lil Purrfect',   ## todo/check: was time-limited?
               recipe: {
             time: { start: '2020-02-01', end: '?' }, count: 662,
             traits: ['allyouneed', 'garnet', 'flapflap'] },
        },

#  18.01.20 - New fancy - Mars
mars: { name: 'Mars',   ## todo/check: was time-limited?
               recipe: {
             time: { start: '2020-01-18', end: '?' }, count: 987,
             traits: ['hacker', 'prairierose', 'delite', 'finalfrontier'] },
        },

#  11.01.20 - New fancy - Cosmocat
cosmocat: { name: 'Cosmocat',   ## todo/check: was time-limited?
               recipe: {
             time: { start: '2020-01-11', end: '?' }, count: 688,
             traits: ['leopard', 'universe', 'topoftheworld', 'finalfrontier'] },
        },


pepito: { name: 'Pepito',
          recipe: {
             time: { start: '2020-01-01', end: '2020-01-07' }, count: 443,
             traits: ['ragdoll', 'simple', 'meowgarine', 'junglebook'] },
        },


chitten: { name: 'Chitten',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-12-21', end: '?' }, count: 829,
             traits: ['burmilla', 'calicool', 'hotcocoa', 'tongue'] },
        },

puuurrot: { name: 'Puuurrot',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-12-07', end: '?' }, count: 650,
             traits: ['chantilly', 'firstblush', 'skyblue', 'tinybox'] },
        },

shoopadoop: { name: 'Shoopadoop',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-11-23', end: '?' }, count: 1269,
             traits: ['martian', 'wyrm', 'SE03'] },
        },

bartholomeow: { name: 'Bartholomeow', date: '2019-11-12',  # Page's Warriors series
                recipe: {
                  limit: 10_000, count: 1269,
                  traits: ['burmilla', 'thunderstruck', 'salmon', 'flamingo', 'rosequartz', 'wasntme'] },
              },   ## add shiny-enabled?  see https://www.cryptokitties.co/blog/post/ooooooh-shiny

gwendolion: { name: 'Gwendolion', date: '2019-11-10',   # Page's Warriors series - starter fancy
                recipe: {
                  limit: 50_000, count: 297,
                  traits: ['burmilla', 'salmon', 'icy'] },
            },

catseye: { name: 'Catseye', date: '2019-11-09',
                recipe: {
                  limit: 30_000, count: 196,
                  traits: ['burmilla', 'rascal', 'salmon', 'flamingo'] },
         },

# Oct 26, 2019 - Skeletonne Fancy Cat is discovered
skeletonne: { name: 'Skeletonne',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-10-26', end: '?' }, count: 752,
             traits: ['sphynx', 'scorpius', 'dreamboat', 'satiated'] },
        },

# Oct 12, 2019 - Furmione Fancy Cat is discovered
furmione: { name: 'Furmione',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-10-12', end: '?' }, count: 832,
             traits: ['spangled', 'firstblush', ['poisonberry', 'mallowflower']] },
        },

# Sep 20, 2019 - Purrzival Fancy Cat is discovered
purrzival: { name: 'Purrzival the Paladin',  date: '2019-09-20',  ## todo/check: was time-limited too?
          recipe: {
             limit: 30_000, count: 316,
             traits: ['thunderstruck', 'rosequartz', 'peach', 'wasntme'] },
        },

# Sep 28, 2019 - Jack Fancy Cat is discovered
jack: { name: 'Jack',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-09-28', end: '?' }, count: 721,
             traits: ['savannah', 'shadowgrey', 'granitegrey', 'jacked'] },
        },

# Sep 14, 2019 - Pawderick the Lancer Fancy Cat is discovered
pawderick: { name: 'Pawderick the Lancer',  date: '2019-09-14',  ## todo/check: was time-limited too?
          recipe: {
             limit: 50_000, count: 665,
             traits: ['ganado', 'rosequartz', 'wasntme'] },
        },

# Aug 31, 2019 - Robin Fancy Cat is discovered
robin: { name: 'Robin',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-08-31', end: '?' }, count: 1837,
             traits: ['stunned', 'meowgarine', 'kittencream', 'featherbrain'] },
        },

# Aug 17, 2019 - Kitty Formerly Known as Prince Fancy Cat is discovered
kittyformerlyknownasprince: { name: 'Kitty Formerly Known As Prince',   ## todo/check: was time-limited?
          recipe: {
             time: { start: '2019-08-17', end: '?' }, count: 503,
             traits: ['leopard', 'tendertears', 'royalblue', 'pouty'] },
        },

  # Aug 3, 2019 - DJ Meowlody Fancy Cat is discovered
  djmeowlody: { name: 'DJ Meowlody',
                recipe: {
                   time: { start: '2019-08-03', end: '2019-11-30' }, count: 155,
                   traits: ['happygokitty', 'ragdoll', 'tigerpunk', 'oceanid'] },
              },

  # Jul 22, 2019 - Poison Orchid Fancy Cat is discovered
  poisonorchid: { name: 'Poison Orchid', date: '2019-07-22',
                  recipe: {
                    limit: 499,
                    traits: ['burmilla', 'henna', 'drama', 'onyx', 'wolfgrey', 'dreamboat', 'SE29'] },
                  desc: 'Ninja Fancy Cat' },

  # Jul 18, 2019 - Catyrax Fancy Cat is discovered
  catyrax: { name: 'Catyrax', date: '2019-07-18',
             recipe: {
                limit: 500,
                traits: ['lykoi', 'henna', 'bornwithit', 'onyx', 'wolfgrey', 'fallspice', 'SE28'] },
             desc: 'Fish-Flinging Ninja Fancy Cat' },

  # Jul 6, 2019 - Catamari Fancy Cat is discovered
  catamari: { name: 'Catamari',
              recipe: {
                time: { start: '2019-07-06', end: '2019-07-19' }, count: 378,
                traits: ['moonrise', 'cobalt', 'ducky', 'salty'] },
              desc: 'Monster Fancy Cat' },

  # Jun 22, 2019 - Magmeow Fancy Cat is discovered
  magmeow: { name: 'Magmeow',
             recipe: {
               time: { start: '2019-06-23', end: '2019-06-26' }, count: 736,
               traits: ['liger', 'moonrise', 'redvelvet', 'dragontail' ] },
              desc: 'Multi-Limbed Magma Monster Fancy Cat' },

  # Jun 8, 2019 - Kitijira Fancy Cat is discovered
  kitijira: { name: 'Kitijira',
              recipe: {
                time: { start: '2019-06-08', end: '2019-06-21' }, count: 645,
                traits: ['mainecoon', 'moonrise', 'atlantis', 'universe', 'dragontail'] },
              desc: 'City-Smashing Lizard Monster Fancy Cat' },

  # May 25, 2019 - The Whisper Fancy Cat is discovered
  whisper:  { name: 'Whisper',
              recipe: {
                time: { start: '2019-05-25', end: '2019-05-31' }, count: 861,
                traits: ['onyx', 'henna', 'wolfgrey', 'sully', 'candyshoppe' ] },
              desc: 'Ninja Fancy Cat' },

  # May 11, 2019 - Curdlin Fancy Cat is discovered
  curdlin: { name: 'Curdlin',
                recipe: {
                  time: { start: '2019-05-11', end: '2019-11-30' }, count: 4,
                  traits: ['nachocheez', 'saycheese', 'missmuffett', 'dippedcone']},
                desc: 'Cheeze Wizard Cat - Celebrating the Launch of the Cheeze Wizards on the Blockchain'
                ## see https://www.cryptokitties.co/blog/post/things-are-getting-cheezy-in-cryptokitties
             },

  # Apr 27, 2019 - Krakitten Fancy Cat is discovered
  krakitten: { name: 'Krakitten',
               recipe: {
                 time: { start: '2019-04-27', end: '2019-05-06' }, count: 1221,
                 traits: ['cobalt', 'ducky', 'salty', 'splat']},
                 ## desc: 'Beware the Krakitten in the briny deep.'
             },
  # Apr 13, 2019 - Furbeard Fancy Cat is discovered
  furbeard: { name: 'Furbeard',
              recipe: {
                time: { start: '2019-04-13', end: '2019-04-26'}, count: 3733,
                traits: ['inflatablepool', 'hanauma', 'neckbeard']},
                desc: 'Dread Pirate Cat'   # Avast Ye! This Old Salt knows a few tricks: how to avoid a meowtiny, how to get out of swabbing the litter deck, and just where the captain's log is buried.
                ## see https://www.cryptokitties.co/blog/post/pirate-cats-are-plundering-cryptokitties/
            },

  # Mar 30, 2019
  # Glitter Fancy Cat is discovered. Fancy Cat
  glitter: { name: 'Glitter',
             recipe: {
               time: { start: '2019-03-30', end: '2019-11-30'},  count: 658,   ## note: ++count NOT FINAL!!!
               traits: ['rorschach', 'juju', 'unicorn', 'hyacinth'] }
           },

  # Mar 16, 2019
  # Clover Fancy Cat is discovered. Fancy Cat
  clover: { name: 'Clover', date: '2019-03-16',
            recipe: {
              limit: 2506,
              traits: ['shamrock', 'emeraldgreen', 'roadtogold', 'PU27'] },
            desc: "Celebrating St. Patrick's Day 2019 (March/19th)"
          },

  # Mar 2, 2019
  # Glasswalker Fancy Cat is discovered. Fancy Cat
  glasswalker: { name: 'Glasswalker', date: '2019-03-02',
                 recipe: {
                   limit: 1230,
                   traits: ['cloudwhite', 'henna', 'pearl', 'firedup'] },
                 desc: "Ninja Fancy Cat"
                },

  # Feb 21, 2019
  # Ande Fancy Cat is discovered. Fancy Cat
  ande: { name: 'Ande', date: '2019-02-21',
          recipe: {
            limit: 440,
            traits: ['munchkin', 'cashewmilk', 'moue', 'PU30', 'WE10'] }
        },
  # Feb 17, 2019
  # Al Fancy Cat is discovered. Fancy Cat
  al: { name: 'Al',
        recipe: {
          time: { start: '2019-02-17', end: '2019-12-01'}, count: 3209, ## note: count NOT FINAL!!!
          traits: ['munchkin','moue','cashewmilk','brownies'] }
      },
  # Feb 16, 2019
  # Pizzazz Fancy Cat is discovered.Fancy Cat
  pizzazz: { name: 'Pizzazz',
             recipe: {
               time: { start: '2019-02-16', end: '2019-12-01'}, count: 1438, ## note: count NOT FINAL!!!
               traits: ['mekong', 'scarlet', 'spangled', 'wonky'] }
           },

  # Feb 9, 2019
  # Miss Purrfect Fancy Cat is discovered.Fancy Cat
  misspurrfect: { name: 'Miss Purrfect',
                  recipe: {
                    time: { start: '2019-02-09', end: '2019-02-14'}, count: 1298,
                    traits: ['allyouneed', 'butterscotch', 'asif', 'satiated', 'flapflap']},
                  desc: "Celebrating St. Valentine's Day 2019 (Feb/14th)"
                  ## see https://www.cryptokitties.co/blog/post/how-to-breed-miss-purrfect/
                },

  ## 2019
  ## January

  # Jan 26, 2019
  # Squib Fancy Cat is discovered. Fancy Cat
  squib: { name: 'Squib', date: '2019-01-26',
           recipe: {
             limit: 1443,    ## todo/check:  check if time-windows?
             traits: ['oldlace', 'razzledazzle', 'buzzed', 'rollercoaster']},
           desc: 'Celebrating American Football Super Bowl LIII in 2019'
           ## see https://www.cryptokitties.co/blog/post/how-to-breed-squib/
         },

  tallythepurrocious: { name: 'Tally The Purrocious',
                        recipe: {
                          time: { start: '2019-01-10', end: '2019-01-21' }, count: 3992,
                          traits: ['selkirk', 'koala', 'arcreactor', 'sully'] },
                        desc: 'Gods Unchained Promotion - Mystical Cat Talisman'
                      },

  genedough: { name: 'Gene Dough',
               recipe: {
                 time: { start: '2018-12-23', end: '2019-01-07' }, count: 1376,
                 traits: ['hotcocoa', 'mittens', 'frosting'] }
            },
  pawrula:  { name: 'Pawrula the Bright',
              recipe: {
                 time: { start: '2018-12-15', end: '2019-11-30' }, count: 1952,  ## note: count NOT FINAL!!!
                 traits: ['camo', 'butterscotch', 'fox'] },
              desc: 'Neha Narula - Director of the Digital Currency Initiative at the MIT Media Lab'
            },

  ## November
  draco:                { name: 'Draco',
                          recipe: {
                            time: { start: '2018-11-30', end: '2018-12-07' }, count: 1115,
                            traits: ['toyger', 'martian', 'peppermint', 'dragonwings', 'SE03'] }
                        },
  dracojunior: { name: 'Draco Junior',
                 recipe: {
                   time: { start: '2018-11-26', end: '2018-12-07' }, count: 1398,
                   traits: ['lynx', 'verdigris', 'dragontail', 'SE03']}
               },
  dreggo:      { name: 'Dreggo',
                 recipe: {
                   time: { start: '2018-11-21', end: '2018-12-07' }, count: 3624,
                   traits: ['siberian', 'bananacream', 'SE03'] }
               },
  pickles:     { name: 'Pickles', date: '2018-11-14',
                 recipe: {
                   limit: 303,
                   traits: ['lynx', 'martian', 'highsociety', 'emeraldgreen']}
               },
  ## October
  dukecat:       { name: 'Dukecat', date: '2018-10-18',
                   recipe: {
                     limit: 1366,
                     traits: ['cymric', 'periwinkle', 'simple', 'tongue']}
                 },
  sheilapurren:  { name: 'Sheila Purren', date: '2018-10-04',
                   recipe: {
                     limit: 1971,
                     traits: ['mauveover', 'icy', 'wingtips', 'fangtastic']},
                   desc: 'Sheila Warren Kitty-fied - Head of Blockchain and Distributed Ledger Technology at the World Economic Forum (WEF)'
                 },

  ## September
  pawzilla: { name: 'Pawzilla', date: '2018-09-22',
              recipe: {
                limit: 1185,
                traits: ['jaguar', 'universe', 'atlantis', 'littlefoot']}
            },
  meowstro: { name: 'Meowstro', date: '2018-09-09',
              recipe: {
                limit: 1698,
                traits: ['onyx', 'wowza', 'eclipse']}
            },
  atlas:    { name: 'Atlas', date: '2018-09-07',
              recipe: {
                limit: 998,
                traits: ['highlander', 'kittencream', 'swarley', 'topoftheworld']}
            },

  ## August
  purrity:        { name: 'Purrity', date: '2018-08-23',
                    recipe: {
                      limit: 5984,
                      traits: ['selkirk', 'chronic', 'cloudwhite', 'cheeky'] }
                  },
  squiddlesworth: { name: 'Squiddlesworth', date: '2018-08-16',
                    recipe: {
                      limit: 1510,
                      traits: ['sphynx', 'redvelvet', 'patrickstarfish', 'dragontail'] },
                    desc: 'Lava Squid Cat'
                   },

  ## July
  purrspero:      { name: 'Purrspero', date: '2018-07-27',
                    recipe: {
                      limit: 4448,
                      traits: ['dippedcone', 'googly', 'royalpurple', 'beard']}
                  },
  catbury:        { name: 'Catbury', date: '2018-07-25',
                    recipe: {
                      limit: 76,
                      traits: ['ragdoll', 'crazy', 'chocolate', 'mintmacaron', 'yokel', 'WE02']}
                  },
  lulu:           { name: 'Lulu', date: '2018-07-13',
                    recipe: {
                      limit: 999,
                      traits: ['cyan', 'verdigris', 'turtleback', 'salty']}
                  },
  boot:           { name: 'Boot', date: '2018-07-05',
                    recipe: {
                      limit: 1440,
                      traits: ['ganado', 'wiley', 'cerulian', 'rollercoaster'],
                      variants: {
                        belgium: { name: 'Belgium', count: 97,   traits: [['orangesoda','onyx']]},                    ## Base Color: Orangesoda / Onyx
                        brazil:  { name: 'Brazil',  count: 195,  traits: [['hintomint','bananacream','verdigris']]},  ## Base Color: Hintomint / Bananacream / Verdigris
                        croatia: { name: 'Croatia', count: 253,  traits: [['cottoncandy','mauveover','oldlace']]},    ## Base Color: Cottoncandy / Mauveover / Oldlace
                        england: { name: 'England', count: 168,  traits: [['greymatter','martian']]},                 ## Base Color: Greymatter / Martian
                        france:  { name: 'France',  count: 317,  traits: [['harbourfog','cinderella','lavender']]},   ## Base Color: Harbourfog / Cinderella / Lavender
                        russia:  { name: 'Russia',  count: 94,   traits: [['shadowgrey','salmon','cloudwhite']]},     ## Base Color: Shadowgrey / Salmon/ Cloudwhite
                        sweden:  { name: 'Sweden',  count: 123,  traits: [['brownies','dragonfruit','redvelvet']]},   ## Base Color: Brownies / Dragonfruit / Redvelvet
                        uruguay: { name: 'Uruguay', count: 193,  traits: [['aquamarine','nachocheez','koala']]},      ## Base Color: Aquamarine / Nachocheez / Koala
                      }},
                    desc: 'Football World Cup',
                  },
  ## note: boot - different variants for world cup teams
  ##  Although there are 8 unique Fancies, they're actually each a variant on the same Fancy - Boot.
  ##  Their colours are different, and you can collect all 8 as a set

  ## June
  raspoutine:    { name: 'Raspoutine', date: '2018-06-28',
                   recipe: {
                     limit: 1867,
                     traits: ['buzzed', 'nachocheez', 'sandalwood', 'belch']}
                },
  kittypride:    { name: 'Kitty Pride', date: '2018-06-21',
                   recipe: {
                     limit: 1316,
                     traits: ['fabulous','cinderella','garnet']}
                 },
  furrmingo:     { name: 'Furrmingo', date: '2018-06-14',
                   recipe: {
                     limit: 333,
                     traits: ['bobtail', 'egyptiankohl', 'flamingo', 'whixtensions']}
                },

  ## May
  page:              { name: 'Page', date: '2018-05-31',
                       recipe: {
                         limit: 50_000,   count: 3936,  ## note: count NOT FINAL!!!
                         traits: ['rascal', 'peach', 'wasntme' ]}
                     },
  "schrƶdingerscat": { name: "Schrƶdinger's Cat", date: '2018-05-20',
                       recipe: {
                         limit: 73,
                         traits: ['forgetmenot','tinybox','PU20','SE25']}
                     },
  chatplongeur:      { name: 'Chat Plongeur', date: '2018-05-19',
                       recipe: {
                         limit: 1910,
                         traits: ['aquamarine', 'skyblue', 'seafoam'] }
                     },
  docpurr:             { name: 'Doc Purr', date: '2018-05-16',
                         recipe: {
                           limit: 250,
                           traits: ['persian','spock','raisedbrow','violet','tongue'] }
                       },
  swish:               { name: 'Swish', date: '2018-05-08',
                         recipe: {
                           limit: 2880,
                           traits: ['norwegianforest', 'luckystripe', 'thicccbrowz', 'orangesoda'] }
                       },

  ## April
  flutterbee:  { name: 'Flutterbee', date: '2018-04-28',
                 recipe: {
                   limit: 275,
                   traits: ['cloudwhite','jaguar','lemonade','azaleablush','WE14'] }
               },
  vernon:      { name: 'Vernon', date: '2018-04-16',
                 recipe: {
                   limit: 320,
                   traits: ['amur','fabulous','cottoncandy','springcrocus','belleblue','soserious']},
                 desc: 'Spring Equinox Kitty'  ## first, see https://www.cryptokitties.co/kitty/696398
                },

  ## March
  berry:           { name: 'Berry', date: '2018-03-16',
                     recipe: {
                       limit: 200,
                       traits: ['dragonfruit','thunderstruck','emeraldgreen','apricot','simple'] }
                   },
  pussforprogress: { name: 'Puss For Progress', date: '2018-03-08',
                     recipe: {
                       limit: 1920,
                       traits: ['himalayan','peach','safetyvest','gerbil'] },
                     desc: "Women's Day"
                   },
  fortunecat:      { name: 'Fortune Cat', name_cn: 'ēŗ¢åŒ…å–µ', date: '2018-03-08',
                     recipe: {
                       limit: 888,
                       traits: ['harbourfog','calicool','swampgreen','sapphire','beard']}
                    },  ## todo: check date for china launch specials!!!
  liondance:    { name: 'Lion Dance', name_cn: '咚咚锵', date: '2018-03-07',
                  recipe: {
                    limit: 888, overflow: 1,  ## use count 889 ?? - why? why not?
                    traits: ['manx','royalblue','googly','starstruck']}
                },
  dogcat:       { name: 'Dog Cat',    name_cn: 'ę±Ŗꘟēˆ·', date: '2018-03-02',
                  recipe: {
                    limit: 88,
                    traits: ['tigerpunk','periwinkle','barkbrown','sweetmeloncakes','yokel']},
                  desc: 'Year of the Dog (Greater China)'
                },

  ## February
  tabby:           { name: 'Tabby', date: '2018-02-26',
                     recipe: {
                       limit: 250,
                       traits: ['ragamuffin','morningglory','otaku','cheeky'] }
                   },
  yuricatsuki:     { name: 'Yuri Catsuki',  date: '2018-02-20',
                     recipe: {
                       limit: 250,
                       traits: ['cymric','tiger','neckbeard','elk'] },
                     desc: 'Figure Scating Kitty - Winter Olympics (Korea)'
                  },
  misterpurrfect:  { name: 'Mister Purrfect', date: '2018-02-14',
                     recipe: {
                       limit: 1000,
                       traits: ['chocolate','baddate','strawberry','wuvme'] },
                     desc: "Valentine's Day"
                   },
  earnie:          { name: 'Earnie', date: '2018-02-13',
                     recipe: {
                       limit: 500,
                       traits: ['birman','orangesoda','hotrod','grim'] },
                     desc: 'Earn.com - Golden Kitty Award (Product Hunt)'
                   },

  ## January
  'momo-chan':     { name: 'Momo-chan', date: '2018-01-31',
                     recipe: {
                       limit: 500,
                       traits: ['onyx','henna','bloodred','wolfgrey','sass'] },
                      desc: 'Ninja Kitty'
                   },
  negato:          { name: 'Negato', date: '2018-01-29',
                     recipe: {
                       limit: 500,
                       traits: ['onyx','henna','wolfgrey','slyboots'] },
                     desc: 'Ninja Kitty'
                   },
  stitches:        { name: 'Stitches', date: '2018-01-10',
                     recipe: {
                       limit: 500,
                       traits: ['hintomint','seafoam','swampgreen','saycheese'] },
                     desc: 'Zombie Kitty'
                   },

  ## 2017
  ## December
  phuziqaat:    { name: 'Phu Ziqaat', date: '2017-12-31',
                  recipe: {
                    limit: 1000,
                    traits: ['chartreux','spock','alien','pouty'] },
                  desc: 'Alien Kitty'
                },
  santaclaws:   { name: 'Santa Claws', date: '2017-12-12',
                  recipe: {
                    limit: 1000, overflow: 2,
                    traits: ['cloudwhite','scarlet','beard','WE12'] },
                  desc: 'Ho Ho Ho - Santa Claus Kitty'
                },
  mistletoe:    { name: 'Mistletoe', date: '2017-12-09',
                  recipe: {
                    limit: 2000,
                    traits: ['oldlace','crazy','gerbil'] },
                  desc: "XMas Kitty"
                },
  dracula:      { name: 'Dracula', date: '2017-12-01',
                  recipe: {
                    limit: 2000,
                    traits: ['laperm','spock','strawberry','WE01'] }
                },

  ## November
  ducat:        { name: 'Du Cat', date: '2017-11-29',
                  recipe: {
                    limit: 10_000,
                    traits: ['cymric','tongue']}
                },
  shipcat:      { name: 'Ship Cat', date: '2017-11-23',
                  recipe: {
                    limit: 2000,
                    traits: ['sphynx','orangesoda','luckystripe','crazy']}
                }
}
FANCIES =
{}.merge( RECIPES )
.merge( EXCLUSIVES )
.merge( SPECIAL_EDITIONS )
EXCLUSIVES =
{

 #  11.07.20  - New Exclusive - Pepito
 # The Morse Meows Shelter is saving kitties from Strasburg, Virginia
 #  by taking them off the streets and getting them ready
 # to find their furrever homes! Community cool cat and ultra-high generation collector,
 #   Club 1000, sounded the Kitty alarm to support this shelter in need.
 #
 # Our newest Exclusive, Pepito, the Mascot, is intended to be distributed
 #  in support of social causes and we've given Morse Meows one for auction!
 'pepitothemascot': { name: 'Pepito The Mascot', date: '2020-11-07',
                        exclusive: {
                          limit: 20, ids: (231..250).to_a },
                    },

 ##  21.05.20  - New Exclusive - MegaFlowtron
  'megaflowtron': { name: 'Mega Flowtron', date: '2020-05-21',
                       exclusive: {
                           limit: 1, ids: [303] },
                  },

 ##  15.05.20  - New Exclusive - Koshkat   - 222
  'koshkat': { name: 'Koshkat', date: '2020-05-15',
                    exclusive: {
                       limit: 1, ids: [222] },
             },

 ##  01.02.20  - New Exclusive - Gale
 ##    celebrating the way to 2 000 000 million
 ##    check if limit goes up (on jan/31 it is 33)
 ##
 ## A total of 36 Exclusive Gale Kitties will be discovered
 ##  through random breeding in the Race to the 2,000,000th Kitty.
 ##
 ##  Each of these 36 Exclusive Kitties will be born, at random,
 ##  until we reach 2,000,000. And these super-rare Exclusives
 ##  can be born from any parents, from any generation.
 ##  But beware this is a ID-limited window.
  'gale':   { name: 'Gale', date: '2020-02-01',
                 exclusive: {
                   limit: 33, ids: [
                     1995387, 1995323, 1990934, 1987022,
                     1986452, 1984873, 1984313, 1980813,
                     1979910, 1976399, 1973254, 1971383,
                     1970499, 1968361, 1961950, 1960448,
                     1957257, 1956528, 1952165, 1946384,
                     1932696, 1923247, 1909523, 1906470,
                     1895691, 1895007, 1893341, 1887536,
                     1861789, 1859088, 1836698, 1825688,
                     1825574 ] },
            },

#####
# 2019

 'dapp-e': { name: 'DAPP-E', date: '2019-05-10',
              exclusive: {
                limit: 50, ids: (1829..1878).to_a },
              desc: 'Dapper (Crypto Contract) Wallet Promotion Cat'
            },
  papacatuanuku: { name: 'Papacatuanuku', date: '2019-03-31',
                   exclusive: {
                     limit: 1, ids: [1500000] },
                   desc: 'Kitty #1500000'
                 },
  # Mar 26, 2019
  # Sir Meowsalot Exclusive Cat is released. Exclusive Cat
  sirmeowsalot: { name: 'Sir Meowsalot', date: '2019-03-26',
                  exclusive: {
                    limit: 21, ids: (201..221).to_a }
                },

  cyberberry: { name: 'Cyber Berry', date: '2019-03-02',
                exclusive: {
                  limit: 1, ids: [282] },
                desc: "Winner of the NFTme Sweetstakes"
              },

  # Mar 1, 2019
  # Hinecatone Exclusive Cat is discovered. Exclusive Cat
  hinecatone: { name: 'Hinecatone', date: '2019-03-01',
                exclusive: {
                  limit: 15, ids: [1423547, 1433380, 1433486, 1440835, 1453366, 1456935, 1456973, 1459319, 1463197, 1466118, 1474082, 1484593, 1484982, 1492154, 1498885]}
              },

  # Feb 15, 2019
  # Felono Exclusive Cat is discovered. Exclusive Cat
  felono: { name: 'Felono', date: '2019-02-15',
            exclusive: {
              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]}
          },
  hypurrion: { name: 'Hypurrion', date: '2019-01-10',
               exclusive: {
                 limit: 1, ids: [269]},
               desc: 'Hyperion - Mythic Titan of Light - Gods Unchained Promotion'
             },
  dracothemagnificent:  { name: 'Draco The Magnificent', date: '2018-11-27',
                          exclusive: {
                            limit: 12, ids:	(270..281).to_a }
                        },
  bugcatv2:             { name: 'Bug Cat V2', date: '2018-11-27',
                          exclusive: {
                            limit: 20, ids: (167..186).to_a },
                          desc: 'Bug Bounty II (Offers Contract etc) Kitty'
                        },
  lilbubthemagicalspacecat: { name: 'Lil Bub Ub Bub (BUB) The Magical Space Cat', date: '2018-11-13',
                              exclusive: {
                                limit: 3, ids: [266,267,268]}
                            },
  vulcat:   { name: 'Vulcat', date: '2018-09-12',
              exclusive: {
                limit: 1, ids: [1000000] },
              desc: '1 000 000th Kitty'
            },
  vulcant:        { name: 'Vulcant', date: '2018-08-31',
                    exclusive: {
                      limit: 20, ids: [932914,937360,938299,946526,948925,949058,950617,952280,952981,956374,956908,958570,964205,967234,983046,984451,990713,992861,995745,997469] }
                  },
  rabbidkitty:    { name: 'Rabbid Kitty', date: '2018-08-23',
                    exclusive: {
                       limit: 6, ids: (260..265).to_a },
                    desc: 'Ubisoft Blockchain Heroes Hackathon'
                  },
 honu:           { name: 'Honu', date: '2018-07-20',
                   exclusive: {
                     limit: 1, ids: [251] },
                   desc: 'Kitties for Good - Save Turtle Habitats'
                 },
 victoire:       { name: 'Victoire', date: '2018-07-18',
                   exclusive: {
                     limit: 1, ids: [402] },
                   desc: 'France Football World Cup Champion'
                 },
  furlin:        { name: 'Furlin', date: '2018-06-26',
                   exclusive: {
                     limit: 52, ids: (115..126).to_a + (128..166).to_a }
                 },
  celestialcyberdimension: { name: 'Celestial Cyber Dimension', date: '2018-05-12',
                             exclusive: {
                               limit: 1, ids: [127] }
                           },

=begin
 ## May 7, 2018
 ## old retired (failed) exclusive with Warriors' Steph Curry (NBA Superstar) Basketball Celebrity Promotion

'#30furry': { name: '#30 Furry', date: '2018-05-07',  ## todo/fix: url-escape name '#30furry' for picture
              exclusive: {
                limit: 1, ids: [330] },
              desc: 'Steph Curry (NBA Superstar) Basketball Celebrity Promotion Cat'
            },
 cheffurry: {  name: 'Chef Furry', date: '2018-05-07',
               exclusive: {
                 limit: 1, ids: [130] },
               desc: 'Steph Curry (NBA Superstar) Basketball Celebrity Promotion Cat'
             },
  stephfurthree: { name: 'Steph Fur Three',  date: '2018-05-07',
                   exclusive: {
                     limit: 1, ids: [230] },
                   desc: 'Steph Curry (NBA Superstar) Basketball Celebrity Promotion Cat'
                 },
=end


  goldendragoncat: { name: 'Golden Dragon Cat', name_cn: 'åøé¾™å–µ', date: '2018-03-08',
                     exclusive: {
                       limit: 1, ids: [888] },
                     desc: 'China Launch'
                   }, ## todo: check date for china launch specials!!!
  goldendogcat:    { name: 'Golden Dog Cat', name_cn: 'ę—ŗč“¢ę±Ŗ', date: '2018-03-08',
                     exclusive: {
                       limit: 11, ids: [1802,1803,1805,1806,1808,1809,1812,1816]+(1825..1828).to_a },
                     desc: 'China Launch'
                   },  ## todo: check date for china launch specials!!!

  knightkitty:  { name: 'Knight Kitty',  date: '2018-03-01',
                  exclusive: {
                    limit: 11, ids: (104..114).to_a }
                },
  cathena:         { name: 'Cathena',  date: '2018-02-06',
                    exclusive: {
                      limit: 1, ids: [500000] },
                    desc: '500 000th Kitty'
                  },
  genesis:      { name: 'Genesis', date: '2017-11-24',
                  exclusive: {
                    limit: 1, ids: [1] },
                  desc: '1st Kitty'
                },
  bugcat:       { name: 'Bug Cat', date: '2017-11-23',
                  exclusive: {
                    limit: 3, ids: [101,102,103] },
                  desc: 'Bug Bounty Kitty' }
}
EN00_EN15 =

trait recipe helpers / shortcuts

['EN00','EN01','EN02','EN03',
'EN04','EN05','EN06','EN07',
'EN08','EN09','EN10','EN11',
'EN12','EN13','EN14','EN15']
PU16_PU29 =
['PU16','PU17','PU18','PU19',
'PU20','PU21','PU22','PU23',
'PU24','PU25','PU26','PU27',
'PU28','PU29' ]
PU24_PU27 =
['PU24','PU25','PU26','PU27']
PU24_PU30 =
['PU24','PU25','PU26','PU27',
'PU28','PU29','PU30']
PU28_PU29 =
['PU28','PU29']
PU28_PU30 =
['PU28','PU29','PU30']
WE00_WE07 =
['WE00', 'WE01', 'WE02', 'WE03',
'WE04', 'WE05', 'WE06', 'WE07']
WE00_WE15 =
['WE00', 'WE01', 'WE02', 'WE03',
'WE04', 'WE05', 'WE06', 'WE07',
'WE08', 'WE09', 'WE10', 'WE11',
'WE12', 'WE13', 'WE14', 'WE15']
PURRSTIGES_HACKATAO =
{
# This weekend a set of Hackatao Purrstige traits are making
# their way into CryptoKitties.
# The "HaCKittieZ" will be breedable for a limited time from October 24th - 31st.
#
#  Hackatao are decentralized artists widely known for
# their beautiful illustrations and collected among cool cats in the community.
#
#  HaCKittieZ is our collaboration with renowned artist Hackatao and Async Art
#  to give you incredible ways to personalize your CryptoKitties
#  and push the boundaries of programmable art.
#  A set of Purrstige traits designed by Hackatao will be breedable for a limited time.
#  The HaCKittieZ traits can be mixed and matched to personalize
#  your Kitties and create exciting permutations!

#  24.10.20 - New Purrstige - Meowfoolest
meowfoolest:  { name: 'Meowfoolest',
                recipe: {
                  time: { start: '2020-10-24', end: '2020-10-31'}, count: 254,
                  traits: ['liger', 'shale', 'PU30', 'daemonwings'] },
              },
#  24.10.20 - New Purrstige - Meowfool
meowfool: { name: 'Meowfool',
            recipe: {
              time: { start: '2020-10-24', end: '2020-10-31'}, count: 388,
              traits: ['shale', 'daemonwings', PU28_PU29] },
          },
#  24.10.20 - New Purrstige - Meownificent
meownificent:  { name: 'Meownificent',
                 recipe: {
                 time: { start: '2020-10-24', end: '2020-10-31'}, count: 260,
                 traits: [ 'liger', 'shale', 'PU30', WE00_WE15] },
              },
#  24.10.20 - New Purrstige - Meowthulhu
meowthulhu: { name: 'Meowthulhu',
              recipe: {
                time: { start: '2020-10-24', end: '2020-10-31'}, count: 950,
                traits: [ 'daemonwings', PU28_PU30] },
            },
#  24.10.20 - New Purrstige - Meownique
meownique: { name: 'Meownique',
             recipe: {
               time: { start: '2020-10-24', end: '2020-10-31'}, count: 557,
               traits: [ 'shale', PU28_PU29, WE00_WE15] },
           },
}
PURRSTIGES_KITTENHEIM =
{
# 07.11.19 - New Purrstige - Purrior
purrior:  { name: 'Purrior',
            recipe: {
              time: { start: '2019-11-07', end: '2019-12-01' }, count: 120,
              traits: [] },
          },
# 06.11.19 - New Purrstige - Centurion
centurion: { name: 'Centurion',
             recipe: {
               time: { start: '2019-11-06', end: '2019-12-01' }, count: 144,
               traits: [] },
           },
# 03.11.19 - New Purrstige - Explorer
explorer: { name: 'Explorer',
            recipe: {
              time: { start: '2019-11-03', end: '2019-12-01' }, count: 162,
              traits: ['lykoi', 'daemonhorns', ['rascal', 'camo'], 'PU28'] },
          },
# 02.11.19 - New Purrstige - Guard
guard: { name: 'Guard',
         recipe: {
           time: { start: '2019-11-02', end: '2019-12-01' }, count: 220,
           traits: [] },
       },
# 01.11.19 - New Purrstige - Velite
velite: { name: 'Velite',
          recipe: {
            time: { start: '2019-11-01', end: '2019-12-01' }, count: 273,
            traits: [] },
        },
# 01.11.19 - New Purrstige - Scout
scout: { name: 'Scout',
         recipe: {
          time: { start: '2019-11-01', end: '2019-12-01' }, count: 140,
          traits: [] },
       },
# 02.11.19 - New Purrstige - Dominator
dominator: { name: 'Dominator',
             recipe: {
               time: { start: '2019-11-02', end: '2019-12-01' }, count: 141,
               traits: ['lykoi', 'daemonhorns', PU24_PU27]  },
           },

# Nov 1, 2019 - Brassard trait is discovered. Purrstige
brassard: { name: 'Brassard',
            recipe: {
              time: { start: '2019-11-01', end: '2019-12-01' }, count: 793,
              traits: [WE00_WE07, PU24_PU27] },
          },

# Nov 1, 2019 - Aegis trait is discovered.  Purrstige
aegis: { name: 'Aegis',
         recipe: {
           time: { start: '2019-11-01', end: '2019-12-01' }, count: 617,
           traits: [] },
       },
}
PURRSTIGES_ROBOKITTY =
{
###
# May 1, 2019
#  7 Robokitty Purrstiges

# 12.12.19  - New Purrstige - Driver
driver:     { name: 'Driver',
              recipe: {
                time: { start: '2019-12-12', end: '2019-12-13' }, count: 257,
                traits: ['ragdoll', TOTESBASIC, WE00_WE15, 'drift', PU24_PU30] },
            },
bionic: { name: 'Bionic',
          recipe: {
            time: { start: '2019-05-01', end: '2019-08-31' }, count: 624,
            traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU30'] }
          },
fileshare: { name: 'Fileshare',
             recipe: {
               time: { start: '2019-05-01', end: '2019-08-31' }, count: 683,
               traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU29'] }
           },
pawsfree:  { name: 'Pawsfree',
             recipe: {
               time: { start: '2019-05-01', end: '2019-08-31' }, count: 430,
               traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU28'] }
             },
uplink:  { name: 'Uplink',
           recipe: {
             time: { start: '2019-05-01', end: '2019-08-31' }, count: 1151,
             traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU27'] }
           },
gaunlet: { name: 'Gauntlet',
           recipe: {
             time: { start: '2019-05-01', end: '2019-08-31' }, count: 905,
             traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU26'] }
           },
catterypack: { name: 'Catterypack',
               recipe: {
                 time: { start: '2019-05-01', end: '2019-08-31' }, count: 513,
                 traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU25'] }
               },
squelch: { name: 'Squelch',
           recipe: {
             time: { start: '2019-05-01', end: '2019-08-31' },  count: 828,
             traits: ['ragdoll', 'WE05', TOTESBASIC, 'PU24'] }
            }
}
PURRSTIGES_PIRATE =
{
##
# Apr 13, 2019
#  7 Pirate Purrstiges
#  Scratchingpost trait is discovered. Purrstige
scratchingpost: { name: 'Scratchingpost',
                  recipe: {
                    time: { start: '2019-04-13', end: '2019-05-10' }, count: 772,
                    traits: ['WE10', 'PU26'] }
                },
#  Hooked trait is discovered. Purrstige
hooked: { name: 'Hooked',
          recipe: {
            time: { start: '2019-04-13', end: '2019-05-10' }, count: 1277,
            traits: ['WE10', 'PU27'] }
        },
#  Landlubber trait is discovered. Purrstige
landlubber: { name: 'Landlubber',
              recipe: {
                time: { start: '2019-04-13', end: '2019-05-10' }, count: 711,
                traits: ['WE10', 'PU29'] }
            },
# Wrecked trait is discovered. Purrstige
wrecked: { name: 'Wrecked',
           recipe: {
             time: { start: '2019-04-13', end: '2019-05-10' }, count: 959,
             traits: ['EN00', 'PU26'] }
          },
# Purrbados trait is discovered. Purrstige
purrbados: { name: 'Purrbados',
             recipe: {
               time: { start: '2019-04-13', end: '2019-05-10' }, count: 1344,
               traits: ['EN01', 'PU26'] }
            },
# Timbers trait is discovered. Purrstige
timbers: { name: 'Timbers',
           recipe: {
             time: { start: '2019-04-13', end: '2019-05-10' }, count: 472,
             traits: ['WE10', 'EN00', 'PU26'] }
          },
# Maraud trait is discovered. Purrstige
maraud: { name: 'Maraud',
          recipe: {
            time: { start: '2019-04-13', end: '2019-05-10' }, count: 620,
            traits: ['WE10', 'EN01', 'PU26'] }
        }
}
PURRSTIGES_ALPACAT =
{
##
# Feb 21, 2019
#  7 Alpacat "hairstyle" purrstiges
# Dreamcloud trait is discovered. Purrstige
dreamcloud: { name: 'Dreamcloud',
              recipe: {
                time: { start: '2019-02-22', end: '2019-03-25' }, count: 1246,
                traits: ['munchkin', 'WE10', 'PU24'] }
            },
# Alpunka trait is discovered. Purrstige
alpunka: { name: 'Alpunka',
           recipe: {
             time: { start: '2019-02-22', end: '2019-03-25' }, count: 926,
             traits: ['munchkin', 'WE10', 'PU28'] }
         },
# Cindylou trait is discovered. Purrstige
cindylou: { name: 'Cindylou',
            recipe: {
              time: { start: '2019-02-22', end: '2019-03-25' }, count: 905,
              traits: ['munchkin', 'WE10', 'PU30'] }
          },
# Alpacacino trait is discovered. Purrstige
alpacacino: { name: 'Alpacacino',
              recipe: {
                time: { start: '2019-02-22', end: '2019-03-25' }, count: 1220,
                traits: ['munchkin', 'WE10', 'PU27'] }
            },
# Beatlesque trait is discovered. Purrstige
beatlesque: { name: 'Beatlesque',
              recipe: {
                time: { start: '2019-02-22', end: '2019-03-25' }, count: 783,
                traits: ['munchkin', 'WE10', 'PU29'] }
            },
# Huacool trait is discovered. Purrstige
huacool: { name: 'Huacool',
           recipe: {
             time: { start: '2019-02-22', end: '2019-03-25' }, count: 837,
             traits: ['munchkin', 'WE10', 'PU25'] }
          },
# Inaband trait is discovered. Purrstige
inaband: { name: 'Inaband',
           recipe: {
             time: { start: '2019-02-22', end: '2019-03-25' }, count: 1048,
             traits: ['munchkin', 'WE10', 'PU26'] }
        }
}
PRESTIGES =
PURRSTIGES =
{

# 01.01.20  - New Purrstige - Confettibox
confettibox: { name: 'Confettibox',
             recipe: {
               time: { start: '2020-01-01', end: '2020-01-15' }, count: 554,
               traits: ['tinybox', 'PU26'] },
           },
# 01.12.19  - New Purrstige - Celebration
celebration: { name: 'Celebration',
              recipe: {
               time: { start: '2019-12-01', end: '?' }, count: 1080,
               traits: [EN00_EN15, PU16_PU29] },
            },
# 01.12.19 - New Purrstige - Grandfinale
grandfinale: { name: 'Grandfinale',
              recipe: {
                time: { start: '2019-12-01', end: '?' }, count: 520,
                traits: [EN00_EN15, 'PU30'] },
            },



# Jun 28, 2019 -  Werekitty trait is discovered. Purrstige
werekitty: { name: 'Werekitty',
            recipe: {
              time: { start: '2019-06-28', end: '2019-07-27' }, count: 438,
              traits: ['moonrise', 'littlefoot', 'PU24',
                       EN00_EN15] },
              desc: 'Monster Month Purrstige Trait'
           },

##
# Mar 15, 2019
# Oohshiny trait is discovered. Purrstige
oohshiny: { name: 'Oohshiny',
           recipe: {
             time: { start: '2019-03-15', end: '2019-03-28'}, count: 2484,
             traits: ['roadtogold', 'PU27'] }
         },

## 2018
## December

reindeer: { name: 'Reindeer',
            recipe: {
              time: { start: '2018-12-14', end: '2019-01-07' }, count: 854,
              traits: ['elk', ['PU24','PU25','PU26','PU27']] }
          },
holidaycheer: { name: 'Holidaycheer',
                recipe: {
                  time: { start: '2018-12-14', end: '2019-01-07' }, count: 759,
                  traits: ['elk', ['PU28','PU29']] }
              },
 lit:      { name: 'Lit',
             recipe: {
               time: { start: '2018-12-14', end: '2019-01-07' }, count: 1006,
               traits: ['elk', 'PU30'] }
           },

## October
 ## date: '2018-10-21' ??
 thatsawrap:  { name: 'Thatsawrap',
                recipe: {
                  time: { start: '2018-10-20', end: '2018-11-06' }, count: 615,
                  traits: ['bobtail','WE00','PU28'] }
             },
 ## date: '2018-10-19' ??
 duckduckcat: { name: 'Duckduckcat',
                recipe: {
                  time: { start: '2018-10-20', end: '2018-11-15' }, count: 1249,
                  traits: ['neckbeard',['PU24','PU25','PU26']] }
              },

## September
 ## date: '2018-09-19' ??
 prune:   { name: 'Prune',
            recipe: {
              time: { start: '2018-09-18', end: '2018-09-30' }, count: 921,
              traits: ['norwegianforest', TOTESBASIC, 'PU25'] }
         },
 furball:  { name: 'Furball',
             recipe: {
               time: { start: '2018-09-19', end: '2018-09-30' }, count: 998,
               traits: ['norwegianforest', TOTESBASIC, 'PU26'] }
           }
}.merge( PURRSTIGES_ROBOKITTY )
.merge( PURRSTIGES_PIRATE )
.merge( PURRSTIGES_ALPACAT )
.merge( PURRSTIGES_KITTENHEIM )
.merge( PURRSTIGES_HACKATAO )
TRAITS_TIMELINE =
{
  ## 2018
  ## november
  dune:           { date: '2018-11-21' },
  secretgarden:   { date: '2018-11-21' },
  floorislava:    { date: '2018-11-21' },
  junglebook:     { date: '2018-11-21' },

  meowgarine:     { date: '2018-11-16' },
  cornflower:     { date: '2018-11-16' },
  icicle:         { date: '2018-11-16' },
  hotcocoa:       { date: '2018-11-16' },
  firstblush:     { date: '2018-11-16' },

  featherbrain:   { date: '2018-11-13' },
  foghornpawhorn: { date: '2018-11-13' },
  alicorn:        { date: '2018-11-13' },
  wyrm:           { date: '2018-11-13' },

  mittens:        { date: '2018-11-06' },
  arcreactor:     { date: '2018-11-06' },
  allyouneed:     { date: '2018-11-06' },
  gyre:           { date: '2018-11-06' },
  moonrise:       { date: '2018-11-06' },

  ## october
  metime:      { date: '2018-10-26' },
  jacked:      { date: '2018-10-26' },
  prism:       { date: '2018-10-26' },

  isotope:     { date: '2018-10-23' },
  bridesmaid:   { date: '2018-10-23' },
  downbythebay: { date: '2018-10-23' },
  gemini:       { date: '2018-10-23' },
  kaleidoscope: { date: '2018-10-23' },

  siberian: { date: '2018-10-17' },
  lynx: { date: '2018-10-17' },
  toyger:  { date: '2018-10-17' },
  burmilla:  { date: '2018-10-17' },
  liger:  { date: '2018-10-17' },

  moue: { date: '2018-10-10' },
  majestic: { date: '2018-10-10' },
  satiated: { date: '2018-10-10' },
  struck: { date: '2018-10-10' },
  delite: { date: '2018-10-10' },

  myparade: { date: '2018-10-03' },
  roadtogold: { date: '2018-10-03' },


  ## september
  dreamboat: { date: '2018-09-21' },
  fallspice: { date: '2018-09-21' },
  mallowflower: { date: '2018-09-21' },
  hanauma: { date: '2018-09-21' },
  summerbonnet: { date: '2018-09-21' },

  firedup: { date: '2018-09-06' },
  hacker: { date: '2018-09-06' },
  drama: { date: '2018-09-06' },
  candyshoppe: { date: '2018-09-06' },

  asif: { date: '2018-09-05' },

  ## august
  dragonwings: { date: '2018-08-29' },
  aflutter: { date: '2018-08-29' },
  ducky: { date: '2018-08-29' },

  chantilly: { date: '2018-08-23' },
  mekong: { date: '2018-08-23' },
  fox: { date: '2018-08-23' },
  lykoi: { date: '2018-08-23' },

  tundra: { date: '2018-08-17' },
  glacier: { date: '2018-08-17' },
  hyacinth: { date: '2018-08-17' },
  shamrock: { date: '2018-08-17' },

  inflatablepool: { date: '2018-08-08' },
  peppermint: { date: '2018-08-08' },
  ooze: { date: '2018-08-08' },
  cyborg: { date: '2018-08-08' },

  scorpius: { date: '2018-08-01' },
  splat:   { date: '2018-08-01' },
  vigilante:  { date: '2018-08-01' },
  avatar:   { date: '2018-08-01' },

  ## july
  topoftheworld: { date: '2018-07-25' },
  confuzzled:  { date: '2018-07-25' },
  samwise: { date: '2018-07-25' },
  walrus: { date: '2018-07-25' },

  olive: { date: '2018-07-20' },
  pinefresh: { date: '2018-07-20' },
  oasis: { date: '2018-07-20' },
  dioscuri: { date: '2018-07-20' },

  juju: { date: '2018-07-18' },
  frozen: { date: '2018-07-18' },

  kalahari: { date: '2018-07-13' },
  atlantis: { date: '2018-07-13' },

  fangtastic: { date: '2018-07-06' },

  ## june
  littlefoot: { date: '2018-06-29' },
  dragontail: { date: '2018-06-29' },

  padparadscha: { date: '2018-06-28' },
  rosequartz:   { date: '2018-06-28' },
  universe:     { date: '2018-06-28' },

  martian:   { date: '2018-06-22' },
  redvelvet: { date: '2018-06-22' },
  brownies:  { date: '2018-06-22' },

  wowza: { date: '2018-06-19' },
  tendertears: { date: '2018-06-19' },

  impish: { date: '2018-06-14' },

  finalfrontier:  { date: '2018-06-11' },

  cobalt:     { date: '2018-06-09' },
  cashewmilk: { date: '2018-06-09' },
  buttercup:  { date: '2018-06-09' },

  manul:  { date: '2018-06-05' },
  balinese: { date: '2018-06-05' },
  kurilian: { date: '2018-06-05' },

  ## may
  unicorn:  { date: '2018-05-31' },
  flapflap: { date: '2018-05-31' },

  dahlia:    { date: '2018-05-29' },
  palejade:  { date: '2018-05-29' },
  autumnmoon: { date: '2018-05-29' },

  razzledazzle: { date: '2018-05-24' },
  highsociety:  { date: '2018-05-24' },
  rorschach:    { date: '2018-05-24' },

  tinybox: { date: '2018-05-19' },

  butterscotch: { date: '2018-05-10' },
  garnet:  { date: '2018-05-10' },
  mertail: { date: '2018-05-10' },
  pearl:   { date: '2018-05-10' },

  highlander:  { date: '2018-05-08' },
  koladiviya:  { date: '2018-05-08' },

  swarley: { date: '2018-05-04' },
  oceanid: { date: '2018-05-04' },
  chameleon: { date: '2018-05-04' },
  bornwithit: { date: '2018-05-04' },

  ## april
  cinderella: { date: '2018-04-27' },
  lavender:   { date: '2018-04-27' },

  daemonhorns: { date: '2018-04-24' },
  salty:       { date: '2018-04-24' },

  shale: { date: '2018-04-19' },

  eclipse:  { date: '2018-04-17' },
  parakeet: { date: '2018-04-17' },

  daemonwings:   { date: '2018-04-13' },

  caffeine:      { date: '2018-04-10' },

  frosting:         { date: '2018-04-02' },
  patrickstarfish:  { date: '2018-04-02' },
  mintmacaron:      { date: '2018-04-02' },


  ## march
  doridnudibranch:  { date: '2018-03-30' },

  springcrocus:     { date: '2018-03-20' },

  thunderstruck:    { date: '2018-03-16' },
  rascal:           { date: '2018-03-16' },

  dragonfruit:  { date: '2018-03-14' },

  belch:  { date: '2018-03-09' },

  pixiebob:    { date: '2018-03-08' },
  poisonberry: { date: '2018-03-08' },
  safetyvest:  { date: '2018-03-08' },

  cyan:  { date: '2018-03-05' },


  ## february
  missmuffett: { date: '2018-02-28' },
  wiley:      { date: '2018-02-28' },

  dippedcone:   { date: '2018-02-23' },
  leopard:      { date: '2018-02-23' },

  harbourfog:   { date: '2018-02-20' },

  baddate:      { date: '2018-02-13' },

  wuvme:  { date: '2018-02-12' },
  yokel:  { date: '2018-02-12' },
  starstruck:  { date: '2018-02-12' },

  egyptiankohl: { date: '2018-02-09' },
  bobtail: { date: '2018-02-09' },

  tiger: { date: '2018-02-06' },

  birman: { date: '2018-02-02' },
  coralsunrise: { date: '2018-02-02' },

  ## january
  forgetmenot: { date: '2018-01-30' },
  savannah: { date: '2018-01-30' },
  norwegianforest: { date: '2018-01-30' },
  twilightsparkle: { date: '2018-01-30' },

  trioculus: { date: '2018-01-26' },

  morningglory: { date: '2018-01-20' },
  apricot:      { date: '2018-01-20' },
  turtleback:   { date: '2018-01-20' },
  wasntme:      { date: '2018-01-20' },
  cheeky:       { date: '2018-01-20' },

  sapphire:     { date: '2018-01-17' },

  nachocheez:  { date: '2018-01-14' },
  koala:       { date: '2018-01-14' },
  chronic:     { date: '2018-01-14' },
  onyx:        { date: '2018-01-14' },
  sass:        { date: '2018-01-14' },

  slyboots:   { date: '2018-01-13' },

  azaleablush:   { date: '2018-01-10' },
  spangled:      { date: '2018-01-10' },

  lilac:         { date: '2018-01-09' },
  bananacream:   { date: '2018-01-09' },
  verdigris:     { date: '2018-01-09' },

  neckbeard:    { date: '2018-01-06' },
  grim:         { date: '2018-01-06' },
  grimace:      { date: '2018-01-06' },
  stunned:      { date: '2018-01-06' },

  wonky:        { date: '2018-01-04' },
  babypuke:     { date: '2018-01-04' },
  pumpkin:      { date: '2018-01-04' },

  thundergrey:   { date: '2018-01-03' },


  ## 2017
  ## december
  selkirk:       { date: '2017-12-31' },
  icy:           { date: '2017-12-31' },
  flamingo:      { date: '2017-12-31' },
  seafoam:       { date: '2017-12-31' },

  elk:           { date: '2017-12-28' },

  hintomint:      { date: '2017-12-22' },

  serpent:        { date: '2017-12-20' },
  alien:          { date: '2017-12-20' },
}
SPECIAL_EDITIONS =
{

  frostymcwhiskers: { name: 'Frosty McWhiskers', date: '2020-12-14',
                      specialedition: {
                         limit: 104 },
                    },

  ###
  #  The redemption window to claim to your very own Fannie Special Edition Kitty
  #   will be closing this Saturday. For each Fannie, you'll need to submit
  #  a unique trio of Wild West Kitties (one Pickett, one Reeves and one Dart)
  #  to our Kitty Bounty Wallet  along with a valid submission form
  #  before the deadline on 12/5/2020 at 11:59pm PT
  fannie:   { name: 'Fannie', date: '2020-12-14',  ## first/lowest id:  #1_992_009
              specialedition: {
                 limit: 58 },
            },

  # With transactions getting stuck and costs to gift Kitties soaring through the roofs,
  # we've decided to extend the window to redeem your Katz band members
  # for Special Edition Mascots.
  # The new redemption window ends on September 1st, 11:59pm PT.
  ## Gas prices have slowed down redemption but there are currently
  ## 20 Algies and 30 Eddies earmarked for distribution.

  algie:    { name: 'Algie', date: '2020-10-29',  ## first/lowest id: #1_137_676 !!  - todo/check - first birthdate?
              specialedition: {
                 limit: 179 },
            },

  eddie:    { name: 'Eddie', date: '2020-09-03',  # first/lowest id: #1_967_278
              specialedition: {
                 limit: 110 },
            },

  marty:    { name: 'Marty', date: '2020-09-01',
              specialedition: {
                  limit: 188 },
              desc: 'Collaboration with Muse',
            },

  pandora: { name: 'Pandora', date: '2020-07-31',
             specialedition: {
               limit: 50 },
             desc: 'CryptoKitty Box Support',
          },

 holli:    { name: 'Holli', date: '2020-07-03',   # first/lowest id: #1_949_215
              specialedition: {
                 limit: 59 },
           },

 kikuyu:    { name: 'Kikuyu', date: '2020-06-13',
              specialedition: {
                  limit: 263 },
              desc: 'For Hunter+Zelig+Bodhi',
            },

 flowtron:   { name: 'Flowtron', date: '2020-05-21',
               specialedition: {
                  limit: 303 },
               desc: 'Exchange on Flow Fancy Set',
             },

 catterina:  { name: 'Catterina', date: '2020-05-13',
               specialedition: {
                   limit: 100 },
               desc: 'Momo Wang',
             },

 negabillie: { name: 'Nega Billie', date: '2020-04-27',
               specialedition: {
                  limit: 68 },
             },

 ##############
 # 2019
 carl:  { name: 'Carl', date: '2019-08-20',   # first/lowest id: #1_680_709
           specialedition: {
              limit: 40 },
        },

  alice: { name: 'Alice', date: '2019-08-23',  # first/lowest id: #1_681_913
           specialedition: {
             limit: 88 },
         },


  'kitt-e': { name: 'KITT-E', date: '2019-05-10',
              specialedition: {
                limit: 500 },
              desc: 'Dapper (Crypto Contract) Wallet Promotion Cat'
            },
  # Apr 10, 2019 - Sparkles Special Edition Cat is released.Special Edition Cat
  sparkles: { name: 'Sparkles', date: '2019-04-10',
              specialedition: {
                limit: 100 },
              desc: 'Freebie for CryptoKitties Community Events'
            },

  ## date: '2019-01-10 ???  -- use for date "announced" or something - why? why not?
  aeoncat: { name: 'Aeoncat',
              specialedition: {
                time: { start: '2019-01-17', end: '2019-01-28' },
                limit: 380 },    ## Don't sleep - there's only 380 up for grabs!
              desc: 'Goddess Aeona - Goddess of Nature - Gods Unchained Promotion'
           },

  #############################
  ## 2018
  ## December
  catzy: { name: 'Catzy', date: '2018-12-31',
           specialedition: {
             limit: 10, ids: (1137653..1137662).to_a },
           desc: 'Changpeng "CZ" Zhao - CEO of Binance - Top 10 Blockchain Influencer of the Year 2018 by CoinDesk'
         },
  purremyallaire: { name: 'Purremy Allaire', date: '2018-12-31',
                    specialedition: {
                      limit: 10, ids: (1137663..1137672).to_a },
                    desc: 'Jeremy Allaire - Top 10 Blockchain Influencer of the Year 2018 by CoinDesk'
                  },
  lilbub:      { name: 'Lil Bub Ub Bub (BUB)', date: '2018-11-13',
                 specialedition: {
                   limit: 500 }
               },
}

Instance Method Summary collapse

Instance Method Details

#ppObject

std libs



2
# File 'lib/kittyverse.rb', line 2

require 'pp'