diff --git a/README.md b/README.md index 9ebef4e..2d2ffe1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,65 @@ -# inscryption-card-generator +# Inscryption Card Generator CLI -Python script for Inscryption cards generation \ No newline at end of file +To generate a single card: +``` +python main.py grizzly.png -p grizzly -ca 3 -ct blood -r 2 -n Grizzly -hp 6 -d 4 +``` + +To generate a cardset from json: +``` +python main.py act1 -cs act1_ru.json +``` + +cardset.json +```json +[ + { + "background": "common", + "name": "Grizzly", + "portrait": "grizzly", + "symbols": [], + "cost-type": "blood", + "cost-amount": 3, + "hp": 4, + "damage": 6 + } +] +``` + +## Assets Directory Structure + +``` +assets/ +├── backgrounds/ +│ ├── blank.png +│ ├── common.png +│ ├── golden.png +│ ├── rare.png +│ └── terrain.png +├── costs/ +│ ├── cost_1blood.png +│ ├── cost_1bone.png +│ └── [other card costs up to 4 blood and 10 bone] +├── deathcard/ +│ ├── deathcard_eyes_1.png +│ ├── deathcard_eyes_2.png +│ └── [other deathcard portrait parts] +├── decals/ +│ ├── decal_blood_1.png +│ ├── decal_smoke.png +│ └── [other card decals up to blood 4] +├── portraits/ +│ ├── portrait_amalgam.png +│ └── [other card portraits] +├── symbols/ +│ ├── portrait_amalgam.png +│ └── [other card symbols] +├── tribes/ +│ ├── tribe_bird.png +│ ├── tribe_canine.png +│ ├── tribe_hooved.png +│ ├── tribe_insect.png +│ └── tribe_reptile.png +├── squid_title.png (name for squid cards) +└── HEAVYWEIGHT.ttf +``` \ No newline at end of file diff --git a/act1_deathcards_ru.json b/act1_deathcards_ru.json new file mode 100644 index 0000000..e2f6e81 --- /dev/null +++ b/act1_deathcards_ru.json @@ -0,0 +1,246 @@ +[ + { + "background": "common", + "name": "берке", + "portrait": { + "base": 3, + "mouth": 2, + "eyes": 5 + }, + "symbols": [ + "icecube", + "guarddog" + ], + "hp": 1, + "cost-type": "blood", + "cost-amount": 2, + "damage": 2 + }, + { + "background": "common", + "name": "горностай", + "portrait": "pozstoat", + "cost-type": "blood", + "cost-amount": 1, + "hp": 3, + "damage": 1 + }, + { + "background": "common", + "name": "дэвид", + "portrait": { + "base": 4, + "mouth": 3, + "eyes": 3 + }, + "symbols": [ + "strafepush", + "sharp" + ], + "cost-type": "blood", + "cost-amount": 2, + "hp": 4, + "damage": 2 + }, + { + "background": "common", + "name": "дэниел", + "portrait": { + "base": 3, + "mouth": 4, + "eyes": 2 + }, + "symbols": [ + "doublestrike" + ], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 2 + }, + { + "background": "common", + "name": "камински", + "portrait": { + "base": 7, + "mouth": 4, + "eyes": 2 + }, + "symbols": [ + "guarddog", + "sharp" + ], + "cost-type": "bone", + "cost-amount": 1, + "hp": 1, + "damage": 0 + }, + { + "background": "common", + "name": "кевин", + "portrait": { + "base": 4, + "mouth": 3, + "eyes": 2 + }, + "symbols": [ + "strafeswap", + "tailonhit" + ], + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": 2 + }, + { + "background": "common", + "name": "кейси", + "portrait": { + "base": 9, + "mouth": 2, + "eyes": 9 + }, + "symbols": [ + "splitstrike", + "sharp" + ], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1 + }, + { + "background": "common", + "name": "клоп-вонючка", + "portrait": "stinkbug", + "symbols": [ + "debuffenemy" + ], + "cost-type": "bone", + "cost-amount": 2, + "tribe": "insect", + "hp": 2, + "damage": 1 + }, + { + "background": "common", + "name": "коди", + "portrait": { + "base": 6, + "mouth": 3, + "eyes": 3 + }, + "symbols": [ + "whackamole", + "tailonhit" + ], + "cost-type": "blood", + "cost-amount": 2, + "hp": 1, + "damage": 3 + }, + { + "background": "common", + "name": "луи", + "portrait": { + "base": 1, + "mouth": 3, + "eyes": 1 + }, + "symbols": [ + "strafe", + "submerge" + ], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1 + }, + { + "background": "common", + "name": "люк кардер", + "portrait": { + "base": 3, + "mouth": 1, + "eyes": 1 + }, + "hp": 4, + "damage": 4 + }, + { + "background": "common", + "name": "малорослый волк", + "portrait": "magewolf", + "cost-type": "blood", + "cost-amount": 1, + "tribe": "canine", + "hp": 2, + "damage": 2 + }, + { + "background": "common", + "name": "окт 19", + "portrait": { + "base": 9, + "mouth": 6, + "eyes": 3 + }, + "symbols": [ + "deathtouch" + ], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 3 + }, + { + "background": "common", + "name": "реджинальд", + "portrait": { + "base": 6, + "mouth": 6, + "eyes": 3 + }, + "symbols": [ + "deathtouch" + ], + "cost-type": "bone", + "cost-amount": 3, + "hp": 3, + "damage": 1 + }, + { + "background": "common", + "name": "тамара", + "portrait": { + "base": 2, + "mouth": 4, + "eyes": 4 + }, + "symbols": [ + "strafepush", + "tailonhit" + ], + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": 2 + }, + { + "background": "common", + "name": "шон", + "portrait": { + "base": 5, + "mouth": 1, + "eyes": 1 + }, + "symbols": [ + "reach", + "deathtouch" + ], + "cost-type": "blood", + "cost-amount": 2, + "hp": 6, + "damage": 1 + } +] \ No newline at end of file diff --git a/act1_items_ru.json b/act1_items_ru.json new file mode 100644 index 0000000..940809a --- /dev/null +++ b/act1_items_ru.json @@ -0,0 +1,102 @@ +[ + { + "background": "blank", + "name": "пассатижи", + "portrait": "pliers" + }, + { + "background": "blank", + "name": "ножницы", + "portrait": "scissors" + }, + { + "background": "blank", + "name": "белка в бутылке", + "portrait": "squirrelbottle" + }, + { + "background": "blank", + "name": "камень в бутылке", + "portrait": "terrainbottle" + }, + { + "background": "blank", + "name": "амёба в бутылке", + "portrait": "amoebabottle" + }, + { + "background": "blank", + "name": "шкуросъёмный нож", + "portrait": "trapperknife" + }, + { + "background": "blank", + "name": "опоссум в бутылке", + "portrait": "frozenopossumbottle" + }, + { + "background": "blank", + "name": "коза в бутылке", + "portrait": "goatbottle" + }, + { + "background": "blank", + "name": "рыболовный крюк", + "portrait": "fishhook" + }, + { + "background": "blank", + "name": "сорочья лупа", + "portrait": "magnifyingglass" + }, + { + "background": "blank", + "name": "веер гарпии", + "portrait": "birdlegfan" + }, + { + "background": "blank", + "name": "круговорот", + "portrait": "pocketwatch" + }, + { + "background": "blank", + "name": "надгробие", + "portrait": "grave" + }, + { + "background": "blank", + "name": "цветок", + "portrait": "flower" + }, + { + "background": "blank", + "name": "отбеливатель", + "portrait": "bleachpot" + }, + { + "background": "blank", + "name": "песочные часы", + "portrait": "hourglass" + }, + { + "background": "blank", + "name": "свинка-копилка", + "portrait": "piggybank" + }, + { + "background": "blank", + "name": "провал", + "portrait": "goobottle" + }, + { + "background": "blank", + "name": "особый кинжал", + "portrait": "specialdagger" + }, + { + "background": "blank", + "name": "[ERROR] в бутылке", + "portrait": "whitenoisebottle" + } +] \ No newline at end of file diff --git a/act1_ru.json b/act1_ru.json new file mode 100644 index 0000000..3b863c2 --- /dev/null +++ b/act1_ru.json @@ -0,0 +1,1048 @@ +[ + { + "background": "common", + "name": "Аквабелка", + "portrait": "aquasquirrel", + "symbols": ["submerge"], + "hp": 1, + "damage": 0 + }, + { + "background": "common", + "name": "Белка", + "portrait": "squirrel", + "symbols": [], + "hp": 1, + "damage": 0 + }, + { + "background": "common", + "name": "Густой Дым", + "decal": "smoke", + "portrait": "smoke_improved", + "symbols": ["quadruplebones"], + "hp": 3, + "damage": 1 + }, + { + "background": "common", + "name": "Дым", + "decal": "smoke", + "portrait": "smoke", + "symbols": ["quadruplebones"], + "hp": 1, + "damage": 0 + }, + { + "background": "terrain", + "name": "Булыжник", + "portrait": "boulder", + "symbols": ["madeofstone"], + "hp": 5 + }, + { + "background": "terrain", + "name": "Ведро с Наживкой", + "portrait": "baitbucket", + "symbols": [], + "hp": 1, + "decal": "blood_2" + }, + { + "background": "terrain", + "name": "Волк в Клетке", + "portrait": "cagedwolf", + "symbols": [], + "cost-type": "blood", + "cost-amount": 2, + "hp": 5, + "tribe": "canine" + }, + { + "background": "terrain", + "name": "Волчья Шкура", + "portrait": "pelt_wolf", + "symbols": [], + "hp": 2 + }, + { + "background": "terrain", + "name": "Замёрзший Опоссум", + "portrait": "frozen_opossum", + "symbols": ["icecube"], + "hp": 5 + }, + { + "background": "golden", + "name": "Золотая Шкура", + "portrait": "pelt_golden", + "symbols": [], + "hp": 3 + }, + { + "background": "golden", + "name": "Золотой Самородок", + "portrait": "goldnugget", + "symbols": [], + "hp": 2 + }, + { + "background": "terrain", + "name": "Колокольчик", + "portrait": "dausbell", + "symbols": [], + "hp": 1 + }, + { + "background": "terrain", + "name": "Кроличья Шкурка", + "portrait": "pelt_hare", + "symbols": [], + "hp": 1 + }, + { + "background": "terrain", + "name": "Пень", + "portrait": "stump", + "symbols": [], + "hp": 3 + }, + { + "background": "terrain", + "name": "Пихта Великая", + "portrait": "tree", + "symbols": ["reach"], + "hp": 3 + }, + { + "background": "terrain", + "name": "Пихта Снежная", + "portrait": "tree_snowcovered", + "symbols": ["reach"], + "hp": 4 + }, + { + "background": "terrain", + "name": "Плотина", + "portrait": "dam", + "symbols": [], + "hp": 2 + }, + { + "background": "terrain", + "name": "Прыгающая Ловушка", + "portrait": "trap", + "symbols": ["reach" , "steeltrap"], + "hp": 1 + }, + { + "background": "terrain", + "name": "Разбитое Яйцо", + "portrait": "brokenegg", + "symbols": [], + "hp": 1 + }, + { + "background": "terrain", + "name": "Странная Лягушка", + "portrait": "trapfrog", + "symbols": ["reach"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Виляющий Хвост", + "portrait": "skink_tail", + "symbols": [], + "hp": 2, + "damage": 0 + }, + { + "background": "common", + "name": "Извивающаяся Нога", + "portrait": "insect_tail", + "symbols": [], + "hp": 2, + "damage": 0 + }, + { + "background": "common", + "name": "Хвостовые Перья", + "portrait": "bird_tail", + "symbols": [], + "hp": 2, + "damage": 0 + }, + { + "background": "common", + "name": "Пушистый Хвост", + "portrait": "canine_tail", + "symbols": [], + "hp": 2, + "damage": 0 + }, + { + "background": "common", + "name": "Кролик", + "portrait": "rabbit", + "symbols": [], + "hp": 1, + "damage": 0 + }, + { + "background": "common", + "name": "Позвонок", + "portrait": "vertebra", + "symbols": [], + "hp": 1, + "damage": 0, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Полевые Мыши", + "portrait": "fieldmice", + "symbols": [], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 2 + }, + { + "background": "common", + "name": "Пчела", + "portrait": "bee", + "symbols": ["flying"], + "hp": 1, + "damage": 1, + "tribe": "insect" + }, + { + "background": "common", + "name": "Богомол", + "portrait": "mantis", + "symbols": ["splitstrike"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1, + "tribe": "insect" + }, + { + "background": "common", + "name": "Кольцевой Червь", + "portrait": "ringworm", + "symbols": [], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 0, + "tribe": "insect" + }, + { + "background": "common", + "name": "Крылатый Муравей", + "portrait": "antflying", + "symbols": ["flying"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": "ants", + "tribe": "insect" + }, + { + "background": "common", + "name": "Муравьиная Матка", + "portrait": "antqueen", + "symbols": ["drawant"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": "ants", + "tribe": "insect" + }, + { + "background": "common", + "name": "Мучной червь", + "portrait": "mealworm", + "symbols": ["morsel"], + "cost-type": "bone", + "cost-amount": 2, + "hp": 2, + "damage": 0, + "tribe": "insect" + }, + { + "background": "common", + "name": "Рабочий Муравей", + "portrait": "ant", + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": "ants", + "tribe": "insect" + }, + { + "background": "common", + "name": "Опарыши Мертвечины", + "portrait": "maggots", + "symbols": ["corpseeater"], + "cost-type": "bone", + "cost-amount": 5, + "hp": 2, + "damage": 1, + "tribe": "insect" + }, + { + "background": "common", + "name": "Пчелиный улей", + "portrait": "beehive", + "symbols": ["beesonhit"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 0, + "tribe": "insect" + }, + { + "background": "common", + "name": "Таракан", + "portrait": "cockroach", + "symbols": ["drawcopyondeath"], + "cost-type": "bone", + "cost-amount": 4, + "hp": 1, + "damage": 1, + "tribe": "insect" + }, + { + "background": "common", + "name": "Воробей", + "portrait": "sparrow", + "symbols": ["flying"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1, + "tribe": "bird" + }, + { + "background": "common", + "name": "Ворон", + "portrait": "raven", + "symbols": ["flying"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": 2, + "tribe": "bird" + }, + { + "background": "common", + "name": "Гриф-Индейка", + "portrait": "vulture", + "symbols": ["flying"], + "cost-type": "bone", + "cost-amount": 8, + "hp": 3, + "damage": 3, + "tribe": "bird" + }, + { + "background": "common", + "name": "Зимородок", + "portrait": "kingfisher", + "symbols": ["flying", "submerge"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1, + "tribe": "bird" + }, + { + "background": "common", + "name": "Кукушка", + "portrait": "cuckoo", + "symbols": ["flying", "createegg"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1, + "tribe": "bird" + }, + { + "background": "common", + "name": "Сорока", + "portrait": "magpie", + "symbols": ["flying", "tutor"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 1, + "damage": 1, + "tribe": "bird" + }, + { + "background": "common", + "name": "Ягнятник", + "portrait": "lammergeier", + "symbols": ["flying"], + "cost-type": "blood", + "cost-amount": 3, + "hp": 4, + "damage": "bones", + "tribe": "bird" + }, + { + "background": "common", + "name": "Яйцо Ворона", + "portrait": "ravenegg", + "symbols": ["evolve_1"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 0, + "tribe": "bird" + }, + { + "background": "common", + "name": "Гадюка", + "portrait": "adder", + "symbols": ["deathtouch"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 1, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Головастик", + "portrait": "tadpole", + "symbols": ["submerge", "evolve_1"], + "hp": 1, + "damage": 0, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Гремучник", + "portrait": "rattler", + "cost-type": "bone", + "cost-amount": 6, + "hp": 1, + "damage": 3, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Жаба", + "portrait": "bullfrog", + "symbols": ["reach"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Иловая Черепаха", + "portrait": "mudturtle_shelled", + "symbols": ["deathshield"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 2, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Сцинк", + "portrait": "skink", + "symbols": ["tailonhit"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Черепаха", + "portrait": "turtle", + "cost-type": "blood", + "cost-amount": 2, + "hp": 6, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "common", + "name": "Альфа", + "portrait": "alpha", + "symbols": ["buffneighbours"], + "cost-type": "bone", + "cost-amount": 4, + "hp": 2, + "damage": 1, + "tribe": "canine" + }, + { + "background": "common", + "name": "Волк", + "portrait": "wolf", + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 3, + "tribe": "canine" + }, + { + "background": "common", + "name": "Волчонок", + "portrait": "wolfcub", + "symbols": ["evolve_1"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1, + "tribe": "canine" + }, + { + "background": "common", + "name": "Гончая", + "portrait": "bloodhound", + "symbols": ["guarddog"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": 2, + "tribe": "canine" + }, + { + "background": "common", + "name": "Койот", + "portrait": "coyote", + "cost-type": "bone", + "cost-amount": 4, + "hp": 1, + "damage": 2, + "tribe": "canine" + }, + { + "background": "common", + "name": "Ужасный Волк", + "portrait": "direwolf", + "symbols": ["doublestrike"], + "cost-type": "blood", + "cost-amount": 3, + "hp": 5, + "damage": 2, + "tribe": "canine" + }, + { + "background": "common", + "name": "Ужасный Волчонок", + "portrait": "direwolfcub", + "symbols": ["evolve_1", "bonedigger"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 1, + "damage": 1, + "tribe": "canine" + }, + { + "background": "common", + "name": "Благородный Олень", + "portrait": "redhart", + "symbols": ["strafe"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": "sacrifices", + "tribe": "hooved" + }, + { + "background": "common", + "name": "Вилорог", + "portrait": "pronghorn", + "symbols": ["strafe", "splitstrike"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": 1, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Вьючный Мул", + "portrait": "mule", + "symbols": ["strafe", "randomconsumable"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 5, + "damage": 0, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Дикий Бык", + "portrait": "bull", + "symbols": ["strafeswap"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 3, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Лось", + "portrait": "moose", + "symbols": ["strafepush"], + "cost-type": "blood", + "cost-amount": 3, + "hp": 7, + "damage": 3, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Оленёнок", + "portrait": "deercub", + "symbols": ["strafe", "evolve_1"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Олень", + "portrait": "deer", + "symbols": ["strafe"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 4, + "damage": 2, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Чёрная Коза", + "portrait": "goat", + "symbols": ["tripleblood"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 0, + "tribe": "hooved" + }, + { + "background": "common", + "name": "Белая акула", + "decal": "blood_2", + "portrait": "shark", + "symbols": ["submerge"], + "cost-type": "blood", + "cost-amount": 3, + "hp": 2, + "damage": 4 + }, + { + "background": "common", + "name": "Бобр", + "portrait": "beaver", + "symbols": ["createdams"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 4, + "damage": 1 + }, + { + "background": "common", + "name": "Выдра", + "portrait": "otter", + "symbols": ["submerge"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1 + }, + { + "background": "common", + "name": "Горностай", + "portrait": "stoat", + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1 + }, + { + "background": "common", + "name": "Гризли", + "portrait": "grizzly", + "cost-type": "blood", + "cost-amount": 3, + "hp": 6, + "damage": 4 + }, + { + "background": "common", + "name": "Дикобраз", + "portrait": "porcupine", + "symbols": ["sharp"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 1 + }, + { + "background": "common", + "name": "Енот", + "portrait": "raccoon", + "symbols": ["opponentbones"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1 + }, + { + "background": "common", + "name": "Кошка", + "portrait": "cat", + "symbols": ["sacrificial"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 0 + }, + { + "background": "common", + "name": "Крольчатник", + "portrait": "warren", + "symbols": ["drawrabbits"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 2, + "damage": 0 + }, + { + "background": "common", + "name": "Крот", + "portrait": "mole", + "symbols": ["whackamole"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 4, + "damage": 0 + }, + { + "background": "common", + "name": "Крысиный Король", + "portrait": "ratking", + "symbols": ["quadruplebones"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 1, + "damage": 2 + }, + { + "background": "common", + "name": "Летучая Мышь", + "portrait": "bat", + "symbols": ["flying"], + "cost-type": "bone", + "cost-amount": 4, + "hp": 1, + "damage": 2 + }, + { + "background": "common", + "name": "Опоссум", + "portrait": "opossum", + "cost-type": "bone", + "cost-amount": 2, + "hp": 1, + "damage": 1 + }, + { + "background": "common", + "name": "Полевые Мыши", + "portrait": "fieldmice", + "symbols": ["drawcopy"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 2 + }, + { + "background": "common", + "name": "Скунс", + "portrait": "skunk", + "symbols": ["debuffenemy"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 3, + "damage": 0 + }, + { + "background": "common", + "name": "$squid_title", + "portrait": "squidbell", + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": "bell" + }, + { + "background": "common", + "name": "$squid_title", + "portrait": "squidcards", + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": "cardsinhand" + }, + { + "background": "common", + "name": "$squid_title", + "portrait": "squidmirror", + "cost-type": "blood", + "cost-amount": 1, + "hp": 3, + "damage": "mirror" + }, + { + "background": "rare", + "name": "13-е Дитя", + "portrait": "jerseydevil", + "symbols": ["flying", "sacrificial"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 2, + "tribe": "hooved" + }, + { + "background": "rare", + "name": "13-е дитя", + "portrait": "jerseydevil_sleeping", + "symbols": ["sacrificial"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 0, + "tribe": "hooved" + }, + { + "background": "rare", + "name": "Амальгама", + "portrait": "amalgam", + "cost-type": "blood", + "cost-amount": 2, + "hp": 3, + "damage": 3, + "tribe": "all" + }, + { + "background": "rare", + "name": "Амёба", + "portrait": "amoeba", + "symbols": ["randomability"], + "cost-type": "bone", + "cost-amount": 2, + "hp": 2, + "damage": 1 + }, + { + "background": "rare", + "name": "Бог Богомолов", + "portrait": "mantisgod", + "symbols": ["tristrike"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1, + "tribe": "insect" + }, + { + "background": "rare", + "name": "Великий Кракен", + "portrait": "kraken", + "symbols": ["submergesquid"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 1, + "damage": 1 + }, + { + "background": "rare", + "name": "Вьючная Крыса", + "portrait": "packrat", + "symbols": ["randomconsumable"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 2 + }, + { + "background": "rare", + "name": "Гекк", + "portrait": "geck", + "hp": 1, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "rare", + "name": "Гидра", + "portrait": "hydra", + "symbols": ["splitstrike", "tristrike"], + "cost-type": "bone", + "cost-amount": 1, + "hp": 5, + "damage": 1, + "tribe": "all" + }, + { + "background": "rare", + "name": "Длинный Олень", + "symbols": ["strafe", "deathtouch"], + "cost-type": "bone", + "cost-amount": 4, + "hp": 2, + "damage": 1, + "tribe": "hooved", + "decal": "snelk" + }, + { + "background": "rare", + "name": "Иджирак", + "portrait": "ijiraq", + "symbols": ["preventattack"], + "hp": 1, + "damage": 4 + }, + { + "background": "rare", + "name": "Любопытное Яйцо", + "portrait": "hydraegg", + "symbols": ["hydraegg"], + "cost-type": "bone", + "cost-amount": 1, + "hp": 1, + "damage": 0 + }, + { + "background": "rare", + "name": "Морской Крот", + "portrait": "moleseaman", + "symbols": ["reach" , "whackamole"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 8, + "damage": 1 + }, + { + "background": "rare", + "name": "Пухоеды", + "portrait": "lice", + "symbols": ["doublestrike"], + "cost-type": "blood", + "cost-amount": 4, + "hp": 1, + "damage": 1, + "tribe": "insect" + }, + { + "background": "rare", + "name": "Странная Куколка", + "portrait": "mothman_2", + "symbols": ["evolve_1"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 3, + "damage": 0, + "tribe": "insect" + }, + { + "background": "rare", + "name": "Странная Личинка", + "portrait": "mothman_1", + "symbols": ["evolve_1"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 3, + "damage": 0, + "tribe": "insect" + }, + { + "background": "rare", + "name": "Человек-Мотылёк", + "portrait": "mothman_3", + "symbols": ["flying"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 3, + "damage": 7, + "tribe": "insect" + }, + { + "background": "rare", + "name": "Туз", + "portrait": "daus", + "symbols": ["createbells"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 2, + "damage": 2, + "tribe": "hooved" + }, + { + "background": "rare", + "name": "Уроборос", + "portrait": "ouroboros", + "symbols": ["drawcopyondeath"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 1, + "damage": 1, + "tribe": "reptile" + }, + { + "background": "rare", + "name": "Ураюли", + "portrait": "urayuli", + "symbols": [], + "cost-type": "blood", + "cost-amount": 4, + "hp": 7, + "damage": 7 + }, + { + "background": "rare", + "name": "Ходаг", + "portrait": "hodag", + "symbols": ["gainattackonkill"], + "cost-type": "blood", + "cost-amount": 2, + "hp": 5, + "damage": 1 + }, + { + "background": "rare", + "name": "Человек-Крот", + "portrait": "moleman", + "symbols": ["reach" , "whackamole"], + "cost-type": "blood", + "cost-amount": 1, + "hp": 6, + "damage": 0 + } +] \ No newline at end of file diff --git a/assets/HEAVYWEIGHT.ttf b/assets/HEAVYWEIGHT.ttf new file mode 100644 index 0000000..fecf09b Binary files /dev/null and b/assets/HEAVYWEIGHT.ttf differ diff --git a/assets/back/aqua.png b/assets/back/aqua.png new file mode 100644 index 0000000..6476846 Binary files /dev/null and b/assets/back/aqua.png differ diff --git a/assets/back/bees.png b/assets/back/bees.png new file mode 100644 index 0000000..9602110 Binary files /dev/null and b/assets/back/bees.png differ diff --git a/assets/back/common.png b/assets/back/common.png new file mode 100644 index 0000000..c1e927c Binary files /dev/null and b/assets/back/common.png differ diff --git a/assets/back/item.png b/assets/back/item.png new file mode 100644 index 0000000..a1eb0d8 Binary files /dev/null and b/assets/back/item.png differ diff --git a/assets/back/squirrel.png b/assets/back/squirrel.png new file mode 100644 index 0000000..f02098a Binary files /dev/null and b/assets/back/squirrel.png differ diff --git a/assets/backgrounds/blank.png b/assets/backgrounds/blank.png new file mode 100644 index 0000000..9d4c66f Binary files /dev/null and b/assets/backgrounds/blank.png differ diff --git a/assets/backgrounds/common.png b/assets/backgrounds/common.png new file mode 100644 index 0000000..4332700 Binary files /dev/null and b/assets/backgrounds/common.png differ diff --git a/assets/backgrounds/golden.png b/assets/backgrounds/golden.png new file mode 100644 index 0000000..2ef45ac Binary files /dev/null and b/assets/backgrounds/golden.png differ diff --git a/assets/backgrounds/rare.png b/assets/backgrounds/rare.png new file mode 100644 index 0000000..da76906 Binary files /dev/null and b/assets/backgrounds/rare.png differ diff --git a/assets/backgrounds/terrain.png b/assets/backgrounds/terrain.png new file mode 100644 index 0000000..c295c64 Binary files /dev/null and b/assets/backgrounds/terrain.png differ diff --git a/assets/costs/cost_10bone.png b/assets/costs/cost_10bone.png new file mode 100644 index 0000000..2b52416 Binary files /dev/null and b/assets/costs/cost_10bone.png differ diff --git a/assets/costs/cost_1blood.png b/assets/costs/cost_1blood.png new file mode 100644 index 0000000..53396d3 Binary files /dev/null and b/assets/costs/cost_1blood.png differ diff --git a/assets/costs/cost_1bone.png b/assets/costs/cost_1bone.png new file mode 100644 index 0000000..bfe6af4 Binary files /dev/null and b/assets/costs/cost_1bone.png differ diff --git a/assets/costs/cost_2blood.png b/assets/costs/cost_2blood.png new file mode 100644 index 0000000..8d91370 Binary files /dev/null and b/assets/costs/cost_2blood.png differ diff --git a/assets/costs/cost_2bone.png b/assets/costs/cost_2bone.png new file mode 100644 index 0000000..0cb3f32 Binary files /dev/null and b/assets/costs/cost_2bone.png differ diff --git a/assets/costs/cost_3blood.png b/assets/costs/cost_3blood.png new file mode 100644 index 0000000..7f20ad1 Binary files /dev/null and b/assets/costs/cost_3blood.png differ diff --git a/assets/costs/cost_3bone.png b/assets/costs/cost_3bone.png new file mode 100644 index 0000000..160e9a6 Binary files /dev/null and b/assets/costs/cost_3bone.png differ diff --git a/assets/costs/cost_4blood.png b/assets/costs/cost_4blood.png new file mode 100644 index 0000000..700f4f2 Binary files /dev/null and b/assets/costs/cost_4blood.png differ diff --git a/assets/costs/cost_4bone.png b/assets/costs/cost_4bone.png new file mode 100644 index 0000000..f736ef7 Binary files /dev/null and b/assets/costs/cost_4bone.png differ diff --git a/assets/costs/cost_5bone.png b/assets/costs/cost_5bone.png new file mode 100644 index 0000000..09f2322 Binary files /dev/null and b/assets/costs/cost_5bone.png differ diff --git a/assets/costs/cost_6bone.png b/assets/costs/cost_6bone.png new file mode 100644 index 0000000..1604528 Binary files /dev/null and b/assets/costs/cost_6bone.png differ diff --git a/assets/costs/cost_7bone.png b/assets/costs/cost_7bone.png new file mode 100644 index 0000000..e57dae4 Binary files /dev/null and b/assets/costs/cost_7bone.png differ diff --git a/assets/costs/cost_8bone.png b/assets/costs/cost_8bone.png new file mode 100644 index 0000000..6413b1a Binary files /dev/null and b/assets/costs/cost_8bone.png differ diff --git a/assets/costs/cost_9bone.png b/assets/costs/cost_9bone.png new file mode 100644 index 0000000..240cab5 Binary files /dev/null and b/assets/costs/cost_9bone.png differ diff --git a/assets/deathcard/deathcard_base_1.png b/assets/deathcard/deathcard_base_1.png new file mode 100644 index 0000000..421336a Binary files /dev/null and b/assets/deathcard/deathcard_base_1.png differ diff --git a/assets/deathcard/deathcard_base_2.png b/assets/deathcard/deathcard_base_2.png new file mode 100644 index 0000000..64cbc65 Binary files /dev/null and b/assets/deathcard/deathcard_base_2.png differ diff --git a/assets/deathcard/deathcard_base_3.png b/assets/deathcard/deathcard_base_3.png new file mode 100644 index 0000000..bc84115 Binary files /dev/null and b/assets/deathcard/deathcard_base_3.png differ diff --git a/assets/deathcard/deathcard_base_4.png b/assets/deathcard/deathcard_base_4.png new file mode 100644 index 0000000..ec101c8 Binary files /dev/null and b/assets/deathcard/deathcard_base_4.png differ diff --git a/assets/deathcard/deathcard_base_5.png b/assets/deathcard/deathcard_base_5.png new file mode 100644 index 0000000..a6eb47d Binary files /dev/null and b/assets/deathcard/deathcard_base_5.png differ diff --git a/assets/deathcard/deathcard_base_6.png b/assets/deathcard/deathcard_base_6.png new file mode 100644 index 0000000..a2ab4b4 Binary files /dev/null and b/assets/deathcard/deathcard_base_6.png differ diff --git a/assets/deathcard/deathcard_base_7.png b/assets/deathcard/deathcard_base_7.png new file mode 100644 index 0000000..b37f4ba Binary files /dev/null and b/assets/deathcard/deathcard_base_7.png differ diff --git a/assets/deathcard/deathcard_base_8.png b/assets/deathcard/deathcard_base_8.png new file mode 100644 index 0000000..e7b6688 Binary files /dev/null and b/assets/deathcard/deathcard_base_8.png differ diff --git a/assets/deathcard/deathcard_base_9.png b/assets/deathcard/deathcard_base_9.png new file mode 100644 index 0000000..de8b849 Binary files /dev/null and b/assets/deathcard/deathcard_base_9.png differ diff --git a/assets/deathcard/deathcard_eyes_1.png b/assets/deathcard/deathcard_eyes_1.png new file mode 100644 index 0000000..10eaa5d Binary files /dev/null and b/assets/deathcard/deathcard_eyes_1.png differ diff --git a/assets/deathcard/deathcard_eyes_2.png b/assets/deathcard/deathcard_eyes_2.png new file mode 100644 index 0000000..552db2e Binary files /dev/null and b/assets/deathcard/deathcard_eyes_2.png differ diff --git a/assets/deathcard/deathcard_eyes_3.png b/assets/deathcard/deathcard_eyes_3.png new file mode 100644 index 0000000..877add5 Binary files /dev/null and b/assets/deathcard/deathcard_eyes_3.png differ diff --git a/assets/deathcard/deathcard_eyes_4.png b/assets/deathcard/deathcard_eyes_4.png new file mode 100644 index 0000000..ccf5ea9 Binary files /dev/null and b/assets/deathcard/deathcard_eyes_4.png differ diff --git a/assets/deathcard/deathcard_eyes_5.png b/assets/deathcard/deathcard_eyes_5.png new file mode 100644 index 0000000..c0fdd65 Binary files /dev/null and b/assets/deathcard/deathcard_eyes_5.png differ diff --git a/assets/deathcard/deathcard_eyes_6.png b/assets/deathcard/deathcard_eyes_6.png new file mode 100644 index 0000000..8ef6a30 Binary files /dev/null and b/assets/deathcard/deathcard_eyes_6.png differ diff --git a/assets/deathcard/deathcard_eyes_7.png b/assets/deathcard/deathcard_eyes_7.png new file mode 100644 index 0000000..e9198a2 Binary files /dev/null and b/assets/deathcard/deathcard_eyes_7.png differ diff --git a/assets/deathcard/deathcard_eyes_8.png b/assets/deathcard/deathcard_eyes_8.png new file mode 100644 index 0000000..b3db008 Binary files /dev/null and b/assets/deathcard/deathcard_eyes_8.png differ diff --git a/assets/deathcard/deathcard_eyes_9.png b/assets/deathcard/deathcard_eyes_9.png new file mode 100644 index 0000000..6cba6fa Binary files /dev/null and b/assets/deathcard/deathcard_eyes_9.png differ diff --git a/assets/deathcard/deathcard_mouth_1.png b/assets/deathcard/deathcard_mouth_1.png new file mode 100644 index 0000000..2a7cc2b Binary files /dev/null and b/assets/deathcard/deathcard_mouth_1.png differ diff --git a/assets/deathcard/deathcard_mouth_2.png b/assets/deathcard/deathcard_mouth_2.png new file mode 100644 index 0000000..4e2d0b2 Binary files /dev/null and b/assets/deathcard/deathcard_mouth_2.png differ diff --git a/assets/deathcard/deathcard_mouth_3.png b/assets/deathcard/deathcard_mouth_3.png new file mode 100644 index 0000000..d81a74a Binary files /dev/null and b/assets/deathcard/deathcard_mouth_3.png differ diff --git a/assets/deathcard/deathcard_mouth_4.png b/assets/deathcard/deathcard_mouth_4.png new file mode 100644 index 0000000..1b61be1 Binary files /dev/null and b/assets/deathcard/deathcard_mouth_4.png differ diff --git a/assets/deathcard/deathcard_mouth_5.png b/assets/deathcard/deathcard_mouth_5.png new file mode 100644 index 0000000..8e02f0c Binary files /dev/null and b/assets/deathcard/deathcard_mouth_5.png differ diff --git a/assets/deathcard/deathcard_mouth_6.png b/assets/deathcard/deathcard_mouth_6.png new file mode 100644 index 0000000..b8af753 Binary files /dev/null and b/assets/deathcard/deathcard_mouth_6.png differ diff --git a/assets/deathcard/deathcard_mouth_7.png b/assets/deathcard/deathcard_mouth_7.png new file mode 100644 index 0000000..879979a Binary files /dev/null and b/assets/deathcard/deathcard_mouth_7.png differ diff --git a/assets/deathcard/deathcard_mouth_8.png b/assets/deathcard/deathcard_mouth_8.png new file mode 100644 index 0000000..06bc077 Binary files /dev/null and b/assets/deathcard/deathcard_mouth_8.png differ diff --git a/assets/deathcard/deathcard_mouth_9.png b/assets/deathcard/deathcard_mouth_9.png new file mode 100644 index 0000000..9b39ac0 Binary files /dev/null and b/assets/deathcard/deathcard_mouth_9.png differ diff --git a/assets/decals/decal_blood_1.png b/assets/decals/decal_blood_1.png new file mode 100644 index 0000000..8ecf3a0 Binary files /dev/null and b/assets/decals/decal_blood_1.png differ diff --git a/assets/decals/decal_blood_2.png b/assets/decals/decal_blood_2.png new file mode 100644 index 0000000..d0e8398 Binary files /dev/null and b/assets/decals/decal_blood_2.png differ diff --git a/assets/decals/decal_blood_3.png b/assets/decals/decal_blood_3.png new file mode 100644 index 0000000..e172d39 Binary files /dev/null and b/assets/decals/decal_blood_3.png differ diff --git a/assets/decals/decal_blood_4.png b/assets/decals/decal_blood_4.png new file mode 100644 index 0000000..16c4c2e Binary files /dev/null and b/assets/decals/decal_blood_4.png differ diff --git a/assets/decals/decal_smoke.png b/assets/decals/decal_smoke.png new file mode 100644 index 0000000..6bd48df Binary files /dev/null and b/assets/decals/decal_smoke.png differ diff --git a/assets/decals/decal_snelk.png b/assets/decals/decal_snelk.png new file mode 100644 index 0000000..eceba72 Binary files /dev/null and b/assets/decals/decal_snelk.png differ diff --git a/assets/portraits/portrait_adder.png b/assets/portraits/portrait_adder.png new file mode 100644 index 0000000..d4a8f2a Binary files /dev/null and b/assets/portraits/portrait_adder.png differ diff --git a/assets/portraits/portrait_alpha.png b/assets/portraits/portrait_alpha.png new file mode 100644 index 0000000..b0c69ae Binary files /dev/null and b/assets/portraits/portrait_alpha.png differ diff --git a/assets/portraits/portrait_amalgam.png b/assets/portraits/portrait_amalgam.png new file mode 100644 index 0000000..b837ffe Binary files /dev/null and b/assets/portraits/portrait_amalgam.png differ diff --git a/assets/portraits/portrait_amoeba.png b/assets/portraits/portrait_amoeba.png new file mode 100644 index 0000000..6c07a98 Binary files /dev/null and b/assets/portraits/portrait_amoeba.png differ diff --git a/assets/portraits/portrait_amoebabottle.png b/assets/portraits/portrait_amoebabottle.png new file mode 100644 index 0000000..abe5e6f Binary files /dev/null and b/assets/portraits/portrait_amoebabottle.png differ diff --git a/assets/portraits/portrait_ant.png b/assets/portraits/portrait_ant.png new file mode 100644 index 0000000..2d3d013 Binary files /dev/null and b/assets/portraits/portrait_ant.png differ diff --git a/assets/portraits/portrait_antflying.png b/assets/portraits/portrait_antflying.png new file mode 100644 index 0000000..5e98add Binary files /dev/null and b/assets/portraits/portrait_antflying.png differ diff --git a/assets/portraits/portrait_antqueen.png b/assets/portraits/portrait_antqueen.png new file mode 100644 index 0000000..cb4a79f Binary files /dev/null and b/assets/portraits/portrait_antqueen.png differ diff --git a/assets/portraits/portrait_aquasquirrel.png b/assets/portraits/portrait_aquasquirrel.png new file mode 100644 index 0000000..b0ed15a Binary files /dev/null and b/assets/portraits/portrait_aquasquirrel.png differ diff --git a/assets/portraits/portrait_baitbucket.png b/assets/portraits/portrait_baitbucket.png new file mode 100644 index 0000000..1f7015d Binary files /dev/null and b/assets/portraits/portrait_baitbucket.png differ diff --git a/assets/portraits/portrait_bat.png b/assets/portraits/portrait_bat.png new file mode 100644 index 0000000..2a266fb Binary files /dev/null and b/assets/portraits/portrait_bat.png differ diff --git a/assets/portraits/portrait_beaver.png b/assets/portraits/portrait_beaver.png new file mode 100644 index 0000000..ab3b87d Binary files /dev/null and b/assets/portraits/portrait_beaver.png differ diff --git a/assets/portraits/portrait_bee.png b/assets/portraits/portrait_bee.png new file mode 100644 index 0000000..c4e238d Binary files /dev/null and b/assets/portraits/portrait_bee.png differ diff --git a/assets/portraits/portrait_beehive.png b/assets/portraits/portrait_beehive.png new file mode 100644 index 0000000..573579f Binary files /dev/null and b/assets/portraits/portrait_beehive.png differ diff --git a/assets/portraits/portrait_bird_tail.png b/assets/portraits/portrait_bird_tail.png new file mode 100644 index 0000000..7e7082d Binary files /dev/null and b/assets/portraits/portrait_bird_tail.png differ diff --git a/assets/portraits/portrait_birdlegfan.png b/assets/portraits/portrait_birdlegfan.png new file mode 100644 index 0000000..2ae2224 Binary files /dev/null and b/assets/portraits/portrait_birdlegfan.png differ diff --git a/assets/portraits/portrait_bleachpot.png b/assets/portraits/portrait_bleachpot.png new file mode 100644 index 0000000..8aeb252 Binary files /dev/null and b/assets/portraits/portrait_bleachpot.png differ diff --git a/assets/portraits/portrait_bloodhound.png b/assets/portraits/portrait_bloodhound.png new file mode 100644 index 0000000..bb9fc78 Binary files /dev/null and b/assets/portraits/portrait_bloodhound.png differ diff --git a/assets/portraits/portrait_boulder.png b/assets/portraits/portrait_boulder.png new file mode 100644 index 0000000..a7b08a9 Binary files /dev/null and b/assets/portraits/portrait_boulder.png differ diff --git a/assets/portraits/portrait_brokenegg.png b/assets/portraits/portrait_brokenegg.png new file mode 100644 index 0000000..4e5bff3 Binary files /dev/null and b/assets/portraits/portrait_brokenegg.png differ diff --git a/assets/portraits/portrait_bull.png b/assets/portraits/portrait_bull.png new file mode 100644 index 0000000..c23f12a Binary files /dev/null and b/assets/portraits/portrait_bull.png differ diff --git a/assets/portraits/portrait_bullfrog.png b/assets/portraits/portrait_bullfrog.png new file mode 100644 index 0000000..2ac1310 Binary files /dev/null and b/assets/portraits/portrait_bullfrog.png differ diff --git a/assets/portraits/portrait_cagedwolf.png b/assets/portraits/portrait_cagedwolf.png new file mode 100644 index 0000000..90cc0b2 Binary files /dev/null and b/assets/portraits/portrait_cagedwolf.png differ diff --git a/assets/portraits/portrait_canine_tail.png b/assets/portraits/portrait_canine_tail.png new file mode 100644 index 0000000..d730ff1 Binary files /dev/null and b/assets/portraits/portrait_canine_tail.png differ diff --git a/assets/portraits/portrait_cat.png b/assets/portraits/portrait_cat.png new file mode 100644 index 0000000..3bcbb1d Binary files /dev/null and b/assets/portraits/portrait_cat.png differ diff --git a/assets/portraits/portrait_cockroach.png b/assets/portraits/portrait_cockroach.png new file mode 100644 index 0000000..d3be6f2 Binary files /dev/null and b/assets/portraits/portrait_cockroach.png differ diff --git a/assets/portraits/portrait_coyote.png b/assets/portraits/portrait_coyote.png new file mode 100644 index 0000000..7882e00 Binary files /dev/null and b/assets/portraits/portrait_coyote.png differ diff --git a/assets/portraits/portrait_cuckoo.png b/assets/portraits/portrait_cuckoo.png new file mode 100644 index 0000000..4bb5d6b Binary files /dev/null and b/assets/portraits/portrait_cuckoo.png differ diff --git a/assets/portraits/portrait_dam.png b/assets/portraits/portrait_dam.png new file mode 100644 index 0000000..c6cd832 Binary files /dev/null and b/assets/portraits/portrait_dam.png differ diff --git a/assets/portraits/portrait_daus.png b/assets/portraits/portrait_daus.png new file mode 100644 index 0000000..96a7654 Binary files /dev/null and b/assets/portraits/portrait_daus.png differ diff --git a/assets/portraits/portrait_dausbell.png b/assets/portraits/portrait_dausbell.png new file mode 100644 index 0000000..acc05b1 Binary files /dev/null and b/assets/portraits/portrait_dausbell.png differ diff --git a/assets/portraits/portrait_deer.png b/assets/portraits/portrait_deer.png new file mode 100644 index 0000000..7105049 Binary files /dev/null and b/assets/portraits/portrait_deer.png differ diff --git a/assets/portraits/portrait_deercub.png b/assets/portraits/portrait_deercub.png new file mode 100644 index 0000000..c0f722b Binary files /dev/null and b/assets/portraits/portrait_deercub.png differ diff --git a/assets/portraits/portrait_direwolf.png b/assets/portraits/portrait_direwolf.png new file mode 100644 index 0000000..fd89cdc Binary files /dev/null and b/assets/portraits/portrait_direwolf.png differ diff --git a/assets/portraits/portrait_direwolfcub.png b/assets/portraits/portrait_direwolfcub.png new file mode 100644 index 0000000..fc4cb37 Binary files /dev/null and b/assets/portraits/portrait_direwolfcub.png differ diff --git a/assets/portraits/portrait_fieldmice.png b/assets/portraits/portrait_fieldmice.png new file mode 100644 index 0000000..6a6a9b2 Binary files /dev/null and b/assets/portraits/portrait_fieldmice.png differ diff --git a/assets/portraits/portrait_fishhook.png b/assets/portraits/portrait_fishhook.png new file mode 100644 index 0000000..29c474a Binary files /dev/null and b/assets/portraits/portrait_fishhook.png differ diff --git a/assets/portraits/portrait_flower.png b/assets/portraits/portrait_flower.png new file mode 100644 index 0000000..1ce4ffa Binary files /dev/null and b/assets/portraits/portrait_flower.png differ diff --git a/assets/portraits/portrait_frozen_opossum.png b/assets/portraits/portrait_frozen_opossum.png new file mode 100644 index 0000000..d888697 Binary files /dev/null and b/assets/portraits/portrait_frozen_opossum.png differ diff --git a/assets/portraits/portrait_frozenopossumbottle.png b/assets/portraits/portrait_frozenopossumbottle.png new file mode 100644 index 0000000..744a184 Binary files /dev/null and b/assets/portraits/portrait_frozenopossumbottle.png differ diff --git a/assets/portraits/portrait_geck.png b/assets/portraits/portrait_geck.png new file mode 100644 index 0000000..1e797ed Binary files /dev/null and b/assets/portraits/portrait_geck.png differ diff --git a/assets/portraits/portrait_goat.png b/assets/portraits/portrait_goat.png new file mode 100644 index 0000000..7868bbf Binary files /dev/null and b/assets/portraits/portrait_goat.png differ diff --git a/assets/portraits/portrait_goatbottle.png b/assets/portraits/portrait_goatbottle.png new file mode 100644 index 0000000..b1b22b4 Binary files /dev/null and b/assets/portraits/portrait_goatbottle.png differ diff --git a/assets/portraits/portrait_goldnugget.png b/assets/portraits/portrait_goldnugget.png new file mode 100644 index 0000000..72d3100 Binary files /dev/null and b/assets/portraits/portrait_goldnugget.png differ diff --git a/assets/portraits/portrait_goobottle.png b/assets/portraits/portrait_goobottle.png new file mode 100644 index 0000000..bbde90f Binary files /dev/null and b/assets/portraits/portrait_goobottle.png differ diff --git a/assets/portraits/portrait_grave.png b/assets/portraits/portrait_grave.png new file mode 100644 index 0000000..303fb7a Binary files /dev/null and b/assets/portraits/portrait_grave.png differ diff --git a/assets/portraits/portrait_grizzly.png b/assets/portraits/portrait_grizzly.png new file mode 100644 index 0000000..8dd8d4d Binary files /dev/null and b/assets/portraits/portrait_grizzly.png differ diff --git a/assets/portraits/portrait_hodag.png b/assets/portraits/portrait_hodag.png new file mode 100644 index 0000000..1f04910 Binary files /dev/null and b/assets/portraits/portrait_hodag.png differ diff --git a/assets/portraits/portrait_hourglass.png b/assets/portraits/portrait_hourglass.png new file mode 100644 index 0000000..d968ce8 Binary files /dev/null and b/assets/portraits/portrait_hourglass.png differ diff --git a/assets/portraits/portrait_hydra.png b/assets/portraits/portrait_hydra.png new file mode 100644 index 0000000..2161951 Binary files /dev/null and b/assets/portraits/portrait_hydra.png differ diff --git a/assets/portraits/portrait_hydraegg.png b/assets/portraits/portrait_hydraegg.png new file mode 100644 index 0000000..1556609 Binary files /dev/null and b/assets/portraits/portrait_hydraegg.png differ diff --git a/assets/portraits/portrait_ijiraq.png b/assets/portraits/portrait_ijiraq.png new file mode 100644 index 0000000..962efe4 Binary files /dev/null and b/assets/portraits/portrait_ijiraq.png differ diff --git a/assets/portraits/portrait_insect_tail.png b/assets/portraits/portrait_insect_tail.png new file mode 100644 index 0000000..f890c01 Binary files /dev/null and b/assets/portraits/portrait_insect_tail.png differ diff --git a/assets/portraits/portrait_jerseydevil.png b/assets/portraits/portrait_jerseydevil.png new file mode 100644 index 0000000..af824a0 Binary files /dev/null and b/assets/portraits/portrait_jerseydevil.png differ diff --git a/assets/portraits/portrait_jerseydevil_sleeping.png b/assets/portraits/portrait_jerseydevil_sleeping.png new file mode 100644 index 0000000..7ece261 Binary files /dev/null and b/assets/portraits/portrait_jerseydevil_sleeping.png differ diff --git a/assets/portraits/portrait_kingfisher.png b/assets/portraits/portrait_kingfisher.png new file mode 100644 index 0000000..ce25802 Binary files /dev/null and b/assets/portraits/portrait_kingfisher.png differ diff --git a/assets/portraits/portrait_kraken.png b/assets/portraits/portrait_kraken.png new file mode 100644 index 0000000..403edca Binary files /dev/null and b/assets/portraits/portrait_kraken.png differ diff --git a/assets/portraits/portrait_lammergeier.png b/assets/portraits/portrait_lammergeier.png new file mode 100644 index 0000000..16da87c Binary files /dev/null and b/assets/portraits/portrait_lammergeier.png differ diff --git a/assets/portraits/portrait_lice.png b/assets/portraits/portrait_lice.png new file mode 100644 index 0000000..38c5b58 Binary files /dev/null and b/assets/portraits/portrait_lice.png differ diff --git a/assets/portraits/portrait_magewolf.png b/assets/portraits/portrait_magewolf.png new file mode 100644 index 0000000..13a8634 Binary files /dev/null and b/assets/portraits/portrait_magewolf.png differ diff --git a/assets/portraits/portrait_maggots.png b/assets/portraits/portrait_maggots.png new file mode 100644 index 0000000..79414b8 Binary files /dev/null and b/assets/portraits/portrait_maggots.png differ diff --git a/assets/portraits/portrait_magnifyingglass.png b/assets/portraits/portrait_magnifyingglass.png new file mode 100644 index 0000000..b11fad2 Binary files /dev/null and b/assets/portraits/portrait_magnifyingglass.png differ diff --git a/assets/portraits/portrait_magpie.png b/assets/portraits/portrait_magpie.png new file mode 100644 index 0000000..8019411 Binary files /dev/null and b/assets/portraits/portrait_magpie.png differ diff --git a/assets/portraits/portrait_mantis.png b/assets/portraits/portrait_mantis.png new file mode 100644 index 0000000..f4f755c Binary files /dev/null and b/assets/portraits/portrait_mantis.png differ diff --git a/assets/portraits/portrait_mantisgod.png b/assets/portraits/portrait_mantisgod.png new file mode 100644 index 0000000..92f46d8 Binary files /dev/null and b/assets/portraits/portrait_mantisgod.png differ diff --git a/assets/portraits/portrait_mealworm.png b/assets/portraits/portrait_mealworm.png new file mode 100644 index 0000000..deb3ab8 Binary files /dev/null and b/assets/portraits/portrait_mealworm.png differ diff --git a/assets/portraits/portrait_mole.png b/assets/portraits/portrait_mole.png new file mode 100644 index 0000000..262892a Binary files /dev/null and b/assets/portraits/portrait_mole.png differ diff --git a/assets/portraits/portrait_moleman.png b/assets/portraits/portrait_moleman.png new file mode 100644 index 0000000..0b4971c Binary files /dev/null and b/assets/portraits/portrait_moleman.png differ diff --git a/assets/portraits/portrait_moleseaman.png b/assets/portraits/portrait_moleseaman.png new file mode 100644 index 0000000..7180815 Binary files /dev/null and b/assets/portraits/portrait_moleseaman.png differ diff --git a/assets/portraits/portrait_moose.png b/assets/portraits/portrait_moose.png new file mode 100644 index 0000000..a318ed0 Binary files /dev/null and b/assets/portraits/portrait_moose.png differ diff --git a/assets/portraits/portrait_mothman_1.png b/assets/portraits/portrait_mothman_1.png new file mode 100644 index 0000000..066884d Binary files /dev/null and b/assets/portraits/portrait_mothman_1.png differ diff --git a/assets/portraits/portrait_mothman_2.png b/assets/portraits/portrait_mothman_2.png new file mode 100644 index 0000000..2786205 Binary files /dev/null and b/assets/portraits/portrait_mothman_2.png differ diff --git a/assets/portraits/portrait_mothman_3.png b/assets/portraits/portrait_mothman_3.png new file mode 100644 index 0000000..04534d9 Binary files /dev/null and b/assets/portraits/portrait_mothman_3.png differ diff --git a/assets/portraits/portrait_mudturtle_shelled.png b/assets/portraits/portrait_mudturtle_shelled.png new file mode 100644 index 0000000..603fccd Binary files /dev/null and b/assets/portraits/portrait_mudturtle_shelled.png differ diff --git a/assets/portraits/portrait_mule.png b/assets/portraits/portrait_mule.png new file mode 100644 index 0000000..8ef38da Binary files /dev/null and b/assets/portraits/portrait_mule.png differ diff --git a/assets/portraits/portrait_opossum.png b/assets/portraits/portrait_opossum.png new file mode 100644 index 0000000..7efaee2 Binary files /dev/null and b/assets/portraits/portrait_opossum.png differ diff --git a/assets/portraits/portrait_otter.png b/assets/portraits/portrait_otter.png new file mode 100644 index 0000000..1b00247 Binary files /dev/null and b/assets/portraits/portrait_otter.png differ diff --git a/assets/portraits/portrait_ouroboros.png b/assets/portraits/portrait_ouroboros.png new file mode 100644 index 0000000..826ece1 Binary files /dev/null and b/assets/portraits/portrait_ouroboros.png differ diff --git a/assets/portraits/portrait_packrat.png b/assets/portraits/portrait_packrat.png new file mode 100644 index 0000000..9a4b199 Binary files /dev/null and b/assets/portraits/portrait_packrat.png differ diff --git a/assets/portraits/portrait_pelt_golden.png b/assets/portraits/portrait_pelt_golden.png new file mode 100644 index 0000000..66b0d78 Binary files /dev/null and b/assets/portraits/portrait_pelt_golden.png differ diff --git a/assets/portraits/portrait_pelt_hare.png b/assets/portraits/portrait_pelt_hare.png new file mode 100644 index 0000000..816817b Binary files /dev/null and b/assets/portraits/portrait_pelt_hare.png differ diff --git a/assets/portraits/portrait_pelt_wolf.png b/assets/portraits/portrait_pelt_wolf.png new file mode 100644 index 0000000..d754605 Binary files /dev/null and b/assets/portraits/portrait_pelt_wolf.png differ diff --git a/assets/portraits/portrait_piggybank.png b/assets/portraits/portrait_piggybank.png new file mode 100644 index 0000000..accb453 Binary files /dev/null and b/assets/portraits/portrait_piggybank.png differ diff --git a/assets/portraits/portrait_pliers.png b/assets/portraits/portrait_pliers.png new file mode 100644 index 0000000..de155f7 Binary files /dev/null and b/assets/portraits/portrait_pliers.png differ diff --git a/assets/portraits/portrait_pocketwatch.png b/assets/portraits/portrait_pocketwatch.png new file mode 100644 index 0000000..0267c9d Binary files /dev/null and b/assets/portraits/portrait_pocketwatch.png differ diff --git a/assets/portraits/portrait_porcupine.png b/assets/portraits/portrait_porcupine.png new file mode 100644 index 0000000..a525570 Binary files /dev/null and b/assets/portraits/portrait_porcupine.png differ diff --git a/assets/portraits/portrait_pozstoat.png b/assets/portraits/portrait_pozstoat.png new file mode 100644 index 0000000..8f24a4a Binary files /dev/null and b/assets/portraits/portrait_pozstoat.png differ diff --git a/assets/portraits/portrait_pronghorn.png b/assets/portraits/portrait_pronghorn.png new file mode 100644 index 0000000..e2ec072 Binary files /dev/null and b/assets/portraits/portrait_pronghorn.png differ diff --git a/assets/portraits/portrait_rabbit.png b/assets/portraits/portrait_rabbit.png new file mode 100644 index 0000000..648c8e8 Binary files /dev/null and b/assets/portraits/portrait_rabbit.png differ diff --git a/assets/portraits/portrait_raccoon.png b/assets/portraits/portrait_raccoon.png new file mode 100644 index 0000000..a08bb15 Binary files /dev/null and b/assets/portraits/portrait_raccoon.png differ diff --git a/assets/portraits/portrait_ratking.png b/assets/portraits/portrait_ratking.png new file mode 100644 index 0000000..8882b2b Binary files /dev/null and b/assets/portraits/portrait_ratking.png differ diff --git a/assets/portraits/portrait_rattler.png b/assets/portraits/portrait_rattler.png new file mode 100644 index 0000000..a2e1d31 Binary files /dev/null and b/assets/portraits/portrait_rattler.png differ diff --git a/assets/portraits/portrait_raven.png b/assets/portraits/portrait_raven.png new file mode 100644 index 0000000..2095d84 Binary files /dev/null and b/assets/portraits/portrait_raven.png differ diff --git a/assets/portraits/portrait_ravenegg.png b/assets/portraits/portrait_ravenegg.png new file mode 100644 index 0000000..42e55b7 Binary files /dev/null and b/assets/portraits/portrait_ravenegg.png differ diff --git a/assets/portraits/portrait_redhart.png b/assets/portraits/portrait_redhart.png new file mode 100644 index 0000000..8747fe1 Binary files /dev/null and b/assets/portraits/portrait_redhart.png differ diff --git a/assets/portraits/portrait_ringworm.png b/assets/portraits/portrait_ringworm.png new file mode 100644 index 0000000..56f376e Binary files /dev/null and b/assets/portraits/portrait_ringworm.png differ diff --git a/assets/portraits/portrait_scissors.png b/assets/portraits/portrait_scissors.png new file mode 100644 index 0000000..3c5f657 Binary files /dev/null and b/assets/portraits/portrait_scissors.png differ diff --git a/assets/portraits/portrait_shark.png b/assets/portraits/portrait_shark.png new file mode 100644 index 0000000..d9ec0b7 Binary files /dev/null and b/assets/portraits/portrait_shark.png differ diff --git a/assets/portraits/portrait_skeletonparrot.png b/assets/portraits/portrait_skeletonparrot.png new file mode 100644 index 0000000..891a572 Binary files /dev/null and b/assets/portraits/portrait_skeletonparrot.png differ diff --git a/assets/portraits/portrait_skeletonpirate.png b/assets/portraits/portrait_skeletonpirate.png new file mode 100644 index 0000000..bdb0d59 Binary files /dev/null and b/assets/portraits/portrait_skeletonpirate.png differ diff --git a/assets/portraits/portrait_skink.png b/assets/portraits/portrait_skink.png new file mode 100644 index 0000000..f8491cb Binary files /dev/null and b/assets/portraits/portrait_skink.png differ diff --git a/assets/portraits/portrait_skink_tail.png b/assets/portraits/portrait_skink_tail.png new file mode 100644 index 0000000..2d67c4b Binary files /dev/null and b/assets/portraits/portrait_skink_tail.png differ diff --git a/assets/portraits/portrait_skunk.png b/assets/portraits/portrait_skunk.png new file mode 100644 index 0000000..02d21e4 Binary files /dev/null and b/assets/portraits/portrait_skunk.png differ diff --git a/assets/portraits/portrait_smoke.png b/assets/portraits/portrait_smoke.png new file mode 100644 index 0000000..0b5b412 Binary files /dev/null and b/assets/portraits/portrait_smoke.png differ diff --git a/assets/portraits/portrait_smoke_improved.png b/assets/portraits/portrait_smoke_improved.png new file mode 100644 index 0000000..91fe82c Binary files /dev/null and b/assets/portraits/portrait_smoke_improved.png differ diff --git a/assets/portraits/portrait_sparrow.png b/assets/portraits/portrait_sparrow.png new file mode 100644 index 0000000..836d397 Binary files /dev/null and b/assets/portraits/portrait_sparrow.png differ diff --git a/assets/portraits/portrait_specialdagger.png b/assets/portraits/portrait_specialdagger.png new file mode 100644 index 0000000..de0473b Binary files /dev/null and b/assets/portraits/portrait_specialdagger.png differ diff --git a/assets/portraits/portrait_squidbell.png b/assets/portraits/portrait_squidbell.png new file mode 100644 index 0000000..3d668f0 Binary files /dev/null and b/assets/portraits/portrait_squidbell.png differ diff --git a/assets/portraits/portrait_squidcards.png b/assets/portraits/portrait_squidcards.png new file mode 100644 index 0000000..e08ca5b Binary files /dev/null and b/assets/portraits/portrait_squidcards.png differ diff --git a/assets/portraits/portrait_squidmirror.png b/assets/portraits/portrait_squidmirror.png new file mode 100644 index 0000000..c5becd2 Binary files /dev/null and b/assets/portraits/portrait_squidmirror.png differ diff --git a/assets/portraits/portrait_squirrel.png b/assets/portraits/portrait_squirrel.png new file mode 100644 index 0000000..e3945fe Binary files /dev/null and b/assets/portraits/portrait_squirrel.png differ diff --git a/assets/portraits/portrait_squirrelbottle.png b/assets/portraits/portrait_squirrelbottle.png new file mode 100644 index 0000000..24d3b49 Binary files /dev/null and b/assets/portraits/portrait_squirrelbottle.png differ diff --git a/assets/portraits/portrait_starvingman.png b/assets/portraits/portrait_starvingman.png new file mode 100644 index 0000000..7c526a7 Binary files /dev/null and b/assets/portraits/portrait_starvingman.png differ diff --git a/assets/portraits/portrait_stinkbug.png b/assets/portraits/portrait_stinkbug.png new file mode 100644 index 0000000..e9b6b31 Binary files /dev/null and b/assets/portraits/portrait_stinkbug.png differ diff --git a/assets/portraits/portrait_stoat.png b/assets/portraits/portrait_stoat.png new file mode 100644 index 0000000..5854a2f Binary files /dev/null and b/assets/portraits/portrait_stoat.png differ diff --git a/assets/portraits/portrait_stump.png b/assets/portraits/portrait_stump.png new file mode 100644 index 0000000..836a6f5 Binary files /dev/null and b/assets/portraits/portrait_stump.png differ diff --git a/assets/portraits/portrait_tadpole.png b/assets/portraits/portrait_tadpole.png new file mode 100644 index 0000000..a241acb Binary files /dev/null and b/assets/portraits/portrait_tadpole.png differ diff --git a/assets/portraits/portrait_terrainbottle.png b/assets/portraits/portrait_terrainbottle.png new file mode 100644 index 0000000..89466ec Binary files /dev/null and b/assets/portraits/portrait_terrainbottle.png differ diff --git a/assets/portraits/portrait_trap.png b/assets/portraits/portrait_trap.png new file mode 100644 index 0000000..ff58468 Binary files /dev/null and b/assets/portraits/portrait_trap.png differ diff --git a/assets/portraits/portrait_trapfrog.png b/assets/portraits/portrait_trapfrog.png new file mode 100644 index 0000000..c4a714c Binary files /dev/null and b/assets/portraits/portrait_trapfrog.png differ diff --git a/assets/portraits/portrait_trapperknife.png b/assets/portraits/portrait_trapperknife.png new file mode 100644 index 0000000..fef9265 Binary files /dev/null and b/assets/portraits/portrait_trapperknife.png differ diff --git a/assets/portraits/portrait_tree.png b/assets/portraits/portrait_tree.png new file mode 100644 index 0000000..4d566cc Binary files /dev/null and b/assets/portraits/portrait_tree.png differ diff --git a/assets/portraits/portrait_tree_snowcovered.png b/assets/portraits/portrait_tree_snowcovered.png new file mode 100644 index 0000000..62ff11e Binary files /dev/null and b/assets/portraits/portrait_tree_snowcovered.png differ diff --git a/assets/portraits/portrait_turtle.png b/assets/portraits/portrait_turtle.png new file mode 100644 index 0000000..c23b45c Binary files /dev/null and b/assets/portraits/portrait_turtle.png differ diff --git a/assets/portraits/portrait_urayuli.png b/assets/portraits/portrait_urayuli.png new file mode 100644 index 0000000..a477774 Binary files /dev/null and b/assets/portraits/portrait_urayuli.png differ diff --git a/assets/portraits/portrait_vertebra.png b/assets/portraits/portrait_vertebra.png new file mode 100644 index 0000000..1d8833a Binary files /dev/null and b/assets/portraits/portrait_vertebra.png differ diff --git a/assets/portraits/portrait_vulture.png b/assets/portraits/portrait_vulture.png new file mode 100644 index 0000000..6a357ff Binary files /dev/null and b/assets/portraits/portrait_vulture.png differ diff --git a/assets/portraits/portrait_warren.png b/assets/portraits/portrait_warren.png new file mode 100644 index 0000000..a11d67c Binary files /dev/null and b/assets/portraits/portrait_warren.png differ diff --git a/assets/portraits/portrait_whitenoisebottle.png b/assets/portraits/portrait_whitenoisebottle.png new file mode 100644 index 0000000..feea84e Binary files /dev/null and b/assets/portraits/portrait_whitenoisebottle.png differ diff --git a/assets/portraits/portrait_wolf.png b/assets/portraits/portrait_wolf.png new file mode 100644 index 0000000..d28ae66 Binary files /dev/null and b/assets/portraits/portrait_wolf.png differ diff --git a/assets/portraits/portrait_wolfcub.png b/assets/portraits/portrait_wolfcub.png new file mode 100644 index 0000000..a596521 Binary files /dev/null and b/assets/portraits/portrait_wolfcub.png differ diff --git a/assets/portraits/portrait_wolverine.png b/assets/portraits/portrait_wolverine.png new file mode 100644 index 0000000..a7ed491 Binary files /dev/null and b/assets/portraits/portrait_wolverine.png differ diff --git a/assets/squid_title.png b/assets/squid_title.png new file mode 100644 index 0000000..7ef30e6 Binary files /dev/null and b/assets/squid_title.png differ diff --git a/assets/stats/stat_icon_ants.png b/assets/stats/stat_icon_ants.png new file mode 100644 index 0000000..95d357e Binary files /dev/null and b/assets/stats/stat_icon_ants.png differ diff --git a/assets/stats/stat_icon_bell.png b/assets/stats/stat_icon_bell.png new file mode 100644 index 0000000..363f465 Binary files /dev/null and b/assets/stats/stat_icon_bell.png differ diff --git a/assets/stats/stat_icon_bones.png b/assets/stats/stat_icon_bones.png new file mode 100644 index 0000000..b652519 Binary files /dev/null and b/assets/stats/stat_icon_bones.png differ diff --git a/assets/stats/stat_icon_cardsinhand.png b/assets/stats/stat_icon_cardsinhand.png new file mode 100644 index 0000000..6af8a2e Binary files /dev/null and b/assets/stats/stat_icon_cardsinhand.png differ diff --git a/assets/stats/stat_icon_mirror.png b/assets/stats/stat_icon_mirror.png new file mode 100644 index 0000000..d52118b Binary files /dev/null and b/assets/stats/stat_icon_mirror.png differ diff --git a/assets/stats/stat_icon_sacrifices.png b/assets/stats/stat_icon_sacrifices.png new file mode 100644 index 0000000..9ed5402 Binary files /dev/null and b/assets/stats/stat_icon_sacrifices.png differ diff --git a/assets/symbols/ability_beesonhit.png b/assets/symbols/ability_beesonhit.png new file mode 100644 index 0000000..b094f5a Binary files /dev/null and b/assets/symbols/ability_beesonhit.png differ diff --git a/assets/symbols/ability_bonedigger.png b/assets/symbols/ability_bonedigger.png new file mode 100644 index 0000000..cc91734 Binary files /dev/null and b/assets/symbols/ability_bonedigger.png differ diff --git a/assets/symbols/ability_brittle.png b/assets/symbols/ability_brittle.png new file mode 100644 index 0000000..d7aacdf Binary files /dev/null and b/assets/symbols/ability_brittle.png differ diff --git a/assets/symbols/ability_buffenemy.png b/assets/symbols/ability_buffenemy.png new file mode 100644 index 0000000..0c33765 Binary files /dev/null and b/assets/symbols/ability_buffenemy.png differ diff --git a/assets/symbols/ability_buffneighbours.png b/assets/symbols/ability_buffneighbours.png new file mode 100644 index 0000000..05f2b6e Binary files /dev/null and b/assets/symbols/ability_buffneighbours.png differ diff --git a/assets/symbols/ability_corpseeater.png b/assets/symbols/ability_corpseeater.png new file mode 100644 index 0000000..0e03168 Binary files /dev/null and b/assets/symbols/ability_corpseeater.png differ diff --git a/assets/symbols/ability_createbells.png b/assets/symbols/ability_createbells.png new file mode 100644 index 0000000..0c8fe4b Binary files /dev/null and b/assets/symbols/ability_createbells.png differ diff --git a/assets/symbols/ability_createdams.png b/assets/symbols/ability_createdams.png new file mode 100644 index 0000000..2560373 Binary files /dev/null and b/assets/symbols/ability_createdams.png differ diff --git a/assets/symbols/ability_createegg.png b/assets/symbols/ability_createegg.png new file mode 100644 index 0000000..6218a79 Binary files /dev/null and b/assets/symbols/ability_createegg.png differ diff --git a/assets/symbols/ability_deathshield.png b/assets/symbols/ability_deathshield.png new file mode 100644 index 0000000..49fb28a Binary files /dev/null and b/assets/symbols/ability_deathshield.png differ diff --git a/assets/symbols/ability_deathtouch.png b/assets/symbols/ability_deathtouch.png new file mode 100644 index 0000000..430875b Binary files /dev/null and b/assets/symbols/ability_deathtouch.png differ diff --git a/assets/symbols/ability_debuffenemy.png b/assets/symbols/ability_debuffenemy.png new file mode 100644 index 0000000..80f2cfd Binary files /dev/null and b/assets/symbols/ability_debuffenemy.png differ diff --git a/assets/symbols/ability_doublestrike.png b/assets/symbols/ability_doublestrike.png new file mode 100644 index 0000000..b16e84c Binary files /dev/null and b/assets/symbols/ability_doublestrike.png differ diff --git a/assets/symbols/ability_drawant.png b/assets/symbols/ability_drawant.png new file mode 100644 index 0000000..3b83d88 Binary files /dev/null and b/assets/symbols/ability_drawant.png differ diff --git a/assets/symbols/ability_drawcopy.png b/assets/symbols/ability_drawcopy.png new file mode 100644 index 0000000..7505c7f Binary files /dev/null and b/assets/symbols/ability_drawcopy.png differ diff --git a/assets/symbols/ability_drawcopyondeath.png b/assets/symbols/ability_drawcopyondeath.png new file mode 100644 index 0000000..1e34b7c Binary files /dev/null and b/assets/symbols/ability_drawcopyondeath.png differ diff --git a/assets/symbols/ability_drawrabbits.png b/assets/symbols/ability_drawrabbits.png new file mode 100644 index 0000000..7f1dbcb Binary files /dev/null and b/assets/symbols/ability_drawrabbits.png differ diff --git a/assets/symbols/ability_evolve_1.png b/assets/symbols/ability_evolve_1.png new file mode 100644 index 0000000..afbe16e Binary files /dev/null and b/assets/symbols/ability_evolve_1.png differ diff --git a/assets/symbols/ability_flying.png b/assets/symbols/ability_flying.png new file mode 100644 index 0000000..9b53a17 Binary files /dev/null and b/assets/symbols/ability_flying.png differ diff --git a/assets/symbols/ability_gainattackonkill.png b/assets/symbols/ability_gainattackonkill.png new file mode 100644 index 0000000..8bc59de Binary files /dev/null and b/assets/symbols/ability_gainattackonkill.png differ diff --git a/assets/symbols/ability_guarddog.png b/assets/symbols/ability_guarddog.png new file mode 100644 index 0000000..0b6b9f1 Binary files /dev/null and b/assets/symbols/ability_guarddog.png differ diff --git a/assets/symbols/ability_hydraegg.png b/assets/symbols/ability_hydraegg.png new file mode 100644 index 0000000..6996d21 Binary files /dev/null and b/assets/symbols/ability_hydraegg.png differ diff --git a/assets/symbols/ability_icecube.png b/assets/symbols/ability_icecube.png new file mode 100644 index 0000000..383d60e Binary files /dev/null and b/assets/symbols/ability_icecube.png differ diff --git a/assets/symbols/ability_madeofstone.png b/assets/symbols/ability_madeofstone.png new file mode 100644 index 0000000..a1005dc Binary files /dev/null and b/assets/symbols/ability_madeofstone.png differ diff --git a/assets/symbols/ability_morsel.png b/assets/symbols/ability_morsel.png new file mode 100644 index 0000000..1dcf421 Binary files /dev/null and b/assets/symbols/ability_morsel.png differ diff --git a/assets/symbols/ability_opponentbones.png b/assets/symbols/ability_opponentbones.png new file mode 100644 index 0000000..d60604d Binary files /dev/null and b/assets/symbols/ability_opponentbones.png differ diff --git a/assets/symbols/ability_preventattack.png b/assets/symbols/ability_preventattack.png new file mode 100644 index 0000000..392a4ed Binary files /dev/null and b/assets/symbols/ability_preventattack.png differ diff --git a/assets/symbols/ability_quadruplebones.png b/assets/symbols/ability_quadruplebones.png new file mode 100644 index 0000000..6082707 Binary files /dev/null and b/assets/symbols/ability_quadruplebones.png differ diff --git a/assets/symbols/ability_randomability.png b/assets/symbols/ability_randomability.png new file mode 100644 index 0000000..1a237b8 Binary files /dev/null and b/assets/symbols/ability_randomability.png differ diff --git a/assets/symbols/ability_randomconsumable.png b/assets/symbols/ability_randomconsumable.png new file mode 100644 index 0000000..45126df Binary files /dev/null and b/assets/symbols/ability_randomconsumable.png differ diff --git a/assets/symbols/ability_reach.png b/assets/symbols/ability_reach.png new file mode 100644 index 0000000..d4290b9 Binary files /dev/null and b/assets/symbols/ability_reach.png differ diff --git a/assets/symbols/ability_sacrificial.png b/assets/symbols/ability_sacrificial.png new file mode 100644 index 0000000..8eab25a Binary files /dev/null and b/assets/symbols/ability_sacrificial.png differ diff --git a/assets/symbols/ability_sharp.png b/assets/symbols/ability_sharp.png new file mode 100644 index 0000000..61553c8 Binary files /dev/null and b/assets/symbols/ability_sharp.png differ diff --git a/assets/symbols/ability_splitstrike.png b/assets/symbols/ability_splitstrike.png new file mode 100644 index 0000000..9a6ac8c Binary files /dev/null and b/assets/symbols/ability_splitstrike.png differ diff --git a/assets/symbols/ability_steeltrap.png b/assets/symbols/ability_steeltrap.png new file mode 100644 index 0000000..f434045 Binary files /dev/null and b/assets/symbols/ability_steeltrap.png differ diff --git a/assets/symbols/ability_strafe.png b/assets/symbols/ability_strafe.png new file mode 100644 index 0000000..0faa7f9 Binary files /dev/null and b/assets/symbols/ability_strafe.png differ diff --git a/assets/symbols/ability_strafepush.png b/assets/symbols/ability_strafepush.png new file mode 100644 index 0000000..2e1a277 Binary files /dev/null and b/assets/symbols/ability_strafepush.png differ diff --git a/assets/symbols/ability_strafeswap.png b/assets/symbols/ability_strafeswap.png new file mode 100644 index 0000000..e083327 Binary files /dev/null and b/assets/symbols/ability_strafeswap.png differ diff --git a/assets/symbols/ability_submerge.png b/assets/symbols/ability_submerge.png new file mode 100644 index 0000000..b7570e8 Binary files /dev/null and b/assets/symbols/ability_submerge.png differ diff --git a/assets/symbols/ability_submergesquid.png b/assets/symbols/ability_submergesquid.png new file mode 100644 index 0000000..5dab5bd Binary files /dev/null and b/assets/symbols/ability_submergesquid.png differ diff --git a/assets/symbols/ability_tailonhit.png b/assets/symbols/ability_tailonhit.png new file mode 100644 index 0000000..8163aa8 Binary files /dev/null and b/assets/symbols/ability_tailonhit.png differ diff --git a/assets/symbols/ability_tripleblood.png b/assets/symbols/ability_tripleblood.png new file mode 100644 index 0000000..c16018c Binary files /dev/null and b/assets/symbols/ability_tripleblood.png differ diff --git a/assets/symbols/ability_tristrike.png b/assets/symbols/ability_tristrike.png new file mode 100644 index 0000000..82e0886 Binary files /dev/null and b/assets/symbols/ability_tristrike.png differ diff --git a/assets/symbols/ability_tutor.png b/assets/symbols/ability_tutor.png new file mode 100644 index 0000000..9cf3ba1 Binary files /dev/null and b/assets/symbols/ability_tutor.png differ diff --git a/assets/symbols/ability_whackamole.png b/assets/symbols/ability_whackamole.png new file mode 100644 index 0000000..32a8b0a Binary files /dev/null and b/assets/symbols/ability_whackamole.png differ diff --git a/assets/tribes/tribeicon_bird.png b/assets/tribes/tribeicon_bird.png new file mode 100644 index 0000000..d04fb2e Binary files /dev/null and b/assets/tribes/tribeicon_bird.png differ diff --git a/assets/tribes/tribeicon_canine.png b/assets/tribes/tribeicon_canine.png new file mode 100644 index 0000000..52ee60f Binary files /dev/null and b/assets/tribes/tribeicon_canine.png differ diff --git a/assets/tribes/tribeicon_hooved.png b/assets/tribes/tribeicon_hooved.png new file mode 100644 index 0000000..9be7d6a Binary files /dev/null and b/assets/tribes/tribeicon_hooved.png differ diff --git a/assets/tribes/tribeicon_insect.png b/assets/tribes/tribeicon_insect.png new file mode 100644 index 0000000..1e5b265 Binary files /dev/null and b/assets/tribes/tribeicon_insect.png differ diff --git a/assets/tribes/tribeicon_reptile.png b/assets/tribes/tribeicon_reptile.png new file mode 100644 index 0000000..bb67c42 Binary files /dev/null and b/assets/tribes/tribeicon_reptile.png differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..e9cc075 --- /dev/null +++ b/main.py @@ -0,0 +1,304 @@ +""" +Inscryption Card Generator +A command-line tool for generating custom Inscryption game cards. +Supports customization of card backgrounds, portraits, symbols, abilities, tribes, +costs, and other visual elements. +Authors: Kolyah35, FullHarmony +License: MIT +Usage: + python main.py [options] +Examples: + # Generate a single card + python main.py grizzly.png -p grizzly -ca 3 -ct blood -r 2 -n Grizzly -hp 6 -d 4 + + # Generate a card set from JSON + python main.py cardset_output_dir -cs cardset.json + + # Generate with custom background and symbols + python main.py card.png -b rare -s ability_sharp ability_costly -t bird +Dependencies: + - PIL (Pillow) +""" + +from PIL import Image, ImageFont, ImageDraw +import argparse +import os +import json + +FONT_HEAVY_PATH = './assets/HEAVYWEIGHT.ttf' + +def load_images_with_prefix(folder, prefix): + images = {} + + for filename in os.listdir(folder): + if not filename.startswith(prefix): + continue + + key = filename[len(prefix):] + key = os.path.splitext(key)[0] + + images[key] = os.path.join(folder, filename) + + return images + +background_dict = load_images_with_prefix('./assets/backgrounds', '') +symbol_dict = load_images_with_prefix('./assets/symbols', 'ability_') +portrait_dict = load_images_with_prefix('./assets/portraits', 'portrait_') +deathcard_dict = load_images_with_prefix('./assets/deathcard', 'deathcard_') +decals_dict = load_images_with_prefix('./assets/decals', 'decal_') +tribes_dict = load_images_with_prefix('./assets/tribes', 'tribeicon_') +stats_dict = load_images_with_prefix('./assets/stats', 'stat_icon_') + +def damage_or_staticon(value) -> int|str: + try: + return int(value) + except ValueError: + if value in stats_dict.keys(): + return value + raise argparse.ArgumentTypeError( + f"Expected hp number or one of {stats_dict.keys()}" + ) + +parser = argparse.ArgumentParser(prog='Inscryption Card Generator') + +parser.add_argument('filename', help='Path to a directory to generate a card set, or a file name to generate a single card') +parser.add_argument('-cs', '--cardset', type=str, help='Path to a card set') +parser.add_argument('-r', '--scale', type=int, default=2, help='Scale multiplier for card render') +parser.add_argument('-b', '--background', choices=background_dict.keys(), type=str, default='common', help='Card background type') +parser.add_argument('-s', '--symbols', type=str, nargs='+', choices=symbol_dict.keys(), help='Card symbols (max 4)') +parser.add_argument('-p', '--portrait', type=str, choices=portrait_dict.keys(), help='Card portrait type') +parser.add_argument('-dec', '--decal', type=str, choices=decals_dict.keys(), help='Card decal type') +parser.add_argument('-t', '--tribe', type=str, choices=list(tribes_dict.keys()).append('all'), help='Card tribe type') +parser.add_argument('-ca', '--cost-amount', type=int) +parser.add_argument('-ct', '--cost-type', type=str, choices=['blood', 'bone']) +parser.add_argument('-n', '--name', type=str, help='Card name') +parser.add_argument('-hp', '--hp', type=int, default=0) +parser.add_argument('-d', '--damage', type=damage_or_staticon, default=0) +parser.add_argument('--show', action='store_true', help='Show result in system image viewer') + +args = parser.parse_args() + +scale = args.scale + +def img_scale(img, factor = scale): + return img.resize( + (int(img.width * factor), int(img.height * factor)), + Image.Resampling.NEAREST + ) + +def img_paste(img, dest, pos): + """Paste image with position scaling""" + black = Image.new('RGBA', img.size, (0, 0, 0, 255)) + dest.paste(black, (pos[0] * scale, pos[1] * scale), img) + +def img_fit_text(img, text, font_path, box, max_size=200, min_size=8, align='center'): + draw = ImageDraw.Draw(img) + x, y, w, h = box + + best_font = None + best_bbox = None + + for size in range(max_size, min_size - 1, -1): + font = ImageFont.truetype(font_path, size) + bbox = draw.textbbox((0, 0), text, font=font) + + tw = bbox[2] - bbox[0] + th = bbox[3] - bbox[1] + + if tw <= w and th <= h: + best_font = font + best_bbox = (tw, th) + break + + if best_font is None: + return False + + if align == 'left': + tx = x + elif align == 'right': + tx = x + w - best_bbox[0] + else: + tx = x + (w - best_bbox[0]) // 2 + + ty = y + (h - best_bbox[1]) // 2 + + draw.text((tx, ty), text, font=best_font, fill=(0, 0, 0, 255)) + return True + +repeat_names = {} + +# Generating image + +def generate_card( + background: str, + name: str, + portrait: str, + symbols: list, + cost_type: str, + cost_amount: int, + hp: int, + damage: int|str, + decal: str, + tribe: str): + + ca = cost_amount + ct = cost_type + + if ca > 0 and not ct: ct = 'blood' + + if (ct == 'blood' and ca > 4) or (ct == 'bone' and ca > 10): + print(f'Error: Cost "{ct}" can not be more than {4 if ct == "blood" else 10}!') + exit() + + workspace = Image.open(f'./assets/backgrounds/{background}.png').convert('RGB') + workspace = workspace.resize((workspace.width * scale, workspace.height * scale), resample=Image.Resampling.NEAREST) + + print(f'Generating card {name} - {workspace.width}x{workspace.height}...') + + s_count = len(symbols) if symbols else 0 + for i in range(s_count): + s = symbols[i] + + s_variants = [ + [(49, 144)], + [(49, 168), (74, 143)], + [(49, 143), (74, 143), (61, 168)], + [(49, 143), (74, 143), (49, 168), (74, 168)], + ] + + sl = Image.open(symbol_dict[s]).convert('RGBA') + + s_scale = (1 if s_count == 1 else 0.5) + sl = img_scale(sl, scale * s_scale) + + pos = s_variants[s_count-1][i] + img_paste(sl, workspace, pos) + + if portrait: + if type(portrait) is str: + p = Image.open(portrait_dict[portrait]).convert('RGBA') + p = img_scale(p) + img_paste(p, workspace, (17, 44)) + elif type(portrait) is dict: + for part in ('base', 'eyes', 'mouth'): + p = Image.open(deathcard_dict[f'{part}_{portrait[part]}']).convert('RGBA') + p = img_scale(p) + img_paste(p, workspace, (17, 44)) + + if tribe: + tribe_pos = { + 'bird': (16, 18), + 'canine': (90, 18), + 'hooved': (164, 18), + 'insect': (53, 167), + 'reptile': (136, 167) + } if tribe == 'all' else {'_': (16, 18)} + + tribes_to_render = tribe_pos.items() if tribe == 'all' else [(tribe, tribe_pos['_'])] + + for tribe_name, pos in tribes_to_render: + tribe_key = tribe_name if tribe == 'all' else tribe + tribe_img = Image.open(f'./assets/tribes/tribeicon_{tribe_key}.png').convert('RGBA') + tribe_img = img_scale(tribe_img, scale / 2) + r, g, b, a = tribe_img.split() + a = a.point(lambda x: x * 0.5) + tribe_img = Image.merge('RGBA', (r, g, b, a)) + workspace.paste(tribe_img, (pos[0] * int(scale / 2), pos[1] * int(scale / 2)), tribe_img) + + if cost_type or cost_amount > 0: + cost_img = Image.open(f'./assets/costs/cost_{cost_amount}{cost_type}.png').convert('RGBA') + cost_img = img_scale(cost_img, scale) + workspace.paste(cost_img, (67 * scale, 27 * scale), cost_img) + + if name.startswith('$'): + p = Image.open(f'./assets/{name[1:]}.png').convert('RGBA') + p = img_scale(p) + img_paste(p, workspace, (17, 16)) + + name = portrait + else: + img_fit_text(workspace, name, FONT_HEAVY_PATH, (20 * scale, 20 * scale, 107 * scale, 17 * scale)) + + if damage: + if type(damage) is int: + img_fit_text(workspace, str(damage), FONT_HEAVY_PATH, (23 * scale, 144 * scale, 20 * scale, 30 * scale)) + + if type(damage) is str: + stat_img = Image.open(f'./assets/stats/stat_icon_{damage}.png').convert('RGBA') + stat_img = img_scale(stat_img, scale) + img_paste(stat_img, workspace, (11, 138)) + + if hp: + img_fit_text(workspace, str(hp), FONT_HEAVY_PATH, (110 * scale, 158 * scale, 20 * scale, 30 * scale)) + + if decal: + decal_img = Image.open(f'./assets/decals/decal_{decal}.png').convert('RGBA') + decal_img = img_scale(decal_img) + workspace.paste(decal_img, (11 * scale, 11 * scale), decal_img) + + if name not in repeat_names: + repeat_names[name] = 0 + else: + repeat_names[name] += 1 + + if repeat_names[name] > 0: + name = f'{name}-{repeat_names[name]}' + + return workspace, name + +if args.cardset: + folder = os.path.join('.', args.filename) + if not os.path.exists(folder): + os.mkdir(folder) + + cardset = json.load(open(args.cardset, encoding="utf-8")) + + for card in cardset: + defaults = { + 'background': 'common', + 'name': '', + 'portrait': '', + 'symbols': [], + 'cost-type': '', + 'cost-amount': 0, + 'hp': 0, + 'damage': 0, + 'decal': '', + 'tribe': '' + } + + for opt in defaults.items(): + if opt[0] not in card: + card[opt[0]] = opt[1] + + gen_card, name = generate_card( + background=card['background'], + name=card['name'], + portrait=card['portrait'], + symbols=card['symbols'], + cost_type=card['cost-type'], + cost_amount=card['cost-amount'], + hp=card['hp'], + damage=card['damage'], + decal=card['decal'], + tribe=card['tribe'] + ) + gen_card.save(os.path.join(folder, name + '.png')) +else: + gen_card, name = generate_card( + background=args.background, + name=args.name, + portrait=args.portrait, + symbols=args.symbols, + cost_type=args.cost_type, + cost_amount=args.cost_amount, + hp=args.hp, + damage=args.damage, + decal=args.decal, + tribe=args.tribe + ) + gen_card.save(args.filename) + + if args.show: + gen_card.show() + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..037103e --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pillow \ No newline at end of file