From 0e905a2824966a173c91935bc3d89bb50e00a260 Mon Sep 17 00:00:00 2001 From: = Date: Thu, 1 Oct 2026 22:46:04 -0500 Subject: [PATCH] Pixellab based system --- .gitignore | 5 + README.md | 55 +- build_parts.py | 9 +- generate_sprite.py | 210 +++-- parts_pl/back/pl_barnacles.png | Bin 0 -> 262 bytes parts_pl/back/pl_beetle_rock_spikes.png | Bin 0 -> 439 bytes parts_pl/back/pl_brawler_shell.png | Bin 0 -> 472 bytes parts_pl/back/pl_bubbles_toxic.png | Bin 0 -> 492 bytes parts_pl/back/pl_cape_frost.png | Bin 0 -> 513 bytes parts_pl/back/pl_cape_short.png | Bin 0 -> 258 bytes parts_pl/back/pl_cloud_puffs.png | Bin 0 -> 371 bytes parts_pl/back/pl_coils_electric.png | Bin 0 -> 498 bytes parts_pl/back/pl_coral_back.png | Bin 0 -> 212 bytes parts_pl/back/pl_crystal_cluster.png | Bin 0 -> 499 bytes parts_pl/back/pl_dino_crystals_back.png | Bin 0 -> 257 bytes parts_pl/back/pl_drake_crystals.png | Bin 0 -> 365 bytes parts_pl/back/pl_fin_dorsal.png | Bin 0 -> 161 bytes parts_pl/back/pl_flower_back.png | Bin 0 -> 586 bytes parts_pl/back/pl_icicles_back.png | Bin 0 -> 295 bytes parts_pl/back/pl_leaf_cape.png | Bin 0 -> 495 bytes parts_pl/back/pl_mane_bristle.png | Bin 0 -> 278 bytes parts_pl/back/pl_mane_fire.png | Bin 0 -> 737 bytes parts_pl/back/pl_mane_flame.png | Bin 0 -> 557 bytes parts_pl/back/pl_mushrooms_back.png | Bin 0 -> 254 bytes parts_pl/back/pl_pearl_orb.png | Bin 0 -> 141 bytes parts_pl/back/pl_plates_rock.png | Bin 0 -> 333 bytes parts_pl/back/pl_rocks_dirt.png | Bin 0 -> 302 bytes parts_pl/back/pl_saddle_rock.png | Bin 0 -> 249 bytes parts_pl/back/pl_sail_fin.png | Bin 0 -> 234 bytes parts_pl/back/pl_scarf_long.png | Bin 0 -> 354 bytes parts_pl/back/pl_seal_shell.png | Bin 0 -> 140 bytes parts_pl/back/pl_shell_spiral.png | Bin 0 -> 489 bytes parts_pl/back/pl_shroud_ghostfire.png | Bin 0 -> 631 bytes parts_pl/back/pl_slime_spikes_poison.png | Bin 0 -> 593 bytes parts_pl/back/pl_spikes_back.png | Bin 0 -> 277 bytes parts_pl/back/pl_spikes_frill.png | Bin 0 -> 303 bytes parts_pl/back/pl_spines_toxic.png | Bin 0 -> 287 bytes parts_pl/back/pl_wings_bat.png | Bin 0 -> 268 bytes parts_pl/back/pl_wings_bug.png | Bin 0 -> 380 bytes parts_pl/back/pl_wings_dragon.png | Bin 0 -> 321 bytes parts_pl/back/pl_wings_elytra.png | Bin 0 -> 490 bytes parts_pl/back/pl_wings_feather.png | Bin 0 -> 779 bytes parts_pl/back/pl_wings_gold.png | Bin 0 -> 340 bytes parts_pl/back/pl_wings_storm.png | Bin 0 -> 437 bytes parts_pl/back/pl_wings_tiny.png | Bin 0 -> 416 bytes parts_pl/back/pl_wisp_orbs_bluefire.png | Bin 0 -> 290 bytes parts_pl/body/pl_axolotl.png | Bin 0 -> 807 bytes parts_pl/body/pl_bee.png | Bin 0 -> 736 bytes parts_pl/body/pl_beetle.png | Bin 0 -> 807 bytes parts_pl/body/pl_boar.png | Bin 0 -> 1058 bytes parts_pl/body/pl_brawler.png | Bin 0 -> 762 bytes parts_pl/body/pl_bunny.png | Bin 0 -> 810 bytes parts_pl/body/pl_chick.png | Bin 0 -> 631 bytes parts_pl/body/pl_crab.png | Bin 0 -> 756 bytes parts_pl/body/pl_cub.png | Bin 0 -> 859 bytes parts_pl/body/pl_dino.png | Bin 0 -> 793 bytes parts_pl/body/pl_drake.png | Bin 0 -> 740 bytes parts_pl/body/pl_duck.png | Bin 0 -> 707 bytes parts_pl/body/pl_eel.png | Bin 0 -> 602 bytes parts_pl/body/pl_fawn.png | Bin 0 -> 583 bytes parts_pl/body/pl_fox.png | Bin 0 -> 869 bytes parts_pl/body/pl_grub.png | Bin 0 -> 812 bytes parts_pl/body/pl_guppy.png | Bin 0 -> 595 bytes parts_pl/body/pl_hawk.png | Bin 0 -> 915 bytes parts_pl/body/pl_imp.png | Bin 0 -> 589 bytes parts_pl/body/pl_lizard.png | Bin 0 -> 634 bytes parts_pl/body/pl_mochi.png | Bin 0 -> 804 bytes parts_pl/body/pl_monk.png | Bin 0 -> 621 bytes parts_pl/body/pl_owl.png | Bin 0 -> 748 bytes parts_pl/body/pl_pebble.png | Bin 0 -> 742 bytes parts_pl/body/pl_seal.png | Bin 0 -> 629 bytes parts_pl/body/pl_slime.png | Bin 0 -> 590 bytes parts_pl/body/pl_snake.png | Bin 0 -> 890 bytes parts_pl/body/pl_sprite.png | Bin 0 -> 525 bytes parts_pl/body/pl_wisp.png | Bin 0 -> 724 bytes parts_pl/body/pl_worm.png | Bin 0 -> 753 bytes parts_pl/body/pl_wyrm.png | Bin 0 -> 783 bytes parts_pl/head_top/pl_antennae.png | Bin 0 -> 209 bytes parts_pl/head_top/pl_antennae_spark.png | Bin 0 -> 359 bytes parts_pl/head_top/pl_antlers_leafy.png | Bin 0 -> 255 bytes parts_pl/head_top/pl_axolotl_sprout.png | Bin 0 -> 179 bytes parts_pl/head_top/pl_bunny_flower_crown.png | Bin 0 -> 247 bytes parts_pl/head_top/pl_coral_crown.png | Bin 0 -> 247 bytes parts_pl/head_top/pl_crest_electric.png | Bin 0 -> 387 bytes parts_pl/head_top/pl_crest_feather.png | Bin 0 -> 304 bytes parts_pl/head_top/pl_crest_flame.png | Bin 0 -> 287 bytes parts_pl/head_top/pl_crown_bluefire.png | Bin 0 -> 224 bytes parts_pl/head_top/pl_crown_ice.png | Bin 0 -> 417 bytes parts_pl/head_top/pl_crystals_head.png | Bin 0 -> 240 bytes parts_pl/head_top/pl_ears_bolt.png | Bin 0 -> 309 bytes parts_pl/head_top/pl_ears_flame.png | Bin 0 -> 322 bytes parts_pl/head_top/pl_ears_long.png | Bin 0 -> 252 bytes parts_pl/head_top/pl_fins_head.png | Bin 0 -> 147 bytes parts_pl/head_top/pl_flower_bud.png | Bin 0 -> 206 bytes parts_pl/head_top/pl_gills_frill.png | Bin 0 -> 414 bytes parts_pl/head_top/pl_grub_flower.png | Bin 0 -> 221 bytes parts_pl/head_top/pl_guppy_pearl_crown.png | Bin 0 -> 188 bytes parts_pl/head_top/pl_hawk_headband.png | Bin 0 -> 272 bytes parts_pl/head_top/pl_headband.png | Bin 0 -> 370 bytes parts_pl/head_top/pl_hood_cobra.png | Bin 0 -> 402 bytes parts_pl/head_top/pl_horn_beetle.png | Bin 0 -> 231 bytes parts_pl/head_top/pl_horn_ice.png | Bin 0 -> 225 bytes parts_pl/head_top/pl_horn_single.png | Bin 0 -> 161 bytes parts_pl/head_top/pl_horns_antler_dragon.png | Bin 0 -> 197 bytes parts_pl/head_top/pl_horns_dragon.png | Bin 0 -> 179 bytes parts_pl/head_top/pl_horns_ember.png | Bin 0 -> 281 bytes parts_pl/head_top/pl_horns_ram.png | Bin 0 -> 335 bytes parts_pl/head_top/pl_imp_halo.png | Bin 0 -> 142 bytes parts_pl/head_top/pl_mushroom_cap.png | Bin 0 -> 200 bytes parts_pl/head_top/pl_owl_halo.png | Bin 0 -> 171 bytes parts_pl/head_top/pl_plume_feather.png | Bin 0 -> 267 bytes parts_pl/head_top/pl_snowcap.png | Bin 0 -> 330 bytes parts_pl/head_top/pl_sprout_leaf.png | Bin 0 -> 185 bytes parts_pl/head_top/pl_topknot.png | Bin 0 -> 160 bytes parts_pl/head_top/pl_tuft_fluffy.png | Bin 0 -> 161 bytes parts_pl/head_top/pl_wisp_ghostfire.png | Bin 0 -> 245 bytes parts_pl/tail/pl_chick_tail_icicle.png | Bin 0 -> 387 bytes parts_pl/tail/pl_cub_tail_rockclub.png | Bin 0 -> 229 bytes parts_pl/tail/pl_tail_bluefire.png | Bin 0 -> 484 bytes parts_pl/tail/pl_tail_bluefire_eel.png | Bin 0 -> 309 bytes parts_pl/tail/pl_tail_bluefire_wisp.png | Bin 0 -> 253 bytes parts_pl/tail/pl_tail_club.png | Bin 0 -> 258 bytes parts_pl/tail/pl_tail_curl_pig.png | Bin 0 -> 168 bytes parts_pl/tail/pl_tail_curly.png | Bin 0 -> 191 bytes parts_pl/tail/pl_tail_dragon_fin.png | Bin 0 -> 416 bytes parts_pl/tail/pl_tail_feather_fan.png | Bin 0 -> 357 bytes parts_pl/tail/pl_tail_fish.png | Bin 0 -> 200 bytes parts_pl/tail/pl_tail_flame.png | Bin 0 -> 455 bytes parts_pl/tail/pl_tail_fluffy.png | Bin 0 -> 312 bytes parts_pl/tail/pl_tail_ghostfire.png | Bin 0 -> 414 bytes parts_pl/tail/pl_tail_ice_shard.png | Bin 0 -> 259 bytes parts_pl/tail/pl_tail_leaf.png | Bin 0 -> 341 bytes parts_pl/tail/pl_tail_lightning.png | Bin 0 -> 313 bytes parts_pl/tail/pl_tail_lightning_lizard.png | Bin 0 -> 452 bytes parts_pl/tail/pl_tail_puff.png | Bin 0 -> 173 bytes parts_pl/tail/pl_tail_rattle.png | Bin 0 -> 168 bytes parts_pl/tail/pl_tail_scorpion.png | Bin 0 -> 311 bytes parts_pl/tail/pl_tail_spade.png | Bin 0 -> 232 bytes parts_pl/tail/pl_tail_splash.png | Bin 0 -> 219 bytes parts_pl/tail/pl_tail_stinger.png | Bin 0 -> 344 bytes parts_pl/tail/pl_tail_storm.png | Bin 0 -> 422 bytes parts_pl/tail/pl_tail_streamers.png | Bin 0 -> 324 bytes parts_pl/tail/pl_tail_tuft.png | Bin 0 -> 315 bytes parts_pl/tail/pl_tail_vine.png | Bin 0 -> 314 bytes parts_pl/tail/pl_tail_wisp_ghostfire.png | Bin 0 -> 447 bytes parts_pl/tail/pl_tail_wrapped.png | Bin 0 -> 299 bytes parts_pl_src/back/pl_barnacles.txt | 18 + parts_pl_src/back/pl_beetle_rock_spikes.txt | 31 + parts_pl_src/back/pl_brawler_shell.txt | 37 + parts_pl_src/back/pl_bubbles_toxic.txt | 36 + parts_pl_src/back/pl_cape_frost.txt | 19 + parts_pl_src/back/pl_cape_short.txt | 20 + parts_pl_src/back/pl_cloud_puffs.txt | 43 + parts_pl_src/back/pl_coils_electric.txt | 37 + parts_pl_src/back/pl_coral_back.txt | 17 + parts_pl_src/back/pl_crystal_cluster.txt | 29 + parts_pl_src/back/pl_dino_crystals_back.txt | 25 + parts_pl_src/back/pl_drake_crystals.txt | 42 + parts_pl_src/back/pl_fin_dorsal.txt | 16 + parts_pl_src/back/pl_flower_back.txt | 41 + parts_pl_src/back/pl_icicles_back.txt | 22 + parts_pl_src/back/pl_leaf_cape.txt | 31 + parts_pl_src/back/pl_mane_bristle.txt | 26 + parts_pl_src/back/pl_mane_fire.txt | 47 ++ parts_pl_src/back/pl_mane_flame.txt | 38 + parts_pl_src/back/pl_mushrooms_back.txt | 16 + parts_pl_src/back/pl_pearl_orb.txt | 18 + parts_pl_src/back/pl_plates_rock.txt | 34 + parts_pl_src/back/pl_rocks_dirt.txt | 31 + parts_pl_src/back/pl_saddle_rock.txt | 20 + parts_pl_src/back/pl_sail_fin.txt | 34 + parts_pl_src/back/pl_scarf_long.txt | 23 + parts_pl_src/back/pl_seal_shell.txt | 14 + parts_pl_src/back/pl_shell_spiral.txt | 31 + parts_pl_src/back/pl_shroud_ghostfire.txt | 52 ++ parts_pl_src/back/pl_slime_spikes_poison.txt | 39 + parts_pl_src/back/pl_spikes_back.txt | 34 + parts_pl_src/back/pl_spikes_frill.txt | 30 + parts_pl_src/back/pl_spines_toxic.txt | 24 + parts_pl_src/back/pl_wings_bat.txt | 15 + parts_pl_src/back/pl_wings_bug.txt | 21 + parts_pl_src/back/pl_wings_dragon.txt | 15 + parts_pl_src/back/pl_wings_elytra.txt | 23 + parts_pl_src/back/pl_wings_feather.txt | 45 + parts_pl_src/back/pl_wings_gold.txt | 24 + parts_pl_src/back/pl_wings_storm.txt | 19 + parts_pl_src/back/pl_wings_tiny.txt | 24 + parts_pl_src/back/pl_wisp_orbs_bluefire.txt | 17 + parts_pl_src/body/pl_axolotl.txt | 41 + parts_pl_src/body/pl_bee.txt | 41 + parts_pl_src/body/pl_beetle.txt | 44 + parts_pl_src/body/pl_boar.txt | 52 ++ parts_pl_src/body/pl_brawler.txt | 43 + parts_pl_src/body/pl_bunny.txt | 48 ++ parts_pl_src/body/pl_chick.txt | 46 + parts_pl_src/body/pl_crab.txt | 40 + parts_pl_src/body/pl_cub.txt | 46 + parts_pl_src/body/pl_dino.txt | 49 ++ parts_pl_src/body/pl_drake.txt | 47 ++ parts_pl_src/body/pl_duck.txt | 50 ++ parts_pl_src/body/pl_eel.txt | 48 ++ parts_pl_src/body/pl_fawn.txt | 48 ++ parts_pl_src/body/pl_fox.txt | 48 ++ parts_pl_src/body/pl_grub.txt | 48 ++ parts_pl_src/body/pl_guppy.txt | 38 + parts_pl_src/body/pl_hawk.txt | 50 ++ parts_pl_src/body/pl_imp.txt | 44 + parts_pl_src/body/pl_lizard.txt | 40 + parts_pl_src/body/pl_mochi.txt | 41 + parts_pl_src/body/pl_monk.txt | 46 + parts_pl_src/body/pl_owl.txt | 48 ++ parts_pl_src/body/pl_pebble.txt | 46 + parts_pl_src/body/pl_seal.txt | 41 + parts_pl_src/body/pl_slime.txt | 44 + parts_pl_src/body/pl_snake.txt | 46 + parts_pl_src/body/pl_sprite.txt | 39 + parts_pl_src/body/pl_wisp.txt | 47 ++ parts_pl_src/body/pl_worm.txt | 44 + parts_pl_src/body/pl_wyrm.txt | 48 ++ parts_pl_src/head_top/pl_antennae.txt | 18 + parts_pl_src/head_top/pl_antennae_spark.txt | 25 + parts_pl_src/head_top/pl_antlers_leafy.txt | 20 + parts_pl_src/head_top/pl_axolotl_sprout.txt | 19 + .../head_top/pl_bunny_flower_crown.txt | 19 + parts_pl_src/head_top/pl_coral_crown.txt | 19 + parts_pl_src/head_top/pl_crest_electric.txt | 22 + parts_pl_src/head_top/pl_crest_feather.txt | 29 + parts_pl_src/head_top/pl_crest_flame.txt | 20 + parts_pl_src/head_top/pl_crown_bluefire.txt | 17 + parts_pl_src/head_top/pl_crown_ice.txt | 24 + parts_pl_src/head_top/pl_crystals_head.txt | 17 + parts_pl_src/head_top/pl_ears_bolt.txt | 26 + parts_pl_src/head_top/pl_ears_flame.txt | 20 + parts_pl_src/head_top/pl_ears_long.txt | 22 + parts_pl_src/head_top/pl_fins_head.txt | 11 + parts_pl_src/head_top/pl_flower_bud.txt | 22 + parts_pl_src/head_top/pl_gills_frill.txt | 27 + parts_pl_src/head_top/pl_grub_flower.txt | 22 + .../head_top/pl_guppy_pearl_crown.txt | 16 + parts_pl_src/head_top/pl_hawk_headband.txt | 18 + parts_pl_src/head_top/pl_headband.txt | 24 + parts_pl_src/head_top/pl_hood_cobra.txt | 31 + parts_pl_src/head_top/pl_horn_beetle.txt | 34 + parts_pl_src/head_top/pl_horn_ice.txt | 21 + parts_pl_src/head_top/pl_horn_single.txt | 18 + .../head_top/pl_horns_antler_dragon.txt | 16 + parts_pl_src/head_top/pl_horns_dragon.txt | 12 + parts_pl_src/head_top/pl_horns_ember.txt | 21 + parts_pl_src/head_top/pl_horns_ram.txt | 17 + parts_pl_src/head_top/pl_imp_halo.txt | 13 + parts_pl_src/head_top/pl_mushroom_cap.txt | 18 + parts_pl_src/head_top/pl_owl_halo.txt | 17 + parts_pl_src/head_top/pl_plume_feather.txt | 20 + parts_pl_src/head_top/pl_snowcap.txt | 18 + parts_pl_src/head_top/pl_sprout_leaf.txt | 15 + parts_pl_src/head_top/pl_topknot.txt | 12 + parts_pl_src/head_top/pl_tuft_fluffy.txt | 16 + parts_pl_src/head_top/pl_wisp_ghostfire.txt | 20 + parts_pl_src/tail/pl_chick_tail_icicle.txt | 22 + parts_pl_src/tail/pl_cub_tail_rockclub.txt | 25 + parts_pl_src/tail/pl_tail_bluefire.txt | 49 ++ parts_pl_src/tail/pl_tail_bluefire_eel.txt | 31 + parts_pl_src/tail/pl_tail_bluefire_wisp.txt | 22 + parts_pl_src/tail/pl_tail_club.txt | 22 + parts_pl_src/tail/pl_tail_curl_pig.txt | 17 + parts_pl_src/tail/pl_tail_curly.txt | 21 + parts_pl_src/tail/pl_tail_dragon_fin.txt | 44 + parts_pl_src/tail/pl_tail_feather_fan.txt | 40 + parts_pl_src/tail/pl_tail_fish.txt | 22 + parts_pl_src/tail/pl_tail_flame.txt | 48 ++ parts_pl_src/tail/pl_tail_fluffy.txt | 34 + parts_pl_src/tail/pl_tail_ghostfire.txt | 35 + parts_pl_src/tail/pl_tail_ice_shard.txt | 20 + parts_pl_src/tail/pl_tail_leaf.txt | 40 + parts_pl_src/tail/pl_tail_lightning.txt | 43 + .../tail/pl_tail_lightning_lizard.txt | 41 + parts_pl_src/tail/pl_tail_puff.txt | 15 + parts_pl_src/tail/pl_tail_rattle.txt | 18 + parts_pl_src/tail/pl_tail_scorpion.txt | 34 + parts_pl_src/tail/pl_tail_spade.txt | 34 + parts_pl_src/tail/pl_tail_splash.txt | 20 + parts_pl_src/tail/pl_tail_stinger.txt | 45 + parts_pl_src/tail/pl_tail_storm.txt | 30 + parts_pl_src/tail/pl_tail_streamers.txt | 30 + parts_pl_src/tail/pl_tail_tuft.txt | 40 + parts_pl_src/tail/pl_tail_vine.txt | 30 + parts_pl_src/tail/pl_tail_wisp_ghostfire.txt | 38 + parts_pl_src/tail/pl_tail_wrapped.txt | 27 + pixellab_api.py | 139 +++ pixellab_library.py | 789 ++++++++++++++++++ pixellab_library/pl_axolotl.json | 71 ++ pixellab_library/pl_bee.json | 88 ++ pixellab_library/pl_beetle.json | 81 ++ pixellab_library/pl_boar.json | 102 +++ pixellab_library/pl_brawler.json | 91 ++ pixellab_library/pl_bunny.json | 93 +++ pixellab_library/pl_chick.json | 97 +++ pixellab_library/pl_crab.json | 27 + pixellab_library/pl_cub.json | 93 +++ pixellab_library/pl_dino.json | 110 +++ pixellab_library/pl_drake.json | 104 +++ pixellab_library/pl_duck.json | 83 ++ pixellab_library/pl_eel.json | 81 ++ pixellab_library/pl_fawn.json | 85 ++ pixellab_library/pl_fox.json | 30 + pixellab_library/pl_grub.json | 84 ++ pixellab_library/pl_guppy.json | 91 ++ pixellab_library/pl_hawk.json | 86 ++ pixellab_library/pl_imp.json | 93 +++ pixellab_library/pl_lizard.json | 32 + pixellab_library/pl_mochi.json | 83 ++ pixellab_library/pl_monk.json | 85 ++ pixellab_library/pl_owl.json | 86 ++ pixellab_library/pl_pebble.json | 57 ++ pixellab_library/pl_seal.json | 105 +++ pixellab_library/pl_slime.json | 67 ++ pixellab_library/pl_snake.json | 70 ++ pixellab_library/pl_sprite.json | 111 +++ pixellab_library/pl_wisp.json | 93 +++ pixellab_library/pl_worm.json | 91 ++ pixellab_library/pl_wyrm.json | 74 ++ pixellab_src/ledger.jsonl | 245 ++++++ pixellab_src/pl_axolotl/base.json | 20 + pixellab_src/pl_axolotl/base.png | Bin 0 -> 1873 bytes pixellab_src/pl_axolotl/base_raw.png | Bin 0 -> 1813 bytes .../pl_axolotl/pl_axolotl_sprout.json | 15 + pixellab_src/pl_axolotl/pl_axolotl_sprout.png | Bin 0 -> 2078 bytes pixellab_src/pl_axolotl/pl_coral_back.json | 15 + pixellab_src/pl_axolotl/pl_coral_back.png | Bin 0 -> 1998 bytes pixellab_src/pl_axolotl/pl_gills_frill.json | 15 + pixellab_src/pl_axolotl/pl_gills_frill.png | Bin 0 -> 2364 bytes pixellab_src/pl_bee/base.json | 20 + pixellab_src/pl_bee/base.png | Bin 0 -> 1610 bytes pixellab_src/pl_bee/base_raw.png | Bin 0 -> 1540 bytes pixellab_src/pl_bee/pl_antennae_spark.json | 15 + pixellab_src/pl_bee/pl_antennae_spark.png | Bin 0 -> 1966 bytes pixellab_src/pl_bee/pl_bee_halo.json | 15 + pixellab_src/pl_bee/pl_bee_halo.png | Bin 0 -> 1775 bytes pixellab_src/pl_bee/pl_tail_scorpion.json | 15 + pixellab_src/pl_bee/pl_tail_scorpion.png | Bin 0 -> 1952 bytes pixellab_src/pl_bee/pl_wings_bug.json | 15 + pixellab_src/pl_bee/pl_wings_bug.png | Bin 0 -> 2327 bytes pixellab_src/pl_beetle/base.json | 20 + pixellab_src/pl_beetle/base.png | Bin 0 -> 1570 bytes pixellab_src/pl_beetle/base_raw.png | Bin 0 -> 1513 bytes .../pl_beetle/pl_beetle_rock_spikes.json | 15 + .../pl_beetle/pl_beetle_rock_spikes.png | Bin 0 -> 2717 bytes pixellab_src/pl_beetle/pl_horn_beetle.json | 15 + pixellab_src/pl_beetle/pl_horn_beetle.png | Bin 0 -> 2115 bytes pixellab_src/pl_beetle/pl_wings_elytra.json | 15 + pixellab_src/pl_beetle/pl_wings_elytra.png | Bin 0 -> 2553 bytes pixellab_src/pl_boar/base.json | 20 + pixellab_src/pl_boar/base.png | Bin 0 -> 2046 bytes pixellab_src/pl_boar/base_raw.png | Bin 0 -> 2029 bytes pixellab_src/pl_boar/pl_mane_bristle.json | 15 + pixellab_src/pl_boar/pl_mane_bristle.png | Bin 0 -> 2630 bytes pixellab_src/pl_boar/pl_saddle_rock.json | 15 + pixellab_src/pl_boar/pl_saddle_rock.png | Bin 0 -> 2455 bytes pixellab_src/pl_boar/pl_tail_curl_pig.json | 15 + pixellab_src/pl_boar/pl_tail_curl_pig.png | Bin 0 -> 2271 bytes pixellab_src/pl_boar/pl_tuft_fluffy.json | 15 + pixellab_src/pl_boar/pl_tuft_fluffy.png | Bin 0 -> 2484 bytes pixellab_src/pl_brawler/base.json | 20 + pixellab_src/pl_brawler/base.png | Bin 0 -> 1916 bytes pixellab_src/pl_brawler/base_raw.png | Bin 0 -> 1864 bytes pixellab_src/pl_brawler/pl_brawler_shell.json | 15 + pixellab_src/pl_brawler/pl_brawler_shell.png | Bin 0 -> 2449 bytes pixellab_src/pl_brawler/pl_headband.json | 15 + pixellab_src/pl_brawler/pl_headband.png | Bin 0 -> 2223 bytes pixellab_src/pl_brawler/pl_mane_fire.json | 15 + pixellab_src/pl_brawler/pl_mane_fire.png | Bin 0 -> 2517 bytes pixellab_src/pl_brawler/pl_tail_tuft.json | 15 + pixellab_src/pl_brawler/pl_tail_tuft.png | Bin 0 -> 2339 bytes pixellab_src/pl_bunny/base.json | 20 + pixellab_src/pl_bunny/base.png | Bin 0 -> 2038 bytes pixellab_src/pl_bunny/base_raw.png | Bin 0 -> 1965 bytes .../pl_bunny/pl_bunny_flower_crown.json | 15 + .../pl_bunny/pl_bunny_flower_crown.png | Bin 0 -> 2096 bytes pixellab_src/pl_bunny/pl_ears_long.json | 15 + pixellab_src/pl_bunny/pl_ears_long.png | Bin 0 -> 2200 bytes pixellab_src/pl_bunny/pl_tail_puff.json | 15 + pixellab_src/pl_bunny/pl_tail_puff.png | Bin 0 -> 2059 bytes pixellab_src/pl_bunny/pl_wings_tiny.json | 15 + pixellab_src/pl_bunny/pl_wings_tiny.png | Bin 0 -> 2188 bytes pixellab_src/pl_chick/base.json | 20 + pixellab_src/pl_chick/base.png | Bin 0 -> 1426 bytes pixellab_src/pl_chick/base_raw.png | Bin 0 -> 1365 bytes .../pl_chick/pl_chick_tail_icicle.json | 15 + .../pl_chick/pl_chick_tail_icicle.png | Bin 0 -> 1688 bytes pixellab_src/pl_chick/pl_crest_feather.json | 15 + pixellab_src/pl_chick/pl_crest_feather.png | Bin 0 -> 1663 bytes .../pl_chick/pl_tail_feather_fan.json | 15 + pixellab_src/pl_chick/pl_tail_feather_fan.png | Bin 0 -> 1851 bytes pixellab_src/pl_chick/pl_wings_gold.json | 15 + pixellab_src/pl_chick/pl_wings_gold.png | Bin 0 -> 1718 bytes pixellab_src/pl_crab/base.json | 20 + pixellab_src/pl_crab/base.png | Bin 0 -> 1818 bytes pixellab_src/pl_crab/base_raw.png | Bin 0 -> 1736 bytes pixellab_src/pl_crab/pl_barnacles.json | 15 + pixellab_src/pl_crab/pl_barnacles.png | Bin 0 -> 2166 bytes pixellab_src/pl_crab/pl_coral_crown.json | 15 + pixellab_src/pl_crab/pl_coral_crown.png | Bin 0 -> 2184 bytes pixellab_src/pl_crab/pl_shell_spiral.json | 15 + pixellab_src/pl_crab/pl_shell_spiral.png | Bin 0 -> 2367 bytes pixellab_src/pl_cub/base.json | 20 + pixellab_src/pl_cub/base.png | Bin 0 -> 2021 bytes pixellab_src/pl_cub/base_raw.png | Bin 0 -> 1949 bytes pixellab_src/pl_cub/pl_cub_tail_rockclub.json | 15 + pixellab_src/pl_cub/pl_cub_tail_rockclub.png | Bin 0 -> 2035 bytes pixellab_src/pl_cub/pl_horns_ram.json | 15 + pixellab_src/pl_cub/pl_horns_ram.png | Bin 0 -> 2094 bytes pixellab_src/pl_cub/pl_plates_rock.json | 15 + pixellab_src/pl_cub/pl_plates_rock.png | Bin 0 -> 1858 bytes pixellab_src/pl_cub/pl_tail_fluffy.json | 15 + pixellab_src/pl_cub/pl_tail_fluffy.png | Bin 0 -> 2203 bytes pixellab_src/pl_dino/base.json | 20 + pixellab_src/pl_dino/base.png | Bin 0 -> 2112 bytes pixellab_src/pl_dino/base_raw.png | Bin 0 -> 2042 bytes .../pl_dino/pl_dino_crystals_back.json | 15 + .../pl_dino/pl_dino_crystals_back.png | Bin 0 -> 1900 bytes pixellab_src/pl_dino/pl_horn_single.json | 15 + pixellab_src/pl_dino/pl_horn_single.png | Bin 0 -> 2047 bytes pixellab_src/pl_dino/pl_spikes_back.json | 15 + pixellab_src/pl_dino/pl_spikes_back.png | Bin 0 -> 2047 bytes pixellab_src/pl_dino/pl_tail_club.json | 15 + pixellab_src/pl_dino/pl_tail_club.png | Bin 0 -> 2021 bytes pixellab_src/pl_drake/base.json | 20 + pixellab_src/pl_drake/base.png | Bin 0 -> 1813 bytes pixellab_src/pl_drake/base_raw.png | Bin 0 -> 1795 bytes pixellab_src/pl_drake/pl_drake_crystals.json | 15 + pixellab_src/pl_drake/pl_drake_crystals.png | Bin 0 -> 2221 bytes pixellab_src/pl_drake/pl_horns_dragon.json | 15 + pixellab_src/pl_drake/pl_horns_dragon.png | Bin 0 -> 1988 bytes pixellab_src/pl_drake/pl_mane_flame.json | 15 + pixellab_src/pl_drake/pl_mane_flame.png | Bin 0 -> 2334 bytes pixellab_src/pl_drake/pl_tail_spade.json | 15 + pixellab_src/pl_drake/pl_tail_spade.png | Bin 0 -> 1861 bytes pixellab_src/pl_drake/pl_wings_dragon.json | 15 + pixellab_src/pl_drake/pl_wings_dragon.png | Bin 0 -> 2161 bytes pixellab_src/pl_duck/base.json | 20 + pixellab_src/pl_duck/base.png | Bin 0 -> 1751 bytes pixellab_src/pl_duck/base_raw.png | Bin 0 -> 1708 bytes pixellab_src/pl_duck/pl_cloud_puffs.json | 15 + pixellab_src/pl_duck/pl_cloud_puffs.png | Bin 0 -> 2808 bytes pixellab_src/pl_duck/pl_plume_feather.json | 15 + pixellab_src/pl_duck/pl_plume_feather.png | Bin 0 -> 1735 bytes pixellab_src/pl_duck/pl_tail_streamers.json | 15 + pixellab_src/pl_duck/pl_tail_streamers.png | Bin 0 -> 1601 bytes pixellab_src/pl_eel/base.json | 20 + pixellab_src/pl_eel/base.png | Bin 0 -> 1426 bytes pixellab_src/pl_eel/base_raw.png | Bin 0 -> 1386 bytes pixellab_src/pl_eel/pl_crest_electric.json | 15 + pixellab_src/pl_eel/pl_crest_electric.png | Bin 0 -> 1958 bytes pixellab_src/pl_eel/pl_sail_fin.json | 15 + pixellab_src/pl_eel/pl_sail_fin.png | Bin 0 -> 1712 bytes pixellab_src/pl_eel/pl_tail_bluefire_eel.json | 15 + pixellab_src/pl_eel/pl_tail_bluefire_eel.png | Bin 0 -> 1460 bytes pixellab_src/pl_fawn/base.json | 20 + pixellab_src/pl_fawn/base.png | Bin 0 -> 1498 bytes pixellab_src/pl_fawn/base_raw.png | Bin 0 -> 1450 bytes pixellab_src/pl_fawn/pl_antlers_leafy.json | 15 + pixellab_src/pl_fawn/pl_antlers_leafy.png | Bin 0 -> 1461 bytes pixellab_src/pl_fawn/pl_fawn_halo.json | 15 + pixellab_src/pl_fawn/pl_fawn_halo.png | Bin 0 -> 1530 bytes pixellab_src/pl_fawn/pl_leaf_cape.json | 15 + pixellab_src/pl_fawn/pl_leaf_cape.png | Bin 0 -> 1338 bytes pixellab_src/pl_fawn/pl_tail_leaf.json | 15 + pixellab_src/pl_fawn/pl_tail_leaf.png | Bin 0 -> 1847 bytes pixellab_src/pl_fox/base.json | 20 + pixellab_src/pl_fox/base.png | Bin 0 -> 1780 bytes pixellab_src/pl_fox/base_raw.png | Bin 0 -> 1703 bytes pixellab_src/pl_fox/pl_crown_ice.json | 15 + pixellab_src/pl_fox/pl_crown_ice.png | Bin 0 -> 2177 bytes pixellab_src/pl_fox/pl_tail_bluefire.json | 15 + pixellab_src/pl_fox/pl_tail_bluefire.png | Bin 0 -> 1881 bytes pixellab_src/pl_fox/pl_tail_flame.json | 15 + pixellab_src/pl_fox/pl_tail_flame.png | Bin 0 -> 1916 bytes pixellab_src/pl_fox/pl_wings_feather.json | 15 + pixellab_src/pl_fox/pl_wings_feather.png | Bin 0 -> 2278 bytes pixellab_src/pl_grub/base.json | 20 + pixellab_src/pl_grub/base.png | Bin 0 -> 2416 bytes pixellab_src/pl_grub/base_raw.png | Bin 0 -> 2355 bytes pixellab_src/pl_grub/pl_antennae.json | 15 + pixellab_src/pl_grub/pl_antennae.png | Bin 0 -> 2666 bytes pixellab_src/pl_grub/pl_grub_flower.json | 15 + pixellab_src/pl_grub/pl_grub_flower.png | Bin 0 -> 2650 bytes pixellab_src/pl_grub/pl_mushrooms_back.json | 15 + pixellab_src/pl_grub/pl_mushrooms_back.png | Bin 0 -> 2821 bytes pixellab_src/pl_grub/pl_tail_stinger.json | 15 + pixellab_src/pl_grub/pl_tail_stinger.png | Bin 0 -> 3054 bytes pixellab_src/pl_guppy/base.json | 20 + pixellab_src/pl_guppy/base.png | Bin 0 -> 1593 bytes pixellab_src/pl_guppy/base_raw.png | Bin 0 -> 1509 bytes pixellab_src/pl_guppy/pl_fin_dorsal.json | 15 + pixellab_src/pl_guppy/pl_fin_dorsal.png | Bin 0 -> 1477 bytes pixellab_src/pl_guppy/pl_fins_head.json | 15 + pixellab_src/pl_guppy/pl_fins_head.png | Bin 0 -> 1641 bytes .../pl_guppy/pl_guppy_bubble_crown.json | 15 + .../pl_guppy/pl_guppy_pearl_crown.json | 15 + .../pl_guppy/pl_guppy_pearl_crown.png | Bin 0 -> 1652 bytes pixellab_src/pl_guppy/pl_tail_fish.json | 15 + pixellab_src/pl_guppy/pl_tail_fish.png | Bin 0 -> 1653 bytes pixellab_src/pl_hawk/base.json | 20 + pixellab_src/pl_hawk/base.png | Bin 0 -> 1603 bytes pixellab_src/pl_hawk/base_raw.png | Bin 0 -> 1541 bytes pixellab_src/pl_hawk/pl_crest_flame.json | 15 + pixellab_src/pl_hawk/pl_crest_flame.png | Bin 0 -> 2044 bytes pixellab_src/pl_hawk/pl_hawk_headband.json | 15 + pixellab_src/pl_hawk/pl_hawk_headband.png | Bin 0 -> 2224 bytes pixellab_src/pl_hawk/pl_tail_storm.json | 15 + pixellab_src/pl_hawk/pl_tail_storm.png | Bin 0 -> 2503 bytes pixellab_src/pl_hawk/pl_wings_storm.json | 15 + pixellab_src/pl_hawk/pl_wings_storm.png | Bin 0 -> 2589 bytes pixellab_src/pl_imp/base.json | 20 + pixellab_src/pl_imp/base.png | Bin 0 -> 1480 bytes pixellab_src/pl_imp/base_raw.png | Bin 0 -> 1421 bytes pixellab_src/pl_imp/pl_coils_electric.json | 15 + pixellab_src/pl_imp/pl_coils_electric.png | Bin 0 -> 1853 bytes pixellab_src/pl_imp/pl_ears_bolt.json | 15 + pixellab_src/pl_imp/pl_ears_bolt.png | Bin 0 -> 1513 bytes pixellab_src/pl_imp/pl_imp_halo.json | 15 + pixellab_src/pl_imp/pl_imp_halo.png | Bin 0 -> 1553 bytes pixellab_src/pl_imp/pl_tail_lightning.json | 15 + pixellab_src/pl_imp/pl_tail_lightning.png | Bin 0 -> 1766 bytes pixellab_src/pl_lizard/base.json | 20 + pixellab_src/pl_lizard/base.png | Bin 0 -> 1535 bytes pixellab_src/pl_lizard/base_raw.png | Bin 0 -> 1487 bytes pixellab_src/pl_lizard/pl_frill_neck.json | 15 + pixellab_src/pl_lizard/pl_frill_neck.png | Bin 0 -> 2200 bytes pixellab_src/pl_lizard/pl_snowcap.json | 15 + pixellab_src/pl_lizard/pl_snowcap.png | Bin 0 -> 1696 bytes pixellab_src/pl_lizard/pl_spines_toxic.json | 15 + pixellab_src/pl_lizard/pl_spines_toxic.png | Bin 0 -> 1731 bytes .../pl_lizard/pl_tail_lightning_lizard.json | 15 + .../pl_lizard/pl_tail_lightning_lizard.png | Bin 0 -> 1848 bytes pixellab_src/pl_mochi/base.json | 20 + pixellab_src/pl_mochi/base.png | Bin 0 -> 2072 bytes pixellab_src/pl_mochi/base_raw.png | Bin 0 -> 2021 bytes pixellab_src/pl_mochi/pl_flower_back.json | 15 + pixellab_src/pl_mochi/pl_flower_back.png | Bin 0 -> 2700 bytes pixellab_src/pl_mochi/pl_mochi_halo.json | 15 + pixellab_src/pl_mochi/pl_mochi_halo.png | Bin 0 -> 2096 bytes pixellab_src/pl_mochi/pl_sprout_leaf.json | 15 + pixellab_src/pl_mochi/pl_sprout_leaf.png | Bin 0 -> 2002 bytes pixellab_src/pl_mochi/pl_tail_curly.json | 15 + pixellab_src/pl_mochi/pl_tail_curly.png | Bin 0 -> 2284 bytes pixellab_src/pl_monk/base.json | 20 + pixellab_src/pl_monk/base.png | Bin 0 -> 1668 bytes pixellab_src/pl_monk/base_raw.png | Bin 0 -> 1617 bytes pixellab_src/pl_monk/pl_cape_short.json | 15 + pixellab_src/pl_monk/pl_cape_short.png | Bin 0 -> 1823 bytes pixellab_src/pl_monk/pl_scarf_long.json | 15 + pixellab_src/pl_monk/pl_scarf_long.png | Bin 0 -> 1902 bytes pixellab_src/pl_monk/pl_tail_wrapped.json | 15 + pixellab_src/pl_monk/pl_tail_wrapped.png | Bin 0 -> 1837 bytes pixellab_src/pl_monk/pl_topknot.json | 15 + pixellab_src/pl_monk/pl_topknot.png | Bin 0 -> 1738 bytes pixellab_src/pl_owl/base.json | 20 + pixellab_src/pl_owl/base.png | Bin 0 -> 1908 bytes pixellab_src/pl_owl/base_raw.png | Bin 0 -> 1838 bytes pixellab_src/pl_owl/pl_crown_bluefire.json | 15 + pixellab_src/pl_owl/pl_crown_bluefire.png | Bin 0 -> 1869 bytes pixellab_src/pl_owl/pl_owl_halo.json | 15 + pixellab_src/pl_owl/pl_owl_halo.png | Bin 0 -> 1547 bytes pixellab_src/pl_owl/pl_shroud_ghostfire.json | 15 + pixellab_src/pl_owl/pl_shroud_ghostfire.png | Bin 0 -> 2554 bytes pixellab_src/pl_owl/pl_tail_ghostfire.json | 15 + pixellab_src/pl_owl/pl_tail_ghostfire.png | Bin 0 -> 2050 bytes pixellab_src/pl_pebble/base.json | 20 + pixellab_src/pl_pebble/base.png | Bin 0 -> 1747 bytes pixellab_src/pl_pebble/base_raw.png | Bin 0 -> 1681 bytes .../pl_pebble/pl_crystal_cluster.json | 15 + pixellab_src/pl_pebble/pl_crystal_cluster.png | Bin 0 -> 2097 bytes pixellab_src/pl_pebble/pl_crystals_head.json | 15 + pixellab_src/pl_pebble/pl_crystals_head.png | Bin 0 -> 1764 bytes pixellab_src/pl_seal/base.json | 20 + pixellab_src/pl_seal/base.png | Bin 0 -> 1517 bytes pixellab_src/pl_seal/base_raw.png | Bin 0 -> 1458 bytes pixellab_src/pl_seal/pl_horn_ice.json | 15 + pixellab_src/pl_seal/pl_horn_ice.png | Bin 0 -> 1590 bytes pixellab_src/pl_seal/pl_icicles_back.json | 15 + pixellab_src/pl_seal/pl_icicles_back.png | Bin 0 -> 1800 bytes pixellab_src/pl_seal/pl_seal_shell.json | 15 + pixellab_src/pl_seal/pl_seal_shell.png | Bin 0 -> 1604 bytes pixellab_src/pl_seal/pl_tail_ice_shard.json | 15 + pixellab_src/pl_seal/pl_tail_ice_shard.png | Bin 0 -> 1662 bytes pixellab_src/pl_slime/base.json | 20 + pixellab_src/pl_slime/base.png | Bin 0 -> 1585 bytes pixellab_src/pl_slime/base_raw.png | Bin 0 -> 1531 bytes pixellab_src/pl_slime/pl_bubbles_toxic.json | 15 + pixellab_src/pl_slime/pl_bubbles_toxic.png | Bin 0 -> 2273 bytes pixellab_src/pl_slime/pl_mushroom_cap.json | 15 + pixellab_src/pl_slime/pl_mushroom_cap.png | Bin 0 -> 1402 bytes .../pl_slime/pl_slime_spikes_poison.json | 15 + .../pl_slime/pl_slime_spikes_poison.png | Bin 0 -> 2489 bytes pixellab_src/pl_snake/base.json | 20 + pixellab_src/pl_snake/base.png | Bin 0 -> 2084 bytes pixellab_src/pl_snake/base_raw.png | Bin 0 -> 2008 bytes pixellab_src/pl_snake/pl_hood_cobra.json | 15 + pixellab_src/pl_snake/pl_hood_cobra.png | Bin 0 -> 2320 bytes pixellab_src/pl_snake/pl_spikes_frill.json | 15 + pixellab_src/pl_snake/pl_spikes_frill.png | Bin 0 -> 2202 bytes pixellab_src/pl_snake/pl_tail_rattle.json | 15 + pixellab_src/pl_snake/pl_tail_rattle.png | Bin 0 -> 2246 bytes pixellab_src/pl_sprite/base.json | 20 + pixellab_src/pl_sprite/base.png | Bin 0 -> 1221 bytes pixellab_src/pl_sprite/base_raw.png | Bin 0 -> 1171 bytes pixellab_src/pl_sprite/pl_cape_frost.json | 15 + pixellab_src/pl_sprite/pl_cape_frost.png | Bin 0 -> 1419 bytes pixellab_src/pl_sprite/pl_ears_flame.json | 15 + pixellab_src/pl_sprite/pl_ears_flame.png | Bin 0 -> 1452 bytes pixellab_src/pl_sprite/pl_horns_ember.json | 15 + pixellab_src/pl_sprite/pl_horns_ember.png | Bin 0 -> 1258 bytes .../pl_sprite/pl_tail_bluefire_wisp.json | 15 + .../pl_sprite/pl_tail_bluefire_wisp.png | Bin 0 -> 1479 bytes pixellab_src/pl_wisp/base.json | 20 + pixellab_src/pl_wisp/base.png | Bin 0 -> 1774 bytes pixellab_src/pl_wisp/base_raw.png | Bin 0 -> 1724 bytes .../pl_wisp/pl_tail_wisp_ghostfire.json | 15 + .../pl_wisp/pl_tail_wisp_ghostfire.png | Bin 0 -> 2007 bytes pixellab_src/pl_wisp/pl_wings_bat.json | 15 + pixellab_src/pl_wisp/pl_wings_bat.png | Bin 0 -> 2004 bytes pixellab_src/pl_wisp/pl_wisp_ghostfire.json | 15 + pixellab_src/pl_wisp/pl_wisp_ghostfire.png | Bin 0 -> 1932 bytes .../pl_wisp/pl_wisp_orbs_bluefire.json | 15 + .../pl_wisp/pl_wisp_orbs_bluefire.png | Bin 0 -> 1934 bytes pixellab_src/pl_worm/base.json | 20 + pixellab_src/pl_worm/base.png | Bin 0 -> 1608 bytes pixellab_src/pl_worm/base_raw.png | Bin 0 -> 1832 bytes pixellab_src/pl_worm/pl_flower_bud.json | 15 + pixellab_src/pl_worm/pl_flower_bud.png | Bin 0 -> 1906 bytes pixellab_src/pl_worm/pl_rocks_dirt.json | 15 + pixellab_src/pl_worm/pl_rocks_dirt.png | Bin 0 -> 2047 bytes pixellab_src/pl_worm/pl_tail_splash.json | 15 + pixellab_src/pl_worm/pl_tail_splash.png | Bin 0 -> 1784 bytes pixellab_src/pl_worm/pl_tail_vine.json | 15 + pixellab_src/pl_worm/pl_tail_vine.png | Bin 0 -> 1809 bytes pixellab_src/pl_wyrm/base.json | 20 + pixellab_src/pl_wyrm/base.png | Bin 0 -> 1696 bytes pixellab_src/pl_wyrm/base_raw.png | Bin 0 -> 1624 bytes .../pl_wyrm/pl_horns_antler_dragon.json | 15 + .../pl_wyrm/pl_horns_antler_dragon.png | Bin 0 -> 1984 bytes pixellab_src/pl_wyrm/pl_pearl_orb.json | 15 + pixellab_src/pl_wyrm/pl_pearl_orb.png | Bin 0 -> 2029 bytes pixellab_src/pl_wyrm/pl_tail_dragon_fin.json | 15 + pixellab_src/pl_wyrm/pl_tail_dragon_fin.png | Bin 0 -> 2120 bytes preview.py | 64 +- sprite_parts.py | 6 + sprite_parts_pl.py | 217 +++++ validate_parts.py | 57 +- 650 files changed, 10879 insertions(+), 113 deletions(-) create mode 100644 parts_pl/back/pl_barnacles.png create mode 100644 parts_pl/back/pl_beetle_rock_spikes.png create mode 100644 parts_pl/back/pl_brawler_shell.png create mode 100644 parts_pl/back/pl_bubbles_toxic.png create mode 100644 parts_pl/back/pl_cape_frost.png create mode 100644 parts_pl/back/pl_cape_short.png create mode 100644 parts_pl/back/pl_cloud_puffs.png create mode 100644 parts_pl/back/pl_coils_electric.png create mode 100644 parts_pl/back/pl_coral_back.png create mode 100644 parts_pl/back/pl_crystal_cluster.png create mode 100644 parts_pl/back/pl_dino_crystals_back.png create mode 100644 parts_pl/back/pl_drake_crystals.png create mode 100644 parts_pl/back/pl_fin_dorsal.png create mode 100644 parts_pl/back/pl_flower_back.png create mode 100644 parts_pl/back/pl_icicles_back.png create mode 100644 parts_pl/back/pl_leaf_cape.png create mode 100644 parts_pl/back/pl_mane_bristle.png create mode 100644 parts_pl/back/pl_mane_fire.png create mode 100644 parts_pl/back/pl_mane_flame.png create mode 100644 parts_pl/back/pl_mushrooms_back.png create mode 100644 parts_pl/back/pl_pearl_orb.png create mode 100644 parts_pl/back/pl_plates_rock.png create mode 100644 parts_pl/back/pl_rocks_dirt.png create mode 100644 parts_pl/back/pl_saddle_rock.png create mode 100644 parts_pl/back/pl_sail_fin.png create mode 100644 parts_pl/back/pl_scarf_long.png create mode 100644 parts_pl/back/pl_seal_shell.png create mode 100644 parts_pl/back/pl_shell_spiral.png create mode 100644 parts_pl/back/pl_shroud_ghostfire.png create mode 100644 parts_pl/back/pl_slime_spikes_poison.png create mode 100644 parts_pl/back/pl_spikes_back.png create mode 100644 parts_pl/back/pl_spikes_frill.png create mode 100644 parts_pl/back/pl_spines_toxic.png create mode 100644 parts_pl/back/pl_wings_bat.png create mode 100644 parts_pl/back/pl_wings_bug.png create mode 100644 parts_pl/back/pl_wings_dragon.png create mode 100644 parts_pl/back/pl_wings_elytra.png create mode 100644 parts_pl/back/pl_wings_feather.png create mode 100644 parts_pl/back/pl_wings_gold.png create mode 100644 parts_pl/back/pl_wings_storm.png create mode 100644 parts_pl/back/pl_wings_tiny.png create mode 100644 parts_pl/back/pl_wisp_orbs_bluefire.png create mode 100644 parts_pl/body/pl_axolotl.png create mode 100644 parts_pl/body/pl_bee.png create mode 100644 parts_pl/body/pl_beetle.png create mode 100644 parts_pl/body/pl_boar.png create mode 100644 parts_pl/body/pl_brawler.png create mode 100644 parts_pl/body/pl_bunny.png create mode 100644 parts_pl/body/pl_chick.png create mode 100644 parts_pl/body/pl_crab.png create mode 100644 parts_pl/body/pl_cub.png create mode 100644 parts_pl/body/pl_dino.png create mode 100644 parts_pl/body/pl_drake.png create mode 100644 parts_pl/body/pl_duck.png create mode 100644 parts_pl/body/pl_eel.png create mode 100644 parts_pl/body/pl_fawn.png create mode 100644 parts_pl/body/pl_fox.png create mode 100644 parts_pl/body/pl_grub.png create mode 100644 parts_pl/body/pl_guppy.png create mode 100644 parts_pl/body/pl_hawk.png create mode 100644 parts_pl/body/pl_imp.png create mode 100644 parts_pl/body/pl_lizard.png create mode 100644 parts_pl/body/pl_mochi.png create mode 100644 parts_pl/body/pl_monk.png create mode 100644 parts_pl/body/pl_owl.png create mode 100644 parts_pl/body/pl_pebble.png create mode 100644 parts_pl/body/pl_seal.png create mode 100644 parts_pl/body/pl_slime.png create mode 100644 parts_pl/body/pl_snake.png create mode 100644 parts_pl/body/pl_sprite.png create mode 100644 parts_pl/body/pl_wisp.png create mode 100644 parts_pl/body/pl_worm.png create mode 100644 parts_pl/body/pl_wyrm.png create mode 100644 parts_pl/head_top/pl_antennae.png create mode 100644 parts_pl/head_top/pl_antennae_spark.png create mode 100644 parts_pl/head_top/pl_antlers_leafy.png create mode 100644 parts_pl/head_top/pl_axolotl_sprout.png create mode 100644 parts_pl/head_top/pl_bunny_flower_crown.png create mode 100644 parts_pl/head_top/pl_coral_crown.png create mode 100644 parts_pl/head_top/pl_crest_electric.png create mode 100644 parts_pl/head_top/pl_crest_feather.png create mode 100644 parts_pl/head_top/pl_crest_flame.png create mode 100644 parts_pl/head_top/pl_crown_bluefire.png create mode 100644 parts_pl/head_top/pl_crown_ice.png create mode 100644 parts_pl/head_top/pl_crystals_head.png create mode 100644 parts_pl/head_top/pl_ears_bolt.png create mode 100644 parts_pl/head_top/pl_ears_flame.png create mode 100644 parts_pl/head_top/pl_ears_long.png create mode 100644 parts_pl/head_top/pl_fins_head.png create mode 100644 parts_pl/head_top/pl_flower_bud.png create mode 100644 parts_pl/head_top/pl_gills_frill.png create mode 100644 parts_pl/head_top/pl_grub_flower.png create mode 100644 parts_pl/head_top/pl_guppy_pearl_crown.png create mode 100644 parts_pl/head_top/pl_hawk_headband.png create mode 100644 parts_pl/head_top/pl_headband.png create mode 100644 parts_pl/head_top/pl_hood_cobra.png create mode 100644 parts_pl/head_top/pl_horn_beetle.png create mode 100644 parts_pl/head_top/pl_horn_ice.png create mode 100644 parts_pl/head_top/pl_horn_single.png create mode 100644 parts_pl/head_top/pl_horns_antler_dragon.png create mode 100644 parts_pl/head_top/pl_horns_dragon.png create mode 100644 parts_pl/head_top/pl_horns_ember.png create mode 100644 parts_pl/head_top/pl_horns_ram.png create mode 100644 parts_pl/head_top/pl_imp_halo.png create mode 100644 parts_pl/head_top/pl_mushroom_cap.png create mode 100644 parts_pl/head_top/pl_owl_halo.png create mode 100644 parts_pl/head_top/pl_plume_feather.png create mode 100644 parts_pl/head_top/pl_snowcap.png create mode 100644 parts_pl/head_top/pl_sprout_leaf.png create mode 100644 parts_pl/head_top/pl_topknot.png create mode 100644 parts_pl/head_top/pl_tuft_fluffy.png create mode 100644 parts_pl/head_top/pl_wisp_ghostfire.png create mode 100644 parts_pl/tail/pl_chick_tail_icicle.png create mode 100644 parts_pl/tail/pl_cub_tail_rockclub.png create mode 100644 parts_pl/tail/pl_tail_bluefire.png create mode 100644 parts_pl/tail/pl_tail_bluefire_eel.png create mode 100644 parts_pl/tail/pl_tail_bluefire_wisp.png create mode 100644 parts_pl/tail/pl_tail_club.png create mode 100644 parts_pl/tail/pl_tail_curl_pig.png create mode 100644 parts_pl/tail/pl_tail_curly.png create mode 100644 parts_pl/tail/pl_tail_dragon_fin.png create mode 100644 parts_pl/tail/pl_tail_feather_fan.png create mode 100644 parts_pl/tail/pl_tail_fish.png create mode 100644 parts_pl/tail/pl_tail_flame.png create mode 100644 parts_pl/tail/pl_tail_fluffy.png create mode 100644 parts_pl/tail/pl_tail_ghostfire.png create mode 100644 parts_pl/tail/pl_tail_ice_shard.png create mode 100644 parts_pl/tail/pl_tail_leaf.png create mode 100644 parts_pl/tail/pl_tail_lightning.png create mode 100644 parts_pl/tail/pl_tail_lightning_lizard.png create mode 100644 parts_pl/tail/pl_tail_puff.png create mode 100644 parts_pl/tail/pl_tail_rattle.png create mode 100644 parts_pl/tail/pl_tail_scorpion.png create mode 100644 parts_pl/tail/pl_tail_spade.png create mode 100644 parts_pl/tail/pl_tail_splash.png create mode 100644 parts_pl/tail/pl_tail_stinger.png create mode 100644 parts_pl/tail/pl_tail_storm.png create mode 100644 parts_pl/tail/pl_tail_streamers.png create mode 100644 parts_pl/tail/pl_tail_tuft.png create mode 100644 parts_pl/tail/pl_tail_vine.png create mode 100644 parts_pl/tail/pl_tail_wisp_ghostfire.png create mode 100644 parts_pl/tail/pl_tail_wrapped.png create mode 100644 parts_pl_src/back/pl_barnacles.txt create mode 100644 parts_pl_src/back/pl_beetle_rock_spikes.txt create mode 100644 parts_pl_src/back/pl_brawler_shell.txt create mode 100644 parts_pl_src/back/pl_bubbles_toxic.txt create mode 100644 parts_pl_src/back/pl_cape_frost.txt create mode 100644 parts_pl_src/back/pl_cape_short.txt create mode 100644 parts_pl_src/back/pl_cloud_puffs.txt create mode 100644 parts_pl_src/back/pl_coils_electric.txt create mode 100644 parts_pl_src/back/pl_coral_back.txt create mode 100644 parts_pl_src/back/pl_crystal_cluster.txt create mode 100644 parts_pl_src/back/pl_dino_crystals_back.txt create mode 100644 parts_pl_src/back/pl_drake_crystals.txt create mode 100644 parts_pl_src/back/pl_fin_dorsal.txt create mode 100644 parts_pl_src/back/pl_flower_back.txt create mode 100644 parts_pl_src/back/pl_icicles_back.txt create mode 100644 parts_pl_src/back/pl_leaf_cape.txt create mode 100644 parts_pl_src/back/pl_mane_bristle.txt create mode 100644 parts_pl_src/back/pl_mane_fire.txt create mode 100644 parts_pl_src/back/pl_mane_flame.txt create mode 100644 parts_pl_src/back/pl_mushrooms_back.txt create mode 100644 parts_pl_src/back/pl_pearl_orb.txt create mode 100644 parts_pl_src/back/pl_plates_rock.txt create mode 100644 parts_pl_src/back/pl_rocks_dirt.txt create mode 100644 parts_pl_src/back/pl_saddle_rock.txt create mode 100644 parts_pl_src/back/pl_sail_fin.txt create mode 100644 parts_pl_src/back/pl_scarf_long.txt create mode 100644 parts_pl_src/back/pl_seal_shell.txt create mode 100644 parts_pl_src/back/pl_shell_spiral.txt create mode 100644 parts_pl_src/back/pl_shroud_ghostfire.txt create mode 100644 parts_pl_src/back/pl_slime_spikes_poison.txt create mode 100644 parts_pl_src/back/pl_spikes_back.txt create mode 100644 parts_pl_src/back/pl_spikes_frill.txt create mode 100644 parts_pl_src/back/pl_spines_toxic.txt create mode 100644 parts_pl_src/back/pl_wings_bat.txt create mode 100644 parts_pl_src/back/pl_wings_bug.txt create mode 100644 parts_pl_src/back/pl_wings_dragon.txt create mode 100644 parts_pl_src/back/pl_wings_elytra.txt create mode 100644 parts_pl_src/back/pl_wings_feather.txt create mode 100644 parts_pl_src/back/pl_wings_gold.txt create mode 100644 parts_pl_src/back/pl_wings_storm.txt create mode 100644 parts_pl_src/back/pl_wings_tiny.txt create mode 100644 parts_pl_src/back/pl_wisp_orbs_bluefire.txt create mode 100644 parts_pl_src/body/pl_axolotl.txt create mode 100644 parts_pl_src/body/pl_bee.txt create mode 100644 parts_pl_src/body/pl_beetle.txt create mode 100644 parts_pl_src/body/pl_boar.txt create mode 100644 parts_pl_src/body/pl_brawler.txt create mode 100644 parts_pl_src/body/pl_bunny.txt create mode 100644 parts_pl_src/body/pl_chick.txt create mode 100644 parts_pl_src/body/pl_crab.txt create mode 100644 parts_pl_src/body/pl_cub.txt create mode 100644 parts_pl_src/body/pl_dino.txt create mode 100644 parts_pl_src/body/pl_drake.txt create mode 100644 parts_pl_src/body/pl_duck.txt create mode 100644 parts_pl_src/body/pl_eel.txt create mode 100644 parts_pl_src/body/pl_fawn.txt create mode 100644 parts_pl_src/body/pl_fox.txt create mode 100644 parts_pl_src/body/pl_grub.txt create mode 100644 parts_pl_src/body/pl_guppy.txt create mode 100644 parts_pl_src/body/pl_hawk.txt create mode 100644 parts_pl_src/body/pl_imp.txt create mode 100644 parts_pl_src/body/pl_lizard.txt create mode 100644 parts_pl_src/body/pl_mochi.txt create mode 100644 parts_pl_src/body/pl_monk.txt create mode 100644 parts_pl_src/body/pl_owl.txt create mode 100644 parts_pl_src/body/pl_pebble.txt create mode 100644 parts_pl_src/body/pl_seal.txt create mode 100644 parts_pl_src/body/pl_slime.txt create mode 100644 parts_pl_src/body/pl_snake.txt create mode 100644 parts_pl_src/body/pl_sprite.txt create mode 100644 parts_pl_src/body/pl_wisp.txt create mode 100644 parts_pl_src/body/pl_worm.txt create mode 100644 parts_pl_src/body/pl_wyrm.txt create mode 100644 parts_pl_src/head_top/pl_antennae.txt create mode 100644 parts_pl_src/head_top/pl_antennae_spark.txt create mode 100644 parts_pl_src/head_top/pl_antlers_leafy.txt create mode 100644 parts_pl_src/head_top/pl_axolotl_sprout.txt create mode 100644 parts_pl_src/head_top/pl_bunny_flower_crown.txt create mode 100644 parts_pl_src/head_top/pl_coral_crown.txt create mode 100644 parts_pl_src/head_top/pl_crest_electric.txt create mode 100644 parts_pl_src/head_top/pl_crest_feather.txt create mode 100644 parts_pl_src/head_top/pl_crest_flame.txt create mode 100644 parts_pl_src/head_top/pl_crown_bluefire.txt create mode 100644 parts_pl_src/head_top/pl_crown_ice.txt create mode 100644 parts_pl_src/head_top/pl_crystals_head.txt create mode 100644 parts_pl_src/head_top/pl_ears_bolt.txt create mode 100644 parts_pl_src/head_top/pl_ears_flame.txt create mode 100644 parts_pl_src/head_top/pl_ears_long.txt create mode 100644 parts_pl_src/head_top/pl_fins_head.txt create mode 100644 parts_pl_src/head_top/pl_flower_bud.txt create mode 100644 parts_pl_src/head_top/pl_gills_frill.txt create mode 100644 parts_pl_src/head_top/pl_grub_flower.txt create mode 100644 parts_pl_src/head_top/pl_guppy_pearl_crown.txt create mode 100644 parts_pl_src/head_top/pl_hawk_headband.txt create mode 100644 parts_pl_src/head_top/pl_headband.txt create mode 100644 parts_pl_src/head_top/pl_hood_cobra.txt create mode 100644 parts_pl_src/head_top/pl_horn_beetle.txt create mode 100644 parts_pl_src/head_top/pl_horn_ice.txt create mode 100644 parts_pl_src/head_top/pl_horn_single.txt create mode 100644 parts_pl_src/head_top/pl_horns_antler_dragon.txt create mode 100644 parts_pl_src/head_top/pl_horns_dragon.txt create mode 100644 parts_pl_src/head_top/pl_horns_ember.txt create mode 100644 parts_pl_src/head_top/pl_horns_ram.txt create mode 100644 parts_pl_src/head_top/pl_imp_halo.txt create mode 100644 parts_pl_src/head_top/pl_mushroom_cap.txt create mode 100644 parts_pl_src/head_top/pl_owl_halo.txt create mode 100644 parts_pl_src/head_top/pl_plume_feather.txt create mode 100644 parts_pl_src/head_top/pl_snowcap.txt create mode 100644 parts_pl_src/head_top/pl_sprout_leaf.txt create mode 100644 parts_pl_src/head_top/pl_topknot.txt create mode 100644 parts_pl_src/head_top/pl_tuft_fluffy.txt create mode 100644 parts_pl_src/head_top/pl_wisp_ghostfire.txt create mode 100644 parts_pl_src/tail/pl_chick_tail_icicle.txt create mode 100644 parts_pl_src/tail/pl_cub_tail_rockclub.txt create mode 100644 parts_pl_src/tail/pl_tail_bluefire.txt create mode 100644 parts_pl_src/tail/pl_tail_bluefire_eel.txt create mode 100644 parts_pl_src/tail/pl_tail_bluefire_wisp.txt create mode 100644 parts_pl_src/tail/pl_tail_club.txt create mode 100644 parts_pl_src/tail/pl_tail_curl_pig.txt create mode 100644 parts_pl_src/tail/pl_tail_curly.txt create mode 100644 parts_pl_src/tail/pl_tail_dragon_fin.txt create mode 100644 parts_pl_src/tail/pl_tail_feather_fan.txt create mode 100644 parts_pl_src/tail/pl_tail_fish.txt create mode 100644 parts_pl_src/tail/pl_tail_flame.txt create mode 100644 parts_pl_src/tail/pl_tail_fluffy.txt create mode 100644 parts_pl_src/tail/pl_tail_ghostfire.txt create mode 100644 parts_pl_src/tail/pl_tail_ice_shard.txt create mode 100644 parts_pl_src/tail/pl_tail_leaf.txt create mode 100644 parts_pl_src/tail/pl_tail_lightning.txt create mode 100644 parts_pl_src/tail/pl_tail_lightning_lizard.txt create mode 100644 parts_pl_src/tail/pl_tail_puff.txt create mode 100644 parts_pl_src/tail/pl_tail_rattle.txt create mode 100644 parts_pl_src/tail/pl_tail_scorpion.txt create mode 100644 parts_pl_src/tail/pl_tail_spade.txt create mode 100644 parts_pl_src/tail/pl_tail_splash.txt create mode 100644 parts_pl_src/tail/pl_tail_stinger.txt create mode 100644 parts_pl_src/tail/pl_tail_storm.txt create mode 100644 parts_pl_src/tail/pl_tail_streamers.txt create mode 100644 parts_pl_src/tail/pl_tail_tuft.txt create mode 100644 parts_pl_src/tail/pl_tail_vine.txt create mode 100644 parts_pl_src/tail/pl_tail_wisp_ghostfire.txt create mode 100644 parts_pl_src/tail/pl_tail_wrapped.txt create mode 100644 pixellab_api.py create mode 100755 pixellab_library.py create mode 100644 pixellab_library/pl_axolotl.json create mode 100644 pixellab_library/pl_bee.json create mode 100644 pixellab_library/pl_beetle.json create mode 100644 pixellab_library/pl_boar.json create mode 100644 pixellab_library/pl_brawler.json create mode 100644 pixellab_library/pl_bunny.json create mode 100644 pixellab_library/pl_chick.json create mode 100644 pixellab_library/pl_crab.json create mode 100644 pixellab_library/pl_cub.json create mode 100644 pixellab_library/pl_dino.json create mode 100644 pixellab_library/pl_drake.json create mode 100644 pixellab_library/pl_duck.json create mode 100644 pixellab_library/pl_eel.json create mode 100644 pixellab_library/pl_fawn.json create mode 100644 pixellab_library/pl_fox.json create mode 100644 pixellab_library/pl_grub.json create mode 100644 pixellab_library/pl_guppy.json create mode 100644 pixellab_library/pl_hawk.json create mode 100644 pixellab_library/pl_imp.json create mode 100644 pixellab_library/pl_lizard.json create mode 100644 pixellab_library/pl_mochi.json create mode 100644 pixellab_library/pl_monk.json create mode 100644 pixellab_library/pl_owl.json create mode 100644 pixellab_library/pl_pebble.json create mode 100644 pixellab_library/pl_seal.json create mode 100644 pixellab_library/pl_slime.json create mode 100644 pixellab_library/pl_snake.json create mode 100644 pixellab_library/pl_sprite.json create mode 100644 pixellab_library/pl_wisp.json create mode 100644 pixellab_library/pl_worm.json create mode 100644 pixellab_library/pl_wyrm.json create mode 100644 pixellab_src/ledger.jsonl create mode 100644 pixellab_src/pl_axolotl/base.json create mode 100644 pixellab_src/pl_axolotl/base.png create mode 100644 pixellab_src/pl_axolotl/base_raw.png create mode 100644 pixellab_src/pl_axolotl/pl_axolotl_sprout.json create mode 100644 pixellab_src/pl_axolotl/pl_axolotl_sprout.png create mode 100644 pixellab_src/pl_axolotl/pl_coral_back.json create mode 100644 pixellab_src/pl_axolotl/pl_coral_back.png create mode 100644 pixellab_src/pl_axolotl/pl_gills_frill.json create mode 100644 pixellab_src/pl_axolotl/pl_gills_frill.png create mode 100644 pixellab_src/pl_bee/base.json create mode 100644 pixellab_src/pl_bee/base.png create mode 100644 pixellab_src/pl_bee/base_raw.png create mode 100644 pixellab_src/pl_bee/pl_antennae_spark.json create mode 100644 pixellab_src/pl_bee/pl_antennae_spark.png create mode 100644 pixellab_src/pl_bee/pl_bee_halo.json create mode 100644 pixellab_src/pl_bee/pl_bee_halo.png create mode 100644 pixellab_src/pl_bee/pl_tail_scorpion.json create mode 100644 pixellab_src/pl_bee/pl_tail_scorpion.png create mode 100644 pixellab_src/pl_bee/pl_wings_bug.json create mode 100644 pixellab_src/pl_bee/pl_wings_bug.png create mode 100644 pixellab_src/pl_beetle/base.json create mode 100644 pixellab_src/pl_beetle/base.png create mode 100644 pixellab_src/pl_beetle/base_raw.png create mode 100644 pixellab_src/pl_beetle/pl_beetle_rock_spikes.json create mode 100644 pixellab_src/pl_beetle/pl_beetle_rock_spikes.png create mode 100644 pixellab_src/pl_beetle/pl_horn_beetle.json create mode 100644 pixellab_src/pl_beetle/pl_horn_beetle.png create mode 100644 pixellab_src/pl_beetle/pl_wings_elytra.json create mode 100644 pixellab_src/pl_beetle/pl_wings_elytra.png create mode 100644 pixellab_src/pl_boar/base.json create mode 100644 pixellab_src/pl_boar/base.png create mode 100644 pixellab_src/pl_boar/base_raw.png create mode 100644 pixellab_src/pl_boar/pl_mane_bristle.json create mode 100644 pixellab_src/pl_boar/pl_mane_bristle.png create mode 100644 pixellab_src/pl_boar/pl_saddle_rock.json create mode 100644 pixellab_src/pl_boar/pl_saddle_rock.png create mode 100644 pixellab_src/pl_boar/pl_tail_curl_pig.json create mode 100644 pixellab_src/pl_boar/pl_tail_curl_pig.png create mode 100644 pixellab_src/pl_boar/pl_tuft_fluffy.json create mode 100644 pixellab_src/pl_boar/pl_tuft_fluffy.png create mode 100644 pixellab_src/pl_brawler/base.json create mode 100644 pixellab_src/pl_brawler/base.png create mode 100644 pixellab_src/pl_brawler/base_raw.png create mode 100644 pixellab_src/pl_brawler/pl_brawler_shell.json create mode 100644 pixellab_src/pl_brawler/pl_brawler_shell.png create mode 100644 pixellab_src/pl_brawler/pl_headband.json create mode 100644 pixellab_src/pl_brawler/pl_headband.png create mode 100644 pixellab_src/pl_brawler/pl_mane_fire.json create mode 100644 pixellab_src/pl_brawler/pl_mane_fire.png create mode 100644 pixellab_src/pl_brawler/pl_tail_tuft.json create mode 100644 pixellab_src/pl_brawler/pl_tail_tuft.png create mode 100644 pixellab_src/pl_bunny/base.json create mode 100644 pixellab_src/pl_bunny/base.png create mode 100644 pixellab_src/pl_bunny/base_raw.png create mode 100644 pixellab_src/pl_bunny/pl_bunny_flower_crown.json create mode 100644 pixellab_src/pl_bunny/pl_bunny_flower_crown.png create mode 100644 pixellab_src/pl_bunny/pl_ears_long.json create mode 100644 pixellab_src/pl_bunny/pl_ears_long.png create mode 100644 pixellab_src/pl_bunny/pl_tail_puff.json create mode 100644 pixellab_src/pl_bunny/pl_tail_puff.png create mode 100644 pixellab_src/pl_bunny/pl_wings_tiny.json create mode 100644 pixellab_src/pl_bunny/pl_wings_tiny.png create mode 100644 pixellab_src/pl_chick/base.json create mode 100644 pixellab_src/pl_chick/base.png create mode 100644 pixellab_src/pl_chick/base_raw.png create mode 100644 pixellab_src/pl_chick/pl_chick_tail_icicle.json create mode 100644 pixellab_src/pl_chick/pl_chick_tail_icicle.png create mode 100644 pixellab_src/pl_chick/pl_crest_feather.json create mode 100644 pixellab_src/pl_chick/pl_crest_feather.png create mode 100644 pixellab_src/pl_chick/pl_tail_feather_fan.json create mode 100644 pixellab_src/pl_chick/pl_tail_feather_fan.png create mode 100644 pixellab_src/pl_chick/pl_wings_gold.json create mode 100644 pixellab_src/pl_chick/pl_wings_gold.png create mode 100644 pixellab_src/pl_crab/base.json create mode 100644 pixellab_src/pl_crab/base.png create mode 100644 pixellab_src/pl_crab/base_raw.png create mode 100644 pixellab_src/pl_crab/pl_barnacles.json create mode 100644 pixellab_src/pl_crab/pl_barnacles.png create mode 100644 pixellab_src/pl_crab/pl_coral_crown.json create mode 100644 pixellab_src/pl_crab/pl_coral_crown.png create mode 100644 pixellab_src/pl_crab/pl_shell_spiral.json create mode 100644 pixellab_src/pl_crab/pl_shell_spiral.png create mode 100644 pixellab_src/pl_cub/base.json create mode 100644 pixellab_src/pl_cub/base.png create mode 100644 pixellab_src/pl_cub/base_raw.png create mode 100644 pixellab_src/pl_cub/pl_cub_tail_rockclub.json create mode 100644 pixellab_src/pl_cub/pl_cub_tail_rockclub.png create mode 100644 pixellab_src/pl_cub/pl_horns_ram.json create mode 100644 pixellab_src/pl_cub/pl_horns_ram.png create mode 100644 pixellab_src/pl_cub/pl_plates_rock.json create mode 100644 pixellab_src/pl_cub/pl_plates_rock.png create mode 100644 pixellab_src/pl_cub/pl_tail_fluffy.json create mode 100644 pixellab_src/pl_cub/pl_tail_fluffy.png create mode 100644 pixellab_src/pl_dino/base.json create mode 100644 pixellab_src/pl_dino/base.png create mode 100644 pixellab_src/pl_dino/base_raw.png create mode 100644 pixellab_src/pl_dino/pl_dino_crystals_back.json create mode 100644 pixellab_src/pl_dino/pl_dino_crystals_back.png create mode 100644 pixellab_src/pl_dino/pl_horn_single.json create mode 100644 pixellab_src/pl_dino/pl_horn_single.png create mode 100644 pixellab_src/pl_dino/pl_spikes_back.json create mode 100644 pixellab_src/pl_dino/pl_spikes_back.png create mode 100644 pixellab_src/pl_dino/pl_tail_club.json create mode 100644 pixellab_src/pl_dino/pl_tail_club.png create mode 100644 pixellab_src/pl_drake/base.json create mode 100644 pixellab_src/pl_drake/base.png create mode 100644 pixellab_src/pl_drake/base_raw.png create mode 100644 pixellab_src/pl_drake/pl_drake_crystals.json create mode 100644 pixellab_src/pl_drake/pl_drake_crystals.png create mode 100644 pixellab_src/pl_drake/pl_horns_dragon.json create mode 100644 pixellab_src/pl_drake/pl_horns_dragon.png create mode 100644 pixellab_src/pl_drake/pl_mane_flame.json create mode 100644 pixellab_src/pl_drake/pl_mane_flame.png create mode 100644 pixellab_src/pl_drake/pl_tail_spade.json create mode 100644 pixellab_src/pl_drake/pl_tail_spade.png create mode 100644 pixellab_src/pl_drake/pl_wings_dragon.json create mode 100644 pixellab_src/pl_drake/pl_wings_dragon.png create mode 100644 pixellab_src/pl_duck/base.json create mode 100644 pixellab_src/pl_duck/base.png create mode 100644 pixellab_src/pl_duck/base_raw.png create mode 100644 pixellab_src/pl_duck/pl_cloud_puffs.json create mode 100644 pixellab_src/pl_duck/pl_cloud_puffs.png create mode 100644 pixellab_src/pl_duck/pl_plume_feather.json create mode 100644 pixellab_src/pl_duck/pl_plume_feather.png create mode 100644 pixellab_src/pl_duck/pl_tail_streamers.json create mode 100644 pixellab_src/pl_duck/pl_tail_streamers.png create mode 100644 pixellab_src/pl_eel/base.json create mode 100644 pixellab_src/pl_eel/base.png create mode 100644 pixellab_src/pl_eel/base_raw.png create mode 100644 pixellab_src/pl_eel/pl_crest_electric.json create mode 100644 pixellab_src/pl_eel/pl_crest_electric.png create mode 100644 pixellab_src/pl_eel/pl_sail_fin.json create mode 100644 pixellab_src/pl_eel/pl_sail_fin.png create mode 100644 pixellab_src/pl_eel/pl_tail_bluefire_eel.json create mode 100644 pixellab_src/pl_eel/pl_tail_bluefire_eel.png create mode 100644 pixellab_src/pl_fawn/base.json create mode 100644 pixellab_src/pl_fawn/base.png create mode 100644 pixellab_src/pl_fawn/base_raw.png create mode 100644 pixellab_src/pl_fawn/pl_antlers_leafy.json create mode 100644 pixellab_src/pl_fawn/pl_antlers_leafy.png create mode 100644 pixellab_src/pl_fawn/pl_fawn_halo.json create mode 100644 pixellab_src/pl_fawn/pl_fawn_halo.png create mode 100644 pixellab_src/pl_fawn/pl_leaf_cape.json create mode 100644 pixellab_src/pl_fawn/pl_leaf_cape.png create mode 100644 pixellab_src/pl_fawn/pl_tail_leaf.json create mode 100644 pixellab_src/pl_fawn/pl_tail_leaf.png create mode 100644 pixellab_src/pl_fox/base.json create mode 100644 pixellab_src/pl_fox/base.png create mode 100644 pixellab_src/pl_fox/base_raw.png create mode 100644 pixellab_src/pl_fox/pl_crown_ice.json create mode 100644 pixellab_src/pl_fox/pl_crown_ice.png create mode 100644 pixellab_src/pl_fox/pl_tail_bluefire.json create mode 100644 pixellab_src/pl_fox/pl_tail_bluefire.png create mode 100644 pixellab_src/pl_fox/pl_tail_flame.json create mode 100644 pixellab_src/pl_fox/pl_tail_flame.png create mode 100644 pixellab_src/pl_fox/pl_wings_feather.json create mode 100644 pixellab_src/pl_fox/pl_wings_feather.png create mode 100644 pixellab_src/pl_grub/base.json create mode 100644 pixellab_src/pl_grub/base.png create mode 100644 pixellab_src/pl_grub/base_raw.png create mode 100644 pixellab_src/pl_grub/pl_antennae.json create mode 100644 pixellab_src/pl_grub/pl_antennae.png create mode 100644 pixellab_src/pl_grub/pl_grub_flower.json create mode 100644 pixellab_src/pl_grub/pl_grub_flower.png create mode 100644 pixellab_src/pl_grub/pl_mushrooms_back.json create mode 100644 pixellab_src/pl_grub/pl_mushrooms_back.png create mode 100644 pixellab_src/pl_grub/pl_tail_stinger.json create mode 100644 pixellab_src/pl_grub/pl_tail_stinger.png create mode 100644 pixellab_src/pl_guppy/base.json create mode 100644 pixellab_src/pl_guppy/base.png create mode 100644 pixellab_src/pl_guppy/base_raw.png create mode 100644 pixellab_src/pl_guppy/pl_fin_dorsal.json create mode 100644 pixellab_src/pl_guppy/pl_fin_dorsal.png create mode 100644 pixellab_src/pl_guppy/pl_fins_head.json create mode 100644 pixellab_src/pl_guppy/pl_fins_head.png create mode 100644 pixellab_src/pl_guppy/pl_guppy_bubble_crown.json create mode 100644 pixellab_src/pl_guppy/pl_guppy_pearl_crown.json create mode 100644 pixellab_src/pl_guppy/pl_guppy_pearl_crown.png create mode 100644 pixellab_src/pl_guppy/pl_tail_fish.json create mode 100644 pixellab_src/pl_guppy/pl_tail_fish.png create mode 100644 pixellab_src/pl_hawk/base.json create mode 100644 pixellab_src/pl_hawk/base.png create mode 100644 pixellab_src/pl_hawk/base_raw.png create mode 100644 pixellab_src/pl_hawk/pl_crest_flame.json create mode 100644 pixellab_src/pl_hawk/pl_crest_flame.png create mode 100644 pixellab_src/pl_hawk/pl_hawk_headband.json create mode 100644 pixellab_src/pl_hawk/pl_hawk_headband.png create mode 100644 pixellab_src/pl_hawk/pl_tail_storm.json create mode 100644 pixellab_src/pl_hawk/pl_tail_storm.png create mode 100644 pixellab_src/pl_hawk/pl_wings_storm.json create mode 100644 pixellab_src/pl_hawk/pl_wings_storm.png create mode 100644 pixellab_src/pl_imp/base.json create mode 100644 pixellab_src/pl_imp/base.png create mode 100644 pixellab_src/pl_imp/base_raw.png create mode 100644 pixellab_src/pl_imp/pl_coils_electric.json create mode 100644 pixellab_src/pl_imp/pl_coils_electric.png create mode 100644 pixellab_src/pl_imp/pl_ears_bolt.json create mode 100644 pixellab_src/pl_imp/pl_ears_bolt.png create mode 100644 pixellab_src/pl_imp/pl_imp_halo.json create mode 100644 pixellab_src/pl_imp/pl_imp_halo.png create mode 100644 pixellab_src/pl_imp/pl_tail_lightning.json create mode 100644 pixellab_src/pl_imp/pl_tail_lightning.png create mode 100644 pixellab_src/pl_lizard/base.json create mode 100644 pixellab_src/pl_lizard/base.png create mode 100644 pixellab_src/pl_lizard/base_raw.png create mode 100644 pixellab_src/pl_lizard/pl_frill_neck.json create mode 100644 pixellab_src/pl_lizard/pl_frill_neck.png create mode 100644 pixellab_src/pl_lizard/pl_snowcap.json create mode 100644 pixellab_src/pl_lizard/pl_snowcap.png create mode 100644 pixellab_src/pl_lizard/pl_spines_toxic.json create mode 100644 pixellab_src/pl_lizard/pl_spines_toxic.png create mode 100644 pixellab_src/pl_lizard/pl_tail_lightning_lizard.json create mode 100644 pixellab_src/pl_lizard/pl_tail_lightning_lizard.png create mode 100644 pixellab_src/pl_mochi/base.json create mode 100644 pixellab_src/pl_mochi/base.png create mode 100644 pixellab_src/pl_mochi/base_raw.png create mode 100644 pixellab_src/pl_mochi/pl_flower_back.json create mode 100644 pixellab_src/pl_mochi/pl_flower_back.png create mode 100644 pixellab_src/pl_mochi/pl_mochi_halo.json create mode 100644 pixellab_src/pl_mochi/pl_mochi_halo.png create mode 100644 pixellab_src/pl_mochi/pl_sprout_leaf.json create mode 100644 pixellab_src/pl_mochi/pl_sprout_leaf.png create mode 100644 pixellab_src/pl_mochi/pl_tail_curly.json create mode 100644 pixellab_src/pl_mochi/pl_tail_curly.png create mode 100644 pixellab_src/pl_monk/base.json create mode 100644 pixellab_src/pl_monk/base.png create mode 100644 pixellab_src/pl_monk/base_raw.png create mode 100644 pixellab_src/pl_monk/pl_cape_short.json create mode 100644 pixellab_src/pl_monk/pl_cape_short.png create mode 100644 pixellab_src/pl_monk/pl_scarf_long.json create mode 100644 pixellab_src/pl_monk/pl_scarf_long.png create mode 100644 pixellab_src/pl_monk/pl_tail_wrapped.json create mode 100644 pixellab_src/pl_monk/pl_tail_wrapped.png create mode 100644 pixellab_src/pl_monk/pl_topknot.json create mode 100644 pixellab_src/pl_monk/pl_topknot.png create mode 100644 pixellab_src/pl_owl/base.json create mode 100644 pixellab_src/pl_owl/base.png create mode 100644 pixellab_src/pl_owl/base_raw.png create mode 100644 pixellab_src/pl_owl/pl_crown_bluefire.json create mode 100644 pixellab_src/pl_owl/pl_crown_bluefire.png create mode 100644 pixellab_src/pl_owl/pl_owl_halo.json create mode 100644 pixellab_src/pl_owl/pl_owl_halo.png create mode 100644 pixellab_src/pl_owl/pl_shroud_ghostfire.json create mode 100644 pixellab_src/pl_owl/pl_shroud_ghostfire.png create mode 100644 pixellab_src/pl_owl/pl_tail_ghostfire.json create mode 100644 pixellab_src/pl_owl/pl_tail_ghostfire.png create mode 100644 pixellab_src/pl_pebble/base.json create mode 100644 pixellab_src/pl_pebble/base.png create mode 100644 pixellab_src/pl_pebble/base_raw.png create mode 100644 pixellab_src/pl_pebble/pl_crystal_cluster.json create mode 100644 pixellab_src/pl_pebble/pl_crystal_cluster.png create mode 100644 pixellab_src/pl_pebble/pl_crystals_head.json create mode 100644 pixellab_src/pl_pebble/pl_crystals_head.png create mode 100644 pixellab_src/pl_seal/base.json create mode 100644 pixellab_src/pl_seal/base.png create mode 100644 pixellab_src/pl_seal/base_raw.png create mode 100644 pixellab_src/pl_seal/pl_horn_ice.json create mode 100644 pixellab_src/pl_seal/pl_horn_ice.png create mode 100644 pixellab_src/pl_seal/pl_icicles_back.json create mode 100644 pixellab_src/pl_seal/pl_icicles_back.png create mode 100644 pixellab_src/pl_seal/pl_seal_shell.json create mode 100644 pixellab_src/pl_seal/pl_seal_shell.png create mode 100644 pixellab_src/pl_seal/pl_tail_ice_shard.json create mode 100644 pixellab_src/pl_seal/pl_tail_ice_shard.png create mode 100644 pixellab_src/pl_slime/base.json create mode 100644 pixellab_src/pl_slime/base.png create mode 100644 pixellab_src/pl_slime/base_raw.png create mode 100644 pixellab_src/pl_slime/pl_bubbles_toxic.json create mode 100644 pixellab_src/pl_slime/pl_bubbles_toxic.png create mode 100644 pixellab_src/pl_slime/pl_mushroom_cap.json create mode 100644 pixellab_src/pl_slime/pl_mushroom_cap.png create mode 100644 pixellab_src/pl_slime/pl_slime_spikes_poison.json create mode 100644 pixellab_src/pl_slime/pl_slime_spikes_poison.png create mode 100644 pixellab_src/pl_snake/base.json create mode 100644 pixellab_src/pl_snake/base.png create mode 100644 pixellab_src/pl_snake/base_raw.png create mode 100644 pixellab_src/pl_snake/pl_hood_cobra.json create mode 100644 pixellab_src/pl_snake/pl_hood_cobra.png create mode 100644 pixellab_src/pl_snake/pl_spikes_frill.json create mode 100644 pixellab_src/pl_snake/pl_spikes_frill.png create mode 100644 pixellab_src/pl_snake/pl_tail_rattle.json create mode 100644 pixellab_src/pl_snake/pl_tail_rattle.png create mode 100644 pixellab_src/pl_sprite/base.json create mode 100644 pixellab_src/pl_sprite/base.png create mode 100644 pixellab_src/pl_sprite/base_raw.png create mode 100644 pixellab_src/pl_sprite/pl_cape_frost.json create mode 100644 pixellab_src/pl_sprite/pl_cape_frost.png create mode 100644 pixellab_src/pl_sprite/pl_ears_flame.json create mode 100644 pixellab_src/pl_sprite/pl_ears_flame.png create mode 100644 pixellab_src/pl_sprite/pl_horns_ember.json create mode 100644 pixellab_src/pl_sprite/pl_horns_ember.png create mode 100644 pixellab_src/pl_sprite/pl_tail_bluefire_wisp.json create mode 100644 pixellab_src/pl_sprite/pl_tail_bluefire_wisp.png create mode 100644 pixellab_src/pl_wisp/base.json create mode 100644 pixellab_src/pl_wisp/base.png create mode 100644 pixellab_src/pl_wisp/base_raw.png create mode 100644 pixellab_src/pl_wisp/pl_tail_wisp_ghostfire.json create mode 100644 pixellab_src/pl_wisp/pl_tail_wisp_ghostfire.png create mode 100644 pixellab_src/pl_wisp/pl_wings_bat.json create mode 100644 pixellab_src/pl_wisp/pl_wings_bat.png create mode 100644 pixellab_src/pl_wisp/pl_wisp_ghostfire.json create mode 100644 pixellab_src/pl_wisp/pl_wisp_ghostfire.png create mode 100644 pixellab_src/pl_wisp/pl_wisp_orbs_bluefire.json create mode 100644 pixellab_src/pl_wisp/pl_wisp_orbs_bluefire.png create mode 100644 pixellab_src/pl_worm/base.json create mode 100644 pixellab_src/pl_worm/base.png create mode 100644 pixellab_src/pl_worm/base_raw.png create mode 100644 pixellab_src/pl_worm/pl_flower_bud.json create mode 100644 pixellab_src/pl_worm/pl_flower_bud.png create mode 100644 pixellab_src/pl_worm/pl_rocks_dirt.json create mode 100644 pixellab_src/pl_worm/pl_rocks_dirt.png create mode 100644 pixellab_src/pl_worm/pl_tail_splash.json create mode 100644 pixellab_src/pl_worm/pl_tail_splash.png create mode 100644 pixellab_src/pl_worm/pl_tail_vine.json create mode 100644 pixellab_src/pl_worm/pl_tail_vine.png create mode 100644 pixellab_src/pl_wyrm/base.json create mode 100644 pixellab_src/pl_wyrm/base.png create mode 100644 pixellab_src/pl_wyrm/base_raw.png create mode 100644 pixellab_src/pl_wyrm/pl_horns_antler_dragon.json create mode 100644 pixellab_src/pl_wyrm/pl_horns_antler_dragon.png create mode 100644 pixellab_src/pl_wyrm/pl_pearl_orb.json create mode 100644 pixellab_src/pl_wyrm/pl_pearl_orb.png create mode 100644 pixellab_src/pl_wyrm/pl_tail_dragon_fin.json create mode 100644 pixellab_src/pl_wyrm/pl_tail_dragon_fin.png create mode 100644 sprite_parts_pl.py diff --git a/.gitignore b/.gitignore index 7cd5d55..9277c4b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,11 @@ out/ # Generated contact sheets (preview.py, $PREVIEW_OUT defaults to preview/) preview/ +# Early PixelLab experiment outputs (the library build itself lives in pixellab_src/, parts_pl*/) +pixellab_out/ +# Cross-process API job lock (pixellab_api.py) +pixellab_src/.api.lock + # Scratch reports size_changes.txt diff --git a/README.md b/README.md index 6344c6d..8b2a0ef 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,13 @@ # sprite_gen -Procedural 96x96 creature sprites for businesses. You give it a business name and logo. It picks a type, builds a creature from parts and recolors it with the logo's brand colors. +Procedural creature sprites for businesses. You give it a business name and logo. It picks a type, builds a creature from parts and recolors it with the logo's brand colors. + +There are two part libraries: + +| Library | Size | Art | Registry | +|---|---|---|---| +| `pixellab` (default) | 64x64 | Generated with [PixelLab](https://pixellab.ai), see [PixelLab library](#pixellab-library) | `sprite_parts_pl.py` + `pixellab_library/*.json` | +| `classic` | 96x96 | Hand-written text grids | `sprite_parts.py` | ## Setup @@ -27,9 +34,12 @@ python generate_sprite.py "Rosas Landscaping" --type grass --colors "#2E7D32,#FB # A different creature for the same business python generate_sprite.py "Rosas Landscaping" logos/rosas.png --type grass --reroll 1 + +# Both libraries side by side +python generate_sprite.py "Rosas Landscaping" logos/rosas.png --type grass --compare ``` -Each run writes `sprites/.png` (96x96), `sprites/@4x.png` and `sprites/.json` (type, parts, colors). With `--reroll N`, the file names end in `-rN`. +Each run writes `sprites/.png`, `sprites/@4x.png` and `sprites/.json` (library, type, parts, colors). With `--reroll N`, the file names end in `-rN`. With `--compare`, each library writes `-.*` and `-compare.png` shows them next to each other at the same height. Both use the same type and colors. | Option | Meaning | |---|---| @@ -37,6 +47,8 @@ Each run writes `sprites/.png` (96x96), `sprites/@4x.png` and `sprit | `--desc TEXT` | Description sent to the classifier (default: the name) | | `--colors "#main,#accent"` | Manual colors; overrides the logo | | `--reroll N` | Alternate creature; the name alone always gives the same sprite | +| `--library NAME` | `pixellab` (default) or `classic` | +| `--compare` | Render with both libraries and write a comparison sheet | | `--out DIR` | Output folder (default `sprites`) | | `--scale N` | Size of the upscaled copy (default 4, `1` disables it) | @@ -50,17 +62,40 @@ Use a CSV with the columns `name,logo,type,description`. Only `name` is required OPENROUTER_API_KEY= python generate_sprite.py --batch businesses.csv --out sprites ``` -## Editing the art +Add `--compare` to get both libraries for every row. -The parts are text grids in `parts_src//.txt`, compiled to `parts//.png`. Weights, compatibility and deny lists live in `sprite_parts.py`. See `AI_PIXEL_ART_GUIDE.md` for the palette and anchor rules. +## PixelLab library + +Each base creature has a spec in `pixellab_library/.json`: the prompt and seed for its base image, plus one edit prompt per part ("add a pair of gold horns ..."). `pixellab_library.py` generates the base with PixelLab's pixen model and makes each part as an edit of that exact image. The part is the pixel difference between the edit and the base, so it lines up with the base and gets its attach point automatically. The full spec schema and conventions are in the docstring at the top of `pixellab_library.py`. + +Art is drawn in a stand-in palette (teal body, crimson details, gold elemental bits) that maps to the recolorable palette keys. Elemental features can use a fixed-color ramp instead (`fire`, `bluefire`, `ice`, `electric`, `ghostfire`): they keep their own colors whatever the brand, and they only appear on their types. When the generator picks parts, it skips any part that would push the sprite past 64x64, so every part can be offered to every body. + +Needs `PIXELLAB_API_KEY` in the environment or in `.env`. ```bash -python build_parts.py # compile all grids (or pass part names) -python validate_parts.py --sample 3000 # check colors, anchors, canvas fit on random composites -python preview.py bases # contact sheets in preview/ -python preview.py part back plant_bulb # one part on every base it fits -python preview.py zoom body=base_fox tail=tail_leaf -python generate_sprite.py --sprite-list SPRITES.md # regenerate the part list and weight report +python pixellab_library.py generate pl_fox --base-only # base image only: review it first +python pixellab_library.py generate pl_fox # every missing edit (raw images in pixellab_src/pl_fox/) +python pixellab_library.py extract pl_fox # grids in parts_pl_src/, PNGs in parts_pl/, diffs in preview/pixellab/diff/ +python pixellab_library.py preview pl_fox # the body with each of its parts +python pixellab_library.py preview --cross # every part on every body, one sheet per slot +python pixellab_library.py preview --random 60 # real random picks +python pixellab_library.py cost # spend so far (pixellab_src/ledger.jsonl) and balance +python validate_parts.py --library pixellab --sample 3000 +``` + +To change a part, edit its spec (new `seed` or wording), then run `generate --parts --force` and `extract `. Regenerating a base deletes that body's old edits. + +## Classic library + +The parts are text grids in `parts_src//.txt`, compiled to `parts//.png`. Weights, compatibility and deny lists live in `sprite_parts.py`. See `AI_PIXEL_ART_GUIDE.md` for the palette and anchor rules. The PixelLab library's grids in `parts_pl_src/` use the same format, plus the fixed-ramp characters listed in `build_parts.py`. + +```bash +python build_parts.py # compile all grids (or pass part names) +python validate_parts.py --library classic --sample 3000 # check colors, anchors, canvas fit on random composites +python preview.py --library classic bases # contact sheets in preview/ +python preview.py --library classic part back plant_bulb # one part on every base it fits +python preview.py --library classic zoom body=base_fox tail=tail_leaf +python generate_sprite.py --library classic --sprite-list SPRITES.md # regenerate the part list and weight report ``` Do not run `--make-placeholders --overwrite`, because it replaces the real art with test placeholders. diff --git a/build_parts.py b/build_parts.py index 494e9c4..7cd2bb9 100755 --- a/build_parts.py +++ b/build_parts.py @@ -12,6 +12,9 @@ Legend a accent_light b accent_base c accent_dark x type_light y type_base z type_dark w white p pupil + fixed-color ramps (light base dark, never recolored, see generate_sprite.FIXED): + f g h fire l m n bluefire i j k ice + s t u electric q r v ghostfire P pivot T tail B back A aura ^ head_top Layout sources (parts_src//.layout) assemble stamps onto a fixed canvas, @@ -34,7 +37,7 @@ from pathlib import Path from PIL import Image -from generate_sprite import KEYS, MARKERS, PUPIL, EYE_WHITE +from generate_sprite import EYE_WHITE, FIXED, KEYS, MARKERS, PUPIL # PARTS_SRC / PARTS_DIR let experiments build into a separate library (e.g. proto/). SRC = Path(os.environ.get("PARTS_SRC", "parts_src")) @@ -49,6 +52,10 @@ LEGEND = { "P": MARKERS["pivot"], "T": MARKERS["tail"], "B": MARKERS["back"], "A": MARKERS["aura"], "^": MARKERS["head_top"], } +# Fixed-color ramp characters, light/base/dark in order +FIXED_CHARS = {"fire": "fgh", "bluefire": "lmn", "ice": "ijk", "electric": "stu", "ghostfire": "qrv"} +for _ramp, _chars in FIXED_CHARS.items(): + LEGEND.update(zip(_chars, FIXED[_ramp])) class SourceError(Exception): diff --git a/generate_sprite.py b/generate_sprite.py index e52c8a2..bfa3d9a 100644 --- a/generate_sprite.py +++ b/generate_sprite.py @@ -6,6 +6,9 @@ Pipeline: Jev picks a type -> seeded RNG picks a base creature and its variation (weighted by type) -> parts snap together via anchor pixels -> markings painted on -> palette keys swapped for colors pulled from the business logo. +Two part libraries share this pipeline (see LIBRARIES): "pixellab" (64x64, art generated with +PixelLab, sprite_parts_pl.py) and "classic" (96x96, hand-written grids, sprite_parts.py). + Logo colors: transparent pixels, anti-aliased edges and a solid white/black/gray background (the colour filling the image border) are ignored; hued brand colours win over white, black or gray text. A logo that is only white/black (or only its background) still uses that. @@ -14,8 +17,9 @@ Usage python generate_sprite.py "Rosas Landscaping" logos/rosas.png # Jev picks the type python generate_sprite.py "Rosas Landscaping" logos/rosas.png --type grass python generate_sprite.py "Rosas Landscaping" --type grass --colors "#2E7D32,#FBC02D" + python generate_sprite.py "Rosas Landscaping" logos/rosas.png --compare # both libraries side by side python generate_sprite.py --batch businesses.csv # columns: name,logo,type,description - python generate_sprite.py --make-placeholders # test art for every part + python generate_sprite.py --library classic --make-placeholders # test art for every part python generate_sprite.py --sprite-list SPRITES.md # art checklist + weight report Requires: pip install pillow numpy requests @@ -24,6 +28,7 @@ import argparse import colorsys import csv import hashlib +import importlib import json import random import re @@ -34,10 +39,20 @@ from pathlib import Path import numpy as np from PIL import Image, ImageDraw -import sprite_parts as cfg +from sprite_parts import TYPE_COLORS, TYPES + +# Part libraries: registry module per library. Each defines NAME, CANVAS (final sprite size), +# GROUND_MARGIN (empty rows under the feet), PARTS_DIR, and the picking tables (BODY, SLOTS, +# PLAN_WEIGHTS, MARKINGS, MOTIFS, ...) documented in sprite_parts.py. +LIBRARIES = {"pixellab": "sprite_parts_pl", "classic": "sprite_parts"} +DEFAULT_LIBRARY = "pixellab" + + +def load_library(name): + if name not in LIBRARIES: + sys.exit(f"Unknown library '{name}'. Options: {', '.join(LIBRARIES)}") + return importlib.import_module(LIBRARIES[name]) -CANVAS = 96 # final sprite size (square) -GROUND_MARGIN = 4 # empty rows under the feet # Palette keys: draw every part using ONLY these exact colors (plus pass-through colors # like eye white). They get swapped for logo-derived colors at render time. @@ -50,6 +65,18 @@ KEYS = { PUPIL = (20, 20, 20) # near-black that is NOT recolored EYE_WHITE = (255, 255, 255) +# Fixed-color ramps (light, base, dark) for elemental features that keep their own colors +# whatever the brand: fire stays yellow/orange/red, ice stays icy. Like eye white they are +# never recolored; parts that use them are type-locked in the library registry. +FIXED = { + "fire": ((255, 230, 107), (255, 159, 46), (226, 70, 43)), + "bluefire": ((214, 246, 255), (92, 200, 255), (47, 107, 232)), + "ice": ((242, 252, 255), (168, 230, 247), (90, 169, 214)), + "electric": ((255, 246, 168), (255, 217, 59), (224, 162, 26)), + "ghostfire": ((240, 210, 255), (185, 123, 240), (116, 69, 184)), +} +FIXED_COLORS = {c for ramp in FIXED.values() for c in ramp} + # Anchor marker pixels. Place one pixel of the color where a child part attaches. # They are read, then replaced with the surrounding color. MARKERS = { @@ -90,9 +117,9 @@ def part_weight(p, ptype): return p["types"].get(ptype, p["other"]) -def candidates(slot, plan, ptype, tags, excluded, denied=()): +def candidates(lib, slot, plan, ptype, tags, excluded, denied=()): out = [] - for p in cfg.SLOTS[slot]: + for p in lib.SLOTS[slot]: if plan not in p["plans"] or p["name"] in denied: continue if p["requires"] and not set(p["requires"]) & tags: @@ -103,30 +130,37 @@ def candidates(slot, plan, ptype, tags, excluded, denied=()): return out -def motif_factor(p, motifs): +def motif_factor(lib, p, motifs): """Keep one creature's features on a theme: same motif boosted, clashing motifs damped.""" - m = cfg.MOTIFS.get(p["name"]) + m = lib.MOTIFS.get(p["name"]) if m is None or not motifs: return 1.0 if m in motifs: - return cfg.MOTIF_SAME - if all(frozenset((m, o)) in cfg.MOTIF_PAIRS for o in motifs): + return lib.MOTIF_SAME + if all(frozenset((m, o)) in lib.MOTIF_PAIRS for o in motifs): return 1.0 - return cfg.MOTIF_CLASH + return lib.MOTIF_CLASH -def pick_parts(ptype, rng): - plan = weighted_pick(rng, cfg.PLAN_WEIGHTS[ptype].items()) +def pick_parts(lib, ptype, rng): + """Seeded pick of body plan, body, feature parts and markings. A library may define + fits(body, picks) to drop candidates that would push the composite past its canvas.""" + plan = weighted_pick(rng, lib.PLAN_WEIGHTS[ptype].items()) chosen, tags, excluded, denied, motifs = {}, {f"plan:{plan}"}, set(), set(), set() features = 0 + fits = getattr(lib, "fits", None) for slot in PICK_ORDER: - if slot in cfg.DISABLED_SLOTS: + if slot in lib.DISABLED_SLOTS: continue - cands = candidates(slot, plan, ptype, tags, excluded, denied) - if slot in cfg.FEATURE_SLOTS: - if features >= cfg.MAX_FEATURES: + cands = candidates(lib, slot, plan, ptype, tags, excluded, denied) + if slot in lib.FEATURE_SLOTS: + if features >= lib.MAX_FEATURES: cands = [(p, w) for p, w in cands if p["name"] == "none"] - cands = [(p, w * motif_factor(p, motifs)) for p, w in cands] + cands = [(p, w * motif_factor(lib, p, motifs)) for p, w in cands] + if fits: + picked = {s: q for s, q in chosen.items() if s != "body"} + cands = [(p, w) for p, w in cands + if p["name"] == "none" or fits(chosen["body"], {**picked, slot: p})] p = weighted_pick(rng, cands) if p is None: continue @@ -134,11 +168,11 @@ def pick_parts(ptype, rng): tags |= set(p["tags"]) excluded |= set(p["excludes"]) denied |= set(p.get("deny", ())) - if p["name"] != "none" and slot in cfg.FEATURE_SLOTS: + if p["name"] != "none" and slot in lib.FEATURE_SLOTS: features += 1 - if cfg.MOTIFS.get(p["name"]): - motifs.add(cfg.MOTIFS[p["name"]]) - markings = weighted_pick(rng, [(m, w.get(ptype, w.get("_other", 0))) for m, w in cfg.MARKINGS.items()]) + if lib.MOTIFS.get(p["name"]): + motifs.add(lib.MOTIFS[p["name"]]) + markings = weighted_pick(rng, [(m, w.get(ptype, w.get("_other", 0))) for m, w in lib.MARKINGS.items()]) return plan, chosen, markings, tags @@ -281,13 +315,13 @@ def compose(parts_dir, chosen, markings, rng): return canvas.crop(canvas.getbbox()) -def place_on_canvas(sprite): +def place_on_canvas(sprite, lib): w, h = sprite.size - size = max(CANVAS, w + 2, h + GROUND_MARGIN + 1) - if size > CANVAS: + size = max(lib.CANVAS, w + 2, h + lib.GROUND_MARGIN + 1) + if size > lib.CANVAS: warn(f"sprite is {w}x{h}, canvas expanded to {size}px") out = Image.new("RGBA", (size, size), (0, 0, 0, 0)) - out.alpha_composite(sprite, ((size - w) // 2, size - GROUND_MARGIN - h)) + out.alpha_composite(sprite, ((size - w) // 2, size - lib.GROUND_MARGIN - h)) return out @@ -445,7 +479,7 @@ def extract_logo_colors(path, n=6): def pick_main_accent(colors, ptype): - type_rgb = hex_to_rgb(cfg.TYPE_COLORS[ptype]) + type_rgb = hex_to_rgb(TYPE_COLORS[ptype]) if not colors: main = type_rgb accent = rotate_hue(type_rgb, 0.5) @@ -469,7 +503,7 @@ def pick_main_accent(colors, ptype): def build_palette(main, accent, ptype): - type_rgb = hex_to_rgb(cfg.TYPE_COLORS[ptype]) + type_rgb = hex_to_rgb(TYPE_COLORS[ptype]) # Elemental parts (leaves, flames, sparks) must read against the body: if the type colour # is close to the main colour, push its lightness away from the main colour. if color_dist(type_rgb, main) < 150: @@ -499,17 +533,23 @@ def classify(description): return ans["choice"].lower(), ans.get("probabilities") -def generate(name, parts_dir, out_dir, ptype=None, description=None, logo=None, colors=None, - reroll=0, scale=4): +def resolve_type(name, ptype=None, description=None): + """(type, probabilities). Jev classifies when no type is given.""" probs = None if not ptype: ptype, probs = classify(description or name) ptype = ptype.lower() - if ptype not in cfg.PLAN_WEIGHTS: - sys.exit(f"Unknown type '{ptype}'. Options: {', '.join(cfg.TYPES)}") + if ptype not in TYPES: + sys.exit(f"Unknown type '{ptype}'. Options: {', '.join(TYPES)}") + return ptype, probs + +def generate(lib, name, out_dir, ptype, probs=None, logo=None, colors=None, reroll=0, scale=4, + parts_dir=None, suffix=""): + """Render one sprite with library `lib`; writes .png/.json (+ upscaled copy). + Returns (info, sprite).""" rng = make_rng(name, reroll) - plan, chosen, markings, tags = pick_parts(ptype, rng) + plan, chosen, markings, tags = pick_parts(lib, ptype, rng) if colors: logo_colors = [(hex_to_rgb(c), 1.0) for c in colors] @@ -522,26 +562,53 @@ def generate(name, parts_dir, out_dir, ptype=None, description=None, logo=None, main, accent = pick_main_accent(logo_colors, ptype) palette = build_palette(main, accent, ptype) - sprite = recolor(place_on_canvas(compose(parts_dir, chosen, markings, rng)), palette) + sprite = recolor(place_on_canvas(compose(parts_dir or lib.PARTS_DIR, chosen, markings, rng), lib), palette) out_dir = Path(out_dir) out_dir.mkdir(parents=True, exist_ok=True) - slug = slugify(name) + (f"-r{reroll}" if reroll else "") + slug = slugify(name) + (f"-r{reroll}" if reroll else "") + suffix sprite.save(out_dir / f"{slug}.png") if scale > 1: sprite.resize((sprite.width * scale, sprite.height * scale), Image.NEAREST).save(out_dir / f"{slug}@{scale}x.png") info = { - "name": name, "type": ptype, "type_probabilities": probs, "plan": plan, + "name": name, "library": lib.NAME, "type": ptype, "type_probabilities": probs, "plan": plan, "parts": {s: p["name"] for s, p in chosen.items()}, "markings": markings, "attributes": attributes_from(tags), "colors": {"main": rgb_to_hex(main), "accent": rgb_to_hex(accent), - "type": cfg.TYPE_COLORS[ptype], "outline": rgb_to_hex(palette["outline"])}, + "type": TYPE_COLORS[ptype], "outline": rgb_to_hex(palette["outline"])}, } (out_dir / f"{slug}.json").write_text(json.dumps(info, indent=2)) - print(f"{name}: {ptype.upper()} {plan} | {', '.join(info['attributes']) or 'no attributes'} | " + print(f"{name} [{lib.NAME}]: {ptype.upper()} {plan} | {', '.join(info['attributes']) or 'no attributes'} | " f"main {info['colors']['main']} accent {info['colors']['accent']} -> {out_dir / slug}.png") - return info + return info, sprite + + +COMPARE_SIZE = 384 # each sprite is scaled by a whole factor to this height in the comparison + + +def write_compare(path, title, rendered): + """Side-by-side sheet. rendered: [(info, sprite)], one per library.""" + pad, label = 16, 28 + cells = [] + for info, spr in rendered: + k = max(1, COMPARE_SIZE // spr.height) + big = spr.resize((spr.width * k, spr.height * k), Image.NEAREST) + cells.append((f"{info['library']} ({spr.width}x{spr.height}): {info['plan']}, " + f"{', '.join(n for s, n in info['parts'].items() if s != 'body' and n != 'none') or 'no extras'}", + big)) + w = sum(c.width for _, c in cells) + pad * (len(cells) + 1) + h = max(c.height for _, c in cells) + pad * 2 + label * 2 + sheet = Image.new("RGBA", (w, h), (232, 232, 226, 255)) + d = ImageDraw.Draw(sheet) + d.text((pad, pad // 2), title, fill=(30, 30, 30, 255)) + x = pad + for text, big in cells: + d.text((x, pad // 2 + label), text, fill=(60, 60, 60, 255)) + sheet.alpha_composite(big, (x, pad + label * 2)) + x += big.width + pad + sheet.save(path) + print(f"comparison -> {path}") # ============================================================ placeholders @@ -603,9 +670,9 @@ def draw_placeholder(slot, p): return img -def make_placeholders(parts_dir, overwrite=False): +def make_placeholders(lib, parts_dir, overwrite=False): made = 0 - for slot, parts in cfg.SLOTS.items(): + for slot, parts in lib.SLOTS.items(): (Path(parts_dir) / slot).mkdir(parents=True, exist_ok=True) for p in parts: if p["name"] == "none": @@ -620,10 +687,10 @@ def make_placeholders(parts_dir, overwrite=False): # ============================================================ sprite list + weight report -def simulate(ptype, n=3000): +def simulate(lib, ptype, n=3000): plans, slots, marks = Counter(), {s: Counter() for s in PICK_ORDER}, Counter() for i in range(n): - plan, chosen, m, _ = pick_parts(ptype, random.Random(i)) + plan, chosen, m, _ = pick_parts(lib, ptype, random.Random(i)) plans[plan] += 1 marks[m] += 1 for s in PICK_ORDER: @@ -635,20 +702,23 @@ def pct(counter, n, top=None): return ", ".join(f"{k} {v / n:.0%}" for k, v in counter.most_common(top) if v / n >= 0.01) -def write_sprite_list(path): - L = ["# Sprite checklist", ""] - total = sum(1 for parts in cfg.SLOTS.values() for p in parts if p["name"] != "none") - L += [f"**{total} sprites** across {len(cfg.SLOTS)} slots. Save each as `parts//.png`.", "", +def write_sprite_list(lib, path): + L = [f"# Sprite checklist ({lib.NAME} library)", ""] + total = sum(1 for parts in lib.SLOTS.values() for p in parts if p["name"] != "none") + L += [f"**{total} sprites** across {len(lib.SLOTS)} slots. Save each as `{lib.PARTS_DIR}//.png`.", "", "## Art rules", "", - f"- Final canvas is {CANVAS}x{CANVAS}. Sizes below are suggested part canvases; crop tight with transparency.", + f"- Final canvas is {lib.CANVAS}x{lib.CANVAS}. Sizes below are suggested part canvases; crop tight with transparency.", "- Characters face left in a 3/4 view, light from the top-left. 1px outline, no anti-aliasing, no semi-transparent pixels.", - "- Draw only with the palette keys below. Any other color (eye white, pupils) is left as-is.", ""] + "- Draw only with the palette keys below. Any other color (eye white, pupils, fixed ramps) is left as-is.", ""] L += ["| Key | Hex | Use |", "|---|---|---|"] uses = {"main": "body / most fur and skin", "accent": "horns, wings, beaks, crests, shells", "type": "elemental bits: flames, leaves, sparks, ice, water"} for k, v in KEYS.items(): L.append(f"| {k} | {rgb_to_hex(v)} | {'outline (recolored)' if k == 'outline' else uses[k.split('_')[0]]} |") - L += [f"| pupil | {rgb_to_hex(PUPIL)} | not recolored |", f"| eye white | {rgb_to_hex(EYE_WHITE)} | not recolored |", ""] + L += [f"| pupil | {rgb_to_hex(PUPIL)} | not recolored |", f"| eye white | {rgb_to_hex(EYE_WHITE)} | not recolored |"] + for name, shades in FIXED.items(): + L.append(f"| {name} (light, base, dark) | {', '.join(rgb_to_hex(c) for c in shades)} | fixed color, not recolored |") + L.append("") L += ["### Anchor marker pixels", "", "One pixel each. `pivot` is where the part attaches to its parent; the others are where children attach.", "", "| Marker | Hex | Needed in |", "|---|---|---|", @@ -663,18 +733,18 @@ def write_sprite_list(path): L += [f"## {slot} ({len(parts)})", "", "| Done | File | Size | Palette | Plans | Description | Most likely for |", "|---|---|---|---|---|---|---|"] for p in parts: - top = sorted(cfg.TYPES, key=lambda t: -part_weight(p, t))[:3] + top = sorted(TYPES, key=lambda t: -part_weight(p, t))[:3] top = ", ".join(t for t in top if part_weight(p, t) > 0) - plans = "all" if p["plans"] == cfg.ALL else ", ".join(p["plans"]) + plans = "all" if set(p["plans"]) == set(lib.ALL) else ", ".join(p["plans"]) w, h = size_for(slot, p) L.append(f"| [ ] | `{slot}/{p['name']}.png` | {w}x{h} | {p['palette']} | {plans} | {p['desc']} | {top} |") L.append("") L += ["## Simulated pick rates per type", "", "From 3,000 random seeds per type. Use this to spot parts that never show up or show up too much.", ""] - for t in cfg.TYPES: + for t in TYPES: n = 3000 - plans, slots, marks = simulate(t, n) + plans, slots, marks = simulate(lib, t, n) L += [f"### {t.capitalize()}", "", f"- **Body plan:** {pct(plans, n)}"] for s in PICK_ORDER: L.append(f"- **{s}:** {pct(slots[s], n, 8)}") @@ -685,6 +755,18 @@ def write_sprite_list(path): # ============================================================ CLI +def run_one(a, name, ptype=None, description=None, logo=None, colors=None, reroll=0): + """Render `name` with --library, or with every library plus a comparison sheet (--compare).""" + ptype, probs = resolve_type(name, ptype, description) + if not a.compare: + generate(load_library(a.library), name, a.out, ptype, probs, logo, colors, reroll, a.scale, a.parts) + return + rendered = [generate(load_library(n), name, a.out, ptype, probs, logo, colors, reroll, a.scale, suffix=f"-{n}") + for n in LIBRARIES] + slug = slugify(name) + (f"-r{reroll}" if reroll else "") + write_compare(Path(a.out) / f"{slug}-compare.png", f"{name} | type: {ptype}", rendered) + + def main(): ap = argparse.ArgumentParser(description="Generate Pokémon-style business sprites") ap.add_argument("name", nargs="?", help="Business name (also the random seed)") @@ -694,7 +776,11 @@ def main(): ap.add_argument("--logo", help="Logo image to pull colors from") ap.add_argument("--colors", help='Manual colors, e.g. "#2E7D32,#FBC02D" (main first)') ap.add_argument("--reroll", type=int, default=0, help="Alternate creature for the same business") - ap.add_argument("--parts", default="parts", help="Parts folder") + ap.add_argument("--library", choices=list(LIBRARIES), default=DEFAULT_LIBRARY, + help=f"Part library (default {DEFAULT_LIBRARY})") + ap.add_argument("--compare", action="store_true", + help="Render with every library: -.png plus -compare.png side by side") + ap.add_argument("--parts", help="Parts folder (default: the library's own)") ap.add_argument("--out", default="sprites", help="Output folder") ap.add_argument("--scale", type=int, default=4, help="Also save an upscaled copy (1 to disable)") ap.add_argument("--batch", help="CSV with columns name,logo,type,description (only name required)") @@ -702,25 +788,27 @@ def main(): ap.add_argument("--overwrite", action="store_true", help="With --make-placeholders, replace existing files") ap.add_argument("--sprite-list", metavar="PATH", help="Write the art checklist and weight report") a = ap.parse_args() + if a.compare and a.parts: + ap.error("--parts picks one library's folder; it can't be combined with --compare") + lib = load_library(a.library) if a.make_placeholders: - make_placeholders(a.parts, a.overwrite) + make_placeholders(lib, a.parts or lib.PARTS_DIR, a.overwrite) if a.sprite_list: - write_sprite_list(a.sprite_list) + write_sprite_list(lib, a.sprite_list) colors = a.colors.split(",") if a.colors else None if a.batch: with open(a.batch, newline="", encoding="utf-8") as f: for row in csv.DictReader(f): if not (row.get("name") or "").strip(): continue - generate(row["name"].strip(), a.parts, a.out, ptype=(row.get("type") or "").strip() or None, - description=(row.get("description") or "").strip() or None, - logo=(row.get("logo") or "").strip() or None, scale=a.scale) + run_one(a, row["name"].strip(), (row.get("type") or "").strip() or None, + (row.get("description") or "").strip() or None, (row.get("logo") or "").strip() or None) elif a.name: logo = a.logo or a.logo_file if logo and not Path(logo).exists(): sys.exit(f"Logo not found: {logo}") - generate(a.name, a.parts, a.out, a.type, a.desc, logo, colors, a.reroll, a.scale) + run_one(a, a.name, a.type, a.desc, logo, colors, a.reroll) elif not (a.make_placeholders or a.sprite_list): ap.print_help() diff --git a/parts_pl/back/pl_barnacles.png b/parts_pl/back/pl_barnacles.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7e038759b00dea024ca793cb7d7ec6db59697c GIT binary patch literal 262 zcmV+h0r~!kP)*+KXO5V3+fC;~4DebZrE2rz$Y-_%nh;qe~w)fgA;(+E_Y?SD_%``)N z-;OZ0#|=vGM|c8c;e!yB%-7#bN-Nh3`D`Z0EG*D%d+v9l`qp%S9q7J@I-&qo&}Ppz zCA|JS?76itqnWTzpg6yU*4-pMIv-+$kw%R>&Z#Hz%{lvk=-(E(0VWB3+%y;YEdT%j M07*qoM6N<$f+^x}?*IS* literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_beetle_rock_spikes.png b/parts_pl/back/pl_beetle_rock_spikes.png new file mode 100644 index 0000000000000000000000000000000000000000..344409eb2aba45b68819395cf8437bd8299ce1aa GIT binary patch literal 439 zcmV;o0Z9IdP)DhB2! z7FgXUW$ZhJA69EU+G%ob-!tGZ2DK%`cR;!KYpE016X*OCoWo{)w46RPN$2ejA(XOZ zl}nGoguB2Dv2~*qza^M`YwI#9o4-&77zbGxmrqx)>r$D({5#G88``Jxp?1 zS>g!1me#~eTjkqKWN6~21s6r`n%tEO@hFbG)J()y9nJsWbA%`Q~XVW zqe%J-v~tsU$&)<{*TZj}bm2{4QL)-Png;WkbKARl!+^>{SuZ5p8qx~9tSKtMUuH6)k86P)NklXuml<*D^@R zpA<+jsl*)C(1VKpM*JB`r3!?f9bzTYrgRc)s@ap8cXbXjuobFUAoMvGhHVaunOJL5 z4UNUPF};53W5yw37D5^%a>u8lAZo-awXP6T!XTZ4kh)>U*^xVJcd0*FIm-5&^l9`X zCeg)u%tfi=xi5~Ys}N54iq$wV-H55g=dbN-C`mk;ND(k-nuf-De-fSro=Z|lxk}=` zY=F&PUWa^uN)`rb3Q?D}v&n_bN+j=oqHZYnO0iQ9>IeuDK z-*hg7#4pv`P~RiDn$*(-IU`qsV$9WBqi2cb8-fyHUfmGS600H9TWweJ9;pM{ZzSOq zF@%IC_BFXCz9z@5%Y O0000pTH4wviCL_bp7c2A5T0kO?$Nz@fH456Axdz*;9+2i{*po3 z@Dd-OF|Z}xyy;*MBlob28ijR)c;;Uew!ir!BE9S;xtv%XA}30f)8(U@mB) z*!UAv0(ZIf~^^5CdE?k?lEBVVG zpPAp|zPerkbmBDRECQB@x2q)>t%XB9?0xtCqz{$iEXckGq z^C=pPEz}eB-K+C`CAHiJn0`V!Y*o4$NrjHAsqSsuB9UqI2coGmceUH;<&Jx(RtvjV zNVMRO7`Jq9C0YAvcSgaokL`aO4VPofRN42}u-eOC9zKmjXn#PABh%&QI%&+?8fE{z iNq3uJV2;}#-(hct;YLs}UbMRa0000b>!43rEH?c%XRw~Wmn@_`OsIwZ&o`lP-fNQN#Q@`3)r9lLqR=p`Kju%Idm6eBs5 zn;am-R%qT)qRzHP2T06WbA3Q5Po>Q~oFI%_h~M@{;2fUkBD6wa+aKM<^TVC{ZEAa! zB8C%0O818!_q%$$SLxI4fb|Ij0ViJXI@NOVIDCF!IWTXjcy-X&P7pLZB3Bzhq6sD9 zivm5IfU*93eg86>K%WFv%VKw48Nlt9Sd2#^E;o}YE!}}C3 zKkQ9y&p5JHC;gf5@%bID+r=#0mllx1MihaTOg!uhAmXV~Hm4QO!P;sP+QrP}Akm1o zm#1(|x@0@mDUX(YiEm#NPuos!W11^G19r2VgUo4moht%)+x{4}4#v@fQ4!u||Li(r zj|9zJsoh=53HaS4T*wX5Nm{W2Nqmd%{3*!kispX-S$@?qg3Z0}00000NkvXXu0mjf D9jNZI literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_cape_short.png b/parts_pl/back/pl_cape_short.png new file mode 100644 index 0000000000000000000000000000000000000000..b79ab1e1d839de59ec4f017d5a3d324949eb4bae GIT binary patch literal 258 zcmV+d0sa1oP)M0002VNkle)NZwwUfh97A?yQ<2(Up=ZX6nj3&fgNWL3|n_TJbQV)DRY1=4X}CkJcpAur6mDbV$HL*cXvS~`K+IL#!UH729lO_fW1_!`U%>> zS(!+4R`CT>!a&49G%posGnqRwTjt$e)8o&WT-#N0Er46fE%1FX8LD-$Y90F7gVG{R z0FvgLfDXV^54Iq9G4M?7>)`HZO2DXGFE!8$AqdU_6qz0lOmG&!if5S_>j~eBbVfqd Rc)Jt1wM`5&wv)n>P(aLh zp5J_&M5{QUziOeq#77k}P9_NO{i*2V1r7QP_D#Lw`iRNF3ZUBKiS4L22XlS+P9M zOk_A!e}qB3_4e$n)zm8_5TniM=$dPLQbfQfHbpjK&lBjg!A2d7&t1(zm@VKfB|2KKn@qm+a~%!bC8oOm5cBFJ<|z@HexSWDF* zLgct7#3J;JdwFpTQ+^RWO z-k+UGZ=Yfnk?QVQg8a&ATr(G(9V2cQI&(DFsJdDd@e4cUkxJ07vz*79p8;7@v z&_rMi;j&Wt^^3m6-ge(b=+G}x?i6xE^4O>{%r!2e&eqvd=|NNJaL-mJwNklrA?aO7 oX3*;nbA5{Eib6dx@Snkd0TV-<6C>!vPXGV_07*qoM6N<$f=~6~=Kufz literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_coral_back.png b/parts_pl/back/pl_coral_back.png new file mode 100644 index 0000000000000000000000000000000000000000..11b6384e7e485403cd5cd94b8a0bed674fbaba35 GIT binary patch literal 212 zcmV;_04x8AP)iqor1nJvjCfpB)K=2&TZ_>a+!-*2BcCZd*k+E(W<+ zjX&{2CQXT`9*Y2gKIMvwaJZLMj$|9?&C-)i;6@Uz$&AIdsdZOL(II O0000CHa&Sd2r(Z5?Yw6x-Kn;SLY56lEF=LX3rIf%sNa-7h|+-ws}dsDh9MD0 z2v#A0C_IY2#lB7MdxTHd2mLC{24y=m2@gf&x3NVRvt)=`p+*&&s1l8octernA`|VM zfZSc6-ni`o$J>EY!g`Q75cxMxg6jIMWT=dJNuqVrtlKYH#2(H?sok zVG8KvlqEpAD)#n4RDJ4q;j|7YpM2ZZJpnQ0|5ZPGbb9~*002ovPDHLkV1g*0<5mCw literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_dino_crystals_back.png b/parts_pl/back/pl_dino_crystals_back.png new file mode 100644 index 0000000000000000000000000000000000000000..8299d55704d823abf0441474bcc6882bff8644ac GIT binary patch literal 257 zcmV+c0sj7pP)0RvA&CSsj4fh#OF0gZ|7)%wh~ zELMRnqLF`@^gRg3_(Fvb?1Mv$OR`w*E`~1#(k6OmwlQp+pw(-HTD*hD zKF2|6&u3&rp1oEAUP6b~fN!lr091ikGij_&PVMti?UMjG@!*76-L2jvg{ZGG`@C(} z$-U>~0@Y3OhqlZ9>z-_wWaQy?c{?P5thvpDJa)N*h}(StXTN>VPb!mH00000NkvXX Hu0mjfY9Mfp literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_drake_crystals.png b/parts_pl/back/pl_drake_crystals.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c77dd29a40c0fdf5034812d40237295b8862f0 GIT binary patch literal 365 zcmV-z0h0cSP)blegztZ zoj|}fSSm7)N5uK32a83{2G?_>kUypaIVXYcYKFip{(aQ2T@=7-xH5M@CaM)@R>49V z&jr^Rn^z+mpe^ds98fFm3FZKo9VCas!EFo1mxt>cXEZ9AMwb9fl+o~D4E5%%Njl{6 z*g{Ab4M(M!RHzjmgH_;pHcBd3TQEztVR z+26QC=anRTlWoC-5jg9n-ld7tSnb=v0xM=^0o7`E=Zm%wNimkfvbBfeS z<%LKbs!Q$45p$*)`pF&$rIFw~t$3j(^V;fH;Z)vaaQzQ)%iKp~(0+`HZU8iRZ5hw{ z@A{%~{2dXor=Yd|tBu;^Hvy27NF#EPxoYO{w)N&P@!lqNnJLkbTz^xKwDBrKWZ_6j zK`mF#hqXhG=hs)7`%J<oJ0CQ#nf162DeT$Z zQX~TS$P{;o@zMCd2JFonx8m9F13*%xRs%|vYtG@r0@(h^{4gI}^MqOba#%I30$Bh4 Y061*kil|n&9smFU07*qoM6N<$g5J&;V*mgE literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_icicles_back.png b/parts_pl/back/pl_icicles_back.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7de991bf09048db98ba240efd3ce773f47b62c GIT binary patch literal 295 zcmV+?0oeYDP) zF%H5o40NgvOdZ)7;SYR(frSC7FW^bMplSye20p+a%E;D%F-sXD870)I>pD_TYLiBH z@#UNv7=dhVAOS;U>qdT&o1`e`ACJ!$mIAFqESnaEHMIiPU9WDUSclBN?$5VY5$FLX z_5xF#cZ%|` zT_5{FbL%k7sYmf@lubLUbh*9a+F;M*l1w0SB_cN|0aXD8AMxb!X%z^^{U(e_f$$F1 t;7IK>w~NCeUl_hXo>yI9@hD zM2sJD)N3-S5o;Lvrnia(f%wOV_YlQQ-~>Ipp;g%L5f|n2r!9aaa}qku_i#2zMwRbM z#@LL~87F5CT!Yh_wRIqteHfJXwlDQr^g{RjMkH{>J-c;eOQhoVvEr3{J%7z2sNA#O ztKG#Jq(O3HyZ-@Z8FSSlwY#24X^u%c3R}c%W7N;r_(NP#fEh-qjs>#Nom3Fp%yvy` z1QxL}d>=uwPjpIQnBDdS#_2IG%+=l;>*nx+cxgO>xum@}R`^y{E=qeIxc;%IUu(lk l`S_o*@C4>p%2u+3_yCdxCvoFc@MHi0002ovPDHLkV1mSo;uHV? literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_mane_bristle.png b/parts_pl/back/pl_mane_bristle.png new file mode 100644 index 0000000000000000000000000000000000000000..de647de4bfc9b8996b8133e2f4d8cea5d05ab609 GIT binary patch literal 278 zcmV+x0qOpUP)P000;W1^@s654Bdt0002pNklWXkaF4RU|lNypH%r4;rGllJ+g?8_MS7D=G*OB$0 znd~tM8OHaQdJs>zY#^V+I`nG@S<-&`!oOWZGYR2292xhO$Au_<@CvK(h2d cYnge`7e=vMsesK0b^rhX07*qoM6N<$f-ih>4gdfE literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_mane_fire.png b/parts_pl/back/pl_mane_fire.png new file mode 100644 index 0000000000000000000000000000000000000000..9dbbb547ae224946e8652c87332eef8380eb563b GIT binary patch literal 737 zcmV<70v`Q|P)Xiq5QfK;Qy?W5K;i~$;SAlC^>-fDEIC87s?-}GVewSbUWExk7Wod{J{TPO;yQDT})@CXJhJQ~pFa(6lTQgvI zHnF=ssN%$xPM2geHX=u5tp)aI;G zKtd05@+r0Lh(P++K%q?Rg~UuWRKIFPD5(#PUue4?^}Blm@@AN+>^#ig%kJEXvGk23 zL&;9vcD)+lQ8^rB?EWi-rlfW9>K{|y=6bE}zOIo2ZH3e0Yz>F4NklWah?RsD>i%c8Dt9pA0ezcZw8zKsjXv5C4%Tg+E$OfXe zfyetd)R#N=#1cKeew|G`As{h~4iN{f^Jjb$>ao!J&|0S@nJ)eg2k^q(YeL9g$@OV>#Nd0`6Djm*SkW`c)1G+iwd2x;GmmuRX z#|RCZBOywMapWQEo$w!?De?%3V(m+m%GDfEb{LTaE0I9cAcm4T)0i4JS!ApUYfMRr zT(TiAt(gXMV<$e(!f?XF^OaH{ORCWoLp0lZXCzJ9+%6roJ`p3an_};;CYyz1Dok`Y z%3200000NkvXXu0mjf4D0Xn literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_mushrooms_back.png b/parts_pl/back/pl_mushrooms_back.png new file mode 100644 index 0000000000000000000000000000000000000000..68bf7085091650fd001e01a1cad11324e017761b GIT binary patch literal 254 zcmVq3CT&yp&lTeq0HC5tP!9)Zs?AQq37F9rlg<|64xpsmf zv(VAYPTLmb2l|A}x^U^^t1B{7n*tr9%RDDYH5M>3^tTeN3sVV*3B$H~A8*gqwL8n+ z&0{f&nY&F_#uzZzsngfyY7vJSG(3l{X}ucbS|p3>6_L2l^Q?AF^h$H!{0%z-b^p<@ z#r^z5&yaHX8ww0CGYuR1p^c5^lAB#tdv=(Go4+anZyDyCs(PF@K>z>%07*qoM6N<$ Ef-#(JjsO4v literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_pearl_orb.png b/parts_pl/back/pl_pearl_orb.png new file mode 100644 index 0000000000000000000000000000000000000000..c89652c0299336a39024b38d62bd4eddc9ccd065 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^oIotV!3HFcc!W9wsSr;W$B>FSPbV^R9Z=wKy*hdK zg4@#|>Gv%8nl rGhSR|(G)!N;nK&%m-83Yetg9G+E=AC$x@IBXg-6dtDnm{r-UW|^jJ3V literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_plates_rock.png b/parts_pl/back/pl_plates_rock.png new file mode 100644 index 0000000000000000000000000000000000000000..d10ac520325209292b83aefdf0e5c436df198679 GIT binary patch literal 333 zcmV-T0kZyyP)5OrHtnK0>Yb_Q2>=lukzI=L%2tay`*GKmJ8pnQ*= zTjG;01NU!nLg(+zP_E=!W1JOl$zO;>^7q`QaESt;jlT4AK-Qdp>Q=#xF7;Inj2*6k%vfO^mgf-{!O=(c$H36J+H~RN&)*egM1I`LAOu(6`mY-x(B|>2k zsK~ILfoV@eC8L+Ywj($O&oPQMxa~-V3|(t$@DWk$PA>8_+o^6Fss!HQ<^&#?GF>q1 fKh4Zz@xb~3xQ&(P)i5iF00000NkvXXu0mjfG&PcS literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_rocks_dirt.png b/parts_pl/back/pl_rocks_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..c109eed0d2b87485e3c0d22ce66e6dec3342f738 GIT binary patch literal 302 zcmV+}0nz@6P)Nklhwwj>(uH`%+D<^91I-&2z;e$Gw7Ua5CC@ zuqPuO^HjWCWSLzr;#x`X)^ZPd2{gX+7FhE-{29{pR3MUMIQb0=*Ny zQD)-<<+21K1Tu14*Dzg2Hhj}97v_`jr`pzFxQhI>1}NaN@Q|R>(;atzge?y3w=2a~ zeh=?`CF_h$-*3YDI>kTgl!A5IxqTXWk$c3w0piuYFS;)3xBvhE07*qoM6N<$f|x~x AF#rGn literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_saddle_rock.png b/parts_pl/back/pl_saddle_rock.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f70e89f492a7822d963034c01c641e9dc4afb6 GIT binary patch literal 249 zcmVP000sQ1^@s6t}b<;0002MNkl|;Ig1DxMye7NJ+v2i>vSFGZCAEQN(9YS?#g9+Ntd3!|2s-7ql`A3+ z^fLNdCpo4Yqyl)`x*?zBdGEV0N@!-Q(ZHk9fZm{J-k$c_dUyBb%Ew8OR4};$Dsx6H(Ks7 z+yUs}lmV48ULC*z(lRCpWiL34SZBDP2M$0udSFdO2#_fCMjnz~E+Py+DEtS|^jA4F k!rzzz1$D9i3{V8W0ec8=QESANUjP6A07*qoM6N<$f(m$Cvj6}9 literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_scarf_long.png b/parts_pl/back/pl_scarf_long.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ce4eb606786d3eea49491c4f4fc34515c6647c GIT binary patch literal 354 zcmV-o0iFJdP)mE|v>uGcl6Kj()MrDipUH zywoYT;Blqux}f^1edgvU2lqWtJS&(<@g#nk`&vi}vXv~UqfW^Rg6z2R zY`EM)5Jz|DKeEcjc$F2`#-O}f7Q1?du)UOnOZ_nmV&}PEv pt*~Bq=G4zqm@8O}ZtP#=%x|dc>3!%gZw%0Q22WQ%mvv4FO#tYoF>e3> literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_shell_spiral.png b/parts_pl/back/pl_shell_spiral.png new file mode 100644 index 0000000000000000000000000000000000000000..f7b68fa8f8799611927d36c4a099db5d3472e6eb GIT binary patch literal 489 zcmVeG{POduDnUON(U zAu#=ELT!v^a0dG_DVZwKpq}M>uP@WD#|;PpwT(%Y7i4@=pZHs|tMpN85ck}8+&jTP zG-Qi*Z_ZAqbumC~{M>fU3mUhU&TW5&?b+SgMkC_&b5t-HC7po^l~1jK?b23G6WfA@ zZXJ=WpQDQmAp2y9thsfbjp&mC?<~_PkdV%#wlt2VltqW@O#zX?Suw}@N)hV8TR$?s zw*4JKQbVLtBJbZGG5vhwEaTO2^Bl8yWy;>4fh|H&Nr6DzQQAgjiY8xcB(6uw*f|*4m}OFy#`z|_2Jqa(!O3S84=-PYMUWMjy`H3xwHL_P8}uONtv>2odJu1*;{}>NdJ;VW9T3tDAxOwBCjS}7F9JU{ zyJUA6!{tOD7}Vh(37CNMmETfaqER;FxLP@TguxU~jBSE zHw~N$n|x6!u+kVgVDzbKS0VX!_vBPlvKdL1#ZjlDSxO{KiCLSQ zO#@s8__T#}SsthWa%@K0m&4FWWrf>I@LixD!PL55WYjv|prdFp#mLD^yoEy4DY4!! zCv)Hnib*AtG8=G#P~vdL(eB39JVBRu)+UOca!Y9eqftev zO0w^RK^e5q3%m+cF})UsJ2Xl96rO@ixKDI?VMs5$elV0{*lq2!s&@EtVtIs7gblpY7#}XEtgD=MCiCQzb?jNy01)nQ7 R(t`j1002ovPDHLkV1i8E9#a4S literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_slime_spikes_poison.png b/parts_pl/back/pl_slime_spikes_poison.png new file mode 100644 index 0000000000000000000000000000000000000000..f93a331883cb1f2aafbb1b7c2d4e01643a4e53aa GIT binary patch literal 593 zcmV-X00006QNkl zfwqGn2t|K9_T{`|<|0KyG+$?&JX>1|$mN0otPwiKA}yp;(_1#M1M&wx|**ad%o#>V;{c z8+AyT>XhJ+ChxG4cM`;K>Pfk!AR_?vE>@h8qJnB?IxBL-a*#-wNl^N{Tl*-AJpXDn z3Dvgx{{Af~;=LDIlru8P9kV%OVG25xB!{F(sn=!4?dp22$3P49HJmchDQkbmoXMrP zIn9`D_&jtW8j5S)iCDl{OH#BuiZP8&Z@LN)M#+Ruf>GYi%gpxucNiKCq1Y*04}aV~ zc7`hK$abAaEDmdJ7;y+MI`dIRwYIaFp?R;i4ZX-1d*O)urqJI(ulZunLk%vXD+$Ir fWSVQ$)1~hZNg>>Vt9d|O00000NkvXXu0mjf4o4HU literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_spikes_back.png b/parts_pl/back/pl_spikes_back.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5a225ae800230e53991e74e28b7e6bdc62533d GIT binary patch literal 277 zcmV+w0qXvVP)PfYGoEVQZD>MaE{fy83@ty@Tl5gPYdiY(oMIp~&ZDR-t<$A4xi`JwPGVoTYLo4t zYrmd|2AvpE{zG_D>UE+0zze}}K@ngFXDliD+HjP~?FMEcVlg2cZSn5j!sDq9*FaXf{a3F|ZS=J#I9gr$4Cq b`hDsPJ}6NQ=0Fye00000NkvXXu0mjf{S9{F literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_spikes_frill.png b/parts_pl/back/pl_spikes_frill.png new file mode 100644 index 0000000000000000000000000000000000000000..ac57f30d8db0dd0c9eb19e3eaa60e905ea899973 GIT binary patch literal 303 zcmV+~0nq-5P)a;KU*9L2lRh{i+DDR7UuMwO0X&G{|-(D_x7GbQ8 zMeWt~)EUz7Ei*8igbT7ZWd{i8t8cwsRkzX032=jS1)P>_Ag@t*K^eC`ixW!dr>Jm7 zI2jBc_HY=NHgttVq%ch`^V7NfVB-jUWhXtH#ynxMfNU~03C;ij002ovPDHLkV1iuM BdW!%6 literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_spines_toxic.png b/parts_pl/back/pl_spines_toxic.png new file mode 100644 index 0000000000000000000000000000000000000000..2851efea8ee9aa93bd4bcb4baf5e422ae75e2e8f GIT binary patch literal 287 zcmV+)0pR|LP)|5YT_Uw=|*Kdr2`Qlg3J_{C(v~5 ze$c$xevgM${V5%Yq;bwGG#H%94oZ-=s(d;e9Lw`2z38M*5$oyEJ@j4VkWIIv*MfT2 zkugCnorG1@8XDlMyCpgaF{(bt=-3^wN$CC;Bpv~#%>I(sCK$~@T|UXk7(Ug`=CIL l%3r%G@Na|P0s1P=;0tN1mc66dmxTZT002ovPDHLkV1nftgX91J literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wings_bat.png b/parts_pl/back/pl_wings_bat.png new file mode 100644 index 0000000000000000000000000000000000000000..e528440d8df7005e512b477d77e035b88f905a1a GIT binary patch literal 268 zcmV+n0rUQeP)XxU3Ij8t#00RV?*oENZ9~>(nq%nA`)UjTfm}73Z!pgwMF0nd z5(Bk9%aG)keufiXOyFt(=og{zsq^|3z{S)Mq42iQ5)t^YDj6o{)>+ZYQ7 z_g84E^t0g<6>xS~w_Jqv=$w5f=G!a4P6mbds9f{*`jk_M+6+Sjt@w!;;y3^eTjAay SNJZfQ0000zCi+uu$59%c6`+jQD~pceI$O0;-*8ZNPFB!XRSxj8_c^`Q*5!BtbB5 z%@@r3N&z9C#yr7{au6|yq%GH3UYH*N-X#ZJpRk`p8^N){>d0AnN)|&BEQvK)XX+ z5LwCc&_pgRma*B?eK)`iH}1ev>8lLkZT9$rhuFs2sdDf<(zxh&t1&;ShTtIHj9nFq zYug}@(uHl$D2`~yjkt^hQF(j2MF|j)+O_zzDuFVk-{E5KeKZm1Pi%j&n;flk`Tw>j zZ0eaT_FnRFFDwv*z!kzMdl_pT&;@DQmgKUoe4D+Z&DsiT&cf3Y3EieE3U*y2$ a-|HK_0aWd>mK4bV0000 literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wings_dragon.png b/parts_pl/back/pl_wings_dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d35bc141a9305b1010caec62925bb304dd720aa GIT binary patch literal 321 zcmV-H0lxl;P)dvsn=mI@3Ewt_v!}Sh#AxPf zVqyj{ce%cJ!DaSj=4mKQ|aC@N4U`?i+H()a>8OoiPA7fd98YF~j?z$4h? zsEg3+X@7*7jq+`A-rZkb@6JIBQpziMt=uk96bHT{q2W*mT!U%Q61)2KI< zF<#!0qtAt?m*1YgN3AGILRo&=tXPQ?72BNTLNQ6@*NYPicoeI-=+0-V3o^1FbW`}= TeOMVB00000NkvXXu0mjfRUVEb literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wings_elytra.png b/parts_pl/back/pl_wings_elytra.png new file mode 100644 index 0000000000000000000000000000000000000000..1412f4c3aec65e0f72f1893e5a7e2c4fb7ef2116 GIT binary patch literal 490 zcmV#>5!e`*V8_OQREP(j}{dtkD0lxuV z;4oI&;WA{?hE+%!6*TMwtl^mE1nl1?Q^gPh#tpEs2e=Z))@(Phw3dDbISraxCH=h! zYlbXs`({P)9as}&p6dCEABHg?=$>I~z29@Tm2C-%w*Ns4bR%qrEXt4N3j??2zsLinoEL6w@YRM%+ zj%FK1Ycz-nF^2Z}w%4irJEEzMQ}Q5zlRc)$)&0l;-yAyCt=r;)Ex^<$E}W3s|7-Hx z&(f9(wi{7%S4Bn2p;`ZXQeD>vj4npt6RhZy(@SWp#RJqE>GZ-{OH6tK_LSrST}YZE zAJxhy!6AC)iTHyRV`c4@mSykdNAkskHx|HJTWixNk=8DIoeTQOk<6^0v=CeUd~ef- g8Lle-1X_>83hXivR!s07*qoM6N<$g3wCjod5s; literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wings_feather.png b/parts_pl/back/pl_wings_feather.png new file mode 100644 index 0000000000000000000000000000000000000000..02c231c593ec087c84d6b0cf0e241d3c7640c4c9 GIT binary patch literal 779 zcmV+m1N8ifP) zGX&6~9)SOU`^~%rJL$^|E!JOPeyMaGgU1F|T+RB6n*SsN$bo06deNS@=P^Dh0Mx+C z*fjHXu>u6Q#v;Rxx51x!|G3*=hjsD!q2|LP;Bl8{UA(_1DSSBt$ZK9RKEJ{uIV?^? ztC;XzsYFp%Q?g0U`%J@Zx5O-oYv9Fl%lyqrMzcQIbuj(Y??w@)#E?&IqbY5(PA%-| z>KQArp(2Ow%0jhGZU=-V=ByR4?bDqFs7aBNsAa@`Trz*%QNl}w83uq;UFG`;%~Oyf zm%)zH?I_OBxE#-}`Fn|Zynhy@3Dg0|Gu#ADR!<-*{ntuB2VG&O!29JKzo5FO&pS%; zNB4#gINvE_+$V}L`EK@~WaD?D+7s{qen37dFRS@zYb|C`at4A7eZ-=Zvc`!|5fT zg?*b@IQ6bCsd>$Q0f*29ZxUF>OyDe&Cm7e2hAdK}P){6Ukpd5?c(JkK_u8o^r@lOw zSJJRcD6!wLc>Ler$FT6;(tHL0)89XO7BTr5uxPFu@(|)p;MVpa59SHnTD;I9dgsOS ziS?AtL-U4(qYV;po$|5=(olMPn_C%Rz?-bgt#54h`Fe|7CilJN4wH&MH@CCf*efiE zE@ZF73%`{kna~7|t+fCJoh?DNC^dm^pHAY?JE$eTwptc2B;QZK!x4~xOY*YTf$3Ol zoO$Zlia*P+(-;+LWW&}LI9WNG{flfgaLeLtxePz>4tNWA*ni7I#?Tpf3Hbf{n6XpX zm`qm7rU5!s$HqA#{W{iz71BQmvaOR#e4RA^hLg%hmhxBP{sHwSQAdWLr#Aoq002ov JPDHLkV1nP(hTi}H literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wings_gold.png b/parts_pl/back/pl_wings_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..d83986123ce34596a5fe4dda82e6e45125f0c430 GIT binary patch literal 340 zcmV-a0jvIrP)IsUM9Glbl=ez+kuT6>2I(x)VcxFIq9ziL z;zT94#vG5sL6JD55wenRn%zLev#1HLqL29uplAUu3d3&1!-a(Gk2L)}k0BQ|d3&pe z6opsNs;K^5s1>$5DB6IQr<#-YDE-?ZAtHD{>;G6dd0_3K`omWMxkSjPSPQW1ILTyd zwCm=(OMx)UyleKc=H?0~$lh&?%^;biRM~BtJC`X1%G%M5g$!BZUU1MkMY&qUM5ym> zJ61DS^1gMh47+fjQw{_K3V)7k<+{(uQ$W{4EoO@(n!7*j;}-R0roASPAcjBXouZ-1 mGxDDS3hHxkZ-XI!TbBwv~WbA(g6hB(`|kSJOcp%Y4@V$1ZRR; zJ8BB#>QE6p@;;c0 zan|ABXDH~y<&D})GLSw|y0~NnR8zdfhH@P|UE$#(j4AJ>foZAga>-YZk5SZxYF->e fKGDWhzERv?+IX;kejY}p00000NkvXXu0mjfs5it^ literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wings_tiny.png b/parts_pl/back/pl_wings_tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..1b6acfc839ddf5e3914f0fabb1f14e312ab218e5 GIT binary patch literal 416 zcmV;R0bl-!P)o3`G-@uVT|c zeyg=GvbtvT;L@|h%NCChYXHR_sP%G?Xs^;<05)Ujm4`Ip*j8k$q@ z)SG0KHmB*-|GcC2uKEq{Is5Y*mlnq-ZbEN@Pg?1FCO_!gT7LkP{6y+Ya3XgA0000< KMNUMnLSTZeLcO5? literal 0 HcmV?d00001 diff --git a/parts_pl/back/pl_wisp_orbs_bluefire.png b/parts_pl/back/pl_wisp_orbs_bluefire.png new file mode 100644 index 0000000000000000000000000000000000000000..38d69e8791c106646b9b79d0f0792515a254a077 GIT binary patch literal 290 zcmV+-0p0$IP)VRjHf2U)u>$DUe^m z;v00}{symRz-$(uHWKC3Ot|iX$yYU^g1s54@<}6bo*n3k@%W5`-wmoaqNXi*?hi_Q z_wzaqE<3ZdSRc39HT4nXPi|!d379{S+1MOb@(5o%dEC2ui07*qoM6N<$g6-~m-v9sr literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_axolotl.png b/parts_pl/body/pl_axolotl.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb5c75c714ffd659743b418b5ea7e80ee7b7e6e GIT binary patch literal 807 zcmV+?1K9kDP)?(n0008+Nkl7LXB9Y{YQa0lQ`l<*MK&h7>v zVyxvngL5B80$&1X1+{LWskNVDd3_tmKv3BHZlGVcIwU^>TRmM1v`!B1vWb{JjeQV5 zPr+iK`*J}(l;0*5tI5p2dz>|kNGwC|DJ_MV57;mCSYZ3pH&RWAUG$dKmt?bnWT(5( zZ}bYQdG%gXt%#`&11KVFGOFC|zy>T9F)m9akHUu01qfIL$tcRUbkg9*r(=9644T+> z`fMc-oZtL$$x(U$Cl!y_b*FPwAfuvqJ82-L3E#~C|I+!HQmy-TR|d#tVd!T8E02xP z@W6@+I&Rs&l!06m0Q6mWtlBxEg!DyY%Z?t+$y_X?4?P0J&0w{I7GakHiqQy=1DIP6 zxg$2qD1#gq4KQ;OO!b#2KV=8?K#nM(Ehgsw z-3AP>Mau#)K2ue!+V3_gn>FYl8C=tC^!Y+%L5*0R82dpzyZ7z3b`G}JQ|q!$KDWPl zjaYYyc&}lq>Q=QWVP5Aej-9IrAi8Igiv>g*f}B`#7GnZZrmY?($j7bIy=h zF9X+S_vId-&i(g&Bb0feu!~oVyba^xg5hm2xDdro)Z#bjbCBq7)I?|H`;pvcGx-~x lz`p|K$Atc8aKima{sVm@=<)2A+?(n0007~NklpP4-ZT-fih(%V2DjOTU&(3jQD=X-R6H z`H1zEC!A-4kBRomqY`GMpH`>cNEmx*R>!Ezy;&TXyaE3g{pvj%HMy2S%ebryM5)ZH zko60%Wt*6<5BuXiX!>Qg`*Al~u6Z;L_gU@CVC<&T(ioNaC&t*XAjQ)A9`FBNgXh+X zE@)J?nyRmUQ&GD)(ifk612m%t!Dx=G#I*(RvC@%_?ILHRI z{#(=fK4_1|y_u8_ZiQU9-Uh|3+}(%(>Pijf=hjAhn%Do9)G9z3^bYFzrvv*CFOgSV z5J*>`(mgdH^9Yln78}V$9xEeSc1?#jlG`@S{oX%t&NW=uYP#NZp&Tk z0o#T8N4d~Gs{jZ3Cp#W2Y`N6RPto;v)NjFBbte-z_STy!uv9Dnp@8PZk}>~TfNiO3 zXFziV)KL%&D64cz$*AjC1jbRm2Bd*2kmbug7jcFL><9!Gy;$4ca1Yv<-BSTx*+go% zb05-8)MM6ic^-a1fggTaQE;^1>VoP+SQmIgI67V99%vSyZ5|b!b3Hqhf$Xx(Y-;vadIy+TWqCr3R(iwU z>j5y)FX!QJLCAbEF1if&h#q?k03@P=L;55-V(7`ry2Ixl6kdQ!RKU69cr^c#cL6H6 z!y0=^+}0kOAYZq@E$AODq|N4bK)z<+5~Xur*fWA5{*gEjbqFB}E33{dIs-{Fa4h}V zO5?7CFn38(6+{Cv%aNlm#HNNFOyA)hVgPb{=$tM>+`MOQ%g#2vhNvM||T%9Sp z4BAj0>f8qy9oGT~(fN7(D{@s2wdB|#3|fbw+U4@q7us9rj8C92adL_2nJeAXf^Ap_ z)1nh`sfK6$zYQ)C=XI(}Y6WaI#e=(+yNx(%}Pc zesi3Hn^N?J_FH~!^c|2q2sb=K&rJ*a4h%iNtwf!dMS>^!RfJ(KthwkY>k^^fYA4&Z zH>B&q*(T*^>*Hd#aj@==O$(6l^x~RGqLBdxcx@55za~lPl7-Yc4)U`OCW6)pg;=uM- z{x$5*Yu^XEw?K~#FD9_wT3rt|5IFqRX%W_&u(D<$bC-=+xRH5Ppq-2@Tj4tP6k#bJIgG&=2R= z&8IGGCbU)NAs6byoY~8T%Zqz*Z`ZN-M8GTBlGU?zdTygx*v!yy1>o_Vau$!Qx&J)6 lPDr2txBO>l)ZTP<{sYRH>>9gB%x3@q002ovPDHLkV1fWIgirtg literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_boar.png b/parts_pl/body/pl_boar.png new file mode 100644 index 0000000000000000000000000000000000000000..900a460375a2590ff5e3a9fa2f8c43398e7dcf5d GIT binary patch literal 1058 zcmV+-1l{|IP)ZjxH6XJ`MdNHY7qc(;AkGul?jAkk-0Q=Dg=BHHK5u;n+9)x zqtU5@Aqez-s}*m~3Mi?dd1%|TS+Ge9LXH)J{9Kc80!j$BcMd%e!S3W{l^qbfl)!}a zsi8{2VpyDM*t6O6%?gBTL)&g-GFX1(9NCsFLl=AD<{O|J*>tXsA{v(`i*JzVcQA|R zarOgB4p`BoO%ECHdGDWxu1|?*Y7(;(%s@G3MSiAP$F_DIi-Ymq82gh`Gl#IoY!TsM zIVhou^mtSC^2yrktjF$9IxFvjGKFT49+Z44Sd#_^>jF#}a03R!m#Na6wTwRK#$5Df zPdXPtEq)rn7-JP|em!UaIBXzw2OD^bnUuxA)Ty>`VUCa7g(j?jVgBi8I5Go^C;!bv z>Zti|QH+RYZPKR=`)g~(7PP+ykLzHqK03WsUH} zf*5PHh?E#KJBxK5^}EBngb)Gp04q?{Y?9!u;X{b763~%sUv^1Hi#ZvvbMJbf)oWn} z8E~UBP@L&&R~$fqCzPN?Ks#&yq;MnXVC8c`vC8{mFF>jw*(hj}(p_{0>NsM)LUGrF zC!&-GK?YknS(a7m&EW>n#}+`9^wKF{0ZF@jqRl41>JpPEDHr(y1O)1VeS3SgK(DN{ z&N(U(Q!UGYiQ`Pun6MvXQL8T1s%ti_UCSF&^PB=WHg3P>Tf*%!sb;V$5tYstU}ufWyS?#j3H-M)E87;q>=LJB~MAo0;Ikv4R0#I357$kKR9itXI;St6kyesT{ zA}C+G=igqlz+ur*2TW9PfF8SGx3A(Gr9%N+4fd)V98zg6E&U?s)>WpyA_37G6xl|j z!}tO7u<&+j9KQW3pXWe5MxB{59Q*0MLEJ>7h<0oE2rO-Y#m3VOj{Nb&;EH4CuHx)1 z?K*i>t+Lk|Tzf9ae4Dv<_Me752h*?1QAqfVQq`)yjbjgqC(WPFaO7Wbn%Bs8NN&$k c34L4Ue>HrTJpQo^4*&oF07*qoM6N<$f-0x*d;kCd literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_brawler.png b/parts_pl/body/pl_brawler.png new file mode 100644 index 0000000000000000000000000000000000000000..5ce233f0defc79a021d306ba8903865efa3236d4 GIT binary patch literal 762 zcmVHNzr?0Irc#$DO>xWL=Fu_4@|_B| zG%mc#-}>(XDu^o7gR!6(hyx>I!f!ynZZa?~oFC?qY3O-!5|-3i@C87a>)yEI{G|4C z=j^r<$ZO-r=Ii~Yev28z1Zt|uSmc8V=ca?xkl!I2nXJ9qC-ciMZe@6r)JbKhtH)}l z(_FdbSWU6!ipt$ei~zSl&a})m(HLoj@=(plZAYRdyw%{j@xtRwooF#N-2~7VFMSQi zh6OlmXkxOxvn+{_xlgf{{9rKO`d9rr2Gl_9IQh)1wau>YLD@VMIjRuA>|C1=xQD3I zU0IR&x%e8ypu;+TlAfIUhABr$?=Fdrt06Jec3z~C~3pjOZ z_WH{8WSS`vZ{?Q=5-{>RB0JYoXO6CR!QO;o+O9Y=<5rdpfKFZ+<@!ub8)^A(_=vR; zCBjI%OL>O8(OZC+&_dJQtpNPFb~|8Q5eK=j%G6Qh!f8n&iFCmMI~Ai(w2)q)ybcmL zE@2J5ePejglsfh5b*5{xfYN8vgkDCshYC$!3o619rIs0?uL5lKYI4wS z9vVR5GZ0wuD3A(f#tZ)x_VC0r*-XfDq@f&~&QYQ6`O*Q;P97?BT=2cCX5Xh;I3k(v sa?x9fwyUr8rrM{dDX)|zzKtgT0fWw54Mnju`2YX_07*qoM6N<$g2wE0GXMYp literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_bunny.png b/parts_pl/body/pl_bunny.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa9bacae8025fe91e2bac80f8d316b14e22f02b GIT binary patch literal 810 zcmV+_1J(SAP)j;5yS_Rf1nluxBD;0(;o zGw=et+*xq>WZOmgEkGuv|1`kz1$o>6T+!_b8Zic#5)Et==+Z}#Fu}?%*>k8M^Sq_? z5om;y2O%UR!u*L;-N0I5|n*o&3*Y?TOuWpL* znsXLs%Gi(j&KywRKwW2Ua&0a0X#@h{Ds(7kaZTV{phidsT9fGJ8R8DA9~d*SfEJz5 zws2FZfvq|kU|tcl#miG|$JUt6wH%UFr?uAX2{lg-HO}RI-V7>yGL_wMY%;FyES{&< z_La^ySag7lV&M-d!U_|EOTi5cug6U?<2-n<$1wSx5(8!e95B?Iz;?vGW_3S9Id$}f zuhBxiNXc$AJRf*@986mB@~I_Ot$#hlIgg$JActWHpX++OEo-i{eF_}#iQrJcChPxA oU5{I>?b`ZQKnXsVxOYYW06VU@GSrCn^Z)<=07*qoM6N<$g46GKhyVZp literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_chick.png b/parts_pl/body/pl_chick.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec8bf6da1b60280c81f120e78aa3ff9701cfbd1 GIT binary patch literal 631 zcmV--0*L*IP)>o8Vk07L_Em(Px z&T=PUI4|vE=0!pcdppb>0O{x9e}};!hZ2P~838azJHOFHaW&Hi#^csO zH*B~)EFN~Jj{GudY+(G>&eF?|e6jIWh_Df-@w;A#qcc-;+>{^wH1K8eA7aN7Z~_xQ z2?6~qgnl2uQ=sWQA@ooC1c3INbK#S~Dnz*WN@oBY$gQt=Tk<|^`zPob`3q(e7g+gc RaQXlM002ovPDHLkV1fpv8tni8 literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_crab.png b/parts_pl/body/pl_crab.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ecb1a979a99d60d06c8b362bd8e6dc7d0ac562 GIT binary patch literal 756 zcmVx0008JNkld)VJ@+SuTLJ`o&en>J-*<`D3K!{O%izo@`{)|8E#)Aq8a3x#|35qzSn4ikmu_m(WQ~DJce>UJ=|Y({(|ou9<3%>z$__iico+a zDL^uE9&d3L2-Y3MY?343Q|1up(-*A#hddC>bEO*4^y<-ar7`x>zPjBJD919sR%P{* zFo1T+=xSil7^DW$SQsgtyp3`c$m0BgCD#BAJUnjq!Y}OuZvdU(N}gwl+U`W3l4EEL zQWdF{JKwAY_DM&2Ct3dDb8rH30*Ex_E1S!PdHG=uEt>;ny`1RL1Gcl8pwZeokd4^L zi-1#|mqhzL>ttQ6-!yx3Ri%;{p4_kw^%A@TQmyHu%s`_>lWEIt0i+j?D^o|riZ;AT z8}q6QJUF+DLRX*5U{P&{`TCUW&0J2%uW2I7B2G%n8yKUusW-#YMJM&NJbUl(+4Y{B z3bZXmk47kmf*+r7`uT@4HBUD=^Nyb#6_qeMU@l&{aSVnVk(@S$)r&gqT3@M@slgD& zR(15=lI?6(w5so|x(O5ZwoGqTND9#1>lc#Mt}W<4d^dX me(fL3`K4F)qOyGcPF6(i?FVMosBlkW-X8ox>*28Qcae?c~&3tZqqL)%KqNIZzIg{x=Hp3lvdiW-rRkD{$**zA~-5 zfD_-@R4^1bZ~{Q#3#BAtjb!DO9mBdKny`D1B9jm?oy*PdkW z1eh*`oEq2yAmeufIEuknlR%b0GGk$gy_gSTw+DF7a()ri#szLV5%_?SkrYv?l z!6F`6CjzEvgodnxsAHxp_M;XS(VREHcHq98B2O;vIss7{t$|#<{{oP}!evJ?nQ&WX zre|wI;3>h&!XA|)SSHJtowwVvpIRWP82p=R`amD1Q+ke$1gkT}ZK@1}TMLCpL;ZqQ z6J+=7P+^(r0h%GJa!~PayI6qS@CCUo6iFzu=~M+i#1XxVt4Z3RR-cky=N0%-Cs96ZRj~n2Ga;A23Vk8RB$_<vFIitk&K>*#B z|0gIP%<<~4h(R6%yN>#l@W%PWA$c8xMZ9BMS;L%+g4p96Cf_ARMi5o%RO!Q^b)a;`(@wRJ`$)*2W z2whGxm4auqIg@xVwq{XtYCEtVIP*N0>K0QUL+zod#sJd|puqS=xmwFy9YJ{=?2*VT zKaWQZkm3@8krX(Az~31h-7NGNfV~@cHv)~Cm|htkcbJ=g@EdE1>UVp>x7@_1HHp@Z l(>og0w^6HFVAXB){|8A?10E3;gH!+j002ovPDHLkV1nUoiU|M! literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_dino.png b/parts_pl/body/pl_dino.png new file mode 100644 index 0000000000000000000000000000000000000000..f85cb33865387ffd8bee765e9a28201765f0c1ce GIT binary patch literal 793 zcmV+!1LpjRP)(bPsT7N2KbC|-X7bJPXJ&dMe!Dx#~?U? zNc)x*J?H<)2*=ims*CxIsb=Zp#$_lR6LzzH^g%|riUXqb){Y4<*DMm}H61FPfgk|5 zI-UNd3x4XOJy7mCn%;5H?;{}F)&X-0goz0VbHMF@A*vcH&p9xoK8HY<83KeoFd2k^ zkEfXT!f4wW9tZ1HHPg3XKwSAJFVV9nqQ{XEo34XRQ&j!cC=Tv4y(@e5K(qWI&W9vl z7tZ7ev1Rt}bv z555P4_Iyzz6T6JyFl%tqL6FQiWK94lhxMSsC*;?}h0h!a(NxNL#+G)j zV#Y~V0#m%ForgPHqW3C&kE}GF#Y~#FdxSJw&zSHw6)hf!SQIU$B4Ae7$ZaQOKy0HY zOkn1bc#Kq75dT#ex0$;F0&_0Fp7wYJ28R+qvEG<_Rwz+2f?$fK}|^iR{O|u4SN?%P2E)PyP~RcI0bRJl=d^XS7uwmp<|@XIU?x=$O4I% zZ7mC`2Tg@v3Tf@jmjO2wR6oBc(lFoWaKBxp#FP|PkE`I*&l3Q=84)OmWvmhgTFN3` zu2RqKDD65_jah($0K(BH<EGj?X+LCeqt*{Vj7HIov!ls>R_*GQJD0b;semI+V~%?TSTs<<_q=}7J0xlyx4lcOHmyQ>VqZD2kA6I&3sRp=Y4zw X!qzL+n2{!R00000NkvXXu0mjf>ltl( literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_drake.png b/parts_pl/body/pl_drake.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a0089bf4751260f14b1b7f44ab56e53405921f GIT binary patch literal 740 zcmVtko$2DzKUgI<;m8+;t}rhaUMf z&@2YHz`ILp5?t7XGH7pr!y6%~E5YGzO3m2exeG4Pr|~Ws_aZpZykcH(E(U?Q1nWQ? z4&z~ffX=2taz%R4D4j!!Purn1;vzi|>w6xBALFs@9E!o$x$Y804e2=NED7czrA9;! z4sc00c|-o~)hU~HI0k3{PNxJxKm_QZJy!+pZE)A(VE%}tCrG*iaEBCMD?BSy-UoPe zoTB34xCd>Pd1MWiRNMh!fjbNntB66K>u%vKsdMCBGFAD>JhH0>drcr80x*K?xylR_ zld=A`w)Fb@s{bIn4eSpq WC6S{@m`v(xb? z_n2z%)WEe@HSrWmU7!R@$duYJCIxk#Q zhU-N&F(Or`gaAPyhB`5cGmsH`3#H?5LS9IwS14@>(_>wIiIG(2@sx)9utufMxd-OzUXg^@dsoMv2@TgLoHSk~vn4FxO|4cwJnW{!)G1;U#hDiK5va+F zR!NjKp&d_A`dOW$QF)GS;k~biUn^w1grf0mEDkp;g^%pzuNjYnb-jiOAIP)YvS1}` zS_V3ksXG6Fx+N&p?e6;?!%Oj*ixe)5e-923Mj7spdFmLvi^fN;j6ObcUEoV*+}MJ7 zrvx}ABTu4+$1B4ZYcHu#lgKBDt)yxeh$|V9^M=VvX_l86Tx_sPXlL|=CrMdJ-|lQr zOzGTsO$P5t;czp$3u=ZfLi{B@W_Joww_tKRrW`9-Sm{$_7}UJL%QAwy|ByJ`D5ozs z$ZC7X{ZI=b+ pg!qqn)_aW96a+-+d}#tz;2+Zk%g0}(Ak_c>002ovPDHLkV1jhdMUnsj literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_eel.png b/parts_pl/body/pl_eel.png new file mode 100644 index 0000000000000000000000000000000000000000..47910731aa4157ca79268d35cced52afca70f82c GIT binary patch literal 602 zcmV-g0;TA%~T_8$*qc z*(p(f*)v20nuGar!dZHD26)fhsUGoyK)mxJiF@3&@}R+KGcg~+7*F0C3T7J=R)!^j&YnS$#$E73YeTk5^!quh@9SVWik&kl@w!GrKbr$QeimD2~f=ld3OtaLcT=xz4U?ja*9+d%u%tT%u|t z#&?_k1fCjr5Bv%i6Ydb0MU82m_q<;b6lce>aG|NWMFCt96iY2&a(7whgIt|z9^ey# zoAx8oROHf)u-BklE&8ZslJZ_qwO}^EbM1L7+2h^FB+!zW@)(ycAdRMTDnqlUxf;nLhK5Sz$q`jMR{ o;$9z1m|p))U-np-@!{|8Uvs@W;yvg5k^lez07*qoM6N<$g6

YybcN literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_fawn.png b/parts_pl/body/pl_fawn.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a76b5562866e6151b12b3eb816c147863eb9d7 GIT binary patch literal 583 zcmV-N0=WH&P)pEJFEtMi4O2pEsvoM_|vi z!Gm$todb>*28uqS6P_+i;9H?pIT1P&*tghiA{vUk(?G&*0m7WE>>0+>T5%7n2Zm0y z12odGHdF@6v&=p1Zixm#+lAq;ofhIWOSQI%Lrz-Y*wR+S-4lhb0UT0w99vj=xj-bg zHn*1X38m_r3!TbohHr!O;HB)B*gsAPd4a5Ihg#(~b-`Y=Co{D>XT(MqtdmJfMZoHS zAf#0FzIueZ8~M-@XW2a}I)q4`5;(KOjly!Sbsi znO@**`0Qx)HtE_p0BYaHXHAIoI}w@VkX;+f^EfZkN2iDzoo^detI%rnRSpB@kWOja zy$vdY`a``p>t5a+fP#~KnZLL>a^d5{VimBN$cMQ5P}AGeCV5}UN%7?gz-4MZMLnlb zzXs=)HQW%!!7Bi7iO)t|O6i2=J5CeiB`ZtI6bbpRvx){|10r8t+0AUqT6FUc=6Dc6qw{!_KtC`_X!F{Q(XB V@!#+?$`Akm002ovPDHLkV1jOs6NLZ( literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_fox.png b/parts_pl/body/pl_fox.png new file mode 100644 index 0000000000000000000000000000000000000000..e6471c2842c4c51f4a87520ef4356f36271eead2 GIT binary patch literal 869 zcmV-r1DgDaP)pd&pm4xB=)2sH=C^6xb(#!v&BB zWkiA1+D-Ub;BW!70Yx%7|4z)Icnhdw1FAR%LdFjFKdkE>gR0aQ0TTbBFY9BeIsICQ znX8weE?C-{^0;QJ{38GYJA3BPV9oml}o_R%XO3RK1b&LcWYimMQvsQ%rY;A$H3Il)#)%e7o znyP8j!_Dq>2h_F(>;+ubpci%2Mu?M-UB{6|=YVOs;%O{)ew3gX4#HrGPOfF+cc62a z(G-CZD9>tID1s_?{neE&*3^fKV@_H2tejW5;@G65p-3G!0t^UiKD2;WK>IT3K_F*e z0(V(J@f+=1eyd;gq;{vM?7kYzPw9;+1S^O2irN$Th+ooM_Cg1SPk+5xe9lZ6wlKTq z>E}FkxVy~y(;Kn7R-OFF8>Y%Ep?A1z3o}F6LrSD-)@AJ4QyEsB77#=rB9N+v_#iWD zN~0Nagp5(PHb`cmAPvdpU_>ExDGM#$(9en=Ht>tdZ@cwYm5@D3Ul}OR^T_+MdYmn|NwQ7 zIrb7TRGV9HnP!VKy0d1l9zNdka-=xZd;5-hKQ`+>ycaRRimA2M92Z4%+_kB0dyz5r zE6tHy7S3^q*_?8y2&ed6!AsRjU-y```E?`)OvU4zKe;cjUgyf>0l2XMENkl-Rfam|k8 zbodRR_&C!*oE>MYD>zJ$#EUSpYSi|gjUEmh1$O~i*BIL3&}86X1wfg9Z-E3^GuAh6 zEfI85Arc=%3Z64iqp{cpsCRAvj8~8mXeJpjJC6)Nk_hz2Lx8#zR^S!Q4CtNs<BfrNIORZDc1@q(5IJv!?P=1||O3kK^ASXur zVrgL;^Wji&VYydY+0sWVmFxaq=n*d8R|_?M+a8dBtRBn^m{((8@lG`Z35b?luJ}0c zG1DsHDGX}`vh%S5^81WF_RD--xdiMCa2f;>uh%kfv?s}2?EBfQT<5Z6S9PTKNwq&|?z2-uYVq00000006SNkl%=!;{0&5~zf zX{Qe1f}bNg1LO)+Zx=`z!Ha;zC-S>{V7hc3uO%xkO+vK}E^ojKt?|+8D1;@HI*!a7 zE4A+ePjjCr6COkri&Idz0SbwHd8vV!oV8VuHK!!&X)C|{H!vV!VM@R?#B>T~F6!b| zWo~~_5*C~Su8gQmW*4`9BTRO-Utsurc;YQe0f)#=9^ziY)&CTXSLndz3mQhmR?O8_QcRzBLye}qYkb1^)T2~`985d3GcD6p`+{nw?* huX6CV_3N26{sH8Ju;^`Q1f&1}002ovPDHLkV1gPR6eIuu literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_hawk.png b/parts_pl/body/pl_hawk.png new file mode 100644 index 0000000000000000000000000000000000000000..c0babcacf44c71973900791bb28398e2a8663bd2 GIT binary patch literal 915 zcmV;E18n?>P)j{+GvlT?KXw zOsR4(^bVgRLI9$aFnxqE{RN77%afP*(o(NzkOzZ}bEx_Q*o=C9VyP=FX}>G>^fe1k z2BH$2r(Muz9xdK6_Gt~qA+Z3n?G13VsgdkRg)&T+|K&eEtkOPx^3yF5@GOD}7 z+RsUYexK4HV5mnx(HgIAMu3D6DDra>KKKkp&B%)CK>>%xd}`R~C0g}Mdh({ODBm_X zcklSX8vy5*4eyON?Wl_g=E{ur*q>H`hS?zDjD7*Z?<9^r5O0tout=D04(~f^XFKSmSU{V}cjY)@?V6UZpA2W(t2ztu+v9_2`|T9u)d1R zkeOX!^b{lMGy205H*>c=#7%`5NbI_iIG~{6sUY4=!Vw*xaak-P*a426I({(JCyo#K zljkaV+_);M8p{?6cQF7LG=eALidIc|Qb-`gj^=>VJgf}T$)Y*stuc+Ku-d!!UF7oXz}R;s`K>?FAp3ur*sI8HlL2K z?0z!e$Xyv1vjU=*Fv&zOG(Lf#!Ai&O{C)W{aST{ zc#sHo*a3GADkHy~ofyh8Snr9>g?cO84F6`%<92w})f^LtMfwI4pVQ(J#YU?YXxgIb zdT3G0_6b{Q#rCSVz6dr0v}Ncl7lX)?$rI8BokUrlr;a_9;0Hp=qG_9o2fqLuCDfD_ipSm^I2OJKRmX=boK+qwOdX=aMInKz+_ zw&#H2>(QRspRS-D+QmxDZvSZT+%=voSWW z>Y&$ATSUj))iHbNy)cyOApu)4w$)bQoY%4M#bPe;*6j+CYXojkhcP99hZm%@Ff|oP zh{c+ofgPf!FM>{;TOtIYPh`}s9cFVdG(EqwUa|j7k11GM?+bli0n4hSymEGM;5Gg& zE#hHnI+(S+N&4@Y5*S+weK%xWD$}c7>14irdx--0^nx&Sj-qd2GVOIvhx=9V)0t$z zgK6DX9+=;?;RWHSR_(X)IlfJ37G|qX)~XdN+g%C^4=+q6os%bIEUpLVBbiF28&uQ;G9*b^J}*cI=G zS0FB5ghGxM#!;fz8bRaLTq#&KK8&S$Od%bKz{HxLa9$Bm!pj`yABnne5-hn)+;P2^ zRw%oHvEZ}sjMLl21`y8FLYX3xWotmO8CztHW3J1M@#)1GeX*E&! z+^|7}g~7m?$yv-XO98>@zjv0xh!bmR%VaBbYe42r3jb-v4H;prEjNV@%pvqcihfCj z7iC9es#PNG*Qu+-*@VG(`4inWgGgj*upvPCy}6BKaD&-&6M9xyv5vF~VYzrKWZbn$ zW;X|;mq{Q$g#DGQ;^Bdl;*ViU->B^)JTHhJ9tgCR)IfxGJC{m~ncFIvg!d!?$h@I5 zbwgy~U3&8(EXJ*O6kjyf`IZkc)GBgBN7(KT!aWj65>oVSA=q0T7>15aeo7Hr>`7bGC?qxq>2!^u3_Jg4OVFw zRbqG2dx@IE0Nn&=t!tudiXAJ(7V=s`M+QWz=Tz1iW~I9v6L{CO?z3#OYh(F&8s$Bz z&Dx@l=R^a#c%NHD4?t*W4hsd*I;V%Xk%cg%8Hfd-t(dxqd4xPya&ZIa9!aXJx?osF zX<=#Dov|#VmH+?%07*qoM6N<$f|t}Nw*UYD literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_mochi.png b/parts_pl/body/pl_mochi.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a2779e9f137ce3bce37766d93cf96437ad8f77 GIT binary patch literal 804 zcmV+<1Ka$GP)?(n0008(Nkls8B$91Em|1QNTU#gx~FldP=9*ZtB&VO96j;T@GfWmT~Y#qj>ImTm4@&b zeak%QCn&k~8O}E2OS~Q4)1mRZo9|udqz}bYx{(gY&*9}he#Kjjx{s5)3Z#tu#26%U zmhRc%dHS6uPUsP$OyPyy(CyGYWe?Gvnm+#cI<4%64M+hM%rl^8LI!glVW!z;1$J8m zlEl%DRj7M%`!Ue-r00+k8j~o@ys3res(HnEm8Uoi5myICX#cHQ;E^Hset!R1z*1wlkCFvNWI4n5LWKzHztlruV8E zH^s+A1J`io(a5VRRUPNDIyJ70Vm*#MKj#mp?X@)#P<`6z@S6ppN1ai8x_MxYr@D4n zE%P*u9!YjNbd~2{JCjRAZeBiR(6p#yY7-IuLbbb|i-)d*%K~R0y4QeG&~|hT9CT8t z;a^;uH!j$T^g-ltmPC0@6R%cU+s61iovGq=l*zg8@dy+HmJ0+a5;k8FO8>q%{bP`D z1}Xs#6TU2@!el3@hXuz(cJ-QFKb}gSOg*K5cq%36Gj@6<qVz&q8WzPLR^$a>A3%P@vbt3aST^$DO&rhvPF-r-F;`~*I zQg5HB>6!g$dYXwG2I~KuwWbQ)^#k;tgmvrAdVKI#&K5_jej(dm5Bdb83?c6gn>yAE iHNf)fd0)qF#rO}h=Ce+?=48_V0000&VM**@^5|v z0+qo${d5DHo__KgR!>0dq<$(WI)K8*K$n#9npZY3mje^O2@#U2yQl&!pY_fO97@CL zbe1wzs}P0X97G;6*LhV4`YqL=>f(q7q!~dmDi-uAKT zy{!N;NE_jReJQ{kPe^0bEawdXFT>kK?@&5MFIm9M6l(x^5CEEDL^|N7F6gHeDga9s zuz{Zbo_b^!t8)WLp>+37bF-DhEx=lzOz6C$d7P}hbf?J;K^_hAZ8qTUcDVger@F3N zuVwpbrI~WSDXA~fsQqyVz#WGgTp=6SdatSF7gh2ub9*}n zSFVX+;d^&@x6Y68WWWF{WIjl^XLXqWc88^S?lj6y7Os6!Ww7BSFPSN)y}cc1`QOQ> z$#hG*?m|jhG7BATTw6Z`ZC;V_Dxa7Bodza#7+O%Xb#kxq=JBR?Fx=oq%flGL#qUE4 zI@7uQ-M`JiqEo^yT&m>WN1Xy(OoZ+vxpGoGu&mu>KY{%L`$6>Wi!p|I00000NkvXX Hu0mjf>i-&8 literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_owl.png b/parts_pl/body/pl_owl.png new file mode 100644 index 0000000000000000000000000000000000000000..598adcc114274731361a7584a233ce3fda2d7330 GIT binary patch literal 748 zcmVa_UuuK=^vkxF+%q#SBS57znkxjZ7Tq%epjYeHn>&E1P_q``6Wqe7QOS z+jLO6AIeE)FqR<_& zov{cEp^I+O*&y*Y*5s50V=WBGY>!h7xqxS(Rmlv(-Y1EVPE8GD?1^}B-S?WoPH4IE zEs0Aa+(P=4H&C@qxXgGZ@W|#7zb?DL#K~s}dJ=BL)cPb1WXWCj>X{AwCCxzsY(*$P zfdKiD$wm3hYc|ewP~l;srx=X&Jv(yIMm*ZiT-vtW>3P;RP(~N8m)VX$+sI%}Zl?X} z*diiu07?fG8uGlOio~?-42yk^RA)oKfIM}$__p-n*y{G{>KMyFs_9Nm4Vl=T9coZI zj#(I_ZJ9kI`DNzV^36RWp0s)+=MM?}rv5Hjo|2eFOu(Z(1``yLgyWaXWtl?11XQ zbe)v?OFn;20TB_Mgz|m4w8vM$PDSV?8~sXv(Mr8V-bA~-At2v9ZAe0f^R{Nw`{+Tb zguOiCVx z(aJfjQF#&OPd0jXl79#l$zwN{ets&ODU>aSotEVZphgm*q7Mr~J*8!iMWs-|#m*my zf@mF313AFreNuySl5t|aE5Xx(r#zdX$G<&4`kQp zYBCwXJ}9;`;LGcj#zV4cZ^D%`|7LLRSX_(GNiQ&n5h|Z%d;Nx$zjoTJN@`0BLO#Lr`p;an3C;J(&(we+j`-Y%M4UN`j@ zIqsbvl;M_S#~!Qfj0@^?SF)pYy3f19Eb7y#G(dDuV;kLKeaEV79PABBoVSiE{a1Yd Y1IaN^L8uUa6aWAK07*qoM6N<$f)6HY2mk;8 literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_seal.png b/parts_pl/body/pl_seal.png new file mode 100644 index 0000000000000000000000000000000000000000..3db662b9a25e134f2a08a4cf5211ec78d2c4f080 GIT binary patch literal 629 zcmV-*0*d{KP)uYy1VmB@YeJnqSR89>5K142elMaPXbTLs zK(ru+$hS?f-j8SsL`hWocoXVl73Ld{=3vJ=5IqItuA1c&V`{VQPl;zzqTE6J)SFlZ zbJ5MQR8-pY%v&hI5cNmNFbpCK=)&&+ar^-E7X=EswEz^_g;;vIt;Z2Kb`i{qjRh=p zH7l_$281dVEL$k;E}rPfNhKa^0d~(B9~uhNq}N@;U_4<~1-yWkNx@jerULG7`64n@ z9nx?whLjaZ0eE>SwbjSQ8_cSe1n3Gs0TQTSVC1`jmEh*f!u%}cN7=b0o$y1Htcy;b zu_ErxI&z++OE?x>=EsofB%LS+D~p!bpJytD(!ARAK|u%KM+H^`U$DegQ>?z zpVL-?=>iScqoY{q%meT&kd+C*l#>=+cOOWkqZh5pl|z@xk19DnA?38Go9jG24C>A5 zFM2~>AZgK=h^Bx>+r5aXp(|IJb~)Qd`cRN^*+Q@C9bSR#9+KF&k6fFKAj*dWgcEt+mMUKDG%cBQulBN0G>E^yieoBC(gfE0K`0j zXGMP1h-Fa-TCBET3Qd%Al9m`&`7j2Q#a57zf}tw1Z*#eJ+Q0l=$S3}7USC#>u8>zR7{;Z zF>8$Skq=#)z+=-SM+ie>-pz$k1-$jG?|?W0nC{4bqkGc!Zg^%r#nAW$aqiWSr%5-u zCA2k``svkbGPY^ihSY0N9uE6nyyJEmjb3No8TkOQ>%-{3Q6s>U`Ex7^19l+FZNBuw cBj^m^4>V+Sf5v5ZNdN!<07*qoM6N<$g1glgrT_o{ literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_snake.png b/parts_pl/body/pl_snake.png new file mode 100644 index 0000000000000000000000000000000000000000..53fa9d6470339a630f91a88373da8d5745eb8a18 GIT binary patch literal 890 zcmV-=1BLvFP)yGRo2-Z#C`uwQA_GUMnfM5~OwzJaAjI|a%xjQ+%BbdzRw3)tM00RC_smO$RJ_o)X z7zu;INSFYT;arSp3&3MC-x(7q8CM>cl4?rnm9N8~SOxYqy)IIearI z{X!{iTuL9Sz@T4QOV3c*cr`2U14aNeFf&dHPzSBnb#NCj*k(%fol{IH(U(S_!T_nK zUx(i`{DY6>SyW0Yh^Q9yvP&*SD9;HnV4sxxx2eM}Zpri|WlkA&Be1WTpw+#e7f?c? zNdxLNd5sabHM?p|X+cf$*`G{#fg2>20Z_64)Ih)tdz%A`qBYMlf6n#=C8bONO_r}{ z^ye$`slv_FOOZ+IxezV^oqVgf6>r-dfznn`H8(%$!E};@VLrHYqFp4{p2UAg&v~4T zH82nO23T1ETR)%nV;7A|1#Ka1x=)FDx!&y#m=_J~q1c~AP96seM2uH4a<4JNydXzt z&7#m*=R#d25vMmDuhrTcW5hL-JKBE<(orfkkRr{3qK?;e#5yXU01F)wxSL25ZFNwC z8d|q2Da8U4QUJpQOMrA)qFv?~l%_7c+GJ?X1ZGW_A@jWaSk*~-!7#CeJ4N#%h%TI2 z46mwErQJcBSCjB+=ML6Li@2-6^@gx&LE{llKt4T(gy2*}92S&pQ%6k~d=8vlGzy^J z!5W@|#d$>a?@wFnRR{YiT{U*(O@{;3nIMsmk;;PIqX}nC;*z@B{Cqjv5ip8OO@~C3 zJ>2#vL(Fv0@FuAGz#_7h3CYn1p5|qlSBDtAwqugP5c=|e$|Q$Xj!L&77C!K#m&`nG zT9ApNhdieL9P#KqRXVz{bD-Hxp3qk4K(zS+H<2VeqzhMV%;%hCeoh^9Z_7{s&Xpn- zpcFE6u)S-I$bvg1tpvM9?0Lcrf;cm=lEYI{U#T@CNevdrgZ`|y*Zh08@sEo*(Syd< z_5O=W5Oo&r<^e%4ipgaA4#Xqf`o}Wd_5SV}|M|Jq`wq0+DnZKk>>kVe4@6ZVD}SqR Qy8r+H07*qoM6N<$f&odJj{pDw literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_sprite.png b/parts_pl/body/pl_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..1e630a50d4fb51ffc2997b96d185e3aa12aabc09 GIT binary patch literal 525 zcmV+o0`mQdP);}XM+(rSC=e2oo5MwW3Ee0}4Ctszd<=!i$|!K%AwtUzh_0${oQMLfO z@(E54oGPiz&){Qvq<>uqi@ba%6ED87Dk9T;5HCyZsJ1{z0%9h2BR?V+`X%l(O^8*%{nbD_^?-gBg$`^zm%~C&CrvA&H4q|+P|2#`SdMrzJ42=%Vu(*1sDDT1*}Di|5^M- P00000NkvXXu0mjf{p#|Q literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_wisp.png b/parts_pl/body/pl_wisp.png new file mode 100644 index 0000000000000000000000000000000000000000..785fe7de488cc7ceb4a2e1b0636ed2041bb13689 GIT binary patch literal 724 zcmV;_0xSKAP)6U^ ziLl9QFejj4rZs^v71w+V?y`Ov`t z;1!TrsNwQz7S@XgP}ioFi*^@+uhg;bl#*PmP|e<#04(%(tQbcNfZlMu3xd!U6_^gl zJ3K&}V7O#Z1XD>_u4yFcA5lkOwO@l6;z|GvTLEkUW6yB(Aj1+)aO{G_5yf<5x>Vw= z$*Z&E-ur;m$Y0FnRmCK(8>}uCn(;!px)=0npP%$j1-i{hX47qvjfNH=aOcs0S(T9; z%x?{X6tE*uC}ICltCF4mJJ?BSz=}j>^jzIzbnW>D#{Kt-Kkm|GAW+>Zt*sD}TF%Jn z*K>t(q%h*naU1Mh&Avl2>%R#d6=7RvOz>R z(>CEvzYP-s(?GbMfIBsYT%@ZpR{hEFqM?ojFMV#}6e<$!7K0_ML%`BgICUIpe@kTQ zZb1vWwNmG5p7a9oyg<{&q&GLj*CVJZpH;Zr7B<#H4{sXY8<|7{- za!q=QS5r!XFboJL9?A*1+1(-U7P12nai{zY*HgX7xBdgwQx%*loz(9D0000YDZV}hee~C!^|de75qd5CxOl+FZ#lvt&fc4`oXMT{^3YJ zIbDWE-$!8K3CL8K(cmMnl~S%WyD&c3G1TkZVTv$Iu&rY52g8_LY7*u(5ccVD`4s50xbdJqv{it{!<_kARsCI`)@D0a#5D>m$yP;Exe=d1 z(bhL9$T%Kv0eAve_t~%Jn_fDk!h0*Ec6`;{r#&;l?ZZ^iQ=HKi*1DIF2X&jx3N34^ z;5fdvn`YIY3KR00000NkvXXu0mjf8>MTf literal 0 HcmV?d00001 diff --git a/parts_pl/body/pl_wyrm.png b/parts_pl/body/pl_wyrm.png new file mode 100644 index 0000000000000000000000000000000000000000..e98f27d85ab661e26e1df78229232fa3e417540e GIT binary patch literal 783 zcmV+q1MvKbP)>njWW<*y4)O|{R(Ig(gBUY0lo$- z0st!<7RMv}n$(>$NRq4`16ZRSK5dWWj|56uHF=2OJi%#veeqZ`2Q%@xpkh~)1Ui(0 zKw&=5CVUe-MX~hWhtZ)LStDGV1}H&Np-aVntJ!r3z3+^y>fxg?`_C^=PHrv8O z&Exg+9$h)thy3rNlS!a+b@_{lu=b^R>ql@*E@1A0nTQF3VnRlF1t2-Z4Jr$4=|RgBMOQ&*!jf4HPP+94mvJn1UjS43cszVKU}A@5Qe&!M|Cu^P9gJxkT$|^z zydIw>UlF%`iOXo((y(~S>l$02mTWD@T?bQ25iv7XKmFVc_|V1e4AxbZ@O+o#pJ%l< z9L&vdgssegUMTGqru1e`rYt4*|_@>Y1y-Jwz-j{=SN8uKCNTa zIZ@{nlm{8j^MTcT0KLP~XXI#0%Pn`T@{mq1ri41QH`>q4j47NXGNPo_7c%FpchBK4 zfv3<#BC~C?-q!~yzvi$OT`6)^cj0D1`z^W)b@nJ(7bQE}YT2%M1ZpwA4(-Xl`T5x0 z-LFtu$DcsqHvn?*^jy$$x+qk@Ep2=Xb=e7#u%6=7N2i+2x^@zc?%`d}?vMdOaVCau z!KQx#BnRlpD(H!1nO4imaCC%!*{P#^>B+N$osNUcTIeJFup)sVs4_tD&}n~$kbeZB9YfGJebrJDuJ{ym2mhH( zepJQ57yKqKqlMP(X4Gx`jvnmSH-KUf5cBozDQdG}7E%EMagR3nlkg#d?0C)~cb?-u zJElNR#f2(poKyvOo`AY#p$4@oXuig&RGm$5DR?KY5AC|0-`@mZF0*7&UP9p800000 LNkvXXu0mjfoh(&j literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_antennae_spark.png b/parts_pl/head_top/pl_antennae_spark.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4a428205c9f8bd50efa8f3336a3938fdcdcb90 GIT binary patch literal 359 zcmV-t0hs=YP)+w&l#BI_3e9xR1@u z9nJNGbLIln1x@JkfD^H8GTmn?K*Z@~6#C9ZS~{mz`}5cgpksk!hKae*51adwKwBm9 z1gdGP!PJ8*MX7uyX8%<(&tYqEq=YDDTYvu+UA}%tw=u;Fz&VbQ0%UJHULUhOqm*-b zT6RE+03lw2Da=svuYk*rj3VCLa2ndkyhsu#-n|mw3g%e*q(67Mbp-uVqumFJW}fvJ z_ff7x1GpL<_p(JJzKkqbf=3{-ah}yR0^6=Z@p<+;;|&Sb(fIr+vs3^8002ovPDHLk FV1h8HoR$Cp literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_antlers_leafy.png b/parts_pl/head_top/pl_antlers_leafy.png new file mode 100644 index 0000000000000000000000000000000000000000..1bad842d1c83af7598b8a1cee3a84ed55a82f33f GIT binary patch literal 255 zcmVL*)B0v?l{0oR0DmT#uXRk0Fh8zF1d;?hPJ9EiQH77an2ND zf1Ola4c!qj{}X@+^gGUTzrgU4ATkMrB4#~oiq|XYdXvSPw~rb`X8S79?t8GQ@CjEF#G%Q eV2__Bvg|94XE|*D8gvlo3I@ zCcqE?IQ8AdG}MSyyiM8Elw_??*?-N34dD!i>x%%UkuR*U4Bf9fX6wW40JQ@F4OA4r xRuABv%v4?BSsvBT#1IA}-hxicuNZfiQZ6eGa^m-AaU}o%002ovPDHLkV1n%dXomm* literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_coral_crown.png b/parts_pl/head_top/pl_coral_crown.png new file mode 100644 index 0000000000000000000000000000000000000000..b6adeabb0913dd398568ac168fa266c4e92cb090 GIT binary patch literal 247 zcmV&Sv40K z@rZ*mN3KFVeZnrn@f5f!y#yOiMoBt1<4GqD+>*41GR8N}@72KJ1i2>Ph z;QlTxpLv^+@yZFhKc;_dzYy-Era}^Nkl9Yb@zxbOV?SA{cECUU^`Yn%RUP1GDW+Hh4Of17$uuSoUR zz~;D7x9z1w&r0$f1oM2c7{w0dX?l4?^Q~)#wvjN9EkztHiyn6S>laUFI-v{20SDkjH&iw6}_sNxU>lfZd&j>fOGcf^N{(|2Uz$Lkp zeiOnqd(#RO0k}LswVLq^bKfzpDp1P$Z!3;1gk=*c3o|W1XsU!7UIBFGDH(d(AZwzn zg7w_0#Y4eClMq!Nlq}xCvi>~K6ngTi1e7Uu0aZ8!=P+Z`q1s}-6{!x3xLY zUR7q<$yM-(1UNF*mGt5gW;fwq0CT(H(Py6h>AA%_YF_9Q8=cVX1}i{^qz{43iSqgcNQjm(?o{$3-qsCKeq69t8Xn640000WHO;5F9ZG1Xavxuyc0NducY92_!$@OBYK-z7h6J{~W-M0HteR96G> zI0T^m7q-g*6KGLKYS8I=*sn|j_4De0#xJG!!Wr&t`gx`8_Nql7U}8~o$WW6$cjy9& z_YJ}^fBFI35Vq!4z)}~PtIHWn2_0*hNsuB=Y7r)~$w1(W3md6@rh@K^TvMEVj)%D@ zIemK{on=8g7Y*ReH?wOg*IM~80|Yrs_lK#XA~N_%PE^JgAGuRCEtAROum1h0!<_GoS%<4U90K!rXU3bOu~9)}x-` z^5T~a7pF?V6~n;)m=piOlE~oVR0)`Y$Z8=PAjJRw4T#9Vh!kXJF)%VPBAbF?B32vF a6A}PbkUp7Ii1JYY0000Eg`m`&Sl9acad3 zcCu8!(YNfe2IqBYkF2<13#3ZBgr1-7qvwy$Zx58V0BkYA0s^#d07y%Qc>X5!x{dr@ zPs>(1Axe&Qz&VZ+MTfUPo+o8$!pCWUr}E&JyBmw0=2}OCYL#H^ZS#n!ZSjj@cH3IJ zrFpH`2CkB!e#Zb}LYK?GMc#Ur2lH+XwHfTl`JD5XEC|p@9o=H`io|f{_coK)rW|zB zO%$?p6oB2zLqrv&PQk$!!4eK}X{q<}Cz5d`FaZ8JS6%`O@tS@Bn(iA?goWDX00000 LNkvXXu0mjf;KRYU literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_crystals_head.png b/parts_pl/head_top/pl_crystals_head.png new file mode 100644 index 0000000000000000000000000000000000000000..776043a3ab168392dedaee43231b29e7fe62127f GIT binary patch literal 240 zcmV{2t?9<7hlc>rFg;8q@>2GFbo3#?~HY&hVQ@(kG}%4d_>R|0HvUq6Rh?}bf-)& zpOrx0kGKRBW$|}P1%SYFB=oLsnVfoiYe*?WkhK>xZd%?5J(FFf2fcqUATPwMb z2LILV1cDYb`=ejZ892Z9Ro%qcTVIas&v^vbaD=G&wh1cJ97^Y8m!OR04mK{1!30nt qml9XDn}2{4^I-<&o@hvc`Kt@Q-Fg6Dg~wq2PsqzOal(BHCyb;L2yVxmE5X= zX?CWoEOO~sWwUZ|CAg&{xozaKJ&O_-eqfX=+saW#A|y@_MfXKD zb`cJ(P*Si|@j?nUpm{`-z-{Ysm&UOFRgX}`Z7UxE4ni@uT`)&Z;H00000NkvXX Hu0mjf(WigX literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_ears_flame.png b/parts_pl/head_top/pl_ears_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..89379af8648a59c9c380bab72d3a998b8c44505e GIT binary patch literal 322 zcmV-I0lof-P)CYTZ2uF)=e;~*>@({GN3S4lZTM7h#por&j^2 z_1o*iFBDg8Rf^$6 zzEbcFMEOIR``NDo-HC8b!19tNSwS%*{S&RjBG4C?Cks38L8@eFAx-7R_S`0?1%jDe zZ+gm#g4}|IP5kyA{0%`e1Vr;g;D`Ay-vTdW35aW7~V9R^e6NJ%?)2we(`QSxnx} vb;)YK&GzkH-)^3Il)O_j?w@P%tz*m^5@lGNQ!exaZDH_q^>bP0l+XkK6Xi6k literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_flower_bud.png b/parts_pl/head_top/pl_flower_bud.png new file mode 100644 index 0000000000000000000000000000000000000000..66833d7ec6e807070393c14edc7af9c167932c3e GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eM!3HFEez+qDq^5ehIEGZr=?!M&Yf#`YxxRmQ zTpjOaR*fgQeuu0DmIUeC2=7>RQh{x5J(Jm{bHW{~$`@!PDlF)L_2-=6mz^_JU94 zFDB-PUY_}}^~J`omsTaKo_TO;&OPS`>c)RRi+IlxddygoX2X1^@s6veP%{0004HNklvD~ zj|Nj11zK0GN_#gdY)Wak6rM8dEBC$)1h&yDM26c6;moB48DcAKST%-&xbK6+1e0Ph72~SN}LoQViYUk!Ubj zuU1q|k}iN{U}mwW+}1e*rOZ9QIY*6~_@TzP{Iy1{VjWDV z&iM+W{#A}!Bals3pEXXaY22j9o5XN(EaaS|J&l_a4f((tbO5K_7&4n+;x8fX(Vw^h XIVO`#YWiM^00000NkvXXu0mjf6aQKp literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_guppy_pearl_crown.png b/parts_pl/head_top/pl_guppy_pearl_crown.png new file mode 100644 index 0000000000000000000000000000000000000000..82edd60466bdf7e041263b992decf38c36be3ab3 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^f2%v<&(AsKpTrHdUOtGNb4+ki_Tz5ue5(yS!ZKfru6f^OR?eF+=j8kE6Q}w0hgJya oPQLT}a#Coo)9;9hh5Y-3ulpD>UJQRI4s;HKr>mdKI;Vst0G9zv#{d8T literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_hawk_headband.png b/parts_pl/head_top/pl_hawk_headband.png new file mode 100644 index 0000000000000000000000000000000000000000..0132088f31a979f4e0b9d101869d8cf504d84533 GIT binary patch literal 272 zcmV+r0q_2aP)6g>LhBH%{5P^O9Cr@mq3 zmA_}8gN`C}7EIw=ASHuk)kDky#I*@|{YfAy;igdy{%Grrnt`tW4xRJ3W*D7hv!+Kz{a1T+}-T!`xQDhEwywLw|0&AV z=lLTP&e%(n6|nlaEBqN<>(btxD)5;RG{;WhsB`RswT7C4S*XKbHlTVvaiT0aT;o8n z*5xtSqA=9W1+IfFjGk}JCkd@*mh8OT`d3F`bF?vZTlBPnUV;XgGCT(+BuBKx4t+v0 z&a?`=`6M&ycHr(#p^U>^2Q}{on>7XZ6YNfLbPoIlFmlq9^Dk^=mpdrF0oXsI;U-$C Q>Hq)$07*qoM6N<$f)zcgyZ`_I literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_hood_cobra.png b/parts_pl/head_top/pl_hood_cobra.png new file mode 100644 index 0000000000000000000000000000000000000000..24664248fcdeb22efc4a072ac47646ce84c00ff7 GIT binary patch literal 402 zcmV;D0d4+?P)j_vU=^E+S~bmLFw$$&v*b{k*o;k!y>UHM+3JRBI!Hku6|>bI=hWE`ZPt zV{PDYkN}VYN>#6Qzng+9C&xB}6gZP^~w3(~ZP^)GRPW z2Sl_DMsY+~Z36UwkXD3{5VZh}z`YHgN|@vX z-6%#&&GS+-{G%|3^$G-vx_HeAh)Mc51e`s}ACWbsXLm%YW3c%wVixxqC%g@yE=<(+ wI8P7t%5>KLcerUOV literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_horn_beetle.png b/parts_pl/head_top/pl_horn_beetle.png new file mode 100644 index 0000000000000000000000000000000000000000..05bb5dd8a372082785c989a12a7c8bad4b442058 GIT binary patch literal 231 zcmV`s4ONlZ}d*DW}eoM<;&%0LkiB1jT&EJ33+qAmWr3|(7f7^JC2V2I_J=uj@&LQ2BKiE(L>n!t=P~Ik{j~`NFOg`jOOqb! zCz7M{YwRZnhS28FeA-`XIfueaqwh~#Q)xb~NWA4<(^&B;(%xR>8VLO=4R;kTkFQ{x{TqUt&f}vBFuntp@jN(yFe)|mdKI;Vst0K|4unE(I) literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_horn_single.png b/parts_pl/head_top/pl_horn_single.png new file mode 100644 index 0000000000000000000000000000000000000000..e973c489322cdedd8da658c6df7175399d49dc5a GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMp8<5nmf9C+CGCW-zLn`J>op6!wfB}o^$H!as zuP0=CT-`SNnzO8XP=n0Q_hMZFpC2t@z8$b_Z?mF!$ih!w8BXn+w$&p$MXo-)c$1jh z+AP`l-kVtqq8EMajFNSm|H59H;cQ2l)2A6<4TM^6E)4D4bYcEqMfu)KX2~mob~1Rn L`njxgN@xNAdSX8j literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_horns_antler_dragon.png b/parts_pl/head_top/pl_horns_antler_dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8cf55ea88653a942dcb3da4fc213488e1b801e GIT binary patch literal 197 zcmV;$06PDPP)NS}}1V~L} zhoWId{nPHb^Ag9^GyraE)X~H?+dajc(^&L<&mJQp-k75GnGpu3YP|XUp~*sn&;CdJ zrtz0%jLN$RO^U8|^qOlD^8mfbC)=e zU459w;j;g*{j`7>%SCS8!7{n-&)3XSyYsg)Z^m;m21cJdAOFP09M##jdc|p%|3Be(K!Xc{N9sD;*1vxDdm>0vXq(eF~#rwq`w=XfC&<^jj5(hO{X%%isRx?t=#)(Ni}8;S2kgAY;g4SAW{W#FCF>U02Gd2ZzM%#I z8Z@PtuHXg;|DgDMiOxPMgk6U(kpy(PFPdZVXCjWmL>0oxutF!T4Eu)wBRZ5nxk0?1 f-M&qu_BG-Q*zIsn$r@rg00000NkvXXu0mjft*v)W literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_horns_ram.png b/parts_pl/head_top/pl_horns_ram.png new file mode 100644 index 0000000000000000000000000000000000000000..06514c5fcc03cfc6c090e6d93ea578d396c0a513 GIT binary patch literal 335 zcmV-V0kHmwP)@D2kHwg1oJMBWc#Z$P7PxbAIMwOU#+E>BtiOu8Nf`BpBqX<}#gp+(o3b@tToQvyY z`~0m~d-0Amw{v;{Lal`-TD7abjl))BIPiIDUy<_EMzYslZD|DMmT#~%W)cwavLwn# z$~Parcl39U`PmQhXMyLBN71k1?5J7mKLEDZYV|mpmCcy=7fCWBheLwF2>9uT1Y9FJ hOuPM&@C2rZ^8perB~kevxKjWC002ovPDHLkV1fzSm?;1N literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_imp_halo.png b/parts_pl/head_top/pl_imp_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..3d1022f6224134b4cb67c486923bd02dc016c731 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNsZdWB$B>FSPXlgqIVf_>et!Dz z=hoN*evucmn;V;Mr!)y3kur*|Sa|+$I#;N$sh7u9u>*RY40{iAeQgtaHTOlw1lKEf rA6`HBu5lyt%smxvK5#`y@lRyP(lB|Pwb+3VXaR$#tDnm{r-UW|+^aOy literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_mushroom_cap.png b/parts_pl/head_top/pl_mushroom_cap.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4e015f19c9a2335a87366c8c7420e3a379e776 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{hlt4Ar*6u208K_P~ecRyYs6^ zywFJC%$F@v{9#^#OSIi$KbQz>iahpQSpN9lWuZ|01)s#&=3e%^q;ikxK%?5Ow!VwA zRxNnglk|3C?0%~*zOLC4U9%Zyr<}fg?sjZx@~j}opB@Xegf^~vF!wKKmCehN+0G&x zrZsh&ExRESH<>S1_MiWTA9;HhzHOesZ+L|FuuW{-Hok?rK<yy85}Sb4q9e0RP!f A?*IS* literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_owl_halo.png b/parts_pl/head_top/pl_owl_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..7714acaa98310c541e7234d05dcae4d45fcc14d4 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^54OU978JRyq%KEeL#Vu<$S!| z@2BR+?wz^0>EOPv4HKuT$4*da`_Z>WNO_gxU7CUBxS)`smy5|u8=Ut%Oqw5I;*D}Jl75Z(mGq{;}<^0Jf{yXX!Gs6-% WY@!$a+^Pz+ox#)9&t;ucLK6TF14UB+ literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_plume_feather.png b/parts_pl/head_top/pl_plume_feather.png new file mode 100644 index 0000000000000000000000000000000000000000..43115e6fa5d3de924482270cb960fabe6ae8af3c GIT binary patch literal 267 zcmV+m0rdWfP)&Z)~4%v5z9=K=kMIuRf*So`Czm$hBtYa+7>_W9v;c)u%cxE<@if8|Cof zvkh{p=6u*Rr>^xx(=GpiSLa6f7HQ!yfx&r-rn~isub1toHI_wAGjtENZCxGSX`wD{ R*^K}I002ovPDHLkV1hiWaj*aY literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_snowcap.png b/parts_pl/head_top/pl_snowcap.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9b67b6569c953d00359d268a631d48b32df489 GIT binary patch literal 330 zcmV-Q0k!^#P)ja<&e_anF5Cd<|(cOvZ=q`DV9r@8#L}h?`+z<1AQ_#MXkU?bUHj#(l&^60^tW z>r@BP%l!pY@Q`x>#3A^EZO)w;+aPntpzb%+vCNP**+^}Z(fo~A4tc7MB!Cklg+7Xi zI&u{%(md5U%O%=+F~GTyznrVEBkp~`(QrykA)TIf+r{Fmw$}~yFE0fEahpAQ=YjLe>#*?QF!ATyVE%vS?xc3ZgX21?`~Q8Jh=GAN=f@v kA-n1GUNGg(bpOX_cFXbOr@7M4fo@^&boFyt=akR{0R3P{J^%m! literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_topknot.png b/parts_pl/head_top/pl_topknot.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0873eb2e7aac500a3a77b384abdcf31cc92671 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3HE7boT!OQt6&9jv*CudILGR4k++=r~Z%o z_NgaNEIV+U!^Wg46{$3i>8bg K=d#Wzp$PyW_dA6E literal 0 HcmV?d00001 diff --git a/parts_pl/head_top/pl_tuft_fluffy.png b/parts_pl/head_top/pl_tuft_fluffy.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c5985c0fb812cef8727b1319c507ea909f0fd3 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp@K+MO%1|+}KPrC%9GCW-zLn`L1o%E2eL4l)X;m-$O zo?I`ANSOG2@$EUnKOdBI)Nt>cw2f88K-z$RZ=;AwcbmYjzxO!f<~9W|{u9o~Ddqeq z*1dp9tD0xS?{!mEO|9Rz^}aj8JnP;RVMfun>3cuDUs=KP#EbpILCxO!Syyac{F0002INkl6Aa0}0$bcmQgh*J5^*Ma*5hs8|>VQ$Ny00000NkvXXu0mjfs3K+} literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_chick_tail_icicle.png b/parts_pl/tail/pl_chick_tail_icicle.png new file mode 100644 index 0000000000000000000000000000000000000000..7d965249a6faec1c392e6c2a4f1ec4c5bcc3f7dd GIT binary patch literal 387 zcmV-}0et?6P)Nklb>!3`Hd)L%nqD;H_hQhg={-mku`43*<;Sfng6>GV}tyLo#;r(9w%C7*Ie)R2i0x z(|$mRU$}p$sY;p#_E;}!4D!Pi!e)1L+qV~dDBZm-pV2jmE=fAX z6We|?+X6&~kT$!coify{E^>6JT?B_|7nE^#0OP^Z2~Uy3noCVRcX$QkDbq%R@$}f` zc+FuF6duwB7=SdGP*7{wRAoA8-5oH<>OCmOmc2Q3kz;oN04E$ma9Tr)SXznJ@v?s0 zX>cLDcV?Pb2h~OH$YBz9c&{39G3w__q>jC5IC3+ez#mxrO#{|6py^}d&t`-hXfFTb h;Jbka>=)RIIRh}E%Uc|@|J?up002ovPDHLkV1iCfq-6jA literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_cub_tail_rockclub.png b/parts_pl/tail/pl_cub_tail_rockclub.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7337875275753f79dac84b5faf2dc037819175 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^d_XMD!3HF)C)PCqsWqN1jv*CurcUDKJEFkh((e0S zcix<1VIPA7%7i*yYz`HbOnp{YMz7p!9!;lAU*P#kol$fV)V$=Gkp zSf26i@!Ra7;I!bH%F3lHq(bUgOw!GETOG*sC|@D5>w4qS$`+F!2J;MZF1=j0ddu&= zSoSJb!GJ%@1xo(7E0unTUNk4Juk6#3Z1yJyBu_T)SXZ48xv)ccT9EI7;@L9cZx#3r dZr2A%>|&g#WiKnSE)C>v22WQ%mvv4FO#n02T9*I- literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_bluefire.png b/parts_pl/tail/pl_tail_bluefire.png new file mode 100644 index 0000000000000000000000000000000000000000..4515b394f4c8677db7794a7255d9373704115c71 GIT binary patch literal 484 zcmVMoO_wNcZu|^i9S}sw- z5*y>%CWX#d^!-XEr74xDZH`dy-){ckY@XM&9X=W=kP3{-7der z7a{cGTue3O73wJD`)-(1XMlnC<7(B>)8N|Pp?_4UD$>-kX{l=)`GRAJgcl__THcX6 zfBo3fg1Lth7SFjNVd|Tff|VjrbEv&N0<;&HisGH6k`feCkQzf@<)Lq!@Aj>BW4?1y zIFzfDinV7$7`=y(rP7!?3C*>QlMC&6q}Y=hF!LFMWDgP$ovu1WgLzASZ5%jgFUvUc zDdH)Su#&~UEu!fodO!2^l#?rBC!ln2RexWO-E@okDkEY?R~hoE&=J;H7XseN$PzN{ ztq{%XjNu|Y*(j)+jza#lS)MoZFh7kUyVPQs*#*X~yF&jSQi~iQKv|dy+ycsNk_lfk ap6~|`0@x?n(~rjh0000NKr_g)B$ml)2Q*C?br%{4eV_O zvXI+>K}-`N_z`6A!M;Ja(Xyb@h_Ohu;Lia`1?9*&qD5c{Y!YaF7N?E+pXr8rCLUDcqjTL9EG1g>)00000NkvXX Hu0mjf4F`a( literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_bluefire_wisp.png b/parts_pl/tail/pl_tail_bluefire_wisp.png new file mode 100644 index 0000000000000000000000000000000000000000..340817e3eb6fc30e945989e27e243c554bec0365 GIT binary patch literal 253 zcmV1=bS0jr$GOk-SNhO|S#q#Ir*+~HEK{gO- ziDIG!VJ(@9(4Y#ex>7O{r$4tT%ZePVCfwqfh{iYNQ%rJv7VoS#<7u^F?|9yh7&`v< zr_n@)&l|%11&4y{O~&*!c^X(j2m)3-153#Azro))+MQ*Yx>5Ogj%zn*5?2Uax@m4A zZd@4Wr3N;@>|D4xv`cMg$gF&>h%v28LZ9=^wg?qK8y97=&ny@U%}QZT*2}gI zj!L$Im9&_Eorr!>>lJv>?%ZPz4&3#xD;SXwi3V`ACE#K@=c(b?SIqxXlyE4H5&(!} zUM|x2Y^SM17b9mNaBf!xx`4f_E}Xo}8eFZ&$(a23q@W4D6+Z!|)BOmzxuK#ZmCUIb z9|U(lM#$p~xH-Us-Bu2R^C0~_dN3BD72H?qYzn&Y#ePoqvqgItTR4~MJ)6+Xp6kK=o@3ua*7}D=F`_S)zMH`}b?yY7pOzJ2Y@AF1 zvIz?}tDWi3)?z(UyFGqeTi(YlmfNk8FSAP*XdaT?vF_rWXLdbY%TC=m7Qf;0tjv*CudM7pVH7IbnT>N@J zHolJcXh7ig+}xG8P61u=FWqpTImLmJvb2nYRGT}D+$qO&9=tlD@hOdghzBVnlU1ifo?aRw1 r^y}OFVJt0YPdK3x;a}OpcYu4hSbBWgG1E;z7cqFc`njxgN@xNAX39$6 literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_dragon_fin.png b/parts_pl/tail/pl_tail_dragon_fin.png new file mode 100644 index 0000000000000000000000000000000000000000..92a2088a4459662df04fc69df07546ca1f859fdc GIT binary patch literal 416 zcmV;R0bl-!P)<0004JNkl0n1lhoLE-?t2+UyNdnU#Y`@bq07=rmBNmvm{ z3JSxQ!4?+|!Jfe`rliF8Bh3_rRB99?k54ipl5DGMKW36hy7ER9iO%(Nvj&7_Cg%kM zWY(%A8^7TZm~TdJU%E22N@IblTJj8^~(7uVxALsA+_bnk9Cwk^drMn_#f#*rNiS zX5Rw!j-P@UdUK~E9l3pVTmt9?Xic4v{o+h5iPjVCa1=zd6tSafT1W0cRZSFb)Z#|m z#8^=*Q1_Y0aso@AuKpj|aUG&jL=}k-ijM0ts%oxWc~#{%SwX~0qN&*@WpJ%F@Q0fq z66EaUxJ6R4mY^*)&4$#p&ymv>(Eysx`lP0co?G{mlAGyG@%;hfy~|*AfVC_D0000< KMNUMnLSTZcUAwXX literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_feather_fan.png b/parts_pl/tail/pl_tail_feather_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..4f85e2960984932a797a025e9b140664be461a94 GIT binary patch literal 357 zcmV-r0h<1aP)nqR5S3_P6M-1)u=m-+kn#0LXd zTmYc#m6o2gD-!Ri7!3HEZNY`WoseVrv$B>FSwL#r{Ee0ITPyhX{ ziobXIm@FVdQ&MBb@0N#pD AwEzGB literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_flame.png b/parts_pl/tail/pl_tail_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..55bf79525719b19a55a420b064c2f15eef2fc7e7 GIT binary patch literal 455 zcmV;&0XY7NP)@ZYptr0SK_qEl?AOcHfWi?ech#N0 z=;CUy$q6^L@8geZnsJuQ@=_<~sw+$}hb3Q3=?>M-Y8ks`Su4V7dE&zBxln3>v3#5* zQSYxMM~S@3Nd%I{*FQi3WG^Qrq@^jtnzDz!6uw90O{2-J;P?ik@^IUWTgsU$_OABO zulDJ^(XeuDdkEDM(xP*E6!~L?% z!DUfrPaRxP0WwcBs|06-%}G|cYeY~4=!f6I07K;o&(&b;LXWO$YO=SX1mPBb)YO3? xpyZ?mg1B?o4T{o$Na6vxwi$BHI9I0s(qHF-ndxy|A720f002ovPDHLkV1k&a&$j>o literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_fluffy.png b/parts_pl/tail/pl_tail_fluffy.png new file mode 100644 index 0000000000000000000000000000000000000000..d4deb75ba8dc8edf57db435f1804a87f8a771016 GIT binary patch literal 312 zcmV-80muG{P)S zHg^bAz6=uCC9pvml4{P2TDP*!#SK9Mv}bPz1_$fM*eDo)hoVkG%#`(lLEgEl9YrH* zKb_w^5f5HWviG6M6O>f$5)k~}quwWK>L~c2(4p&`jLzDE?_F`R&&>0j|uik?a!gxXyx|QH=_=5F*aN{Hcl`uTaq{a zd-ie%|EjWMVM;KRl^_}z%0T9{aV>iS&tovZ%5mv2g`Gg1;5S2hQoMPu5lHvk=@ z&{fY@DsMc0Sd(hx5%mCg_U7sw8tE=$#WAPb#{-<6-;<8(;7$s;+icq|;QRavAInB` zSV z&Vq`ZnJdWqwQDZbj6vEk4VjA{RrWtp45P_C*i=vtnD{nXe^V2sbD%8>6#xJL07*qo IM6N<$f}%jZ5dZ)H literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_ice_shard.png b/parts_pl/tail/pl_tail_ice_shard.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1dca39ab699adb0e0f404cf7ec50ec09247b7c GIT binary patch literal 259 zcmV+e0sQ`nP)c{F0002WNklzJzG^3 z{4ey6YOBfKahkuSk^!&JcLYu|f_;68h5&a>4gRE5uBrt4G=Gxpn(n2zfkqR|!LF%c zuT{Jf2e`U*YPu3gW-F`|)*6h1^XZrcTn@Xy>!hy6zC|!DT*!F4KYoBNO-NFsZL|b4 zDSoM>#@M%64Yt0Lq@qDej|>Qy|2PGOl)<=zE-pmZkm>?t)NaBJx_Lr{$OEG$ zu z_3o1bdXp`Hlo5;;vPK{X!y1bAhG5Bu)bUPUG?qr7tWn#LA;3;0!b}CrChY0J2KNa? zhk@l!p!#s8)NR+my4p7Vb=SH!xSB>7AddNV&1W_E3`gIidp9nP>_2Rb2 nZK^dCYse4>vO5t(5fqQ900031Nkl{vx#FHIZjU8~J5f7HYNr{OiaQzLqY+#?W8xH;n;gyeX*%=n5 zco4e5F$itthfa4=38NPpb}H94MU~hn2jm$P0+YiO8`-k?K#?tXaxiZQ&NZ?gwy$%{ zQ(-+MRSr(HBCTFW=UrJ)4kzq^LZGp60E!wp0*MM8iqmqhdPgMz+A7-!^o`h{ipE8& zf`@B1$hb~j)Y3t@hWkB7mSlBM<}b%HmLw)zA?ckIQZ z#|ZVwTl;JWz@MZ<=bH^@4}X2#+!ck0+tJctw(yiRxFg#EaZ%O!w)1v_}ui&Fj@KndYg)K2Av`?2*5=wavO}sS~c%-DrthB-50ySW9 zCCY?-}PMk^$i9P}cp*2}WP>E+AO604h1*Kc*WS?o|;pONW zd4^>n_cpZr>GDt?9B}uaLmb~ZIQ&?bpRN+)iiK5$S=l~TNAg8Snc77)ORlJ*3w7I? z5NqKV=%{YT<-SH0-HVw_n8-xVNunt85_%3+NZD&Nl{sXlAY{T4*+SqP2#U-EwhHh_ u1d%DkB(x4o*{4fxRA$XsZ;Uxt6@CHp8YtNk*WR@N0000j1Dm3X>1hE&Yyo!H2CK!C@k|IPlZ z)9(jG&3t)7Rit*Ug@ewm8B>@zL|&eh3uXyU$z+?@wng*3!_>K#we1dm=e_rHx>QWS z_6g5L{eHbF(g=v%cY&$wctGH?zUGZLEM(t(WSMz?ro#NVh$P12jMv|Pt$p$GW(I@# Yt6h3+P9D|DK>HayUHx3vIVCg!0D^HukpKVy literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_rattle.png b/parts_pl/tail/pl_tail_rattle.png new file mode 100644 index 0000000000000000000000000000000000000000..301202436d9e47afc52fa2132eca6de34c1dfaa2 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^96&6stH=KS|_!awTsk{J9@`Qj>`ep6KX4%<5))d3Gr zUaTrHotc;xbElXPw(5+c6jDVpji{y2cHsrKNjs^7czzAmHPC4wd<1?KNRxJM{Td5`!Wr^T6y8J}k@ZHrL+8EzJXKwjb0;u_RJ}fFWv<>rxJ06BjI%;{ z$t&E?;M0?yMnZ*ntzCOG&KJnupH2JJI*c@Yk!E{sA{d;x_yHSfvNpN%gk1mt002ov JPDHLkV1l26g!2FZ literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_spade.png b/parts_pl/tail/pl_tail_spade.png new file mode 100644 index 0000000000000000000000000000000000000000..dbaee65512c6eb96113aabf5b1c3bfe0b90ee643 GIT binary patch literal 232 zcmVP)pahZ{Owqu=6`>Ph;l`*7>J&Vv0F%ip z3oFUZ<`#!DC{Qo+87@&9!J(UX7G9VMRPfl05vzB!PU)L0fhW!?eedMm4b42?Th z`j&CaN^mIn@K3~m{#O}^?YYa*brPP0o>Nf)%eIW6`{+uZ1#}(WHv_W6IDyKvSXvof iw7aY;F#+`D?&k|}zfOzjJ%Y^u0000eN2iE95|yy%J(Rw9|!w z6?BX-lRn#k$>9mI(y_&rD0SiVnPi(XsZ;C*QJmc7h`l&ms_q>Z5UFgR=DI(F+Gx*% z>AUF>FQQ7RE{zI5+{SkJ1xBe8oaCYI&cRU%}6M?D$Hb!5@Ph VT>Hn|+U@`V002ovPDHLkV1lu^V2uC( literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_stinger.png b/parts_pl/tail/pl_tail_stinger.png new file mode 100644 index 0000000000000000000000000000000000000000..5559b5ba7603720740a0469031ab30124d3ae40a GIT binary patch literal 344 zcmV-e0jK_nP)y z>kh&&2!+A;-kv@=W|SdaZ!G#xk}b{B&%>=nqI)Lx(BlpuqKq0R06GC?-L9|a3X-5e zr6k<~#0~J+P8-K4tqKEOSXWR^h+pX9nt=*|DnRAfZR>$GiV;$qbDmXq(P6C1<%$j@ zpstQ63*QEc?q*i)POnZt%Ob3HS&*Bw*R^E8+lh%L1Wl4aP}j6pZIcsYh5cZ{suHRy zlFDP3h0?IA($8Sp-vFPwmT&+r$(pqs`|0|1eIF^j^u4?Txw}3r)-R9Me}ke;V`YfV zuvdJIKhNf)REf()ZQqXi&K1$BU3+#qkrCQ!G*5<#@oLAhdoaa^Aln2`_u7%?qhU59 qvN0Sf6m|ly-uDk+6V56alN}uJ{fMt04`76gN`_gAcXa?= zlM2jm*<`8QD#dw~_oI&mo-1hZ6CqGJg{Qoj(RKkCZfVt{$A6+>~W++!rtxnE7N4F0YQD2iKMgD+7uxQ{Y*Y2F_9QWkB7p@gnGs)xp0f0x&BU9`uO)iUGT&%Wetb@nTU( zNd<_a@;US3Sa>8IG1sSnD2i3s@-y<1cD8YBy@LphDzH+fHjsptROI-iUpm}8W?Ld~ zVB=)*W)K?WM$A5Nzzj(busQYeS&BD=Q3wKs@|#H}xVpoR(Zsj-UodDq8Cu~H`UnCwk;v!}uGN%8@? W`=8Y1eokBf000035 literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_tuft.png b/parts_pl/tail/pl_tail_tuft.png new file mode 100644 index 0000000000000000000000000000000000000000..ed842c7ac969c486be838106445190852235cc25 GIT binary patch literal 315 zcmV-B0mS}^P)bka^O4$XJK!`(nlNcqjaGm6NeP;mj$dzP#bK1q|kj(ks z2~7lp6hwz>p~*)nfc0z^3n=1A3zhuSF3^JjuVZ_cl2*BzH3yQ1Kr2!%BQSXiv!2i& z?AMTF&%Ak85vfrzK@3B01UEtO0EG1kyb;0ZB(9~wPm9nM<)21@5fN#P@pKCF`s{T` z3h>eC9q|6YK>rXBugynL>R?n0WR2BxX{@|>Z~9|LKvbwTWLtLJDI~0R(k{ukkiG@D zvKW#n8;{&{<&=FQW{YC9ZkS8n_5ia10;2L3A`hXC>wG7=)50=NlRwrlpI!mm>DmAQ N002ovPDHLkV1f^(hA#jB literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_vine.png b/parts_pl/tail/pl_tail_vine.png new file mode 100644 index 0000000000000000000000000000000000000000..45184284a7a6e2a1111325c5e96bef1ab01befb8 GIT binary patch literal 314 zcmV-A0mc4_P)P000~a1^@s6lq3|;00032NklFdN8dH~D{$4qI^gMBMYKzt2i zb`JF5CKoYVgw^cYBK$lo5B)TLjZ~Qgq8ZzR#0S=535D_`Aev7O7O%BeiD#<|VUjda zn7b-~4NxyD4}i!~i#glw*Ut&aoWOOrNSbS}lsDEQu&4C4ODPOCC+b?(;?};pt*33J zk&0NeWNRxS(h#I%c2rgKc3}2Nln(Q#yABN*=EmKL7v# literal 0 HcmV?d00001 diff --git a/parts_pl/tail/pl_tail_wisp_ghostfire.png b/parts_pl/tail/pl_tail_wisp_ghostfire.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ee08699933ee55e325d6672e80946fa7c5523f GIT binary patch literal 447 zcmV;w0YLtVP){_ALoJDx|1XRtTcwVp->}Ub&gWJt-g=JL#i^nzrf2u3Y%Z9zw&CzP5V9zOa z-=EE35B^aowqfiNT?0 zthx0kjV+Fkx65P-WAXOKEnR<6_1EcF)kd7}>yICR%ax{cABTnO5KxSFM)Y{O(!;^! z{fbo=DNmh8j}?N~Myd{YKy-j7E=4O+ZAXg+=RJP5S6*osJ@&bA1`AUAxW|9gcj!bV zG(J_!DaFqZsyt0_z@U<>%w%2Sp*3fZ$5Qe$2YpCb0uOX1^@s6HR9gx0002;Nkl" if isinstance(v, dict) and v.get("type") == "base64" else v) for k, v in payload.items()} + + +class Client: + def __init__(self): + self.session = requests.Session() + self.session.headers["Authorization"] = f"Bearer {load_key()}" + + def call(self, method, path, payload=None): + for attempt in range(RETRIES): + try: + r = self.session.request(method, f"{API}/{path}", json=payload, timeout=300) + except requests.RequestException as e: + if attempt == RETRIES - 1: + raise ApiError(str(e)) + time.sleep(5 + attempt * 5) + continue + if r.status_code in (429, 529, 502, 503) and attempt < RETRIES - 1: + time.sleep(min(60, 6 * (attempt + 1)) + random.uniform(0, 4)) + continue + if not r.ok: + raise ApiError(f"{path}: {r.status_code} {r.text[:400]}") + return r.json() + + def balance(self): + return self.call("GET", "balance") + + def run(self, endpoint, payload, label): + """POST, wait for the job if there is one, return (image, usage). Logs the call to the ledger. + + The account allows one job at a time, so jobs from every process (parallel workers, other + terminals) queue on a file lock instead of failing with 429.""" + LOCK.parent.mkdir(parents=True, exist_ok=True) + with LOCK.open("a") as lock: + fcntl.flock(lock, fcntl.LOCK_EX) + try: + return self._run(endpoint, payload, label) + finally: + fcntl.flock(lock, fcntl.LOCK_UN) + + def _run(self, endpoint, payload, label): + resp = self.call("POST", endpoint, payload) + usage = resp.get("usage") + job = resp.get("background_job_id") + deadline = time.time() + JOB_TIMEOUT_SECONDS + while job: + if time.time() > deadline: + raise ApiError(f"job {job} still running after {JOB_TIMEOUT_SECONDS}s") + time.sleep(JOB_POLL_SECONDS) + status = self.call("GET", f"background-jobs/{job}") + if status["status"] == "failed": + raise ApiError(f"job {job} failed: {json.dumps(status.get('last_response'))[:400]}") + if status["status"] == "completed": + resp, usage, job = status.get("last_response") or {}, status.get("usage") or usage, None + img = find_image({k: v for k, v in resp.items() if k != "usage"}) + LEDGER.parent.mkdir(parents=True, exist_ok=True) + with LEDGER.open("a") as f: + f.write(json.dumps({"time": round(time.time()), "label": label, "endpoint": endpoint, + "usage": usage, "ok": img is not None}) + "\n") + if img is None: + raise ApiError(f"no image in response: {json.dumps(redact(resp))[:400]}") + return img, usage diff --git a/pixellab_library.py b/pixellab_library.py new file mode 100755 index 0000000..4dcbad6 --- /dev/null +++ b/pixellab_library.py @@ -0,0 +1,789 @@ +#!/usr/bin/env python3 +""" +Build the PixelLab part library (64x64 sprites, registry: sprite_parts_pl.py). + +Each base creature has a spec, pixellab_library/.json. The base is generated once with +PixelLab's pixen model; every part is an edit of that exact image ("add horns ...") made with +edit-image-pixen, and the part is the pixel difference between the edit and the base. All art +is drawn in a stand-in palette (teal body = main, crimson = accent, gold = type) that maps to +the palette keys, so the generator can recolor it with brand colors. + +Workflow + python pixellab_library.py generate pl_fox --base-only # base only (pixellab_src/pl_fox/base.png): review it first + python pixellab_library.py generate pl_fox # every missing edit + python pixellab_library.py extract pl_fox # grids parts_pl_src/, PNGs parts_pl/, diffs preview/pixellab/diff/ + python pixellab_library.py preview pl_fox # preview/pixellab/body_pl_fox.png + python pixellab_library.py generate pl_fox --parts pl_tail_flame --force # redo one edit (new seed!) + python pixellab_library.py preview --cross # every part on every body: preview/pixellab/cross_.png + python pixellab_library.py preview --random 60 # real random picks: preview/pixellab/random.png + python pixellab_library.py cost # spend so far (ledger) and live balance + python validate_parts.py --library pixellab # colors, markers, canvas fit + +Spec (pixellab_library/.json) + { + "name": "pl_fox", # unique, "pl_" prefix; also the body part name + "plan": "quadruped", # quadruped biped serpentine avian aquatic blob insectoid + "head": ["mammal_head"], # head-family tags; head_top parts gate on them via "requires" + "types": {"fire": 2}, "other": 1, # type boosts; every body is open to every type (other > 0) + "tags": [], "excludes": [], "deny": [], # as in sprite_parts.py (excludes: tags of parts it can't take) + "slots": ["head_top", "back", "tail"], # feature slots this body accepts (default all three) + "desc": "Chibi fox, 3/4 view", + "prompt": "chibi fox creature with ...", # body only; BASE_STYLE (colors, framing) is appended + "size": 48, # pixen canvas, multiple of 4; the creature is re-placed on 64x64 + "seed": 11, "direction": "south", "detail": "medium detail", + "anchors": {"tail": [40, 50]}, # optional, pixel coords on the 64x64 base + "parts": [{ + "slot": "tail", "name": "pl_tail_flame", + "edit": "add a long tail ending in a big orange and yellow flame, curling up on the right side", + "seed": 3, # change it to get a different edit + "types": {"fire": 6}, "other": 0, # picking weight per type / for other types + "plans": "all", # or a list of plans it may go on + "requires": [], "tags": ["tailed", "fiery"], "excludes": [], "motif": "fire", + "palette": "type", # main | accent | type: the ramp it mostly uses (for previews) + "fixed": "fire", # optional fixed-color ramp (generate_sprite.FIXED); needs types + other 0 + "fixed_from": ["accent", "type"], # ramps folded into the fixed ramp (default accent, type) + "z": null, # draw order override (back 10, tail 20, body 30, head_top 50) + "deny_bodies": [], # bodies it must never go on + "box": [x0, y0, x1, y1], "chars": "xyz", "min_area": 8, # optional diff filters + "skip": false # keep the spec entry but leave the part out of the library + }] + } + +Conventions every base and edit must follow so parts mix across bodies + - Front or 3/4 view facing the viewer (direction south / south-west), feet at the bottom. + - Tails come out on the image's RIGHT side. Wings and horns are symmetric pairs. + - Body in teal, details crimson; generic elemental features gold (type ramp, recolored per + type); fixed-color features in their natural colors (orange/yellow fire, pale ice, ...). + - The base creature fills its pixen canvas; at 64x64 it should leave room for features + (height <= ~46px, width <= ~48px). +""" +import argparse +import importlib +import json +import random +import sys +import zlib +from collections import deque +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path + +import numpy as np +from PIL import Image, ImageColor, ImageDraw + +import build_parts as bp +import generate_sprite as gs +import sprite_parts_pl as reg +from sprite_parts import TYPES + +SPEC_DIR = reg.SPEC_DIR +SRC_DIR = Path("pixellab_src") +GRID_DIR = Path("parts_pl_src") +PARTS_DIR = Path(reg.PARTS_DIR) +PREVIEW_DIR = Path("preview/pixellab") +CANVAS, GROUND_MARGIN = reg.CANVAS, reg.GROUND_MARGIN +SLOTS = reg.FEATURE_SLOTS + +# No franchise names here: "pokemon-style" made pixen copy existing designs (a Bulbasaur fox). +BASE_STYLE = (", original cute monster creature design, chibi proportions, teal body with darker teal shading, " + "small crimson details, big expressive eyes, full body, centered, retro handheld game sprite") +EDIT_SUFFIX = ", keep everything else exactly the same" + +# Stand-in palette: what PixelLab draws in, mapped to the legend characters of build_parts.py +STANDIN = { + "main": ("123", ("#9FE0D0", "#3E9C8F", "#1F5560")), # teal + "accent": ("abc", ("#F07A8A", "#C42E4A", "#7A1830")), # crimson + "type": ("xyz", ("#FFF0A0", "#F2C230", "#A87A10")), # gold +} +OUTLINE_RGB, WHITE_RGB = ImageColor.getrgb("#10131F"), (255, 255, 255) +OUTLINE_MAX_LIGHT = 0.17 # darker than every ramp's dark shade -> outline +# On a base, "gold" this pale or this washed-out is a cream/tan belly or highlight, not a gold +# detail (beaks, irises measure saturation >= 0.6): it becomes the main ramp, same shade. +BODY_PALE_GOLD_LIGHT = 0.7 +BODY_TAN_MAX_SAT = 0.45 +WHITE_MIN_LIGHT, WHITE_MAX_SAT = 0.9, 0.35 +GRAY_MAX_SAT = 0.12 # too gray to tell the hue -> nearest RGB +# Separating the feature from the body redrawn by the edit, on and right around the body: +NOISE_RGB = 48 # any edit pixel this close (raw RGB) to the base pixel is the body +SAME_RAMP_RGB = 120 # same ramp as the base pixel and closer than this: shading shift, body +JITTER_RAMPS = ("main", "outline", "white") # just outside the old silhouette: edge jitter, body +BODY_CHANGE_WARN = 0.12 +MARKER_CHAR = {"pivot": "P", "head_top": "^", "back": "B", "tail": "T", "aura": "A"} +PREVIEW_PALETTES = [("blue/amber", ["#1565C0", "#FFB300"]), ("green/red", ["#2E7D32", "#E53935"])] +BG = (226, 226, 220, 255) + + +class SpecError(Exception): + pass + + +# ---------------------------------------------------------------- specs + +def load_specs(names=()): + specs = reg.load_specs(SPEC_DIR) + seen = {} + for s in specs: + for key in ("name", "plan", "prompt"): + if key not in s: + raise SpecError(f"{s['_path']}: missing '{key}'") + if s["plan"] not in reg.PLANS: + raise SpecError(f"{s['_path']}: plan must be one of {reg.PLANS}") + for p in [s] + s.get("parts", []): + if p["name"] in seen: + raise SpecError(f"{s['_path']}: name {p['name']} already used in {seen[p['name']]}") + seen[p["name"]] = s["_path"] + for p in s.get("parts", []): + if p.get("slot") not in SLOTS: + raise SpecError(f"{s['_path']}: {p.get('name')}: slot must be one of {SLOTS}") + if p.get("fixed") and p["fixed"] not in gs.FIXED: + raise SpecError(f"{s['_path']}: {p['name']}: fixed must be one of {list(gs.FIXED)}") + if "edit" not in p: + raise SpecError(f"{s['_path']}: {p['name']}: missing 'edit'") + if names: + unknown = set(names) - {s["name"] for s in specs} + if unknown: + raise SpecError(f"no spec for {sorted(unknown)}") + specs = [s for s in specs if s["name"] in names] + return specs + + +def stable_seed(text): + return zlib.crc32(text.encode()) % 100000 + + +# ---------------------------------------------------------------- generation + +def normalize_base(raw): + """Binarize alpha, crop to the creature, put it bottom-centre on the 64x64 canvas.""" + arr = np.array(raw.convert("RGBA")) + arr[..., 3] = np.where(arr[..., 3] >= 128, 255, 0) + img = Image.fromarray(arr) + bbox = img.getbbox() + if bbox is None: + raise SpecError("base image is empty") + img = img.crop(bbox) + if img.width > CANVAS - 2 or img.height > CANVAS - GROUND_MARGIN - 1: + raise SpecError(f"base creature is {img.width}x{img.height}; must fit {CANVAS - 2}x{CANVAS - GROUND_MARGIN - 1} " + f"(use a smaller 'size')") + out = Image.new("RGBA", (CANVAS, CANVAS), (0, 0, 0, 0)) + out.paste(img, ((CANVAS - img.width) // 2, CANVAS - GROUND_MARGIN - img.height)) + return out + + +def base_payload(spec): + size = spec.get("size", 48) + return { + "description": spec["prompt"] + BASE_STYLE, + "image_size": {"width": size, "height": size}, + "no_background": True, + "outline": "single color black outline", + "detail": spec.get("detail", "medium detail"), + "view": "side", + "direction": spec.get("direction", "south"), + "seed": spec.get("seed", stable_seed(spec["name"])), + } + + +def edit_payload(spec, part, base): + return { + "image": gs_b64(base), + "description": part["edit"] + EDIT_SUFFIX, + "width": CANVAS, "height": CANVAS, + "seed": part.get("seed", stable_seed(part["name"])), + "no_background": True, + } + + +def gs_b64(img): + from pixellab_api import b64 + return b64(img) + + +def save_meta(path, endpoint, payload, usage): + from pixellab_api import redact + path.write_text(json.dumps({"endpoint": endpoint, "request": redact(payload), "usage": usage}, indent=2) + "\n") + + +MIN_USD = 0.30 # generate stops starting new bodies below this balance once trial generations are gone + + +def budget_ok(client): + bal = client.balance() + trial = (bal.get("subscription") or {}).get("generations") or 0 + usd = (bal.get("credits") or {}).get("usd") or 0 + if trial <= 0 and usd < MIN_USD: + print(f"budget stop: ${usd:.2f} left (floor ${MIN_USD:.2f}), no trial generations") + return False + return True + + +def generate(specs, only=(), force=False, dry=False, workers=1, base_only=False): + client = None + if not dry: + from pixellab_api import Client + client = Client() + for spec in specs: + if client and not budget_ok(client): + return + d = SRC_DIR / spec["name"] + d.mkdir(parents=True, exist_ok=True) + base_path = d / "base.png" + if force and not only or not base_path.exists(): + payload = base_payload(spec) + if dry: + print(f"{spec['name']}: create-image-pixen {json.dumps(payload)}") + else: + print(f"{spec['name']}: generating base ...") + try: + raw, usage = client.run("create-image-pixen", payload, f"{spec['name']}/base") + raw.save(d / "base_raw.png") + normalize_base(raw).save(base_path) + except Exception as e: # API error after retries, or a creature too big for 64x64 + print(f" base FAILED: {e}") + continue + save_meta(d / "base.json", "create-image-pixen", payload, usage) + stale = [f for f in d.glob("*.png") if not f.name.startswith("base")] + for f in stale: # edits of the old base no longer match it + f.unlink() + f.with_suffix(".json").unlink(missing_ok=True) + print(f" base saved ({usage})" + (f", removed {len(stale)} old edits" if stale else "")) + if base_only: + continue + if not base_path.exists(): + if dry: + print(f" (edits need {base_path})") + continue + base = Image.open(base_path).convert("RGBA") + todo = [p for p in spec.get("parts", []) + if (not only or p["name"] in only) and (force and (not only or p["name"] in only) + or not (d / f"{p['name']}.png").exists())] + todo = [p for p in todo if not p.get("skip")] + + def one(p): + payload = edit_payload(spec, p, base) + if dry: + return f" {p['name']}: edit-image-pixen \"{payload['description']}\" seed {payload['seed']}" + try: + img, usage = client.run("edit-image-pixen", payload, f"{spec['name']}/{p['name']}") + except Exception as e: # one failed edit shouldn't stop the others + return f" {p['name']}: FAILED {e}" + img.save(d / f"{p['name']}.png") + save_meta(d / f"{p['name']}.json", "edit-image-pixen", payload, usage) + return f" {p['name']}: saved ({usage})" + + with ThreadPoolExecutor(max_workers=max(1, workers)) as ex: + for line in ex.map(one, todo): + print(line) + + +# ---------------------------------------------------------------- color conversion + +def hls(rgb): + """(hue 0-1, lightness, saturation) of an (..., 3) array of 0-255 colors.""" + c = np.asarray(rgb, float) / 255.0 + mx, mn = c.max(-1), c.min(-1) + light, d = (mx + mn) / 2, mx - mn + sat = np.where(d == 0, 0.0, d / np.maximum(1 - np.abs(2 * light - 1), 1e-9)) + r, g, b = c[..., 0], c[..., 1], c[..., 2] + dd = np.maximum(d, 1e-9) + hue = np.where(mx == r, ((g - b) / dd) % 6, np.where(mx == g, (b - r) / dd + 2, (r - g) / dd + 4)) / 6 + return hue, light, sat + + +def ramp_table(fixed=None): + """[(ramp name, chars, rgb array 3x3)] for classification: stand-in ramps (+ one fixed ramp).""" + table = [(name, chars, np.array([ImageColor.getrgb(h) for h in hexes])) for name, (chars, hexes) in STANDIN.items()] + if fixed: + table.append((fixed, bp.FIXED_CHARS[fixed], np.array(gs.FIXED[fixed]))) + return table + + +def shade_centers(values, default): + """Light/base/dark lightness centres of one ramp's pixels (1D k-means, k=3), so an image's + own three tones map to the three shades whatever their absolute lightness.""" + if len(np.unique(np.round(values, 3))) < 3: + return default + centers = np.percentile(values, [85, 50, 15]) + for _ in range(20): + idx = np.abs(values[:, None] - centers).argmin(-1) + new = np.array([values[idx == k].mean() if (idx == k).any() else centers[k] for k in range(3)]) + if np.allclose(new, centers): + break + centers = new + return centers + + +def to_grid(arr, fixed=None, body=False): + """RGBA array -> (char grid, ramp-name grid). + + Exact stand-in / fixed colors map directly. Otherwise: very dark -> outline, bright and + unsaturated -> eye white, gray -> nearest color, anything else picks a ramp by hue and a + shade by clustering that ramp's lightness in this image into three tones. + body=True (base creatures): cream/tan gold (bellies, highlights) becomes the main ramp at the + same shade instead of type color; saturated gold details (beaks, irises) stay type.""" + table = ramp_table(fixed) + colors = np.concatenate([t[2] for t in table] + [np.array([OUTLINE_RGB, WHITE_RGB])]) + chars = np.array([c for t in table for c in t[1]] + ["o", "w"]) + names = np.array([t[0] for t in table for _ in range(3)] + ["outline", "white"]) + rgb = arr[..., :3].astype(int) + opaque = arr[..., 3] >= 128 + dist = ((rgb[:, :, None, :] - colors[None, None]) ** 2).sum(-1) + nearest = dist.argmin(-1) + hue, light, sat = hls(rgb) + exact = dist.min(-1) == 0 + outline = light <= OUTLINE_MAX_LIGHT + white = (light >= WHITE_MIN_LIGHT) & (sat <= WHITE_MAX_SAT) + gray = sat <= GRAY_MAX_SAT + ramp_hue = np.array([hls(t[2][1])[0] for t in table]) + gap = np.abs(hue[..., None] - ramp_hue) + ramp = np.minimum(gap, 1 - gap).argmin(-1) + free = opaque & ~(exact | outline | white | gray) + shade = np.zeros(ramp.shape, int) + for r, (_, _, rgbs) in enumerate(table): + sel = ramp == r + centers = shade_centers(light[free & sel], hls(rgbs)[1]) + shade[sel] = np.abs(light[sel][:, None] - centers).argmin(-1) + by_hue = ramp * 3 + shade + idx = np.select([exact | gray, outline, white], [nearest, len(chars) - 2, len(chars) - 1], by_hue) + if body: + tan = (names[idx] == "type") & ((light >= BODY_PALE_GOLD_LIGHT) | (sat < BODY_TAN_MAX_SAT)) + idx = np.where(tan, np.where(light >= BODY_PALE_GOLD_LIGHT, 0, idx % 3), idx) # main ramp is 0-2 + grid = np.where(opaque, chars[idx], ".") + ramps = np.where(opaque, names[idx], "empty") + return grid, ramps + + +def load_rgba(path): + return np.array(Image.open(path).convert("RGBA")) + + +# ---------------------------------------------------------------- extraction + +def grow(m, diag=True): + out = m.copy() + out[1:] |= m[:-1] + out[:-1] |= m[1:] + out[:, 1:] |= m[:, :-1] + out[:, :-1] |= m[:, 1:] + if diag: + out[1:, 1:] |= m[:-1, :-1] + out[1:, :-1] |= m[:-1, 1:] + out[:-1, 1:] |= m[1:, :-1] + out[:-1, :-1] |= m[1:, 1:] + return out + + +def components(mask): + """8-connected components as lists of (y, x).""" + seen = np.zeros_like(mask) + h, w = mask.shape + out = [] + for y, x in zip(*np.nonzero(mask)): + if seen[y, x]: + continue + seen[y, x] = True + comp, q = [], deque([(y, x)]) + while q: + cy, cx = q.popleft() + comp.append((cy, cx)) + for dy in (-1, 0, 1): + for dx in (-1, 0, 1): + ny, nx = cy + dy, cx + dx + if 0 <= ny < h and 0 <= nx < w and mask[ny, nx] and not seen[ny, nx]: + seen[ny, nx] = True + q.append((ny, nx)) + out.append(comp) + return out + + +def nearest(mask, x, y): + ys, xs = np.nonzero(mask) + i = int(np.argmin((xs - x) ** 2 + (ys - y) ** 2)) + return int(xs[i]), int(ys[i]) + + +def extract(base, part): + """Pixels of the edit that belong to the new feature. + + base/var: dicts with grid (chars), ramps (ramp names), rgb (raw array). Returns + (part char grid, fill mask, body-change fraction).""" + bgrid, vgrid = base["grid"], part["var"]["grid"] + bramp, vramp = base["ramps"], part["var"]["ramps"] + spec = part["spec"] + raw_dist = np.sqrt(((base["rgb"][..., :3].astype(int) - part["var"]["rgb"][..., :3].astype(int)) ** 2).sum(-1)) + near_body = grow(bgrid != ".") + over_body = bgrid != "." + noise = near_body & ((vramp == "outline") + | (over_body & (raw_dist < NOISE_RGB)) + | (over_body & (vramp == bramp) & (raw_dist < SAME_RAMP_RGB)) + | (~over_body & np.isin(vramp, JITTER_RAMPS))) + changed = (vgrid != ".") & (vgrid != bgrid) + allowed = np.ones_like(changed) + if "box" in spec: + x0, y0, x1, y1 = spec["box"] + allowed[:] = False + allowed[y0:y1 + 1, x0:x1 + 1] = True + if "chars" in spec: + allowed &= np.isin(vgrid, list(spec["chars"] + "o")) + keep = np.zeros_like(changed) + for comp in components(changed & allowed & ~noise): + if len(comp) >= spec.get("min_area", 8): + keep[tuple(np.array(comp).T)] = True + # The noise rule also drops the feature's root where it meets the body (a teal tail base, + # say). Take back changed pixels outside the original silhouette that touch the feature. + keep |= changed & allowed & (bgrid == ".") & grow(keep & (vgrid != "o")) + fill = keep & (vgrid != "o") + if not fill.any(): + raise SpecError(f"{spec['name']}: the edit added nothing (after box/chars/min_area)") + mask = keep | (grow(fill) & (vgrid == "o")) # plus the outline hugging the new fill + grid = np.where(mask, vgrid, ".") + if spec.get("fixed"): + grid = fold_fixed(grid, part["var"], fill, spec) + # Close the silhouette where the part ends in empty space; where it meets the creature it + # stays open, so a head_top drawn over the head joins without a seam. + grid[grow(fill, diag=False) & (vgrid == ".") & ~mask] = "o" + body_px = bgrid != "." + redrawn = body_px & ~grow(mask, diag=True) & ((vgrid == ".") | (raw_dist >= SAME_RAMP_RGB)) + return grid, fill, float(redrawn.sum() / max(1, body_px.sum())) + + +def fold_fixed(grid, var, fill, spec): + """Recolor the feature's pixels from the listed ramps into the fixed ramp, by lightness.""" + fixed = spec["fixed"] + sources = set(spec.get("fixed_from", ["accent", "type"])) | {fixed} + sel = fill & np.isin(var["ramps"], list(sources)) + if not sel.any(): + return grid + _, light, _ = hls(var["rgb"][..., :3]) + centers = shade_centers(light[sel], hls(np.array(gs.FIXED[fixed]))[1]) + shade = np.abs(light[sel][:, None] - centers).argmin(-1) + out = grid.copy() + out[sel] = np.array(list(bp.FIXED_CHARS[fixed]))[shade] + return out + + +def contact_anchor(bgrid, vgrid, fill): + """Body pixel nearest the middle of where the part touches the body (for a pair of horns or + wings, the middle of the head or back); None if the part doesn't touch the body.""" + touch = grow(fill, diag=False) & ~fill & (bgrid != ".") & (vgrid != ".") + if not touch.any(): + return None + ys, xs = np.nonzero(touch) + return nearest(bgrid != ".", xs.mean(), ys.mean()) + + +def default_anchors(bgrid): + opaque = bgrid != "." + ys, xs = np.nonzero(opaque) + x0, x1, y0, y1 = xs.min(), xs.max(), ys.min(), ys.max() + cx, cy, h = xs.mean(), ys.mean(), y1 - y0 + 1 + bottom = opaque & (np.arange(bgrid.shape[0])[:, None] == y1) + return { + "pivot": nearest(bottom, (x0 + x1) / 2, y1), + "aura": nearest(opaque, cx, cy), + "head_top": nearest(opaque, cx, y0), + "back": nearest(opaque, cx, cy - 0.2 * h), + "tail": nearest(opaque, x1, y0 + 0.75 * h), + } + + +def crop_box(mask, points): + ys, xs = np.nonzero(mask) + xs = list(xs) + [p[0] for p in points] + ys = list(ys) + [p[1] for p in points] + return min(xs), min(ys), max(xs), max(ys) + + +def write_part(slot, name, grid, header): + src = GRID_DIR / slot / f"{name}.txt" + src.parent.mkdir(parents=True, exist_ok=True) + src.write_text("".join(f"# {line}\n" for line in header) + "\n".join("".join(r) for r in grid) + "\n") + rows = bp.read_grid(src) # same validation build_parts applies + png = PARTS_DIR / slot / f"{name}.png" + png.parent.mkdir(parents=True, exist_ok=True) + bp.to_image(rows).save(png) + return png + + +def standin_image(grid): + """Char grid -> RGBA in the stand-in palette (readable, unlike the key colors).""" + lut = {"o": OUTLINE_RGB, "w": WHITE_RGB} + for chars, hexes in STANDIN.values(): + lut.update(zip(chars, (ImageColor.getrgb(h) for h in hexes))) + for ramp, chars in bp.FIXED_CHARS.items(): + lut.update(zip(chars, gs.FIXED[ramp])) + lut.update({m: (255, 0, 255) for m in MARKER_CHAR.values()}) + img = Image.new("RGBA", (grid.shape[1], grid.shape[0]), (0, 0, 0, 0)) + img.putdata([lut[c] + (255,) if c in lut else (0, 0, 0, 0) for c in grid.ravel()]) + return img + + +def zoom(img, k, bg=(27, 31, 42, 255)): + big = img.resize((img.width * k, img.height * k), Image.NEAREST) + return Image.alpha_composite(Image.new("RGBA", big.size, bg), big) + + +def hstack(tiles, gap=8, bg=(0, 0, 0, 0)): + sheet = Image.new("RGBA", (sum(t.width for t in tiles) + gap * (len(tiles) - 1), max(t.height for t in tiles)), bg) + x = 0 + for t in tiles: + sheet.paste(t, (x, 0)) + x += t.width + gap + return sheet + + +def extract_body(spec): + d = SRC_DIR / spec["name"] + if not (d / "base.png").exists(): + print(f"{spec['name']}: no base yet, run generate") + return + rgb = load_rgba(d / "base.png") + bgrid, bramps = to_grid(rgb, body=True) + base = {"grid": bgrid, "ramps": bramps, "rgb": rgb} + anchors = default_anchors(bgrid) + from_part, extracted = {}, [] + for p in spec.get("parts", []): + if p.get("skip"): + continue + src = d / f"{p['name']}.png" + if not src.exists(): + print(f" {p['name']}: no edit yet, run generate") + continue + vrgb = load_rgba(src) + if vrgb.shape != rgb.shape: + print(f" {p['name']}: edit is {vrgb.shape[1]}x{vrgb.shape[0]}, expected {CANVAS}x{CANVAS}; skipped") + continue + vgrid, vramps = to_grid(vrgb, p.get("fixed")) + var = {"grid": vgrid, "ramps": vramps, "rgb": vrgb} + try: + grid, fill, change = extract(base, {"spec": p, "var": var}) + except SpecError as e: + print(f" {p['name']}: {e}") + continue + if p["slot"] not in from_part: + a = contact_anchor(bgrid, vgrid, fill) + if a is None: + print(f" ! {p['name']}: doesn't touch the body; {p['slot']} anchor uses the default") + else: + from_part[p["slot"]] = a + extracted.append((p, var, grid, fill, change)) + anchors.update(from_part) + anchors.update({k: tuple(v) for k, v in spec.get("anchors", {}).items()}) + taken = {} + for k, xy in anchors.items(): + if xy in taken: + raise SpecError(f"{spec['name']}: {k} and {taken[xy]} anchors share pixel {xy}; set one in 'anchors'") + taken[xy] = k + + x0, y0, x1, y1 = crop_box(bgrid != ".", anchors.values()) + body = bgrid[y0:y1 + 1, x0:x1 + 1].copy() + for k, (x, y) in anchors.items(): + body[y - y0, x - x0] = MARKER_CHAR[k] + write_part("body", spec["name"], body, + [f"{spec['name']}: from pixellab_src/{spec['name']}/base.png (pixellab_library.py extract)"] + + [f"{k} at {xy}" + (" (from part)" if k in from_part else "") for k, xy in anchors.items()]) + print(f"{spec['name']}: body {body.shape[1]}x{body.shape[0]} " + + " ".join(f"{k}={anchors[k]}" for k in MARKER_CHAR)) + + diff_dir = PREVIEW_DIR / "diff" + diff_dir.mkdir(parents=True, exist_ok=True) + for p, var, grid, fill, change in extracted: + pivot = anchors[p["slot"]] + px0, py0, px1, py1 = crop_box(grid != ".", [pivot]) + pgrid = grid[py0:py1 + 1, px0:px1 + 1].copy() + pgrid[pivot[1] - py0, pivot[0] - px0] = "P" + write_part(p["slot"], p["name"], pgrid, + [f"{p['name']}: pixellab_src/{spec['name']}/{p['name']}.png minus base.png", f"pivot at {pivot}"]) + tiles = [Image.fromarray(rgb), Image.fromarray(var["rgb"]), standin_image(var["grid"]), standin_image(grid)] + hstack([zoom(t, 6) for t in tiles]).save(diff_dir / f"{p['name']}.png") + flag = " ! body redrawn, check the diff" if change > BODY_CHANGE_WARN else "" + print(f" {p['slot']:8} {p['name']:28} {pgrid.shape[1]}x{pgrid.shape[0]} {int(fill.sum())} px " + f"body change {change:.0%}{flag}") + + +def sweep_orphans(specs): + """Remove grids/PNGs for parts and bodies no longer in any spec (or marked skip).""" + live = {("body", s["name"]) for s in specs} + live |= {(p["slot"], p["name"]) for s in specs for p in s.get("parts", []) if not p.get("skip")} + for root, ext in ((GRID_DIR, "txt"), (PARTS_DIR, "png")): + for f in root.glob(f"*/*.{ext}"): + if (f.parent.name, f.stem) not in live: + f.unlink() + print(f"removed stale {f}") + + +# ---------------------------------------------------------------- previews + +def registry(): + gs._part_cache.clear() + reg._extents.clear() + return importlib.reload(reg) + + +def top_type(p, fallback="normal"): + if not p["types"]: + return fallback + return max(p["types"], key=p["types"].get) + + +def render(lib, body, picks, ptype, colors): + chosen = {"body": body, **{s: p for s, p in picks.items()}} + spr = gs.compose(lib.PARTS_DIR, chosen, "none", random.Random(0)) + spr = gs.place_on_canvas(spr, lib) + main, accent = gs.pick_main_accent([(gs.hex_to_rgb(c), 1.0) for c in colors], ptype) + return gs.recolor(spr, gs.build_palette(main, accent, ptype)) + + +def label_grid(cells, cols, path, scale, title=None): + """cells: [(label, image or None)] in a grid; None draws an empty cell.""" + cw, lh = CANVAS * scale, 12 + rows = -(-len(cells) // cols) + top = 16 if title else 0 + sheet = Image.new("RGBA", (cols * (cw + 4) + 4, top + rows * (cw + lh + 4) + 4), BG) + d = ImageDraw.Draw(sheet) + if title: + d.text((4, 2), title, fill=(30, 30, 30, 255)) + for i, (label, img) in enumerate(cells): + x, y = 4 + (i % cols) * (cw + 4), top + 4 + (i // cols) * (cw + lh + 4) + d.text((x, y), label[:28], fill=(40, 40, 40, 255)) + if img is not None: + sheet.alpha_composite(img.resize((cw, cw), Image.NEAREST), (x, y + lh)) + path.parent.mkdir(parents=True, exist_ok=True) + sheet.save(path) + print(path) + + +def preview_body(lib, spec): + by = {p["name"]: p for s in lib.SLOTS.values() for p in s} + if spec["name"] not in by: + print(f"{spec['name']}: not extracted") + return + body = by[spec["name"]] + btype = top_type(body) + own = [(p["slot"], by[p["name"]]) for p in spec.get("parts", []) if p["name"] in by] + cells = [] + for _, colors in PREVIEW_PALETTES: + base = Image.open(SRC_DIR / spec["name"] / "base.png").convert("RGBA") + cells.append(("pixellab base", Image.alpha_composite(Image.new("RGBA", base.size, (27, 31, 42, 255)), base))) + cells.append((spec["name"], render(lib, body, {}, btype, colors))) + for slot, p in own: + cells.append((p["name"], render(lib, body, {slot: p}, top_type(p, btype), colors))) + label_grid(cells, len(own) + 2, PREVIEW_DIR / f"body_{spec['name']}.png", 3) + + +def allowed_on(lib, body, slot, p): + tags = set(body["tags"]) | {f"plan:{body['plans'][0]}"} + if body["plans"][0] not in p["plans"] or p["name"] in body["deny"]: + return False + if p["requires"] and not set(p["requires"]) & tags: + return False + return not (set(p["tags"]) & set(body["excludes"]) or set(p["excludes"]) & tags) + + +def preview_cross(lib): + """Per slot: rows = bodies, columns = parts; every pairing the rules allow is rendered. + Gray cell: not allowed by plans/tags/deny. Red frame: rendered for review, but the generator + never picks it (detached from the body, or too big for the canvas).""" + colors = PREVIEW_PALETTES[0][1] + for slot in SLOTS: + parts = [p for p in lib.SLOTS[slot] if p["name"] != "none"] + if not parts: + continue + cells = [] + for body in lib.BODY: + for p in parts: + label = f"{body['name'][3:]}+{p['name'][3:]}" + if not allowed_on(lib, body, slot, p): + cells.append((label, Image.new("RGBA", (CANVAS, CANVAS), (200, 200, 196, 255)))) + continue + img = render(lib, body, {slot: p}, top_type(p, top_type(body)), colors) + if not lib.fits(body, {slot: p}): + if img.width > CANVAS: # expanded canvas: show the bottom-centre 64x64 + img = img.crop(((img.width - CANVAS) // 2, img.height - CANVAS, + (img.width + CANVAS) // 2, img.height)) + ImageDraw.Draw(img).rectangle((0, 0, CANVAS - 1, CANVAS - 1), outline=(220, 0, 0, 255), width=2) + label += " (detached)" if not lib.attached(body, slot, p) else " (too big)" + cells.append((label, img)) + label_grid(cells, len(parts), PREVIEW_DIR / f"cross_{slot}.png", 2, + title=f"{slot}: rows = bodies, columns = parts ({', '.join(p['name'] for p in parts)})") + + +def preview_random(lib, n): + palettes = [["#1565C0", "#FFB300"], ["#2E7D32", "#E53935"], ["#6A1B9A", "#FDD835"], ["#D84315", "#263238"], + ["#00897B", "#F06292"], ["#37474F", "#FFCA28"], ["#C62828", "#ECEFF1"], ["#F9A825", "#1A237E"]] + cells = [] + for i in range(n): + ptype = TYPES[i % len(TYPES)] + rng = random.Random(i) + plan, chosen, markings, _ = gs.pick_parts(lib, ptype, rng) + spr = gs.place_on_canvas(gs.compose(lib.PARTS_DIR, chosen, markings, rng), lib) + main, accent = gs.pick_main_accent([(gs.hex_to_rgb(c), 1.0) for c in palettes[i % len(palettes)]], ptype) + spr = gs.recolor(spr, gs.build_palette(main, accent, ptype)) + extras = [p["name"][3:] for s, p in chosen.items() if s != "body" and p["name"] != "none"] + cells.append((f"{ptype} {chosen['body']['name'][3:]} {' '.join(extras)}", spr)) + label_grid(cells, 10, PREVIEW_DIR / "random.png", 2) + + +# ---------------------------------------------------------------- cost + +def cost(): + ledger = SRC_DIR / "ledger.jsonl" + usd = gens = n = 0 + if ledger.exists(): + for line in ledger.read_text().splitlines(): + u = json.loads(line).get("usage") or {} + n += 1 + usd += u.get("usd", 0) or 0 + gens += u.get("generations", 0) or 0 + print(f"ledger: {n} calls, ${usd:.3f}, {gens:g} trial generations") + from pixellab_api import Client + print("balance:", Client().balance()) + + +def main(argv=None): + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + sub = ap.add_subparsers(dest="cmd", required=True) + g = sub.add_parser("generate", help="create missing bases and edits") + g.add_argument("bodies", nargs="*") + g.add_argument("--parts", nargs="*", default=(), help="only these parts (with --force: redo them)") + g.add_argument("--force", action="store_true", help="regenerate even if the image exists") + g.add_argument("--dry-run", action="store_true") + g.add_argument("--workers", type=int, default=1, + help="parallel edit requests (the account runs one job at a time, so extra workers just queue)") + g.add_argument("--base-only", action="store_true", help="only the base image (review it before paying for edits)") + e = sub.add_parser("extract", help="convert + diff + anchors -> parts_pl_src/ and parts_pl/") + e.add_argument("bodies", nargs="*") + pv = sub.add_parser("preview", help="review sheets in preview/pixellab/") + pv.add_argument("bodies", nargs="*") + pv.add_argument("--cross", action="store_true", help="every part on every body, one sheet per slot") + pv.add_argument("--random", type=int, metavar="N", help="N real random picks") + sub.add_parser("cost", help="spend so far and live balance") + a = ap.parse_args(argv) + try: + if a.cmd == "cost": + cost() + return 0 + specs = load_specs(getattr(a, "bodies", ())) + if a.cmd == "generate": + generate(specs, set(a.parts), a.force, a.dry_run, a.workers, a.base_only) + elif a.cmd == "extract": + for spec in specs: + extract_body(spec) + if not a.bodies: + sweep_orphans(specs) + elif a.cmd == "preview": + lib = registry() + if a.cross: + preview_cross(lib) + if a.random: + preview_random(lib, a.random) + if a.bodies or not (a.cross or a.random): + for spec in specs: + preview_body(lib, spec) + except (SpecError, reg.SpecError, bp.SourceError) as err: + print(f"error: {err}", file=sys.stderr) + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/pixellab_library/pl_axolotl.json b/pixellab_library/pl_axolotl.json new file mode 100644 index 0000000..4b637a8 --- /dev/null +++ b/pixellab_library/pl_axolotl.json @@ -0,0 +1,71 @@ +{ + "name": "pl_axolotl", + "plan": "aquatic", + "head": [ + "reptile_head" + ], + "types": { + "water": 3, + "poison": 2, + "dragon": 2 + }, + "slots": [ + "head_top", + "back" + ], + "desc": "Low-slung axolotl/newt creature with a wide flat head and crimson freckles", + "prompt": "chubby newt-like salamander creature crawling on four short splayed legs with webbed toes, very wide flat bald head with a broad smiling mouth, small beady eyes set on top of its head, smooth glossy skin, crimson freckles along its flanks, short thick tapering tail, smooth round head with no gills, no frills and no spikes", + "size": 44, + "seed": 42, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_gills_frill", + "edit": "add feathery crimson gill fronds sticking out on both sides of its head", + "seed": 1, + "types": { + "water": 4, + "poison": 3, + "dragon": 2 + }, + "other": 0.1, + "tags": [ + "finned" + ], + "motif": "water", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_coral_back", + "edit": "add a small clump of branching crimson coral with forked antler-like branches growing from the middle of its back", + "seed": 2, + "types": { + "water": 4, + "rock": 3, + "psychic": 2 + }, + "other": 0.05, + "motif": "water", + "palette": "accent" + }, + { + "slot": "head_top", + "name": "pl_axolotl_sprout", + "edit": "add a small gold two-leaf sprout growing from the top of its head", + "seed": 1, + "types": { + "grass": 6, + "bug": 1, + "normal": 0.5 + }, + "other": 0.1, + "tags": [ + "leafy" + ], + "motif": "plant", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_bee.json b/pixellab_library/pl_bee.json new file mode 100644 index 0000000..dc1594c --- /dev/null +++ b/pixellab_library/pl_bee.json @@ -0,0 +1,88 @@ +{ + "name": "pl_bee", + "plan": "insectoid", + "head": [ + "insect_head" + ], + "types": { + "bug": 2, + "flying": 1.5, + "electric": 1.5 + }, + "other": 1, + "desc": "Fuzzy round hornet-like creature with big compound eyes, hooked mandibles and crimson stripes", + "prompt": "fuzzy round hornet-like creature facing the viewer, plump round teal body covered in short teal fuzz with two thick crimson stripes, round head with big dark oval compound eyes and two small hooked mandibles, four tiny arms, short stubby legs, no wings, no stinger", + "size": 44, + "seed": 59, + "direction": "south", + "parts": [ + { + "slot": "back", + "name": "pl_wings_bug", + "edit": "add a pair of small pale gold translucent veined insect wings on its back", + "seed": 1, + "types": { + "bug": 6, + "grass": 2, + "poison": 2, + "psychic": 1.5, + "electric": 1 + }, + "other": 0.1, + "tags": [ + "winged" + ], + "motif": "bug", + "palette": "type" + }, + { + "slot": "head_top", + "name": "pl_antennae_spark", + "edit": "add two thin teal antennae on top of its head, each tipped with a bright yellow electric spark", + "seed": 1, + "types": { + "electric": 6, + "bug": 2 + }, + "other": 0, + "tags": [], + "motif": "electric", + "palette": "main", + "fixed": "electric" + }, + { + "slot": "tail", + "name": "pl_tail_scorpion", + "edit": "add a segmented teal scorpion tail with a crimson barbed stinger, curling up on the right side", + "seed": 1, + "types": { + "bug": 5, + "poison": 5 + }, + "other": 0.05, + "tags": [ + "tailed", + "spiky" + ], + "motif": "bug", + "palette": "main" + }, + { + "slot": "head_top", + "name": "pl_bee_halo", + "edit": "add a small glowing gold halo ring floating above its head", + "seed": 1, + "types": { + "psychic": 5, + "normal": 1, + "flying": 1 + }, + "other": 0.2, + "requires": [], + "tags": [], + "motif": "sky", + "palette": "type", + "skip": true + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_beetle.json b/pixellab_library/pl_beetle.json new file mode 100644 index 0000000..fe08220 --- /dev/null +++ b/pixellab_library/pl_beetle.json @@ -0,0 +1,81 @@ +{ + "name": "pl_beetle", + "plan": "insectoid", + "head": [ + "insect_head" + ], + "types": { + "bug": 2, + "rock": 1.5, + "ground": 1.5 + }, + "other": 1, + "slots": [ + "head_top", + "back" + ], + "desc": "Round armored dome beetle with wide flat mandibles and stubby legs", + "prompt": "round armored beetle creature facing the viewer, tall domed teal shell with a crimson seam down the middle and two crimson spots, small wide head with two short flat curved mandibles and a smooth bald forehead, six short stubby legs, no horn, no wings", + "size": 44, + "seed": 31, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_horn_beetle", + "edit": "add one big curved crimson rhinoceros beetle horn rising from the top of its head", + "seed": 1, + "types": { + "bug": 5, + "fighting": 3, + "rock": 2 + }, + "other": 0.15, + "requires": [ + "mammal_head", + "reptile_head", + "insect_head", + "integrated_head", + "ghost_head" + ], + "tags": [ + "horned" + ], + "motif": "bug", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_wings_elytra", + "edit": "add a pair of small crimson beetle wing cases opened up behind its shell, with thin translucent wings peeking out beneath them", + "seed": 2, + "types": { + "bug": 6, + "flying": 2 + }, + "other": 0.1, + "tags": [ + "winged" + ], + "motif": "bug", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_beetle_rock_spikes", + "edit": "add three big jagged gold rock chunks sticking up from behind its shell", + "seed": 2, + "types": { + "rock": 5, + "ground": 4, + "fighting": 1 + }, + "other": 0.1, + "tags": [ + "spiky" + ], + "motif": "armor", + "palette": "type" + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_boar.json b/pixellab_library/pl_boar.json new file mode 100644 index 0000000..c96cb32 --- /dev/null +++ b/pixellab_library/pl_boar.json @@ -0,0 +1,102 @@ +{ + "name": "pl_boar", + "plan": "quadruped", + "head": [ + "mammal_head" + ], + "types": { + "ground": 2.5, + "normal": 2, + "fighting": 1.5 + }, + "other": 1, + "excludes": [ + "eared" + ], + "desc": "Stocky boar with a broad flat snout, small upturned tusks and floppy ears", + "prompt": "stocky barrel-bodied boar-like creature standing on four short thick legs with small hooves, broad flat pig snout with a crimson nose disc, two small curved tusks poking up from its lower jaw, small fierce eyes, small floppy ears folded forward, low wide smooth head with no hair on top, crimson stripe markings on its flanks, short smooth fur, no mane, no tail, round rump with nothing behind it", + "size": 48, + "seed": 714, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_tuft_fluffy", + "edit": "add one small fluffy teal tuft of fur sticking up on top of its forehead", + "seed": 2, + "types": { + "normal": 5, + "fighting": 1, + "ice": 1 + }, + "other": 0.4, + "tags": [ + "fluffy" + ], + "requires": [ + "mammal_head", + "integrated_head" + ], + "palette": "main" + }, + { + "slot": "back", + "name": "pl_mane_bristle", + "edit": "add a tall ridge of spiky crimson bristles sticking up high along its back", + "seed": 3, + "types": { + "normal": 3, + "ground": 4, + "fighting": 3 + }, + "other": 0.3, + "tags": [ + "fluffy" + ], + "palette": "accent", + "box": [ + 0, + 0, + 43, + 25 + ] + }, + { + "slot": "back", + "name": "pl_saddle_rock", + "edit": "add a small pile of three gold boulders strapped on top of its back", + "seed": 2, + "types": { + "ground": 5, + "rock": 4 + }, + "other": 0.1, + "tags": [ + "armored" + ], + "motif": "armor", + "palette": "type", + "box": [ + 0, + 0, + 63, + 18 + ] + }, + { + "slot": "tail", + "name": "pl_tail_curl_pig", + "edit": "add a small curly teal pig tail starting at its rump and curling on the right side", + "seed": 1, + "types": { + "normal": 4, + "ground": 2 + }, + "other": 0.4, + "tags": [ + "tailed" + ], + "palette": "main" + } + ] +} diff --git a/pixellab_library/pl_brawler.json b/pixellab_library/pl_brawler.json new file mode 100644 index 0000000..cd7aaeb --- /dev/null +++ b/pixellab_library/pl_brawler.json @@ -0,0 +1,91 @@ +{ + "name": "pl_brawler", + "plan": "biped", + "head": [ + "reptile_head" + ], + "types": { + "fighting": 3, + "normal": 2, + "rock": 2 + }, + "desc": "Stout upright lizard brawler with a wide flat toad head, heavy brow and huge bandaged fists", + "prompt": "stout upright lizard brawler creature in a fighting stance, wide flat toad-like head, heavy brow ridge, underbite with two small fangs, barrel chest, huge oversized fists wrapped in crimson bandages, short thick bowed legs, no tail", + "size": 44, + "seed": 533, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_headband", + "edit": "add a crimson cloth headband tied around its forehead with two trailing ends", + "seed": 1, + "types": { + "fighting": 7, + "normal": 0.5 + }, + "other": 0.02, + "requires": [ + "mammal_head", + "reptile_head", + "rock_head", + "ghost_head" + ], + "tags": [ + "_headband" + ], + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_mane_fire", + "edit": "add a mane of orange and yellow flames around its shoulders and neck", + "seed": 1, + "types": { + "fire": 8 + }, + "other": 0, + "tags": [ + "fiery" + ], + "motif": "fire", + "palette": "type", + "fixed": "fire" + }, + { + "slot": "tail", + "name": "pl_tail_tuft", + "edit": "add a long thin teal tail ending in a crimson fur tuft, curling up on the right side", + "seed": 1, + "types": { + "normal": 2, + "psychic": 3, + "poison": 2, + "electric": 2 + }, + "other": 0.4, + "tags": [ + "tailed" + ], + "palette": "main" + }, + { + "slot": "back", + "name": "pl_brawler_shell", + "edit": "add a big round crimson turtle shell on its back, sticking out wide behind both sides of its body", + "seed": 2, + "types": { + "water": 3, + "ground": 2, + "rock": 2, + "fighting": 1 + }, + "other": 0.1, + "tags": [ + "shelled" + ], + "motif": "armor", + "palette": "accent" + } + ] +} diff --git a/pixellab_library/pl_bunny.json b/pixellab_library/pl_bunny.json new file mode 100644 index 0000000..939562d --- /dev/null +++ b/pixellab_library/pl_bunny.json @@ -0,0 +1,93 @@ +{ + "name": "pl_bunny", + "plan": "biped", + "head": [ + "mammal_head" + ], + "types": { + "normal": 2.5, + "grass": 2, + "psychic": 2 + }, + "desc": "Upright earless rabbit-like hopper with buck teeth, crimson heart nose, freckles and huge flat feet", + "prompt": "rabbit-like creature standing tall and upright on huge long flat hind feet, seen from the front, round smooth head that is earless (the ears are not drawn), big round dark eyes, two big buck teeth, small crimson heart-shaped nose, crimson freckles on its cheeks, short paw arms, chubby round belly with a crimson oval belly patch, no tail", + "size": 44, + "seed": 733, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_ears_long", + "edit": "add two long upright teal rabbit ears with crimson insides on top of its head", + "seed": 1, + "types": { + "normal": 3, + "psychic": 3, + "grass": 2, + "flying": 1.5 + }, + "other": 0.3, + "requires": [ + "mammal_head", + "integrated_head" + ], + "tags": [ + "eared" + ], + "palette": "main" + }, + { + "slot": "back", + "name": "pl_wings_tiny", + "edit": "add a pair of small gold feathered wings spread from its back", + "seed": 3, + "types": { + "flying": 4, + "normal": 2, + "psychic": 1.5, + "ice": 1 + }, + "other": 0.3, + "tags": [ + "winged", + "feathered" + ], + "motif": "feather", + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_puff", + "edit": "add a small round fluffy cotton-ball tail with jagged fur edges, sticking out from behind its right hip", + "seed": 2, + "types": { + "normal": 4, + "ice": 2, + "grass": 1 + }, + "other": 0.5, + "tags": [ + "tailed", + "fluffy" + ], + "palette": "main" + }, + { + "slot": "head_top", + "name": "pl_bunny_flower_crown", + "edit": "add a small ring of teal leaves with one crimson flower sitting on top of its head", + "seed": 1, + "types": { + "grass": 5, + "poison": 1.5, + "psychic": 1 + }, + "other": 0.1, + "tags": [ + "leafy" + ], + "motif": "plant", + "palette": "main" + } + ] +} diff --git a/pixellab_library/pl_chick.json b/pixellab_library/pl_chick.json new file mode 100644 index 0000000..7162aa2 --- /dev/null +++ b/pixellab_library/pl_chick.json @@ -0,0 +1,97 @@ +{ + "name": "pl_chick", + "plan": "avian", + "head": [ + "beak_head" + ], + "types": { + "normal": 2, + "flying": 2, + "ice": 1.5 + }, + "desc": "Round puffball fledgling on long thin stilt legs with a fluffy crimson down collar", + "prompt": "round puffball fledgling bird with a perfectly round fluffy body, standing on two long thin stilt legs with big three-toed feet, tiny folded stub wings at its sides, short pointed beak, small teardrop-shaped crimson cheek marks, a ring of fluffy crimson down around its neck like a scarf, no crest, no tail", + "size": 44, + "seed": 301, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_crest_feather", + "edit": "add a tall crest of crimson feathers on top of its head", + "seed": 1, + "types": { + "flying": 5, + "normal": 2, + "fire": 1.5 + }, + "other": 0.3, + "tags": [ + "feathered" + ], + "motif": "feather", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_wings_gold", + "edit": "add two small gold feathered wings sticking up from behind its back, one on the left and one on the right, mirror symmetric", + "seed": 3, + "types": { + "flying": 6, + "normal": 1, + "psychic": 1, + "fire": 1 + }, + "other": 0.3, + "tags": [ + "winged", + "feathered" + ], + "motif": "feather", + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_feather_fan", + "edit": "add a fanned tail of long crimson tail feathers sticking out on the right side", + "seed": 1, + "types": { + "flying": 6, + "fire": 2, + "psychic": 1.5, + "normal": 1 + }, + "other": 0.2, + "tags": [ + "tailed", + "feathered" + ], + "motif": "feather", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_chick_tail_icicle", + "edit": "add a short fanned tail of pale icy blue ice crystal feathers sticking out on the right side", + "seed": 1, + "types": { + "ice": 7 + }, + "other": 0, + "tags": [ + "tailed", + "crystal" + ], + "motif": "crystal", + "palette": "type", + "fixed": "ice", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + } + ] +} diff --git a/pixellab_library/pl_crab.json b/pixellab_library/pl_crab.json new file mode 100644 index 0000000..7033b04 --- /dev/null +++ b/pixellab_library/pl_crab.json @@ -0,0 +1,27 @@ +{ + "name": "pl_crab", + "plan": "insectoid", + "head": ["insect_head"], + "types": {"water": 2, "rock": 1.5, "bug": 1.5}, + "other": 1, + "slots": ["head_top", "back"], + "desc": "Chunky squat crab with two lopsided big claws held up and eyes on short stalks", + "prompt": "chunky squat crab creature facing the viewer, wide flat oval teal carapace with a crimson zigzag rim along its front edge, two big round eyes on short thick stalks, one oversized blocky claw and one smaller claw both raised up beside its body with crimson pincer tips, four short stubby pointed legs on each side, tiny smiling mouth, no shell on its back, nothing on its head", + "size": 44, + "seed": 611, + "direction": "south", + "parts": [ + {"slot": "head_top", "name": "pl_coral_crown", + "edit": "add a few small branching crimson coral twigs growing on top of its head between its eye stalks", + "seed": 1, "types": {"water": 4, "rock": 3, "psychic": 1}, "other": 0.1, + "tags": [], "motif": "water", "palette": "accent"}, + {"slot": "back", "name": "pl_shell_spiral", + "edit": "add a round gold spiral hermit crab shell on its back, the shell bulges up behind its body like a big snail shell, small and compact", + "seed": 3, "types": {"water": 5, "rock": 3, "bug": 1}, "other": 0.1, + "tags": ["shelled"], "motif": "armor", "palette": "type", "box": [13, 0, 50, 33]}, + {"slot": "back", "name": "pl_barnacles", + "edit": "add a cluster of small teal barnacles and tiny shells growing on top of its back, poking up behind its body, no sparkles", + "seed": 2, "types": {"water": 4, "rock": 3}, "other": 0.1, + "tags": [], "palette": "main"} + ] +} diff --git a/pixellab_library/pl_cub.json b/pixellab_library/pl_cub.json new file mode 100644 index 0000000..d9913f9 --- /dev/null +++ b/pixellab_library/pl_cub.json @@ -0,0 +1,93 @@ +{ + "name": "pl_cub", + "plan": "quadruped", + "head": [ + "mammal_head" + ], + "types": { + "ground": 2, + "normal": 2, + "fighting": 2 + }, + "excludes": [ + "eared" + ], + "desc": "Stocky badger-like cub with small round ears and a crimson stripe mask", + "prompt": "chunky stocky badger-like cub standing on four short thick legs, wide flat head with a blunt square snout, tiny rounded ears, a crimson stripe running from its nose over its forehead, crimson band across its shoulders, big front paws with crimson claws, no tail", + "size": 44, + "seed": 301, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_horns_ram", + "edit": "add a pair of small curled gold ram horns on the sides of its head", + "seed": 1, + "types": { + "rock": 4, + "ground": 3, + "fighting": 3, + "normal": 1 + }, + "other": 0.3, + "tags": [ + "horned" + ], + "motif": "armor", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_plates_rock", + "edit": "add a few small gold rock armor plates sticking out from its back, just behind its shoulders", + "seed": 3, + "types": { + "rock": 6, + "ground": 3, + "fighting": 1 + }, + "other": 0.1, + "tags": [ + "armored" + ], + "motif": "armor", + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_fluffy", + "edit": "add a big fluffy teal tail curling up on the right side", + "seed": 1, + "types": { + "normal": 4, + "ice": 3, + "electric": 2, + "psychic": 2 + }, + "other": 0.4, + "tags": [ + "tailed", + "fluffy" + ], + "palette": "main" + }, + { + "slot": "tail", + "name": "pl_cub_tail_rockclub", + "edit": "add a short thick teal tail ending in a round gold rock club, curling up on the right side", + "seed": 1, + "types": { + "ground": 4, + "rock": 4, + "fighting": 2 + }, + "other": 0.2, + "tags": [ + "tailed", + "armored" + ], + "motif": "armor", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_dino.json b/pixellab_library/pl_dino.json new file mode 100644 index 0000000..a109695 --- /dev/null +++ b/pixellab_library/pl_dino.json @@ -0,0 +1,110 @@ +{ + "name": "pl_dino", + "plan": "biped", + "head": [ + "reptile_head" + ], + "types": { + "dragon": 2, + "ground": 2.5, + "rock": 2.5 + }, + "desc": "Chunky upright little dinosaur with a blunt boxy snout and tiny arms", + "prompt": "chunky little dinosaur standing upright on thick stubby legs, big boxy head with a wide blunt square snout and small nostrils, small beady eyes set high, underbite with a row of tiny teeth, very short tiny arms, round pot belly with crimson horizontal belly stripes, no tail, no spikes", + "size": 44, + "seed": 422, + "direction": "south-west", + "parts": [ + { + "slot": "back", + "name": "pl_spikes_back", + "edit": "add a row of big crimson triangular spikes along its back, from the back of its head down to its lower back, keep everything else unchanged", + "seed": 3, + "types": { + "ground": 4, + "poison": 3, + "rock": 3, + "dragon": 2, + "ice": 2 + }, + "other": 0.2, + "tags": [ + "spiky" + ], + "motif": "armor", + "palette": "accent", + "z": 35, + "deny_bodies": [ + "pl_bee", + "pl_beetle", + "pl_bunny", + "pl_hawk", + "pl_owl", + "pl_mochi", + "pl_pebble", + "pl_seal" + ] + }, + { + "slot": "tail", + "name": "pl_tail_club", + "edit": "add a thick teal tail ending in a big round gold club, extending out on the right side", + "seed": 1, + "types": { + "rock": 5, + "ground": 4, + "fighting": 1.5 + }, + "other": 0.05, + "tags": [ + "tailed" + ], + "motif": "armor", + "palette": "type" + }, + { + "slot": "head_top", + "name": "pl_horn_single", + "edit": "add one gold horn pointing up from its forehead", + "seed": 1, + "types": { + "normal": 2, + "fighting": 3, + "ground": 3, + "rock": 2 + }, + "other": 0.3, + "requires": [ + "mammal_head", + "reptile_head", + "rock_head", + "insect_head", + "integrated_head", + "ghost_head" + ], + "tags": [ + "horned" + ], + "motif": "armor", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_dino_crystals_back", + "edit": "add a small cluster of gold crystal shards growing out of its back behind its shoulders", + "seed": 1, + "types": { + "rock": 5, + "psychic": 2.5, + "ground": 2, + "ice": 1 + }, + "other": 0.1, + "tags": [ + "crystal" + ], + "motif": "crystal", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_drake.json b/pixellab_library/pl_drake.json new file mode 100644 index 0000000..51e9241 --- /dev/null +++ b/pixellab_library/pl_drake.json @@ -0,0 +1,104 @@ +{ + "name": "pl_drake", + "plan": "quadruped", + "head": [ + "reptile_head" + ], + "types": { + "dragon": 2, + "fire": 2, + "rock": 1.5 + }, + "desc": "Sturdy baby dragon on four legs with brow ridges and crimson spine diamonds", + "prompt": "sturdy baby dragon standing on four thick legs, medium-length rounded reptile snout, small bony brow ridges over narrow eyes, thick neck, a row of crimson diamond markings along its spine, crimson armored belly plates, stubby claws, no wings, no horns, no tail", + "size": 44, + "seed": 461, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_horns_dragon", + "edit": "add a pair of small swept-back crimson dragon horns on top of its head", + "seed": 1, + "types": { + "dragon": 6, + "fire": 2, + "rock": 1 + }, + "other": 0.15, + "tags": [ + "horned" + ], + "motif": "dragon", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_wings_dragon", + "edit": "add a pair of small crimson membrane dragon wings spread out to both sides from its back", + "seed": 2, + "types": { + "dragon": 6, + "fire": 3, + "flying": 2 + }, + "other": 0.1, + "tags": [ + "winged" + ], + "motif": "dragon", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_spade", + "edit": "add a long teal tail ending in a crimson spade-shaped tip, curling up on the right side", + "seed": 1, + "types": { + "dragon": 5, + "poison": 2, + "ghost": 2 + }, + "other": 0.2, + "tags": [ + "tailed" + ], + "motif": "dragon", + "palette": "main" + }, + { + "slot": "back", + "name": "pl_mane_flame", + "edit": "add a ridge of orange and yellow flames running along its back", + "seed": 1, + "types": { + "fire": 8 + }, + "other": 0, + "tags": [ + "fiery" + ], + "motif": "fire", + "palette": "type", + "fixed": "fire" + }, + { + "slot": "back", + "name": "pl_drake_crystals", + "edit": "add a cluster of three pointed gold crystals growing up out of its back", + "seed": 2, + "types": { + "rock": 5, + "psychic": 3, + "ice": 1 + }, + "other": 0.15, + "tags": [ + "crystal", + "spiky" + ], + "motif": "crystal", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_duck.json b/pixellab_library/pl_duck.json new file mode 100644 index 0000000..9224967 --- /dev/null +++ b/pixellab_library/pl_duck.json @@ -0,0 +1,83 @@ +{ + "name": "pl_duck", + "plan": "avian", + "head": [ + "beak_head" + ], + "types": { + "water": 2, + "flying": 2, + "normal": 1.5 + }, + "desc": "Round duckling waterbird with a wide spoon-shaped crimson bill, crimson neck ring and big webbed feet", + "prompt": "plump round duckling waterbird standing on two short legs with oversized flat crimson webbed feet, egg-shaped body with a short thick neck, very wide flat spoon-shaped crimson bill that flares out at the tip, small calm half-lidded eyes, a thin crimson ring around its neck, tiny stub wings folded at its sides, no crest, no tail", + "size": 44, + "seed": 711, + "direction": "south-west", + "anchors": { + "back": [ + 34, + 34 + ] + }, + "parts": [ + { + "slot": "head_top", + "name": "pl_plume_feather", + "edit": "add a single long curved crimson plume feather sticking up from the top of its head and curving back", + "seed": 1, + "types": { + "flying": 5, + "normal": 2, + "psychic": 1 + }, + "other": 0.3, + "tags": [ + "feathered" + ], + "motif": "feather", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_streamers", + "edit": "add two long wavy gold streamer tail feathers growing from its rear end at the lower right of its body, trailing out to the right side", + "seed": 2, + "types": { + "flying": 6, + "psychic": 2, + "dragon": 1 + }, + "other": 0.2, + "tags": [ + "tailed", + "feathered" + ], + "motif": "feather", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_cloud_puffs", + "edit": "add a big cluster of puffy pale teal clouds behind its back, billowing up above its shoulders and sticking out on both sides of its body", + "seed": 3, + "types": { + "flying": 5, + "ice": 2, + "psychic": 1 + }, + "other": 0.2, + "tags": [ + "fluffy" + ], + "motif": "sky", + "palette": "main", + "box": [ + 41, + 0, + 63, + 63 + ] + } + ] +} diff --git a/pixellab_library/pl_eel.json b/pixellab_library/pl_eel.json new file mode 100644 index 0000000..4ce5b6c --- /dev/null +++ b/pixellab_library/pl_eel.json @@ -0,0 +1,81 @@ +{ + "name": "pl_eel", + "plan": "serpentine", + "head": [ + "reptile_head" + ], + "types": { + "water": 3, + "electric": 2, + "dragon": 2 + }, + "desc": "Rising S-curved sea serpent with a broad flat head and whisker barbels", + "prompt": "chibi eel creature standing upright like a question mark, long smooth tubular body curving down into a small coiled tail at the bottom, rounded head with a short snout and a small closed smiling mouth, two thin whisker barbels hanging from its chin, pale cream belly, small crimson spots along its sides, smooth round head with no crest, no fins and no horns, no ground", + "size": 44, + "seed": 74, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_crest_electric", + "edit": "add a crest of three bright yellow zigzag lightning bolts standing up on top of its head", + "seed": 2, + "types": { + "electric": 7, + "water": 1 + }, + "other": 0, + "motif": "electric", + "palette": "type", + "fixed": "electric", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "back", + "name": "pl_sail_fin", + "edit": "add a tall crimson sailfish fin ribbed with thin spines running down its back", + "seed": 2, + "types": { + "water": 3, + "dragon": 4, + "fire": 2, + "electric": 1.5 + }, + "other": 0.1, + "tags": [ + "finned" + ], + "motif": "dragon", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_bluefire_eel", + "edit": "add a thin teal tail curling up on the right side with its tip wreathed in bright blue flames", + "seed": 1, + "types": { + "water": 2, + "ghost": 3, + "dragon": 2 + }, + "other": 0, + "tags": [ + "tailed" + ], + "motif": "fire", + "palette": "type", + "fixed": "bluefire", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + } + ] +} diff --git a/pixellab_library/pl_fawn.json b/pixellab_library/pl_fawn.json new file mode 100644 index 0000000..76c718f --- /dev/null +++ b/pixellab_library/pl_fawn.json @@ -0,0 +1,85 @@ +{ + "name": "pl_fawn", + "plan": "quadruped", + "head": [ + "mammal_head" + ], + "types": { + "grass": 2, + "psychic": 2, + "normal": 1.5 + }, + "desc": "Dainty fawn with long slender legs, droopy ears and crimson spot rows", + "prompt": "dainty deer fawn creature standing on four very long slender legs with small crimson hooves, narrow tapered muzzle, long droopy ears, two rows of small crimson spots along its back, tiny body, no antlers, no tail", + "size": 44, + "seed": 521, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_antlers_leafy", + "edit": "add a pair of small gold antlers sprouting small leaves on top of its head", + "seed": 1, + "types": { + "grass": 6, + "bug": 2, + "normal": 1 + }, + "other": 0.1, + "tags": [ + "horned", + "leafy" + ], + "motif": "plant", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_leaf_cape", + "edit": "add a cape of large overlapping gold leaves draped over its back", + "seed": 2, + "types": { + "grass": 6, + "bug": 2 + }, + "other": 0.05, + "tags": [ + "leafy" + ], + "motif": "plant", + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_leaf", + "edit": "add a tail ending in a big gold leaf, curling up on the right side", + "seed": 1, + "types": { + "grass": 7, + "bug": 1.5 + }, + "other": 0.05, + "tags": [ + "tailed", + "leafy" + ], + "motif": "plant", + "palette": "type" + }, + { + "slot": "head_top", + "name": "pl_fawn_halo", + "edit": "add a small glowing gold halo ring floating above its head", + "seed": 1, + "types": { + "psychic": 6, + "ghost": 2, + "normal": 1 + }, + "other": 0.2, + "tags": [], + "palette": "type", + "skip": true + } + ] +} diff --git a/pixellab_library/pl_fox.json b/pixellab_library/pl_fox.json new file mode 100644 index 0000000..0a832e2 --- /dev/null +++ b/pixellab_library/pl_fox.json @@ -0,0 +1,30 @@ +{ + "name": "pl_fox", + "plan": "quadruped", + "head": ["mammal_head"], + "types": {"fire": 2, "normal": 2, "electric": 1.5}, + "excludes": ["eared"], + "desc": "Lean fox-like creature with huge triangular ears and a forehead diamond", + "prompt": "lean fox-like creature standing alert on four thin legs, long narrow snout, oversized triangular ears with crimson insides, small diamond mark on its forehead, slim body, no tail", + "size": 44, + "seed": 202, + "direction": "south-west", + "parts": [ + {"slot": "tail", "name": "pl_tail_flame", + "edit": "add a long fluffy tail ending in a big orange and yellow flame, curling up on the right side", + "seed": 1, "types": {"fire": 6}, "other": 0, "tags": ["tailed", "fiery"], "motif": "fire", + "palette": "type", "fixed": "fire"}, + {"slot": "head_top", "name": "pl_crown_ice", + "edit": "add a crown of pale icy blue ice crystals on top of its head", + "seed": 1, "types": {"ice": 6}, "other": 0, "tags": ["crystal"], "motif": "crystal", + "palette": "type", "fixed": "ice", "fixed_from": ["main", "accent", "type", "white"]}, + {"slot": "back", "name": "pl_wings_feather", + "edit": "add a pair of gold feathered wings spread from its back", + "seed": 1, "types": {"flying": 6, "normal": 1, "psychic": 1, "fire": 1}, "other": 0.3, + "tags": ["winged", "feathered"], "motif": "feather", "palette": "type"}, + {"slot": "tail", "name": "pl_tail_bluefire", + "edit": "add a long fluffy tail ending in a big flame of bright deep blue fire with a violet-blue core, curling up on the right side", + "seed": 8, "types": {"fire": 3, "ghost": 4, "dragon": 1}, "other": 0, "tags": ["tailed", "fiery"], "motif": "fire", + "palette": "type", "fixed": "bluefire"} + ] +} diff --git a/pixellab_library/pl_grub.json b/pixellab_library/pl_grub.json new file mode 100644 index 0000000..727294d --- /dev/null +++ b/pixellab_library/pl_grub.json @@ -0,0 +1,84 @@ +{ + "name": "pl_grub", + "plan": "insectoid", + "head": [ + "insect_head" + ], + "types": { + "bug": 2, + "grass": 1.5, + "poison": 1.5 + }, + "other": 1, + "desc": "Plump stacked-segment larva with a wide flat face and stubby nub feet", + "prompt": "plump chubby larva grub creature sitting upright facing the viewer, body made of four fat stacked teal rings that shrink toward the top, wide flat round face with a broad smiling mouth and two small eyes set far apart, crimson freckle dots along each ring, many tiny stubby nub feet along its belly, no antennae, no horn, no tail", + "size": 44, + "seed": 47, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_antennae", + "edit": "add two teal antennae with round crimson bulb tips on top of its head", + "seed": 1, + "types": { + "bug": 5, + "electric": 2, + "psychic": 2 + }, + "other": 0.3, + "tags": [], + "motif": "bug", + "palette": "main" + }, + { + "slot": "back", + "name": "pl_mushrooms_back", + "edit": "add a small cluster of crimson-capped mushrooms with white spots growing on its back", + "seed": 1, + "types": { + "poison": 4, + "grass": 3, + "bug": 3, + "ghost": 1 + }, + "other": 0.05, + "tags": [], + "motif": "plant", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_stinger", + "edit": "add a thick curved crimson stinger tail with a big sharp pointed barb at its tip, curving up on the right side", + "seed": 3, + "types": { + "bug": 5, + "poison": 5 + }, + "other": 0.05, + "tags": [ + "tailed" + ], + "motif": "bug", + "palette": "accent" + }, + { + "slot": "head_top", + "name": "pl_grub_flower", + "edit": "add one small gold flower with round petals blooming on top of its head", + "seed": 1, + "types": { + "grass": 5, + "bug": 2, + "psychic": 1 + }, + "other": 0.2, + "tags": [ + "leafy" + ], + "motif": "plant", + "palette": "type" + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_guppy.json b/pixellab_library/pl_guppy.json new file mode 100644 index 0000000..4db6e58 --- /dev/null +++ b/pixellab_library/pl_guppy.json @@ -0,0 +1,91 @@ +{ + "name": "pl_guppy", + "plan": "aquatic", + "head": [ + "integrated_head" + ], + "types": { + "water": 3, + "ice": 2, + "poison": 2 + }, + "desc": "Round bubbly fish creature hovering upright with tiny arm-like fins", + "prompt": "round bubble-shaped fish creature hovering upright, plump spherical body, short blunt snout with small pouty lips, two tiny paddle fins held out like little arms, pale cream belly, crimson polka-dot spots on its sides, little bubbles around it, no tail fin, no dorsal fin, no fins on its head", + "size": 40, + "seed": 31, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_fins_head", + "edit": "add small crimson fin frills on top of its head", + "seed": 1, + "types": { + "water": 5, + "ice": 2, + "dragon": 1.5 + }, + "other": 0.1, + "tags": [ + "finned" + ], + "motif": "water", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_fin_dorsal", + "edit": "add a crimson shark-style dorsal fin rising from its back", + "seed": 1, + "types": { + "water": 7, + "ice": 2, + "dragon": 1.5 + }, + "other": 0.05, + "tags": [ + "finned" + ], + "motif": "water", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_fish", + "edit": "add a crimson fish tail fin with two pointed lobes, attached to its body and sticking out on the right side", + "seed": 2, + "types": { + "water": 7, + "ice": 2, + "dragon": 1.5 + }, + "other": 0.05, + "plans": [ + "aquatic", + "serpentine", + "quadruped", + "biped" + ], + "tags": [ + "tailed", + "finned" + ], + "motif": "water", + "palette": "accent" + }, + { + "slot": "head_top", + "name": "pl_guppy_pearl_crown", + "edit": "add a small crown of three round gold pearls sitting on top of its head", + "seed": 4, + "types": { + "psychic": 3, + "water": 3, + "normal": 2 + }, + "other": 0.2, + "motif": "water", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_hawk.json b/pixellab_library/pl_hawk.json new file mode 100644 index 0000000..f75b6fd --- /dev/null +++ b/pixellab_library/pl_hawk.json @@ -0,0 +1,86 @@ +{ + "name": "pl_hawk", + "plan": "avian", + "head": [ + "beak_head" + ], + "types": { + "flying": 2, + "fighting": 2, + "fire": 1.5 + }, + "desc": "Proud young raptor with crimson war-paint eye stripes, V chest mark and crossed wing-arms", + "prompt": "proud young bird of prey standing upright with puffed out chest, sharp hooked beak, fierce narrow eyes with crimson war paint stripes under them, a crimson V-shaped marking on its chest, folded wings crossed in front of its chest like arms, strong thick legs with big talons, no crest, no tail", + "size": 44, + "seed": 521, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_crest_flame", + "edit": "add a crest of orange and yellow flames on top of its head", + "seed": 1, + "types": { + "fire": 8 + }, + "other": 0, + "tags": [ + "fiery" + ], + "motif": "fire", + "palette": "type", + "fixed": "fire" + }, + { + "slot": "back", + "name": "pl_wings_storm", + "edit": "add a pair of small wings shaped like jagged zigzag bright yellow lightning bolts, spread out from behind its shoulders", + "seed": 3, + "types": { + "electric": 8 + }, + "other": 0, + "tags": [ + "winged" + ], + "motif": "electric", + "palette": "type", + "fixed": "electric", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "tail", + "name": "pl_tail_storm", + "edit": "add tail feathers crackling with bright yellow lightning sticking out on the right side", + "seed": 1, + "types": { + "electric": 7 + }, + "other": 0, + "tags": [ + "tailed" + ], + "motif": "electric", + "palette": "type", + "fixed": "electric" + }, + { + "slot": "head_top", + "name": "pl_hawk_headband", + "edit": "add a thick gold cloth headband with a dark outline tied around its forehead, with two short knot ends fluttering out to the right", + "seed": 2, + "types": { + "fighting": 6, + "normal": 1.5 + }, + "other": 0.3, + "tags": [], + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_imp.json b/pixellab_library/pl_imp.json new file mode 100644 index 0000000..3e51a59 --- /dev/null +++ b/pixellab_library/pl_imp.json @@ -0,0 +1,93 @@ +{ + "name": "pl_imp", + "plan": "biped", + "head": [ + "mammal_head" + ], + "types": { + "electric": 2.5, + "normal": 2, + "psychic": 2 + }, + "desc": "Small hunched mischievous imp with a wide fanged grin, pointed chin and long thin arms", + "prompt": "small mischievous imp creature standing upright, slightly hunched, bright teal skin, completely bald egg-shaped head with smooth sides and no ears at all, sly narrow eyes, very wide toothy grin with two tiny fangs, pointed chin, long thin arms with three-fingered hands, skinny legs with big flat feet, crimson spade-shaped mark on its belly, no tail", + "size": 40, + "seed": 317, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_ears_bolt", + "edit": "add two big zigzag bright yellow lightning bolt shaped ears growing out of the top sides of its head", + "seed": 2, + "types": { + "electric": 8 + }, + "other": 0, + "requires": [ + "mammal_head", + "integrated_head" + ], + "tags": [ + "eared" + ], + "motif": "electric", + "palette": "type", + "fixed": "electric", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "tail", + "name": "pl_tail_lightning", + "edit": "add a zigzag bright yellow lightning bolt shaped tail sticking up on the right side", + "seed": 1, + "types": { + "electric": 8 + }, + "other": 0, + "tags": [ + "tailed" + ], + "motif": "electric", + "palette": "type", + "fixed": "electric", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "back", + "name": "pl_coils_electric", + "edit": "add two small gold coil prongs sticking up from behind its shoulders, crackling with bright yellow electric sparks", + "seed": 1, + "types": { + "electric": 7 + }, + "other": 0, + "motif": "electric", + "palette": "type", + "fixed": "electric" + }, + { + "slot": "head_top", + "name": "pl_imp_halo", + "edit": "add a thin glowing gold halo ring floating just above its head", + "seed": 1, + "types": { + "psychic": 6, + "normal": 1, + "ghost": 1 + }, + "other": 0.1, + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_lizard.json b/pixellab_library/pl_lizard.json new file mode 100644 index 0000000..2359ec7 --- /dev/null +++ b/pixellab_library/pl_lizard.json @@ -0,0 +1,32 @@ +{ + "name": "pl_lizard", + "plan": "quadruped", + "head": ["reptile_head"], + "types": {"poison": 2, "electric": 1.5, "grass": 1.5}, + "other": 1, + "desc": "Slender quick gecko with huge bulging eyes, splayed sticky toe pads and crimson throat dots", + "prompt": "small slender tailless gecko creature crouching on four splayed legs, seen from the front facing the viewer, rounded head with huge bulging round eyes and a wide smiling mouth, round sticky toe pads on its feet, a row of small crimson dots along its sides, pale belly, bright teal skin, its rear is hidden behind its body, no tail at all", + "size": 44, + "seed": 734, + "direction": "south", + "anchors": {"back": [32, 32]}, + "parts": [ + {"slot": "head_top", "name": "pl_snowcap", + "edit": "add a small cap of pale icy blue snow and ice crystals sitting on top of its head", + "seed": 1, "types": {"ice": 7}, "other": 0, + "tags": ["crystal"], "motif": "crystal", "palette": "type", + "fixed": "ice", "fixed_from": ["main", "accent", "type", "white"]}, + {"slot": "head_top", "name": "pl_frill_neck", + "edit": "add a crimson frilled lizard neck frill, one round fan of crimson skin with dark ribs spread open behind its head like a small umbrella, compact, only a bit wider than its head", + "seed": 3, "types": {"poison": 4, "dragon": 3, "ground": 2}, "other": 0.15, + "tags": ["finned"], "palette": "accent", "z": 25, "skip": true}, + {"slot": "back", "name": "pl_spines_toxic", + "edit": "add a short row of five sharp crimson spines sticking up from behind its head, each spine tipped with a gold venom drop, nothing else", + "seed": 2, "types": {"poison": 7}, "other": 0.05, + "tags": ["spiky"], "palette": "accent", "box": [20, 0, 41, 40]}, + {"slot": "tail", "name": "pl_tail_lightning_lizard", + "edit": "add a long thin teal lizard tail starting at its hip and curving out on the right side, crackling with bright yellow lightning bolts along it", + "seed": 1, "types": {"electric": 7}, "other": 0, + "tags": ["tailed"], "motif": "electric", "palette": "type", "fixed": "electric"} + ] +} diff --git a/pixellab_library/pl_mochi.json b/pixellab_library/pl_mochi.json new file mode 100644 index 0000000..6828c8f --- /dev/null +++ b/pixellab_library/pl_mochi.json @@ -0,0 +1,83 @@ +{ + "name": "pl_mochi", + "plan": "blob", + "head": [ + "integrated_head" + ], + "types": { + "normal": 2, + "grass": 2, + "psychic": 1.5 + }, + "desc": "Soft squashed dumpling creature with tiny stub feet and a pinched top", + "prompt": "soft squashed dumpling creature shaped like a wide flattened rice cake, a small pinched twist of dough on its top center, sleepy half-closed crescent eyes, tiny crimson blush marks, small smiling mouth, two tiny stub feet peeking out at the bottom, no arms", + "size": 44, + "seed": 401, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_sprout_leaf", + "edit": "add a small gold leaf sprout with two leaves growing from the top of its head", + "seed": 1, + "types": { + "grass": 6, + "bug": 1 + }, + "other": 0.1, + "tags": [ + "leafy" + ], + "motif": "plant", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_flower_back", + "edit": "add a big crimson flower with a gold center blooming behind it", + "seed": 1, + "types": { + "grass": 5, + "psychic": 2, + "poison": 1.5 + }, + "other": 0.05, + "tags": [ + "floral" + ], + "motif": "plant", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_curly", + "edit": "add a short curly teal tail curling up on the right side", + "seed": 1, + "types": { + "normal": 3, + "psychic": 3, + "grass": 1.5 + }, + "other": 0.3, + "tags": [ + "tailed" + ], + "palette": "main" + }, + { + "slot": "head_top", + "name": "pl_mochi_halo", + "edit": "add a thin glowing gold halo ring floating above its head", + "seed": 1, + "types": { + "psychic": 5, + "normal": 1.5, + "ghost": 1 + }, + "other": 0.2, + "tags": [], + "palette": "type", + "skip": true + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_monk.json b/pixellab_library/pl_monk.json new file mode 100644 index 0000000..c06d397 --- /dev/null +++ b/pixellab_library/pl_monk.json @@ -0,0 +1,85 @@ +{ + "name": "pl_monk", + "plan": "biped", + "head": [ + "mammal_head" + ], + "types": { + "fighting": 3, + "normal": 2, + "psychic": 1.5 + }, + "other": 1, + "excludes": [ + "eared" + ], + "desc": "Small calm bald monk creature with a blunt muzzle, crimson brow marks, hand wraps and sash", + "prompt": "small upright martial artist monk creature standing calmly with palms pressed together in front of its chest, big round head with a short blunt animal muzzle and a dark button nose, calm determined half-closed eyes under thick crimson brow marks, small round animal ears on the sides of its head, slim body with a crimson sash tied around its waist, forearms and hands wrapped in crimson cloth hand wraps, short sturdy legs with bare three-toed feet, bald smooth head, no hair, no tail, nothing behind it", + "size": 44, + "seed": 613, + "direction": "south-west", + "parts": [ + { + "slot": "back", + "name": "pl_scarf_long", + "edit": "add a long crimson scarf wrapped around its neck, with its long end trailing out behind it to the right", + "seed": 1, + "types": { + "fighting": 5, + "normal": 3, + "flying": 1 + }, + "other": 0.4, + "tags": [], + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_cape_short", + "edit": "add a short gold cape draped from its shoulders behind its back", + "seed": 1, + "types": { + "fighting": 4, + "psychic": 2, + "normal": 2 + }, + "other": 0.2, + "tags": [], + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_wrapped", + "edit": "add a long teal tail wrapped in crimson bandage strips, starting at its lower back and curling up on the right side", + "seed": 1, + "types": { + "fighting": 6, + "normal": 1 + }, + "other": 0.1, + "tags": [ + "tailed" + ], + "palette": "main" + }, + { + "slot": "head_top", + "name": "pl_topknot", + "edit": "add a small teal topknot of hair on top of its head, tied with a crimson band", + "seed": 1, + "types": { + "fighting": 4, + "normal": 3, + "psychic": 1 + }, + "other": 0.3, + "requires": [ + "mammal_head", + "reptile_head", + "integrated_head" + ], + "tags": [], + "palette": "main" + } + ] +} diff --git a/pixellab_library/pl_owl.json b/pixellab_library/pl_owl.json new file mode 100644 index 0000000..e3f26c5 --- /dev/null +++ b/pixellab_library/pl_owl.json @@ -0,0 +1,86 @@ +{ + "name": "pl_owl", + "plan": "avian", + "head": [ + "beak_head" + ], + "types": { + "psychic": 2, + "ghost": 2, + "flying": 1.5 + }, + "excludes": [ + "eared" + ], + "desc": "Pear-shaped owl with huge crimson-ringed eyes, spiral ear tufts and crescent chest marks", + "prompt": "pear-shaped owl-like bird sitting upright, enormous round staring eyes ringed in crimson, two long ear tufts that curl into spirals at the tips, tiny hooked beak, three small crimson crescent moon marks on its chest, folded wings wrapped around its sides like a cloak, short stubby talons, no tail", + "size": 44, + "seed": 411, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_crown_bluefire", + "edit": "add a small cluster of bright blue flames burning on top of its head", + "seed": 2, + "types": { + "ghost": 4, + "psychic": 3, + "fire": 2 + }, + "other": 0, + "tags": [ + "fiery" + ], + "motif": "spooky", + "palette": "type", + "fixed": "bluefire" + }, + { + "slot": "back", + "name": "pl_shroud_ghostfire", + "edit": "add glowing purple ghostly flames rising from behind its shoulders", + "seed": 1, + "types": { + "ghost": 7, + "psychic": 1 + }, + "other": 0, + "tags": [], + "motif": "spooky", + "palette": "type", + "fixed": "ghostfire" + }, + { + "slot": "tail", + "name": "pl_tail_ghostfire", + "edit": "add a wispy tail of glowing purple ghostly flame curling out on the right side", + "seed": 1, + "types": { + "ghost": 7, + "psychic": 1.5 + }, + "other": 0, + "tags": [ + "tailed" + ], + "motif": "spooky", + "palette": "type", + "fixed": "ghostfire" + }, + { + "slot": "head_top", + "name": "pl_owl_halo", + "edit": "add a small thin gold halo ring floating high above its head, not touching the head", + "seed": 2, + "types": { + "psychic": 6, + "ghost": 2, + "normal": 1 + }, + "other": 0.2, + "tags": [], + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_pebble.json b/pixellab_library/pl_pebble.json new file mode 100644 index 0000000..08af6cf --- /dev/null +++ b/pixellab_library/pl_pebble.json @@ -0,0 +1,57 @@ +{ + "name": "pl_pebble", + "plan": "blob", + "head": [ + "integrated_head" + ], + "types": { + "rock": 2, + "ground": 2, + "fighting": 1.5 + }, + "slots": [ + "head_top", + "back" + ], + "desc": "Round chunky boulder creature with a stern unibrow face and stubby feet", + "prompt": "round chunky boulder creature, its whole body is one bright saturated teal stone with a few flat chipped facets and thin dark teal cracks, stern determined face with one thick crimson unibrow ridge and a small frown, two short stubby teal feet at the bottom, no arms", + "size": 44, + "seed": 502, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_crystals_head", + "edit": "add a small cluster of gold crystal spikes growing from the top of its head", + "seed": 1, + "types": { + "rock": 5, + "psychic": 3, + "ground": 1 + }, + "other": 0.05, + "tags": [ + "crystal" + ], + "motif": "crystal", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_crystal_cluster", + "edit": "add two clusters of gold crystals jutting out diagonally from behind its back on the left and right sides", + "seed": 1, + "types": { + "rock": 5, + "psychic": 3, + "ice": 1 + }, + "other": 0.05, + "tags": [ + "crystal" + ], + "motif": "crystal", + "palette": "type" + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_seal.json b/pixellab_library/pl_seal.json new file mode 100644 index 0000000..576d834 --- /dev/null +++ b/pixellab_library/pl_seal.json @@ -0,0 +1,105 @@ +{ + "name": "pl_seal", + "plan": "aquatic", + "head": [ + "mammal_head" + ], + "types": { + "ice": 3, + "water": 3, + "normal": 2 + }, + "desc": "Chubby otter-like seal pup sitting upright on broad flippers", + "prompt": "chubby otter-like seal pup sitting upright, pear-shaped plump body, broad flat front flippers resting on its belly, wide flat muzzle with whisker dots and a tiny dark nose, crimson stripe markings across its shoulders, pale belly patch, rear flippers tucked under, no ears, no tail", + "size": 40, + "seed": 51, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_horn_ice", + "edit": "add a single pale icy blue ice crystal horn on top of its head", + "seed": 1, + "types": { + "ice": 8 + }, + "other": 0, + "tags": [ + "horned", + "crystal" + ], + "motif": "crystal", + "palette": "type", + "fixed": "ice", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "back", + "name": "pl_icicles_back", + "edit": "add a small fan of pale icy blue icicles sticking out from its back on the right side, behind its shoulders", + "seed": 3, + "types": { + "ice": 8 + }, + "other": 0, + "tags": [ + "spiky", + "crystal" + ], + "motif": "crystal", + "palette": "type", + "fixed": "ice", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "tail", + "name": "pl_tail_ice_shard", + "edit": "add a short teal tail ending in a pale icy blue ice shard, sticking out on the right side", + "seed": 1, + "types": { + "ice": 8 + }, + "other": 0, + "tags": [ + "tailed", + "crystal" + ], + "motif": "crystal", + "palette": "type", + "fixed": "ice", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "back", + "name": "pl_seal_shell", + "edit": "add one small gold spiral seashell stuck to the middle of its back on the right side", + "seed": 2, + "types": { + "water": 4, + "rock": 2, + "normal": 1 + }, + "other": 0.1, + "tags": [ + "shelled" + ], + "motif": "water", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_slime.json b/pixellab_library/pl_slime.json new file mode 100644 index 0000000..e9253ee --- /dev/null +++ b/pixellab_library/pl_slime.json @@ -0,0 +1,67 @@ +{ + "name": "pl_slime", + "plan": "blob", + "head": [ + "integrated_head" + ], + "types": { + "poison": 2, + "water": 2, + "ghost": 1.5 + }, + "slots": [ + "head_top", + "back" + ], + "desc": "Drippy teardrop goo blob with a lopsided grin and goo drips", + "prompt": "small gooey slime creature shaped like a squat teardrop with a pointed tip leaning to one side, thick goo drips running down its sides and pooling at its base, one eye winking and a lopsided cheeky grin showing a single crimson tongue, crimson freckle spots on its cheeks, no arms, no legs", + "size": 44, + "seed": 301, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_mushroom_cap", + "edit": "add a small crimson mushroom cap with pale cream spots sitting on top of its head", + "seed": 1, + "types": { + "poison": 4, + "grass": 3, + "bug": 2 + }, + "other": 0.1, + "tags": [], + "motif": "plant", + "palette": "accent" + }, + { + "slot": "back", + "name": "pl_bubbles_toxic", + "edit": "add a cluster of round gold bubbles of different sizes rising up from behind its body on both sides", + "seed": 2, + "types": { + "poison": 6, + "water": 2 + }, + "other": 0.05, + "tags": [], + "palette": "type" + }, + { + "slot": "back", + "name": "pl_slime_spikes_poison", + "edit": "add a fan of five large sharp gold spikes sticking up from behind its back", + "seed": 2, + "types": { + "poison": 4, + "ground": 2, + "rock": 1 + }, + "other": 0.2, + "tags": [ + "spiky" + ], + "palette": "type" + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_snake.json b/pixellab_library/pl_snake.json new file mode 100644 index 0000000..d7283be --- /dev/null +++ b/pixellab_library/pl_snake.json @@ -0,0 +1,70 @@ +{ + "name": "pl_snake", + "plan": "serpentine", + "head": [ + "reptile_head" + ], + "types": { + "poison": 3, + "ground": 2, + "normal": 2 + }, + "desc": "Thick coiled snake with a raised wedge head and crimson diamond pattern", + "prompt": "thick snake creature coiled in a tall spiral pile with its head raised high, broad wedge-shaped head with a blunt square snout and heavy brow ridges, crimson diamond pattern along its coils, pale banded underbelly, thin tail tip resting on the right side, no hood, no rattle", + "size": 44, + "seed": 61, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_hood_cobra", + "edit": "add a small crimson cobra hood flaring out just behind its neck", + "seed": 2, + "types": { + "poison": 6, + "dragon": 2, + "ground": 1 + }, + "other": 0.05, + "requires": ["reptile_head"], + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_rattle", + "edit": "turn the tip of its curled tail on the right into a gold rattlesnake rattle made of three rounded segments", + "seed": 4, + "types": { + "poison": 4, + "ground": 4, + "normal": 1 + }, + "other": 0.2, + "plans": [ + "serpentine", + "quadruped", + "biped" + ], + "tags": [ + "tailed" + ], + "palette": "type" + }, + { + "slot": "back", + "name": "pl_spikes_frill", + "edit": "add a row of large crimson spikes sticking far out from the back of its neck on the right side", + "seed": 3, + "types": { + "poison": 3, + "dragon": 3, + "ground": 2 + }, + "other": 0.2, + "tags": [ + "spiky" + ], + "palette": "accent" + } + ] +} diff --git a/pixellab_library/pl_sprite.json b/pixellab_library/pl_sprite.json new file mode 100644 index 0000000..5eeab14 --- /dev/null +++ b/pixellab_library/pl_sprite.json @@ -0,0 +1,111 @@ +{ + "name": "pl_sprite", + "plan": "biped", + "head": [ + "mammal_head" + ], + "types": { + "psychic": 2, + "fire": 1.5, + "ice": 1.5 + }, + "desc": "Tiny hovering fairy-imp with an oversized round head, dangling legs and a crimson star on its chest", + "prompt": "tiny fairy imp creature hovering in the air with its short legs dangling, oversized perfectly round smooth bald head with no ears at all, small round body, huge sparkling eyes, small mischievous smile with one tiny fang, stubby little arms with mitten hands held out, a small crimson star marking on its chest, crimson pointed slippers, no wings, no horns, no tail", + "size": 40, + "seed": 733, + "direction": "south-west", + "parts": [ + { + "slot": "head_top", + "name": "pl_ears_flame", + "edit": "add two pointed ears made of orange and yellow flames on the top sides of its head", + "seed": 1, + "types": { + "fire": 8 + }, + "other": 0, + "requires": [ + "mammal_head", + "integrated_head" + ], + "tags": [ + "eared", + "fiery" + ], + "motif": "fire", + "palette": "type", + "fixed": "fire", + "fixed_from": [ + "accent", + "type" + ] + }, + { + "slot": "head_top", + "name": "pl_horns_ember", + "edit": "add two small stubby teal horns on top of its head with small orange and yellow flames burning at their tips", + "seed": 1, + "types": { + "fire": 7, + "dragon": 1 + }, + "other": 0, + "requires": [ + "mammal_head", + "reptile_head", + "rock_head", + "insect_head", + "integrated_head", + "ghost_head" + ], + "tags": [ + "horned", + "fiery" + ], + "motif": "fire", + "palette": "type", + "fixed": "fire" + }, + { + "slot": "back", + "name": "pl_cape_frost", + "edit": "add a short jagged cape of pale icy blue ice crystals hanging from its shoulders and spreading out behind its body on both sides", + "seed": 2, + "types": { + "ice": 8 + }, + "other": 0, + "tags": [ + "crystal" + ], + "motif": "crystal", + "palette": "type", + "fixed": "ice", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + }, + { + "slot": "tail", + "name": "pl_tail_bluefire_wisp", + "edit": "add a short wispy tail of bright deep blue fire with a violet-blue core, starting at its lower back and flicking up on the right side", + "seed": 2, + "types": { + "ghost": 3, + "fire": 3, + "psychic": 2 + }, + "other": 0, + "tags": [ + "tailed", + "fiery" + ], + "motif": "fire", + "palette": "type", + "fixed": "bluefire" + } + ] +} diff --git a/pixellab_library/pl_wisp.json b/pixellab_library/pl_wisp.json new file mode 100644 index 0000000..014d7cb --- /dev/null +++ b/pixellab_library/pl_wisp.json @@ -0,0 +1,93 @@ +{ + "name": "pl_wisp", + "plan": "blob", + "head": [ + "ghost_head", + "integrated_head" + ], + "types": { + "ghost": 2.5, + "psychic": 2 + }, + "desc": "Floating hooded ghost blob with a wavy trailing bottom and a crimson collar", + "prompt": "small floating ghost creature like a droopy hooded sheet, rounded top, body tapering into a wavy ragged trailing bottom that does not touch the ground, two large hollow oval eyes, small open o-shaped mouth, a crimson scarf collar tied around its neck, two tiny stubby nub arms", + "size": 44, + "seed": 601, + "direction": "south", + "parts": [ + { + "slot": "head_top", + "name": "pl_wisp_ghostfire", + "edit": "add a small floating wisp of glowing purple ghostly flame hovering on top of its head", + "seed": 1, + "types": { + "ghost": 7, + "psychic": 1 + }, + "other": 0, + "tags": [], + "motif": "spooky", + "palette": "type", + "fixed": "ghostfire" + }, + { + "slot": "back", + "name": "pl_wings_bat", + "edit": "add a pair of small compact crimson bat wings spread from its back", + "seed": 1, + "types": { + "ghost": 4, + "poison": 4, + "dragon": 2, + "flying": 2 + }, + "other": 0.1, + "tags": [ + "winged" + ], + "motif": "spooky", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_wisp_ghostfire", + "edit": "add a trailing wisp of glowing purple ghostly flames on the right side", + "seed": 1, + "types": { + "ghost": 7, + "psychic": 1.5 + }, + "other": 0, + "tags": [ + "tailed" + ], + "motif": "spooky", + "palette": "type", + "fixed": "ghostfire" + }, + { + "slot": "back", + "name": "pl_wisp_orbs_bluefire", + "edit": "add two small floating orbs of bright blue flame hovering on both sides of its body", + "seed": 1, + "types": { + "ghost": 4, + "fire": 4, + "psychic": 2 + }, + "other": 0, + "tags": [ + "fiery" + ], + "motif": "spooky", + "palette": "type", + "fixed": "bluefire", + "fixed_from": [ + "main", + "accent", + "type", + "white" + ] + } + ] +} \ No newline at end of file diff --git a/pixellab_library/pl_worm.json b/pixellab_library/pl_worm.json new file mode 100644 index 0000000..9802aab --- /dev/null +++ b/pixellab_library/pl_worm.json @@ -0,0 +1,91 @@ +{ + "name": "pl_worm", + "plan": "serpentine", + "head": [ + "integrated_head" + ], + "types": { + "ground": 2, + "grass": 1.5, + "bug": 1.5 + }, + "other": 1, + "desc": "Chubby burrowing worm poking upright with a blunt snout, crimson ring bands and stubby digging claws", + "prompt": "chubby burrowing worm creature poking upright out of the ground, thick soft segmented teal body that is widest at the bottom, blunt rounded snout with a tiny button nose, small sleepy half-closed eyes, thick crimson ring bands around its body, two small stubby shovel-like digging claws on its chest, its lower body bending out to the right in a short round stub, no legs, no antennae, no tail, no dirt", + "size": 44, + "seed": 418, + "direction": "south", + "anchors": { + "head_top": [ + 29, + 24 + ] + }, + "parts": [ + { + "slot": "head_top", + "name": "pl_flower_bud", + "edit": "add a small closed crimson flower bud on a short teal stem with one tiny teal leaf, growing from the top of its head", + "seed": 1, + "types": { + "grass": 6, + "poison": 1, + "psychic": 1 + }, + "other": 0.1, + "tags": [ + "leafy", + "floral" + ], + "motif": "plant", + "palette": "accent" + }, + { + "slot": "tail", + "name": "pl_tail_splash", + "edit": "add a teal tail coming out of its back end on the right side, ending in a curling gold water splash wave", + "seed": 1, + "types": { + "water": 7, + "ice": 1 + }, + "other": 0.05, + "tags": [ + "tailed" + ], + "motif": "water", + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_vine", + "edit": "add a short thick gold leafy vine with three broad leaves, sprouting from the round stub at its lower right and trailing out to the right side", + "seed": 2, + "types": { + "grass": 7, + "bug": 2 + }, + "other": 0.05, + "tags": [ + "tailed", + "leafy" + ], + "motif": "plant", + "palette": "type" + }, + { + "slot": "back", + "name": "pl_rocks_dirt", + "edit": "add a lumpy clump of round gold dirt clods and small pebbles stuck on its back, peeking out over its right shoulder", + "seed": 3, + "types": { + "ground": 6, + "rock": 2 + }, + "other": 0.1, + "tags": [], + "motif": "armor", + "palette": "type" + } + ] +} diff --git a/pixellab_library/pl_wyrm.json b/pixellab_library/pl_wyrm.json new file mode 100644 index 0000000..6f8489e --- /dev/null +++ b/pixellab_library/pl_wyrm.json @@ -0,0 +1,74 @@ +{ + "name": "pl_wyrm", + "plan": "serpentine", + "head": [ + "reptile_head" + ], + "types": { + "dragon": 2, + "water": 2, + "psychic": 1.5 + }, + "other": 1, + "desc": "Elegant young serpentine dragon in an S-curve with whisker barbels and crimson belly scutes", + "prompt": "elegant young eastern-style serpent dragon rising in a graceful S-curve, slender long teal body, long narrow snout with two thin drooping crimson whisker barbels, almond-shaped narrow eyes, small crimson scale ridge dots along its spine, pale segmented belly scales, two tiny clawed forelegs near its chest, body ending in a short blunt tail stub on the right side, no horns, no wings, no fins", + "size": 44, + "seed": 731, + "direction": "south-west", + "anchors": { + "back": [ + 34, + 30 + ] + }, + "parts": [ + { + "slot": "head_top", + "name": "pl_horns_antler_dragon", + "edit": "add a pair of short thick gold dragon antlers, each with two branching prongs, growing from the top of its head", + "seed": 2, + "types": { + "dragon": 6, + "psychic": 1, + "water": 1 + }, + "other": 0.1, + "tags": [ + "horned" + ], + "motif": "dragon", + "palette": "type" + }, + { + "slot": "tail", + "name": "pl_tail_dragon_fin", + "edit": "extend its body into a long teal tail curling up on the right side, ending in a fan-shaped crimson fin", + "seed": 1, + "types": { + "dragon": 5, + "water": 3 + }, + "other": 0.15, + "tags": [ + "tailed", + "finned" + ], + "motif": "dragon", + "palette": "main" + }, + { + "slot": "back", + "name": "pl_pearl_orb", + "edit": "add one single small round shining gold pearl orb resting against the back of its curved neck on the right side, just behind its head", + "seed": 3, + "types": { + "dragon": 4, + "psychic": 4, + "water": 2 + }, + "other": 0.05, + "tags": [], + "palette": "type" + } + ] +} diff --git a/pixellab_src/ledger.jsonl b/pixellab_src/ledger.jsonl new file mode 100644 index 0000000..71bf063 --- /dev/null +++ b/pixellab_src/ledger.jsonl @@ -0,0 +1,245 @@ +{"time": 1790900931, "label": "pl_fox/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790900965, "label": "pl_fox/pl_tail_flame", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901012, "label": "pl_fox/pl_crown_ice", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901111, "label": "pl_fox/pl_wings_feather", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901300, "label": "pl_fox/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901338, "label": "pl_fox/pl_tail_flame", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901411, "label": "pl_fox/pl_crown_ice", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901503, "label": "pl_fox/pl_wings_feather", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901672, "label": "pl_mochi/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901677, "label": "pl_slime/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901714, "label": "pl_pebble/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901754, "label": "pl_brawler/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901796, "label": "pl_bunny/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901831, "label": "pl_axolotl/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901863, "label": "pl_eel/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901907, "label": "pl_dino/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901947, "label": "pl_imp/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790901989, "label": "pl_cub/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790902003, "label": "pl_slime/pl_mushroom_cap", "endpoint": "edit-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790902026, "label": "pl_drake/base", "endpoint": "create-image-pixen", "usage": {"type": "generations", "generations": 1.0}, "ok": true} +{"time": 1790902027, "label": "pl_brawler/pl_headband", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007008051236470541}, "ok": true} +{"time": 1790902052, "label": "pl_owl/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.006684374809265137}, "ok": true} +{"time": 1790902087, "label": "pl_hawk/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007353315035502116}, "ok": true} +{"time": 1790902098, "label": "pl_brawler/pl_tail_tuft", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011516327937444053}, "ok": true} +{"time": 1790902121, "label": "pl_chick/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007238638586468167}, "ok": true} +{"time": 1790902151, "label": "pl_fawn/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.00735997584131029}, "ok": true} +{"time": 1790902154, "label": "pl_slime/pl_bubbles_toxic", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008990888648562963}, "ok": true} +{"time": 1790902182, "label": "pl_guppy/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007430701335271199}, "ok": true} +{"time": 1790902204, "label": "pl_pebble/pl_crystals_head", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009409929619895088}, "ok": true} +{"time": 1790902238, "label": "pl_pebble/pl_crystal_cluster", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0077369888358645965}, "ok": true} +{"time": 1790902239, "label": "pl_seal/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.009559364239374797}, "ok": true} +{"time": 1790902297, "label": "pl_beetle/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.00919856505923801}, "ok": true} +{"time": 1790902309, "label": "pl_dino/pl_tail_club", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007662267552481757}, "ok": true} +{"time": 1790902334, "label": "pl_grub/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007096679316626655}, "ok": true} +{"time": 1790902354, "label": "pl_hawk/pl_crest_flame", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008972050587336224}, "ok": true} +{"time": 1790902371, "label": "pl_snake/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.0075322285228305395}, "ok": true} +{"time": 1790902401, "label": "pl_bee/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.0072988010512457955}, "ok": true} +{"time": 1790902418, "label": "pl_hawk/pl_wings_storm", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.01151705410745409}, "ok": true} +{"time": 1790902424, "label": "pl_axolotl/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.006673484298917983}, "ok": true} +{"time": 1790902461, "label": "pl_bee/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007764167918099298}, "ok": true} +{"time": 1790902482, "label": "pl_hawk/pl_tail_storm", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011546242449018692}, "ok": true} +{"time": 1790902502, "label": "pl_drake/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007941274033652412}, "ok": true} +{"time": 1790902524, "label": "pl_owl/pl_crown_bluefire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00812294438150194}, "ok": true} +{"time": 1790902536, "label": "pl_bee/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.006860756450229221}, "ok": true} +{"time": 1790902553, "label": "pl_owl/pl_shroud_ghostfire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007713085333506267}, "ok": true} +{"time": 1790902588, "label": "pl_bee/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008565245813793606}, "ok": true} +{"time": 1790902604, "label": "pl_owl/pl_tail_ghostfire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008242531723446316}, "ok": true} +{"time": 1790902630, "label": "pl_bunny/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008478051821390789}, "ok": true} +{"time": 1790902637, "label": "pl_guppy/pl_fin_dorsal", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007716622273127238}, "ok": true} +{"time": 1790902684, "label": "pl_eel/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007197259240680271}, "ok": true} +{"time": 1790902693, "label": "pl_beetle/pl_horn_beetle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009436408387290107}, "ok": true} +{"time": 1790902741, "label": "pl_guppy/pl_fins_head", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009395943297280206}, "ok": true} +{"time": 1790902779, "label": "pl_cub/pl_horns_ram", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007494111246532865}, "ok": true} +{"time": 1790902830, "label": "pl_cub/pl_plates_rock", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00978751171959771}, "ok": true} +{"time": 1790902913, "label": "pl_cub/pl_tail_fluffy", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010967689222759671}, "ok": true} +{"time": 1790902980, "label": "pl_mochi/pl_flower_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011016767740249634}, "ok": true} +{"time": 1790903020, "label": "pl_imp/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008241831832461887}, "ok": true} +{"time": 1790903039, "label": "pl_mochi/pl_tail_curly", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00873938759167989}, "ok": true} +{"time": 1790903053, "label": "pl_bunny/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007280090755886502}, "ok": true} +{"time": 1790903102, "label": "pl_seal/pl_horn_ice", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010622908380296496}, "ok": true} +{"time": 1790903152, "label": "pl_snake/pl_tail_rattle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790903193, "label": "pl_beetle/pl_wings_elytra", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008267430782318116}, "ok": true} +{"time": 1790903232, "label": "pl_axolotl/pl_gills_frill", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00701213977071974}, "ok": true} +{"time": 1790903287, "label": "pl_fawn/pl_antlers_leafy", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009486502726872762}, "ok": true} +{"time": 1790903348, "label": "pl_snake/pl_spikes_frill", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010987513807084827}, "ok": true} +{"time": 1790903393, "label": "pl_chick/pl_wings_gold", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790903459, "label": "pl_brawler/pl_mane_fire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011837061219745213}, "ok": true} +{"time": 1790903501, "label": "pl_mochi/pl_sprout_leaf", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00859204641977946}, "ok": true} +{"time": 1790903543, "label": "pl_bunny/pl_ears_long", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008531954050064086}, "ok": true} +{"time": 1790903585, "label": "pl_grub/pl_antennae", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0081728073226081}, "ok": true} +{"time": 1790903658, "label": "pl_axolotl/pl_coral_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010786550336413913}, "ok": true} +{"time": 1790903696, "label": "pl_fawn/pl_leaf_cape", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008496582084231907}, "ok": true} +{"time": 1790903746, "label": "pl_chick/pl_tail_feather_fan", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00789507219526503}, "ok": true} +{"time": 1790903796, "label": "pl_guppy/pl_tail_fish", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009600913127263386}, "ok": true} +{"time": 1790903838, "label": "pl_dino/pl_spikes_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008733896334966025}, "ok": true} +{"time": 1790903870, "label": "pl_wisp/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007996700392829048}, "ok": true} +{"time": 1790903895, "label": "pl_bunny/pl_wings_tiny", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007164622783660889}, "ok": true} +{"time": 1790903927, "label": "pl_grub/pl_mushrooms_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007732026365068223}, "ok": true} +{"time": 1790903977, "label": "pl_eel/pl_crest_electric", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008965424405203926}, "ok": true} +{"time": 1790904011, "label": "pl_fawn/pl_tail_leaf", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007907035244835749}, "ok": true} +{"time": 1790904073, "label": "pl_chick/pl_crest_feather", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010989243825276693}, "ok": true} +{"time": 1790904136, "label": "pl_seal/pl_icicles_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010845678594377305}, "ok": true} +{"time": 1790904188, "label": "pl_dino/pl_horn_single", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009642295916875203}, "ok": true} +{"time": 1790904283, "label": "pl_bunny/pl_tail_puff", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00944568665822347}, "ok": true} +{"time": 1790904342, "label": "pl_grub/pl_tail_stinger", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010855581680933635}, "ok": true} +{"time": 1790904380, "label": "pl_eel/pl_sail_fin", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008169162962171767}, "ok": true} +{"time": 1790904422, "label": "pl_drake/pl_horns_dragon", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00810156528155009}, "ok": true} +{"time": 1790904472, "label": "pl_hawk/pl_wings_storm", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009453291416168214}, "ok": true} +{"time": 1790904539, "label": "pl_seal/pl_tail_ice_shard", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00912098413043552}, "ok": true} +{"time": 1790904564, "label": "pl_slime/pl_bubbles_toxic", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007215490871005589}, "ok": true} +{"time": 1790904614, "label": "pl_wisp/pl_wisp_ghostfire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009791300031873916}, "ok": true} +{"time": 1790904648, "label": "pl_dino/pl_spikes_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00783378725581699}, "ok": true} +{"time": 1790904698, "label": "pl_imp/pl_ears_bolt", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009347385009129842}, "ok": true} +{"time": 1790904745, "label": "pl_bee/pl_wings_bug", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008985003100501167}, "ok": true} +{"time": 1790904791, "label": "pl_eel/pl_tail_bluefire_eel", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008823530991872152}, "ok": true} +{"time": 1790904847, "label": "pl_drake/pl_wings_dragon", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008440255747901068}, "ok": true} +{"time": 1790904886, "label": "pl_dino/pl_dino_crystals_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008272239208221436}, "ok": true} +{"time": 1790904923, "label": "pl_mochi/pl_mochi_halo", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008262450774510701}, "ok": true} +{"time": 1790904978, "label": "pl_chick/pl_wings_gold", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010140569686889648}, "ok": true} +{"time": 1790905032, "label": "pl_snake/pl_hood_cobra", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.01033480503824022}, "ok": true} +{"time": 1790905082, "label": "pl_pebble/pl_crystal_cluster", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008272511853112115}, "ok": true} +{"time": 1790905120, "label": "pl_wisp/pl_wings_bat", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008215370098749796}, "ok": true} +{"time": 1790905166, "label": "pl_dino/pl_spikes_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00943149651421441}, "ok": true} +{"time": 1790905207, "label": "pl_imp/pl_tail_lightning", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008408881690767075}, "ok": true} +{"time": 1790905256, "label": "pl_bee/pl_antennae_spark", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790905301, "label": "pl_eel/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008923349486456978}, "ok": true} +{"time": 1790905326, "label": "pl_drake/pl_tail_spade", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007170078939861721}, "ok": true} +{"time": 1790905368, "label": "pl_slime/pl_slime_spikes_poison", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00881155037879944}, "ok": true} +{"time": 1790905431, "label": "pl_chick/pl_chick_tail_icicle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.01125643727514479}, "ok": true} +{"time": 1790905494, "label": "pl_guppy/pl_tail_fish", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011478334824244181}, "ok": true} +{"time": 1790905519, "label": "pl_pebble/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.0075424768659803606}, "ok": true} +{"time": 1790905565, "label": "pl_wisp/pl_tail_wisp_ghostfire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009443331638971965}, "ok": true} +{"time": 1790905602, "label": "pl_brawler/pl_brawler_shell", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007726308849122789}, "ok": true} +{"time": 1790905648, "label": "pl_imp/pl_coils_electric", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008433530542585586}, "ok": true} +{"time": 1790905690, "label": "pl_axolotl/pl_coral_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007997944328520034}, "ok": true} +{"time": 1790905758, "label": "pl_drake/pl_mane_flame", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011202545192506578}, "ok": true} +{"time": 1790905804, "label": "pl_owl/pl_crown_bluefire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008386059257719252}, "ok": true} +{"time": 1790905838, "label": "pl_seal/pl_icicles_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0076048691537645135}, "ok": true} +{"time": 1790905871, "label": "pl_pebble/pl_crystals_head", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007605802588992649}, "ok": true} +{"time": 1790905905, "label": "pl_slime/pl_slime_spikes_poison", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0076432718965742325}, "ok": true} +{"time": 1790905951, "label": "pl_brawler/pl_brawler_shell", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007864947530958387}, "ok": true} +{"time": 1790905984, "label": "pl_imp/pl_ears_bolt", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0077951335112253824}, "ok": true} +{"time": 1790906026, "label": "pl_axolotl/pl_axolotl_sprout", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009012135638131035}, "ok": true} +{"time": 1790906105, "label": "pl_fox/pl_tail_bluefire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011679916911655003}, "ok": true} +{"time": 1790906139, "label": "pl_hawk/pl_hawk_headband", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007753235366609362}, "ok": true} +{"time": 1790906173, "label": "pl_snake/pl_hood_cobra", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00776524575551351}, "ok": true} +{"time": 1790906206, "label": "pl_pebble/pl_crystal_cluster", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007932556125852797}, "ok": true} +{"time": 1790906240, "label": "pl_bunny/pl_tail_puff", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00800647751490275}, "ok": true} +{"time": 1790906295, "label": "pl_bee/pl_tail_scorpion", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00997934995757209}, "ok": true} +{"time": 1790906336, "label": "pl_beetle/pl_wings_elytra", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008795385970009699}, "ok": true} +{"time": 1790906407, "label": "pl_imp/pl_imp_halo", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011542788982391358}, "ok": true} +{"time": 1790906456, "label": "pl_eel/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007537920713424682}, "ok": true} +{"time": 1790906544, "label": "pl_owl/pl_owl_halo", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790906627, "label": "pl_snake/pl_tail_rattle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.01204998352792528}, "ok": true} +{"time": 1790906653, "label": "pl_wisp/pl_wisp_orbs_bluefire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00711135114563836}, "ok": true} +{"time": 1790906802, "label": "pl_fox/pl_tail_bluefire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.01958835331598918}, "ok": true} +{"time": 1790906853, "label": "pl_bunny/pl_bunny_flower_crown", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009475136783387926}, "ok": true} +{"time": 1790906913, "label": "pl_bee/pl_bee_halo", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009446719884872437}, "ok": true} +{"time": 1790907005, "label": "pl_beetle/pl_beetle_rock_spikes", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.014205417553583781}, "ok": true} +{"time": 1790907030, "label": "pl_drake/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007226672887802124}, "ok": true} +{"time": 1790907081, "label": "pl_cub/pl_plates_rock", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00932117944293552}, "ok": true} +{"time": 1790907140, "label": "pl_eel/pl_crest_electric", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010673703140682646}, "ok": true} +{"time": 1790907182, "label": "pl_dino/pl_spikes_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008427866220474244}, "ok": true} +{"time": 1790907233, "label": "pl_hawk/pl_wings_storm", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009655291530821059}, "ok": true} +{"time": 1790907279, "label": "pl_owl/pl_owl_halo", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009244155989752876}, "ok": true} +{"time": 1790907322, "label": "pl_hawk/pl_hawk_headband", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009156441820992364}, "ok": true} +{"time": 1790907411, "label": "pl_snake/pl_spikes_frill", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010006278859244454}, "ok": true} +{"time": 1790907454, "label": "pl_grub/pl_tail_stinger", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008545126570595635}, "ok": true} +{"time": 1790907486, "label": "pl_drake/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007173289855321249}, "ok": true} +{"time": 1790907524, "label": "pl_fawn/pl_leaf_cape", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008365429057015313}, "ok": true} +{"time": 1790907570, "label": "pl_eel/pl_sail_fin", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790907604, "label": "pl_chick/pl_wings_gold", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00773183994823032}, "ok": true} +{"time": 1790907646, "label": "pl_bunny/pl_wings_tiny", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008811935080422295}, "ok": true} +{"time": 1790907688, "label": "pl_guppy/pl_guppy_bubble_crown", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008917144139607747}, "ok": true} +{"time": 1790907730, "label": "pl_grub/pl_grub_flower", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008501098288430108}, "ok": true} +{"time": 1790907755, "label": "pl_drake/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007315795368618436}, "ok": true} +{"time": 1790907789, "label": "pl_cub/pl_cub_tail_rockclub", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00794953179359436}, "ok": true} +{"time": 1790907826, "label": "pl_eel/pl_tail_bluefire_eel", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008572399139404297}, "ok": true} +{"time": 1790907915, "label": "pl_brawler/pl_mane_fire", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.01005796061621772}, "ok": true} +{"time": 1790907953, "label": "pl_seal/pl_seal_shell", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00847970986366272}, "ok": true} +{"time": 1790907986, "label": "pl_beetle/pl_beetle_rock_spikes", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007727013852861193}, "ok": true} +{"time": 1790908037, "label": "pl_fawn/pl_fawn_halo", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00966904049449497}, "ok": true} +{"time": 1790908072, "label": "pl_drake/pl_horns_dragon", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008072009775373671}, "ok": true} +{"time": 1790908123, "label": "pl_eel/pl_crest_electric", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009726119703716701}, "ok": true} +{"time": 1790908173, "label": "pl_bunny/pl_wings_tiny", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009463470273547703}, "ok": true} +{"time": 1790908257, "label": "pl_grub/pl_tail_stinger", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.012547792620129056}, "ok": true} +{"time": 1790908307, "label": "pl_guppy/pl_guppy_bubble_crown", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009812922848595513}, "ok": true} +{"time": 1790908358, "label": "pl_cub/pl_plates_rock", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009668046156565349}, "ok": true} +{"time": 1790908405, "label": "pl_drake/pl_wings_dragon", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009162568171819051}, "ok": true} +{"time": 1790908446, "label": "pl_eel/pl_sail_fin", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790908485, "label": "pl_seal/pl_icicles_back", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008393628385331895}, "ok": true} +{"time": 1790908532, "label": "pl_drake/pl_tail_spade", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009379288011127048}, "ok": true} +{"time": 1790908588, "label": "pl_seal/pl_seal_shell", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010229756938086615}, "ok": true} +{"time": 1790908705, "label": "pl_drake/pl_mane_flame", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.017054271486070423}, "ok": true} +{"time": 1790908759, "label": "pl_snake/pl_tail_rattle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010120997561348809}, "ok": true} +{"time": 1790908797, "label": "pl_drake/pl_drake_crystals", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007586653762393527}, "ok": true} +{"time": 1790908831, "label": "pl_snake/pl_spikes_frill", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007791194968753391}, "ok": true} +{"time": 1790908857, "label": "pl_drake/pl_drake_crystals", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007149896489249336}, "ok": true} +{"time": 1790908895, "label": "pl_guppy/pl_guppy_bubble_crown", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007729158586925931}, "ok": true} +{"time": 1790908942, "label": "pl_snake/pl_tail_rattle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009106588496102228}, "ok": true} +{"time": 1790909008, "label": "pl_guppy/pl_guppy_pearl_crown", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008294328848520915}, "ok": true} +{"time": 1790909257, "label": "pl_wyrm/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007901206307941014}, "ok": true} +{"time": 1790909299, "label": "pl_crab/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008341445472505357}, "ok": true} +{"time": 1790909330, "label": "pl_monk/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007200281567043729}, "ok": true} +{"time": 1790909363, "label": "pl_duck/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.0075111570623185905}, "ok": true} +{"time": 1790909404, "label": "pl_worm/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008012065596050687}, "ok": true} +{"time": 1790909433, "label": "pl_lizard/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007050547970665826}, "ok": true} +{"time": 1790909459, "label": "pl_boar/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.006684410068723891}, "ok": true} +{"time": 1790909489, "label": "pl_sprite/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007053209622701009}, "ok": true} +{"time": 1790909523, "label": "pl_wyrm/pl_horns_antler_dragon", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00807293889257643}, "ok": true} +{"time": 1790909544, "label": "pl_lizard/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.006921526432037354}, "ok": true} +{"time": 1790909587, "label": "pl_monk/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007972194221284656}, "ok": true} +{"time": 1790909638, "label": "pl_duck/pl_plume_feather", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009356668896145292}, "ok": true} +{"time": 1790909675, "label": "pl_wyrm/pl_tail_dragon_fin", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008324551158481174}, "ok": true} +{"time": 1790909711, "label": "pl_crab/pl_coral_crown", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008108901209301418}, "ok": true} +{"time": 1790909750, "label": "pl_boar/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008424108160866632}, "ok": true} +{"time": 1790909822, "label": "pl_duck/pl_tail_streamers", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011178641451729669}, "ok": true} +{"time": 1790909881, "label": "pl_wyrm/pl_pearl_orb", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008510448879665799}, "ok": true} +{"time": 1790909956, "label": "pl_crab/pl_shell_spiral", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.012000780661900839}, "ok": true} +{"time": 1790909986, "label": "pl_monk/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.007854612085554335}, "ok": true} +{"time": 1790910021, "label": "pl_duck/pl_cloud_puffs", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007863560729556613}, "ok": true} +{"time": 1790910063, "label": "pl_worm/pl_flower_bud", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009059144099553426}, "ok": true} +{"time": 1790910105, "label": "pl_crab/pl_barnacles", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008617922915352716}, "ok": true} +{"time": 1790910145, "label": "pl_boar/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.008553334845436944}, "ok": true} +{"time": 1790910179, "label": "pl_sprite/pl_ears_flame", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007806698931588067}, "ok": true} +{"time": 1790910212, "label": "pl_worm/pl_tail_vine", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007846587710910374}, "ok": true} +{"time": 1790910255, "label": "pl_crab/pl_shell_spiral", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790910309, "label": "pl_sprite/pl_horns_ember", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009262786441379123}, "ok": true} +{"time": 1790910351, "label": "pl_monk/pl_scarf_long", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00850315202607049}, "ok": true} +{"time": 1790910410, "label": "pl_worm/pl_tail_splash", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010474376466539172}, "ok": true} +{"time": 1790910462, "label": "pl_lizard/base", "endpoint": "create-image-pixen", "usage": {"type": "usd", "usd": 0.010209760109583537}, "ok": true} +{"time": 1790910505, "label": "pl_sprite/pl_cape_frost", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007785622093412612}, "ok": true} +{"time": 1790910545, "label": "pl_monk/pl_cape_short", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008199535210927329}, "ok": true} +{"time": 1790910583, "label": "pl_worm/pl_rocks_dirt", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008276161034901936}, "ok": true} +{"time": 1790910625, "label": "pl_crab/pl_shell_spiral", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008746390872531467}, "ok": true} +{"time": 1790910659, "label": "pl_sprite/pl_tail_bluefire_wisp", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007568790488772922}, "ok": true} +{"time": 1790910692, "label": "pl_monk/pl_tail_wrapped", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007768456167644925}, "ok": true} +{"time": 1790910726, "label": "pl_wyrm/pl_horns_antler_dragon", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008083348910013836}, "ok": true} +{"time": 1790910761, "label": "pl_crab/pl_barnacles", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0077620227866702605}, "ok": true} +{"time": 1790910828, "label": "pl_monk/pl_topknot", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011284227742089165}, "ok": true} +{"time": 1790910861, "label": "pl_wyrm/pl_pearl_orb", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007729458782407973}, "ok": true} +{"time": 1790910899, "label": "pl_duck/pl_tail_streamers", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008180538150999282}, "ok": true} +{"time": 1790910932, "label": "pl_lizard/pl_snowcap", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00781151032447815}, "ok": true} +{"time": 1790910995, "label": "pl_boar/pl_tuft_fluffy", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010866874403423734}, "ok": true} +{"time": 1790911039, "label": "pl_worm/pl_tail_vine", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008835690948698256}, "ok": true} +{"time": 1790911077, "label": "pl_duck/pl_cloud_puffs", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.0077955478032430015}, "ok": true} +{"time": 1790911119, "label": "pl_lizard/pl_frill_neck", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008397285964753892}, "ok": true} +{"time": 1790911185, "label": "pl_boar/pl_mane_bristle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010003296269310846}, "ok": true} +{"time": 1790911232, "label": "pl_worm/pl_rocks_dirt", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.005}, "ok": true} +{"time": 1790911274, "label": "pl_sprite/pl_cape_frost", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007821742879019843}, "ok": true} +{"time": 1790911332, "label": "pl_lizard/pl_spines_toxic", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009679730335871379}, "ok": true} +{"time": 1790911390, "label": "pl_boar/pl_saddle_rock", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.010937547339333428}, "ok": true} +{"time": 1790911420, "label": "pl_worm/pl_rocks_dirt", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007724657085206773}, "ok": true} +{"time": 1790911488, "label": "pl_sprite/pl_tail_bluefire_wisp", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011745978699790108}, "ok": true} +{"time": 1790911526, "label": "pl_lizard/pl_tail_lightning_lizard", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007716657373640272}, "ok": true} +{"time": 1790911561, "label": "pl_boar/pl_tail_curl_pig", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008048070271809897}, "ok": true} +{"time": 1790911604, "label": "pl_wyrm/pl_pearl_orb", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.008364033275180392}, "ok": true} +{"time": 1790911655, "label": "pl_lizard/pl_frill_neck", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009255997233920628}, "ok": true} +{"time": 1790911728, "label": "pl_duck/pl_cloud_puffs", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.012242308616638185}, "ok": true} +{"time": 1790911782, "label": "pl_boar/pl_tuft_fluffy", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009188066562016806}, "ok": true} +{"time": 1790911816, "label": "pl_lizard/pl_spines_toxic", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.00770892694261339}, "ok": true} +{"time": 1790911850, "label": "pl_boar/pl_mane_bristle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007705155769983927}, "ok": true} +{"time": 1790911913, "label": "pl_lizard/pl_frill_neck", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.011213760746849908}, "ok": true} +{"time": 1790911951, "label": "pl_boar/pl_saddle_rock", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.007961846457587348}, "ok": true} +{"time": 1790912044, "label": "pl_boar/pl_mane_bristle", "endpoint": "edit-image-pixen", "usage": {"type": "usd", "usd": 0.009079684257507326}, "ok": true} diff --git a/pixellab_src/pl_axolotl/base.json b/pixellab_src/pl_axolotl/base.json new file mode 100644 index 0000000..d04e68f --- /dev/null +++ b/pixellab_src/pl_axolotl/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "chubby newt-like salamander creature crawling on four short splayed legs with webbed toes, very wide flat bald head with a broad smiling mouth, small beady eyes set on top of its head, smooth glossy skin, crimson freckles along its flanks, short thick tapering tail, smooth round head with no gills, no frills and no spikes, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 42 + }, + "usage": { + "type": "usd", + "usd": 0.006673484298917983 + } +} diff --git a/pixellab_src/pl_axolotl/base.png b/pixellab_src/pl_axolotl/base.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9cda8f38b1e3d31521815f01a9924fc64fd428 GIT binary patch literal 1873 zcmV-X2d?;uP)Zmz`K?1_EF8G8pALz1soB!;dJ9n2|mR%O8@qROB?>*<9bM}1S{m=iO zb1oo5h71`pWXO;qLxv0)GGxe*Awz}?88T$ZkRd}xi{PR35&+mu=I8AWMJx2lh>gt7 zY_gIEfc(Ui)*MH(pl~71tWKP801op1bEl^U-^1UIU1s95Jv2yIa{ zD!#~Ua}kuSO`c${+!~>CnI#DSCjl^I-AeT78rURBTNYpqbyRnD4NFaRMuZkSQ)LU< z3iQUjAM=Lq<33I`ymj+VBR?=TJsV07({O?ll34$a`k{J((?4uhU3Uv01jUSR^psX_n^v*6YL7gD zo)h_97iw^>v<&Az`OG@(HA4N32c{ccCDOE}zE^}tL34Pw^_T?`Y4`jDmN5(B6emx( z0N;QB)EMk-`yK=>Rh&cpuYw!u^0Ar~R4*|SiT4btJ zT4a})!8{ezv*w_3-D<%Z5tMKa0y(GPu~C@pAB3`siw+y?`L;kLU!|*H*B9bmHFfsD z$jFnGP~t*xbc~K*^PZBUcuyj@0#6s)VfBTRh){>4|GP;xotyQvc-cP)J%dAW;>Dq2 zS^L;Mw+O?Qu7ywkz7nAtTWo!8 zE#_U*;xYjJMGbU02VgMj>5=f2su!!n$rGxIuR^G*L7O;1NVdB~blZ&i*pt73<$oxz z!~V?gFe&8?2|<$(2CM6_8S@Z4?lpLXhls1d0Cg8s?97LE6$Ve zIki(PKYikqc)$5i1+*L2ShOQ+<8zz@ApxXLkH{0Q{J4+C(k22}h!8jUEk68t3C2tFDqft3rqmjgg3FEq)0UPsb|k%NAy5kIR-bv5Kj)jSAzAv2?&&o^lE1>jLG7-2Bah1F~kDtUv z3LjK+ASF(3Q!sCY_&tfh!B>fX-Jf7rT3kt;v8!AZa1R8UvxKX;Kf$1w^TT#=(bAqjVm9)vHECr^KPx5X48P&AN+)pj`(bHSc}mG#<**7CHKJ6@Un4;^aQ+Bc97=rcOhBIZA=)3e2n zR5*$pv@IUFX%)-Uf8|vdVoZ+_?XnOO=+Dz~e#J5K2Icfr34>P*+6VsvK=x5C7Fp&}00000 LNkvXXu0mjfx`uR9 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_axolotl/base_raw.png b/pixellab_src/pl_axolotl/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..b31d787eb0c7937a286cde9bd0b179d67e3765aa GIT binary patch literal 1813 zcmV+w2kQ8VP) z&gpCZ7jTs;79FD1;ia$un+Au<>YRcbO6yVmS@wSht$tWol2W}~LGziVg^mQq@b#+@ z($mi&lsyZ}rHkmz%HXuL_CPC6UVFd-S;XTp4|qN9iT3E$%{w-J9G{s7wZ{CKfP`e1 zpsAhTtoQA-a@<0so#(Vivk)#>lvw7PBsuyt`FOl>B1ZE7`_P9!`vS_?W{vat8a zfe0NMBwllu;NbQKKod|<0DP$p23Z}6f{f7s_p@kcEe96i%{~nk) zz?+>bS&r(LjvtK4!QHLut4j>1J$prjl`8XO5i4^-BE&wH7oJCDi9y;-C5hiQR#wUV z_xevqF*0{GvzihtiS85Zt_uw~S5b-cAAKSZV>W8O@xXjiSAz_Lx$l*s5zrsrZNox? z+PyG=U04Rd?z>4l^z!vZgUN`J_tJ5!<(|`JIBoB7E70v!CR>(`K#Roo>6nhXIGBQV{^AC=V?;Y@qJE*4>H z>#A8fHuhz6XAevac8FHT4i3)MH8PC(EgjC1C4!d9%EF{I7fvEf7m7h|C)=G&ayNO= z#~*zIf^g#b5n^56$Uf}ZC;v1LguZ64U>{toGKam^asyI+DaQN}W1ve-!Ht|;;r8t& zm4`=Hp{>=34Z#CMchEQjrqR54bU%jWtW->N_#mhwlYTN{?%u=Zq*%1RvjiiTt%K*F z0g{2KY@Tm!Y{Y_V23!VUyr@TA{sFX^jC4!*LfenE;jpCIva1kk8^miXN2ed|w*~AnF^))L?Yb3tL%VV<_AYjrf(1ZqxtDLW{2dZ}#!6W=>G;G<7 zR^wk{v><=x=Tg`u+xKG5&{3$$$`VWR~=RD#`lS&cTMz<{+=UdN*HQt|W0pFM*ekwbCmxE^&|K1W#kBHa6xJRCN# zO29VIBxw{lQ}YKa=T(+D1SPFV+aP|azOk<&I4(-`brL`4z|=-%@%x0az4-G^fvuoD z1I@Enu4cn!yO3NNmia&sT)Ma@yp@@U9g7p0zb=~@$LcGJs-bpMGiW{sK3aZkmAy^V0eooL_d=>QW{RAs%F_KPxIipix@;TDgf*;Ukq(v1hB*~>wyNl-( z(xjlexG477DW+10qJi*`M_F83xdA=LhhxlObJSQHGhLC-%@HgmF}deXBGF3=znBSZ z0;Fes;BbU_1?C`6u(e0N759Z)%?Zi4bMzp*2$mwj;oVj)L!xLQ4U;bI>G*z(Vxn89 zIWMKjLq1K1k`iP5?bZ*Rv(%MEoQ4zfdM7G~DvL7XSwe1bWH22L>_^p8&xcio3J zEeG^9P`j(qSg%KNsyR{0IAVUHvA7Hv6NchOOBSafhZg254qsmB(-DYLRNw;=J9o40 zo;IXXQD1zHaOhiw7kL(_a@E2DPZ8+_nbTrfc10qeI`PzKBHf=2<% zvg@+szykdr!8$6bV|y{R#MiiFVMh^O?WSgaNdu?dGaH1_x-Y4P={@e@S~TuGh^FdG zEMb@TX*ZY1TCkC&m^GFdNs~`u*0Sd*3AdMb_{S$9WL%I{%x!5hvc*9

L*+W=7|( zX4mwt!uk?S=rh`-g+rjm8Tmism?a^(f4>DKa~CSLw~^dD-mwae3M7utXkmIh+3>xcYf_ zSG?!4y1930ZzoCv7A!9J@1Z(af(-DHhV4|R(82l}ppsE8(sdHG00000NkvXXu0mjf Db_H+~ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_axolotl/pl_axolotl_sprout.json b/pixellab_src/pl_axolotl/pl_axolotl_sprout.json new file mode 100644 index 0000000..8aed026 --- /dev/null +++ b/pixellab_src/pl_axolotl/pl_axolotl_sprout.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small gold two-leaf sprout growing from the top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009012135638131035 + } +} diff --git a/pixellab_src/pl_axolotl/pl_axolotl_sprout.png b/pixellab_src/pl_axolotl/pl_axolotl_sprout.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd719a3db0262b1bcec14a3ea1bd2fc5b8b23d8 GIT binary patch literal 2078 zcmV+(2;ujMP)!Wdm1__MTTKuFVY?}mfA}#Wk|(J$;wBTW-?@@H5z8q z3)2}>lXMC*OB^d-gDKE1EP`Q*k5LkK_cZ_6J=eQ0VPPLN+;3+0oO|v$=icu-|M~xO z&IMGcP@zJF3Kc3;s8FFog$flaIvFH?cUYWbU}0gGud|oexIJUT3kIgV_EaZW&<3K@ zjM=$zzSvs8#uZ*BNCJub*7DD=V{-#S2~9wHt@sjK7Z>m}bF5AtaU!4jaxN!cvZMh2 z1!(=Iw`tbTzD?$owAUdtBZ$d(S z6VlTAVe9&O47#BwFE=0iho|ug-B4$2!J&hVTrh+XQlL5}b5~xI7^OQ-IMoR?`JjQs zIJqf>xr*{%fCil$nqWLcxi0850)%P8$=t|E=|-d;GaJ*Y&pmOgA#qZInHYw5PJ_3n$&m zKAk%eti`@FVisGQ-XS3^7V#qt2#E!B8=5SeEkR5HA%rJE$nklK0>TNtyy-ih*S0hv zYSJ|2$a-5-a6~^dU0FBa0x&YYVJXST9;io5*WR4emFBr1?JYbKdBWoR?v|}U;Jx@H zmb3j!lvI5u))sC=(XNPF#>z zB7bigp9b&6C&_&*EZxuBC?F};53Ux|W=QRw{|%+vG3=v7d{n)WC(wN&|M{U4_^qM} z2lHNc4SR05bgJ2&Ic~yhCKD_Y@MdB%%$vV*eP>1@eKBVuzi%*fH!&?FtzF~MJ^LcYa6L*=Q{*}^w?^}}z0a5& zB@+51T#JUvzX8TzDX+n--9I9C`0X&v%)#kZYuMRyjZ#F!)y!&XL1EnWviS#HfbrWm z;+B;Qyn1%Id<4L%GjZ4Xi}*PGZZuDwhv5qf5qZM^g;35GOADgrGmV&4XT~uAEr(60 zFWJPW9a-UWeJro1Bwzc-U$7aEBPdP~itR2DUH9xfe6izQe!b<-Mr?TJD`d}jSV7P; zetu>ybQ$+SJ5VnZ?;X<<)t{FlJSh<;iq^u?at^DmvquB+2b3qLs3f0Xv>sE2roy;% zna`Xg-}!^hTRI){^X!BvMz?e83+jikt|5ZQ|0nuev8_vAoG5SL(?ir3;qa}DbaHZB z{8_7u@%B^WeD&V;;s!M-KCHGWQAl_F?Vd!KnJF26Z2=z<@ck(R5Ha&-Rh`$KivM2!x$? z4v}x}HJ#yUp7AJ8y%8rYdU2&}N&2jDh|Rvu;{$~N(f2$ANn?*NlhXQ$_CXiGNrcGg zIC#RPTBAqO0>YmVaRCy5w#c+gBqz6U;#gS#0*N4eNPEfq^Y}?#q==Vl3uNMB>=A=v zKP`YLWi}h)#tv}`bL1$y_wT{4X>p}=#_i=I!9QSp^dt%OCEMge3Sq7Y(}c_UsLTiL zjU8V|1z{pfA&tzOLL`MpB5yfr#x*08k#>_kDin@-q{BS4=s5Vv(5hd5#?w7wq01P} z9TG)}D`Cy|bu#hVZ@+dsO};c~8ZKQQ&wI%{k#^*2{ zu!vLTZ&tnvI0!b@*I@dL`+0u;xAqo|JC6W&B%<`RW0%-LX#CNM@X+E=ljbfF^XByl z%6nqNBtYI@3F=E}{v^Wb?+=SzrW7g*VDx9XVC66T=0o?ua>OjpY4PIombRfI$04XV zR-@1d$LWvo^5!kY2n4k4Y{%$(0Kr^V$ItR4{ZB}{n@kz@fhuOEG*NZ#bwEY911 zzVH#BnHhsN$$&HKH>1&b)TaXww`ZdRi=Sn4KIB_sagsyM(2G}=#2&)azJYuI9dQd# zf6Zqte6gbxjv@zbi|HtiK+oD", + "description": "add a small clump of branching crimson coral with forked antler-like branches growing from the middle of its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007997944328520034 + } +} diff --git a/pixellab_src/pl_axolotl/pl_coral_back.png b/pixellab_src/pl_axolotl/pl_coral_back.png new file mode 100644 index 0000000000000000000000000000000000000000..8806c127f845e928cfc435f097796bd18fa39972 GIT binary patch literal 1998 zcmV;<2Qm1GP)CTuYZa;@AaGbwd{7^`Jnd0FrvP zP5x#&TG>D^1e-||{nb{`VHVM4F!`G?+tODd@tmB*>&pfYk+=Z3qMcqMi1diS-ejX2 z4Y!GtEE_z8ILSlTZN$YmmoSL66GeYrzSl$@1dwnzn!G(HhoebQRSAc#+oW#YT-yL} zfpfuwl=?wu&$;*Y83O4KHft$6*R|TPXx0*!aX_>$`o%KBoFr!b?>IRK!V(t#dr>#? zdRu@(d{|_Z$3~|wS1I>gq@r0%SYIbGP2YASuWr*WF$B_?_@ubd77g;sEMA2GYX7oO zRn|r&<$Ny*r}P-=+C=rOIb+ z`dZk1{+ccmD7NP(58+zZro{6H+^k32?26QikO{F)2hxY=?`v!g4B4X(ay;W zAv5Muzv*wXv2?ZoQom7YEoND3rnTy-{=43yZdb+|Bw6k3-fq=SpAZDXI89#~kQz-W zU19-&$%82@Aw>DiU4RRrB?tnad+_6^JzGah_y4MV#_aNVfGaOreh-WB)e1x(`bZdD zN>T#7J~*190)rVTZ+^~6drFTW4}3a#JW2LumuDcIp1+3bN+v9LRMav$S|LDun+x$Bo7dCw zJx53gkPVQ>67CA--T~Bfp@y38-eW0{p`x@^Vi5H5<}9f#B8cRJ|0D8F?A4ztD&^Vn zhP^oj3i;~VOYAy+(iHh+RtF;wD?w2QRiJxfJQEj1E8pY1Kn-S1owXPE`b-hUMaMJW z(+Y0xZUMm}!eXdsWTH|R{#+RA+viq=vqq#oF~M~0lAI=OrB$@7_!zyNJdz?8rBlPU zZ>7e@n{0#RXqISG_|uB{1Cm|pJON%iluJXmuJ#z&mHJd7M|B#FxO<;=%o#`4c^^^A zs*Tib=s=ZFEe#Rozx2Xox&R@9s_4qWJmz-b3F3g7yyc&(WWU_{ic^;$NUEJ2h~~`B zpgl+A%&`B`4a)uU2b#KInu?${j?d1Z{%MoQ|Cw+SOn$5`I5LQ8_7;;lHkRtLv&r7n zNCo>HSli-U0D?U%B%*9#k19G${XpvW^F1!cGvB(xMBh*0$ zyFEqqrS;4`czaIzlL=!H02dJ^CQWDLhKC1{H@tZK z6uWvN|GhI7VwOW+nyRb;VD2+ZPSJNsiBwTo$rfU<8Sm4*Kg*TAzL3{rKkXs{ppNpt zm)~VqzNYs?99Xkti(*M2A3f!H%`fBvpbf{Y(V@J5rwiaBLibSZo!Na$r6y?(9#7Py zAON<=n0>XsLjV9G@EGDNc|fnjMI{0AK|Kt#h^wKt0=`OoBD5#FVsWJo#=de9NFPX? z#MQ$OwzNoL?oglSBL!*^Movdc!#jD3#4Zub3a?jk~3wk2_)*@POBv2t*~!hq1xpr^hTgz-ei{bgsFmGBjdxq$*2HvGM ze~5tM++_+~WdRcVV|B0re>OFZ?cM=I zONoV@M7+7VH;-;rUTo6=h^~8q4IgY{TVkXwq$vbL z4^dh9@l$Kxzz;N83spj0KO~VQcUB+NBO)E5`F0eLYUcoRY%wd zT|^VSQ3|u4Dai<@Zqw=EKE2{ufBhlR+K&k5fLOhkrm@2jxjXR#f+o4J0?h gj}>_X2B>TBKlO&dM38DuA^-pY07*qoM6N<$f}8QgZ~y=R literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_axolotl/pl_gills_frill.json b/pixellab_src/pl_axolotl/pl_gills_frill.json new file mode 100644 index 0000000..31b36fd --- /dev/null +++ b/pixellab_src/pl_axolotl/pl_gills_frill.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add feathery crimson gill fronds sticking out on both sides of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00701213977071974 + } +} diff --git a/pixellab_src/pl_axolotl/pl_gills_frill.png b/pixellab_src/pl_axolotl/pl_gills_frill.png new file mode 100644 index 0000000000000000000000000000000000000000..88aeaa5dc7360606a9c53660ee99ef948524d9e9 GIT binary patch literal 2364 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bee/base_raw.png b/pixellab_src/pl_bee/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..2d07a8ca2277f705410e5b2097235c566827c419 GIT binary patch literal 1540 zcmV+f2K)JmP)ZD@ba$ zT9(FWEg_cpP-D?VD-|hi~_o%t=`{_D)!XJ0P3#mvH+0D)HV4;UH($jA@73dxMji5o8n@#C|LYageRu2ERDNjacX<6-?}EW&0hZ{G?#GKDea~KaXxT=} zyg2$3bQW&~|H)>$zdAA!2Hp1FXYkVX3sACrlToMA^#FXjy#!=XGPp?Oq$A5RY{RYt z&^~+$w!N|q%GW&yWqsd(?}ayQD}HzAOM-ptwYRBG#f#D(mT{lobfjvt#dmXj{jZwiXRRDcUF!jfG`a zOAAz$Jq0^&T!bad?y@c9c4#0oC)+mvBNkt-TksCs&A^AorIpz^QOF)J9=Sm9yhl071@^I!JPo@2t1xV@YYq(1bW0%0R5#~ zAb;s<$WF;HbzIid9R^F15>oc;wXK7jBX!AUU^fUjG~I8@XZ2y@^$-^27J`=5O||6& z({}g6v=C5bA>fvjaB2PX;BIK7GUnE#wuG-MgC~FPG(AF>+iiiR{y?Z!=066wu*O@Q zDAo0c;nCC?vT|WTuJ+U|VB^jTt&+YAV+9T#h1`2r&_1DhYRJfM%ka<$VZN_vUntBe zn<4~mIdvAgW>N^2@<4)rdH|3IcYXitsx??$Dl85;Hv0MY4bU@_W>{HkMZ($EuT0kC zR5^M9J{q`6u-Fa`HKyvRA!r%67J3N;RbX)|im<8}7DHTVaS?cn*HD{m?XXFQ&=|-~ zjbJIa))7LZi{P89Vv7)vZpo}bfPK*<1jPyc@qTSmvvt{jS!esg>l!{B>>32{6p){C zi1~3Q60s`1cPwtR_JJju&2Gb z){}?{)(+SN&Ve1noC?iyvN*%q0jpL;9j`0_7W%I00#-R4OC+C&Iquff`>7KZTJ=jO zbs}AvO5JK-j{gia{g5 zibNgrCB|fn75G?V_#a=bfKtg*BY>q%k?`*lb^)F9R45fv=>IW1@*Y9WkL8<0ECmU+ z#8<6-h7vODvy(3^^6A&Fj|#sWPh#A+ob$IihOq^Iz2w8_dQU!e=Gt8BSYF*9gh_`* zSr54hvoJ0q{AJSEEa_5~&xp!Yt!r=#2%hPS$t@gD&8q&ctD{bX5qx#N5GnOZ$*#n* qS%wog>EdihCWs@cq>_UFQU3wmy%j($d#(!r0000", + "description": "add two thin teal antennae on top of its head, each tipped with a bright yellow electric spark, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.005 + } +} diff --git a/pixellab_src/pl_bee/pl_antennae_spark.png b/pixellab_src/pl_bee/pl_antennae_spark.png new file mode 100644 index 0000000000000000000000000000000000000000..a034dbf3955f7805dcb122e9f87a2104337c874c GIT binary patch literal 1966 zcmV;f2T}NmP)4nQP9OxwCg46uLXJUFv?xWM=Npy>q_v zy64_mfH1-cBaAS@2pC$^;~f6)(CQ!M(^KXd`JmRqI-8YgQxvInc7*czV}D1o1tsgsx6I^%h0 zdO-6@ulQ#UXFx-8^|sqRj?WUhEDZxoffm;WU*T3JLU~N9bBh8N!?d_!!vxb@@5(Wu z4o%MoR#=Oy9@52+FXVK5$MFbI2^rxM8GldCEz@!fd$9c*LcRsk`2g?JKf&ST0-AZFv1u@D6U zTdMhCZ6u3`%{l;FVZb!5KaiOSL-pr9``PXV%*L^a*QDZNcq%D@8X}`7xINHv=|=!n zb#)L5IoUz?{hyZEE+?~TTpqLGRbZKkaJr%vzyZ+p%kNPBWwFJpx}BdJUn%>&xaf%c<`P2e9kWe%Si@1 zpjb2x$GQE*=T`b8`TnN2p{mAAWImyK7}l*1^I1cLOdY@}?sMk3HFlh7r2`?8_asUK zaBajs@-qlbvi;SimedJOumEgvs+)j_yIEY!0#pkaUNcf3#uQz3jG;ClR6>A%{7}3p z;N6fsE!}Gh^i-TD=1KK{oq{lCLw+{EX-d;7EMcthmNcj z5H~duraEKYh%7zTXcj+if@mBjY~A6r53V051RC0O1=O51`|TTU4~U1;&wgI6=Kv1P z72l8&S}t6I>gg#|*mQFMCj-C_T$kpr0oYay>G`Y8@>hh;>58vGO<4v@+UkHxA0x$K zh!qL)oD+G?+jWIJqgDj-hrC$PZ7eE<%%~x{PKtYi&Z>jK!p+M891gGeKDg^ch?_No z>iiA={9v{t$)veY==J~Z*WK0zCQh_M*|BD58jJ)7CPK*r$U`&^H@CbtYEFtjQ45*&Xvj@~c!5)JaB z=ET51m<-4YstOxwTEGDcxu&cLLD*D;%`-+hNCIha6x{_9C?EzAU+HN zgYFH|w206cCncziQKcvp;R_>?$E2rlW{z2%o8k7mKQ8YH27!Ze0$Y?~&ikkcp@h)_ zV;yS?nLJs2(QHX-X4&=_3v>WECwOjJvd;RCV%vO>G|5m4TL~av8@!;IpoeBO(7`grneTMR`;z zlk1<*_xSpcRLDCy1oRZol^sGTi)GC-_ZQBT9JXZIv;XUGb`qVQd2)`vpuw5J<4=>C zad<7HJRrymW!M2`@p$-=L%$G-50f3jcje{V|1iP`1MV6B0dv~(!OdSIo&W#<07*qoM6N<$f~+N? ARsaA1 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bee/pl_bee_halo.json b/pixellab_src/pl_bee/pl_bee_halo.json new file mode 100644 index 0000000..801cf59 --- /dev/null +++ b/pixellab_src/pl_bee/pl_bee_halo.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small glowing gold halo ring floating above its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009446719884872437 + } +} diff --git a/pixellab_src/pl_bee/pl_bee_halo.png b/pixellab_src/pl_bee/pl_bee_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ca7f1f17bb647b2c28e2b12e054cf1213297a0 GIT binary patch literal 1775 zcmVnTGFsCQL6*Ri_U=b_#XAlDn$BpmWz3;+B|HysN$FU657AyE-HPPfW4-pJ)dLQ8M zDah#gR1ubKle<5mwm&XwG28#l=?M}?1CdHwxf;gJpVn{R?uOG;U$5Op^|fw(SDykL z{~7PEggF_Ls9{XvC{u^C=gv_5PmfvfdP5u4y}PU6W{8(Bb`Hv)D*!E|LD$ZJWBM{j$QP{!&%#`|r(!+KOv|Ij zUoRhl`s_te`SpkN-SOvHC9uEsJk>RuK7+FM7MPWuuVj|PRM`H!K1SD$YTI@8II;3b zer);cu>Qrjp!WCgU|GphSe)}TEN}Yd-DT+>-H^G-Y#6n)4gM;lwCYeWl3WLmE?e*Px6hml)?7Z3E4cU zxQr*Sd>P{kk5>=i81RagK1FVPZ)!?JhXlr`M1XmzvXVj6X=lMxFatEr{#3zZ(>S<7 zM4ko>Bl&LWMyRRV+K+T7qRCQ*bHFWTrx*Ba7z14sU~ZPFvGrIpw3as0ZzGXNssqcI zXXAjz?%EkZBe3|$1m|WcHZa3e1Ik46l6cqx{ENiQ2=e%4rS9~! zJlYRt8wsJ_j)I{%I6?CqvpK%(i? zX|=jlDcP1|w}-mnmn+Bg4-s2RzdUM(+WL?qUVVYA%qcK;%~JY3ds-$OpSOfoF4a5E zL}W>0gK~Wq3-4qa38?o>OBBCPr!nfeIz4+MlO#+-a?-t z8-fih>WdXADfh#iQ9a57;)Dgit3|t-$fr9e%Aq`xHzLS5k;fwu^}!+x!JQ3)%&Yc!G|25>G=u~y zjiiwnlEi}FVlV5*o#Du<-0%?@;#D251MG0j6c@lZvQJUeI=q ze&=RRQGHRJgW@`ju>px%0o^=#Yd{Z*%u99UhRu=6TD^}59Wd^YZn1~~NyTL}G2YT{ zd|pLovQ;byMac{1t$Nbz=E0yc6vhE7;OZL#- zZi|7)%T>qm5Vb{fOjlw%UWgdjbsLnc~2}lY(B*CkQML-zE;O6q~Z##L%{w{z)QLQfLbX-xO z6o?>?-@-WP=9J`!^WE;C=eP$Xtyly36~*eQOQxrCMdfN*L3#}ZR5S>lEaKkLRJChZ znO@BQkB~>~d3jm#JpRb=2jii>OP4T4+cq@>nfcCS91&kTf)u>RbFJGC(k&2$= z#5VAO&A>+qnI0=3p}sxe9|4a2Gz|dIaK^095ESD+2*Swb8>zet7cOAX_zxeUN@j## RcA5YH002ovPDHLkV1m-mWETJc literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bee/pl_tail_scorpion.json b/pixellab_src/pl_bee/pl_tail_scorpion.json new file mode 100644 index 0000000..1ebf878 --- /dev/null +++ b/pixellab_src/pl_bee/pl_tail_scorpion.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a segmented teal scorpion tail with a crimson barbed stinger, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00997934995757209 + } +} diff --git a/pixellab_src/pl_bee/pl_tail_scorpion.png b/pixellab_src/pl_bee/pl_tail_scorpion.png new file mode 100644 index 0000000000000000000000000000000000000000..bda1ce9be945299299ea5fb3cd2ed25c8ef58e85 GIT binary patch literal 1952 zcmV;R2VeM!P)^+zlVV? z7u~n!=9<Uz4i?JG3XzCd1sMuoJ=N#qIAx2NFmy)NCnPKX?gPeNnH zji!V_F)^A9M;lLjZd7A%1I4;m(sNtMhk--}?K~783@1bebZL-hCc@#5$^qajXgqrk zKCZ~uWSTbdksc$c)KY$+{5jbaZDi;{sc#)pR4Hsd_txpO*j zb>c3WT7U$i)GY zk9Z>iB77B~Wl#--ta^!A0!^ZFh;_4~m;}?AC#y@MxCCI+5-rNzLnaLvEi$ z!wK>Bfhs7^dy{%U*k(wEFp&T9Zn~C~SJ1VC^@tU@rnFHk;Jg0gZ%6bf-MX<%&84H7 zw54TrMoq!^pO!zQv!oK-t^Y(U5MpBQPaHP}W;{QS?x&4Ufclhq)N^r;SdEZ5HPu@2 z+yfK_(QET`%ix+W?iH4n9`U}{)z!dtkT;M4c5H+b=YN4KuKfXnpit%jUDvDK^930J z$93`WDHPa<5$UNZPXMgn=`j=!QPnGjz)9(lR_}=uIB4Y62I9r`^iO{VnBtjYQ9RQ3 z=`>)+euVZgdjR7-^4tpr@K{u**8?~+R%H0c;tq+13g*K&A5U{ckvx6%&UKnH9Cy_T zC_GpL)t!C7DKr~B0L9PU{t`Wxzw$O+G5V9cy5Rcy^#OItmc_eVRZ@UZ5-1gNDSbnC=xWPL2vA@xE~JBIy3mt$_T;73%$9$Y2$R9ecSAXa=`5WJ(WZ&LLCTv*dxApBaas+f7)9x~jaDqiJsDSYa zo=HqyU$J3u_MG2PK)4Zb-1DBxha9f^cuIWB#4vZ7 zR<2fdqo{y=r$%H5_MEyV2LvZbzd1q}BH}rK9=<~j-%B4uP{hzUP+D3+I^0CzveXm! z1fAm~unx5v!(TPLgv=4MVMy~eNR8^!^#U_ozwj4aY`e7=iUPDgEgl#TPG{?iKHg zD&E^JD?-9{{>LXZj1REE+!L&TqOlw|BKADFyegdU2l(&{Rf`0nAX( zel91=T7fzUZtjgU!Yw{x-v#*6#Knorm62c$?)Fe9Ew7AuJjC;HBqHsV!dxG%2+3=* zyhmN=@`x%RVARORHa8X@KDh6wE7)%-z%h#)&dR7lbppiCUKE$7Ofo!?H3Q#yvgs2b z5=ddL&vRBFY#cqoGldhvOzW!E{0oi|W", + "description": "add a pair of small pale gold translucent veined insect wings on its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008985003100501167 + } +} diff --git a/pixellab_src/pl_bee/pl_wings_bug.png b/pixellab_src/pl_bee/pl_wings_bug.png new file mode 100644 index 0000000000000000000000000000000000000000..2b37779fffbe7dbdbab768a2c80c1656b4f5972e GIT binary patch literal 2327 zcmV+y3F!8TP)gG)gAcSgG>pkcm+#XpN;hQAay%24|W~ zb!=kB??3wu{q%uMe$ zbLZ|k_nve9??3V8Ma~3l=O`uwcQ01q&7|Sg>H>{|1W5_tcvhbGs0f ztcsZlYj-||i109OB;{8JGj`aC*B7Vj9h$5|l2ffOPFL0bF15R3w|=KSZ9!Svw+k#s zQ^i7qjC7ae91u#N$<_WY{QKfN+&ErYiIhe2U>kWC{?&2>fB)`vMZDi`J#1NwV}_ZO6xsHYP9RH3KEkLQNG5 zaZl1BLnm3ngy=~0Tf@l%UHan*58~=C~D~nDDxg5n{qF#-T4KZjr&zc zE8lyn$_A59t$yJVd_N`{G4r?L-5qPVbJVDC%zk32{t_vmxpFyX=N=lArxHK`yx>2M zJcTJ~FXBS&dW@NxtUqWtuov-(GcaP(EWNEA37VG~j@`Z;Gw+Y%=imBvq+#MyZReo4 zT<%2_1)z%*aiWF${3yb(A^$n=K+}g`uw@ERAK`lM*Od$^wk<{M zj0u>w@D+U3@LR*eB$Oa;OPYxh1?#YW`9}PF=X&h}e;z%+5g0Z}RkK+j2MIjW=|lV~=9(*e*WLEH79VGrV6_P~T$*{|zQnG9%I8%_W0iE zTc916&%fC*oJ3LB)N%(RPWYte0PeUm3cWpF(}BUmD=Sdz%ppq%$jcV+4FHsHlX=~p zxRuF^SWKqBcjOG1#RFPMltZAIG1JG-G*|#(b$9}=Pq=UX624EocM5ORq2DdVg)gt0 zn%`#TrL?t26w)T8mPDS+?DP7!^yj6&+{yQvBNN{d??+L`>1Hy@)s;MRq~`r>r1wdLK9i;Y3j%E$E# zuO(#x?_9Kfl!3^PPS$x$U#bTv5gM_k5HZodW2k`Q#p{~+o_nBCS3t3|6_g=LAuuRj zN{|XLC_+|1eC$;8L)DeA@A*G+R!0a^fEy}sJmFDpC$3EQkk?Y+4|dgXb8gFD4GR@T zPC?<0XZ?~F3K$9>CD;L?q$T96F2TbQeYye!5?8pxp*MDI*@fwo??&6X&ydyIuJ@B7 zX?*Ls^T^x2)_p9fD3Z>+db|l`@18_mUpOLQGgyF-=fA7+g63qq8S-S}gg<2@;$&Zh z&r9{?)l5K?yyEvyyH2C*%tay=#}j!OWNk#AilyXP34CdaP;aFI zbg&X`+<;9|I0;3tLxE%0VZOXULKA6OK_vJqPIs0kc3+^h@FkS|>Sg{d?>^lH9L=7w z!NMNw08U5aV%;8GD`nXV&Yd?L1yX{r213$`bSCZ(%qx*iP#d4C`)Nq)xHN01YwXXGFJ!Qa^@In?klD1H5` z2$CgOP6~pD`x94Io>&kWcg@AP%U6&Z;q-Bc{veKu04eNhcQ?N1ygc9-Spi++zk{08 zY5c`#RBizj=M7z!;ZOiUXTV=R|d1$3(*Whe^g z^!)um`x9h9NNF%7TtuFrB}^fcTR~`{QclnZ7hZFo(L1$o`)<(3jIc0ignuPSX3lwr zwDTdASwZMwNR$ZVt@S>Cgh?sdm!6*;{7_GFgw>D*gv#mNatnycT!qAfOn0hGCV%X- zA!g@?$8-H4m$U@x6ZHUF43){+@u9k-p?F_N!d}RVp@ElDvS1G0)_wp002ovPDHLkV1lUnd%pkx literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_beetle/base.json b/pixellab_src/pl_beetle/base.json new file mode 100644 index 0000000..e06ccd3 --- /dev/null +++ b/pixellab_src/pl_beetle/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "round armored beetle creature facing the viewer, tall domed teal shell with a crimson seam down the middle and two crimson spots, small wide head with two short flat curved mandibles and a smooth bald forehead, six short stubby legs, no horn, no wings, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south", + "seed": 31 + }, + "usage": { + "type": "usd", + "usd": 0.00919856505923801 + } +} diff --git a/pixellab_src/pl_beetle/base.png b/pixellab_src/pl_beetle/base.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a8ad20f066917d443a78bd8db7b9d4cf536cfd GIT binary patch literal 1570 zcmV+-2Hp9IP)3mq(s~sd1o{UhXrcW>Yf32^Q;G6N`NKpF#bSs?Nk}lH zM&myBbYxjxd^8n^ao@fQ9-%I&a+wwI>R{&?>c@XwDlwg%?g5lXy-Gm(smvtCP(w8u+qgv$9&RW05)_5Gvj--{%6R0&jzC@7$x;B?v{Nc%P z^XNFobzfKkHU=F1_)j=}ygZ@dk4SkdP1wrYcfd~?!^CRzsq6pWc#^(nSsG>r@ z;j0^#8yK>O-gY@Mj^)u#C=>ySQz@V07 z9uG8UhY81tQANl8h~+Pg`f1X`I|8F1ukjMh7mA3%55tkAK+Dt@F#J*pxZXQyK8V6M zJQ&QjEyZiYjD6jAIm{6ZX0IV-8=W6}1;O} z&%{IvFJ9|AW!f|ANKi?<2vnyA&s)D9|-b{Od=M}+pinB_14>>l_RHV)pj+*q>mE~wpH zKp#Cil1t5y=0BP7&~=|54lLb5&tDz81+@kFu+)`lI|g8#d>a;G9uQC-tDu7;J#N^& zx)P>_$ADf=K0o|?T^Ciw6~ObEr^c(Gjth5uJ~U#O@FTyvfz==A@dOrRF|@9}0xk_0 zCp{keV96Fmtl@l*N3$*n8xRc}KlWbM>tGEx#Fv&QL(i*+Al?oLpm+xF1a0L*!FRXu zwP^O9w?fNdPCQ#0qiC#yiO0yg` z$bZN0Hdcp2zkE(YHm-S+&M6`=tPMw)7{cvDqYYM`*$@5NjBQz#og0%5Erv3R;ps5! z7AKSfP-vbrF+*H$^A5tzTGk*zwY85C_16NW20k~0!}q(P6}JbgWhqt=lt<8 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_beetle/base_raw.png b/pixellab_src/pl_beetle/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..e629eaf5fc617d8f9ef7b77a508f8a32a0e14810 GIT binary patch literal 1513 zcmVOrfoOXiI9K6c?dEJ{~AR3+;o}ly1?ON|cB4V4{X%F+`&zByC8I z#+RCi36e(Xb}{-=p@Nl|w%C@+X2q^zwQjdiKx2(D+OoUmoSA#~&iCv>`e67clbN}9 z?m53X_uP*efMqR9B?*>Bu{-5YS_;tot~OO+XZJ-qzuvZ0RUYi5*(-~s4Gpn~qk`Yg0(g5Jv$&Q5Hg7{ZKb&Z%(3Wg^nq(hK1gwKK z%GX3R>7Q2FAltk5$-ZnPIe|s>p9;}AH+KQvc%hW83*GnW8n7Hb@!=nE_GG;&@cW+z z==$uLC|pWi0f(wH<;sCROD?Mj$CS4w*vcvw9XYuxp!uMmJH|sRgf#=5^iT8l^nz6` zC|S4#?W1#YflYc?Pira8Qe1?tG%0tiNYt|0WtR%=U*1qvU>EircEe)SbJ$IGw4x|u zkSwC?c;PT|AZlp;+wxf~+&@C6y7yj6%4X8QI4GFLy9#umxR5mTA2e+rn2OROA%bI+ zOFJ$n3@lj^B7aZU_r44MyRdp>Fk|74_j(h0%Wg&?~Yvu&)PB$YXoWr9+-;Cww}qNduEHt z4%l%HV zbo)ob@^TG&x$LGf5*oq*fD`&aA9u!_J5@k{O&vYM?QtI|E`qg^Y3vc2ukWmjB2l>D z?Iid_p#uVJj_Y4oxbdT@UtPeQ0Gr9Zt5v?xK%0RFggWYeZ!cWy{}{rv7i(4(GFAg>7b+NS^?A6ZtwU% zP<-j8s$%83yP&12oHptG>9xFz#ZM?v`B)x_!jV!o@xfgb9e|3BA4aaoJ{XV!TU(zF!>{y!9WcQ%iO{L* z9*obO%GZc}WYwbWr2xyenh1$L7;Hf)Kvt&w%Rmcl>P>{jmxvU(Dbm@Q6{Z92>u&XQ zI5u!qRVEHVge6;OGb4?But+oCM$$!?y`>0SzxxsTpd1?fjRxWTU$YRNJI5p4ut!c8 zEBQ_+dj@YWfo9w-r_@BrYN)GUL%$3L2fl&tyX8pZOQ3L(5jn*{7n>YC3R~VhWe6)u zc2)slCDJ~xoF+yyMKJy=iX_5{3jO*!`9dLdSP2|56;`+K!Ka%gK4{tj&-cpRhqiB3kF5lRWD z;P=e=gb>YQ;f3%}w^fwlGPI99{9JtYkevLgisdvu1%$hFk>_Ori", + "description": "add three big jagged gold rock chunks sticking up from behind its shell, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007727013852861193 + } +} diff --git a/pixellab_src/pl_beetle/pl_beetle_rock_spikes.png b/pixellab_src/pl_beetle/pl_beetle_rock_spikes.png new file mode 100644 index 0000000000000000000000000000000000000000..f0af0c2c5dc38cd10d8a677167c15d975ca72768 GIT binary patch literal 2717 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 X)ffYXF$>Qr00000NkvXXu0mjf{$?|5 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_beetle/pl_horn_beetle.json b/pixellab_src/pl_beetle/pl_horn_beetle.json new file mode 100644 index 0000000..727bfd0 --- /dev/null +++ b/pixellab_src/pl_beetle/pl_horn_beetle.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add one big curved crimson rhinoceros beetle horn rising from the top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009436408387290107 + } +} diff --git a/pixellab_src/pl_beetle/pl_horn_beetle.png b/pixellab_src/pl_beetle/pl_horn_beetle.png new file mode 100644 index 0000000000000000000000000000000000000000..0446f44458bcab3e7ffd1c7369191e0ab01032a4 GIT binary patch literal 2115 zcmV-J2)y@+P)tZ;a(P;gbnt|;20s#m zJb(D2trP1{)FfhPo?XlLytGWN9X3ZG+zLv9I8j`zM44cnu9n4$aHtN7>(NXh?EsNOEXM za%f%+tjgaWk;ER*lK^`@&C9`kgSzia5CyC{@Kvxf?F3t)BH9D4j;p9jb@ zA(pwi2$NncI^*{L1qDdDh?GIhhT!-VzDH!lGeu~FMSS6c5qytGY0Co&&keg0jnA&- zb`t{K{La$C2qTiWhc4< zB$3a|&Tu5JJb;u?wm-TNq7Z1-B$f`(!5ed*Hs9ZvKU^0Y0Wz}!5KG)wg65(uNmiPe zmBACHYka!y%1)>k-KX6R9&Bj0$(R@n0Jq%9Vl)(ra^`#QkZrO)nrE(7JKokW@@P--qT-XJx$;YT*0M9TIy|Q}Jrv2uM=G<}wl@ z62SwcVHJE>briYtfVp!e#*ItC1I7Az-`<+mK63yi#4lsWQ+v8pf5O%C1ZH)1;)$)t z_}Q(Tpv5bIC*$|=oh)xfk6~#-!G=fi-tpQ~%2A%-)W3IQ`_k!^0;FLH6o1oZ`{KLr z1U9Y-0uJ+3UO;#CnaGoZNKpzKOM)yXI+#A)mD`U2n&yfZ_~8;X2nZR$&K>%5kN(o8 zfPyz4#m0x$^(n(j-s%OU1d=VRT!lNS&<~dofkbVpUfB`qUY=?rU-j@huJ9I@t#Irw zguvdPdbk)e6%he@QPwjDpux{$xLpc}c$1&dbP>f{!+c+Jyc%`ObCI=vyV;P4PtVj$ zqPg=Y^b)ph>o2_&p`hfgOv~rz(BnZgHH3N9;faJc4Va5SoJEg}NLB)^{}iGX;aW_~ z^#Nmtqv3;g6pqYc@_iAH#rAE#LQ08!jS-Z$*C2TBNPfS6Qy5DEv(4&|6+q4qiNvJ< zKjHw9S0M5W`j7dHeA_wIk@c#?22V}0EZI0vCN}$Cp!BE6c zmbIR6Te@EK^q0I9M3$83^XW1a`KG!y$SzK^-YP&C@oxofTvYt?ge_}1xi?)-p!bvq zsJ*%r$g3!i5E_4IwT*4{!a)y#kE>evUU>Z_d?(8&&_pw{M{z8ZJ6qA05)@P-Bn39r zhi$|ahD%>lKkDSBlVqln!fJquY`>Zk-o-bo4MF$5w%+V>B-!cC6j9vYI;%K!;= zB$jpSO1{S`A=Vp|63FVx@{~}i-;wf9aHRcv$87(nOGnCD9DM~9J-QIVNl7IpYjULG z#i|5lW$R^CO5=}VcK20j1^gTsHr4#jcR{MT@zSe8;FaT5Jfx={@M@m@)Q2`I3NN;O zW`4FR!3uREMsBYv-PLU&M|sK{Uds!_9sh19!1MxMj($IByag`1XDK#}nhf6~h5GlE zrO^t`0Zd**+qK`kko%Jyg^aHc>WMbuj`dyH4%468Yfob4kAK*{IB&!dET1zA6`M|C z)6i>mmlnpcR;&=?%#Vtj*Uz7i@}YS+e7KAI51BsJF$d6?);V}l2S{=KV*XIRC4|DU zi_uYk6jT`yk)PYa`-3}FYoEsCsV1;ye|x1k3PnbYD`mxoP2rxu^)Y`7L5(lBgrp~% zp~)*2;ZU7Xk!=a_fh83`1U2!AGXrLfPrF>-7sM`qRwd9%5E~Y(2&xik4AsXVpI2}Z zzFqY$23rA=$SYWtkP?_^uHEXih?JnV!>65)Q3a}8LFCoem`KwYiu@H>5*g_i^XGvo zK|`Fdk|(8f&zQlL;OO+LqKVJ&24(4;C12UBUK47zy;JRFMJbafS>#=#hx>U9%2>7pfh}TcJ<>Dzq4$5USL} zf1kGvMwafdR4E-1&-n#n+Jow?){F&mA z$S+$_&(GBh#`3+s`Ew>RbNoVnW{;>WMI$Lf|Cx&yF-1I@oa~=^uetsIi_^s(M=Ye=R_~Yqp%Lm`IV(7Ro zj84(Fs7LJW%t^L%>^@!P=17RP#)`OF0R|fPu5X5xW=z1YH;T`+xj4;rN>nZ^Ky~p` tJf<5EF39N1qHg~W*kFxw4(EU*!oSE8sMrq&*uVe)002ovPDHLkV1jnv4XOYD literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_beetle/pl_wings_elytra.json b/pixellab_src/pl_beetle/pl_wings_elytra.json new file mode 100644 index 0000000..69fbe11 --- /dev/null +++ b/pixellab_src/pl_beetle/pl_wings_elytra.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of small crimson beetle wing cases opened up behind its shell, with thin translucent wings peeking out beneath them, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008795385970009699 + } +} diff --git a/pixellab_src/pl_beetle/pl_wings_elytra.png b/pixellab_src/pl_beetle/pl_wings_elytra.png new file mode 100644 index 0000000000000000000000000000000000000000..bce3b90cff3ce7f17483f7f29d308ce5ba40cddb GIT binary patch literal 2553 zcmVb|R@wyF>5{!w#DGI_~FopyYKWZEsuOEb(v@~_RJJmUN?#!LXK4)bA z$bQmj?%bJs&iT$g_uR)WKnf|OkU|P6q>#c_6jGAyWCvxzOxhqNqxjkE8Y*ney#XEx zU`ht?b_MLpjY~H#d{kCJchv0*&ZhF7(bj}@ONkn=E9bjZ*qS?`dx3^nI74!hc$b%v zMm6h?z-SN} zDnVC(=em)i2$Q07I|(%GQE$8=*p4LX$sRJ=bIHK z1!%xB_kTlv2Wx(tLaf$V=!4g;~wZ~8ivJLvB?{8bs`|UU9oMqjDSP0 z9gvZHC=6h{P%vJHUOT`&9?=kPY@*?6CF|N3=42;+hqjKe3l{3?=Vj<4 zL5k%7D~OIjCm7ubGqNF!Sxc{pT3rolBT8E{WdtJo_6{$)Si^YXKxw5lwk{gYFZbYC!c zc|@KP#0fDXc!ur!q+9n*--koGXy7Q^^AuC&lAvI&Haq-u2irEaHP_Pp-PX_Oj!wXD zyMJ*&Cx;V9EGjQh%e*6^g?c1-AWk4@j08+9MsVUrAaNvu_+HKJx_2v9H^cgEbKq*v z1hgr2{F_T%qtHL*ric+E0&&OPxpcpI<9~4L?60ZOC_2M91xAAe2?8U5JAr3d9AAjB zfom)&Zrlom-mHk^5icETSIbXsUS_F_M+Bm~a}>Z=2S<wuy9?&1S3D5glFW@;Va=K!!O6D+Ci2)RiIPVo zwWyAuNaj6nHQti}4uyib09URtGf{R=Xfr&q{W*Z`&YU($P6*-T5e@GQ&^>Sd7x4Vg ztEgP;)gnU70S|4P1O9^(Y7(?^z$;BGQGReL41u(C*k7Z_@*i@O+QM|(ga@2}l6IvS{uG^1 zEqrU`oautgsnFkjJgDo<)29Ib{G!*EaBPoqIJkp%w~nw1rrTB&c)(%cSdA79Esy<{ z-Nnks=qMX%|Fqq*4LZRzRFo;!EWB;7A>Hba%iDeXDth)k?S<~MBLK3@5@KV0(p)5P$N@zaY>Da%wnOR4G=Tg} zxKKX~8?q~*w8%~5s;kY!BRS$iPYB)|?SRrPc~p`blD{C z_^~(#?%>4nuR>Uz`s&y+ zwXt3`9-W}e0pb*B0hN5`D5Re{!xlVj?a#=&T}0jqxa>4`OKk3^^|=UHhIZfc%n7)U z7oET_h)q7DjlyoLthY}usjP1VI{o zmJ3hf_*UA`86YlvgyF@BHw^fJ>z7;n@{DYT7C*BNK0e1p$Sr=r%~9c!9C{|h6%xF+ zRq|2(;)n^6f6s>t%IH1W&vfw574rA5%77C)UrCyaWQRP5=!Ep#d$hS*IW3CX^A^_7 zxqv{PZ;g>O>fq!TEs-HN^EN6c>jW3rgh(Ep@?}X0MZ)~dDlPHR)>Uis!GUJYR0*K{ zZv(7Ofto0Nbwr+Iq0G5yq=QES*KG%q-SIDyU$w514mewmU4yc~1dRWC42H%}vq%Wb zux>-1b^>IyKpDkNjmoalS4YG%XR)Mte(7weU7bls?8llq;PMMi6ba}Q1TLB!{fkT# z$RD2gBb5B=xFva3$rv)@t6)fpgr-I|EO1Eh`ClFH7$xjrgCLR@F?i))qziHR1wRZa z9f3A|Yvs=pPKF*x5-)FA1CQ1pr815~B>(7+PI_)xa|hke_a7l5WeXmpXNm}18vC^T zKu{cHMH*#Ldr6|-3Gi_A@Y2Vmp4MrfB0coT*J-;TbjqM&goQ#Q9_FX9ci(>5;3(8 zupdkZdj}{F*yZ4{(^!`eT7xj_&Pm8uqQJ0QSB)GRKOJl3W=ROQ#w53QK%D`S9ruoJ zhJKiH7o7f`{$C+cAjP<%qVfB+(6VC}>2v~;12SSPYaGLL=}934_zL0wi7clkbP)q@ P00000NkvXXu0mjfQsc;d literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_boar/base.json b/pixellab_src/pl_boar/base.json new file mode 100644 index 0000000..ae5314a --- /dev/null +++ b/pixellab_src/pl_boar/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "stocky barrel-bodied boar-like creature standing on four short thick legs with small hooves, broad flat pig snout with a crimson nose disc, two small curved tusks poking up from its lower jaw, small fierce eyes, small floppy ears folded forward, low wide smooth head with no hair on top, crimson stripe markings on its flanks, short smooth fur, no mane, no tail, round rump with nothing behind it, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 48, + "height": 48 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 714 + }, + "usage": { + "type": "usd", + "usd": 0.008553334845436944 + } +} diff --git a/pixellab_src/pl_boar/base.png b/pixellab_src/pl_boar/base.png new file mode 100644 index 0000000000000000000000000000000000000000..6aeb27e95a46397721cd69db5d500609938aa165 GIT binary patch literal 2046 zcmVJ;PUUTluc|GsWd&4j@FeJV&d6_rw-FxSL z-#Pc(bMGAh3l=O`uwcQ01q&7|Sg>H>frBzczoQ25x7|YVfsEoQ>6(*!U0%*!y2+P5 z_zlVc%d1guro*w2G$yCsRUUada>dpmx-; z32UI@%Z;YQ5qHm4>Ao{TwRU9BN%-L;H0{pvrq6C+^Quxu7kqTJLy&ZK5<9GhJ-yZ~ zc_c2ACvxan)DE_Z7q){J^Af+qKF|u|Q#M0Y=2qba2oeE189aA}A$gf}=lM&Z*c{rc zeSL7}SUwmHo0@mFh))!D*a%<*ByZM9PQL3xo%lrZNF0IWxwXl|P-JS8$_`rrcqftY zn0c|dc*?jLaf`Yl14 z1VZwWPsEwFg(Q(Y#fQPPyk7+9x=;tR=gk!NWYyk(I|X?}+tECTOj<7l!uOm!m6yq* zP*{(Xry(^gVnA5TG%c7VrmcsVQBe>R7X|s}P76}#!UVE-UudvyjPv`(yd&CoB+os- zfV}GOVW4(}@g8T3_N<*SIz7YF^+^9@VBk>SJy`fZX)i#YgC5g% zsov#1Cyv(tcGeR3YRk*ovr|F$V9(dNkXBpfvj}!yNFV_-H#e)pA=f1@XkyPQRwu*B znk%|;3wuYxsrQm0EnNr@xI}18+yak9Fp3vbjutsa3mr4^82rfMM&Q$6R9Kj4ITXQU!)5RUsLI?5`wr!adwC3VG4SH# zk@!zLvqb&vZ+&OlJ}#;_KG^KK&fqa2AVZ*OcNXmPpiF+uG)*Y7cwcub9L)X)K+*tR zUnY;p$uEV=&39acKoQ>G^(zedEU@R%<&augs*PJYQ{zLy$j#Ah->xhI+lX*&+!Ju^ zz;gf+0D-}fTb`5mc1EyySWY*_GM-u>J~7QTiUC{@B8bu4IbLDu?5P@gEX&Iyc@%*o z#ktlnOQyE3SPb66=0O>?r>;bN;zc<;E^r>28YS*=L4+5k$!5WDQBf{rhDSkI{0p#B zQAC<7CprX5g{d9%fV1^CbnO}C4}%&5ZXVtN<5y*Zy}d)Yb;V1m5c~LaU76_LN+4)d z2uzBPgIhOl>fZIW)`Bg3mgW&=3mj~lZ?2#Slm`e)GjV;fyw^eS{AVAFbhPSFnYcI_ zHY7sPkB8yaBY(l9wal4;$~CmV8iA~q1Ni-+C7ms0zO~;+A7FuX@{o# zQkMh?y@)najL4Jqjb;LO*4|cJ4udK{;V%{1y%~A_e%`c+x_vydJ^@9*%U$y1DM??* zdn$mkY0rM02%ndq7D0_eeuiFPL~d{DdU44Zi1led!XL1CSWbvQSP>Bc$&vc8JU=|# zX-`2gHIWic|m{dgZ_DbL7 zZFD5h10;D5in!xiGk{Y7S}3`Q;7EjqCKIe!o!oCB6biFNB8vNbg#O5L5lDc{hbL&y zu`QZTDF%3(3EBr*0e@ssQLadbIWX`UktgCt2Pf`a-VB_4PW4qd2Z31(DXEpE`Xy+k zacBAI4&UtL=x^7TTi*!2>?^{+2FaZ3n@9*=OXfZM9L#mVB3}J zfjbwF-PmZn%V&Y~o)%JOkaK;xO@B>?HXrILIDKIdLJ^1{?dlqdU^WEYWrn;h5*UdS z`TmB-kQ|O~b4KD1Cyf)I?jk=4^=WlIKy^KA2Y`b5My(t!e5AQuOuuHa#Q7Uu?+Gg4 zJ4EMbDDbm?se`(piOXR;Xq8i0A}<|=Y68gcRRBBq3HnY;H^x7yJ;?t1xNv!Qe{8^aeC>}OM2U})Rind4 zYxlwSAi&?tcKp{MFb5+HYR0oGp{u7C=1dq3o!vbUx-1bIuGK?9t#12VSf7y4coia0 zv<}CgBeHj!CQRxZ%Mzip$06p1Wi#MnT?;fgkKuiV-5-rij|hR^PgKF239%3|!qH>| zvlw?A7~WBFHweTsXm zgQA_SxdwA)L~3=6M3Zr<{9 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_boar/base_raw.png b/pixellab_src/pl_boar/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6817eed20f5be3229cc34d93f62c45d52ae7cb GIT binary patch literal 2029 zcmVR+DIYmi6l%XhyA_xH~yth5)z0d8r_dVynFCc&T+wR_b&%O7Y-|zW2 z=eY*}9&l*)u`hj;`BJUgt<2iQCB&IrJ>`gMBtsyI} zq;7?}%$>pu2oiyV1TL5(C2uF)ci|Ff0UrD4Za3UHSqQSQYuK?}{Gws*n*bS*ylN0m zzW?tg@r&ev}AD zSOTOuFeYS@unf5uN#ZpUyLY7x2D`e=XYm}#<2@peAsD;s3zIwt_N5}4}T&~*%y*T@{}L0VOrjA0T|OU@pHvF zS#|KAK0zMQb)o>mlQ#;1c%PG}=k4TCD8A=nLL@}T zMMB~Evw{?c0D&y-4hsC=D!u)d^VWjn<~5S%9*~gNWeX=x0>(OFxvwlGkXUG90<4>B zwG4{j;KVt&2og+jPa<4~2T%a!o2>%SWPFUg)O>}Ib~EosOGClsI&mOjeyG6jAu&9V zIFXlGe^Pv`n5}xUcYB45osX|+RDb74u}OM3AkT4+87r|D@rE7S;hTBOV2^RVcyPQB zap0?bNN=o^Rk=O|m?V&ZlciO}3HEo5sS?^)TlLxvP|*n-&Sc(#j+B` z=R%eex5#f1vV7^j)NE-ZFW@AhyWJ3xnha1_F6|FJfSyS=@a10?-eb7e-_)KB+EK?|1+n+jPa`v zG?j^8JgA1j0_~xhk>VT+Iy|t|cpkd$qUoCOsBRBa*Y1iT+VE5h;}OV%f#2t1q?KYvN8+PMI2%Yj1{5uaC`6-miqZ$mH0 z$mOJM6o(x{v3|etJ>m;|8Wkc4tHQ!yL%21T7lwvoDMQb zLQ7XAF)k81PG>lemsZ`j+?+c;5Y9=506_6Mwrl$~43g&w-fegfjj-!lJAfg83Oz3o zo`sBy(3C4NE=sySqaoNU~Q^=^m$>-Hyh4bv5y)1Dm=Criha_iSnt$Z-PyT(7(IehIpWHRf^ zfYzr9VL?O)R2p9KxvheVksuuedmEAGu}hv&kqN|`=6=}UlM@DpelJ~rMOdnHfTfI z+@+b|gK3j31IcC{^2De0%>ebykOcrm&8_BhSh(5dc8&h_Aj>6V45_jG-AEOkQz-Gh zf7<|-q{ng^H;V100FiIAe&?D3>~In=r0sRS_pg8uv3}uFIDD>3Z2Y1CZf)^#V{8oD z@mwe0Yyr^+-vk?p0IlmpfxbE6NwXpM&r>2~oc=I@_jv7(9;Ag!X4Rs+2oL?eR6 zB|*!L+fd{X)B8`C2?29<(t!;tduU~{0Ar>yS_rR^*f8jnt+kd*uoWU{*iY)g=DnQF9C^9?W zcKE2*ebtMl^{pP!O`e4eh4kbsQ{9fowh&00000 LNkvXXu0mjfK$FLZ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_boar/pl_mane_bristle.json b/pixellab_src/pl_boar/pl_mane_bristle.json new file mode 100644 index 0000000..fd5d7ac --- /dev/null +++ b/pixellab_src/pl_boar/pl_mane_bristle.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a tall ridge of spiky crimson bristles sticking up high along its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009079684257507326 + } +} diff --git a/pixellab_src/pl_boar/pl_mane_bristle.png b/pixellab_src/pl_boar/pl_mane_bristle.png new file mode 100644 index 0000000000000000000000000000000000000000..963e23b9b2d900fca34e387dd73957e25d148b2a GIT binary patch literal 2630 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", + "description": "add a small pile of three gold boulders strapped on top of its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007961846457587348 + } +} diff --git a/pixellab_src/pl_boar/pl_saddle_rock.png b/pixellab_src/pl_boar/pl_saddle_rock.png new file mode 100644 index 0000000000000000000000000000000000000000..c517872461be123038de2a963dbbd88a149be6d1 GIT binary patch literal 2455 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 V#Vbx@zXAXN002ovPDHLkV1nZNgm(Y{ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_boar/pl_tail_curl_pig.json b/pixellab_src/pl_boar/pl_tail_curl_pig.json new file mode 100644 index 0000000..113a049 --- /dev/null +++ b/pixellab_src/pl_boar/pl_tail_curl_pig.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small curly teal pig tail starting at its rump and curling on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008048070271809897 + } +} diff --git a/pixellab_src/pl_boar/pl_tail_curl_pig.png b/pixellab_src/pl_boar/pl_tail_curl_pig.png new file mode 100644 index 0000000000000000000000000000000000000000..3895561b289e9d812e3a39bcf7249d209deaf1f7 GIT binary patch literal 2271 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_boar/pl_tuft_fluffy.json b/pixellab_src/pl_boar/pl_tuft_fluffy.json new file mode 100644 index 0000000..20db5d4 --- /dev/null +++ b/pixellab_src/pl_boar/pl_tuft_fluffy.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add one small fluffy teal tuft of fur sticking up on top of its forehead, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009188066562016806 + } +} diff --git a/pixellab_src/pl_boar/pl_tuft_fluffy.png b/pixellab_src/pl_boar/pl_tuft_fluffy.png new file mode 100644 index 0000000000000000000000000000000000000000..64498211b528a49d2ed136ea7d8af8d18282a3e5 GIT binary patch literal 2484 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", + "description": "add a big round crimson turtle shell on its back, sticking out wide behind both sides of its body, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007864947530958387 + } +} diff --git a/pixellab_src/pl_brawler/pl_brawler_shell.png b/pixellab_src/pl_brawler/pl_brawler_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff558d502540336673066a91e739aa86373f3f1 GIT binary patch literal 2449 zcmV;C32yd@P)~;Ahi0RYP5?4yLoEcB7Ea7>;y+-jwL zhrYnVEB~=;UnM*Spkh5i;zH^4~S_Tp(f7ua>J1+ADl^*z~1&4eAu7-3o{p;N9## zDL~M3^9P-hM}lop8qJc4NKMy0T;k!2u-?5eGQh{`%a--2t;C$dR+S(W(OCt^uoEQA z>VF_W{GHi!JQx!Qb3SO3e_8tpQxOup%LLSX6P+wTJbOx>*%Em9|kHYYXK)y%s2qjGU z<3>cRTQ8g)E21?^cp_$jOZV>cIps_aE`43f2O)d7>V#hwKLw^^IXdA95dR+;qx=(tATk_N5gkeUoMxN%mrkL ztwVhAlrQs;vt~0I8tV93s+tS`pAFHqOG*%yprs?Tiaivd2s7QCTf}G6R~ZNl{V5E! zfV0sPZvDMg;R&~3A5`bvRIll)XRq7D<$}D6aB_BqU(iq}?s0IEow?oEVF5ZN2zXdD zDkRa{y+gjh&{fHuWM@T$xmr$7ou`)No-R7!1$9b2K1n#m=6-VBdiDO`r-!5V(SxSz zNzd_F8$1QOyYZQ374iwvat&;Mi%go}&0Tk~Ik56dTw!~UM$m>w}0DWw;&yx4@j!J%+gKMur_( zXpvz9Qp@fjw$TD)Ny3W_3U*{=!Z&vs-y1y42VOp2R^JVo6OVwQez<(TM7<{zrzPcB z7N56;4AS5sVN{-Ol;ThP64{OA{wq18kiH{)g*>F~Z*7wNHGVK}g z&vuIf9+@g&I+@Gk9yRs620(FrOVGlHcJYJo=w;x8pal|3;a4W7T5XGmfDMql@UCR~ zc(>v||0T17VkZ>`(~fueVQO))t};z?wD>`Je^rIqOS^ma=C3alATXs|!dubLn9B+8 ztL^ayNn^Xp%}SmMX)RFD-l@-KKA@qYPAc91ks?byIJYmNMNf;AR;h1L%Ot!xC^AQJ z_io)&l|$j~m)o|YPFVoi)k!D3wG^2kAE3oxkk!?sZV!aei0CYBX3`ineY~4HMbRBa zgZ{ovVXc5xjRkMdSgdT*8K4WLUzFqbOEN_T-fD~Xk{r45&zOjbgjBIck7?Q6?m8;dq`Lop!8Sn!olL?J2kp^gy4V2cd6NFkFUs ztCpa3h@$PTC_#e#P$;w&oS3@;(Hqvbm>CMvvkUQ{@>>|k>Hj@KSs=w7sqG!`9XPD+u>=i zS-Y?!l(mUHK*BgD7MJ%Vg4Sy+og0mH3Y$d?VA%%kDhUkb)o7@?k1LtUUAAHg_Cpcl z^{=DGLvb}gdSDKUC_QcoW85NISA$z", + "description": "add a crimson cloth headband tied around its forehead with two trailing ends, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007008051236470541 + } +} diff --git a/pixellab_src/pl_brawler/pl_headband.png b/pixellab_src/pl_brawler/pl_headband.png new file mode 100644 index 0000000000000000000000000000000000000000..07c8d6beae5f09789e51fa5173b56245b8eefccd GIT binary patch literal 2223 zcmV;g2vGNlP)v1oOsNvmUmk+e-R)Y{k? zGJ__jVrz_XYSj!CVkAZ@n)gedAq8C?>GDtk4Msr}guR{b+`V@n?DE>XhEDHq=FYkI z>^bM2?>pc5&UemTKtn@ALqkJDLqkJDLqkJDLqp^L3g(A4ML)N%Dms0S%Ru6+V&X^*1HdQr*SlCa!cAGrc(hdB* zX!&xAFGRJ%YzFla*B;)9{C(2WH2-HaadQ7@EM2z<0fHWHzk3>`FK)%N`Fp_xJ;bhV zyp{72EIVFcjr>$de+?VKU?7j4eo7KFedljErnlY~KOKbS{c{XwxSC zTr_t!4}xeaczO>hfh>TOP+<(Ez)1EB>^rr9F(HxI_}m{sQ-Q1@XV1qT%b7yMm3_dE zl4dITnTvm^+>-*0F+u#E=|t`%XI|7kJ1%lH;d_AtW@| zW1)jvk18RrOw_$nsOwDrkwS~E( z%YW+m$d59GBmB-V)K}Eu+J`l0C^&&@?X50Ku%ANRas`Nev@72I=qkP(@*i~4Pc${0 zsVi&d=_lKFxj0Sp$~72mHge&KKkqt%4JnK9Zc1v8{%3|qbDv;8iRzbp489>gQ;^4R z@-hw~DJ>Zvp7*R-GW4lUML4FLvQFUT)<0u`ou4cx;Rup4{HK#zqw9eg@0y zyD@Xi^NIq9m$Kf%dsZvfo@>C(?hY4a4^%c`5JD?2dmw8IiVDlnSYF4YxvHg(c>eYg zf#MyBKj~5FYUMe!)k>pHm}XB>gkN&-RaDnFPIY1zP6M!7R;WVf-b`4Jm4jvPb8r6E zE`!5I4CiTLN)p}yaOw|#LxfQZUP|I;!koPaWd0N9E>#5W3(@Y#2*w=pR3^;F*5a@5 zblen}Q&RaJqs!I}UlDw%+*Ex5QTI3^y~qW#QM1!^Q^N!u&VG=C2cKHt$g}$aqOHy5 zQFvnE#;rKBV4m_kb&RwfCMG^i)&ZP3u-m6oXB~XtdUXpbj+OFxZ)?BFpncq{p)aFJ(6%^~6(CZyXkM|3J35-{-ps$K#PP-G)X6U~GCBmtgb4`$VGIKA4po#u zejq?Fh{N;-sqK|(Xle{v2@L*2eE7h2zOHw4bmI7`G$f|Kplo%WgCS==Ev&)y%dMC= zXR=FvU3o2!JI)-~&6RPesUFEfkf*Kj(6Io7cnyya^Zb3{abP(q_dv~$aoOkC9M1SeQcYT zphTLz)EzJk{--w&?e!lZ6!g$Y%UHfR+E<;SX#u8RtVHah`}j`pHq#jH$qDl2y(xgs z5op>tL*}oB*}L=+eiWWQbsgRKBo05e4#zjABFxnLe+AqLoDvRv)5cTU{l%w0^FQ&| xJ8zMieBZC=jTBg2Uc}3~r+wAc(9l4C`7epJmA$;a;^P1S002ovPDHLkV1oGZOcwwE literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_brawler/pl_mane_fire.json b/pixellab_src/pl_brawler/pl_mane_fire.json new file mode 100644 index 0000000..7034b38 --- /dev/null +++ b/pixellab_src/pl_brawler/pl_mane_fire.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a mane of orange and yellow flames around its shoulders and neck, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011837061219745213 + } +} diff --git a/pixellab_src/pl_brawler/pl_mane_fire.png b/pixellab_src/pl_brawler/pl_mane_fire.png new file mode 100644 index 0000000000000000000000000000000000000000..0b27c2207fc9348b42f712f20ce3d534b722076b GIT binary patch literal 2517 zcmV;`2`cu9P)MOkm@WCLruy}x-|P4P z@B6RU04-=i3tG?u&w#eSzv%9F@_50Oz{3OKP9^a0Flc6K+^Pf~9tc?pFRTJ&xPt{e zJQVI?0pFavY2HWerwQ!}M(}VWtOYi2`waAY<~f`J0nG@%ajl?*zsUOmLYOz87XcOL z)-~|%dXZ+jUxQub0=$^5`%aRmuTLCfb1Xey_gTnOO~hjvpe2EgJ1YxMyU%vK5y7i= zR3R|$0r!8;0IlrYjKa#G-G63S&EfG3(3%O)c6s*!_>S-f-$~8>E=F~J>Ug@+7+3iR z!Ra#^7j8}8$72t$D-+(hlZGC>8l9u5_HOH4&1wQ#TVcw$bBa(Zu2F|)ljbgM`&A#Qf%nI^ z*z@X?A1udNK^?-gA7hnAhC#i^1Xyx%7rJ-t0K_LSnrddMnXsfB;Y=>X5-oI>YVhQ; z4uhlL#I}qC6qMdprt#^Jh$pvyW5FcV-haY-m@jJ^D(XCk0a`Ok(hkl)xLy(-z^YZB zH+WtwxQnXY)#z6{5i6Fj!IJkASid}mFmBm0yG$TBV*f5Rf$Z#yxR`%~{Rp(fax@?o zRPBF+=cZ za=v4Iv2V;r)^3RnBs{O?q49r7p?%Ib`8fCCC#DG>Ohwp`NZT*di){BDtrrA1S#ai< z@_?(C&LFH;f7a&{7J!$60}<4vBj)~bIqM53yM_DtH* z(ihq@3MJp4SMIwEibYDltXcwj?$Fb)!v(6$jF&T@qjXVB}NF3_mjb-VZaHIHp)qrEL?;>F`@Y8dn{^bk;JF~8PDSo1-J;>TMyACqB9o$d=?(u zGdVk3*mnH{i~qlVXC%D6rLzLUj6ZEe@`$0>;@b}GY>YEMXt7p?TN$7=Qji!x^rW~= zo}8k<RLP zhN5%jN*@VtaUw)zv{85^3aB{L{_7Fy$_);!n}ai*;AE*tftPgR!<4W!4H|z*G4^o% z(vR%AJu{766$O}`A;={&RgN+o%>+3(js_v9ZjE%28h1!8FRA`N)OKrwlOC$=rA`s*lnPATvkpbY*Ob3^AJrGYJOpmpYnj{O41xbXLFaeSsEmSILq6+o zLSa)BGZJgQy@-^4eGoov0W&L|L5F6o1#XqxgqOGJ3s2|KLs53xn6H|n#vmmsDo)vT zC5F=(L5*!s9=BL>h%)*Hm?A^B34IYUbv8A{W>dhE;`=B#eu3G&__&^(0d##U$uv1H zU`Tj8JN&SQ;Z{9UO7i?vwEVo6fD}gwLwWM>MZF^nVYJ;inY7+lS<&(Udb3VqzYfJ zUCmC3WXQtXDv=3wI>)j=XC^|566D4HzPyw6j_mnOpQ^28fg`{&2bo5#g_~s!%qA#^^79Q)nIFhc-cN z+5N-Hdo1J<6UYxNsFc#`!GHUR&0Vs42Xn}trT~#rTS9$pJ&w&?jJVXLObPZt=YNmy zS0iF@PmBKY{OgJm!e`9E(eiSPR|n#1cE)oH@7Dhk>-*=0IFg!*++&4G>1z(^Bj;CD zre)s{tU*WX=7OTg zD}Aclk0Ji_6N++=(`~b#2Q&sz&I!_@W0-K{&vP<)NVC|6M zDBQOl;R8l7;T@sA+niuTJS$il6WrGOMY3@@1QHg0eG;o zOXlP7v<1lico8~=O2to8q4`-yh", + "description": "add a long thin teal tail ending in a crimson fur tuft, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011516327937444053 + } +} diff --git a/pixellab_src/pl_brawler/pl_tail_tuft.png b/pixellab_src/pl_brawler/pl_tail_tuft.png new file mode 100644 index 0000000000000000000000000000000000000000..72db9a207181e49a17daf52ba5ecbc36cce96657 GIT binary patch literal 2339 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 JPDHLkV1ms;h1~!E literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bunny/base.json b/pixellab_src/pl_bunny/base.json new file mode 100644 index 0000000..bd9fa87 --- /dev/null +++ b/pixellab_src/pl_bunny/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "rabbit-like creature standing tall and upright on huge long flat hind feet, seen from the front, round smooth head that is earless (the ears are not drawn), big round dark eyes, two big buck teeth, small crimson heart-shaped nose, crimson freckles on its cheeks, short paw arms, chubby round belly with a crimson oval belly patch, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 733 + }, + "usage": { + "type": "usd", + "usd": 0.007280090755886502 + } +} diff --git a/pixellab_src/pl_bunny/base.png b/pixellab_src/pl_bunny/base.png new file mode 100644 index 0000000000000000000000000000000000000000..eb73381c99c528dd60e5874e9e69cc2160397185 GIT binary patch literal 2038 zcmV*18Yb1NDThnUm^zD}H+!KJtl z41gy(J;i5IARIQ87V)_vzs&EDJx{%Ewn5hsG=gGdTOuuI8HTj$>^IH>y?~Ubu|K43 z)to@s>^+PhzdeqaK8aOxgV5Lj6}$AIK=&oti)@u!v8f%iXI7j#Virmx1VS3+mgd8{ zf&%OsH-+zC_-ZN6{ZNjmlmx%}rgx}7(IR{20~I#n)cQ3T8=d4=Msooj)T^5B76!CQ zWX0*25ZjrRr}qe3U!7Pr3=CMW37&L&hl1O#hDeF#{d(~^Iy#9bLhgNXV*@T##kR6y ze3!i*zwX?E8Oi3M4t482$*#_PL1-p7AQ&rw?NDrLN00&+wih7!#gVX* zpFnIFJT|QHjx1k?@nn)obhp zK40iK;y>|#Gx=Vujeiy!lM-1GIfkX3a{wWQT3bAbG&o3&!7e zxg$J3YZms-oM{@x8Z(f>WQZvI&rZmcXqe#$}M}wnd3gt_2s<`eEeHAqd?nbR$xB_1uW#Yv>Nz`2w8eE6s}$R z9hbeAf*aC&xOnUY#|@Fn2q}?hR8mxFi0ZxR*W34HPEf*cWLqh2DExBND|=e6D>OuP zi$TSna@&(2HR1tH`ljL9-aTkDUZ3?tEMq~idQ4QW)`o<7MkrE7a7Rjc!i}rH>6DnW zLb`G^n@c6F*97Y|O@>X{Hbec#8tDO%l0lIoX9?{TR(bYHE(Iq3mFs}kYUIunugpV z>c(5KapU9!m7M=Jd^uN3kE6-Xk7}qWC`0Pp z)wo%CjrR&d@B-8(11OZo8#-q#UhA5S*k*d-LPCz*KqCa+lMzOh?MK4igPiP0#Z_E5 zbe1bF5je6tCb=1a5PP>)l-qre?}@tghP-S?99A?2wjo7Qj0TUCcN4QaW0mM1sOG=v|TC$`bg z9Wt$k2oyHl`firfcbFh)8oEDi1WW*8k|`6NUTq_|agQK+N`%GC>==9bQb4XFsxmyL zTWcB{<8of;cFo>5+9ZbfbV|HVi;c_?6C@&ErNvz5=9TMs=#lz0#{bUFL!4M zD1UEZ?oKg%a-6wO;FshK-sTp5IRkn(CBZ+vX0*xQklzMyvFN;+L9Q;`)vT`=F2>=h zepW;0@d9CZh=gTlC)n-fpCN(mTH6pBZ?IAwI^XLbWlD7_2a1UY_oq(>4)8z0Kh%Z3 U1~!t)>Hq)$07*qoM6N<$f`on1@&Et; literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bunny/base_raw.png b/pixellab_src/pl_bunny/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..ff17f885a296f09488e209c25444df1622c56b0d GIT binary patch literal 1965 zcmV;e2U7TnP)DzW+65;n$IwP;Iu^|22GZG8@^(}cm0Us1w!bz!AXk&-2;nq$y& z9Y{Ob4v~_(0b{!L_R&+jl!+|q?wGD#ohIxmKZPH^J%{Ka@m}2)8WXNQsH+COmu0PX z#3xh-bLH6=Pn(UBv>kF04>b?A7Zu^))Vcir@>lC|^@l1%CdK*mH>IxvC99q3vm=$b zxMM4(L?!sNkuFmqscD{v7||u3iBg%~sW+3oxMM5#-Sfr_otTA=^_k#KbEX;*PRO<$ zHi+w}s02QEEM3}GIk~E0Z)GXI%i4io5A4Rm#9?^ny|?&xfBtb5jhj5nThI1dXr^r@ z7?#2@LaGE!czs_HqF$K*tFy2pXY`byi#@$@JEmQ}iRh#lZkJ>)9XN+hNwF9nmjIU# z$SXa8yjN$`%FB^T5LqFd9b{|2>{YtWPI&iqQ1*XfSR&15UK)6gW5|n^~EVV-A<16Q8?qCchI|n}>7EDdeGBKD3`70kX}6&pY(y zLMWU&+5Bz~kURpIyn8KMcv%k3OB$qY4vsYoE=1T)|< z5KbK7xD%1?HfxS<=q+Tf9MZS8{lFMgZ|$n!5x#+r@2F;!*5HJBcnVNx8_8OD$Z=RC z6$p24{*GJaHv{nW;KteW9Cw79afF*wvAiVl@P4UTrCHbc>z0ICU#u=S5PmsRE+wh= z6&fP@MWgy~mE)kjK7>W9p((g~|8=V9rGcY0N)WUcy0>LAG~n(!&+A`G(KX3g;u1&|W!*6p*A zE?MleqYNRWYbLTQmaRjz5vN8Dis67;610QbR#+rIzu+*(4&yR5aNf7;!dY+DQCP`` zjs!!+3F%r1R~21gNj+3ljQ%2z+az&{g{cG^lopkmpN;VqM>*Q-{iKHKqDmw$+kyu* zcloX&fL%s?2rHC_ja|A8Z}v?@r#5<^Eg?0}PTKySnxBn{mB$cwX@#Z7oSfs7ee2xh&Q4! zk|<|#M^5lrxK>iGcTiRQbg1Idc{(ynSy%mI1S=>o&m1u@q^p*;{Z>I!r>swt%5u;9$-Ce*RvZRPM?5?Zg^Z|ivxSVTIQ&ggO#utylw@W zwQmV`yGU**xmHciLIfdB??Q38aJ{rbZfQ`oOdg3g-Hp2lZ&>O_l+0Vx#!cXE*8$&O zs^rV>vaHpn>yEHy6-1UK)w*eOzB)RoX-LV_vxvMDleiDs#&^-{9vN2R_Qi=H>oD7C z9(E|2hW;Im00}^JB4z4nCTTw_LGF?ayqP%|ce!#v?jyVzgt^U{#^i4m1ZLJoO4k^Z zJYdJ9SlvwjVdwA@LrortniJxvFeR3~jKzZHIzMo>+#2E9Q!Y8Tp zzcv*)zK2+QPaSCJs!upfsfAZ%i{xkdotvbF2DUfP#00000NkvXXu0mjf<-f^p literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bunny/pl_bunny_flower_crown.json b/pixellab_src/pl_bunny/pl_bunny_flower_crown.json new file mode 100644 index 0000000..f6bf79f --- /dev/null +++ b/pixellab_src/pl_bunny/pl_bunny_flower_crown.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small ring of teal leaves with one crimson flower sitting on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009475136783387926 + } +} diff --git a/pixellab_src/pl_bunny/pl_bunny_flower_crown.png b/pixellab_src/pl_bunny/pl_bunny_flower_crown.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc3389ea7cc8e970971f9e8dbfac157a2f77e3f GIT binary patch literal 2096 zcmV-02+#M4P)1i$6h1Q@P@uL6qJ@GA)B*)kLn&J%Ae#u35K%<`zz+}*Wf3DpTu|8pDk+QFY6yac zMPdq479&uEB3sMavPyYSwg!bzmRi!zm~;Bh?S1p+L0j%yTKgr_J2UUjo%?GE9|7+qf$ zBVhf~1NEXX!|=F9^3f}wpmQc44CsM+QE5quILFav@>uS>@-NhQ0l;n6XyV111?G{x zbd$?5dHDf1|DZWR_5(cfU79>fWiSNLgS6}sUc2EEv=ayo1OrK3lflr)TY_ z^0(m=p}-YK=l$1|Sq360u``tuV!E;jT6Gq{V&W+aS9|@KpMQhOi@Wp0y_DT~@Ob+s zLNK=weiK2100}T5rfY>C!e?Yl@n=5`@H2i`{wtL%gcF!7oB!G^+o|07_Vj8!1+2ko z-@=BM-=d4+!Uu17Quny1%t>D0(N1-n0v7&BTAxA}gWGomtJH*Xt-4gW0Tj;CH8{8J zBxt(Mg7`%QO>uix`^i(Fd9PN2ykn(O6Vgu{0?l+@?T|dfm2sL%e~DnIZm?;$<`1lc zMkHMzrV|TXt<)9wH!6*b_?@S*0Z;Z9;MX-a(Bk`3xcEHXt(?mdYX^%@x zAqETJkEx)8LY!H>6vnsiCdfGfErNlL5y|6oyyoL5vjsT$2%HKkLuEr%Lr9`oQXe?^ zQ!2#9bP}t8Oae_BP5sY>>*4zL&G1q8zA*BgH|V*d+b*aV-dy+tJ8VlMgxnM;y6u9C z>DwUo^-zgq)iFBAx8$j`BFVCzXcv`<-tsDnZvdDCse3?^FlIQ7G(UqS&VP1{8*>lRQMYa#iWO8$1p^cTM<1cvOxV|2Z?A`#{nBWj z<3a>>h}h1ssb#(*@9J&HUNK2YzjaUuoYRbU6DPyM&%S|WX_<5+&!iC(1ZBKAWdsR0 zD|4$);g~$4W#e!-_s1C}eKr)dVc}el9Wsgpz#}c8J+$oA8X$8!+{`&fmF~Gm97i-K z*;B0LOI8ti6o=-&n>@z?I1L)qFZ(yzox4S4FSSjzpjyDWZ6{$xY$6dyA~N_Y~ z2GIh3{&KXq;k4W#I({-8vOk~Wu|&#*SqL8ypz^-!pa^J|c3^CPNN(DJ4n*eEatlG& zErQA0f&Kvw zLPfH_PQeoj*|=RRA)@yaIO#I zcn)OHgUfq(Un20xPTQPGB=H$+i-ka-6GSJ97NRN>q*MS`#%V$1)uo%LtVqHFML@zB zE{`~qMZ3OEktNh#ubHc$xbUvL0+7(Yc9X#rKs&Ky5e)fsB@FA{o3b@k0gDiqb(mIz z0eT@^K5&7^H|#xt>Yy+vO2|3E(vlKw^pRZ_9N7gUq`(HT`&M0e{;_)ybMPo#pG}At z&*5)Q!4jG~eLIqMn0y0ax#79>gk3-nvRjVeB8Rj^aq_3fK2oE9iVbbQ%IQC^jN zM28P}M@9RfTmY-b*K;7ESwrajbPV0tf8i_!Kfb=|!fQ(p3xlhiXP;s?(BNJ4lZD(+b#)VSRgdFN;EtYwy# z(h1g;w#cGQcN{>=VfU8h`G&G2%;ZXoV8BB_j{M{f%IPlqM-T{{3cU5T!#+(=aQYtu z?;WHJ62Bjp#z!LR2QCh9Nogyu6qc0J#{);ko+9({Z*GxE;+-KsD+fSwAcSU*xRQNQ zoL3e`CF^T$69dZ>8Cs7oIGh~X{kFmP3u~Pcqud^YiB~mes8y!2y&n)-sIebe*P<5S aKl}$BO8Q>*+|O", + "description": "add two long upright teal rabbit ears with crimson insides on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008531954050064086 + } +} diff --git a/pixellab_src/pl_bunny/pl_ears_long.png b/pixellab_src/pl_bunny/pl_ears_long.png new file mode 100644 index 0000000000000000000000000000000000000000..b383e54202d9a4ac804def753c0dac0cd268bfa7 GIT binary patch literal 2200 zcmV;J2xs?+P)o44{ae2UFTp&Tmlh8^KwktAJmUKi zn(uCycz-1TG@rGNLNG5UpZ%WLMF2=%uqfPJX!7VEWSUs8eH+ zJ*sg}EwzQn1Rn5A4H$TY#=Z44xi2!p&D~#EzW*NRD0n_Ur1b%4^8XI;=}C~XXz}fL zQS%Y=B;$0^*KHZVlxwcBh!|(T-wQCWCRTNRLD{}=o@BZ{6n{A!CE!%~uck}wb`oGh z2hg}4mKvyb1Fw4Y>;YaO#*w20R2Vyi{CgY+q~jZz^*p^!PvYV3d(Hrr=!_Ag>5};vY_C0HWd;Ly z_{k@NeTwJs%J@lW9?Z#A;w9mBl-Ab-zu2Ur_1HP+J8~d2Rh$Iy`JlF_(5tnA+mrH? zck&=UZCD8Lxbp}-px>4ODw_N!sjV&ch6yolPZ&Qj(Xn3=t`aYalL1mf+VBuYU_W{e zWNd9wA$OYznu~K$F(Y%-bM!^(xm^V$@z}3Q1@<@YJpl<*hKEQ5se*vp>Y%wakLl9B zKUGbHNur#PnKG7I9P?wPA1dc9qwmPTrm6;0g(Or-aa$D_xQK?IN?_j5)Go*1&LiRY z!Ldj@-e+2TWMvmIG^&D|wZRy-CPE?x&Pb;=aqyU+3q&X)jZ$&2_-DA{FNft5ro!xn zuhV@U?ak0D_9xL}ZnmN0D)Ii45dUJ5!MwT} z`p{{SAz?gfRNz9HKQ!4)t}@uRGKb=N2@HCqWmm)Jl?7`dUlu`_ zL41B$6^T9WJdJt9c#a$E*W6%0+3?Yj|I#E_x^urls4QR#tMB9uEF#VX;UDG#1Of)5 zgv~%Bn7^~i-1QaXM#9<68{AquxaI~o4jBtuz6|cNlesDt}J!$x;#&Pa%o7kjV`-Nq*b3{85(+AUH0N zk{JOKe>EbMeRu*a#azN}_%Qw##LL!;lvs0fGAAY=q|34-IrgI;W=nij;)7YB>uc7) zeNa&Z7f(TqG-`GzyWe*C8vI#zDM+-O=+;fRSl>W-LwBhNNe~&x2(B9i4HGJn>eIz; z<9LU}r(4woB`o2JCB$_=%Ww5^r;V|CfK&!wmZ%Sa=!E@fA4hJ_D z0%_$nrWy7^s1Ig?ZUsK~qAbplctl6r6{ALoHh||D^*yGMm?Ka%)IMyb+@RrnJgFbV z_3JIN!94T=(OnY+8%&RYJ4sJNMg)x3Ap)@nPsqsr$wN)=A%54QQ35#ndn|Wh#YYlC zI~oW;(HHAO96%lhJkk^J02Mgo9J1))=sjEpbDMYxN^mA7h7d0wT38SakdS!sB4w~@ zoMNplD(SDQ?+P-vCc=dyQEJeWy{x3m2g@1(V%e_4bZ^$ub%qp4W(ES3Iie9IM!QrA zQrB_Uzy+c>-@yt^Zv52_jg_Z^aRJ&A zX-}ev0U9na>*Gz3J$|y8vrB~gh6pktr{M^UsIDQ8@UpKRTB^?x@sFiXqcM19aHG8g zqR|LyImZuhIDPu$DGx3m8Wa<=og8=>6`2Jk7X3+RoG zF@qAQscJ2X_^uE2$;yW}q3-BxQm!Cs4}mDsx+EE>J0ra*s&q zfyhCNMpaNNJ?denndXY$)oT@^$Z3M+6e+RO{q{Z;N);(0nl!j`c=CUIQS8zm-~r%2 ah<^bT`Lve2!dub+0000", + "description": "add a small round fluffy cotton-ball tail with jagged fur edges, sticking out from behind its right hip, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00800647751490275 + } +} diff --git a/pixellab_src/pl_bunny/pl_tail_puff.png b/pixellab_src/pl_bunny/pl_tail_puff.png new file mode 100644 index 0000000000000000000000000000000000000000..e7077c34ebae3e5a3ad4f16fc6633a47bf510fbf GIT binary patch literal 2059 zcmV+m2=w=fP)1i$6h3$6VOUk70Tht36w0G)vKWGpQUnzcqA@`d5rpkg!EVNZ1h)Q6dK7 zl9&Lspn*`D5<>$NTS`g+p%qX8ff%6R58k`xJ8#bPzOA%%UQ=bhWHK{%?!E7RXU;kI zoHLKehYue>37rKVfEr ztx=_LZf%kt9~|Ib?=CAMOWC9}L=g|PRvsv&vMrlazD|{@w+`}J*)*YNzl5D~%8HUt zplk~35LM=#;rp_U>r=H>vOJzo_ntT3Rrh4%xudfAO^Xi5wKg;(ExRY5gYVDdA(R3H zyq>WA;53(1GQb1?dBXw_26+g<)}hEeN)c&Ine!IV>Gf;0*P5U_oJ)_{yNzCVY#k(R z!}der5ZRVZd(RZJdP_gkBrfEgp|06IqqG3m7Z06w1>vwQN zPafmxL1uhLKPHZ2c8|eK9^-%?C(Vrzb^4oQEoV-cf|vdv;MGJR(P3;hpVQL^(72rK z3H$9UFQ%iPx#Rv~Vaa7-PD39jRAaG@09;Hv5 z<~EvffY^0RkP{`mlb?P=v#$I}owK@gyS)EO$2W}4i0mqRP8PDZc(HzqJOs#x!{LO_ zp#D+!M!y}KcJcZ7S#QD9y8<)Gi}v7X(!8k%S2r3HxUw&g&z4m!Qy~$#i57s_Pw>&p zZ;Opb`Y1bUS9o(lM58WVtD@sOIX0k1r2$KZj&!dP5N%wsiFWKc!pG*7TUe#h9t-#Z z2=L>d4zaxpKpJ-@d7w+%7IZnk+>A- z+Dq3*3kxOy@(>Q5%k~EifaV}RXx^$7_q})LPUJ^DdUuu=lfX{DOdm+Q`vsW@NC5Mf z%^{mK9laf(50}2{ngj&4dr)8Qivt3KO=H~Jm0S6Zqo;CWfW`Zd(CJ^Uy5v`n8796$ zHHKY4=LY-JqET7A(C^mFbl)II!0UrtqVU*Ei9s9!lTa9tAZTH3zT0p43z<~0Yll~B zC(pJ)Xn>GUw%q}PmMx{@D^^Brk!Fnmf`GQ*K0yTN`Pwb=2&+dAiEBe_0Br0qkPo0> z;X82|Ac+TDGiCBYH)C)Uk6pn?X|L;d0LUgm_qoYnuh?`fyU@J-8?m z3Tsyo0;qXxLrcbbcO?~5_C^g_k zA*zcaWxQFy40_Nm_X!f8q~vv|Dy~u4EovH5tBJipRGcm$E(Bt!YTwHOBBE=j&d8gl z;0NJ9kp!pB>NJ}`VZ6uDF(7Fnp>Xv zQ6$zKVv95ZLAL4Dozg~Rn9s3h4X4+;N41v3qV(*!S~V7a&`^<}9^)(=i?$7WMr8-&K^Ope zIZM)`9P+{U=I}EJ5Wsv8kOWBxi(`Q|j5m!#5PRPsp|I_|u~nP9^e9^HwSNQk8EWk2thJI zKuFM_Dd$gcHaX<+2Rt@=`A&LJRmDOvb`UKGO6ZT-O}J5nAgD_)6rg_(RkmTBo_}~4 zP0Ail3vLz=-Hz`h>Yqp$&>-0V6vuZ2UmQWBAG=GR7gq50_f+<)93z0V3FqS}PX?c0 zuBo<*50E!d(@TzMDmg-tU7zUpl1MUxVhG-9*P;@>zc8S$I|$EANVW&knYbuC!M;T1 z`t4Yy+c!aCRIeRPQR=|)z}m{I5AC>m>~J?aL^zx%5$Zg7s@uOY7DVbT1e1K60Fr+Y z@oe3JdXCezT$H+TFjvDYV8_q)?HLvMMP@>xRGk-MgF;Z zh01~Y6g)s4OKaQW3HO0ie)d-jA_^dds?IZ+5vP_U$B!Coq|R=;RFm-g<9qaW`yzP? zhv&g$bc5^yma^TbO-k4R_H=m;@V9*<4aOO!AgOOG+62?xYiK}Rg~=(e;Xtqip@;AN zO;+=!QMHCz^PqYF!HHSBlj0^%XvFt8uz1eqKprX$o3H*tWWI5Ynt|y6Wvn3f?=&J@ zY>!ewt}6m{?5`XZBcjNjjRng>1Z=-j335k9w30u6M?Z@*86K;YTOV}C$CS%}>OWFN pKB_ikO;FRL`=?JIKIngfe*jyQ67E0SqN@M^002ovPDHLkV1lq**q;CZ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_bunny/pl_wings_tiny.json b/pixellab_src/pl_bunny/pl_wings_tiny.json new file mode 100644 index 0000000..4a285d1 --- /dev/null +++ b/pixellab_src/pl_bunny/pl_wings_tiny.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of small gold feathered wings spread from its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009463470273547703 + } +} diff --git a/pixellab_src/pl_bunny/pl_wings_tiny.png b/pixellab_src/pl_bunny/pl_wings_tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..7e348558ddff0510638e91039abc16388f2332ca GIT binary patch literal 2188 zcmV;72y^#|P)_5(}b&Qp;OG9zsy0V5>;A7$w*rAmOQEXep^;!XrEqL6nvzDi5g! zVu;K73j4<0;t@ZiCN2M-=Rc<}JQf_4Mv(r-n%v>Qcwc=2++`y!ZfW9FnACZiU^ zv2`I0jOfENmqdj1oe(l3Pv%YdK-^IczVSzbUKnaxv zOY~@ag68m>+sQcQ#p*)R>;-CjeSIDId~rrd9IdDdQi6EK@ohi(C#cu2CmbyK`0O4& zyRNl#iga+=lsVaG5aJ*vmymz9OE2TOHD6TF#N^(b`P&WXz)A=fP-Eh_;^G=@eErPY zL`yzCr(Q0VKu10;Vlqw;^05Bolzy~h{OjBgD9_5~n0EqljLUq$c_SrW-D`K0t5I=6Lc<5q#B^c=Et9~B^Ra#IB*j~ZuH%oy>EFaddB-i~s99{qsb z`HMn40DaJg{IdM;H+-e7T^flO803MvYq~21Xm^f0XJ{=_C4h`xUvK-n>JjR5s|wce zz1PGSk?Di_V5R7g+KE5IdrGSIQ$n+*>|qY_1d#{YX4NvUP?;QXp~jz~BT<4_QS(Js zT39_dH*G9+ojNV3?Y^O%jnAX5j=Y`w15VOv54=_r)Y+tj5DDHK zkQ$V%3g*8@%hs0hh0oG%#`v7ktiZQ+ZwmrNdyq<*pq0nXjvwe=2Fmb4Y@? z5CZ5A<=mgzU~#n$XxgGVUq-tgO1!>yeo$Y?UAonopU>ep9<*Ij0-dV4LLbj4Fcbp3 zFgx3r@Rx0eXmv^-D(>5pttcdNW=-MymltoNyqT{UgpklSJkpDkAg+@By*Q?!oW%@K#GnAwPh0%;HJB{!2 z2KJ;QAAQKg;f*4n7)UT|h(BaScDp2~IZ9?y0)U*b_q!(S6{yTG5eA0`2zk3@5a>H+ z4(*vcH$*9-FnE9{0-lAs0C~Z@IuuPzq_GQgLde77fND59@{!~KV>!e?GBC)GUp$RQ z&w9@AiiJ--W^|Gajp7C2v`II@#$CiiIp#ZVQxWatWd<{tqagNFk_s;_Z4JYC@yO5BK4+V(z z1^6h{V7TfIvOyUWi_WwBj^rqE=pc%L0oj;HtgXt+=LumY?C4Z0%93^O;7+#3ViE#o z;w)q!1OiKN5P4YJ9RHD$ccXxi;=-I1CH4?9fddTo2D3YhtIHku{oDnrJy>lJS8IVY z-&b+z3=hmm(?Tp?Ql=a8tGOx?_jhw3qG3aHc3s27{@qn*ta3OQ2`e{WobY>2zvm8&%yj95zT2aZ`4A- zRuRa)(7aefmc_)h47&W)Zc3i;61RgyI3Uv_exVrI00F23;T4ze%@N`sRUi}{<|OFmDBxJdAtr)7|MNwgxy|Ch z!V);)0jV*E_wsJCU&}h~`^5ZD=Z3EV;RdoQ62U{obYf5Q*|h9 z@B+2Ah^E{c#TGi;x8US&j^u^7Spmwsz?jJ$-^hM?ghFZOx0dP%3n-%PgVsfnke0iZ zCs@o8sSHt9fIeu|+gzfmMa!nl$-0dYylvFt;;6dvu(+@-pr|(8JDZgdLL5mGtAZ3? zfq#^^etjPA=3z{Zoto6=Dny`-nUgHnDU`IpUEOo(^bdw2%);8f=`qiPl>_9}7brN9 za{C{GcxnVh0IPCU{a=t2G4gtwOJf~MNTJ$t>#<>d6{ry9?U4B-N#@7W*rZwDkiaz; zmjDqQRf{knsGj8sqz&b;-#QHkBDh)n?L{}A8AxCAUux7pQURzJ%)8B4d4Lv(Gj=y2 zq@Lrc+1&0`w+SH+N$jhn?8Yq literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_chick/base.json b/pixellab_src/pl_chick/base.json new file mode 100644 index 0000000..adc9dd5 --- /dev/null +++ b/pixellab_src/pl_chick/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "round puffball fledgling bird with a perfectly round fluffy body, standing on two long thin stilt legs with big three-toed feet, tiny folded stub wings at its sides, short pointed beak, small teardrop-shaped crimson cheek marks, a ring of fluffy crimson down around its neck like a scarf, no crest, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 301 + }, + "usage": { + "type": "usd", + "usd": 0.007238638586468167 + } +} diff --git a/pixellab_src/pl_chick/base.png b/pixellab_src/pl_chick/base.png new file mode 100644 index 0000000000000000000000000000000000000000..81611499968292809e5a77eb305eb4ddacc6d627 GIT binary patch literal 1426 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 X!eL4ixC%Sb00000NkvXXu0mjfc!`=` literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_chick/pl_chick_tail_icicle.json b/pixellab_src/pl_chick/pl_chick_tail_icicle.json new file mode 100644 index 0000000..c26e577 --- /dev/null +++ b/pixellab_src/pl_chick/pl_chick_tail_icicle.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a short fanned tail of pale icy blue ice crystal feathers sticking out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.01125643727514479 + } +} diff --git a/pixellab_src/pl_chick/pl_chick_tail_icicle.png b/pixellab_src/pl_chick/pl_chick_tail_icicle.png new file mode 100644 index 0000000000000000000000000000000000000000..fb332c17047c40a7ae3f39c00b445c012760a54f GIT binary patch literal 1688 zcmV;J250$+P)ja?)Io`BQv9?qzASwz;kz#{X;)4hY!9P$;E+i(Ui5db3 ziJ~#$1JVFOB7{WJDu|TANz1FYwU$=&D238PK?sjx>B>g$OdbAQrgC2lw=rDdu?$-vew!1rA`FSkwV#9gVepQUIi&ta#^hLd5 z1j!)b$oSy%_Cg25v2$C+so=H6f=k|mxLos-VfBi7K~_OHxw;V!~sU3|3_ zf!lYnI(bl}-x)Fn$nHW9hGwU0#7Dw$zg6&EB5(&2^YHnhq{jcSWu{Ad^$T{tlF>fg!A<+czE7QyuM|XMtpsl*LV+b7kbom z%@;-3Q!ras7>DlhLk}7h$ph#hgLZ|}n^y8}VT{v` zhrCBL;zfAtbMd?1->KfKEMCTw9Zra1(LH2prRAwE)RpgL83k!GfyQbq+w&uS`D`(2 zysdDjB%8BgMA6AVG!cZLF@fG04;kB9uZ9)aa40xkj<;DgtuBfWtz*n=&&U;aF ztO1wKU4p;qye2PPwRuhx$OfX;dH04bIO#Fn*6gT8u3K_W9qdh z(W$FfLibU-0actTtry$%;31IuduHljR8(DHu73*>W;6vuA?*{yJCYG=PtX{k#d{os zGJ=tZxYq1f)5&9pA#w0P^}6)6xe>KW=o!L{Ke zG60DevAeXb&pBJN=AJqw^bBmeNk+(m1*xe+f)!J`g@`D+?qoB3f%bbZ`06mK;4RJb zp$1@;wg*>?fB#yJ5ziK~bjqw83?0pu!PuNOfjwsQet^sqp@tBlmUdZy(m((Uorx^W zarpQ_&|-+D!I6w0Y?{Emq*zVAw022{eLkuNa4R8=;yCZy1jTb6(%i6MuF^%=wGalm zcyX(Ytp%!&zMoy_&GSXkdXYg~ z2XM#$B$}qe9qbaZ@`beFT|o5$JzLw#5VE+I=lcet z0mK%MR$q^V1mlqVV!bRz6~sjeyE;mNPi_rykw9RcFGYUtc}~`P~&jJ7*RLLh(bbISPES?kZ~wF-1w~)*P3eKZ>cq`ZhZmu iBPRb>iHV5`jN)Gg4XV-=MLQb+0000", + "description": "add a tall crest of crimson feathers on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.010989243825276693 + } +} diff --git a/pixellab_src/pl_chick/pl_crest_feather.png b/pixellab_src/pl_chick/pl_crest_feather.png new file mode 100644 index 0000000000000000000000000000000000000000..37bc69ec53548c2c5881cd3f5698ef05bb685d36 GIT binary patch literal 1663 zcmV-_27vjAP)MAO*Zd2M?ZA>3vtktIeZTM46lQyKU^pQ5iDv4=Q zni$ijFKZgC4ZpOsrnLktm{mX^kcznVqe)%-mfTzGQOe#hv?| z_q}%kn8!TkGz5qoNZ}Zl2$2ElwY24c2XBZFeyvNBB_7xw9~YJZ*dTn6PG>n`M)0!3e^f2!axkuW0Pkn7+IF0*y)HH9ir-sCl)ZpXrC^7A-U+kBEyA^{H|8Tfn1oz*CbaR1I9DQ>i|CCATq&yiK119zm~t zByVI9(U=A`+SeCByfT7~!#6Z0{nPmEAoE91HX!Zq>;EhIvcT`>u4}H5ENY(wMC83U zN4Ski6Y;4UjwuMYaSX>eFD2%J-2x1x8*FA;QS3AVh@#nhbnj5A=DS)gN~Y zXqtu)2)ulsTMVcfn=oAN!itchJsv8*7oy1mgirx(bn31`9FJv%CG?0-{Q~C%^*SULu7WKkZg8ijEA>8_K2CHV z-u(t7z zSTR-xGdfi?gc?K5t=L)+^wO2C%dFLF-ADjDg&>;I3Hmdk{i~0lcK0(u#E>|V$7gih zi@ecJl9_HHn$n5Q&RW#co6Gayw^z2qA7wiY-$mizGdhfb@k5Q_wo_1-FA<3hFn)klI+Q%NuGZcc_05?Phtx80d^Ak#nd>dTOpzfDs?&IG~?|6W2ZmAjTg`}r&E#;(=H&~@w}-1YmR z?a&@*|8t1le}BTsf@MPEad=`X@Y!E%5{wo+uL*h>6R=M=2v84_MgT}Y-LnJY(gXX3 z=pr-aU;`7->>U7y7#PQr%|%QAU+mnhJpaZ!2(ZD)h~mWfxP1TX`dWbcS}2zVK;%)N z*e8NCjc!5YW#XpP1;R`_Kr5IieG1}^on#kO24CO*E@Vgx*u9>Dr&*b+$HDypA|83h zIJC8hwM5?2)2ayIYW)eg(c1!xm#u=t)ov!_h!H@gN^3ai>82}6f#~mUR~poN2Ot&z z?f}4(J*}E|ak?CzovU1%Vg6>8mO(;57zsk1_tA0)b>{{lPVy_ni7=MI2)PtCee8l6 zolrWW;Fa%6V>ihy)KHVgz}YYTGlbI19k61@UZt``kN^leK}3uNXmYY%5Ne>NmkJX6 z?Dw-Ym(kRqnNv`#&`*YlJWaUFaseBd2ntvga+I!qcxhT?i4V!DC|W%4@m5xXK}D1^kkVr7OnT~jxT{J0k2^G#Z|Fe+Hp zF}j1@z5vJ?rVAo369=nTg$1x4EIrbK30XxbjjMc}%MOtM{P17q?os*w0)pBSha(==9ylzKaIi(;kYIR>P2lkn zorVSd3uS(`Ik9hzu{0&*c!?ZV3&@TW0002ov JPDHLkV1nTa6tDmQ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_chick/pl_tail_feather_fan.json b/pixellab_src/pl_chick/pl_tail_feather_fan.json new file mode 100644 index 0000000..9e7e003 --- /dev/null +++ b/pixellab_src/pl_chick/pl_tail_feather_fan.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a fanned tail of long crimson tail feathers sticking out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00789507219526503 + } +} diff --git a/pixellab_src/pl_chick/pl_tail_feather_fan.png b/pixellab_src/pl_chick/pl_tail_feather_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..67bbb5afa2642f66563531ed8dcc4944c3f9291c GIT binary patch literal 1851 zcmV-B2gLY^P)`70%`~W3MtQ-LBOLirB4j5GGi+BeM8s*E zzUfP3J@e9Fx>9!c&Fs8j6b42WL50O2;^{?;@Ootx9v_p8_>6IUX;5CUxwbi|XH{75 z?ijm#iD+x8yM~%Q8ef9)xFkWCJg72u%W%Xnz)=eDb?hG~F9gnRQr}Z}HUq|7r zJwBN4(%y7DAr9VsDoyOqw%)~lXPcJ*B*==CL_Bx7TD-?>02NZ=v0LwKM~SoIE)i>G4YvJ$=Vg;DuMxKUlnLJZg&c3y18tK-u!DS0^HbbEq0wkQW^6w|)s%|IeB5+_fD zBW;8@CK1vK7l{4_nh$9GFVGpHiZGB*oR%wy$rksuz8Qv%&(e>B5JA81!p(cSt5Y6W zlbWR8MCYLtK;zBxv0gDx#QP&pA>a!RiC{$dXr!>_K|mwN8nw&M(!&)+uL@xcf#y?3@Ih8Sj+QM&`D-s4-b3QhHQtOM zdjR*lDbsD)w@;r%$@YD?p9tk`?S5^$TUwDGtAt*FnmrrYO|fKg9-iLuohf+|=;T`~ z#C~pezM%-R2T=`%-B|_!_6sv@W#&+0Z zY<{lJ?oI*~eD)1CT&l+GUi9k$OrDWDDHD~)s?9<~^rEqb?L?lexhiS6pX(oA`!Z-UB`01IVslC+ZuPoEoHI&O`>N6Q z<{Q}G+35E!B^aXei^)oFOdE^y|6CUhD+}kL_P|!SdR(a4Rf>O4I7R!qwj9{(4#Xcj zglBu)vG{XL4?1Tp^-6k_6R6J_P;dg8mjFaQW6pAY21!B@h&-X<_B~;J7c`Wmj?(*F zdHn*~yE+Yd+Ykbr_`4A!Rd=7M^JfVGzFN6Zzy9^9W}qNP5GDH@;`Z{xK>1;;^$5V^ zNl@yOz?P=4VDd~{CeI-9V^te|{LftlsQ!ODCR-fy1jtZ{K|t$RvJj5%e-S4<4DQ_W z5mG&tzC35KUuh$JzIlV#mo!}zd*_1LV$bB~)t}J?pxI*Er79$56(DKKOd&E&eDWMN zVR^>HI2#hCG%B8cKgPqsG)8QxWZUM;pGysy~KP&;;ifL!U)x!iWWE4f~L_jSOA7B1g-Cp zXhzu9A?p2oc`67U^qTA|gbcEDT8xTcdwWHhd$OvJAm|#X;Y1@Ar>T z{Xs!!q0RVs2jWuPb8oZB4wE*j3`WCT&+3rK3j_lJf`)=Htp)`HGx7#WFl67YAoS2f zAy6UA=KntA!?J>{glk1OdGcI+h8U=;8)g31Gk>7FyDMzV_e!`rCQpcsjq@vO_XCsn z5D)ur7Yf1;k)e6PguTMd;!>kY{_3qyR$!)ryzc?FkxfKFtrr-_>mvyhAJ8vP%qn#FALWX?aX9e*L9^lc(lK zqyQk&TV_5>7e*`@i4!@^kcZHg5y@v*StJ8vLys5*4iox`0g)o?b{ pTJ~)Z0`wm|`ClbbL=gq7!v7M@H+dz}(1rj2002ovPDHLkV1h5rcKQGS literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_chick/pl_wings_gold.json b/pixellab_src/pl_chick/pl_wings_gold.json new file mode 100644 index 0000000..7dbaf88 --- /dev/null +++ b/pixellab_src/pl_chick/pl_wings_gold.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two small gold feathered wings sticking up from behind its back, one on the left and one on the right, mirror symmetric, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00773183994823032 + } +} diff --git a/pixellab_src/pl_chick/pl_wings_gold.png b/pixellab_src/pl_chick/pl_wings_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c051068667c5d2e5ed95c8fa7b51d4259212fd GIT binary patch literal 1718 zcmV;n21)seP) zzwdnao_p^A;K73j4<0;t@ZiCN2M=S1q8?8iWE;v*?$>5Q1P4WNS^&c1j%^S@E>N&N zRstj2RpW!UW04{Pk;nE}fow;OCy(~PlM306Lb|#KBEyDF~P@jNVD z9-uEzCuM>B%%^siKWg&m%IuHNkJtv;j*9V*TA2oyoj~Ln7o3YB<`yv$H?MW%?jk zg#`9OQSDCl!>A*1w7L;`Zr`JGciq{+?@bMK?mS&()IOSPyz*{7SzjD*MWE>D1XT!k z9RL7Q!LAmvF-A5%{RLRPerQ2*@@Qko!-2RM5&@q>_yaM}*K-d7i&9C9o~9b5zyDDP z331R92Rn3LY+SVE8K6@FfEjr+un35W^X34wUeZKBbe^s<>=H)NzkB-;bw4YEpJQDh zxVabt$@4YaFI}Eu7<~~e0E4>(-D_%~F2P;PEY+!`N6kxu@S%;|(~?(G4~^ zc`G95t&bRO?# z`ocHhw=HiPKJ&|4xpa>YBk-We=xM5f(%B2?^9PMhBraPXBR^L1wh6$|N32~Fgw)-8 zP06!BcwUjT&`<=?0a$j)ta(s$`5X}!fg+5>_Kr9pppM$@9la106{T5SJVb#?+Rj0m zNm=XwB+rpYq`tI(CQyPvQn=k%1_!a?r`>dj5Ct*=5){c}^wIiA9&zc1GJZ7drM3(< z0tdsdPW?@vzs=8rEjw~x{ieCYL|`mgJk#(xl0Tlf2;PpLG|c+-g_{5uQ#^$Z7gCtN zS1?M2$upt#OgmlJkdh4-fBpgn1_t25o_FAU?M=GAtv3i!{uqd@I{>Q&1|4uXY5?x0 z=Yzy_RZyaBQDU^}MeWRL*m1v%RNiZfjR zDM2FIjr#=Z^&d|h0yuF9-d6=+@+c^liQq_Mw_x%raa+>36m9|Ng1-D!;NO2ZWE%Y7 z^X(9)M*7;zYlo#a#Fu3ybY9lcM(3{AmeHBXXI^R21n8=*hC5eI!{o$dh^44eY7zb{Uip%F)5IU=4-&jbJ5`Pz3o>~HI~xLyQ=kq~0uN9Qn(G`7QJ zP_*ANVS^>It!GJ}R zVae5I=YNM&60OZ+k&{5fD~|Ftfalydy7KB_|5Smmh&e+1d)xs@07~e%uSt zZ;aXr$*F?T3Ain;PirHA$*aU2f5k3=^Pu#|8z$@uvxu9#6L1U?xCbQ?+acd^!;@Kx^A?(*0xB1_OEj4zs-5@-~n92zYqF5Q$cJ^^#A|> M07*qoM6N<$g2-kW$N&HU literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_crab/base.json b/pixellab_src/pl_crab/base.json new file mode 100644 index 0000000..f0dffb6 --- /dev/null +++ b/pixellab_src/pl_crab/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "chunky squat crab creature facing the viewer, wide flat oval teal carapace with a crimson zigzag rim along its front edge, two big round eyes on short thick stalks, one oversized blocky claw and one smaller claw both raised up beside its body with crimson pincer tips, four short stubby pointed legs on each side, tiny smiling mouth, no shell on its back, nothing on its head, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south", + "seed": 611 + }, + "usage": { + "type": "usd", + "usd": 0.008341445472505357 + } +} diff --git a/pixellab_src/pl_crab/base.png b/pixellab_src/pl_crab/base.png new file mode 100644 index 0000000000000000000000000000000000000000..d93de7f0ffaddf3b9126444743c64d0dfbde5d84 GIT binary patch literal 1818 zcmV+#2j%#QP)=y-e=M9RC&q8 zB6-|5U+U^p(mRk>j{N{J{d+^jiObOR+jW4pHmKaO5#)~hdcWmYh)AGmho4%GZ;hKfyjFg+$wExgQ`q@4VA4wSB0?))*et_3O! z*L$rq^6U*byYDM!9a4BfJ{+070FGU0fIwjIw*i{BA=n5vFE`Uwv1t_)4NrwdiP7|X zc=174a!CqXXc33 z!DdMfn)LbVQ;K(g>sYo|LDZ`wT`W+(O8!LCHYoX7Uq%leo)Y6MK*xm65d8r^u$Jn7 zzh?{X!$0+5atc+_SPi+-^_2KS9vD`!Gg1DSMHk;Pjr&ngcJ%?*>68Ipy7@^sH6_ z&U|N+L>`%&5!&0)TcdzDgQ4jI;biWIBMNQ0bxi zfR4HrvI6xkfZV@n!M&TFM@*Y9qq)Yt7_V3&J`XM`m=t2Gw5VeS7WhELR;PkAA!%qs z+E<$)qig2rcjM4r5E>r|spH}txkBl6=ZvB+8Mp9xMcX4A{&N0~vya;yzpQwx(kX+k z#&YuO@3G{=?Kg*H%#wShCpeb~3z_*Hf|cWvz?Vs@jk;9_~DC#o7-3hI(qZXV8mmS6;oZ0KnIE`8x_IS1*wBy6!Mo@24 z{4TM(U>Du9X3y{#BY1*uYv>gMosDgz__8nZus9&;wn0N13C+J`-aB;R?BjYx;a9~Z zf~jYiqB7>}Jh&6oe^=`E!$;>Xb=eBl?GfxJPzNuPj<%G&8M?_75?AK0h2}})VSRNy z?3$5H9=u1KYif*ZxqRa%6z}tN+8u(XEzfmncel0yVU{0 zL4cSzIzc{EYE~!#VTxdBD-WNpv*N?Q?6hbq>5fmN;$G8IFoobiwc;Ly9C!FU5Xx{BLx17-+Qv{~V%O_8Pj}H_> zQlB1B*>IQM5p@~96F%{uFY-%j-^K?40yU}TJo1iSeTiwRs{OM@MpFvT!f z8T0zlf0Vd_&I@2Zz8l&smo$AiBa_| zBeyZHB|%w9EkxI)kfMfU%z~anhbg|(eBnI&eS9aS%P9QVdFdd9uBNn^fr%0dk4`a% zOGI(@C6n>dC?F^{4B84Evy593(j`1)ZJ6<~GeYJVQBXMU{(D#_x##=T1{HTQ*HL~Z zcPriTzlYnl4u$YI`&z?e1L&mlh9j84INf@*jz7R4aOTlzb(KrLT+ESj9$sP=g_Jkl zgM^85C_BWZhC!89e`W-ou)$(-gbH8-W)IDKYc($|X+St%L>9#kU?D(}V4%RmQg{F7 zc`DcS&7|x_59?oOpYb#xJ%jbu_OVldC-e^Vi4jyFfG3mx02t(J@=1IRPXGV_07*qo IM6N<$f+t63`v3p{ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_crab/base_raw.png b/pixellab_src/pl_crab/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8c086dd9b0168fe23277b4a3eac3d4261d1dc4 GIT binary patch literal 1736 zcmV;(1~>VMP)s$A&CSdp1PQimZH-_O#i6na!Xh0s%bXeDg+hhtSmL>W0lKB zb2&=#foPf`StxK3aeBd!X)4-Pyl@fFd*QUt@7~|>cU~8i*+22w&dxc%^Lu=L-}mnj z^`Hkm_}@b!BFWUtANNNesJfmsq=M)qY5AoBY0}qU>aJ-r8u)7Q_Y^*KAX!gep~hct z5Vf{a#ojF>wLdUDNy5(QY1G_&pO&qEi)y|qC+l~gD|q_p4SFGWJ0lA?%dgYyBl(n5 z`5VX@F4P4rNJf2()Ne_P)U>GyLlu-TZX|mt+V%&{+WRvlTKdq05rYhgB(KaSTuIA5 z=EMy9B(Ka?_mL*=-mDo{d+-vwC%l=d_+}P&IdSJk3L7(suHU>%H9y$Mx;2Mpg~zJN zN`i`{gm*HjWc@1nV^Uo+Rpf8-*(dJ&O*(&Qhunt=D0e%Zn75dUuQre`$P$LS{Q}H% z>q-;5tXtPoL39!=jSXYpgA0$+@=FB-4Tw7~-Ljh9{R1s@;OKEG`-$0{0;S$Q=H3CU zPvwDax@54i85hdfbHCUj9$pPjEn!F(cFO^~6#=qc!JJvI`26l??xWiWjtyAGKSd!C z$@J-m3ykMryHGh(hwEV=;3|T2F|qUPKblF##wN3STJ}!Eg~oQF4=^fyn*7{Yazpc7 zwqX%1wyW&U)dT5sDX0MzU#u!sygzCm`<_Y)eJxI-Vd)z42RzCWlpO;e9-J614}v4W z`C!lDM9o!ylkM1U#n}A9U*tX+)2HfgEMMD4jOS9!%taLN%wWZs_BsQ?u;J%kUP8S_ z^;3`*(Oh+l+|>>`claA>zwhK@b>pY#4*?X67OZ>Wg?OQeiS(g*h~UZNODwSI2CgD9E}?-jLxA*zVM7 z;qXe9eK(I8KtYiqlr$;AQ)`smkR=9Rn6%`1#n=;@|CGN&x(HvQnTc96;HFPF;f?os zv7y^{bn0AbKuVNsGCYNg5rnsiuzEKIaIzfGCNv9sji0|#l&&seO<043LL32PZ*!1! z&u8L5DL8bPhKLbKbsvk0s0f%La)Dq5h83ZPaNlQ#P#YeOJ4hXN#3-^qcOSc_&zo%+ zqm3Yr^&1dK9gbEesIo6|(Co8(6{|H9%%N!EyX=B=VQ(P2HawR6`}b1}M9nG!k)rv%Di6XlV7LDohjp^q+=yE1!;g2=VhP> zv1qaAI2*zl0HS~(SysNH%-zXCW z_!?q(G$QSbFiRxnh!Aqy?(&$d0XG$1=<|(m1bf?fR0#XMNHYf~47*0UcG|De@Wn4a zI$=zNS`|_iD=r&jxAdK?6XK21@n=`1CS8uZ3t#agiU(hb=%SF zkE_TPik2|h*1zAW}ov!u%{4jLf^aOw8dFRPGvEXKa zWZ@*tG1IiokQ`D6Cta^j#AqlDd%uvF7auh=#%opGfO$Te~ap1_S zCeyHBv59GnA9$&gOxGE3IMw?fX4KxTIpZ^ycKa`>(FEO@T=FsYiT&2??!?l6^uM_W eJ?H^-6aNBnerxhLME{`x0000y+if@ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_crab/pl_barnacles.json b/pixellab_src/pl_crab/pl_barnacles.json new file mode 100644 index 0000000..060b2b7 --- /dev/null +++ b/pixellab_src/pl_crab/pl_barnacles.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a cluster of small teal barnacles and tiny shells growing on top of its back, poking up behind its body, no sparkles, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.0077620227866702605 + } +} diff --git a/pixellab_src/pl_crab/pl_barnacles.png b/pixellab_src/pl_crab/pl_barnacles.png new file mode 100644 index 0000000000000000000000000000000000000000..ca005048bd6feecbe139b1844493074cb7b06edc GIT binary patch literal 2166 zcmV-+2#NQJP)HTKz+`H$V$NxJ2sey7RP6^)mZzI6*tI#)A4=fXii^M6?OK=FdN3%-G={KOM40EP^r z*>iLn9xgwN?bx^Y=4rsIv4x-m7vf?{rs6INp*-)V+`ct&7Twdn{HD=qk{W#lL4$#> zPKMftMtTm4i=rrinm0apXyFV$>g5Mh6W295jk?C1Tr}kk^QT$7RGB@TSTr8u1NHRm z3g%rB27gLQh9Q&3LvY_d09SJ$AhbIapDl! z8%3=UaqVI!f~QXt`0k|;DDg7DoZY`FqQIYNC+UtBfVjFl=~48tiWi2$z4B_9yZRj{ zSbGw3lRvkM9}hd2R>XB=9&zu)H5i+I5c>HVV5G5H?z8LDc=7?Q+k{fXu%x<(fSTrv zBhWu&CoZ`-<7AeQ`hy@Aq zW!A6^42#IT*hgjBEPCr|bsJpRZ`w}b)8Z}OHI4=74Gi~PU~hk_wONaqj`u)6!`Y_)c5F>5^x4| z4IW{vCeyuMSV9*vj}B>mNNali)DMSE&S~=+{3#Qkvtc>C*L(RuO4|33yMHbH9{0(3 zd1~HA^6*mhQ3C}v@_aTuHw$S)_u4z<(D(w-8))Bilx6>|c#X{02jgO2k)P3dqWLR` z(i;?g#J&jMsP@pJOFvkV@CG;vU4wepIX42Us@rnhBvJcFXhlx3#qi+Xed#_tfwDZS zs81h6r!gOQ zQ@PA>I(3uX>9Ew`5qbj)pZz{CBeM_!nPdqgk1S|}VN6GFjSQj&z52JOn2-KK1m^w` ziA$j3=moMK^!6BKtkB9F=ED&mP+M3Ax~@JJQ28s6oCFukYC$yn|X$Wrxo3UgkAfqv7)w zLi9{!_&c)ZxcnZqkKs<-R-#oo$b&XP2lr<~JZ1d?MOW15cU72*KM# za3LW$^BibxirTRM8o0b`cl}Zf?o4I`OgTA6SG!^?1pk z2VBQl$K{d(V;M3oc}Wx!b2qGliXqR!>bzn|nJ}6N<%NoRFXycNjPiXEwdOQCB4H6U z>)KNB4xJz^SZ##3od;kq zjb%CF=+yZx%mnLc4R~gUPz!?KZNv9g*2s^XY0fwTnMcOOlVlFF?`ZU5$o4sb>9~qY z(}x%9vOz8gESDF>#=x?DsSwtpDdgV0Prq?rFHg;o+ZM)*px=19boNFWjpbVBwSyQ= z9TkEEj)M{-UGURToBxl^1c`4AesIDC!@=9Q*KeD3%wi5MfbzmSlpdGex(0zWhq_+? z(c9Nkt&Un3E45nwl!Oo}UdJLZYaSFf$~B*Akcq zU=+aZ#w$|XN^bc!SZdZXhiB)OaA{9E+$}Pl_u~P|;E54%^5=`t_EH21s!LQH_yzY+ z&XZpNMVTp7E+g}U-|P?Iy+rYyfHRLyG2sS)q?cr?z`VmP0?>8!fyx6WE#v1egqeA& z+Mb&=P(CB%ju9D!y1xi0fPKPz=h7GyTy~I*F=7+-jIq+3U|dz(H_gu{c5j zaDw?m`N1N)x0V#xOl%^H;s>zcq)gCRVBzx?TKh7Lhp6`c*~#Xdp`&NH6jEr2qf` literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_crab/pl_coral_crown.json b/pixellab_src/pl_crab/pl_coral_crown.json new file mode 100644 index 0000000..0dcadd2 --- /dev/null +++ b/pixellab_src/pl_crab/pl_coral_crown.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a few small branching crimson coral twigs growing on top of its head between its eye stalks, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008108901209301418 + } +} diff --git a/pixellab_src/pl_crab/pl_coral_crown.png b/pixellab_src/pl_crab/pl_coral_crown.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5b65f7147900d1caf6898862ec38a0dbbf4e34 GIT binary patch literal 2184 zcmV;32zU31P)EOduRCYJgB7mKh9kh_Gn68i`89t1K0-rM#B1;z21!V_X46*T{m$ zE`Oj%m0Gf_3W1atg2-*mHqhDr*V(}4WUw_>XuwcQ01q&7|Sg>Hhf&~i}ELgB$!GZ+~7WxF9D`$(RlE;fkX?hbj{GY=X zjgOF3Pt_lc=2U!VjRIb99|{nL-fO2`DrA2s^!0MEBMMmDP^GoGeBxQ>xu*7&H4R2T z+z9FgeGPjwK0<;yKHZ`X*b^t@`?iBeO*B#oPh^fVc%F6rgugXbYaxc!m1T<_Uk2pTu9YJ-@uswm)_(ToA&=51?` zSG55%*Q|i^?nTJFC6BCPOlZfE<3P*_hFA8~b15ww%R&RA0lf&Jm&a11J?iZBho~EZDr7b$iln?bb4ca0A?kS zVuQH*z^ldqYr_-59v&OW^>Fdj^Z4b<*LGm;`ya9JWEmJT=0`AwBVs1*hF1#X)G8y4~_(^>GVxiILtntA8@e1L+WIUj6gCg_6MJAez@>(q3 zw90s&G-V9%&Pq}OdIr(x#QySYKQM*GGTX+dudQaWT3bT(2$WQj3XWn)2d*2Au*aYEG4l>xmi3T#6urQ>KkF_@)~AVjU3!wEA}!s?<(2s>jkeYdQ1AdtWVn=;rO0kcv-1l6`>3fF$+3;xYsTZIcDngTrqIU1S3vx2It?$c>p1dG+KpJ z5@;qAa&O0AhtsjvB?BOy_%3FlwCOhieJ#fFzS)Y;iI+FA=y%d19MpY5P zAeAEpm%M68%Z~C6#qA^B3hd!BCZ;EYH?Pl3DX5?zCwB=#@muS;oO4%hK#m}js-8QE zgvuK;=p6W(+gb5tMUh)RlKTLS+<*K0JbuXfv|dS$!jyExI{KT4y)7L&lcw=QJHan+ z?>72X;lH}~3GP?3P2yMIDd5s~BDn-H34`##r#D-?o)Wv?d^!4w4h^vzlF{QjT()sIi zi;&-Bh20rhNFV0FD|_p)Vcv~;V?vBc5d^6O(XD$2_r=5o2v79KtDAI!)^1$8W*rM( z(%6E6y1l(3hlbvTP?bQCil9pigUBzSdWfOmC%r`WQ&veJ!3m1x`M6ETa$kEFw%@lf zikV<&^t|^s-2ti|aZ)I*E}&bIc&@t<`rJX?1yaP`6X51m!HDMOy)a z5+i%+5Oh@>l{rBGr<_2_Y7#ICOc#*hl2xIpQ#r|}R*-9OuiEx(xp zX0BPmXLYi=^aMilx++xe+=$kO{b3E9kbFMUrsZ%7ta_Mh`BJW{-=cU?y6idh{iSFS z;VGDr@MNLJcmIQgj1io>6G(VI&@{B;r;<-FDCG}OGes4hU2UkVaN*pHX?%|G3&bER z>t~6joCnY@K+2FO((d*XSMgE(HP-C6GJ&FZ?0L!9zitzn_UY@EGPlcan}lz-RwLzr zlNFUZJr@JgCYZ;mtU%3<^?Y0=;V=91WFVoCkIfQvP$JGSgWc`@<6L*tQRe*MW zf3$wATbZ^bf?s(3F8_gP#vP#yj3g*_1RsxRG97u$Ly9Z)-;$RXyu~H`duZ&?0|y~8KK}3Iq`vM}wgd&;j$#{Qv3J8TrCwkThYQX}|PW%s^5<3^;`mT8Z0000< KMNUMnLSTYhjWP}Z literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_crab/pl_shell_spiral.json b/pixellab_src/pl_crab/pl_shell_spiral.json new file mode 100644 index 0000000..0fe983c --- /dev/null +++ b/pixellab_src/pl_crab/pl_shell_spiral.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a round gold spiral hermit crab shell on its back, the shell bulges up behind its body like a big snail shell, small and compact, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008746390872531467 + } +} diff --git a/pixellab_src/pl_crab/pl_shell_spiral.png b/pixellab_src/pl_crab/pl_shell_spiral.png new file mode 100644 index 0000000000000000000000000000000000000000..4e689ccb853a612c337979cfed8306f984940024 GIT binary patch literal 2367 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 DK2*$V literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_cub/base_raw.png b/pixellab_src/pl_cub/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d2a992e966d745e4aa20be0b72841569e69119 GIT binary patch literal 1949 zcmV;O2V(e%P)o`6y#y;^-5m{l)j{-lqz6i3?gk5Ne~E{XlW_FP+LQMfQ3K|iIx~i z&{8BSAVdiAvJhgxAR=uAtZ*&0EswsHVkxM!rM)%3-`&j3?(N=fD<=NoH@VC{W`Fyc z-~8q`vvUCd>)(~6b6qxAS03cOLCd6ZO%5Iw25Ad(UB3l6V4t2%*HsOX%UfD>4M)c( zz}BzJ*mGKvb$&jj=@|q?P0mQB@?80ODzDYlLQ~au>^TB<{8R-wS#!LMsP0KBP?$7p zJ_O$rrg*07YBMzaaKslI4AE#cJ!lRMg^FVp5NI(2NUn|u4&^V9m#-^^n)41iS!0cY zF=jIz2S^gE>+R+S-}X~u@xlA1o02df%;RtXS|@* z7v#9i*>r#{#fMSDqaxr|b34dRC$G5jomcsBSV18_HcJxxR{TCcU%O_5;ss&jBB|$C zuib2H1zC1-&$4&Ap(TGF=0b3M2o0dot7pE2==6snG%}n#l8~H8^@h!z2QbvapZjCq zUKr&*&Rww$Iaj?)P}2lnyv z=L?G9SXxzknLyUeRzu!Ti5NExUo27T@OqtMjUNXNa+)esapiPsrS zNJ#ak%DnO+dS6&U8y_z!RNV?nNB z8fN)d0V0{mL3Jk&>2Z051W~XBP1ckQNKeY7LglFn7u3WAyTZtkL#H7rK8-`$ zY*AENhL47eb(cA;8uW`jpD4~3&(9NCG@<#$xXjt|+bfqt;{BnScS&wB9FskQHFNapVL^3H-mKu}^$A`1OPiw)%#e)gE5-Z{g3xy!ddb^?h zN`==$Ew#tNamJH9n9PAe?R!*jR)graXg z1aHYOR!C?ege1J%78#lw|O*>&) zg0jM409g9MBCu&Zj03W&{D3ByC=G8K`ZDoVN#45GdtIR=7Q-lnt#zEGuMJbc5HH9T zOO`@MyJGMS=o88(Fbq;6>}q9q!|3oxcsan6hl^So2Lx@TqWt=M8=I&~N8g9RqLFaU{b4#_-0&c6W9`P=o~X1^t&5pcYtgP_pUOzN;>uxyR)H?3`owbL%7sFL)V3NNFyJgt_aq*VFE zEcBN6CBkfqn~_?KnpvXw-Z&`ywShzTtGvdH{_^P#D#t&&*mp{lofKNz8eE%zCx7qs zast}}@wY#r`#qL8W2E8n?zBZ01_*1o j(p{GPAL004pryY7=1iQz*G?Ie00000NkvXXu0mjfW*(QP literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_cub/pl_cub_tail_rockclub.json b/pixellab_src/pl_cub/pl_cub_tail_rockclub.json new file mode 100644 index 0000000..534dafe --- /dev/null +++ b/pixellab_src/pl_cub/pl_cub_tail_rockclub.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a short thick teal tail ending in a round gold rock club, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00794953179359436 + } +} diff --git a/pixellab_src/pl_cub/pl_cub_tail_rockclub.png b/pixellab_src/pl_cub/pl_cub_tail_rockclub.png new file mode 100644 index 0000000000000000000000000000000000000000..996e553644de6a2bbd4c96b47c8efbc300bf4533 GIT binary patch literal 2035 zcmVC0=6N>BB3n-vGhTul-h0=s1czp4YZ{@=A7Ak_s;B2cXnqHjq^3TcXnp( zo%?;~+;h*pQveGVELgB$!GZ+~7A#n>V8Ma~3l=O`_#Z(sSzk8TrX1q6yAGR)x^hh1 zc$ob{0so}tJVoa*Rtg!$JA&y&r(2_^s{j3hN zK8k>1;85~Q-fc7O{s{9DO1`d%uFI@%guE7Lef$i&&U4Qi?mn-&$8Gb9aj&L9NtlW_ zd9)g{qCfZ7f{k;3n7AMpA~EV~9*L^{T~9T7J)q)d07-z>1v z*!GZVZEdGAEiKi*2uQq+6CaiQt>%|hC$_y+3-2Deq)N)d83W|VXz$d9AY;1pPo&}D_1;8<%u(=sZ5_fT~)E_a6QaQodZpmaMb{in3zQ6*w_is+V(ro z2Uy~Rkskl{9jH*Xv+}tju`fhuz}X7`M}6Es5Tsz)r)1^H=;D~+GNCVSpuEyt*U;oV;tX}U`L*S#1V|VKkJ8ON9c>n!*sCo)4hIgD1QA#e$0jd zLqq+yaG~W_?oE2oSbMZSa}h-7kq_546c-^7L;(Vk-%wZ#fA+XS=_`3=+Ui1R{rt;+ zCJ}mNd45RsMDiNJ?x%-j@h0PNJ zJC=a5NY!f3gS{D9R8D(rCbXSuhRBR5Aa(XZxM2@N8!`qQhC4mpPF5r-?i-!yO?mY& z*wC%A(@@_4L_#c)XClasSQ7c-p-R1YK-Ndx{HYN-YmWu=ayx{9JO-SpsfpA{AM%eR z5&=E1Iw%r~uw_artiRIE-Cmj;qiR>LANa+{2LmbS8akF|)<^fp1q*fwNsUIHK_rNz zah&7A2rbU)vwN6_;d2HO-kv<*c)3R4&QD0$3nuiHdD$ zhnbde;>)>ILWGSzcVHyo)MqvZ$d%L5p=IDEW@j|r9bA~}^Y%vUxRD?zdK0!kDJlvU zH8=2c*q%7Uph%8|-n~bLV919o0Dd9yU5;7&B?tqF;Mv0)&3am(0O(QZO*Jz!=^P3m ziY?|D;UI5jIV|HehiOZ3{c(O_XVw$6pU*@H76*I&pc$l4ihxy}O_Ul>>bndu0Gzls z*1(9H&G)QtL6Zp;@(zdZW+sZDeUWLz6VL;+JHo6TmM)7s$r{{)m!kl%B|a6_UsaM8 z5%da60&wKyQdDl=wU5rHu3BNJ-Q8{HsI2+xhFVn5f+>haQ9wv0>(gs;CIWU8aoy=u zy~AVBu^tC{03$C7fWQoq)(c^JCm7ZZ5zxHVp_iIAVR0i2hd?Viv@lx{ia-H0ZT)Km zFuD{rw2o){{ul(cdjjDmf6x9i%jmz~@ZjfJG8;{A|LX#T^pewp1q%=g{szZcnJf`E R)-V77002ovPDHLkV1jZf!=eBH literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_cub/pl_horns_ram.json b/pixellab_src/pl_cub/pl_horns_ram.json new file mode 100644 index 0000000..db89171 --- /dev/null +++ b/pixellab_src/pl_cub/pl_horns_ram.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of small curled gold ram horns on the sides of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007494111246532865 + } +} diff --git a/pixellab_src/pl_cub/pl_horns_ram.png b/pixellab_src/pl_cub/pl_horns_ram.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b23071bf08b1beb1c647e686f72fae905e48bd GIT binary patch literal 2094 zcmV+}2+{Y6P)J;tcp*x5pfY@5y2PvNX*I7scd{@rs1QRMkOj=lc-rUrQ`Vc$22VSF_}Ha z(lE&HcQ!+;i_euix){=bZ0+ zy8t?L=+L1I&|pxKSA<99kLhe_h#K5sYKqA&=p3_807GB$JYnh zJEM6GwIM&IJ!jw8yOPvb*~8I&B@S&QuRH(~SLJwwgO3|!W$a);fS*(Hh)px2Sia-M zMJ_7|3F`tIQueTXqNvuqY0x&JGrODtzgJ{U63f-A05X!t&fUCeh0@F%cHzj3c()(R zP?V7k27`TY1dnt%>J@?YR#nNo4ZH~3*QEi9<&Fpja09n;FSGm6{iXcf)l(KY zd-68)d!ZeBp0hL&vd^7o>4ois;Tb>0VhoZ5ORB8UHM$4;KIii{fAt3qq^0KjssZ8WU zdx`<@as!f90W3*_SSP82`6u={2+`cs4%U9L*iK#mk|#`^J>TJ5RmB5X&{?sH*u-pB zpZutr*DnG^7&B`yOA9-W*DOGG`N8%Dg+SuHVtT@vv`nXYosq}<2rOf0+5|p1u9&uY zKnS}Nd0hE%5eylvOg(3o=+#}onm5hqC|pU~$H)_q2#tPS$%|;wF^F9#CXPO}jbxF$ z*cPJFS_SpC25d>_%1kqS+(GtyYIO{|;~d4#-YvYwI!{oWzZ$MA#Tl?oajhZXu2UZZ zNJjG-xnSF1u-Y7*!<&vlpXq6=Q+dZydB#q%eT42*Dx=eA@9r9-Z!If_oIkel_qcGn zLf+9#<{5Svn#um+=1Z<^GhM456G4znVDVd0Hedl!lEMR7#s|e1blmIS5*x+ zzE}oedq$KOTmv6pUoP6ki+SuG8ELK|0}-_OD9{Q^wb=oM12G;#Fso;L-ktTPlSsezB<;^9_liPwmGvQk-VL6N-5yrFGi2bdw*m#Br; zi@YL&{{y*)s_YwLQN0?1MCP2ms!l$P@}kvI0NJ$Co-Trm^J-&YBJJt(^ienI|> zJc$5dt(nM{oyl%{fSwXSM)HkY`GYAUROzG*Ydb`+9wK=p;0jcxakL4nnZ>X?&7xUD?pAq&HH z5adLmTdswV4|oCO-qwY@Iv+-d83gjK;L3-nw<(bG&38Oa3m^eUUkfhmPJ)PW6Ii+y z)8}3!h2FKC4hyBt_5yRvXkrbCWjnw0fGUgDY>29nPnMZ5nvr z0(N)l4jFgL8FAe1D2jstQ8a&y_C!TbsgnpqUbLoP!XqKbXoMHD&hhssgt)^XaM$>4 zYYO;J8Lx$gQioOxz~A}MOT*B$2o!;i&5s*BHIOJ;6pH#+w`leb1wb(hA3lV6#aA8t z3<{0Ydh^+WS(@SlKJesV4gAS;#g(c-iQM9hZXJ3 zyuOAeKwXc*b!khcxvh=~V4T3ySV@`R8$wP^99Ux;m1)Sv?*;AM+y$ofdBvi07*qoM6N<$g6c{A$N&HU literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_cub/pl_plates_rock.json b/pixellab_src/pl_cub/pl_plates_rock.json new file mode 100644 index 0000000..c93f200 --- /dev/null +++ b/pixellab_src/pl_cub/pl_plates_rock.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a few small gold rock armor plates sticking out from its back, just behind its shoulders, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009668046156565349 + } +} diff --git a/pixellab_src/pl_cub/pl_plates_rock.png b/pixellab_src/pl_cub/pl_plates_rock.png new file mode 100644 index 0000000000000000000000000000000000000000..36e0fd742fea31424b8e419f7bba81cc10459725 GIT binary patch literal 1858 zcmV-I2fg@-P)H5T&J5P+H)aZ|?o)&YgSietUZf=Syy9&N9pQ%|A2$ z{HH`VY}l}2!-fqTHf-3iVdM6LLGb~zr}~sYJrDExAJYlH?JEk!_3b2pdHU-|JZ{8V zgv59;@1HiFj9OjsWC13d_m@la#kJK-S6f15P0qeT_!#JOH#oZKe9C66JCW4pw z0~4Q0rd4x?sqcBbi~6cQZ@IPB0LKvrjUC;e&YbF^70>7T9K8bvu3Fue}R z4KOY4dCkr2*#|`mBJ0*)vV7(eMt|;MCD9!DXb4~?^&LP3Q)kK>?Pt!@seRi_MF=B% z_Ca%x<19UvG1QAZaQ_1%X!)v@R5p2%6v0ZM?m}WDg_(TO=n*2VM?R}m6+&7=)#mR7 zNu3TM&0Uq~U^&{)iMl1y|xg&R^-bwqm@Ac{=zqjO_N=dL{@KCy^ zcW?Qy;zpOuyRPkfM|44)3P)!p8*xpkUNUktR=> zMl_(GEZ4DVBc;3Y^UIb9OZxB9WpT}At;jR+xbg&Z+~z1v7g$|c;U=#DXmdojb z6lC$^I=Yj5Bz}OwgjMMC)(Sd#0Pk}dm3ScXk(z(h93j1fFkK$~V94u$2>4xdG)l`t zzB`Z@L0MRVmm{Q_ua)`h;CXI^d&fRaeY8cDp;(~a2P2kifWbS0Iwf+*Z4DPYuZuKk z+h(uPzt;W_HEyku_lsUE4cH*J!%owjS*aq;7@6TDG`udPZ84Fei00nCV8eqa5W`F>!LEZb+yLxJ>h8D zN%ec`EbH+%Wk6gfkM{Tn@X0a~^5ISa(OB8!Ngn$zL@3`;Ew5qTi*FK9>RoimM@0~! z=CcYpopk8OMWaQ?&yDYhXu&Hbl;)!XOdY^q zJOEJR2rzlx{t#@5R0M+}hq<=K?d14_x(0weMiYS&E0ix>MCZ@BEkj-L)&1WUF^YLS zKt(@z45%Q;8ZQD!5fIfmd%TT&0i%xiAE1ZF0Csfd|LH#X ze3F^(wfCzczy(emUKchOgCd9cV6ncciC(GZ0nY&&d0oht5e6 zT;CT2W|iedBtT*~g}f?pc7SrH%@Aqx#tkC=r;lJLSXb!WCWk#*K*tX>P|~P$N;uOY z?y=AiLjCX(R^KTK$Xhs1=5JhZhP71k=zJjX2s02KOUgUTIDd0`((YA&gK9sEw*4&!dmg;kg}% zJVPZ2(wOJ?9)J<&^85~47+V25QE)l zkP*zhw*n$WTvrgLFT6+&y@&IWBry`l=V;MGA{|lxn>0xkynqFQPE@T+pJsY+W%_dy zMV`Mu#>4`478KI1wl+Z=+Z~6o)KFL6sChw&z~ohHs>ywj1|=oYlMRREeF&lMFpRoy zw@~sxw`&}WMbN|_5XVZdMu5FU@H2WkKok}QQ6Vq@0U$=>l`Fy(R{ad!i9(FR{x&hks5L87x3lMBz#0cddFZ{&> wqS", + "description": "add a big fluffy teal tail curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.010967689222759671 + } +} diff --git a/pixellab_src/pl_cub/pl_tail_fluffy.png b/pixellab_src/pl_cub/pl_tail_fluffy.png new file mode 100644 index 0000000000000000000000000000000000000000..261ddabac521ba9955c49cec980806503488dc18 GIT binary patch literal 2203 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 YS8Aq(8fy7k)c^nh07*qoM6N<$g3zD!FaQ7m literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_dino/pl_dino_crystals_back.json b/pixellab_src/pl_dino/pl_dino_crystals_back.json new file mode 100644 index 0000000..4db070b --- /dev/null +++ b/pixellab_src/pl_dino/pl_dino_crystals_back.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small cluster of gold crystal shards growing out of its back behind its shoulders, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008272239208221436 + } +} diff --git a/pixellab_src/pl_dino/pl_dino_crystals_back.png b/pixellab_src/pl_dino/pl_dino_crystals_back.png new file mode 100644 index 0000000000000000000000000000000000000000..75f7f9526d223de48c5a3e5387065fe679af94a0 GIT binary patch literal 1900 zcmV-y2b1`TP) z3l`doN{CpuRPn#3!J`M?aTV=&?+Hl&LPRAr6h>kDw%W(i0tEUj&f0;%$oF^~LiM)) zbP*an8VE$%H_8`_|IgAYe7Y4oCx> z=Uid!WgCF{nilNcdrRM5!k(2!QUTD%{1qVZm(F(yp zo*C&!(bujI99;*A--S;cCCZ*JDiiy&SH|JQS5AtMSKJ2>AtEM4X;~#ayxc_cq!cN6 z0)5Xh_0u@`Ew2&D6DUN=l^JRvKZJ_~$MB@zv*>jx+TgSjc`1neq`@|bPsu{&+p7&o zlM=WkOi6ej-izYM3BoZTTr$HKLRYOp0|nsfGZ9<~jjqw~4IFP&jueuSUdGIv6 zv^(Yz1-xcPnEb9Yqv*gl?A?1-B&=<%0sFQx9A=dYpD!wdf6Qc)-?vAe&Oe>& zAJ;^Q;qS!$WbBNY%LsGQTtQSaON*>-dn2Sh+rUVXb?_vp^^;qKbmx_TO0L_T&Z7Qm zE!$k{=xq%=)eR z*|!-_bLz<}RklMm1+-@cx!-<<=B7rryB?EYMCF;YB57lg?l?JEC6%C3A{A~AwUxTs zUW!&G&LROF6CPb`?QD7aE4va@a!>d$UV7L_UxPD0BuIB5LU#nDgp#aO+-qrWvsO)y zp2EGB<}UG2K^X|#bonlJRPgXrxTlw`cz-}4mcnGKbqdlDOG#K)c&H)s4;{wHbAr-Z zpTBFyS!2*N7jf4M5;ln`GgXrjKP4H=O%2KiLU(UP<)v$8Qw|F};h{?oB0=P5o~~$j z5EVI6unO>i;hi9_8i_Rdf#Brzupiu?^;M*onnyVtv^gFDV@F`uo?p;hq`R;n@{{bW z+8sD4rGPzuPMnPkr^}HOyUrkUymFxmwK+N^dW4RJM<}xfhT@|oD3HN1Y9IqLmVbb$ zZ^hzp@+YiKSK>DU$D>q#4Q}dEbjGS5*t4mzg*iMr7Br7rusdq2>+yGf9f~t|lCv`y zM~b;ud`FI@LkS5v=SM;=Xk?uYpm_bzW6259?$YkJ zjuxD_-086f3Lrbwllg$of*jxz`gaP4bp6FiOY;XMY6BJI2aDCQZqp4qZzP2owC$qO z+Jwa6o-XWXvi0BPq491bu4U;;VM>dYTC)ZUfJ`_sb0=0gO)*JWiUXd`@b}c+0;iv; zV80uZRS+b}lOkEGMu9n1GftHY2%3+C{mC5`M-2J`iHAkX3+U%^g3{%%Mu|xiujIfx zbP2o>iSxOKP<8PSOnyDaq&yWnEDKDW&DxX-%N6H4f=a=;SxrD_x><|T-!eLk7_GfO zcYu@(8LI}({$FH<1i9gAW*J;x^Fi$EFk}FG(paUTR$@}B(`g4O zy(O~zJhvxL>GL@Mv8+wr%%VxJe3oO9ni+=#OQAvnLZZfX`0000", + "description": "add one gold horn pointing up from its forehead, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009642295916875203 + } +} diff --git a/pixellab_src/pl_dino/pl_horn_single.png b/pixellab_src/pl_dino/pl_horn_single.png new file mode 100644 index 0000000000000000000000000000000000000000..9591cc5447c4f23ab938d69f9fda34a2d7982046 GIT binary patch literal 2047 zcmVCIaa5-tQ1{MZ>p1U*3$5eikuFw3)#4}lJaN)sZnwStA}dBW zdU2*N0U-~_^us|)ATAntAzHs_L(!j1Wt{Bn!lvIn6O|>Qz!^mTV~g-y*{zsz-j&$? zhjC#$O)6`|ed|_1)fC)4IUBFm?1G}W(DIcRdXLV1$U?3zew2?ltuD9yomDu<+E1IY z_1LE@Xee~;R~uI&byNxq|5|M`3onEZ8DmqeeqF9x^>wU-pZ~rT zF_<~J&AQ-Wrf;FP^d65Zyo ziHV8*I{z|zB-ZEx|Nhb&aljjwyo6yh)2#FS=WDpFg8e81{JtpN_IDQQbX0r4!|`LC z@a#LxNsq+Wbb{l%H2>*$F1E5lDSX|7llfR?jdm^pWq{x3yj^$OF)SrVCZ!b;P^-=61JtThVy{X zmMlV1UFi7efTO#qiVb53S*-=4sqU~f{r7F(@obWyGWC^dGev@oafN*Sg7mR0xG;S9 ze0|Uoipg?V(91_kXh>L@>1E_k=5rF5uH{U>nfqwxo)4F%!SLxUxT-4f>ADo&v28KM zrg7K`6ql(0moQD%r1~I-e2jM z5)>Q9;w3&~VQKJ1pJ6G6IC8L~@1Eg(0jZ4y{qO<6nby>faFl%41#8lOqpjDW(op=bl|f_E3Hh7b-}*BS?Qf5na#+Z0k2X1Wlt0Jocutd9_C}(9@lxDx+ z>mDe>%mt-#+ZuU~K8&M96W|@)SJM+;?lWgo@78%^WOnI4&2!zrhl`e?x2Fq5_m^SJ zyi8We@tO{7uUtjWE@&LGij$umvE$WYhXNE;RfS7S;A66gOD`XVbCM#@zRRug4Aaar zx`C^oEwd7-s+SDpUB7_CqYQ~8bb4kA_BMHNZ0ljpChc(I8tg&w={@Fv?nGohu_3Ja z_pR*yyl_Vz3rk2vgjShS_#lTGYn!6F8JGVjC=wjnu%8tn!zQ%^6-DxzotdEq2l(KY zvFrl~a%l250gCO?!Kp5nwM|aWj$R}wDS?$h96Qp9VhreiYx*XP=7", + "description": "add a row of big crimson triangular spikes along its back, from the back of its head down to its lower back, keep everything else unchanged, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00943149651421441 + } +} diff --git a/pixellab_src/pl_dino/pl_spikes_back.png b/pixellab_src/pl_dino/pl_spikes_back.png new file mode 100644 index 0000000000000000000000000000000000000000..e15ec69b539ef5b0414434dcfdf5342d8884405d GIT binary patch literal 2047 zcmVU zz=jPQHf-3iVZ(+E8#Zj%u+a$+TI&>WbS^~A;4z)L0N#oJw`dqL7M%@_D8M@xjBM*@ zh_g`uLf`#0hntPQmhU@4LpY)jhHySPbn>hefCxuWI|dy}p5R2sAmkjkMX;mDM_K>| z>5mU>!L|wymZwh-IoF>*JsEL{eNgSLMmjPvMeCpPNsZY$p(r50) z>f&-J+F4tXktGE{JG>_679Rk%x%Ct;D$s3}UYpoCw2zW&V|%XdGbUVw9za7@pbAXRQnSTtTIPnvLhPF{!* z^hfQ=qD=sT{+W>VBr=w~fQfIvfQ00WV@{94FPl2c0+vStCiE4x1|L(R8vI9(OfrDvucb{<0I;od24k{^O_3 zL$}oPjQ6A7-j3o&M@vmGyF;t&0c+>?V&;YqT=Dsh<;mxV3 zQUgXUFP2Uux3bW3SIFBv15>bK;&e5Lq2NXdZolT2$`JU!f+E1&+pff`cMVggcW}5K z8-pFQ)yk38p1^6vBq^C$s+*&2YT@pRK3yj5gW0>$uIk2(P`9ZPr3Lx&o`NT0*EOxX z5e^fMZaIudfVJ~`LDqi2kR&MnK!^*@jF8p{fq@Wr*z{AQ43_lBQNL1LaNBb$<(NJ< zUV_?hNkDmK4`9XG)upy~0%Mmrld-+oV-tB20%?Z4>fijGc4HRIA;|a3$v6WuSwW%cy-xgY)|hH0B{;n3EwZwSd7I2wHq=0S%GWV+38r_2_R{#xyWT7j-doas*wq;72Hu zd?eS-te8aC0`3fx^-*$@{|1_yn~*$gEG`=}9^T!%Wq*&@zVQ2efl2(Qq%h2+t@isZ z!7Q9h>UsK%1%Zwhi4CFtP_5i)?ob^N383XJr(|XuMo-6?AOIcWf4NbUJ?@>ZR*KA# z-=*hrWO!UbYj!%j2%qm%P+!zkgi zf&N1i@lZjYuKqZ#nG3QvQ&ufO<-V$@NrwgP2EnzVRFWX_H?@)R5q8cQE8_@ilmqmh zkN~U$`VEMe8bEOW9*6)*5Shz!5tk4vpKI0!>V}<~4reaU#kGU`t`%L z@*M+Eb)W_(T@BdvMYjbZ^yM2nR`RRd_@~(o^$=QYxC70-RSIY`hLsbKg@2Jz0r>Lk1g)HQXMeD+< ze-c{9vZ*69cNi#<5qWbSP+8$c-R8FKO4JlZnO{ISSkQB8(8tBzK$+ixAmX~Kq>NC9 z7C1#+QPjY?y9c6{e0iWt<^p=rq~(#=rxi)b8;}qP|NMCZCrXY64L9WmEb1e{MTr?f zo%Q+m8iWbGvOfu`olw<>{676g`10!SWZ$8+f5>Z#P}$NoGejr~+*7y;^W!HNB*XkL zWE7Fs4vfR-$0x`>Cuxe`FN2)JU%Ml+>ybVJ?4~_lfsE8X5RZ zn)|u52kRH#jymtrh?9?)4Oo15Gg7C{LJG1`v8ez@4p!jW2j&J9OZ04!TG@tGIDcF` z@YbF3n3R|7M{{YTQ5T3LSOn)5WX%;{lYH1+xazbYgeFevUlvdta3&oA1F<(G;>h{~ zGSNwK2FSHSNKj%#=#|i0Ua20ayTM3-M`BXS(4P6Ch60LdGj4002ovPDHLkV1mtc+bIA5 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_dino/pl_tail_club.json b/pixellab_src/pl_dino/pl_tail_club.json new file mode 100644 index 0000000..0a4fd7f --- /dev/null +++ b/pixellab_src/pl_dino/pl_tail_club.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a thick teal tail ending in a big round gold club, extending out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007662267552481757 + } +} diff --git a/pixellab_src/pl_dino/pl_tail_club.png b/pixellab_src/pl_dino/pl_tail_club.png new file mode 100644 index 0000000000000000000000000000000000000000..30b43d599ba42825745f3f4ac50620f68e16750b GIT binary patch literal 2021 zcmVYzBNQD!5hS%!{jjujb|j}|ep_Z;tCme+b0)VaTzoqO)N=iYn%-+6uC zxeK76prD|jprD|jprD|jprD|j(AEg1U%Q}gZ{Z&t-3DW3$FcJ^N7EiJMX_V%#KExl zgCRTRB4`3TG`KEGtDd(WAiTbG4b0X}f@=jOJTvsIkLcRasCmMI<39r$s4Y;p@i-^( zp|gTu$L`}$S$3Bfa0+&&W9A>5VB@%1P*+vcCKXfJ@Y%c@?<`4%^vl=a{FbvYH-0J< zR#rfAQZ_H>>FWW-qTcY}-a|;yeI>4=&4z>uY=aQIcoBTREE;yCT>`b88VvOY@b&hf zi--27g0ov!aQEoOZrh`?N9kj+IyOndpIcYUUS~Df5ETE;$N`eP zE5$d#C#WxU?`iDvJ$kxG#G|452lV0P!`JBG^shhJtd1%hJX0vjOb4%_BdFy9-VPv9 zmUz*_6~aB;VcF&+YH7yUub07q;QmmMQ^@m7*HzDi0SpEM6lZ0S5k~1ghk+q}77OCg zK#?d8jfUVo$k3>H;2hf1<_1uMjqnT})@+&dq--u8%i|A?C#JsMKtCJ`ws4j-U?bFO zqis8Oae^zk|5z@gF_uB$Se}VTgG^hwotLw-leCi{XHU?`^&r+dIPNE`T}~~A%bPh4 zjv8(d=k8r4#xe(6-b_3>Ov%5jlg$VkxrC$l#^~Isfosc&3iO18nmWn4-=K^x0lJ0t z;^K#FNTuU3kRR0(-Y>+Z?;%mmkzV>AlSGbwI zyoww826<*(oQr0wOP8*lTQm7lT})$~jKIVr=|>*FKXPrpZNlN!-q1HNL^9@a=0`A6 zL?c`{x)bUi)wHSyB!27%BPO^?GR5MV0W=^#w1;QjiY>){U>ES!dK>+QH99ha+nX^^ zwkN^TzMx>~e0kn}hzy(piC}pjf{6zJmFzPHARjj6=?47C_R%rND$Exmj1?ITWwygoT#4E$KP-xl)7w-ro4#8jn~!`Z}bps{y^dv~k&PBIfLPXCsWLPrbYn?wUoj!Lao z3s^}uHv0v6@etS?oZL`6j_o6>U!x;}P>HkKpm1{(ggJu@+~vR=k{Z zfU541@lzHW!e`lGi{0P5i3ecp&n8V~2=OFZaIqX5J38?5+%wYX&>HcG?8_iCL~Fs= zzh{IOtpts&9_FGEHq%?{)M>y59Gy0R<^VC~yF}(;vV()MDrf`*yL?qr4EG&cKN5e+^af0A-DZD@MFF-WrG(@3`#>;gK` z_d;=SWNXy6c&NtSk+#S%l+8Y{nUCkD%A@`z zR+O1eX>DXoQ{`nt1y2F4Zhg2&ecAP=u6_y%@ci;W+U|#mN|e+b00000NkvXXu0mjf D?epLt literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_drake/base.json b/pixellab_src/pl_drake/base.json new file mode 100644 index 0000000..9c7e8d5 --- /dev/null +++ b/pixellab_src/pl_drake/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "sturdy baby dragon standing on four thick legs, medium-length rounded reptile snout, small bony brow ridges over narrow eyes, thick neck, a row of crimson diamond markings along its spine, crimson armored belly plates, stubby claws, no wings, no horns, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 461 + }, + "usage": { + "type": "usd", + "usd": 0.007315795368618436 + } +} diff --git a/pixellab_src/pl_drake/base.png b/pixellab_src/pl_drake/base.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c8a3686678fb96dad562d44baf8d4ff0147122 GIT binary patch literal 1813 zcmV+w2kQ8VP)+2Dsm&+%SpR5J_^;bl13*X-n zyi_iEWqB5hTv_&IPwOX-@r_{!29~8YJiTzc%ZsAIIu`oXsMYzG9)s=dfv#;}`O|;j z#vblgwxM9*=SH{D4Z-LUr$Q#C4{;G*lmOh3@!aTUE&cAzK=_q6;X=U*=mqzs@Dv#a z5i+!uh0QfVZo&(-B7%+|MMZW2OMiXKauzx!SP*l0Dqj0O4N1}CS=zx}$5FdQ(+;mA z7*q}!oxKWe&3=%si*O86v={uDcMu(UY8S#+Wg%!sp^Nap?kU05AB$is+vc++Q#7ie zb4!-OGN|1xoeG~aIh4hlkIL}3wIC*HYUc-%h|=??*vS9&i_NFP8`S}XtF`Q>fDBhh zn~%6Ae3?2m&hP#PZ7;_`aR8zup`o&!{V3;-tk;*>bv5XhHh@G<&xAd}g2sAaVoE3w zp}wfPSgn0jQd9>ej4p{^sR;tLiYgZl)ga*VX$Z26xY(IkRBuPZ@Vkgkj)Ayt6Y;h- z$R6fnqZ7ArB^z}>9c?anbi~UphLG?ws+6`JESBPe)~hjiWPb%)*t==tri6$xV! zwIx!#(Fo#j;Nrp6p0=m&m%-Buc0W>h`?_-WOS&Hg`9u>-OPV!^8BnM2eS+ZWwwEt& zUFj-36`ImKdlK6fiY2P>9f=kerlbsJ;r6%Z_NGl9BY2pPM6Ag|(6jB%RRG-zO`xD< z&SVznf>Wf{d+@Kn3dP}Ihob2lHe<@HNmwu>syA)&2%#5wNo>^gZeKi@Gl_-L6#?X? zYTX0=z0p~zy%nUTNq-_VqCFlV7u=$;%U7fQJ2nxo7_v0ZJH?XuW%ij~F0VFji7xp%F&rhkh{G-LW zPk^2Q`g#h;UMQ2iwId7fy*tq*F*kpY77xxVWDb$_yGntb*Ie@I;{Pv)NKf!zoCv9^ z13v}UV{P=SJekhZRdHfxrP25=hB4Zx-BB}^NF^NQGVN&Nx7 zG>n3`I)Kh?&Nio-=d2jdc8OzuNMl>(#`-|EXQ1Z+id@#Mar9PO8AeV4LPwHXf4%Vh ztWSR(8%}AOuUU(MFs* zIm&B8SZJ-w#|MWtYniAE?L?WnC5|kMhmv4nzCtC@f=DqF>uV|>W+XL6rG1Nzu|c@B z^r5#<-d_bmhPI;lg^|GZKQ+IeicJmbfI$BM=1eKAI*F3fdWg=m6rBco*ExeYuqHkh zIJjRklH6m&?aX&G-bDK_1%6c>9<^D9K~Q0UKuA!H*j7wKdF?e#3uvR+g^1G)uDR5l z{y}yumPBS7Xh$?D^c7*#B0O0&k{^lB1NUyJOK4sZ^C^mw0=c*W7d&*R2uAMwthRh! zrrT;jJB2o!&h-gNp-fP|A>ubh%q}<-RWphk5KwK!{n_eqx;yCAT3}5jtY`LmEQ<_- zIDKXx1c9}Ixw7M8Qpr49zDp<2IZ8XK#F2taOP9GEj3~5In(hRucLsFgoIQYu6Y;JU z5eI_)u0+dAV=!Pu2r3FZ7v9JY5ClOW-1E!hR6yDZ9Opa4b?G#^98##@l3j*ep&pbd zqo#yu@vAv|F(P9oh$D<&p0c`o({LHa!BpR=1$;WN%MSK@W-r$eO>q9qy+!&pnT|4t zI!)o!2wR5RwR*1`Z4`u$aQKpJ1Rp+z_Q50If2-E{*3s2Q2;Ci<_3%#g=4MDXvM?$< z?*tl-jh)eX4W_#e(+f{MN^Q!pO{Q z2o<-P`|L@FI6Hyl=5BV2`|5VMKcE-(sS@181bxqcKVIl4;nbBB00000NkvXXu0mjf DYtw0v literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_drake/base_raw.png b/pixellab_src/pl_drake/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..eef6a4f160cb853846fd878778c71876802af1f9 GIT binary patch literal 1795 zcmV+e2mJVnP)3$g6#m|O({{!(3WflRQo!1>l_F3|X%V+SvIdh1N`eG2fF&jHgAfsnY?6|cKq!JN zAt+J;kx&+i1fkLmN+ZLRRiKM3br5N3p|sPPYtFrMUuUMZvvi6v@k?IrefQnvJLjEy z?l~9uk3nh2SQesr0)mR*z+yjM3woY5)L_Z}TTlY*&-yOU;FX)p76m#lYvd@tdC%mkyFts47RH`tYK8cddL%e<1*5$l( zj5H(e#yGsTF%?MzNAR|zdrzZstFHZ^;Zwu?GgqOZE)3dj6^@=x{eyg$0+D9PuA^6F zz_dHpgY1v{3sClL9;`(>+wB51!kl2egf^u{b+SdmRIcp%0u8<6;dB71rlGpDkw0AM6YJgQ z^!64Zv0)ZFVJYkhX4Ke#Q7Juu81doawQ{{vL0%P{QRL!26AcROLV>HtDiCqwJQRZg z@q;I0zRiw=UJo!ZIS%T&%`8}LdlTl;$8TE6wF(GrN}>Z}dV6d<>5F&o`5qaovr*3+ z{Jl0cg@4=8V>|#mZzHkYb$7Cam7l&2^Zr6u1WAc@Z#qv6 zd!1yh!QF=4@zZe&5(XveE>FEv1Lknx+R@b^A?lY~J3n`yPqOxP#r#QnGysM(wY)89 zN>{#NuL-gth2nh-OLyfBZ?Z&^P&ainKlRiCLAEK;%*&LNZoJ&}){NHH3JGCOI%Z7< zOwTsDyaZY$$>2o&v@yIci4wFY4-sxFgVW*QLC}N^TQGLYXw2 zX`=3l5|7^-3N^o)w|TiUB{Wonn~Y7&+6H@rh#3er z^B;O$#>5mubd*UL0wMe6?hL&9&M1$@Z8`h(dSrGk58&7DEd=)5@)+w@@7Mr75QHyC zgm$qB-x+OKJMb0R%&a4l;ao5$By0F9E!U6;7n{*w$?(vyM9t++xSqL?YdbPKkGnsL zheNRu113ziDY4V_+p|`T;HTh_uT%LEUSl(IpKVVN$F!lS)y)_v2fs~%k*3HyxRaH! zEJp_%+&gBPA)5y+nCU-{6xTTPS`)MLFrDFbWIv&*L<=Mc(pV2icgYx3a zF1)l<<>38eTl7JcQk^LhM|5n_P&gCJJlAt3nh~om#rlfUwl<}XeyLxgX^08emn;g* zOHkrj_u{L-?O*l0Ou#CND!>>X!Gr(8i)T?#XoKpCo$Lu_kE;Md&w({V2LneB>zh($ zByyj8HR%mB_H-ibVv`3KpM+^~zz7Xu)9k=_6j$ETwM>if3lvvcucuh9{4RyUOikss zO~h-R^oemZiB1-q@GKxzK2#DmY+M6l*?HYRdxK(V3AZsm50N%Iq|aN- zXkiy?PKe4OgC}`hOOcl4qLM6SEMcyTZhI8dPdn1E6tFG)6M3~QvaV7{=K9T4(t<=% zKHg+WDDo1HzT!NfIvduN*D0Oy2Xg&@HH-k^{ztZN{|2*W&Gx9f=JjVDrQLx?AOc9@ laP!}75%tG@{|BA|{swJr4g&Cs?LYtk002ovPDHLkV1hpWVqyRQ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_drake/pl_drake_crystals.json b/pixellab_src/pl_drake/pl_drake_crystals.json new file mode 100644 index 0000000..204c57f --- /dev/null +++ b/pixellab_src/pl_drake/pl_drake_crystals.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a cluster of three pointed gold crystals growing up out of its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007149896489249336 + } +} diff --git a/pixellab_src/pl_drake/pl_drake_crystals.png b/pixellab_src/pl_drake/pl_drake_crystals.png new file mode 100644 index 0000000000000000000000000000000000000000..a00725b532b537a745f415308e392f9ed6327fae GIT binary patch literal 2221 zcmV;e2vYZnP)sY1`9z}mQD?MgHMisi4ko9=D8<%beM;E{OGU8uj%@h3sKF35V0s= zG`~M6d1W2;b5fFec`W$-DGat`Vp#yf_|{fUN|7X#|MI>eonl?9@%3?n3JZ!FFc5;Z zZ$wr5gh+^7DAHsN=}*7Nn;ql;yZ_rZ?Anj45Ac(>!|wSHR-OyGCfeGMNlGBf^ZNzR9}yLZ2;;r9bIbonIgh=j<<;E>FY@SWv>umqWIt*fDzp$t0E+yN zK6;(UwokgT_qkQ!e#an)aBG}M=KOT5766eKPQduLfzi`C^aX8SB*Eow$C--K0OHXk zAJ!;vdukVt9gWEWnkVuJX9SXt>_c^#rS<85D(2CfHyYELmf$;^9>>h7TsvUzyNB_g zHz{|F4xHh-(bYDAo{mJgY$i`2^4>`jqvqsdI&xX_)hpKEo)^|*^jilowIBJW=qb zzT^RB%^n9#u@2PxJ3HhLjvl!PqytUQTWg;{zJYLd&*w;Ps^$6g%*U|G<3nEBSIC^5 z1+nq6(R|79oI+|=j})ybt{h7)H8V{1RASXl=NLFB?{9X#m?p2@?!jE(}4iu zgsfv#*ZXeKTLLrvo|`~Uth3{a*8F{wzZr0@w|qWa1^anUt2zk$U#s!!n+SW)Bl~AIQ16o-D9dU!)XEHI{vfQAynZ3stE195ZE?zTa%DU*4%{+csxRSFy1nuyhCt-NON8=$M&S&|SLAy7Y2S%cDkzmAa@30+}H znoeD@NbhKUc{fDzEx5Wg1I~Syv0==Fpzs%pe5Ct@1|kF^-|O}1%~+ia@v{u1+}X(? zkjPUFAbVwqz*E`#*14AVtd7+8#eeoEV!(O#p~IrRWTxgQmB+pZQ+T5;6T$8z{lo{W7O%@WI$JQxr4`Q&#r*}|IF{+g%gL`IXg_>m#qsV8q-mPGRh?V_fpRZ_3(S2 zD1mo|3r)`t{1qxHKH&D$E_94f2hN|=eLV|S&kvryW(qY?st$XQ;6H;%t41od&J{M~ zWCInPEJ<>bs$-LxShsE+)~;QPo!d`hdEKsnjxViIa*}Qzb%RR+K9DG(*v+4P zgF8FuSyW|qq-DZ2@ix>{?7pGM;6!*Jgb-47en}A1GL|q|5`uz0X37Ae*+~=Vqp8A_ zg?H*n2e)h9|GufLki}!J9gTTVDz!1SKeY?@yJ@)HD%>=zo5s-j@;9Fi7N; z5NOQK`u>2Y+LNa){~u1!cSU6lHVcT!Ph&$a0X2p=C&*$*2=tAB>H?m-+c^Y&-68!# vkgvVADQF(;f1Mdl*vZ~h#N&tq!;k*~{nGIIILw2a00000NkvXXu0mjfWKU1N literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_drake/pl_horns_dragon.json b/pixellab_src/pl_drake/pl_horns_dragon.json new file mode 100644 index 0000000..86997a7 --- /dev/null +++ b/pixellab_src/pl_drake/pl_horns_dragon.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of small swept-back crimson dragon horns on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008072009775373671 + } +} diff --git a/pixellab_src/pl_drake/pl_horns_dragon.png b/pixellab_src/pl_drake/pl_horns_dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..fd769efb5f8a98953efa4f3e94c9c2daf58dd52c GIT binary patch literal 1988 zcmV;#2RrzQP)}lU5>1A?ufT*~V@h2w(`<7-55PZSQ*TROj5CyLX9+$#Qp> zB=@tf=W%Cd=R0%GnVE9|7cN}5aN)v*3l}b2xNzaZg$ozoEr=wKFR$abuBT1Xpe1o^ z`TOrpM^)~OVH;ArbU{nfxbk>m0aoN>;G-^i%{KI$TW}xJ2`yRV@49C?UON`T`p$zx zskZ#nn7h&Un@6E}lc|Km!;>uX9Zjv++1)&38zSz%{dTPW#{sT*@xtM>*nctvz_@hs z6ke?BwpUqpKmsE2ou3{w7tFdw9J#7O1egEOQ?CKi)ZR|{TjwG~EJ8FfqXU5&=tH=LZ?S3+}Ypw>T@S|sft^7H18=X~!+8vG3d2uvwv&48w{$_HEOuxH!H z`279ml#+K!0PMW(er*jG2D2m!LJ4E;{BcaOx5m%q|GxKE^xv5WBVs@Zf$pXdKZKUO zuh_@D<_YR%@&R)4qE!gZyaiqDCRyZ|FIql3Z8fS1o`*5Xz=_h;W`(9(?~eWZ4E(K! zAbdXL=RJgy_7G-eUBt9`)1XyskvHouAn9NJhPBYW5+e{(eIowjoGhzMj*x7g@W$J3 z;rVB`qu(%n#O0qC@Vmc{c@V$=*Uif6;#8~Hf>b~x&_}8*&Ky9niYxL{awf*52Y`=n%Z>3V{PPiOwx`CNOu(Y%5>gQqQScc_ME|c*|UPmj*d+ zCr>C}QG`)D>v6;+t&lP&C=%5GTKQ`>fQ<72c2xcA5DEgbtu0cXxeOQ)w0^KI(fOo) z7Z6dkSAPx5cMeN_@P#^l=J!p7x3-V#W<53*;W;A|`LsYJdhDgWUD>`JSCc2wgq~lR zs_(7sWx0pvWO7-Z5#GA*i5r3=A z?KlA#1{zu_@!$&^uyFCccyfH+jm#+_h#TlD1Cxt~e4$p`cT$7w=wTc8cb$vPsvOSZf=J3WpH`r=NCBrb!X)_UIT`Lq?Nv7 zSS;T@}oNe&|3Mdz0bEw1LT5=O^6H_R>k>IomO7O1h$STPP++sk}#&c z_swz?-(M70xpmijR-OVOw2fB0QwwZ68`syC|7Hb5z79MqXT#GJ#+$x&JfD}Xs%68B z0vIJrkxB@M$Kw?=ueULT8`j5ZfWoDgOdNmd&#Vn2w+8{Cb37oGj!`5_081B7uqwA~ z`-0QWWpgn2QXR(un?GyArA|Me87QDaVCNXS7$tkI3@1&14@Knt?c@msSzY`@UO51v z>v30RIxvw>paT?Lj3Pz1A-DJ`en(F7I!!_*8b?`on`x~$ktWo% zjpp=7=WaYw^{REFESNhM^}!xK9Zs(O32Oqy3XM47kY zQ`&Zc(c{ACy(0(unL}1w&jf$|0y=>Ve+GxaDTqR`LKPh(^7hcV&`phBHzN=Dpwe=Z zDq=+1L0JFrJs6k}fv+VNicgCGs)HQ>{Lmw&6WfYn)VH0rLR~aziX5vjxP@qZP+hO- zI!%JO5)piN2p5h*c9H2Mmv}})T)x2H6kdL}8a`wzl!h!dr2*kRg1LZO|3`~aB-`G(xu={A3D zu*PJZK8pT31Gr_U7hiywE&Ma9PuCt5NhF@^_f?J>0m9%cKbk zdRT||V2@SKd0=APePZJBMKA^@s*k7q+cz?C51a$5epCyTTJpyZRaWm5aaC5ABXgC_ zcpojRZLrJBh<}2VFq*~$ZmFqC#!;cXjpABDUG)5>RY$i4zA?(*?Iv>bL z#JWDyIMMdWnlHoAZIC9dgh1)^yr1&%)_fWJ9A+m^j&b0mNjfyiu(ZJzO}Z&RjSXu8 zDjlNDmo=uW9G>H*ll!BU&Hnrhf4jC1K+_ZV)m-4ClI(#$0PWC%R+=UCIAO8oP WRy+<6a6PC10000", + "description": "add a ridge of orange and yellow flames running along its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.017054271486070423 + } +} diff --git a/pixellab_src/pl_drake/pl_mane_flame.png b/pixellab_src/pl_drake/pl_mane_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..6650fae04778b2cf22f9e1120b92b050810195c9 GIT binary patch literal 2334 zcmV+(3E}pMP)BjA zlUB1cvopKjH{W}K2qK6ef(RmrAc6=Yh#-OpB8VUY3*nxdApf7S;e;|AFCil7vWY=H zz%ECW35wM(AmZ#!Aj%m!*ZF9?RI_auj4@vb2DtsiWASWwTtL)E?ZPCS=Av^9%C!+x z0@bRGi9p9J3AxxAI_^{;b)6Zb6;>m*qK`2SDVQPV*j>p0xBujWiFf2GaKk_DCqDS} ziTD_&4O*2xY{XkC0m3H{EZMR!8}`D`=ZGQ9m>i4xA?fA++Is$|bAl`CYpoVLs#QVM6_B1=V^&XMPcyu|G#}q`JBNuoG z^>38%+>EzYa(mO6h}_+ISa{$G=?3P!V<62Jd)1 zFk!!-aDVjJ9`1jBISS`~wE`1YufeF@mB`%mB<4Jv&2#1NSD|_5VKmjgOsC^#o2k_v^`g-{T_H&~W1Y*D&ev7nw;yC}=y@3&m!f!^wjixit-< z_F@9NNV>NwHc)SKy-Y871-;pEXuAUAq|=Ovlb?PTc&Ns84SFhYcIB(afKb_BLMZsx zffhKJZoQsZ8Ct5~>4;MQ>n&2!A;3 zfk40V&}G(n!p>c9u)ydsvw(h#{03ZISFGMchbeLO{aKg0uTKIl(574Wjw@z3Z8mmKHXj*R5 zh!M<_50(IeXLB~9ii~HmFGgFz9b39DV97;4ySy0?MoN4%eKLf7~6pr{Iz!=2pkofXS!kmDS~ z{dc~(gj>H(F~oK9p*61~Hok|w0E@Q?ivQR5>9hO!eE7UxIBJYY zkYMw4!f~}3(x;*EbQ$Ka-;9EV`6x=xG#KDdq6k*2g1C*fa_VGqU!mw&Xju8EW)<>k z8~c67jh4W?;_U%E-Do_qzu!8O_~0z^PBelc>R^IIT9+E4>x|QmI@bs(gQNrKM|96O z;*G44iYG5P2c*w(SaJaohCOa+q)5aGl;TeN+P4GaHTQnR3?R!-7*6XS&RjtJPZhBV zT-dP>>Q5fQ)ag${vq$sf&zi5JI{_FSV*T|H4`8JsRIS*QiO-mi@rw!|{E1G>n|pxR zQE(TeLv^)dZDKMC%gfMdk4KEp#VR0l9kw|N+|nT2{Fgu~VHJc$`^th1TOqZ+)4URQ zEpSiOATtN};j`n=d;HI^z13#}Xq6cW+{s?xzd`2z;dMOoSf8#FO84{yOTG44ytxlaDk*Yse(c458XWQf4ZS5`4}C zt`uj*Ek*R+PF4j|9d3~v$)IaQ+@PeoevPXY(h(ClaUz;f(~`t(L+c0q>i;>;vG};E zlcU4*+AQ=uVkAh!h;-X4m{EQdbziLvoD!*p()X7sKy1d7zl1x}j&rO0CAX1^14iH1 z3-`D*;KC6;M5qE7@{oe^L_jjI)k8Vwa*ENLynHq1lKyO#n|KxHnoa%@(R z7}Cd$GjA+2hin5evP-8Dn$9XQU45C2q&_MMO8a#@v?d=Lc2%I`d$Xb10kxtXr;M6{ z7%>|#YIh~h6u*q8rW;!l69`9IlK3LDU2*WK6NpfsN8@4$G3IphMIN7=dOtsBGKPw$ zx=%;fGr1f^QeDC9Q_@ATgukF7MpObCj_-pI0wpCSSg~RS_WrdIOPclsM3r!MWicDc z8sy?k@oEfAr%lgbf^5U2x~xE-QUxlX#k8Ej&6Es8Pq+t1_wAvnA$tTB;eilBNVD=w zjG!7nU4>2jf#^5)N2A|xYCre+#QmqOXbRMNqiRG*dpw0(`gwAG%ioZ)bOEIHVDO*g z+j560!Uy^gNdyrZ{Dcz|%)U8yv}rHjn|-yqJ7hCDWs`8N*9T40St1&j1?manP78#j zdBUkhYY>0Ph2DEp;kb6*nACk{F@zZv^lna@&G^9BNM{ewaQp)+zn2kKH%P>rOrSPv z$^!oV#dAu(SBc", + "description": "add a long teal tail ending in a crimson spade-shaped tip, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009379288011127048 + } +} diff --git a/pixellab_src/pl_drake/pl_tail_spade.png b/pixellab_src/pl_drake/pl_tail_spade.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd00419a3f262116ef02e6fd732391404daac71 GIT binary patch literal 1861 zcmV-L2fFx)P))G^0eP`?sGWja=CENJr}6XXM65*-k<0D zdw%ElyqpWz*x1ltJke7X!}E)uZP>TzAFW>^2^Hn41x%{;oF<0v#$qJUFuEORv4>IR>VDYjv zIQAb37SUN^K_O6Uj5`x$0H$yCI1E>UgfB{(ZxB!KJn`YNqj;z2WAysY(Q82G4&RXr zz{8J`c*3z?jq+pBpDazd0hqqa(j&xcIa&-+f8Ep1;Fq1HD9ei1j;Z2@g%fE%S5Y=D zWy-W@6B2ay!z3bd6K5~f@LaUK-UA5l;bo9FoZ;JL>$45#c5lkz!LVKxZFO)S6Uj;s z(4&t5dcHYThoz~RS{Es`b%G5t8W5SO503+KZNKOVCZ!j^xlNyqDSmKo4NuwKDSQM- zEX|wA1E^2DX}lTEiS+sy=NLNQmbgf8+(TbqdQ1ln@K! z1vKaHU~)krrX?5$JpQ8f!bPhSa$hH6O6$P9LpYvaf!ucwqU4VTY?_^lu)N@8==Vvc zO9WWzLN$W>)3f$Lo-57K7;5X}+tD}N+Ifek7gB!@>d%*3RUgw{pqMO>7t(OCLYoEZ ziLUMDfz5ffTD?$Kz`TQeJAmkrDr~hENEVbk<{|{SI6+ff8tn;VY-u0D`n-8!&=YQ5 zxED~238hC-!YnjcLHrewWCx$#%3Cv#n*JmPqt!XVt5@22ZjpG?C=q%tqj~cp3)N!lnf< z*D7`SjAGAZdjNarXc1OEnqxS4hUF}M?L%rx`M!iH`(b1R zk_{;aS)f~MA!=>d#>)@`cN zJmGXVgr#uBQ8&Mh=A6`#t5S)?FkG=$TQBbVwQ4${DznCJv7zxq--xg@ZSe%h= z2$GZtE?zecX1yLU%#QeMFd(WJC!#Qb4eb>;j9k>Tv}(d>nMeGfsD}Q z>(9wBt}OK%LY{Iva}R1!;jZZ>efiGJAScqM_cJWD%FoJ*#M6E^M zLW`wjG(BVlVIYE9m3oONw+9aQkd~6C&%~nXxAL4mveY${P1<(>fh0*1_gTgm?QjEd zBdC>w{#;t=u+eB=-{Ouz8Bw)=Yx{}I=O7R?!O~5wO?T%Ctb;1SND$#`6>bEvubuM= z7yJ6vqF^IBKhdJhuq$m9OtkQVt;L8x^&>p9?t=5L;ciUls)qjsh-tGwkz729$WU04 zB+bn!zc+35sF&&oPafZY3i@3`nm6b?AfjspN~B%^kq5YDgvXE(=#Lc?Bp1A13|SWg z{>w0*5!k_l2S#j9wLd*Y61~{}m2evyOg{er-~&s#9YH>100000NkvXXu0mjf?d61` literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_drake/pl_wings_dragon.json b/pixellab_src/pl_drake/pl_wings_dragon.json new file mode 100644 index 0000000..313e143 --- /dev/null +++ b/pixellab_src/pl_drake/pl_wings_dragon.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of small crimson membrane dragon wings spread out to both sides from its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009162568171819051 + } +} diff --git a/pixellab_src/pl_drake/pl_wings_dragon.png b/pixellab_src/pl_drake/pl_wings_dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..105900f97cc3b6251ea4651cec44e73842e2181a GIT binary patch literal 2161 zcmV-%2#)uOP)7djadZL&1P3IJ`w&<0)~Ya4N~1T z6w!rPzzwkBFwC){Uy_L z?mg$+dw$<{&Ue1=y9F#*uwcQ01q&7|Sg>Hhf&~i}ELgDcOM()CcZdkTZ%D9>@bks> ze_IFojaJx3n*3;oGD6Q43At;z(wzJBP~R^uqK|1%OnjC$@p}(#F*H<`eZ^%|v%27- zkCmaWu{dxJLO=GK>MoQ%wb<-A20<}f<3#eNzg}e^Z*wRRUpp`^sYAQp-Wm<(u?uJ_ zc`it3ks?oUz$9FLjfcz5=1YReJ3mzrRdEBAuIF>n+ZBcA&u#Er+pjgqYbhYoJlTaw&pwCPo#jE~Kiyf0`s3Tp zoLgj0fu?1-h`Z7obf3s)&HgplJKwP(s-YL|#2iDPs)plC{^J85M3lT)0uXXpJDft( zw$!*rzDnI1AMRO=o`h8N_X#L=JHD;+@{e%(P=WrLfv3T!v;o33X9apQ;?UmeC+kuh z8k;^do&pJUB&vH~kEVm4A*T5x3u9`^Ts+a{Lq>c%k~5QG+gK<@dNnx09LL&mZ_H(_ z1FE(q@kG}|19|BSyte&6crkw;y8UhE=VfwR;nlPye0-0{6Kop`5eX<^j1ht7d?0y! zS@Tfdz(66eIN^_Y7nN~c zPoD7Xqcd^ozADtJq$MI|1Qjz^fF61qphs!x`$%_ZXh&rK+3&dScZl@!8O#VOqskGg zd+c>S&j%ylxBdi|SqZ7^0g~ZNyXPuYmi7N&ypXf+pEzCL#q}GK$Dp&vi+BIReN8it zO1N&XJl+BkNL~`ZuwW+aN*`=TRTD@8Ajs$Z_qGQD=cKvUvBixLQPEJm9xfA>-iYFP zPY#CzhC5iWCpXUHKLrqyG@)zZ&0I?2T=#S#y6qDPpO1s0oPvL2&Vrd(Jl-8703zR+ zlZb!pDb>cmI5r-?U6#sqzaYXEf)egPnqZ(uC((J|EOvA#FcM#>dpzpgS*_jH+XM7; z>LbEX^I-uHaUy)>6Nz|c^I>jiI@inh2qcK%2tf&Fkend>k;_zqf*<>l^IX5A<&<%N zU*i`s4>37!4bTZZ{l+1_v2NBZY-u=Z=tP3}*RQ7Nw}cY0EigH64aV%RLtV|@AMH#_ zoKU>v5%%^Z$m_d*{%@qyqZr5oh=B~D`^6kQ|s+qhARZy zP&&&AlGbT*>&LWXOVTZH&0WEz40HGX?)O~M79qlCUoA#!%$IOayBoeSD913W&V z*E~I6B0D7>FNtQ@8oOERdekQSkk@er&Fepi+%Xti+^A_r!gYlc1v@ISWbg@RQqm9NE*@*o40B0)!BCpkxF<1&?FuRxhH8- z**n%^&L3tP+P5Cqr`6+jSAdrKhP@|%J*uXe{Ff&UWAp?GWwUPQGS+6NHiMSa-aQE5 zpcruhY&%yDM~NE15KiBEd&tQS`qHK8u)ia)Gx{6MOPLNFQgZ>*(=w5G(~bIP8A#49 ze@i5L#v|=GkqrszFGlhd5Fy6t?{QrXZwJs_n{QYF65lqA#hHSqI6XFYS0&#g+vU*<1Alg?fu#SP>#fA@6^8${_AQ;a~6#&Lw_$}scG5FcS= z{q^K!tWQ7ROYd>!Cop6tn?Mc}34$`kWDunw`yXF)QSS~njpi8YfWbm!%KivvjHYp! z!U1*RH94oNl%qh)C%J+nN`StVj;7eBU z@#3B|3?Kr)4rC`T*XpsoisI@G7m?fw%qKP?p~VVfZ8 z(lWJ-k+d@}{Ao5PVx#Jf4pPJgP{|)bVqk}tjaVUaaIEDEZ57a@rKcz}NP5Vym}~WcW+hvh8Hu|G6%&W&S`K#89~e0E0JLZC9$ediB$)#nyG z{(qeCCiH9Gpl$_>%1>iIx&>qzqEFC@p<~VQk)nP!U->-j)$M!){@fw_LJ*ray%JQ9 n)YswB06p1X6mbg{@YCaa*~gqtLtl(-00000NkvXXu0mjfd`cIN literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_duck/base.json b/pixellab_src/pl_duck/base.json new file mode 100644 index 0000000..f97da68 --- /dev/null +++ b/pixellab_src/pl_duck/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "plump round duckling waterbird standing on two short legs with oversized flat crimson webbed feet, egg-shaped body with a short thick neck, very wide flat spoon-shaped crimson bill that flares out at the tip, small calm half-lidded eyes, a thin crimson ring around its neck, tiny stub wings folded at its sides, no crest, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 711 + }, + "usage": { + "type": "usd", + "usd": 0.0075111570623185905 + } +} diff --git a/pixellab_src/pl_duck/base.png b/pixellab_src/pl_duck/base.png new file mode 100644 index 0000000000000000000000000000000000000000..b770771b9e3a593f04cff08c28060ab3c8c11ea0 GIT binary patch literal 1751 zcmV;|1}OQ7P)kt00t?6hp zez--oYL#otX>CrYxv9uVXN7_UqJqE$1msr&_q6A{_q@FK7h3loxXkyn-JSEE_kGVj z&vTyV{CLg_n3$NDn3$NDn3$NDn3$ND+-I;E`d=O{ZDW`L!5w=(Mf99l{|_*&Nxv6w znwB;)OdotzWx2@Ya0^#Kk4??9z{6 zjfoOHOUT|84RDuD1wF6I5-cI8gM0lv7#!>qsnM({?=3i4hPQP{tO~n{1@W$s;6zR) zGEx(elsiupmVEsiDkm7YYh2c?OPYV60u$~lQh>$6(0{!fd21fkD{XFW7pcoNsUT9^ ztuue2<-opR+w6lan3pdVE*0sGjsfu_N?&;jr2yXj>LmZpWxLyICH!KMXl{{agMyQGB~zv)t_rB z|6HU+?d?K210Cm(koq_dSH6vHo#T^#h7tTjX$p<2DR6_sRdi-6rm$EEu2Eh|K znWDEPMr)7?AV>+$%T6SuC%_(W7iE8*YDW3h>$)o#`QcbK);;~I#{fvEZ~+$N`#wrI zIXtT83#09LZb3R?>^7vW(3By$eXS3jHwUn8ZdTaeOqcRsWK65P5bNw$nvhAM93b{q@g;OTSNScE3yO1DYaftssS01yfKbFH4FS z8L5EGA#II7w8kcQJiIs7f-#p1HGKo97@I(L@m9<&bfEjRX7+@t-d9l}-xOiRve+11 z`1~PlDNJ;^SKd|2b46NrqeBdw8=berb=Jl$9+i>cw1!aO`^pqhw_-7#ZR!*kiwFA= z&nCU2bonAZzv{weJ?|~}bO|4-F~EcG8=CRQGkLx@>{e9&avr-z#sUg$#BK7kG9bdI zx=B7xQ18lKHsbDaRc)L3kk~r+3=oKe+RSjbcJWZjV8b-PEH=(v<48%(0-UYbFy|qk zXBtMGI6gGuEgm61@!&CjZWay=f%EH)r2Qe3aB zssK0_%VqEJBkU|--ikHIeCK76?>$@ZbDsp5Q}~Doc~N92E@PfgsEndWv?!v$iBy1$ z9EbBD$RB*67&m{a5&{@EH{zxtHYkOmo)*0uAW%vs-+M;e63e{;DK*$tq6LcJ-P#UO z#sEbbV?MnXDDTZs&!AtE57rGVP(;V6pG8l}UN#Eu9qqYWn4Ip9G_;B}0*xnREi?m! zVv}TnLX3h-!Tbp*%gChtg~FJ7kfb9uV~>YosceH9s6m_tH*x`gX76nkBwYRWZ2-22 zfl)qZ96VKQi)~N{4O&SBOMJ=$1w3i3p!KN#eS++9xttEgMu|Z!oEn?B+TmdV-aaoa zLH4#`KQQH9V%8|Y{xZk}Js%iG9Xf5E;*fV*KAW4adL0wn3h$tJrJP8R5>hQ2%I!>ok;v+{c8haEw zq9d{S`NxE!h`I4m;viKXr%UKe@x;-3ym+H?c29#-1v}|fi9WHRljG6hF*LRJ>JKf= tNfBw*vGd;V2L(fT5jLODnwa4J;9omO7KU_G;>Q30002ovPDHLkV1o9?MmPWf literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_duck/base_raw.png b/pixellab_src/pl_duck/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce1592fad4d58be99442f7ed6c1ba4036ac2828 GIT binary patch literal 1708 zcmV;d22=ToP)W7S@^KHFPn2)2I7)s;!LInm(A=0A6Q~E zEOGoX8QZcg+su*~-4dhGnJ7q@#%(CbKtvE|L5lpFK<{$y>wUbwzCvGH`6cbW@4nl6 ze($_<&pqcEGrLLZm5J=etj+P*lZbIH#$4} z<|j!KB*wJFrKKhu5Ltg{-MK3$`9Tqmi%ViTRiD8e6U8-05ZdF5dd3z4%@0P?CV%T` zK3*6fALXt3HB(hbUki+12f@p|6g9T?*u zLe-nkqYA(W-&|lnxJ}r9;3LFDTT%VRDW3(2e8-_mbm$1n_t<;Vha5 z9A1+O(^3?TUq084lAeCJ8AD!84eWdODDygNzvOL6e?Nbiv4JZ{NP7mS>fgiO!P$91 z9y1DyhA-V4f?2hJ2=o9nzI9|0#aq{)`%WshN0?y;@JWFkF4q)3Z|_!K`Ie0wh`N2c*|?U5saFI-b5eL7bd5besQ!FFR#i#jMaklO)`0b2X{s>cyA0x zJGzyzlTis+ceGm9LxhVkU-M*EI^rWD;GCAp*7pseB{oT!@O?@gZ*ww|6!)h_XY(E2 z{(id;hbE`JJcJ-@k|e_>Ve$7MB|ZH<2S$x$7N5?_KY86Tjy$Uy`{<%?6jrl*2K_hZ zR_+sa^KWqfOfHXnwICY|0{s=MNs8wkK{#td_R)l%*aWZ1M`BHwal6qxI)=KLIpmb> zL2|Jj&P%cx@COJ&yMaz-9Vh>cOm7EH)TGhxVcx;Jdhvz zVnmdDxKZ0RM7VX+TD;Ub$S>B8yAUtUTT9i(HA+AK+D)aeB^nO03)!$2er)f;UoYnQ z-msd{_}f(+oSN}VQVov@EJ*;rV7y2+N+9hCEvnHiYt)FmN1GyT^LPksR3I{}o%qh9Zj?v~DWID_rX-g<% zh0R`*BwX!r`OIT0Wp|hD?Zy<6PaHUe#N2eWl$LX{0`Y9x6!C6&0;8eQz@HnQnx z0Y;mNOhV5Lv|6`UA4c20y#OlsMileZo7HHTY1m89CP^w>=QHjv!OSkL@Mugw&JY?E z$NOS|Q7}g{qs0@8>|Pqy+N{v@h)0{Mcw)g=*-dR`sh41>FV$`j89S^d*QdM!u-AhPPMV*{!x$Lp;I}4-*uY{eieCMKJNOuCT_GM4sAXY#h+f zFc^K2hC_j&Xe}--2`w8k5uqxdpS#)XQ|%;_4L=aCo#X4&$Gq;p?QjKU7KR8@`D$~) zD%`r($16NkrZQXQmqazS>qEnwe8m*QiIjLGM#}+u$MAd|Lm)LK2CYL*o^h)x`(Y)_ zNvkiYJWEx~)2FYiHHQ7sk=Xsp)BM2*$?;LVa45>N0#uVbf2Iwu-5p$7x2Cg}GF~2G z=6^X*WpjFR2A%yQ%B1zSRNiKvy}D$C13_5-()}NEvKEF;!}K%&0000", + "description": "add a big cluster of puffy pale teal clouds behind its back, billowing up above its shoulders and sticking out on both sides of its body, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.012242308616638185 + } +} diff --git a/pixellab_src/pl_duck/pl_cloud_puffs.png b/pixellab_src/pl_duck/pl_cloud_puffs.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad2ffc449c334b17aaa58b67f6b03e5adf492f2 GIT binary patch literal 2808 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 KMNUMnLSTX>)ls4V literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_duck/pl_plume_feather.json b/pixellab_src/pl_duck/pl_plume_feather.json new file mode 100644 index 0000000..6119d26 --- /dev/null +++ b/pixellab_src/pl_duck/pl_plume_feather.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a single long curved crimson plume feather sticking up from the top of its head and curving back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009356668896145292 + } +} diff --git a/pixellab_src/pl_duck/pl_plume_feather.png b/pixellab_src/pl_duck/pl_plume_feather.png new file mode 100644 index 0000000000000000000000000000000000000000..65119cccad701d38e875a872edf258ec57ffe9bd GIT binary patch literal 1735 zcmV;&1~~bNP)N-Fe7m@LNVZM65@Zx1=rU(*72aI~06Appy*XK;rWvXoM)IHOC62nXp1dI}S zf+9dP;wg-wEZC!_zu`<(??dTAvRMFA$SW`+A4XgySr+VJ;X)+s98g+a$BBmb`Uf{} zC`m@WD=0#gyV6k-=#G0RNU(X*Yp?H86V|%#*NyWK`QZ=}LgbUv0xFw3Rnu3lp`}i+ zd;St(516u)5&30lPW1&nhtKwQLbUV8l-|xyn`kudg?n0nN`qdeNl-fx-qQl4u|a(8 zYg3=Ad>y8)=XVRi#@}K_>-T62AYl}t+3XmN16xE9U@vr5Kmsf*-)ETde91;z+9<+4 zFe0nn+Y@FLWE*Ctyj&bnV)udtFr}x7@YI#7`Mv+>=eX3+a>v3UYY>uB09UGu<-WHo z?s}{eK{TNb7WSt@peHb_O2{&z4F@YB#8H-$J(1@@&h#`)E||g-w|{a9<%0|u8c^z1 zMKPN2dYb(xT0UQWjy5C$XKT@TXm7l2Hg_4kwDciA0GVCu#Wm&J5g^iLZYn>W<$8ka_mfDKKlM0!09&q7I#V3G}R)`R@Y;tuLX=T z%quIyf^D)GgxY<3_;uBlRxVC=+iytET7+*7ynxMZ{mEegr^CprX>FbGb_G%FosCNk z8CWNc!vX;BE}jd2R}f|OjcR`HBOV;i%SY~#r;)RHHN1~M4;sjkp#pvvXo z*9Y7g>T;Lbl`G_}f?z?N++|Hr1jz5{R$pFDmES3Ne}a7dwYvx9{r$*&_7%8_ z=R^>sQU_q)=C10%B3j0Gl@BM|j+~m)6bYa3c5gYt+9wKjq#)@+7&N8tb zA}{8QniX>l-yQzx0=C}jzawc4am!Dvf(3QP zbYLV3aa(^x1NM{{`vm^Q(9m$&r4=~|VuPZ@Ff@Ry%$Y!^59?hsBC^y3{n||wGa#pu z)~*zdhxW!5AeCSfdByb40r=tOKJts@yqw7nrpDGiT5k^pPLlwI3!5H_nDLc6C(8UYl<5@MvLZq_kbfc4OcUh!TA_ zOwN(;Zwu7FFQ;d+9Zsj=HwR`yva<4Mjjzalm`AJQt!+}5i0okK$a(qC5P3BJ@R8W-oyC444_4p2_6D2F=aiIul z<0T$QRl?~CD5iM)SRI~hZBOoHFqX5EqDu6MjY9r!-&Hk}VnMS`T?j897X&00SQ55* d3}ZkN<3DKd$6i5{!ZrW^002ovPDHLkV1jH&HdO!s literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_duck/pl_tail_streamers.json b/pixellab_src/pl_duck/pl_tail_streamers.json new file mode 100644 index 0000000..224f311 --- /dev/null +++ b/pixellab_src/pl_duck/pl_tail_streamers.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two long wavy gold streamer tail feathers growing from its rear end at the lower right of its body, trailing out to the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008180538150999282 + } +} diff --git a/pixellab_src/pl_duck/pl_tail_streamers.png b/pixellab_src/pl_duck/pl_tail_streamers.png new file mode 100644 index 0000000000000000000000000000000000000000..9e88fe22de27f50db41433e200edb8d2b808e24e GIT binary patch literal 1601 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_eel/pl_crest_electric.json b/pixellab_src/pl_eel/pl_crest_electric.json new file mode 100644 index 0000000..6724829 --- /dev/null +++ b/pixellab_src/pl_eel/pl_crest_electric.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a crest of three bright yellow zigzag lightning bolts standing up on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009726119703716701 + } +} diff --git a/pixellab_src/pl_eel/pl_crest_electric.png b/pixellab_src/pl_eel/pl_crest_electric.png new file mode 100644 index 0000000000000000000000000000000000000000..880d4025417c371636614c3efb8f83c952308373 GIT binary patch literal 1958 zcmV;X2U+-uP)UCOWOr2mX-!=Xz8(U%*;FXZFd)l>AY=Yf62>xZ)P%YzI(oJ z9?*_f^uZU#kcST{KV6ZQ2uyjo}gb1AAh|DLo7Y0y*rgf(+UxzJJ(zneW z;%%TIQ$$d-5^(8Tt^Tcw0ZNG6kqxax`cWZ}en>Q+etCqi{fkwEP7!UgiS@JV0L0qf zPDP!P$0#MRe{|PR6Y7@RMW2p9V_F>p>XzGCQ18yeo(?{S5+fwmDQ8&J!g^w!NAzi- zvSHns7F{QWB*_~wJ^-4s@{P+3PMn!|F%LHveV_1co=<<9bb@x1`kHrxK^>u{MV$DS zRDEN5$biYtIg!n`y$|dxGlxPpsI-|CCY&3;f)3Gq!96!YCV%l?7#T7XXwvN4FXWjZ z>^m4J6>6`~As9)CpOb9Ws9zDuJa?WBXab_IX2gBXgPQ`MgI^-Dv@mRt4Rgo?5EDCq zG1dgYjRxV>6#(I;L5%^W+dM+F6bK}PORe+bp0L^M02p3dF~@I=Gp7t71cU;owyxD$ z8;RHh%pIaJN{-qSNJexA2OBgc9m&HJf_{z?RRJy^ECUH6sJc)B*ZKWu%!-9lQ!6F> zS;BzGXa^fSEgk*R5->GmlxW+Mo$L2m&H#lGaWBkugN9MuC~yfT1T%?N9|j{e;**Cb z8pH{?EuIDivcxm1kBdzC>=E8QKEQLF-Q0q@OG(sJx?gfMsw15Fr z#-w$%S5SUtKWg2ThBoNtz}358>o20ey08QX*B?+9LcA5UoB3CKh-W+|N&=NNaa4>0 zck61zvnpL*X?Ez?A9=$%8tgjCwh`Ue7NvBEs?coe)+@rYp} z`dF_1Vcnv|`{(7CWG@fW7;tWA45qGmSCcC9F@6tua zy#A1AyIJ6pY63Pn(>4;vu~IhUO+ECn0O65g>C9PL3sC&qRVW?>`Ma{QG$9Ec;<6-Y~pD5RlQVL)fuk10o`$F=h2UWUtzTvGd2{_^Moy?1_GWxEcs#+PGqeyTElGJk?r1t^d4gX<&Mx24oI7TgTZNLf-Vn$!F~@GH^f|1ruhT~vluBINI46MgiBSiziUAZB zA|`eqOPf6j*N=R6&vDh~N-QDX(!)_+BTSk6B61gxRT~l};C5LBnu< z2?Gd-D3IDacQV@I26w^@9xhoGoQK?^?dI8H{CUk~iS#Wq0j~O~Z)AvVZ*zR&tn$eh zcE|sXyR{{-3e>6(@ftzW-VNfpbo@KwK6~2!GNRZER((^4A5==_{!-< zTjHJ#hGB5&^CXDln=V&-t#YEJ}xpYMsdCz4D|2xqQm2OxEI5i;H%C&Hwx%$Pzl>g$U65f7X> zUN8T3+7giim?i9K@TmU;I9?XlGd1yoc-PTuqFg3R0|+bt|1oNJMjtpv`=9boIu)V) zM*tBK{1&K*s4A}*E@yUIIUDrFotlee?9Z1)p;O0}mFli-an`|", + "description": "add a tall crimson sailfish fin ribbed with thin spines running down its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.005 + } +} diff --git a/pixellab_src/pl_eel/pl_sail_fin.png b/pixellab_src/pl_eel/pl_sail_fin.png new file mode 100644 index 0000000000000000000000000000000000000000..b443b78f39f25646462cdffb8d444165501bca70 GIT binary patch literal 1712 zcmV;h22c5kP)vVrYVDFihHd=Q0DN}>KiQF+;D4T=&7L5xC_pizH7AdrHJ zU+9@v=oqlv;>OKmek#~^g(GUltNRGw%gq?=g!XTtK}DWc31XGZf5SeyL0C} z?>*-Z5JLbn>+ABp3AJ*>b8oneZzaE7Lock%xE z79W3Zw;L;lD8Z0~qY6SKB;hjvFvnYE15;!@d(%6<0S_QUhT~|xM*3@?5)(d3GGkbr z2ibNf0GAZC0_f8xMIJjR9mx|O_f8l(B?&=d66}ZTc>j83HEQh@STi&cX-OuG|Fc4v z5Eyh|-uBFJ%*&j@TTdXN$Q~KC$%>E$rH;UG+Ze2FxW(gwNHCFRuQES(#^fG`#w8-I8BGAj#R&l96S z$~2261VY1YcXX`+X0P_iuSoz`+uKll{45W8cXNStmI+)W{z4-w$i8qIqQFEvRE_uq z^7})_%6es9MR0I@rNW6>=j_}H%yEg>Xt4@$0|r6hQQxDOy+3oR-$x3V$cJ-ggEY^D z!MtOv=Qp6=>>X$0jqtd|h7T^^5n=^K2m<*(hbM?hPvAKDd$9SdRwB8@TZ>V|L*1Tk z6m32Tx4Rn|i!(!aekFCdc)Ah>gAvmfO%M2Q@XjzQU7)k07L8~3qw`X0$PA?U^4*1K zK3{~^s%jK{ebDC$Oc`%I=j6*^RL6k$1RFZ;v@0FrC5WHCeMh5we4;k)zw{CFvrVhvX{7&py@-0l}1a9^R zHWeUaNhVHiJfbB#EoFAD<>L97Ncp9VDgqd39Sdd%_W!6Uh?wNU#xq#`NiIsaZ`P>H zn1loMzaf3-bZ#NM0i1CaE4zki_vHWoI1ce0pa}C9WC12QYwKG4RB*)0e85Y~lp8Q+ z!bs~R9A5TVz&~Fuj)S2Gorq#yPz-QMI~K0M&V?U_ytJpg3HFj&%-^yMHPy-z*Bh># zb7{bY#tZ&p;pQB~;eiDO>(gApo{m>= zKuaD){!8^vU6|L+1*kku+UMKeAbjk+9?+-lF=dl_Ft3{c3g(4FmkPye!H4xt!R~<`^OX zY5^ob`<@nLZCi_p+1`vYngy`KaV&)PR^G`F-}k*$l010q3)+d2B7`VA8S;l^Zw`8c znhB1a(P7<7gj015upU?t`Cng1V&%{+4?kPwnn(xdBOq&KJmP-UJD zLqp+`C?1q8wrWCnaGaQ&fI$Z|@B6Vwx?2Ay=B#5f?y6x?bpZw)@Wk@tXv+H`fcBMb z5Vr!V4AFN1R2=aM!6e%!rQ+!vCoi5*oKW+Gs1rbEhm+g7z1X+Lub;Sv=K$L5Owlk2 zVPtX|Z!g{&qA@S>lt_Y3S>V153v5$|hK$WVW!56S%4{%*c_l;KFGZybw6|AEGxPuE zg-#Xf{hkS(obkIcPX{EF9*ckk9YK~r*IupRXnaVpyHQmGXTDnE0000", + "description": "add a thin teal tail curling up on the right side with its tip wreathed in bright blue flames, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008572399139404297 + } +} diff --git a/pixellab_src/pl_eel/pl_tail_bluefire_eel.png b/pixellab_src/pl_eel/pl_tail_bluefire_eel.png new file mode 100644 index 0000000000000000000000000000000000000000..4d28ef625e74a4502abf1e711b54eb6262bed43d GIT binary patch literal 1460 zcmV;l1xxygP)QNTGvge^eaNF;%!{v(oT6b=4iG%;Z) zkwr`-poEbclsSItWa`wEIYwYW)~y|#I>^SHnN?S4x-;MRde>{Ocl}}Sx`q2BmtNm{ zz3cbqecyWrU|?WiU|?WiU|?WiU|?WiU|?`V!RUR%y!>)rIRD4ziZLRf>whxqag(f^ z65e9TfyrP1R&84^>+fyzisz>sO}w6pV6?u0HJ9V>UA+vrMTK$43W^xLFaVwl$8}Kx ztC#R=s~#tZ8uOP>CC#dw2lH&p0Kg)K%d}H~HA?t+y#CpzpCD64px?l=X2(A;C2o2T09n6nC|Qv zH{5t?w&K!e@!I7B#XAc}F z{bRizQBhL#o`HV$42l$K%Ltmr4066&~sD>VoRJ znd;#n6%xyiaOp7>9)kgf>u~ey>eNSJ`5P^K_m_v^?ZQ&HiFg6cA(sYv)Mtj3p-}4d zMdpRfhJc?4b?DWwg&i+_BpZce1mT^{JBjBkwgsWN(F>b~Eu=jdxFWy&L;2JTYZe`wb-PW8DAv!AWtlGuquxtlU;t4fh=ALdS=q;tJ&p z3j(4Nl=>2c0Zp**Cx*IU>zlj5xw}bh#hU)8w-uJoUJfvc?&>G)D7e6uYqQ03jDNT5 z>qz&H5?-*ry^p6MfbIC1U>KMo?O6DAAHPTD095#h*yXX^WHLih>0{8oc}~PHSG6Tq z^GjVH&+VZ6Sk*BH1em=WUI9F!6BouZR)Np&+yuW4###^sb?e9AjjGk;KxDZfb4f73 z#Qx&}#<}Nnq8!hTCsVM#g@=u|)6-5L*!TSfW80gj&ulO+znrhAc>=zuUjV_rpOdsc z4K1W~|Auh0M1C<3B=HzDgHGTYAqxNP)~9Jh(Fz#9G(r>+-}+Q|VUjfVT?=jAHB6Eo ziT@OY*WCkfktFBl8RGYx`)0r}t^vZRC>&aU=r^~-`jNt)azrFno`gbY=v$J)>!tv~ z^-0-V`*1|xYki{;-?2RATmvz$6D52~0%vqGRMJW-L3ecn`Fz0<&I4%qnHN34b)1i| z{=!T#33 z{XfXsr0y@ozMKF<%!?`yK%cI#77`qK1@-cclm80~IwK^& zXs-J)55!;ge&E^lY4rjYbS63h3j2VWg4Oy4xb`=4XrJnsg8NHV_5dwBwYqe&QgnKHa1X={4@Mw9g6_VO7NDu~eDur8?7Xi2AE?HlVGfUh^6$&DyS|O43 zfn;GoC$J*K)!sEPQ(Lgx6N=QH}!q=5n4c>D*gT0To#?e*;d O0000}+?jZJ5~~m@k>k+&i~- z?|06*=bU?{fD0EcT)1%I!i5VLE?l^9;lhOr7k3nxos)Ulav>lvDgI`+I#2M)0KnlF zmuy|972M9r1Pt7}Zx6gIH$-6mNN2es=iOZhUc2EmxSf+Ra18Egk_#sy^Z8pEzwpsI zk>zW}XzLFc`{pQwp@*y>MFe0)?mUD*>vo{`IgLAkr>Zeg^(Wk+4gum z@;vZeu9!*w?)El$UsATl>?86-JQ3s_6973lYZgbuN%N=P*o>3gYR!IL78XvTz@3dxPEXf$nbH#R&D#!P=*lnQ zLBg1Gs>>kc`G5qG^a2nNW)5H_KxppnwRFzy=SlNwOObUYeH36|So!i6`8?crUTy_) zh+j874}1oxNqNwb77#52rDZEw$}F8(s}l~eu>ng9A20==z!{`4=sxP}fzj0-5&F~~ zU$C_vy9Nf){Lq7P?D%)b5jg*oIggzYLxb%QG078%{CHBqGO}~v)fg5{PU6~vbTeeyxmwN6$te9TZaFBQNB_8B_Dj-?!{`j=0R+$b z4ah26gR$u;F#io?R&SL3ls9~=G5lKpCLaF08NSe+Ph17gorc|Dc9N$W0EN5tpB$2X zWadiS3iVGsgPK+8c&_UbvML^tRzV@fO6!~z&3&<;8 zfhYU)2qDaLlmvRFe1f7zEXSF26(PUniZzD#E?bd@drFEhaoiX6UI~QA(xs9q$|m_= zgRmPM3BadEe#hX6lQ`4(v~-Y4+jPJBy-!}A8~?!QYBT%E0s{TL$sGmeS~+exb{Ien zY9_9OkB#8p@d+%<%rM7H_neN>5BU@)D#RRd25FFD{()mhQ1jteGQshmy&z4TOkRYPlRq0R2=~M7Y#emzwXW&zc6?eIn#Y5R`_=BB)NNKyAwSs6eX5Q0!-% zn+GgAg}{*j%q)V2`;7=8sIkIwMG-^jnV7x04TG zvNod6=u_e_X0@D@+yVhHWfGESLFwrumlKQ#*1p?B0HALHnm3~0G1~cKOl?OdKK2)m zIT8R$hGHYKpM+rj!mI>ljT$MJ3C7;bsvRVzNCyeCc?d9tqQK2SF}^>)AQ&k^AyB=u zQ}aoY2MAO1kpd|ixEShXQGy9{oUrvwpdrp6^Hv{2RjE9@1^)jZqDU|#6#p&$6IQ}~ z052_p(epF>Vu-1Kl9(;dJN4~QLmWY7+?RhJ3ir2IJUWn(pC=0+!w$sx*}&rYW3ftR zWC4Bo1t=W&Gi2WJ{YuP`U|5Bcs88fBT;R^dfBW#1FT5=>2mk;807*qoM6N<$g83fD AuK)l5 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fawn/base_raw.png b/pixellab_src/pl_fawn/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..55a8a900a04ba08f32d20c044d553f3e58b54d11 GIT binary patch literal 1450 zcmV;b1y%ZqP)z{Ju^Gq z{mr-E{AXqh++|{R4g9Qtb8yV^zir#v-3LM%00lvQC8_%n$uj(1IIHuZz0y>e6H$8ztMnl({y(|9w&RRn^(12VKu=-3>flkD0pX!18mU%+Det zXDP0>eUNniIszuqpd(H6oCDW1qqH!r`ce}#4qSV@9=`H&@URB0Ohz{~IqqpDTfrF^ z)T&xh4)=7%MT*+^Ha`KixBznp4k60#ly#OO zP>SrCH@4#Rj>gChD>3QoW2!3;o;W03& zv~YtMWZ`gFOtA#Ib;l8mUHc`{h-;3gUIs4K7X$c~C&mbZt7B(Wn@z9w@6s>SHbGj9CJm6Yeu)O3! z6Ie=N5b$)K3=BZ)>yENAzmcPhwl`zX$SB$$en_;P{_Z3~7k@JE?GlTAX2j#3o!hZ@@Hf2u>MO{~&4b^^uw-@?Hx^}@7U+z_0WeL+WgUmb z@5w(dne_saDbRX#A10|AHzB8T9j4~zz=F4sU0*Hg$+tiDG5p&6CLZ~`9RcI4%v=X9 zoP`@PJ6Ku+lYMRcMYSqBg|0Vr3!jD=)>&$w1t7 z&FBEZ(IF=vnk|*TMxAgv2X?AYkNu9(Q>SsR^%*fBWi%BAT>m~G4)xYQ(E7T}dWvvp zc+gvya3b1Scbqs1paBgtH=#^T;NR&PEY8j{+sqG~jf)YD3Aa0FPa;eaBF{Z^;usn} z{7Os+!Sk2IE2k8Yu(V|&O?3B*YsnyZmJ+cFpXn24X@9=873MXnvrfxyR&1UE%Lr1$ zX`d%WWt!1wLn_;l_cBE>7gSE6Jp+#2bVlm6C}`Q1%C!GuBbVb=fwu*ia+o3*UmxEo zxyBHk7`7};?_>@W5*OdmtaTD!vwbtSB_%?9&IAx^HARhkgzgyDx;q3+56K+PB~svc#;zIy5+||x%H2vgz~?uG3p3) zBIxj+KAz>UQc(_V;AaH+7?U5h?R++wZ*M6B(`y|ndH^K{J1ip}$SNun3-xiAK5M6x zzb+=)LQ#Z=ii%M(@~82-z59yk`RCBsP6X5N$@Q+%e}G$*FKnasH~;_u07*qoM6N<$ Eg3V;E!~g&Q literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fawn/pl_antlers_leafy.json b/pixellab_src/pl_fawn/pl_antlers_leafy.json new file mode 100644 index 0000000..ed9ddff --- /dev/null +++ b/pixellab_src/pl_fawn/pl_antlers_leafy.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of small gold antlers sprouting small leaves on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009486502726872762 + } +} diff --git a/pixellab_src/pl_fawn/pl_antlers_leafy.png b/pixellab_src/pl_fawn/pl_antlers_leafy.png new file mode 100644 index 0000000000000000000000000000000000000000..67f20ac3bd288408bcaf072b2ba39bb3c297335b GIT binary patch literal 1461 zcmV;m1xosfP)H?*G%<#xF-SrT zNmG%C$RAn*jfOuoQ0$KsE75|9f&_&YXrU$TRa9)Ty<79<{y>`W&-85~NV`DMIr}7pVU@|5pBJ=L^gUEeaS&rGI z+opWa_TEC3L=w-Ki6sk6*2E-2&ADOh$g__YJo#=g+0LbgMTks8-WT9#e1Gv?cjG;93zV zd6~E4&%eam(A-=&0maVA#?*^UMZ{pg{oJ9s^i$mYa zkxU-I!0Z7rEFuWELr1%Tquq{?CrEt}36Qz*Rs2=HMC-e;^$>QC zHlqK+xJI56kBSC|!DKE0DrAi0nc{;Qp1??ZH`K!&t`V2I1pHC*M&jSBk1T`I#?N@m z$`)!OxCKSl#9dLcY3=P1^6RQ_XMQOP@*m{+Jy8At9~X6lmE|O(DpVi=M2g7r^Y8>e zhd;NsA8v=Tcq#mCEio>Ty6#!j_MAoC+BHbe%Hn;qNQ7vi zWOvH+*=_xT4|ekN;Mr4?Nb6IcQnm;g4;5l${BOSdo3%U=GpKIZN?(iDZoq;M8_*eT zQ-(%jyudCnJIT}6AWC;4&zlinvup(_?@2{v*Ck{uDv6onz@B|rR`YmF@gzX$G}wA% z(y~dYED&rx!qXoS7i(PnVEwm(co5`?ELomfaZVt?tkw-y!R(yOSg4p;iah0u*PcL5 z!CXAr8@4pBzI>+GaaA2iOb-}~T3Q_O?j!Q)MR)M%9uLBc1bJ$e{`0oi0Sa6|!`@Tq z|FR3;y}5EyekW1rpunh)9V9}iwPhPybC6y#HiOSHgBW3r&Y1&DPlBD!#O(F*dSFW7lZyS95r zsK5mfaUw}V7}FzN8@)hnYXN4=1Y7)w?II{hAP6D!B2XV)huaQ9={>E9a9u0`D`JRy zDfd$rup0^z1U%R4gfSCIiy1ang9;J^W|3aT<|ko-pwW{0NUt9=D}3y%1{Ju7>4=aB z`fq^7^m$z^0X+n1yX*d>$O3+rqn^*sjeIzT8ng2=W`?Bq05y&)=MDBvA}WNTdLXGc zLw=T{>PuZCrrPc05B6)-W6}zsQW-qI5TWmXj#WAPyC|3e=f1d%I z?23u#f!sN~4j6VI=o!JBe3{uNGfkAiKHJ^f3K(35UKBU~Cimb0|4;k_qB-HbQOjk^ P00000NkvXXu0mjfu*|`) literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fawn/pl_fawn_halo.json b/pixellab_src/pl_fawn/pl_fawn_halo.json new file mode 100644 index 0000000..989f852 --- /dev/null +++ b/pixellab_src/pl_fawn/pl_fawn_halo.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small glowing gold halo ring floating above its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00966904049449497 + } +} diff --git a/pixellab_src/pl_fawn/pl_fawn_halo.png b/pixellab_src/pl_fawn/pl_fawn_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..46916c500b472e33a9e626ae67486c79596bb62a GIT binary patch literal 1530 zcmVc&qW?L$o?tM=@=Y7xJeedq;-r4=|t^2^`-h1x3=icXc zeqZNzFAyR`h!7z{ga{ELM2HaoLkK?~wrfkRw6`r?|FN&{V2AMIAx*EYl`{(lF>m!6 z$LqV__#iMrMEoGXa{V%ss1uevvl9EKjmkTo{3K9q@C4EGyXF43AC^w)Pq3ZW*$)9g zc>Mqp^cqIw@8aK#q0#^1W={oRxH_5?>V-*wL?&}9`%kTUL{4q{ z9D}VLIK6uhWGo7=VR$w0WQ4$e1r5(5=Y@Klf8try7MorMVPruFkvRewp{fe0v_K7B zeV^$UQi1kP^5^bZh~Xv6VHD=8_UxhpHO{c?6Pcv}GXA~;?cHh3yjcC1Iv!rQ7?Iht z5gUynI%@{}g79KcJ?qATd)0Yt?^oj-8T+W~*IxtK{2`26Z&U5^mYd`EG;hCTM;f>f z7)h9d2JM)H^`_ehl9!0Vh-8`l{UT3z`ViVT_xTOanQe4zv~AA5Y;RL-diG;S4uSFC z%dqF`Vn`we?cg-7YTpZ^su~!*pvY!b+^&cdUOPM|2(Jd#q0LJE$~|pL0~p^=e|-qD zvm-F#o@zi&g1nu0*VB)x^U60rQhRaNe8l#(BS;ut3@TutJ3*EzugI@kf%4M1C@-nR zpD%AgesyKMZ<>h?{fYJ|8IcK=m&6HD-MNwcvb8(VbE-RuH2p-{{-klkq*LrbOh7WM zRV{G5)^zm5q{ma)V&eu=yDobH2pE`A7hnJP_xzyt^a(AmtU$}V0)?A4jxBT&nPaNu zFtvrp>139d_O2c|z{2ubNdh2r1mK>87zL~mK-)OerZuaOTU4alb18&GqU3hSjJQ4fGv9e{ z9C?$pCFIdZbqu94Ql3O9d=Dz<`S&Ve6KvAIV=`aTA8V>`Xb9)*@@<5GN*|Lj;xyUJP4Xj-jvh0KTbT zZ2Ace3WZzN@HrJJG$@2w-#9Zch-ryhATj!Fcfx6o zakUF7V>MtTVHy;|(#<;%J$w)szCUI<(F@&O>X>x`Iy|;f{k=$o12X{<)0;Iv(0f*h zbcu{@)--scDsx5%z*+{gJ4>E3<709ZnVVQqvTzc)0-}1M>q0OP0PICjGe1b|>F9Ks zjBPw;{ZRBCH!IDVZ2~aV44ZIR5$ZaDwtFR%-ng%rD51&-6CkW#fbHJ_HSwfAdWr1f zYa0jv$r>Xh1qM2gBwg3D?UeYWTSiOkJrDp)6}HW| zb++}f)#InS?>}Jz)>)r0%w@V06!s`!UXY4>Z^?D>Qz4S_1XFOCt^wm0S``0mPUq(H|DwXrhdGtZOriAss+^", + "description": "add a cape of large overlapping gold leaves draped over its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008365429057015313 + } +} diff --git a/pixellab_src/pl_fawn/pl_leaf_cape.png b/pixellab_src/pl_fawn/pl_leaf_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..93270136b0d4d1ae4431271f67764136d69660d5 GIT binary patch literal 1338 zcmV-A1;zS_P)2gw=D?u521~P)sXVt>^Gd9o!!ms&Yj)j{lPG^cV_R- zckVgoo;$N54u`|xa5x+ehr{7;I2;bgONEzYXBn?&2K&OyLobPbNTdB#!%w=y?gO8d z35Wx}i$1v7#!tG#M~9EqWdvN`v2N!~=aozH^!gonI(l8wz_-fZ00cd+?V@)Ga{Im5NQE7s+x!vnzdjjLrNiED7)Th=2lzB^qe9&NTq-W@%tcsfIDWAxz}fTKS>cH8XJ5)azNGE8u!^V$zVXi$7JgcHwJ$2z-f@j6M;1DYY+ zst06>;={sk@7`|qgI}CAdmRSN!nf5i#cJ`rO9st`9I$BJo3Z+fN}w%mfZip8WuLbV zpOpuH&c=H^;u>9Nq-uaRmFP6z-p!Y_?H!sYPi_qa;`Efs&DO%mv(YJTxc}>K%<zFdd&FUv}NS8b34t4+VC=aB);D&1&jNY>(4*ix z`%g>-qkQwnzsw$=FJF6TghI3yPT(orTJDKZL2X(%Kx~t{qesmi?!M!Ll#q;+j z&0ZS;#}oN~gKObYEm;Va$l^K-SnQxC&_ZFv z$$zGehtNO_lX|_t7t0_QVB{f+;sG9lU?$+hkZ`#R;NEb1jh+D*CRaxDX2Yx!*9g8e z2|fnXMhP29!-^1@pLK&SieRj8kFX8GaaO2yjs}Sv2EJGZH`B;m&E%-Pfan>52{CRM_|n2eCB`tE1z;f74RK}!Uo3)~ zz|D+}&)#G`uhJ?R0cG@D!=xz&$P~qMgysqgp>TDm!6<97x>|($$1RS0u?&~CAWB#@ zu>?lc#Sa)i*=M{U>hzf^!-t4xUk5uoAZ3!aI@+GEPTQbEX;$GVig!?NlhwEbCo=$X|Kmes*F1S1Aun^ zNdo^9sMTjJSI0HT32{8Z7fVD5hgifn-v4tE#44~_B^cKT^>{)mgx~hC?e{m{iv06L wwSGPy?z8f)Fm)>Zb7U^xvv*exhrBHO2jeoxyB^s}Q~&?~07*qoM6N<$f^pe@IRF3v literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fawn/pl_tail_leaf.json b/pixellab_src/pl_fawn/pl_tail_leaf.json new file mode 100644 index 0000000..83f6ecf --- /dev/null +++ b/pixellab_src/pl_fawn/pl_tail_leaf.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a tail ending in a big gold leaf, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007907035244835749 + } +} diff --git a/pixellab_src/pl_fawn/pl_tail_leaf.png b/pixellab_src/pl_fawn/pl_tail_leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..4eac954a177501415289afd174b3664e9f3bea99 GIT binary patch literal 1847 zcmV-72gvw|P)e!@`FFh!=wp`#*j1`g_wv+ zA|;aejzvUGkS1;I5?4ep1cMQ=2!Xc7?Seolh21gd&feKOv$M0aWoEZs_Dd!+bLVxx zbI$$Fxpx=HBab}t$Rm$Du2wMQI11P(RX)F{b{aS<$WhW_3w>RJ@Zm?$xYA&U+>C$% z?rjy}!}ImF=#c|_UtHal;QgG50L|MaF>lAo?|A*2l+Q8@a%jXyK`FmS_cmc?<4G*2 z8Ds1HK_3BvJRuqRR8Wuuo|j=J-@2IVha|KY zS5p*p<(>xYY&@wSfBNwWOY*7wtYDBqq&vd--l$IgsU>ALPgxg1t{Xs9Usw8`LRPBE zoAD|``{8r^$ci*Yg&Y}L3bYP?f*&rUc->lr*1w_Jebf$Qz!B@#XeW^fy6ZP4+;jZ+ zIgFcl9Y1bp_#3sgH*>Y`2wgH5hT2leoB|iYz|g(^O%&Iy=3Y#f_|U4w>d@WaBHZ*N z&V1Kwd%uVRVTAwAM>ugK`P5M01$;h`7o83Vy05ry6$)NigT5DDfZXBt-mhuVAi`J{2f65i{Cyr)?p+_DddTux~$W!cmGxOdKDI{E0N+fuyU zo|jYdo)tnO3fRoq{5;yaJE22#4_)`)UdBD`n{uy#e01AKw(3n$@YepKE9(& zLEa~QpzHoAQ+a!2|1W%Rrx|APR4OVF4F>vc06#p0iYSD@2@Gp(0jr#)>jRNbm$(^Z zgo0pOziJN!9zj-jnLMGWDn5lJ@EoV=-&!`E3!+{pwCsZ#XmJ$!LPV|W0mRp1fI%PO>kNQ7@hzUKMQ(b0XV-(F8vT~Z`y(GWnmc`t9H2y_w& z3OoQ$aU^u6R>C{M-_w2{d0$MBLP~gy{b`eV`Th3uOBXgL}$VWTN20%(&TXg zuGm$R5x#f~w>{&BABh z%RJqQ^e4uxOnmvgYAl>|4QlpuqG zX_mo7n3utl6)j(_UWCyT#$tZE$sm$eShWdn3Xu)fZ%CK~kzuGJq_Hn*0!ob;`CXtl z=IKFb#?K}@nUC{;lBVfc>yw5MpuQM;Jq)8;F-=4 z_SRKn>f6on$&t^eFNTt5_$+ajHdQ7gMB4w*C5?j9s?(1QgSx+U*A4&+ zvGB}UC_QI!w)-@$zo}R!BBsYOC>mHSV5#J#EFwtC9v5wK?`L>Xv_D$GD(>eQK~{NM zA|pdkNnJE+YQn@xFPbVU6W&k6>6(*850Ar}aSu0)&#y1C$`c&ApFAz^)9H(XEWj*GVr+|c*$C9e zjnvu%cKjGOf?Z{oE)-+|W&$Dt48tO34ADkLh_?UfdS4U_6j-D(Gp=O$Y=9ep=}Twv z7G{|a-8O`R0RSRPzav_~O4J6u2BhOrS@GQ@KA^IISq$Cym&u^Y0&+T}LZ`iCG(R_2 zb2%)6M%>cXkzgoc82Y8zP56;v5D~q?v&jE;l^hu+-BNeJ89+sp|NA5Q^FcmO=Rcz_ zTbwe)-6Wkg0~E4S^{4*$OBg!{s&$)%U$1@UEKfx002ovPDHLkV1f(`a!mjL literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fox/base.json b/pixellab_src/pl_fox/base.json new file mode 100644 index 0000000..a47c0b0 --- /dev/null +++ b/pixellab_src/pl_fox/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "lean fox-like creature standing alert on four thin legs, long narrow snout, oversized triangular ears with crimson insides, small diamond mark on its forehead, slim body, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 202 + }, + "usage": { + "type": "generations", + "generations": 1.0 + } +} diff --git a/pixellab_src/pl_fox/base.png b/pixellab_src/pl_fox/base.png new file mode 100644 index 0000000000000000000000000000000000000000..1970227c045d61c00c0d5689912929279308bec1 GIT binary patch literal 1780 zcmVGWQgoyS=2%MRAi|C1Txioo1ec?>wpJrW(^*#XM{~=jX@MgZ zEpl4)N1Y;qDJY6K6H*cXJpa34;h!WxPWz6W%YEb*1`HT5V8DO@0|pEjFkrxdf&UdG7vEz#^x+mTx%%QaP33qobAb?sQXpLk z@!u|w!K`%zBm~Qe^QhU9&$>z@dU*Hd|COBkG0vU84okHKH5<3M)R&}T9IRCXWV8xG zYrpLhf6&~F&G$-Bw7ry*uPr@^3qSrW9+A4t1k?~XItasN&xGD4LBy$Stlx{*H)Y7= z_bpk4l>HX*m`g%8L1zSp2I?sUZrenh)SZYE1o=Yeqy3Bm13cylr(INzyyb|jZ7h=wi z-?7v)$f{n;?CT)_Y43te``YFQR<{ZvI9s>b>dU*V$dk$wc|B)c*Em2df3yOK-!OYX z;Oyq_5cP5b`cF$ly{`w%4bABFmxRZfOeiYYpo|^tX1+aVH^|cqR~zp`DcKPsy5()o1cBH#OesVG;(Fo?`=Wt8bgB^bQMfN}gt& zh*P=T(BwWQAP{uXj6H|)v8BPL%vVGc~}<>HbWnf z7BEv?Rfotc5f&ATo}q2CPq=^QHsI~=ki4ES>Dd{@=!IL0<@=!#saE%DAX89+R+S9D zr?KcxwOHcp$m?PIx(i^~%<1xPB2DD4A6tnxSNx>pFZu8*R&BMx$=^uK{(0`X~`4h1@QyFRPk%ntIzS77vu>izxvur z{o9H6HSa>1pc9CYYF?mFdunfCOkVd10V77)JwGxfnUfYpjiBUVW)wZTRUi~GBaxG| z)dV4!UVi=q z%oA}MVDz&0IPoKEvK^|mAZ;~}aRaUH$&sdHZo~3^Ubq!I#&$_{pJb@Ab;h}h&Yr0Z zhExaH5%OYlWWn@E?l{%sOMM_|e4qWxJ{g6$g%iV71whLo#Rar9I_#kAT8CDQF54D| zeQ6gI+QyVrI&_G~H|Ftk1uB#xcQ#DuIxykIg%E@w$lj?mwHo9T^*wkg|8~=VMgWYj z;bsrn2PhI9859r^l)_Pl$U-Ap`(WKg0E`YiR3Mv7bo_XEN7z<4WFjO4DndYnR&8Q# zl?^&V&dTi%PmBOeDnElFMH^*^qP?a-4sfi9+4>360H1z+&>b{@RUAu4YWBk%fDTU< z*71!HKJz9|FIHN*P;OVEFz|WAMka_`J16@^=_wv9KEm&loPr&`_dSbT^foy^IzD4W zSee)qwv>=>U?WqKdAm3?P4^kiqNgPBtD{5Iq0{2|yY!qp3W0sO=|e^v7i#2N{Q`?$ zx0DNr$k>o@_T?AvQ}peQ0)UgFaF+4KVlE(>K^IAA`aI4ZK5}F>_ucw~O9KYbJ@F5W WyD#Q}3;7NJ00003-QPLC z-#ZWB36oB8PgL6e7qXC6d^=PR%d=7#JU@ZQDIzI?tdzci(Cz2jprx>gJT8k{+fAcm zCFFey*V^tt`^9!>IZ!C-BL_hY78YaxSL#0@pbv+Kp`foCDh}0B*w)$$aQ&xWj5v*4 zLQZae?%)*{1rzNe)^^hfmIFQI@aDlx0k$%I2PB?oH-gm+Ord?Bi(s&+j-gqEX%E5m4*Lm|T%xfH$CJ2ib)^yE zyHqV}7BE_O9MFWp^4b@h3hNI40h?{yMfGylRRh+Qr(_w|4nGv#a?pzVra@$9$59b1 zx&Xpzv8twhm~CgcL$J?aWht~>E%+XSUX6yC5wXzYXbDyW!!Y%49XvH;0TreD`MsM+ zEvvS;X4}}p?ZJLUCbfk_vRwioH|RNTdX^N_(ai(&Z-v8LH%FoAdV4p$4xG6~p-~m3 z`(e@ASa{*J7fr(Ioo3Lh%@Bc*_LGWiYCfz>?mPqQD_eyMgiXxe2s^Lj!}_FfQD=n5 zG9|zjx@U~J&NRKNNm#Thf@0|y7&6}_nA~qz!SPc?P&go7Fmhs6Kea6n^l>o)D65l$ zoioK+xKFruTJ_DF0!Awni>_u(u)Op^p)kdF%(|%l`@H~m&Wf;Fq-k5j7++RgCER;1 zN)p}630;F1?mC%H&qLb%i)_m>f>rZf&A?t!k-}$$MA$n`+u`kPKg;%Ki%$xh?GgZ+ zdM<-!J1FG~O0b$-0s&<63eF9%eS{EU-$l93TVT|GeqsWJWJL~0XK6(+I*u!F-~$j! zYH2o+sZP$|6CX{Jqa~|+M}hOkLi)_RgobIJOKuz|cW+YEngbyg%M|;Vv@inT!U>Ep zo;B9t8*m8ifZV!r;EUPy*;=t@PMJ#KjGSW+)pSX3C2 zF->J^@Lx(p`|Pu2u<=+gUAQd#YdQPSDf!bEzwd*_%0^k(-kV*}n3E49D!&YZ!{X`n zf$a#rX4JNU!;h=rwtooBT9^b!_QXSV)z#67rhN`sGxcm@j|?obEP~<#gSUJ@K^u1E zD86O}DH>q0i|8H~ZemsmY;~}O?$CwOEzQX#Nd4#^SKZe}0W&X0j17~j0eHphp#Rt@NYT8j0f9A^+Rbi+NsXnW?0M8xBr{@}2 zFy%B?W}W;m8IarTw)^#0|<(r3?H(Y z#SPCOlLbrYBK&6k`APsgfX5R{R^HvFXqN8#b^Kk002ovPDHLkV1kfHEAIdR literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fox/pl_crown_ice.json b/pixellab_src/pl_fox/pl_crown_ice.json new file mode 100644 index 0000000..5bbdf9a --- /dev/null +++ b/pixellab_src/pl_fox/pl_crown_ice.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a crown of pale icy blue ice crystals on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "generations", + "generations": 1.0 + } +} diff --git a/pixellab_src/pl_fox/pl_crown_ice.png b/pixellab_src/pl_fox/pl_crown_ice.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc4523a635f1fcc5bbe064084fa1c3d61a63c9e GIT binary patch literal 2177 zcmV-{2!8j8P)q7isMH2f)Qq5{$BdcdqcS4F zQ1jWSsEL|FXi91tqvR9QB5eXCR^T+>w|h=^ckd#ymxsB(nLGF1J@=e@e!ug5-}%nj z3;5uJ4?g(dgAYFV;DZl7Gy-}iFBGZA$^@=fT&K~(a&sMNiTT%sx5!qO0p)<%XzD6eoI z{eGQVqA6ghXFZ`i49O&SZpA{-J^6cL%3_a=HRY^esc*$awjGF0nFJ#twj4UIgrGq8 zuoi%n#F20np{mlxd4Y@xCr+GHg49tI{XmE&ae?TRN$42+G%Z?a->MTJ^Jx-}9{mGH3VuOx z=8}5S0IVX<#5XSe zo)03wW%_K)25no#dbutv0(qfLmn$uSJm*dsZ+-y?No(Z`O557*#F)H z4z$yD%vHqACU2Sx5GcyiNZ$KSI`CM}TA!5`K+hMV0^>IAoS8IMOY$UoOZp^yCSepB3rPOtTaB3wL^cO4-l+NPXXD@v65D zH_-fmV9Nmxd{T@t4|T!B2_p?FWiQNTi!mbq`kP&xMxIPwk#7K4&1mHK{-Zn<2Kyc6 zz(&4J`Tnan1~^S=L{Ji^KuPAWhn_s)*oku<{rwhe08Uj^vUNxosSh-G5AkkjBo++n z#5dP>9*7n#gD`sB6D)uP1;<|Z-K~P4i~|G;mL<#P!H8*sZRQ{d52!{)Z6}abvCIY1D5Gw2ON3 zLM5I%x4U@=0EZQP*QqNu6fD746`sT{#wvEl1n!wTf%mAgt1(6g<*foifQxQ)Imc{2sDz(f#v zJ=u=;O!P=zLXwx*oS24`kS<8NP$Z`~C-N6HVH$Z;1&}K;ipoTq$d~R(!T6bL_&1}` zcLhzUNk`jOToUmbYX9 z@uh`M?VD-(st+&+!m&Gq&-04#*6?2T#vMsY!e`&H7<%&L>k|Fno}|P$efSh?|Jc+T zKRLKN?h6U2jlA%Ni&mdXo;o2#aK&xyZcyYU@vSTO@p-_gK0NZ|4(Cej+r>Z4UC6}i zknej%-c%PLLXw=`zv-+eFGLOQjQekwC^Vv@y0+PDeB3quStczHBZ8EC^&B4Cd{%=5 z>JX76OVEoTg$W7`!|kI-@O58D*4RG18=uJq!v3&e^Xd%fU^ud^+jkb}hvp;3+TY_d zjcx&bhj!;c*5`>>MM(NJ{YDmY^Ps+niF**$7yeQ8%3C_DIPbK+Iqg!!KA8EfDgCyX z(h8tynguxtZ{W-|7dfZDGs?bhClTm366lvjv#=&(D~>E*$z@~>t-IdJ+2G*3eRA|` zCEli6q_}^=a18!%gE<|Cc@X5=(Xsa3V#3}%$5nbuNX^>L=fBSiymW6U!n%f|s`wm& zEBxw2J}5LyY;4m3uf;?mKlKw+`mdpZ$s5i2e;z!E*tG}wnifzwd09sNar>h~&N8(B z;Fu=0<`4u0bxfMPBu~)K?G)ft`RXj}l{b!LhqAu-(n3W#|BgPKO5eOY7n9bX=QNp! z6U-v-btB}D?-$PDrLU3MpFLiReV;Ezjm>@MS0Z{y9G}aswVTUZJATDY-#mgdclSqV zR3g^S8;h;E#axz~^by_;?Bex4pdOl8BTvMsgZ-wz&It`AGY0PvdeTnl9p)4-D3HFK zx&mpf0&#Y5lqz#fsiws)tG5kEbEl5cict4ofng^-k#~&~v@4V_>V6KK2`*)3Li4h| zxXd;MrMR2=+xG@t1)vq7EkN+p=n;9R>oj9D+O{~{k6JHEu762m#a zu8dZQvb=b;N^qQrxvUV`0)j$n-_BqA@T1b$dRY7J+^ImLzU~1 z)3!GT^;Y`^Zb5e5_9D&}&9H)og4q67rs$RM3I#v<(1pFI#15yOUXU3#uLiXdivmMCcB!ic;hE{LJCr?5ao#)ZVCzWm}gW!ueB zfJ=SCCT7fvXMt!0>q)|^&*LOCG#x}U>WdFP;3~zxP2VLKwh0rR00000NkvXXu0mjf D_Ov-- literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fox/pl_tail_bluefire.json b/pixellab_src/pl_fox/pl_tail_bluefire.json new file mode 100644 index 0000000..4f909df --- /dev/null +++ b/pixellab_src/pl_fox/pl_tail_bluefire.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a long fluffy tail ending in a big flame of bright deep blue fire with a violet-blue core, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 8, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.01958835331598918 + } +} diff --git a/pixellab_src/pl_fox/pl_tail_bluefire.png b/pixellab_src/pl_fox/pl_tail_bluefire.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3095be10fff9647d5ebece29a48f61d744f00c GIT binary patch literal 1881 zcmV-f2d4OmP)o3jxB*(l(?vVkts^P%uRhjYeaFQ3#*`gAjzopdmmM z6Kqo3pb1j`&_b}#g1oF)K;$WkHmRc0S`g&XF~7N+?d;xeckgc7a@YQn$v$RxZhpV{ z=KH>xJ)#bDpaUI<0VqAHSvc>h6k{TUDuhZg0#@%+#Ca$psMOA(QjCF(AI^(YD^RJO zL!}snQ!7v@3Sma9U4=mgkDqhj5n(%FRElN+sTNZp@ z4fn^3?|wsBYnSr24T7`^tev zNFFiJD1_@U>pY0cWKWjf4|$rXvyKc6t#>F!`GMP`Rx}(#4KqZ&qO?}Kw z5%{z!y7_gp4++wC7UH%5O8LqSEhz$nqkV1fX4<#2LRVo$YE)h)UaSN$gGw!k2t?rI zLA>tTjbaOG+P(ZujqrWTX&}Q8Cgq~Eucqh9E^0SGe%7XC^!|_A>4l|F>mG&}C|yQ-six;$?S6OP zqqgK9QR8&if}9`=;wZ2R)Y*}Db0Nd6pnPZ=?XTKJ#<*?e&_ML~dxhkEDvO6s0o+^J zm>5Lf8{cHk!V2ur9C^SkcM2W_$XN9%cZL@Vi@8OKDIkx2m!rx-3PGs zBf~<+2;75(BxOHN(-&px>i+EJPh;tr-~1)wp_1pz=uqJycc3VW!tSzK8k+wKW%Tb& zJ^OW|lP9ifBq7kbyv;Oh!4kSu{29NGsQ|B!g;8$h86N-LNYAfbzvaB+QSIfp?1z^J86oBfXUF<(sI8|J`qUgz1OVA0Fz&=zqB33%(?WBX!cA62=dPMc%l7 zAXbl9K;p>T#P5D}zvIu4f5D$r$LN1LwI*CmTq_aq9&NjvIAhQ;v zbr_cvl+a)ywZ3mWUC$Y<-8T~<9O7ZWU=+aEF`LdXC*+NebJ_eR-(s-|8#WJxA_EJt zO}=xqFWqM<0Ky?crr8|VaI7|xh~fUWI0ctx0Y{fzS#9YMVL@9a z>^YNlOITSPK1CqHv06-Dc=N9jKqw70v6D- zcMpmN3t&}MYiRkFN`8U#S6=YoTVTcBm$iBsd%Y7Vdx944gPiQv1Lt_QDE>V0Ac7rk zD8bx^^F#P!a%U6zBw=ds`n1Ibyk2}O#CcYp?p{#aXcO<^xwigqk{Q^>Z7Ud3Wi#>t zzrf~fS)~bNAYu6hS=6IV(e{HV0NH#B*95W|>E>W3k|QY8c3=-sUpmkMYNz-gujrWr Tie6NC00000NkvXXu0mjf?(l?P literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_fox/pl_tail_flame.json b/pixellab_src/pl_fox/pl_tail_flame.json new file mode 100644 index 0000000..ea00dae --- /dev/null +++ b/pixellab_src/pl_fox/pl_tail_flame.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a long fluffy tail ending in a big orange and yellow flame, curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "generations", + "generations": 1.0 + } +} diff --git a/pixellab_src/pl_fox/pl_tail_flame.png b/pixellab_src/pl_fox/pl_tail_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..019e79b00d7b6fe62461c6dae9a57894b91b8ba1 GIT binary patch literal 1916 zcmV-?2ZQ*DP)ou_213;S6kk2+~v#3{U$Vo^v_(<+=BHc~ z&b<(gU<4x=!3e?=g)!q8HoIq3y2YVVn4@?W{{q|2~tpL5ImI!3iP4Uqs7a^kAI9rj^6b++ zXPg_T6aut0oeM?;jl7JCf_3!#o@OeEoyyPQ1;zXOcyw-ypc}it=f`)ZCsFpA=sx0} zeLP8CtBvLN@Vs$iq*8G383r;8WzudC#jIQ&*5tk=!u}X?ntVss*w9(vOLJcS}3!+&m#nUO^GAP1;91S4c9}pmX*KEFY+_u;*5XZM67j8H?=OAO{cf-w7f4vrQo3yT|CZ3kjaDiN2ki@#lpq9 zhbJc|@GUkok#|%8=T78db%FC;J*Iwq_sYBcAZ=zU-+KkN%|DUkBBq>;p#2S%gu3kn zhyWZZ-6C>?<{d{%w^)*&6w^262fXfYvTjpdGZz3GLcs|txdZM6{*srGo;OR&9|GN1 zF58l~>xb9vImXUUar6R}Tm;C=ahx)v&~fx8yFP%b0_(5sJVOu_Fp{5p{)k;{YoXu| zRB{QzjRBAb`Id%Kdinj`md^`!Hv0#M-U3y5o{(a!vQF$cs=w<$#bN z504TdFi`9JgGe_Udm$&CHhYO1$>UrmFOML-D@z>hZS9=AoXiG7{@b!cgDb#+qK%vg zL?DBeW%7b}ZDk|h=Pk|Bkq3qdr9}+ zXL>$kRRI-!S|(o_klX)pyp`|0L+;SO9L>sKrg?%4VfEOA2^#sFMST{&W9t;{x$&*n z<@tfnPTPRb2lju{Kx4;@*4ng#N-hC}kjNl{5x52qnKbVqn*Z#BrkNX{)L$?X512e= zk|O(i4xi?GgPC6Ei_rUqG_H&o-3+iQ0As*;}@-5I|tVj$ioxQU{~exyc%NX=?1$ zA6+efZtDh`_2di_abbNaq(UwLb0RMTYX)NW_;YF+?XBNo)gRNq1y&X=E)zBq_m{kD z3nEB*8JS5w$%AmxbzOUvt3<5&uZ^*5`f`_hXu5dnX@!Uw^ksFgAjoT*n~iU zTW_EvX%O&5X{GkY2$rpp?qP-~?w_vGUS#Nq8S?}@ASV7cx*0rxHF!$s%}?t135LH| z@D!HEM-O$?uWI*Y{50u)nv<=~EKN!F^SWj}S~Pw!GMvB;U-}BMkK~8)r~AAmHemu* zZutF-RR#RMcxj5`yag-eYo@l*CVq?OhU#lIJFwDCMGQk_EArmFfW-?z{`em#BEL=(7~m8D0000", + "description": "add a pair of gold feathered wings spread from its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "generations", + "generations": 1.0 + } +} diff --git a/pixellab_src/pl_fox/pl_wings_feather.png b/pixellab_src/pl_fox/pl_wings_feather.png new file mode 100644 index 0000000000000000000000000000000000000000..016ad0243cfc86b261c1350d53ad9ec5894d6b9f GIT binary patch literal 2278 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 Z;=jDT7qQg>Jq`c>002ovPDHLkV1gCOnq~k1 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_grub/pl_antennae.json b/pixellab_src/pl_grub/pl_antennae.json new file mode 100644 index 0000000..3c5b474 --- /dev/null +++ b/pixellab_src/pl_grub/pl_antennae.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two teal antennae with round crimson bulb tips on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.0081728073226081 + } +} diff --git a/pixellab_src/pl_grub/pl_antennae.png b/pixellab_src/pl_grub/pl_antennae.png new file mode 100644 index 0000000000000000000000000000000000000000..8207ed2650c1e297da11661ffeece9b37236a5e3 GIT binary patch literal 2666 zcmV-w3YGPVP)8UF6>jtU~a&>WVBu7U(qq(!1wMJ@8Mz7h@E1Qj)CO|1>>sd-qNG>r#Mt7&=~ zs}W-WpgLrU^$$2uw>Ci-WG~QK*sarN*>x zFqjH5`5(N45F=^r3Nwsm%&RVL$UFI;^+6b-bGUu8@PG%v81G&)kO574cfSKUTp^p9>ki6;S#`mZpu6YtDd z?zGIG_ntfwnMVr5asK>O&^?ut@?Yk0>vx-1Pi~Z zT0fZ@LUmsKcwoX9c!&Ed23Qj_S)8Y3tbb^`^w=a=_+3oT*i>tT!)H;rda-JK)wo)q z4hA0Z+>g-K%Ux04s@Q+TksdEX8v^uQm4mQ0HU(zO4RC&6sYC5M1b88M#_M#;zf&aW zY2*49ep8(1j-LaI*_zyxRb5sN0+Ap+7xioE5Zt;}*fk&$ zqsGN6ZFle3i_yo9fHB%cH45cv1;$581Zgm zB8(Dn`9vPtKGhM_ZE|07X~t^${pHa*0+>+zYF=fn+wVPqd*^a7ENv-%v2r!$^&5^i zPh}wy?%=rXntsED^FMg<3s_WqK-~Xv)(l9kv^amLOc=u2P=WBx(nZ5~3udl>`SE#4#mh z6gH)0;Ow64$I9}Hj>MaPUm}*uwm4wJPV8Ea?^Xj&Te5?QjjIC?_9niT-{25*3}*1AG2PE#c~rG)OVdQX8MlMT9jq-A{y^E8}%VAQ4!E@(;&Yd9dFw2nNMbm`B z;fp7798QRsD>y)201<4BAcw`1f7t?KRf!0L1dXPh7*PVbwCD)eiff80l6zb9oi?)G z%u$X8gg1h$J4Td(J8A%(BaK9dLErs>5&4Jhq}Y0b9L}DO=ppv_8xjT|6$$UdE2 z8Z$>5>X;uV+XsvrC+C4lBWMW7a72jKh+qwg zM3OS-S=p+s2wN}>J^OdZrg2FQ@c?UV1Nwa>ZtV&&PbowD_DVIX_Z|Y61PiL+6Zf2A z3<`I3=PN-rl&qYsQuUQnyUS%|xN_ukXj$!t7w@=%(6$1+2ZqAGw;nrFmg7$Op+@P% z9Nhs1H^PidHRNN2hP6Y|zH~u$xywF-zE6n4(4i^w@$X}K$|k9-;I+b1bPf)*lTBs* zBf`Z$0yW}pTZ{1j1j~}9wUQBbky$>vHQ&p!U*yxcMc22e9tOxdjJ3c07*qoM6N<$f=jCkG5`Po literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_grub/pl_grub_flower.json b/pixellab_src/pl_grub/pl_grub_flower.json new file mode 100644 index 0000000..e606ea4 --- /dev/null +++ b/pixellab_src/pl_grub/pl_grub_flower.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add one small gold flower with round petals blooming on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008501098288430108 + } +} diff --git a/pixellab_src/pl_grub/pl_grub_flower.png b/pixellab_src/pl_grub/pl_grub_flower.png new file mode 100644 index 0000000000000000000000000000000000000000..f371bc8a52176aeec80b53eabc78a7707a004351 GIT binary patch literal 2650 zcmV-g3Z?alP)s35w2P!!DugV7kHlG2rBSJ$;lsohv{ORFTSreak- zuC5Ew1lDL=j9Ez(MUBQ70hRTGP5^}%K=2W5^{#^ljnm~ly}+B?`x z=uiJup`m%`Q^QKY1cbMM=gmzo8VdyUzvzrH}e=5$!t&7*u*2`7Nzkbpf{Ai>;0-^?b=?W>tE?girW#x{(k-}$S zApD}j(X($?es*-*F_az3LxM{!vciTT=EM;|6U8M#o3fG!QhFx5fCd2~DDDNc z@7hrjf&?=d?(pxUm_&XS=qRKZ0JAaXvvVV_DBLp@23){$}?(k~ShD`5mY=o>=$abUeR!d4unT%v;L& zDwQjj-!}gr79||e6p(CPp-a#h(QWKdcn$PJ-rL)7w`e~>nKe z3iK`-T+crTx9568a!|7n2j(U!!Vm8FaGf9fQKu*&Ds=nO}}8MMbOx0$Bnnfgpsy&WNFijg3*>-MKRhu{lQ}NsfFU zmAaONCuph#v}xNA`R*bmc&g(F>8Y9mlA#U87JQ3Qg*8|+eI^rLRo)r6c5y>x9m|t7 zNK#$Db8{>zka*O|^_9riqjaKx&{kVHsOu_qw(g+uP{q;vDxBDvgP~_nKc8+ zg$Mcmy@c6(C1FSroqKhIrc(zt>4xCwtU>kdYUpm>!o{4EFjU-t|I1PEiwR}n2?uK( zv9Dhw&ZTd*nK#hbn*6Afqa12ja58=R&0IJU|Jk%3=Q9sCS{J#{Wm&81EtiQO_Jxn) z=^(*@+q8ueB-n8D&!nwE?@52a#IjR7QZx-n0W#!GkY9qS;G{(20Ge7Og=*!&7m*9kAJ9u@4UTrjv_JJOc9M;MlKp+K>B5#~2#Pyt$EW8X` ztQ0k{Av{L-qmN4>wCmr6q;f{PIddWD1k`#7KNVf$jgZIcT(v-H&N2L4RLb{3v!}u< zyoZT`YVlN9z@G>BvxyP`%H&sdqy&YTyCH6p4*o!e6xq5ubm->S>^X4Y12E6mQqD|Gla^Z0cUa0^l`lzEb93;!+61eNK~gP+BcK zA5=myfT-c5%GV1KNv}cU((nRkQtm#i4j&8Y_=8QAW>J7z@)K$wKQs1Ul9{1cff?~_ zNQQ$`<14z_>RRO;Q$jRzh2f*{^S#@Ug!SG)11lh*9ePKNV86U8_9dX~6vEUs9L!MA zV=2Ul0lgZnlgeAVz^h-EvfzY0p+lk81Em>RpwPP@eQon_fchcq->$pzk%IzLSNNzP zp=A$3Br2ouz}L(TM2PZpYXTz;tOSu7ZCmw8G_t>gPk;D_g+b-%Vr-yVn7OrIQihrP zvk+X40SH0!UNf!~kCbp3+D&R!5^U?`Y9zjtHTWuFF^Vcq!!vvwJcEMju|BWxbOs1b z{mm$PPO!`)>r&}m>v@DFAtSBsyJXE2_;`>H-gN`9mW0$D`hgpp=JjncTz zP;Zpwd|C+UE6M=(PM}RzQ_GRtqG>|zaOSa`CzeHm4LCqv01-@;AiKrg$E!|oNl^bX=(|w zI|~U9;DZi=HLlPSM3R;k^!RdE0XoYIjE%gVp8=JR8*0kGwI2tl)E;8mj`wl-%55A2 ziX)hsxNP!r-NmUpFlfbG`1kk0me}|w;sNP#U!bo!#;0%Kc}gsNtLhRi?fr&hc|FSE z7d;s+KHd-Qyd2y#26Ba@Nclb5W4xS`35^t}l<68h1nM>dU513R5;Bug=^Wy*WRmcN zJHT|+K@LD_=?f1&_$0FX-v^oS4eiG{6sm?UNoW@>$`==*cEMao{6#881Z-K}Po0rdNQBDbcU8A~LeKVto2Wwu-W> zQ#ijpjaPa)l<-m5)Y)U0*vMjJkf1NDn29g{_HR~@4`l4p)>gCHhsRuE!PH)>~qNguGRJfe$ZeRHj6~3{%ArE@c<->5xY1!}mdd zoWdVO981rGHvMy@GI~w~+QqXyw!}_X1pVy5eqKWNnY#epM)bm-S&7_^HNx8}6qZER zm!kCSNwZOrAzMXpMvD2Uty_)Im^4<3<#ToXVqk*fh", + "description": "add a small cluster of crimson-capped mushrooms with white spots growing on its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007732026365068223 + } +} diff --git a/pixellab_src/pl_grub/pl_mushrooms_back.png b/pixellab_src/pl_grub/pl_mushrooms_back.png new file mode 100644 index 0000000000000000000000000000000000000000..2295e0cd3560bc674dee8535962302ee46695e81 GIT binary patch literal 2821 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 X1ZULU{(MfK00000NkvXXu0mjfMJr`W literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_grub/pl_tail_stinger.json b/pixellab_src/pl_grub/pl_tail_stinger.json new file mode 100644 index 0000000..d76a7e4 --- /dev/null +++ b/pixellab_src/pl_grub/pl_tail_stinger.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a thick curved crimson stinger tail with a big sharp pointed barb at its tip, curving up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.012547792620129056 + } +} diff --git a/pixellab_src/pl_grub/pl_tail_stinger.png b/pixellab_src/pl_grub/pl_tail_stinger.png new file mode 100644 index 0000000000000000000000000000000000000000..9210113138c78d637244693c2b2d42fd977d9bb1 GIT binary patch literal 3054 zcmVwXaE2H z_xJz*-Upx`{pd$O`q7Vm^rIiwBxLK+B@|qfFiAS3B-u?DttoKL2@Xiv#J_|Pc4bs> z&A=qjojauqpPye~cl56*bKkcwUuvLh%^K`M!Br0n){Pr&GwMK8R4kQ?{|5!g^pT_Z zqBMCvpM`LOlxH30HU(EN3_t9bMYyBf~e3g2zFuHXv6$v=jf+9-k@V(a!W@#t&lsqj}&0Va9tYspyjeJ*0t z7D5QOZYn{Y=UWb+!Qu10>xt64<~?|!7%XF!EJfVJ;ru(q?2VgVdXdY!%ly3^{VT!& zR(X=oxqHg>GLwr*FLwk#x2U@MrKR`%QE(Yx@E9#!!>95ggd6@_eFBhH{r>U%Dn1)U zm^2`m>Ri+sj;W-NJA>MIpr;VH#6;&86^4MR6ES?GKbP&=xEF`E?M8}g6Sj<>jKu$J zM|S8Km^`n?t#^;-I>mddu=|CDFbXr8Wo2i5lzXS#%om$#&tP$N&!>UFB@~{BE+okF zf_vq~^*B~i55=GwpyzO31ciFR#o0-(Q&syT8unD9Y~_2MMRxKzb0p@N-FvM7BQBB2 zhs=y?SGFpC4uo*VBRLst4Vp!0IN#XBbqL8@H`*xfDU_x!k(~)xaQrM!g8_y}ym+9f z(>j-(0}Ke3VRL4{)yrKM;^TxQPE)PcGx#L&F)j=C@z4*#h8YXF4jro#p5QWSe_gN# zMx?wzKW%tHO>-;GsYQta?nn*hz(`(k1&G!$7!;@qMv(F>pP#(@aagU#_`15`gnkg3 zWi{U?w8(nB?EvpVoxH^&-l|c(2u%S3Swc^gprDUo2pS4&OB=&~_J>u7S+WcU!w@Xr zlz~xCztU;Dhy|(m;2$fYDDH@Qc_}{q-TQXlL`o<^lWYrzy`9l*B?$B}$kh#vyBWSw zX5_uO9_K2);&L+M79kNkdqS6OcVywHF8eF84$+Ye z3E{2+W4+v185A8l8Xy_b#~A2wy=no{iojpRptMy1not#Kjz23TeiENaDP4f9fR#Xe zFwm)qa|9wsM`1)C!hoSt>+sQihu}Lg7^UfL_ftd1*?q?11Nr*3&x9ZzeZ{Dt=JO1m zCI?n*lpSINT?v#HhhOK!mar()G0&i&k3dn}h=-HlF?IxgEGmO&mN@!d4Q@;SsGaaJ zH#l{9*w&+V4SBVEU6=bU0uqwgvYKUOXRp^uabu0j2bY}#6vbOcJd}(Z#`xn@!4dpW zUIx#|2%h);6GHIy{1mQ7YxSEa#$eiv1ikGS**TcLXE!frQKm=2*YB-iOCm*9to{@+ z?>x)FlMP378X=M;1h}Y+C5{A1#=cU3kS0ve-+|a-3;yz(B(#`-qj~$`He@i!sge2m z-V~^<)dP8ZIy^wI;52pUpeV8GpF7Z0yAM;+mf@N7kMYMbad@*Z7c+&M?piy8mLkV^ zxdPR8`i(w5!mb-TWU z^~ebX-J5{GgwZTKA=hHU)=`sCwssv_P}f!8^)OkR5*PCb#=a6>yWY`cLadX8<9MHm z!R!v_J)VdSt8!8Gc;s7M`XLkz;B4Tb*ryT>dE_TZQ+!H3;DY9!L3#cOhVc`}_rL352s1 zCvd9nC%z`Zh|M+S*oMwp&_iXW^AeTYccP`H1`-B@r_6;Cp zYXU+Hgp@x+k%J+G5mGku8B$&3GnmbYetHf}Zq98l(WVH1`wO>W$*6dUf(+O*|2AH* z^t}QM!e1KvhVnHLRh-F!)J+?87f8@nf04ErPR{mU*VNdox3OI~eI{+C{vIO4#BN1oO^_%lx)7F2WC79%VR2JXmXU!kXWa$V79bkGsO%qQ=8?A*B6jRByN{&$wrvQ< zwjX5o+9bfPki0={W;RAVJP*Zd-s7IoA4-KO53q&3tWcnbAU_=O-~&v4gp#!@;dgr? z2ATsd$lz!?v}1Y)aQvHUScPO^xuc50WLug0Z&>S(AS`7bdjf?*<27sW+OWYG;;g2` zw&rh70Y>x^$fV#-0kUKfu+*r04JD2LI?~_&VhYR30gUXG{XT z!@_me*IXT?w_QPXZ5N_6<0B~29U+fCz=;)mgtV1-{>C`S4$+XdAmS*5<5fF$cBouC z&KrM@xr66Bb?EJsNA&xo2x5G;h-tTRnb87vbL;|JLB8G=q%h45HrE~mZt%dcd#1rZ z+N{@McboDEj_<6+^MzaRK>mL0oie^%D(vWrkmw5zc%vj&FJ}*6GvCQA?pvOT=A%{Y z1__FAgOF|z5H=&I8l%B~2u!X6G3w!IYUF6k8(J*T3bp{Nl|%67%)@)MUuf*90)%kk z^X-M(+lAk{B}gmcVn%S;$mkGM)u;iBlS|v?M|WLeM=(ipUz|IBAR#VGE?^X4GGtaF zW*6<$S9D&zwo`n`TkzjO9XR1%2XB?}n!0~UhdB<3TPkaoFE`U$WSPUB- zfUGB$ciR#~Pv<@bBrQ1HT4JHkTzKP?$S(hbZ1|5+H!MmrK0xH}pGCu-@8K0OT#xJs zBoxI8($Ln8<7MRtjGut-USEij4=&`g`obcNdvX@<6|RcE%cdtL7~rFGd17oNzTA<0 z=@p=1cKlqHCUfh0BxZcVR&i)c0S;!S!6*WFzmK-U?n{niVxySeR`{8(C*kv#Ggt{) z87-^R658hMy~s;l1O=YF6mFiGgy0#I_>&q^!tD6D`m-{(uJ5rN0=RwGhnM2!r`suC|&{j3%5B5K+y zlzj3=`_cSxF$`q-lZO%6>gD&usoxu9t$YtxE&#rOl2sDy+xq=}Rm&>w~J!w7<4;u|a|z5>NW zBPM`^G_?lQf`|s_Ly)%6c3TCFv_WbDG@vbNb?2IMX7224cedhow_W6Z$z<;9oVn+5 z&pr1JprN6mp`oFnp`oFnp`oFnp`oFnp`oFnp`oFnaUDPm;kRWn%tv5oAm@FyhYO8g z)j;@sT<+MozTY`L`{{1!GYq`+@PfF_+dzU~UI|E=ut%3%^vxkIRPWs92rq*{+`3{l z7rpqs+R-duc`y?$2bDpIm{nZ*8LS4xe97v|wabdUD5r zw(fwOJR(ha37)-WD@+KSsc!P5^(iXDK-Z4Vo^xEYXO}b#1MB7%ifbhZ%FHeA0#X7( zz_6Ww6hWXmmFX>nz>i0o97PC2K$;R=AC)C^p2k3kDHy%*#mCVClFTWygrA4BRm3 zF0ZI8$>m8X5?;z+Sm*KD#;AOyl(;QF129dluWXG}!tKK&mf7G3!Jf`@C>=X0s@t2= zTX+R_ePMfnyIlf?0DHnl0KL7v@BoZ zCLzeuLiqS0G}JaYvA|gZY9hiC-t7qlzu(XCAW;x;=En-)ASW#)sDMXsf}m~Xt3i8R z00I)L0;jQI@||%HiblK`IYAG=$&zBWv|~}*njzP>%PxyImMrDRld&x?#e=Zs&@(g& zXzPxQ#w0}VALm#JJ|ndCsV$GAK7^wPQi7tPhssJZ^q!EH?gT`_n4%JT$)Y0%K`FJJ zR?8t#z~oTU!>-@3teA!H-#9MH$EU+U1%Q&Dq(+jtD?%Nj@SzbXChFn)(W z`4Sg9FC@nj@Hwd*P5M$qzgM(Z*jpd)q)}Mi_5){#v=k^gVw$oFq~&HM-(hHPeE>p? zid^%y<&~cL20@}(_{8FK~v~7~o1PuE-x1^3i;OGgom%dEZnAIU-B~)`$1=;~&x1fqnwW%`#p}nTr$ptR%*y7MkcxElml=gp#l1LAb3l8q*Liy}D zs5xP!w=*|y4Ri1Mx+dqa)7M?7jqe1cWWlMf_yi3gKRwIhMXm(N!mFDk!k$OwVW3Ef zkxmvKI)H|wE%@`o`LGV!`p6Sh^yZu(3dlof2}DbZ-0e>{ox(e7p2zX(dZ&#HK*}Eo zQeq`E|2B~|ZHjZ3mzSAkxvjLUtrXyPbL9neCtzoE9L!XnL^Ly}+E%y6(^ztU(*Sbs z%SFmCE3NK>n9m3)u@KS6%4g4!sjJpP7(QpRBs_uKnw-|W5`b}Y8b%i_4n?23Q z-d1gMw9g23a^$u?ZGUfOOoYGcYZxik#zog>qt3pBAcrG_Co<+AG$o}9kOqUV}e0#*}-%{$&Z@a)D zl@^l_7&yXqg5!_nySN*cA^=php5r%(Gk;2-Op(ShClk{?v^;`#3c~8ZDFmhDEReRr z^V>t#CJ+3#tMtJ<4N9`MTj^7I65&a=9T(1mtaP{=#Z}9q`_}){jzJeKZc>5y^ zbPG(#aX6|H6s|%EO8CAgnDG#gba|afwp3W~dRNwVTh@DYL{mjer0^71T*9k&T#P4> z7)TCu>8V#uP#HLDm&}L*(}H`#gpVr(5(l1s`M3N3gR7YlC&fexKUhCUEkzuw>VK3g rZrDOQJ^z=#!}1#WZLgt$>j?h<8?ui=&!PD>00000NkvXXu0mjfrP>T; literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_guppy/base_raw.png b/pixellab_src/pl_guppy/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..c281c0a41595fa7a8bfb84582c85584d5835d609 GIT binary patch literal 1509 zcmV^XGDcj zbdro-ynu>%vtzndm)_(Q*tNp6q7C${39uzA0gR1}!4F{G`YjmTU*$-gxE7>99qH-A z@4esI3nyES+($~tQbPFnA_UulRxDaBR)U2=&TdJ9-|y#mOcseoGC@uPX^>P2VXRI% ztdtD;+d~kL*cLjAU5jr`m^ASUwUHD6PHrw?OIa2%tr2l8Hysx1+PsM`FHpj$cyx3} zE^mTV_uRrr$=Dwkn50jOlonM|Kv@f65happ4qen%#Oa=z8?X|FFt>O!lPhjM3feNw zZBu#@v=wD`ZLqY2mH4ln?`a8*M`8QvA9#l$S5xukIn{MY%gG%7VS$thF*`cu zOw0Mqb-0s+=B#^kLrl44z29@Ps5rFQBe}zZElgO^fp_=Oq7f`9@f@E;*)9R9nT2`x zuxkm_rgwJ8FqI`*lz?XHxgljPLdUz&U-1I3&swNUkL4)JV2T%&iS$e{xiQ%0n9$XJ zl1m322<$}EJk_W6XhMJMDXSJG7VYe3P>iWPU3`y2Uf!kMNqD7I)dQwUi>*U z=omnyg)FJEk85HK1WQZU#j%REz5j`xGk9yqGw5jPwEDj% zX}Coi)=~uRZWN{!=}c(u2psIHj?`LnD~1tt~4yjJFRJe+46trc< z#I@7VIF_Vi+53h?DboqtLuU|{l6Mg*GlTmh)*=tOKUL$MK_pqrPAZD1h!F84sNM+; z^`QZNJp0IN9DfVnd7PJ5xT1i|3&CAt5)q6~(oIIjCaK7|QMlqh#X-j6lW40G9B;~6 zcFV*gYeQXcG&zcE8##6NG*+@lTgizKNJ(-yP#-$4=s1WGitccbi;MAmcCz@|Zx4^- zpNZ}uHePb$CFmr2qA`KwNZgvF{*}&&{N0NAEj!72rZ9ym{IBs3cIl5o6o7mR00000 LNkvXXu0mjfA~fI- literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_guppy/pl_fin_dorsal.json b/pixellab_src/pl_guppy/pl_fin_dorsal.json new file mode 100644 index 0000000..7980781 --- /dev/null +++ b/pixellab_src/pl_guppy/pl_fin_dorsal.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a crimson shark-style dorsal fin rising from its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007716622273127238 + } +} diff --git a/pixellab_src/pl_guppy/pl_fin_dorsal.png b/pixellab_src/pl_guppy/pl_fin_dorsal.png new file mode 100644 index 0000000000000000000000000000000000000000..feda91a1ced5ba86f1a75cbca1c39bd75db3db66 GIT binary patch literal 1477 zcmV;$1v>hPP)mq1lkle znD{^>HrhT&6>UtAmeSB4mT3!t;DaT7&{%3>G=z5Nnsa9E?96sZlbv|8UO5h1Mjb^ z4Q*110wP~qz8)u1lc7#5QDEdpXXclc0F)-*m%8W_est+fX#OdV{6Y2AH=wq>#4-D@ zwVzJ`F!}oO64rbykA^5wAUHd7BXsl6mjFE4&o?BNIb^;j?iv|~@Ue6|2+EEKmzDtL zl)%05gr{s%(TcnXK_EOhgubhLjMFCuPx?00p>P-uQ6MDZ$&PkF2}}(bnaQPqG8LzG z0VlIx9u94dB53l-_6}y&|#?`UUY)%8`V zs;ffvBh^g0x;6<2#gns8l;U(vT^Wk&%a}X~X3xc6aQF7tc&yt^04jONGI=5n(;MQB zo-uq+07({MDiqgkVC~10C4^NwUgt4`Sf~in>{-(q(u%rA2SzhR08DpJ2}si}lfYE} zIBv|%VMQVV5sPWxAPU(6lqOGRO`2xnHu~!7XSdoJrjZr#|PKnw)ZK zLw|fqNv^Qy5!72#d(v^=VFN@uW>X5fj$hb-{S6nfvH|1k)Da12rY=5H;@E zxr;}6w*N=yCl?_|ETZ;FgG3^6$7-j-yvbyo7s4S=edy`x|DMa7HueCmrE9T2xz00b zfA1;G{(cPwVF9s3W+*c~lc}%+A2UlB?tIU%;q8;PK-&L0O4Qcy!{Hv3ZY(XlIG|_P zfQ%I_oP{^F$fWLwkg8)v*!k*AfH3bSens2FLkO*h@i7%HF?3g7)%D zBd0ta#)b?`4Nh`UQ{K_x+ynFpP(cx-?F6-vP#!gIay6jMTHag(&w)O z27jN2z{ZA$A>+P&Tixn5h~G*lnyht=svIyEAPJxv$>E! z?r>CF`AH{6p09(DlF3u5@%7|Yq)mmG6ilA#okh6Xu|){$)tOAh(PCWUavcR;JKE{A zz3=T77D_&kK{r(TuaraHjckGV)n|hQM!5XK#}EmL2amkN-?wdQk$~pb(l=v z%J^LFU1YUDbh~V8@dJ_9epU}xXrZvs`<)2+X?9@;ZyP`Iv~^tMb-F0Z69@+C*wAro zFDw4f9d1UPu%l*cU~3f!4!n921UbI{15G?=@}d4PLW0n63q+p`I`1OABz_oiL*2%I f--{3dOBDYC!&_pNh&VE+00000NkvXXu0mjfnPR}4 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_guppy/pl_fins_head.json b/pixellab_src/pl_guppy/pl_fins_head.json new file mode 100644 index 0000000..972d729 --- /dev/null +++ b/pixellab_src/pl_guppy/pl_fins_head.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add small crimson fin frills on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009395943297280206 + } +} diff --git a/pixellab_src/pl_guppy/pl_fins_head.png b/pixellab_src/pl_guppy/pl_fins_head.png new file mode 100644 index 0000000000000000000000000000000000000000..b1809011f287fddd231c1c08d509eb07642a6d7b GIT binary patch literal 1641 zcmV-v2A27WP)Fvf8-ad?yPIHXqjP1kx`VQX@PBGQK-nG2}S)8Dy`aL>rzov z2%)IEMA3>N5xK7B$GW?tvwqZu>naN^Y9O-UI`70e@7*_V#u(n%9%AM~4R~9bx6y5(0Q+(@^J1@3s`b%6ZF;7yAakrf-9eu|SB^oY;}E10!pH-bH*Ti2 zeS}abl;N!kd?%hk{+kJvUVrhi173ek??BK?MP3xJarVM=Db2H5NQH&`oYVh!H|x6l zoK8RR(R~kJBYY_u!;rG^fv;5sIa%kWD3uN=Q|X9D>NkN%;mqD>@&Z!4#Ih95|L{fH zb#e>{heKHN!o0xNt&m?(S=}Z;DgGzAU?pf+WW!b#lwutzbT>z#_(97OMZ^cL;=gTQ z=XIS{F2Wp)KK`{KQ$V7!P4z;4@{<*)n94sV+Vfb*GcO{L4UkP3IjsyMo|@oIu(GoY z_s@G<=JHS6b?GP-TmhdP`khukI}ycWN2iO*R9;u-kp(4(yVkv}DT{E#m2FEqV(NI< zSL3kajuJ{V6D8RsWB*b}N}q)MnSGrS z5SMqHz-OhS0uPE-P!nnEGx_MUr9#*vFL!+|?!xZ@9ZQzTFR`%Xj8PN{Nj&h+7{tNJ z$~Eu%$DF~K{6POXM3*js@~rC+;*_VsiV%`ElXqma97CQZ!icG*5)kDYNMZqtzuvqX z`j?9mEaU)R(Ic+U7Gx4dgC0r$GN1XiLbSqIhJV|ecgZy=2Yg;oQ#uM8Bjb|hYuU92 zeg9s#Rki>ndhv_C7dY3G0-karzs8S;k0#0J`6N4#jq2E6&Kx#*-q2LP17j)@HAA+r z5HOgG3YB=G|rrbL#=IyD}_q;@T2oxYfHOV@g*vtgzGzxk$3`o z%>E2K3xbgq$bD! z&Kh!Ha^nG|>}#IO=2+ksLSL==0B!r+>Jk7OfR&#M!dXk&gh+*xmKtk-DdiC-ciV|t zpP`S#UKQwm6L2d!4}6ceQ01ga-Zce6Ps=e_;gH0G$Df&ka5!z;&iafH&PIq|);Mz( zJzBjI#I?E*NG31s2p-_V7 z+1m9ow?8i2%ow1~)~=U0z#hOUPrGdUTTgorX(jlv{a_R3j2|w2{j4a$tpFuG5}~^# zCJNyF&*=SpgSfq40fQg97Z-COf!vXl3EHZrCyu~;3UtvB>+$-Uydxb?dQK}sNB-)L zlQOQ2jFr~^xr{xKl~Bku=m)X2onFc}03X3?kfMN8g>}7ID>cCAZ>wcI_la4O{usHY zz`PuXGb+Ik_xpg?>T7Ad#SbR$u9<>bzlC6-y#3CE(pmm`-jIQOoRY}vHW1?}*AQN%M{K_QqfkGjFkma)?7{2UvLuleGlVbV6p^$%giqJ~%6Xd>bHC&6| nlr<{cJkV|QKUWM4aF^hJ_bs}yL_L)R00000NkvXXu0mjfknb&A literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_guppy/pl_guppy_bubble_crown.json b/pixellab_src/pl_guppy/pl_guppy_bubble_crown.json new file mode 100644 index 0000000..33e694e --- /dev/null +++ b/pixellab_src/pl_guppy/pl_guppy_bubble_crown.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a few tiny round gold bubbles resting in a small cluster on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007729158586925931 + } +} diff --git a/pixellab_src/pl_guppy/pl_guppy_pearl_crown.json b/pixellab_src/pl_guppy/pl_guppy_pearl_crown.json new file mode 100644 index 0000000..43afea3 --- /dev/null +++ b/pixellab_src/pl_guppy/pl_guppy_pearl_crown.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small crown of three round gold pearls sitting on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 4, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008294328848520915 + } +} diff --git a/pixellab_src/pl_guppy/pl_guppy_pearl_crown.png b/pixellab_src/pl_guppy/pl_guppy_pearl_crown.png new file mode 100644 index 0000000000000000000000000000000000000000..384ac16c25f5b1331bb98fc39b38889c6a96ee91 GIT binary patch literal 1652 zcmV-)28;QLP)V}cr_r7aYtAPK<;A;j1q;guQ;{2*W<1}c$6gAfx8p`e%owiF7bE!%B*C}5D~5s@M>O|0$Cm^1gz-FtU$D|8=i;eN^8JI^!o zojK>s%w52P2M-=Rc<|uCg9i^DJb3Wn!Gi}69v&jFei~N}fH^4eei&1BHOz##U4hQJ z87hy5Oab8jp^(3SjhcgZ@i0KTtg@_Lm+w~ITc1G*DQ;KDaC1R4A=wK_)u*drW=fR6 zlRW^L`r(S3G3DXFY*eqyS54gd9Nl*ZsenJp@|iEUvd2{v;aKjZ7+>}tt3MuqAjs&4 zh-tGIe{2VYz_d4>aP9EZ`xEit?E*sJ=MDK$qjS3(NO^fJ4u5wYuYOdYvh#sI6@zG3 zAS;lCYa>oC1g6d&fokL{cMx~af%{T>F7hW!u;>U#o|f%oBZMLedTeD=3m#Y2aCFa& zUS-P8Ho4(uH`YBJC3hgY0FNgBKOpj)F}$+=M2~HV{9ttf1z&C@j(j)?(GXH9@*3%d z%hA50T=w@p;l9!KchL1P`GW+4D$7k5=#WKBcxg5T5SxOEOB3)CeIkd_{rm}!qc^2+C*DvRJ3Ug>VM1rsIL0WlD)B zCuKs0h03owcM-$qFI82#O`^!hZ2>(*Wy|dIULGGq-e_TRVJ=ocdB*V6l(E>zfbM_0 z)FhJ?7+E5P(e$&+HXG)x_&LqLv93w2a13dqu~RVsLUlnS&$)^f?K{db;1w{oY>SZ) z!a+u_td+KA5K)#=j;)??j!-=vngrfyxq#1K7?tp#$df_7rRePl*=X__QF-bUTu~IM zvnzyrm2(uIz2q1#5g$%?qW66w()G_ZMTS-|1~z5rdTL93bU({Nq(sKV(U9F?_yo0Q zDi%=9{F*~paN@9f;!y%e92hgqipI+KHTfZrjEppL+3F%y(jrfN=-FNSBZ4beD3`F~ zlgv@rnEAY;tY+U4+`4{ifVhC)XCg;1GM|Fq5yXP;1aYMco zM)?n0DlmFN=D@oQ?QLiUDQK9M6EFOS-518Q<&L?%zt&uc@+$cTYojG ze0*S?1Z8(*MTyAHZQIrA1&UUGN%uuFJptL?jIR`N0b90=ujK^^Pn4w26TJX6XE+-sd}lzb~C=u*&JP>n3(&z#2#LUwDOMw`1Uq)0s=}Nx87duEY_wI1P*NkLuO4er zW~2B18=E#Nv$reY(GkNC&woe^@x!vk>@UmF{N`lWM!Q-=mh~FsDUfm7+mx}bM!iGz zXO-!%4qQm|1U literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_guppy/pl_tail_fish.json b/pixellab_src/pl_guppy/pl_tail_fish.json new file mode 100644 index 0000000..fab9954 --- /dev/null +++ b/pixellab_src/pl_guppy/pl_tail_fish.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a crimson fish tail fin with two pointed lobes, attached to its body and sticking out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011478334824244181 + } +} diff --git a/pixellab_src/pl_guppy/pl_tail_fish.png b/pixellab_src/pl_guppy/pl_tail_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..7da370d5c1a52621f20540136c31c4893ac6e0f6 GIT binary patch literal 1653 zcmV-*28#KKP))iy!!)Mz&}dQ$wu;#6Td$U}73bkoX7$p_mX0e)5AFBM?6o z#F$88G+<-!0V$yf5~&m@w6?ot14a}3zz-0Vhd_Y6cg#6+=kDFdEnV1MYM5Vgdmr;U z=ggTiXSRUBU@#aA27|$1Fc=I5gTY`h7z_r3!C)}l1&BL1wj2)f2;3Ruyj|b&L-)aU zSmGWy@;Xj${HW|QS*7aOxf0Je!-QOPXdi@Sp>6w*s;;~aY1?>sO#_z)^(n6<1Ivb; z0X{evTz2{2t9+L-tatsN9t=q%Pu*tZkhLDee>>>;+qx}M)Ku5KCk<*)t6<%Ap-29Uu~Sw?McX#jfSq1 zSYNjc7n(lH=Qi@}^5y(+`mZyvZ5pHeK~SpMmq^sF3a*q9{neT$s102-^BMJR$+NHH zLB1~O&%Ggwl_&Q1pD&LAPF%{2#g$oZHju{%!GW9VQX9JBD_3UJpHw}Cw?obN zC2!_*)-mrzY-vrRrB^8~#n9CX<2LXmJv{p)JSh<#IWbS|{J~BeOt)!j-GjQCxzPCo z#|y{7hUlZ5Dg&M|*a%&<3)PFTFz1m63f93wk)YYvIF339q}@4a_Eq_g_8zZIE|Ohe zDX*3UF~9kHzVH3>Z@!cA`v)%awJv@j-Fdkap&ji#u&f8OzWNOz^BRTPEPicio*q@( zhOQ*f{@dLrRcprq9jR&N$@S?<*$!WY5Jm|gMYe7If}eu|BDpw0IRm*oxjsS9DuYZL z$nl;nSgu!f)9zxY&^@OLZ|ymZnUQh){ilIT1<5LK`>4Z?yJoe*bohy{s>jlfR!)L6 zooyZHYfJKhN4Ft#yX-uI-~*Iu7n8t z4524aqW^G`mFKVSFGUOYtKEY5?)kZFfLRmA;z0ie-V(_OWQ?H(Ls0|+WEi3A)f!JR ztsL=nyr1u+k6(Fz9YPsGDNn3ToZ|b&Cm-Xxe;3e}BDbe)khVYyh|fJV8c*-uS@z?w zB$ws~pK@xD%$26gEsTVNYkXJV)iNQzNhpJzdSyMVa0rvPu7Q*m7C$pTpWO1p=q$Vt z8N)^(FBs}^SfIE_`${J(oIS&Sch6@ef0RKK>$uMRh3@zh9`beUe@C*Q2Q z=boV|pE;D`jv2rcV%w2sesP1j#|<}eqvViw%@LH$N!tA!*p9{DZ&CSz5GXxt2=WO3 zk3IgM1w)p@0Z!v8T^1Py%7^@){M+7Oz+J?DY?{#Far$O|00000NkvXXu0mjf`lcY2 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_hawk/base.json b/pixellab_src/pl_hawk/base.json new file mode 100644 index 0000000..103a059 --- /dev/null +++ b/pixellab_src/pl_hawk/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "proud young bird of prey standing upright with puffed out chest, sharp hooked beak, fierce narrow eyes with crimson war paint stripes under them, a crimson V-shaped marking on its chest, folded wings crossed in front of its chest like arms, strong thick legs with big talons, no crest, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 521 + }, + "usage": { + "type": "usd", + "usd": 0.007353315035502116 + } +} diff --git a/pixellab_src/pl_hawk/base.png b/pixellab_src/pl_hawk/base.png new file mode 100644 index 0000000000000000000000000000000000000000..50a9347020f6b5b0b560f08e86013091a20daf32 GIT binary patch literal 1603 zcmV-J2E6%+P)!rV@ML^h zUJ=i0ZewA~?xTEdd!s)26Fp(_3YyFP>uk~LLKY5h{hY7$!8c8fE)NaIg`Tij-;*&0 zydYokSQQuG^?jdG@m-}UEsy8!S^o}sfqY<`a{m!mk#?|`UXxrGz z?fKf+>e*7Lc@h01;eUjwhS5VPRwX}Yjy5#6!9)@1ciQDyuIB>>I^=sSuZ zH|F>Cu|xXg_xI}uH!aq4?_F!utFZ#@QRYev&}B}KHaFAtu|xD-rNqfT8a=&VtZTGjhx@~l#yN(T(bRt z`?kH&d$B|bS)#gA41L$@x)L;}$-{zdJp?z)IePa4agRRI8Yj_A)VC1_5P z$JQ4E9zT47BKwb`Wy+iJ3Vf4Ygi?u)=(Oj{biLi;h1>*Js zIXjqNv%)x5b23ZRoOFFV$mVA%hoHQ3lvO}IC?R4G05DygTphG&FLkk?CrG9UfkgL( z-(2QXpA{7w>D=8VT*uQuIYU%|DWt{=r_K!n(^=|N@-oLk(5~PF$aMHg#OHn$dBr9& z{5zH%s&NC;MoyHWAiNtTc6ONY<|&ZDGdip$R)QrlP<38Iwgx>Fcm}w2sGq+4cB@fu z${%{dRP#_>bg6_wdcwS1Vp+xW(#OTR999C(7cx;ofHJ_NqgRbV)P;^EM07x{LogIs z1`fdbR^s@rdIU%}9Xn-`FJ@n%W&KA?iWpzIEE6h}$=oq%*%SkmPH2y(m?bC4Hz~r6}JM1?YJB z$kIv5`#n2hPy#!$sWwRo-eW=il6Ca!@>RC)ld;6=HBVzeGAzg|pi3j?r?w?d0!fZi z%=c+?%1WnkIxhfuC=2r!-~^_u+}6^fBx&o!`)9((Q4@rm>Je~Z#E4Yx56i>7(N;-% zW{mK2y8 z8<0|1rzjB?|kt9_1y*m^daQK6St^stz*`m z;-S&>q2nXyjx8V4fzS5QuAP5!B^2@go=QU=I5NNr5GYfD`w-U`z+-Y_2s0x5AYcg+9poV#~sXLo0Jw)7;ovuEbc zy}x_zx#ylcCAxc}8^x7qc>>8OUVpo|Mtizk^*hfks4vhVl%4xeiEGE(&8gq$i;!E% zb)>qmSbd35j_>+PT$_XMm@3^I8BHjC5w@TA z>o2@@iLM`5Ob_g7G+8xVT9bIAKC$5DLiFyk4bngFOdQi^POQ?8ZeOB%AK4`DtG?b{ zwn3D+@?jZ+qk#b3nK(xOh1_E@#pCFCG_H6jds@)?YLM)^v32y4GU;APchgP zu$qOXl?wwDy>vJq{bujONst!?h$^d+YvR5ko=uNZtfI&+3CbE=%X-0OA)RN=#ur^h zk<2SNgTtcDfx&TQgedXDb9q#(dcdU0e>-;{j6YkuTJC~sCKvv(KWAvoDJ(1`tb@g5 z$%8o}unt+@@{9~;R$vG+JG7TAwB`gBsU$j>Jbs>HhtHX!feNX@tN!XW+OP_@IUekE z44pB(gk{+pfW>N8tYQK*!CEA2xPb}_S)Y5c)oLJf0CtRBk^EfuUuluV4RVFzoqyzo)O(u-#9 zBTvaZ2@gmtJVX=Af|p#Zr2L}8D;~m)s8Qf{>B@}X8kS=g3Z|3pvk`c3+=e=9im_~g zbyOZ-HbcJO3z8aPv4cyO6h*DGW0B^io9Wk;>umdD7URB_)`wHcLSHf67{BH$#Y`c* znWXVoJJGC1BuB{yU@UoYrvX1m4LQ`tF?i~dpsa@J*3*%k~$`LqJO=$Sp0Z(|21w;?3ma*!sEl@ig2ga zlQFtrS`5hg307TXxmZ|FRRFQ3Zqiy`J0Jd*Caw%p`D7wCm(2fL6b8cf{oDHJ%9;P%rOTEWSSsUrkgmE04E#fAJLk+`oV=thOmTL>mknnYu@)QHvz=H zir;`&fuS?3O%ZL(oLD6X$G|Ai84x-Q;uctRX!$J*IdtX;)iUFZ3fYK=W_{U>P r5T|uR=E2GLZ2)HtI9o|K16j-emiDMh>$K0%00000NkvXXu0mjf64dK| literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_hawk/pl_crest_flame.json b/pixellab_src/pl_hawk/pl_crest_flame.json new file mode 100644 index 0000000..4c8cdcc --- /dev/null +++ b/pixellab_src/pl_hawk/pl_crest_flame.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a crest of orange and yellow flames on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008972050587336224 + } +} diff --git a/pixellab_src/pl_hawk/pl_crest_flame.png b/pixellab_src/pl_hawk/pl_crest_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..d60c6a3305e26bb6f98b88d8a42cc39d4c0a6e17 GIT binary patch literal 2044 zcmV@W<9{PS!sT{$ zaepwd;Qo0|3ZgmDh%Z7DjDa6L@2;r~raL8q=9IOqgwP4bE$;^24G#&!4~M#K#T?fSDG`UKm&(>&Q6d-Vi+f+Wz#6ImPJ@a30MIxC~H1G$7gj( z>s#UUiV$RX17fZV%zC~HSc1`PS~jRt0?W?M>~eHw2HD*J5<^S#Gu=Q!#0CL#1xfP! z@IlkCXA36k>1W1(6Ra1*S+TTAUSh6Bf#olwsONZ>$x#OM2zc~m!?O9yz*D>*n1wuB zyrkbdttT|N*%Iu?7Ma;uIeGin3<2KIt*e56cL;coN5-%3(qQsKz4SaL1VH@rcnFVN zr<2syECrQ31bM*yEr&U)HiHSjUk7(ZDLw_f0Nho!9nS9j0HQYZS(?zJyPvq|&!DyG zhBxw#^pV+EH+QYr2#^v1NvY4k*RQ+)QF(n{E$-pZ<+Bu^x>=@8?|Kj}{ZwRkAHl9w zfS4B5oFwvySNHq^=ZmKiaY4S~?Je{>H7ZrLbtzI@q>&Jv97%1@0<&NItjxJqiuEt0~~zCom0Y z>No^uW8E|jTzLfmO??h<>Z|5w ztW;A1_Atczk*=!+NKEQq64M1T=L5usdpi`_CIqw10W!-blPjk|OCFvX$O*=V%X5J^ zAfXerv9G}FIQ|l@-T-Lqfua+qDO$Lx?=C=~cbZ*Ax2A4Y3<5!jJhF+$-hebKra{03gfWUJE)@PRp%%9}(=t~{0t_3)H*5vJx zv;dNq%O9e;nY_QK!wONSyS&8jB53}q2rVzHh2+tjD^`Qlg0=G5MBV~1>;xK(Bqp}dR#cYkhVN@tV20iIU)c@s|hQiCCNI<97l(zcHRnn z2Qlf|dHANPOs30?6OycMhDFJlP_*?&eMPBmrscA@<}|%8>bUjd6cPdN7ltE(2E#x~ zONZ=4#@Ul5^1^zmqeEvX;-cdSv_28XVNc!n(6e$Lpv#oiHRokMig0UU2PD+hn1pDJ ze{48ZU^sKfq_W8e7~5Ah4auX0&{7EOaB@eRw7fBdWxlB%Wh*U2QC0$VSsXSeZ77A6 z2AD7MCWwnpgSap9B3}aMxG@s&`v62~a+DBhbcC_tRtGHmHB>Sqy6{jvIzn_x_45D5 zJV9v#-SyKbnb^_q+#p01Vu?D`Q8kiJX>6!3VE3r;Ih`>5a!9{U33wwr(2-c3_ujBH zCIjjdlfAYl`ZAm^NeqULL3!HH&?vZlyGbXF7DdnQ>qso}#jlY@e!!UXKIZ#~IRy=+ z@K72+@+4Li64LYoPhyf+OUscF9W)sC-aObW+NB*OZiZ@aH_|UI zk63Pk2JrfU<~}F)z#S4ub+QP5d_LE}f8f5t7t10b`Po(?rhuKR+Xrn|>tR;g9l1A{ zJ*5+7PVSThal8Cd3x_qS`4ktU0rwNb-Ts<70e-abn*30@|8KlDL1sk9=zsI`$c%P4 zRWp?=YiU~&K%oTrhV~G(thLYFUpyF$92`G_eq6Kze*W?>eE*fc`$Hi^zm1p^Qc7y*WgfkwzU#xV}C a1^)r$X)7kSlc8w<0000", + "description": "add a thick gold cloth headband with a dark outline tied around its forehead, with two short knot ends fluttering out to the right, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009156441820992364 + } +} diff --git a/pixellab_src/pl_hawk/pl_hawk_headband.png b/pixellab_src/pl_hawk/pl_hawk_headband.png new file mode 100644 index 0000000000000000000000000000000000000000..f93b7203f0821b383f358b63c209beeae9506d07 GIT binary patch literal 2224 zcmV;h2v7HkP)2eSb=MukY2G+%Gw~ z_uO;dxxeo_zu)hid+!5$`0(MwhYueoN%bwLFjv(r9J;&OhtDpmR!(gsF6 z69N<}mT*u=lH31&t#e+y`g9>01XlV^wDLJmJO2JFt*XZxlm_B<< z$Zw2L@y32q1<0_bYZ`vn#=&R*$hOgPG{pXUtlMp)0O4RBf$ERh)rVaG5M@j7>|YLJ z?d@~0>Cg3esN`n3{M>7GSbf`kr}K_i|&F z-^MG5Lh>LiverEgG}+MFA(B>FAjg)nd*rxp=Ux=AC_&bW3Vf2)3vAu(3Q@Mj3K@_| z(3|+=Cbq_n^U9E3_%!Z%YICN#sj=!aK*;tNpRl+3tm1G}Uca%5qnM{U=i;BxLr{CrOVaOSd%R)j!$d30zKz+TW%{Y>+-J z=*`(hW=pGk+YjiTgR}Jhb(3_~4U66DretndFa24vN-OmErRDB+SXra>?gy^Z4copb zh0CjVwP7J?UO!efQ_e?12xx9;^@1trD1QvS?FZ0z>=CFG3pKl1v7&Jm^nz^ZShN0l z9I__hiDmQLTw%h**k?9W1~;$1G_qHL0CeWF8_@A^Il8M0P`l?G7H>Q!4ZIGs2VgR@ z`(YjW(D_kNfDqd#0^|M*Urmd9*EgIwfKVh)ko;XQrDFTismQuvu|uB3Ed{IQY&7x_ zAlX%0Z2bH0-N>JRcf#UbA-Ql3WJs9gHXu$kpzXc=m$i?c@J3ZS`fZJ(`+G;`P7r1f zP+AeZa-sn`zaUbC6Ai)huYU#h^vMzus2A5P{~Mqgmt=Avig&6)=T||kKGxJ{Q#a?zekSTC=nUo zo{eks^4#{fs}Chz1eL(CxSnHN?o?bj<0Llj?1<{h=jFJl;=AtB*B7|+*Oq@ngo-8r z@xlA=i#K$XKbj1ip%OXsU%u@YF}SnlIPls(V6Q25J5YpCfs{z{MhvqOwEdwHW{hx{ zG21r&GSPM;Vap(6S7xi}Lm|&>9-K8Biz>e3_FeS2^B`ox!Oao2#@l~A95OD)Br=K$ zod+ui3ES?fM9scQUg2n5zVeD+f|8)K3OM}63JMuDBlvSc*t|s^uipea3*P}#CTxFYSzCHG~VtH`?-xt``YC!z40CFIQUFNIEZ02 zXL0-7#j;dV5Y~S*=O$TJCmpybg=3$)<8vYc-!H@?f)$4VSlHGjBxpoQ!`}i4&Jw~j z*2(fgLAZ{atS^QKz}XKc&U51toNbc6yZ)bUJNFF#8`Fs|z4K;J2moz)H^xH+@x)Gu z%5E4~DZ%B;%?tfPo-=grj!d~m;pTN+bZ0)`!ZMT2eAu!L?s#RByd?^MljKxy`GFf(t&GGn-274VqBz9l9! z1ZL3K89liA)R+jP45E=Wvl#7xXrT8121{~_aWa2y)cYA*0@suNX-r>9r-@hR;QU8T zq3;3s=vy!=a=^fhhYQ0HFfl(sybqbvs8~A3as!elH^#4=a08QHfcCIFLAWC2Tv19& z=);hOVS*9DyX4V@nIq`_-njRIGf($sUlzV4{wxWgysk?TqQ$xq!3+M*2;|KtdBs0S z=)Xu5h6kE2M2UNLpEdWD9VItI4d>6uk;~(@Z#nM}?)_tno8-9hp+MdwOT?4(lIa0@ zph8kN&1(zqua2MCg$w^ViR&(Ox_g6Z<9ehRg4`~D^J9&&g^x(xcmwwn@os-Zj6h-_ zBv(FqjePiMY7FMqoN3O}+vMzvI9iuwJivQzmjK5wC1!(i0*>3&4x>F*6fhQDX4CDGL#koX}G5slG(Xz=hX5iz>aQ?Y#Q1W{7 zPd16G@7uXozjfrOd;>IXrrz+2G`Y5Y=~OA6S(Ntf>H;ZjW1Zg;d*59qg>@E#;rtuj zU=V^P)_G1byaKRp$VVwM28kQ7i~uaG8^Wwp;E^T(!i)(aNQ0vg4o8SsrcT1FdkDKC yk2C=WLM(=ci-pS&{>%svD=z0DK79B", + "description": "add tail feathers crackling with bright yellow lightning sticking out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011546242449018692 + } +} diff --git a/pixellab_src/pl_hawk/pl_tail_storm.png b/pixellab_src/pl_hawk/pl_tail_storm.png new file mode 100644 index 0000000000000000000000000000000000000000..85b7a82913123a771a193bb430b8843cffd30037 GIT binary patch literal 2503 zcmV;&2{`tNP)=t|MHVlAYIC13+ZBB%(qw$qtTXDpgPz-g&voYYZ5 zpdf8$9Dhcj5|IYA@1!s@acNM%nSC6ocRI6&C~1gS=z*^Gx28{Vm)(WfI@a-~I;NW5z%T zo4nRX>H#A$d{P*UkJX=BzdS0DNA2@bg!LzDML+%2umtWM=Kfzzk){tBd6! z*S&Jo2b=ghdg~v#sC)EVwN1%eBAshW_(~;M)R672i0%y(Cn%No7xg~th7ZZ}?`O0B z&)fxkZ`YQcnDNA;yzY4kl%ES328palY7~Ct9e}t+-;+1u7T8BZKN9Xfn3VXP`(gZQ z;y3iY+Ib84`ds>>_$sbq`n(yv?w^R*EI_8_6~OED;^IeZLt2TQeAJyF&Gd5(`yk3o zacNCVM-%G*kPsW<2%YAiOa5&fkGB>>iW3U+sT1%^NGkky~ z;)=Y6$1;5z=s78+sI7y^BP$Kg^i(9f(>N?rbl`TkG(s5WI#A?!?UShsf!h~;ll{Wy zn>M31Z@G4e1Z(z1tSmsX(6laVn<48uP*iz@A1p8YzTXy@BEWA-wwuo;-VfAw!kImS zcZ!6JyY52u{sVBXDM3p6+YS$lB56XlrIJL)KqjV_(o-YK}SN=s$6Z#=7p3 zmR}IjOob(pcV@WI+VD9$H%e_Ox%q4HyWC)E;SZU3Me#;-S|d-LJ3~i+-*1X3jUk}T)5L{uMmg+)?6fGYvkAo@a_{*aTh!SEl{5D1^WzKmrmlY70Fp(08xLWr-p5dT#ND*uc+#d>%eAsEF zv`WBf%YGDeM@P@;K$O0+ zi#|TP`;lMp_2k}Hv~@7aFg_rmH{^NNvfWyM_l|DEcME?2VF_Bk@?BhqUQSrz6Jb}nlSY3PVHm*14IJu0)OPG1|Q>@v` zCT}7F^1XI~lP|R~aVpb~A7Y}4q_MA#y}Tk%GeypjXOhV8Y1RFVAC|#awk8X9OCUuM z`303H^m9@|bK)1cr@9iUdoFXKyyN`1d(3xeBXr%x#BW5tw@bj!#>oNd8Lntx;gw$? z)2Hq5*xVIpo;H;4kQyo4gvo<(NDJl~1y>%pkC;Otu8__NmuygUB4Lt%OO}cXIw< zcfgeJ*vSVAd7;Sk`lAO4N>CnME5&eV=S2RZJ@amU7VfN{lyN?>z1xY9QmV2P)d$sS z{Szqb?CrNi(bE@5J{ERd2ktyIxSLQ4!N_*oAl>L3z=p>%r{jcYBBboVnVsf01zK7Z zNt(ZM4XI}m)tEivBzn?V%NqgixYLb`=j;6(9Bq9Ax5S|bF_ofH;7h-KwJWq)X)tGm zedLtTlg2$6fXEXMTEEigGuN%h6ZqlNFB?RrO&oeBaA1?LPHy@mlQj?na0=^AVDsk> zrWR<)kdGjx1fB%*JJ!t8QX_L`lUGOX);EE^ei@VA~uk3&Nf5TPd?IS%o!ymLsb|4%U24I_IBFIC4RvQvdCLK>MzJ* zpjdzmRfyCB548lg7sso&;!4d)WL@sc4Ki-O%7t)x`wC8%XI+qZ<~#XZr=s={^m(nX z|4$^)KVXsz@`v#ecwKFmUNc9TYkNfcWgI-B>Z^Wxll68{^B9f zcSzdyu3xbZd*9iC%^S@B?;%C}{=*5ne!BACtN?;x2t`gSL7Bb+SZl zs89Z|65D_7x*>V_`mfirsqfmdQy%%pVYz!z8rKP`UiI1#zW4T=kzDK_HtG4*eI71v z&UWc~$EnA;P@RfGEdPz}Mqq+!tl z@gqnA2O%5?KV_*p5vID0uvYRwQ$Q&6M9@HGAq?UF8wK", + "description": "add a pair of small wings shaped like jagged zigzag bright yellow lightning bolts, spread out from behind its shoulders, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009655291530821059 + } +} diff --git a/pixellab_src/pl_hawk/pl_wings_storm.png b/pixellab_src/pl_hawk/pl_wings_storm.png new file mode 100644 index 0000000000000000000000000000000000000000..9a134e4c35fe967b2fdc31b083f0e962bd7f54aa GIT binary patch literal 2589 zcmV+&3gY#NP)a2azQEy27$^v5+cA6_4P??2OM$|1oT)DT z179EC{34(SKDyT21}S|;BQ?#c_iv_MZuLtf!SoCweD{XNEKXFDwQgZ=(UGo%El+}$%@iiK>5eRkU^U9SiwPYCCO!ZTOG zR|WL$lNMF0!XAO%J;tLO2*J-^Ie7|`3m=3qo4F2&iwz%hA{W@TWF1?Om@ygx9-tt@ zC@g{h9(W}})nVI`L@=nsOzVh;7%DNi#Ng&EtVO6)44P{c(yKy?B|K^hvD@;D5RmIX zptqS8>exK{$CzKf+Iqih$!~2|1k4~u=%^@*#{HQh*+7H`6$eNw^zN4+9%emp2UO|b zEu`!=Q%`W}-4k|La6W0{>#{aIS7vVCCQs3I=Qd8Y>VEq+t87xqa+$QLOb(yFl7>!S z-bFng(I!e{b2LL$L@NUSF=9d3QeudubWoY(C99w}`nYEa!@mCwcK^nOPji0XJ9{zf zd$W1^!^2}CYFhZYcjtyk_7Umu3{1M@^3n3s`uf0L5miiXWp6CxKFCsuS9hF%&@>*` zlo}U4#pD-{DMopEK8hF3G8&*3=mRdO$6!?eG+bjLAL}}RP4sxov1Y5D<3unFcQCts z#Nh@s??^^k`OKhRKb@WzD3G6Fs?fI`VyHB{z-fmT8~IofI_|oyapv>^`R14c>s_z6 zO7>Le$f_lyWb(u!=XA8IETu=<2XI3? z^_s4pFx}Q6_I`*#1QCq@K~dKsfVEIM2>2nD2tlY?G75{f4aSB7i52Jap#Q{(1vKV4 z>YG82VxXhrNZm0qE^?^+B*Wtf=42157IC@#F1=#HqNN{J=uMA5zCSC&ZLk0<8 zBTt(dqjsam`PR{rn(_(1Ir(?2SuhoPb{Y~hQhA}&(efFD)X}lbs4LtslJ1g(v`?-=Hut{dY;Zmx@`+>9(Aji_x3+3`cc^p=UmschBi{GZ zxqxmKFI+eiT9XVGKtTg8eAIx>=Bt(`^fwoQ{sB*UlM26s3k?nEs`&uee;V?qk68yD zN(2pp$xmDLOkiA8H*xe=by$@`=dJXGj~mcc{Q=s`OZ(eyM7tO06V&r$DD@VRr)ch7 zwiHtH@cV~f_yLnAOk4ddgh(*X037k*%;BRlu1r*B8wpX!7D0pif9M6p@leWoSUx`=fuYw*o zVmtmOPf4k|#`i-n)#Fb`Hu61ry|sQI9BD?;gGKmt>AQSVObeqm_uq$CYfrKFq#W?_ zXRSp^ECQV`#3Orb!^ET+)VIpN-Ts35MhetRZpXLqETjUQIF z-s*KCPd#+Ccm(H3w5eZQvwHrX*)Q{|=E{s=T!v#w&1J4fEu{(Sw*uQtV4oJ_=A^~) zv8@5&Bu{Rt#I@%`u52MZxQP0JI#(+o|F>(w(|E$F#O@wLdEAu9WeoW(>#IPNV5U5vq z%nJ?eZ@h+E!6_k@k7H?o$P*VWGr{nROV@$iTx*XXvKpjyf97BoLD<9yb4=c^C%zhP zHB2`rA*g5V!+?GOrIjF$Uo{*YR|ABXW~7d3v;ery@Tsd?-k& zHG?D2ird8lWTZr-zV+>P=l9~wxgF@d@GoR~JFT@rW@0xd0`>e|O&{X%Hi@STp6A&{ zdBa29U2!jegN#7`fJr{JVkByIUPWW$AV|MqS5~%h43?VFiIX+S$^-0eTLh>MMZW2a zuj1K?%aLq$lKxW81QjIx2>Rx)eut{J_u`$cjU2y@RkY%bom24VKQ?o|p|%0F$BpGM ziDMfI{7AXJ0(nf`v1Gm6~o6$nU!k<#2jyZW`z5x5VE6lyIVa<>C~skJTQ)f1~RQOi+z=x+gIX zE*otLK>4%l4Dw+T*FnUUSR@XWC(@Kxgegw~-);gR+<%6sL_m`QDo=zdZzF7p ze7gw{39%UJ6bm;Xe8&h7D{kZ=E?l_4Ey4c*eYSZS=b9HU00000NkvXXu0mjfjzHq* literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_imp/base.json b/pixellab_src/pl_imp/base.json new file mode 100644 index 0000000..378dc57 --- /dev/null +++ b/pixellab_src/pl_imp/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "small mischievous imp creature standing upright, slightly hunched, bright teal skin, completely bald egg-shaped head with smooth sides and no ears at all, sly narrow eyes, very wide toothy grin with two tiny fangs, pointed chin, long thin arms with three-fingered hands, skinny legs with big flat feet, crimson spade-shaped mark on its belly, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 40, + "height": 40 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 317 + }, + "usage": { + "type": "usd", + "usd": 0.008241831832461887 + } +} diff --git a/pixellab_src/pl_imp/base.png b/pixellab_src/pl_imp/base.png new file mode 100644 index 0000000000000000000000000000000000000000..5fee7513e08afd53ad4270ffca42804b302478c7 GIT binary patch literal 1480 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 b``_VjoNPW2*x7s?00000NkvXXu0mjfw#vTZ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_imp/pl_coils_electric.json b/pixellab_src/pl_imp/pl_coils_electric.json new file mode 100644 index 0000000..e6dc9dc --- /dev/null +++ b/pixellab_src/pl_imp/pl_coils_electric.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two small gold coil prongs sticking up from behind its shoulders, crackling with bright yellow electric sparks, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008433530542585586 + } +} diff --git a/pixellab_src/pl_imp/pl_coils_electric.png b/pixellab_src/pl_imp/pl_coils_electric.png new file mode 100644 index 0000000000000000000000000000000000000000..47e01f62d378db240ef1f6e8f57469ddd9addb53 GIT binary patch literal 1853 zcmV-D2g3M?P)f*OHD0#+VI2n7N$g^&tJia;ANDFuZ9 zB8Z7f2*g4n5>gA;2o%brLep1lX{Z!SAJ^XAn18Oj?%rML)!Qux*)N&Q?(ELL^S|ex zJHUhq6DCZUFk!-k2@@tvm@r|&gb5RRqWtg+jGDLa|CZX5*@|CbX;Zs;J;yI$Yhi-= z?~=N=iy2u6)WcwiMiCZn7bw@o(nYukm=7o;<2r;EL>pfe))jVJP$vh+{JH0VI-GOyKKkSfo5jx~U(*|~D8|GOs z_N_*IF(6MF-*xMba{Z^}JzV%P2`)dk<$>ULK~M&nc;V4QNKeYvFi%+i zVt?g&fOHgPWfEeeEU;Rv&yEYkT|UW1hWEnw?wvh8S6czWwx^Ky<(bKXUs(Vvviu*d zJa$gb-*v4%^TrAs`CWWsp3v^e^igqWt>CTp)%Roxgg>e(Jic$cQUhG7QtsQbg7&PX zHCWp_fj&sqAoP=j$7#b!Cp zbs$u0zXhyM=r9%+y-fS<{4Tl$Nx_%NBm~xNHH4ZSaM1>PDSj1d6T%?op2LcwU2XwS zW_-9lr<1w^ABmA_=5WOO2Aiz4RPpn0%#%F-o(i#|;bdmvaW z>jn1wyKqQ*J!&N;Y#>$!59EwCT&UJO+qN+q5vbY+5E@5CpfV-NBYnMspx`S3O)Mx#gW5kS8^q)}nQfZX z2f<^*xbMrcp#Il;yst~$fcn~d=<(@p1m%>WDItuHSM6A(_`VYShU^4$Dogu&gP(TzdA9C8XXXyWi z09)z-1PMhD0?$_{!7_IC7T#B#+KjpzO>o4JKoa}P>7K$;2!MS!=)!L00(JAYYA+Il+|K|Q=@BoB+&Mm+U#jFvUD^KscFT;VdVoF`CE!ti@EWqUS9 zRq>#GbCeAfXic4YVw7TqI`10^(I~?5A0Of_pX7y&9L&@QBCbI(aB)0uB(RS9g;+F# zC@nsG`g+d%-4QeJ^4>%~-g#FJLcTr?@ybim<4ccZ*~R)YF{fIVXgtCI*zLf*Wbqn>o$t*ERQK9VC#% r@iPr$-mjo?1>U?BoCy;q;0yi*eMxtwTqsfe00000NkvXXu0mjfn(%=< literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_imp/pl_ears_bolt.json b/pixellab_src/pl_imp/pl_ears_bolt.json new file mode 100644 index 0000000..01b6b21 --- /dev/null +++ b/pixellab_src/pl_imp/pl_ears_bolt.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two big zigzag bright yellow lightning bolt shaped ears growing out of the top sides of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.0077951335112253824 + } +} diff --git a/pixellab_src/pl_imp/pl_ears_bolt.png b/pixellab_src/pl_imp/pl_ears_bolt.png new file mode 100644 index 0000000000000000000000000000000000000000..5edb89572ac81a0c6da9030f24f6b09a4af68f1f GIT binary patch literal 1513 zcmV;uRlha6G>hwP&#C7O&h2h9egMTe1U!^jnu_TUbH#^-Y${R8tk4_z4) z0*x)vpmhl_W<)@ezHT9KNeeBSGNuJwuO`q~kt;0i*>|H5Y|LkP3C=43l>{YYKC=P< zeOh2+9_yKAUMFF;F|tAR<6$GtVIgEa^8z*^9U@dY^M-?cS+Rjb(IPSrM!-oD6Tx(Z zrZK_X%vdik?Ng}+Fjcdrf_YU-z^SdWHT$ZVM8ODU+soUn1bI<9fsc@+^mdN0~DjY zI0#MomBgs<^#X72?;^in-aky2fMEU-_!8QH^Q|U6ISMVDbca= zouhDV-%fZ90BRrD4qwig;P)+uP3vE>8s`<=2Y+Ctx(a45{zLsKq7#&d!u~^_!ih)L z!QQj`VXPL}j$-a$2tr@ILG{Ppue09Ge%uef?hwq3o`)N6?hzrfD+K`P4espumY9t^ zv6ccIT>HWn;2r=m(b5Prv(uy<`9BW9bVW2O96S69B=aV21CPZ6RLYk)S$ed(k?u>k zw#vs{?hk}yP4FN6JYg5ub59-AT<9W0hn@g!Mhx0!o#`5geEQZ_xUn%B4GN&j3&!z1 zB6hEZHU@f;pw?xH$fi=JMQT@r$L6`_UJ6~IdO99(r9~eux*$7&|fCt0lhTsk= z2c+i%i4sQzcoQ!uyX0KmcMvX}=P&k&-H5da#Z8sw@a5a{hB zYmN|E9W-{uTMm$W6BiNEvccva#XkZVKI8Rt9VJEFBLHt~%_4)i>+8GNM$hB+1I)7c z5-<&hwn9#k{ZPBjT>>y8Cc{k*`gYvYqdS}L&yRSZyTni!jUWR1i9b4Xg$)Qd)Kfxa zb;XAej)t|?lCTls@y0)AvKGbm1@445$^@71rG0MU8r7*l;cw1HX>cf5Seh0UH@;&7B^}}EP{cMZwgfPVUAqGL&`cLqp zKtC=gH&GzsT594{)KwZlWi}wrxGgD;$Mb-As5}zOT6h=MlpJ!%0UX8uFBuS68", + "description": "add a thin glowing gold halo ring floating just above its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011542788982391358 + } +} diff --git a/pixellab_src/pl_imp/pl_imp_halo.png b/pixellab_src/pl_imp/pl_imp_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..04cd39703d92a7fc0aabda0c4d3f6c84ba41999b GIT binary patch literal 1553 zcmV+s2JZQZP)ES9(C~-FS*sc>jCrcXKmpbw{AS@|VMgPrt4W2d2aM|6WyC8@jlQ@DLH2lM2jG35( zr^AC~df~at@^gE66R#T<%t5=?tD7K*9?T~n{T4A%VJhak5<;u95!BtrCIpMt z6GR@{&6yw9KLkF%a8scom5U=i9OV387&xy0dcmUQ;DTVKMCg7a5C3^X_0EK#e1#4m zS`MC2zE{P>l=yhmwRmu{(cPI@4sYc(h$kBPvjrktMY+U~v49|0sVMpg+kGXY-&I%N zwH;|~YbAy`0wWS~?pTF$l7>P$CT#cF&a=`18XcBGhsG{~Rv;RUOGgfS4cA8wfZ#lg zoa(KdxcTe_72^yWzAS^Kq=r9x2ZeCvLyufQbDa~hxB>UUO}Lbrso7dB&=9nbfVlpN z$Z;fcMm?ohRo~a;{eUZ3vypJFo)-yi7fX;r{BQ@wbGx7=EE9&e$U$rjLWSiVJ`kE+JCwEadgM`J?em zX&J_Bn1H5?W!xx+Ox^=u;c4tFUdr1%S}+#18B-7}QnY_mC6D15GYE~V7D7u9EeB_} z!Qk?5;LEFkHzOLsj}PEypVX}!V`Qffj}@h7m2>IWrGjL1ORneVxAw3S>$ z&AvS8Q|}3eltPG}_6|SS5-bh@_Mhue^Yse;9ycSO*B$S@FC~U9)H*&rm)HJ&4?tL( z#%)Bwj#AWRzo5(d2=oJu&Mt(l(glA+xavdulTm>N4T0b&-{6aYzym@h|$k31ipu>|Fq3@9@T)ec46PP~`di(?)iW-2)?rK~e zKC8RF#8s5bBSSWZR$5?%&aixS9?U(?OnZ*kfj}5?NUS%kT2IjaSteKUzG+|JdRrj% zeL3}6_$I9cmX`(^1qXH2mBwt}2{~(+^?~t@z>vy)5Z6}n=eXFpy!Ov}7|bJNMoud5 zv_W`llzcrZ!Q5w7W=wv@SOO3PD?hWYJ*&~Yw;rc{eUH=asbR`yM6&owLl_^CNTZ5A z1v%)F>BlC`G?oBF(MQYDLxwYKm>k6IdM5#p`ae*-*1elPoFuTpBjQf?K3CVL*be0YuK4CSL1Yy`<$ZoT7 z24Z5S!Pt4jGJnwyMuTAshf_3mcPXATL`z-6cZ*);GW_iJ0*1`i{XC_00000NkvXXu0mjf Di+1*~ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_imp/pl_tail_lightning.json b/pixellab_src/pl_imp/pl_tail_lightning.json new file mode 100644 index 0000000..4149e0c --- /dev/null +++ b/pixellab_src/pl_imp/pl_tail_lightning.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a zigzag bright yellow lightning bolt shaped tail sticking up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008408881690767075 + } +} diff --git a/pixellab_src/pl_imp/pl_tail_lightning.png b/pixellab_src/pl_imp/pl_tail_lightning.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ef6d0e4935167da73da46e6baec033042ad2ef GIT binary patch literal 1766 zcmVvunn0Z85xme z7n-1Ry`$FxZE3Gk>?e77ci(GY z-{-yW&vyla2qK6ef(RmrAc6=Yh=&mdObkdoFE|NBanL140Rax47o@>X&Pgtv?FYB& zA@_QZ-5)vXs@B0eIMbl&fFI!+wMVr+5$vbXO+6LvblCv*xpOyeW?fCS)`?2Je zBrJ&xQ{|;sud_Zp{c-S-WppXEZF+son(1j0wL6G;`*V+egUE-h7RI!p9Q4Jg;pnuv zSM>u7qE)?g70Q&|?=u@1c@O=Ee@r0ZVuehCNQzdb34{wBZ8BM#T!E$LE^w|xy>HpG z*)ZAybRQ5gbv-|3^13-enjD*yLeNI?LR-s-JMPMlIEG3(?U}NUuEtJYHxo!oc%M3F z6?RwM`cny-o?Gjv=2AjUB^nm3_L>6+9bpX@V46M` zxl`sdqJ7n7`GL(0itTj{8!17lmQaBN<#yQL{*bX-pNE>=<5FQrdlR0wG z2Zo+#4mZoUvYYnaK1Q@7Cks7C+tHMg!4_rV@zc0%8NkWKjI9D%s~cYO2RhwL-SMa$5%G95|IMEFR<*PKenB33?{y&R z(=QSF>p!q8e2mF&6}{&)M;bHh-UW7D_DHH%Ar*?b9u8M9Hid=m;ILa{IX z1Njr8mC5a3poqZL-iGbFj*Fn?0s*4|#$#t#e`~{=So_qBAx&7Gtu2w=JNNh5yg29! zY3}@YS#{TN;~*1IJ`i4g4m0B)#j5rjxIHg(xN`yK{95*GX5XbTZ2tmbnxO1{RozWU zcX_WSD0ublvHak{YoPQvJ#8K9n-saNB({T-?a!|}inO?Bm3)6=7h1C3pxg0vB4m$& z@-3~wtye?p2WDO1T)Bl5#7fP-AK0Pd8?;}*Oex+MD- zq{A$L5;8S%Iu55o$&>f}p27e>fJjq6Gd>ey@**Y^e?CN+p<%d;k>bC<<|gPozD)f5 z4?|9FM~&n22kOW;z5fJ}aIu0FHbkC|#qAG798+53#zfZW%->)3&gn5I*=+Rcj~J1L zlr@<4#fvPQiN#e2-+vtZr5dz#U)I$0Y%zFFet#%hSs2vQ_H{*kWU|I{D}P)Xg^=p) z?GH?q!_TAOP%`J!^f`B*pADvkx?OQxrTL1t607*qo IM6N<$g5PIQG5`Po literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_lizard/base.json b/pixellab_src/pl_lizard/base.json new file mode 100644 index 0000000..9d02c79 --- /dev/null +++ b/pixellab_src/pl_lizard/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "small slender tailless gecko creature crouching on four splayed legs, seen from the front facing the viewer, rounded head with huge bulging round eyes and a wide smiling mouth, round sticky toe pads on its feet, a row of small crimson dots along its sides, pale belly, bright teal skin, its rear is hidden behind its body, no tail at all, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south", + "seed": 734 + }, + "usage": { + "type": "usd", + "usd": 0.010209760109583537 + } +} diff --git a/pixellab_src/pl_lizard/base.png b/pixellab_src/pl_lizard/base.png new file mode 100644 index 0000000000000000000000000000000000000000..2250d6abe0e0a75f33862742e8853946fff38fbd GIT binary patch literal 1535 zcmVLQIW@ zg!nc*VhbcKhOkwLEgBFli*&;-OXxy)w1pC=5G|DUnseG2?!DcX>dtPLIA1b*@7$UB z&CEGx=FVOKi9{liNF)-8L?V$$Boc{4B9TZW5{cx0fg!~GDPb~>kaw)$&(yjf!IGQ; zQ85qF!;bbF;5*?2_nh2NkB4Ip)x`V5(ACAu-E(r4P#eN1SWi)>)Pm&$PTrp(u#H|v z@EEoIf;bfGK?jtljO7oid@bO*-dkug(N(&~0$VdZJ`QGSLhfUsnsJCtGgio1ya+BWEC<+DHelV;Z@vQwpKR^W^Xe(E4}J^01B?4kxev2?v|^QywROy|oSIJo`E~=JDM} zz`L$2tPFrC+c&-qNjXozBU2K%5!mGHQ{sVf;^s|IlN=olwQZMa;;znC^7=rNN5atn zh_ZFntB{nH1qn0KxDk>f#z5iX3@Gr$fj=rOO>lUx3u;=<^2wh*(g1gE-=@h=URAEC zFKY5ZF#x;K8v?z#W@#zZp1J@XUAO7k*vJ@g9Q=&#S=6}e4}+(nf!4bkwGl)bKqN}R zF^4jFRXKge8lSmHg{Bcj+2s8U~Ik?H?Uy{UQG5h@GAX(era)#H2@Iv}GjdU;M%F zycvSPT5C4A#>K$saWlv$7`~e=5zypnq&2Ol!fu1Oq-n6i*Gc(FY2)ct_qa6^sE8Y5xhA^}QfAMBy4kb*ieMyoD|Yg=zJ6=Z2NiE>zIy$u z!`~1V{{~B}nRHgiRM^>brbX}R!j{4uC+QFMGGO)fI@k{y0u$bc;*PKx7SP@4KFGJi~+ReYcMZ<0)=H-QK{zakLwtp4RWwl2ba=M8|?hy+?q<#K>e8$ zV`-0>_E=({F$@*T$0bY1Bbn$&g=^waE4H8 zaG9Uy&kga3f-{7>Iw+8*@YEceVl4>|Pt94vXE-4I+$NOnYrB8P?G!V>CCjALGYybK-0WD6Sa#WwOX zQXU~<>RGzR72$&_-EkMf7d zCvI>-2(in|b&a>QE&@3ipQ>lVA(s{H5{9ym=sGf#R9Fftfg-`de*3_;;#&#_#BT@EC8Cw0ue~3}2lT{)Y5loxh}&6$g~+sAs}E7M zqi8#vW%Zf4FJVOvFU&7cGTx}CJi76E`5=Mb@EL^cje!dvoCa;F)CcB}QnW<91RLBu;LoW+%8!idVDNeuwAR!?cFC8- zcO?5$6l_(Sl2Z~F&G3j%7-aYcL;LMJ;GuGb;n^wZpSQgEKecuX4F9_rF6#Ab;o8{W z&@fm_c@#T7JPPs8y}<|Haj6wdC50;zOrp=9dIvOdPr{?ygScoWM!P+bSG+noDQOt$ z=?V3tBP3KmJ4~+H5{qz#U=n?{;5E?1#6Zxl2rgRVwgJ*Jqad|6z+$6v{~lS?|%+L$wC#Dx?P+T~jmPS$uaUf#?1> z@ZS0u`1r2_`Npf%S%<%xi`B89-{b{8n|9G4a5~TUyFrh>lVVbiQf(RpXm&tu?=0oF zMr@|7>j`xnG65_Fi9dRPSae4$7J<`_qO6J4n!|$Cm-AphC>#^s zFXtD4(AjO|iwjd=QU+adkzm?=;k=ww{=dP}zXxi^I56+KGl>?QXwgww<;AZZ5^c3} zT~rEnhSz2M2oZ|avGVp3p=gvXhpmMKkD;W%Ei_FL8Tpd41I8hiDV#omeGvR|Qp*by zs>+E2`FH#I(i++Ec<>SpN+EolcZfzDec}uc4{UetY<^Cz<44u@~K`zRXHUV zYRHezOSNfs2XAW>OB!}|8{zq{zF)F{?C=Tl0=6?;I`pF0QKh;RK^QXCO5Rv2<%7jj pAn`hh({d;O1I|^fVin*-{0H>!{@4w4z)S!D002ovPDHLkV1n86%*y}( literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_lizard/pl_frill_neck.json b/pixellab_src/pl_lizard/pl_frill_neck.json new file mode 100644 index 0000000..8c45d7e --- /dev/null +++ b/pixellab_src/pl_lizard/pl_frill_neck.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a crimson frilled lizard neck frill, one round fan of crimson skin with dark ribs spread open behind its head like a small umbrella, compact, only a bit wider than its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011213760746849908 + } +} diff --git a/pixellab_src/pl_lizard/pl_frill_neck.png b/pixellab_src/pl_lizard/pl_frill_neck.png new file mode 100644 index 0000000000000000000000000000000000000000..919e35e627f49f9683e59929110677bf1d0942e8 GIT binary patch literal 2200 zcmV;J2xs?+P)qnVIK%W0ZSlg)QEtg1Y&3uf(Cp)B1RrU6Aem~#vdpK6EVgg zCR#&dB{Y$TKX?>PHAaJiP?bZWy-;cW$DO_ek2&WrQToPL&_(ht^jiH^a}_O@!c zQ=ngj1UYiFo1Flim1hro!M!~Po1!HBV2$oK5doj%KrtPL+l9IxkmS3~C!I=w{`tV1 zD8udMwo}B)5fTY{vI)?uvh(QC+tR740TMnQF<$79ECO`Q(Knh}Y#Xrmtfqn22m!u0 z+sJuB?`i^cIpqDE=d!$5BypRySv@`Fg@701Wd;2v!6`vgvqGYrC#wX1WR@P2H%Y&!du8{Co*a6GyTWmOWmAL>z7<#1gr z1DzNTeDzNoxk13MCC|^Ks1oGVc(nVZrOnmS7;vf-mKz=5*r^Q43dx>|6$w^Q+pEU<?t(6Cps4_d-J@LN(S230C)1b850*Qr7O?RaI6rBNd06NRe$+GSY9Lu@Zu#AJ>wzhq>*Z@-O>kd!+_Nj z!`=fn*Po_8FSvV3%_*5lB_Ay^u1ohf(6s4uji?}-gleT{JOtu3u<|r#VEG=5&s|$e zqx+ht+nUVVqv~P-ZP7=qgKRljs(RSz84m&S2+UD+p2F*lnyj`c5|H$)%4|IPSjm#d z^D8$5{1Ae94-fS|)JR(<%@N0{hu$>qztwz9oMS}--{ZCbWUxHQ#u#dj@rt0I!uCfJ zS9@CrrKP9P=K7ax+aCFLkL^A7`pJDeOtN#wm6G2GCfZR=Fz^r?Zv})lyvv^E#3)Av zw*d|wZ8BtmOnD4re-Jr)*%$@my#w&_Tn{4(aO{_N8`lO5jIq} zG=Oc*bp)&~GG}8u%-S5z&ZCD;qk^rQ=*ax=5+=?SWd;duh`Vs&fZ_T4iZV)B{;6xd zRQ+5NFl+MQ9aWPBXe)koykjt-i6{WA4WIY$K#E*5p6@p+=m*NjsiuQy%Sm8^*(f%`!Q zFy@s7LN>-|ymHNW9L85^ufG=vk`Ea7)ZH}a^<`9h_ls0l9`=$QS}!!myf2o=(uYlT z*a?;u7E$wt7wGW3B}6ok{DS5s0-pHmk~mj1AE&Cyjg)`?WU6>)1FcxU$<(3PmI*-!TiFM}J0W;lB35er%(oj}6;%n_n+@p=a>Oi!i7 zXX*?R7}@=&5ZWDRZ50L~d=Fm@@8+yFEVvKkq=l%i{W9%7z1_HfXm zHR?Y-f6UWwhO`9xMdg9w`eyp(;t48Sw~WT#Gld3@$umeO>YXhNT0Z1Pwm;N*!w6tp zMh5M<&@9LTN$|RAJjncPcrQ~wFW&bp2dq04etbn%UR1I{kkH)NB%%R^fP_1G44|_! zhS9>~!$sSfij49Rf6>K?^CshAIKam9SS3UJ`$>-GB?4BRzARRNhO1X;%g9VqBmf{H zJ3rr;7MRB+PrgP!)i=_=*TNA1V#=$+J3EdVK+YxXdE}gdsXav9yMsc$M1YoPM_zgm z-fTP*Ff}z*l-HcAGwP8aG6!UtjFbU#5H;{N@bZ8g?bukB4=~AIe>13g>8$1gPEMSi zd6k$GN)bs?CPT)r)!!T5mJJ7vwzr!I_QUI)@=@&hNf;sWreNqM4!l8qdw`hH!^Mb$Cl;wSE4dKHd^9*&=~LL zi~tpKM1YjB!IY>aOwAhrRu=%%K=QZ>E$MHC1EG+1;h5gEsq$6+tf57gG^LnqBppHGD{J? zF0T~jqi?KsI%bp{PNZ8F&XYYJPfk*yHyqg^Cnm365;7nUa&LyL?*yHp", + "description": "add a small cap of pale icy blue snow and ice crystals sitting on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00781151032447815 + } +} diff --git a/pixellab_src/pl_lizard/pl_snowcap.png b/pixellab_src/pl_lizard/pl_snowcap.png new file mode 100644 index 0000000000000000000000000000000000000000..6e282a089a317d6ac418aeb5dd6a36929e15a3b3 GIT binary patch literal 1696 zcmV;R24DG!P)sIYb?=#O|%+iE2i2~8Y84h z6BGJFVkBY!D}EAcYHD@yhoGo@3Wj2-AW9Xj_?mm!H_Utck#^sHNZ&~&GxKKVyt#Mo zz4HN3p+bcU6)IGyP@zJF3Kc3;s8I3$g2oO16g+4ypmDX}We@(cX!zyNhp=mWfIH>{ zuKJmPf=?UbOO*=`dnAn&Z4bat=S5|+B3z~fjVpzh3(iAS&ZiCSurEySs=0yIl`C%# z_LSpHXx!oR)_`un!&O$Gb>_-%xYXU7;EF0ep93}%fQLPCm31S-as zYv4FnLFX)DQCMrjkl>>L$~(GQ;IlT?70^0?Q)un&wJ8i=zjE)9T_RVwfySA_%kkTj zr%-si(`Nfe!R#<3u?%MhM4i%v`OO`$&M?wy+pFF>iIDdC4(b??-`v5<_5`%oCXWlw zf<{3uA>w2?)V-0&K78ERK48H`rQLrjbs@9)D?L|Gnp6ncvK@>|X29e7{ri6Dyk!<0 zZ7D?rcPS!7?#ZFNCgTGo=j%Kd@bMc0OUI3&@`}4vl;>1jw<(|;6TdBlw_-9 zWnxkzf7XSMBznlRI zW}Eq6f=61wwdNC)<7&No;5J(|jQl*%*KwP~#QQzpSI!}FI|Eur31*)?1tA&nv^rgH zuZFUaFgTO3%Ic(1;HxA0Z-7{qD*=IHkpsDq6S?spBY!N0`gv;=wE~?IBnwh^LdADm zsf=eo-+;+roH?25{Cf~DyyP1f;CYuqu4Pq6**}UvdFUJ^2wpM?=Dd>vEy+6o4s5gA zw?2Ifgyd%1tkcerAq{wkq7%S0H37PJrogGC>meg&5tvptLCmG2f)a-!orB{w>3fTW zX>oI4?U{Ti%+7)Iz0!3OR}gXO{S9!5I~jt!4gkMSPk|9$K5*r4dJKWKb`!K+zX3Jn z#~qxi4FNzI2$jWoFd=Rx`=Aeqf#flvP-}kn>g;_CEzhiPi}QyWpuMN>+&^jLP#SZ* zwT$X0{JlRq;Ps{JnKJQipwzKg1Ij`8W>*?S#l?btLO4@`DBOmy@vP(JZs}8b)Xd7=UkLVo5-h@2k7tO1qq+6#I}T499c&HYN?alp_B zSC8F%{ zs*jHjg3Q%<5FQZ?B~rzDpqAVF#g%JFO9nhIRL0G*N`jV9zqg3_ z`tJRGimH!J;QgOBe~m}n1~)}S)A1G4@}9nzU0gkx*^-%~kk-Jvf!JTpga1KAV8XH( zFTjlus&Cb@V23Gmek$b{v@k^%{ve;EU?;IYI8NlidSFyM1wbwc(znBh3f!s$!B#R& zO`yqR{vReNWQE7d$4dl9#Vch2S_j55A6yt}AhR^4ZkC+=(U0-l04Ga*(3O7rJdJ&v zd!&#!kbhQ?o?^_D&`B0^a2JH!v}9V5$UQmC9eDG{{T$o#GgsPE0^>2JZl->7j}%f8 zT?_fK9s4P1_8JGrTTG<-RxK", + "description": "add a short row of five sharp crimson spines sticking up from behind its head, each spine tipped with a gold venom drop, nothing else, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00770892694261339 + } +} diff --git a/pixellab_src/pl_lizard/pl_spines_toxic.png b/pixellab_src/pl_lizard/pl_spines_toxic.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe86ef8caa2e45996aabff9c23c3d659dc36703 GIT binary patch literal 1731 zcmV;!20ZzRP)1^VD?<6~r-n9~|wQG2{fjB$h_{7GKIB3>z?*J-uLA_=iYnHz1(xThdRIQ<-F&d z_xZi=^LgHLE&wJ>m@r|&gb5QSOqeh+hwu#8CC3M;68xVH;F&%hbpu!xd{k!A-1cfCEoGt7QPqIl|pbSZ5=|JfcyU(8F{LG@y84EQBM^ zoDfcdw1z6cpWy(MpIVa#P=YC^dcXRyC93P7&PY{I>(Dgzvs#l^As5}9pzA@%23!n=IJV5Q9Z>w&gskB;Wm;%>pT@B? z2^SU}IC!pO&L%8~gNgf7JfHE8pd{E=J|`0%zI2}V`(7xaBl0Qg0)$#0=KNh?zt?LM z_i6u5;h9%fD^p$zI2L8R%5$C&BP1kPbmHNj-kG1oFSZTeg#K}PW~fB~B4d#SO6|+| zd85Nck)iU`Fh&HV?QEdMi)e^X@wui39E&o_Ysk%_;*-0BVCdK3w&9z+|J&jzA0vn! z7yC?kl<~*K;7u`$kqjWAhY|+vz_GkyYVQ{9;5X|hhv=vl3G5yli$D&>hulIGSPc0+ zpu2S+9jB)}5F2NOw&6Dej#cKp2fP@>DKtLme3N;z;T#_Lp;P=rpbVP4$ZE$uUurhMkJu}Tic z9SK;&C0Ntd38{5Oly_% zJxJD-HNdIXdg^ZkfQ5R5Nf9!RX;9`Kx=40ZB?hZ`YBPBGlwT@D?k+aPY=OW>#+hJ5EqNsmpD zElhb!O;d~1xvCKAe*FTDHhv5>O)atk%!7#Y6|Vt^+gs&1hJQgN9ee*7qoez_18xrv z!MP(}hq=@M3V=S4I@>;l%(aF5LgM0lsI}+9_oFU;jVYx>$)hPSJozW}?ePy&|A(>f z=p2=IkGNoM={9c6p5vF{T4TK~>$iY@z+Zyk#Vwm*acT-T0#mLwZKl}u-V-YWKvqmF zw2zI^I5ZM^T}^p}5e>kNkh7|gM*|um>!GFa#Rb(DrcZ@yht16`wkuvc38eD>3&Bh+V6gNi#ZT=c0Wq7n2ofS!;x zb)UpnWBQDhTu?&CgavU}AEds^$0YY{hu?)PABX8>O98yE*pc+S4I%)n{@3xDzVR6{ z3Wo22oJFK8GlmG3E?b@Bbe@@&2=7;Z24C89;aj<3bq{-+4jeor@16RYK4e@Mp8d>o zPOp-5q(6vh zz{V?ia2_-SHtg&5%TPFwu3YWs#ZD}IShTQZG#^whQtPKN8iR6-gYjYk6pA2S6AEWk zAO&iUoMKu$9%r#Y`dv^VFH;;1Z-n0lEv!?NnoMDdX&~@R>LZL@6JjE1X;g8RAyzl*oDM^cmJ^wS$c2E;jAPAn2VF^>- zXCYUv_QU$aU-=X?jX8aISmi%a@rvkiEuN@CQts%&<@3H}60Z@eelUo{BIkwTCQQKm Z#J^8)&DHH_lc)dy002ovPDHLkV1nyiLnQzJ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_lizard/pl_tail_lightning_lizard.json b/pixellab_src/pl_lizard/pl_tail_lightning_lizard.json new file mode 100644 index 0000000..abc5dd8 --- /dev/null +++ b/pixellab_src/pl_lizard/pl_tail_lightning_lizard.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a long thin teal lizard tail starting at its hip and curving out on the right side, crackling with bright yellow lightning bolts along it, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007716657373640272 + } +} diff --git a/pixellab_src/pl_lizard/pl_tail_lightning_lizard.png b/pixellab_src/pl_lizard/pl_tail_lightning_lizard.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef1692874d131728f0f416a0fbe45514f85b31a GIT binary patch literal 1848 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 DZVTS% literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_mochi/pl_flower_back.json b/pixellab_src/pl_mochi/pl_flower_back.json new file mode 100644 index 0000000..1657c1b --- /dev/null +++ b/pixellab_src/pl_mochi/pl_flower_back.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a big crimson flower with a gold center blooming behind it, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011016767740249634 + } +} diff --git a/pixellab_src/pl_mochi/pl_flower_back.png b/pixellab_src/pl_mochi/pl_flower_back.png new file mode 100644 index 0000000000000000000000000000000000000000..926cb46fb138da36823d57e98da83b02afb0cf5a GIT binary patch literal 2700 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", + "description": "add a thin glowing gold halo ring floating above its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008262450774510701 + } +} diff --git a/pixellab_src/pl_mochi/pl_mochi_halo.png b/pixellab_src/pl_mochi/pl_mochi_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..f809344c7613cd095efa546aded0ff8bee68651b GIT binary patch literal 2096 zcmV-02+#M4P)oHmSpJ^V2)`*2B}#gVTPra4wer<%dyN}PRcaB=t1H*nx(zzH5Fy0 z0%j>=qd<{Gh>3#}CKp6QkSrUs@=+p}dz$ZC&${<=ufpZtYu5f|c6Rsdcg~*wcfRx3 zvw($#g@uKMg@uKMg@uKMg@uL1{|Y5kFLE7NBGj(al-9;fA=AXZooy@BFPYD_u(XiW zO$mi?I+OVJ*gGqy2dKI%lb=iY&GrX3UVORyC{uZm)CqV;Y3s!UTzJ5ekIUg}Jc_ z*s%Wq3iF=YH~uS zbSQxk|H)@nJYdO|e`Hw>w-iCon+_dDMA+GAakav(+W7qI-$zkiR0plUh9OZbf|)-i z5%&+Ch`PkF93?G|7Q+!))#b>{TZ&bVYEGXtKCaVFP&*@DLaj?qczMb_EIvKy8n{|r ze9Rnv6&8-Wfh#JJ&WRt{m&FU=G7iF>TO&I znFAOZ`V`ttD_+C&oNPm!FU*c0NT{Nyd=MF{zv8YVBZ?d}bW}gKBPK=;KuzBBIFk8* zTOIsG^*5vW#WYe!rlk9{rAT<9;A_JGi`FZld;G=$6nD?a_6&qX!6_Ld>lz?d1J;U(}<#Xos7Vcz{%GhRxH_LwI>j z;%Qd#TLb)9=Tqy`ROGC2wh=%hzO3}-vIcC;nQPcMa)IeN9~c9lx!=p{_wPR5w`=l% zLFw~wWn3iR)3oTUaq+5AvZ}BehyqWq{w$TX4mtn}*Ol?QeWIqKa{mE1y!2fuN{T;N zn2&QtrMTIdTi;vQ%RH5@Wa7$WPV>e^MFkid-W9@Gf(1wD+oEG=9nEmC)rFFjB)+Ek z7AZZ zcD~kY6~b=;MLBV#$#6I0OSpTvdY2eHx*rCQ&N1>-G}gO~1MR6pzz4yKMtucH{og#O zc}{J!H~fHEWmRp`sgL`b20foq8FY9Ko@VG7M08(-{Bo)4SsN8k0`*Y_d9~b z=f+$IQM7}_nDHh?rqS}*oaSpKs4t3iT@eR=^;)NH7xl(3p_~OK)Ryb#*aY6Jpc&t; z2z+>KWWM$$JwiHyr@d@-bHBf#sn%%yaS>MlrE7TaK>toSzA$Sq3jBh$sN23QD<+Xw zX*5q$g`^`oiaFdRv_nLZMq6cB)ujQ`qadJYf;Kd1Pmfq0onW*c36Rhx$5oNNjQh>I z8{C%F(%zhx#1nI>z7A-;6$BjJ2@)Eu^J0e?4lswaIn7hBgoGbz)<1R@)qWfBIx7ec z!rUcfL{RvWGrVRv<^XeR6ZE~Yx@k+$>Z>4lcyx(s|I>r+{%xQdfn$D;8PqsgZ z=(MNA+}P{IxQKxs{|ZlbXq<=gQW?SgS*iu8T;4a>=-7d0)@$ak#`d0000", + "description": "add a small gold leaf sprout with two leaves growing from the top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00859204641977946 + } +} diff --git a/pixellab_src/pl_mochi/pl_sprout_leaf.png b/pixellab_src/pl_mochi/pl_sprout_leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..dc56d1dfa4be1212e549f0b25ff06a07368d8598 GIT binary patch literal 2002 zcmV;@2QB!CP)NklYR(W=mDIO?&;G~b(j!_2s#yX-F7&M%qF%)7tuec$)q zyj?&?M@L6TM@L6TM@L6TM@L8J|AoOFog{zYA!^e?KdUh~TF#jWa4{rQNaXZK()ZNv z7iVp65KdW6d{Em^AE}}%l_0=PR27{^R@!gudE|&Lm@u{r_5e%?d*(L?|4aNqcJ~h% zhKhpAE+3cCgxIcT(J@c2%a))B~WBBOjVII^8RV9Dmcy5i$UBCc0 zKr=jgqz5|o?9Sfr{e2rhr8Ov_U2DLzy<{0(1IFQ2&QX@XAi=f5yG;Sa*Y9|UBq*6a zN2vrY?hxLs3gAl6rcDX%f`cg)c>lY9+&UJw2SHo2O0LnSvloC0v=qh`>zP)D+Ikio zTN1&&-I)|FU}4r!k(bNfjA+C1>hVy{`>$Dmc(d{{7ANe0Is8M7G9=fhyNI!fTy=!YQoE%_n9LhhMPftw9 zu3NUV2Bz=JL_UDtr;Z?*254=ApthZ@1f!GMVJ1xjmm?lXj? zmj#BP?fNf}G&oQ$ON!x8`UbxM1bVh(b^lx+r|QVs2Y0Wh!U9C4;N0{#&zQr^xQ|&t znRNzxXC1<;ULB;4%>omg6jR14TcmQFXx{*wyj_K~q%9E4E6_H>ge5`#TnSFG27@#G zowI(%EEes_Z;7!BcOX1J3;V;y!`rhHORKED!%Uk@{dzQEWNJ2o++c7cfV%IVQ`kelgaa$UzQlp21ii-wVGP^c(iAO7K}!A zC%-2PAWL|qXCJxIPeR9H!O*u*G-k5O|4D(Qgs8*>q!e9Z>C|WBgb~eBg0VTmb7*j+ zgwJQrR|!wh07)pib11*cQio9!2g<@546Wq+zMGb^J6Q!OK^Ysi%$&=Fr#@}O1@{KQ zSgYxiXNI?NXFR*8Fg(*HSvfyZ0y-+mBDGIgWRo>M{xMrt4hhK-#fP#I_?_}eQGGjhRJB1?Fw)Bt-lh)B)i@guA7^87 zqXI0<~HcakV21W8Y z+PQHhG&So=!MIS$S?Brmu2q6IpV;FU$X14j5SjAt7T;s;lIq|l$%tk^0gC)_>Q~#? z07+mjBt3I-GOn;oE0`^TmF1~TZH(Zo^Bcjo*R)-xRmEW$;Na57mm*cB_>e_>{(SaC zDe~i^<@~}VVD66iM;cYefcS{ns`4)_S&yN9J*2@ZmPJlV#wDN+*z)SgR#||ZP{8TD zc{}J3JMT_43N?Z#&7KQilfDlg6T{>(N*8DhUMDYR6^7bS8mGsRAFR8}Ol-VQ-xl^E z*ju5xPDEzdc=pU@Bk8; zYtivv*`;OYyog54Uz?|FqbZl+W6Ato9cW!*0d>~S#-GkW`GW^2gb97O?L_IacV$Jq zmv$P@1-~pme;MqrGJ9p9vjvs2)rK|z@-IxH4AMc0v>~#%N&zPMN&aF>y7)*b8f@6^ z6!yGt_GH!Ukz3GArv^?#uOZTj@YM^&cq8io%i~H?w(;;GO&R*jk)xJzxcH-zdY4 zV@YVP^*t7Iz(pm_%EhMf;ACl;GEJ-sgxSYzeMZ z`kIRk+wA7bV}MgJiF9Z|-|d9*;8ThA6o}S$TM=GK!_io_Q^#$9(=my3m`RqvQCft( z(5%-ykUn;{7N2nXm<@0Z%m$VZcnzIe8)b`V$|{s7kGtr5Bl+5SmyOo|*P%J1GqGdt zCqXiEzM+vfHZAi1f#x8Z!&i#YzGK8tpJAHc3LkfwSRJZMZMgEsQo%*-vU7uz`9)Zr zB`CidpL7;QTG~p?0=}Idf?jd+T=Ki1OJl&eZ87qXAGBMv|2Kb=NV_~*G3a>w=+Y(6 kbPO=GU>iC*I%t%C0q{!3rY+hVjQ{`u07*qoM6N<$f_7KN5&!@I literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_mochi/pl_tail_curly.json b/pixellab_src/pl_mochi/pl_tail_curly.json new file mode 100644 index 0000000..02b0b0e --- /dev/null +++ b/pixellab_src/pl_mochi/pl_tail_curly.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a short curly teal tail curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00873938759167989 + } +} diff --git a/pixellab_src/pl_mochi/pl_tail_curly.png b/pixellab_src/pl_mochi/pl_tail_curly.png new file mode 100644 index 0000000000000000000000000000000000000000..ed091f887697dcc22493ab2916b5b31d1040917f GIT binary patch literal 2284 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 P00000NkvXXu0mjfm!=VZ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_monk/pl_cape_short.json b/pixellab_src/pl_monk/pl_cape_short.json new file mode 100644 index 0000000..337c7a5 --- /dev/null +++ b/pixellab_src/pl_monk/pl_cape_short.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a short gold cape draped from its shoulders behind its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008199535210927329 + } +} diff --git a/pixellab_src/pl_monk/pl_cape_short.png b/pixellab_src/pl_monk/pl_cape_short.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8b3d63ccedf83499138cbbaf0789d974f0e634 GIT binary patch literal 1823 zcmV+)2jKXLP)T6C>$P?jL0wI%RckG#F`gT;GBkdoHg5_o8g z{fG}{^a-)Y!eW{VMBv;w&6L2Y-=slIczY$rP4VmdgD$)x;6UXRH&@mxiYU%KpvhF= zp#kGV0`Tn4V@wEV1`?i_v%S#aJ=qGhg4eQfXJPt7u0u+5NY2h(4(e1IKC_fSFGdJpAzU<(pSfo zd>bq*lx=uUS_fPOrOZ@z!QmUjPyq&I>$`QWiN)nhXAYhmsoEM0B8@b4m;~Eic!)in*wKYevx4w)-mmC-@DK%W zCMj=Zov%lu$0#NL-r|?=O+~S?0NyC6fqzUWj$~xBsX*rhH7$UH>PQPz$+~y2HFPvy zD8GvMSyS+QZXv>^Ph&NzFJ8v6HH(!uiqF@fAS#%px7Ivh@h2hfxOJ%!H>&Fpl{$~@ z3be*Z_XX;CgaTBDI%g2qwKu}AXBu4Hq|t4zC}ROISQjyy0;0kLan$M|lG4oWow$3c zkxi+FqO&YGwm(9S!*S_pSkTgj<%!X~N;@9)pysNHr7zuR!D*i-l``4!8H!60LA$2S z+}S;OB8}Zs{zh#1qZ+UKc{$Yh?phPxnB?Oi^!4(~xL!h*0%Wi8!^Yg3qLxbFw6uVZ zbMtY$umLGsB>%t>vvoQ+vTJ<+e2uP1S{%sow)eGB0td~od26yFs%ks%(Owhsw@C{g zLBh#-S!j>gQ?P&6_UzxeIerWbV&xA{ixm4t&t|b4mSnvzCg*&}(x-PsiJq>4LpcR1 zk4s<4(wox)#Ex@|tYsr&4KRqUKgYu>v6#87?F}t(5nR~3rhIkb?=ZNzvh=(S*@#)4 z3SJP{mH5r7Iz+#cs9ccFesw7__Z>!ek7NlRv8PmD4|r&REIjSqr+0h{k9*SIPFy*0 z1|bV(qxNJeQhY+#zTQxJk;SAW+2)usXhACNh0T9Gh$Y!Amk@0zu#1& z)TBdCOI0;Xuka03p4TTwJKX+|Bb1Tq-Rn!F1hsYr0UALa&)J)g5~t^M@@uZBR1~q_ zst87|O-aP&G;g*5CPa_HnKH?e)J9Nq^gqp#Mw_5c3obxrUNg(D@(sm(u?P7TmDo8c z0w=pVkzZBqU;#4r)A zsRqj?1hZX05>~q5nYwTRi@m+1Ze`|GGAk&)a3ArJV>Gb@9vVXz8GhkYSTKf1VZPfa zJnS;#d+R9g4vIwJ+_@}x`WrFMH~|wQrz+D$wjgJV7-ks6{B5DkYm>b>=e#jIN?hd| zA?^>0XL;|4XcixeN?>t7Ol&WYP!7}%wI}B@Qq}VgIrS6}>~v_6IyZG;0vlEP%Tj0L zD=~TGTN_O1yem0RZ-uqkS%IzX-rpOB$6-jGpC}7R>%r}M6GV%}x(!N~Csanyc!LWp z<{m|O+AT6GY;9=)r(RPeNPive%T(>_KF{`LolVTH4@M$83>jt)jBe*^lmE2ol46?gyu N002ovPDHLkV1oDzbB6!` literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_monk/pl_scarf_long.json b/pixellab_src/pl_monk/pl_scarf_long.json new file mode 100644 index 0000000..93d8906 --- /dev/null +++ b/pixellab_src/pl_monk/pl_scarf_long.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a long crimson scarf wrapped around its neck, with its long end trailing out behind it to the right, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00850315202607049 + } +} diff --git a/pixellab_src/pl_monk/pl_scarf_long.png b/pixellab_src/pl_monk/pl_scarf_long.png new file mode 100644 index 0000000000000000000000000000000000000000..38b470c4258012d0860ce97eb2e18b3f6769235c GIT binary patch literal 1902 zcmV-!2a))RP)Ha6oQI@Lerzl}~dnmSH3 z%`}cqHjYv%+LSq|6`~Fwk`JQ7AmD}gK#1VMW1Dk#@3QX;p5rdV)c$66_TIbqp1tRs zd(QpseGjl;!GZ+~7A#n>V8Ma~3l=O`uwcQ0h5r$Rk$4RZp z7DPj(sUC9Q?!>uu^HB#`Q_!!gO<)%(&f$_}c2#U!!Roe%FqQ-f&E=I|?-+ds5C*qC zSEG~Nt5(g{j6jO=mB8=ZFtl3AJsze1iv`Spba4U)EG-oL>hTM>zE3d4$DAYFpvmRu?A3#~A*dAi_Y9Vl+|0)2j;+ zpOfvS)PbBNb{(8G4V!Fs?HTVEmzBlF(M8I$l_HAFpm*wJbnE*{qizx$gb=4XpB%ofw1k#LVR3t8DhA^!le0HEfOBe zz^U!KSSV1K8A*x+BZPQMR1(zHSGVBZ^s!idvmWzjCu7AYXOWqqaC}E?9ZEJX*M?lF zxP?CM1MPs2E9y>#vR8kw*2cam9i@oWw_$UbLVMI9$Civ8&~CE z;{+pg9x5CbIonXQY>waKzk3JZsB2;6+9oHykB{+7lFZv=phzY8Ro`tHQu$*!55uOC zC_PjoC>0+=2rv_>M?TtAgm1FZnFue=`WDLXEGzkz|q~KDNjbCiBay*=K#Kn=uVjW zKo~N{gyUORCzC_+xDmXR=U%pl$+Uv>;Nc{gsXWnE+Q+XQEoNTe9_C)>hR`OYGDZR& zkkZ*8(P~osU~>&4MtW~@c^ttK9iNYHZh>hAP?e_%a}Iwm;2%}Q1Bmu&c|_e}>6zXT z+;}08BhC@jzIK=hVsa&O7O--Is~cZ#UCtQYybWv7)!vD%l}@C_L}>l@zn~DFA)!uu zUxPz;%ybW|(5J5*CV^NRE#u$Xx>@~_yBCqWi&;7Sn`(A1g$3Zl|4+}lA!G4wBK{SV1yAwm<&3|NSK+-uDAzhVey!7bi3X7tVPKI`={k1 zr68aE`V*ZHhl!J7kd&K_0ndPPP@)SX;tXH6cQ7NcZP0+TLE(M{4F3jYl9c$Cx;$7L zJDw319{=>|x~{4WN%Q8SvF!Sgxq$EeM1Y7<5`umpg*rW$jI^bTW%4X}lo(+k@FTHl zc^Rx", + "description": "add a long teal tail wrapped in crimson bandage strips, starting at its lower back and curling up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007768456167644925 + } +} diff --git a/pixellab_src/pl_monk/pl_tail_wrapped.png b/pixellab_src/pl_monk/pl_tail_wrapped.png new file mode 100644 index 0000000000000000000000000000000000000000..812e2a3b9dd06ebdc6fc3318191dcf7642921adf GIT binary patch literal 1837 zcmV+|2h#Y7P)8l>0{u~u8_N787tP4rh&TYt1oT9YPCw3yf* zHEC;_G_f{>T0ao2txeU`ihzoq@@Wx}4-cw9ily9Lw|Qr8_IB@<;~?yTb)RHzW@l%1 z_IYRCdEa?&0RsjM7%*VKfB^#r3>YwAz<>b*1`HT@h#&-hNQf;HTEwTeZeTOX6A6Kn*COay=eY`|&xywa zwE`w5Mq}yT6EZR7?yqGDsE)VI*;6v;X8FKaft)=heya)zfrK_tzo_*2x~PE(Izzb< zv_Qm(FtzK1C?`*|=s!qEo@rp1hcUt+g9G+^y*T`87G@s&9rMg)M(~%nU(j6seAWqV z4kybycC28zQgH28t}4bD$SkV;4no@A5;QoS;=%SBO>=4*9#P+ecQ&-Lylzz{t~nfD zy3Lopl03De_N{L$Wdfw6^aaS9q(ttt_N+?dKN%bEwc_$8jl+_+Hfr`Wj~IUYC-S78a{kkT7!eEu!SKNHbP+_&dC^a;A6Au2w#?;g=I>J z>=ky~?jkfIOv5{LlP7aa!X@(7!eZ5Pi9A87cMHIT5eB^|Vf9O^5Rp1pMQY!?8FJbz z2=YDNj&kZpNqK4{!d=ZaR#y549DL^0^f8=x8wc3t}U0JN=Ia_0vYS`RObZGO^+}8p+LZh zL)vJ{-rRi^4PX&Bbu}R#bL3i^^$JUXh1vjc3m`c$8b@3k zBMFTxK$mMnZ90FECH3=%3T^VbABRaDvhVzfwYdwt?*7&1M0LGnF6-MnaVB!ASDV3) z!WQw{+4ETGr|y2a_Uk*^HeU+@bcH1OFSfjfot1Ui5IIG4_nX@tc>S?ytjq<_SW&HT zdi)__5#NhRLAZ+w`4eME032G5i`}ITYH*8SvtIXG0PCWXkQHRcBPIbC`|Yk(VD*ce z8M?zFk`3;;EtxT{&ogs#Sbp>8bBM`W$jU($Gx~aZ8F^A4vMPfM!7dzZuMvYIli1a> zq2pZY;LBwmg_z*9$DW6cRv$!js{c6 z`(8sUbC2n|>cj=q|9Y8~sV-`^Wd4YJ%k@7X3oIoL85>smeFRqe|Cd5TM?WUG+%=0o ze*8ItyL;q2H1mniEMP)-IU!D)A}oHoDXJ3f`$nuEvrJ)*CW`>5^#r!p3?{AO%0 zj=So(Hm5B3ybcI@wYGTcuS9iw?)c=y0jN*D1Tc$|LYl$p=IQD4ZQLH-TL>SJq)? zw}7q9R(4GSAWQH`>;%~t;Gni9a}YC)Tonj3%N$(S-NBBbpA-e?4oL+_-5IHd48N=a(*uEHne%1_Pi~Hn!LUrNeCFd0Ez-fr6sa}Xdu255-_IVDXh`?bk2YQ bJUsXh5~EO`k0vi900000NkvXXu0mjfhmLe} literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_monk/pl_topknot.json b/pixellab_src/pl_monk/pl_topknot.json new file mode 100644 index 0000000..a3f56f4 --- /dev/null +++ b/pixellab_src/pl_monk/pl_topknot.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small teal topknot of hair on top of its head, tied with a crimson band, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011284227742089165 + } +} diff --git a/pixellab_src/pl_monk/pl_topknot.png b/pixellab_src/pl_monk/pl_topknot.png new file mode 100644 index 0000000000000000000000000000000000000000..7820ef5cbe1703193e7d7df1f579fd7a057a2a3f GIT binary patch literal 1738 zcmV;*1~vJKP)3xJk`fe41Vzw>mRgD})U_>?Wt(odPZnDH*xfPbPVel4<&CvPA#Z350VUr=*h=Nu^i z;#+v#1BQ-CyjA4=A&4UGvy8_h8`fTDb&PlcNb+MJzNXH+|LnK^X@%_dBJzRzG53XH zLxmv1VAR_#!f~o0a1bU_z-llOf^n~s=0G4l^6r6M;WiNyp*M<>qzT7#I>M5I5O8_QbW;(wNK|kCI-s1}5=8#so1gmSxiuTJpjl6lWU}1&jD1(S2T!jgOHP4e z)hRRTzY-K9#|LUh`256CnB$^UgUHq1ji|V2mZtu-GK@rM2qH%VB@`7FAwD}>B}HZ1 zvs18RdMb-w9Ij7gydK5WjslS>I-PO*LP9cSg-o|j{B3PS*}7$Fi>f+1_D@sp44eMB!s2%= zk?6GA(R%hga*7^dt3_+_I(dX>aFV?Katji@lhj;iT@4G$E9nsP2_SP)GD?RHA0kc~ zpvP)w&$jXk76SX%4gz$8vKcZ0OJXeEJKcci5|mS%<12eR)}+J*khWD@{fr*{JwgHuK`6t;9a8>WBRK2o z?i2w?a(2;jxLP~e6W`C4{DmxTJbVnvb7r%&$t>aDZWr3?>)9tVBesC3XXpOraePKH zBhO7*A|4eV9Y8)dEs>Gu7N8Lj^y^x2i@7iLq5kkmMxLI@5h{%yg^3GiF!OfSvxR7D zup?>e1lVhvFne`@+5_1Didn7SDiHPd2_Aa?Gf3@SY6;DJ#-f=xckDD)#!q4dJwtBx zO^^;hGI;obXpS7M&+z<53Y~EzZ$66~QX_C6=+d+-A_A`tmm_aJwysjn1@09#0+L=G zx79QvA=iQir}EwJ=)fSxZdPuI=?6}+xLhy+&R&!cdXQ`KEk+Vhuq$nZ3BWB>?cOKP zH5W7D!5=<w>SuTY4rNz8=H zJA_ha19qh5psc^2rAvlafIobzWyBjo5;KCjZEftSn=@0Oee0(6EYf3Z9+DVEJFca~o30+cdcSt%XO4)nVe z_35mu8L8J{pXJ91PJLo2y3V&k_IQ}h&z&b!MtStR90|%tUQv~I>UCJSetB@65&M&r z#N6fd(^b literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_owl/base.json b/pixellab_src/pl_owl/base.json new file mode 100644 index 0000000..53d93e5 --- /dev/null +++ b/pixellab_src/pl_owl/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "pear-shaped owl-like bird sitting upright, enormous round staring eyes ringed in crimson, two long ear tufts that curl into spirals at the tips, tiny hooked beak, three small crimson crescent moon marks on its chest, folded wings wrapped around its sides like a cloak, short stubby talons, no tail, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south", + "seed": 411 + }, + "usage": { + "type": "usd", + "usd": 0.006684374809265137 + } +} diff --git a/pixellab_src/pl_owl/base.png b/pixellab_src/pl_owl/base.png new file mode 100644 index 0000000000000000000000000000000000000000..6591b296e56066e1f121db569ec4faabab36d811 GIT binary patch literal 1908 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_owl/pl_crown_bluefire.json b/pixellab_src/pl_owl/pl_crown_bluefire.json new file mode 100644 index 0000000..41a9bf9 --- /dev/null +++ b/pixellab_src/pl_owl/pl_crown_bluefire.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small cluster of bright blue flames burning on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008386059257719252 + } +} diff --git a/pixellab_src/pl_owl/pl_crown_bluefire.png b/pixellab_src/pl_owl/pl_crown_bluefire.png new file mode 100644 index 0000000000000000000000000000000000000000..ec473b3a615294794d0dcc705be7db398c075564 GIT binary patch literal 1869 zcmV-T2eSByP)m?K9v7r>U+aP2r_)roulpZezdzG6rrt>P0P^quo)915_tWshiPY~<$djH(L%ltw^2shi z)wA6c)C+>4lShwo^$LnF)iBL*j!q5tAe%{@lX4QSe)Eh84X)C5r&VmgE<5fg>D$_3Dm6 z6xrB;UZO3Tbo=xWd0T?tM-MAYCsTYvX{bMIPDYtwpiTO#S z-W2S_#%~X^&cVkr*r9NQRZdVX(GnQ@aD=PX%l81Df!I?Q$<^FTj_x6L1PJBDkKUoe6Spxy15NVJLC4ZFC=t(u6 z)C@PB>FA+V9RPRzpuym*tmo!TnK66Fn=Q z62kixm%*~t!mG~Zwk7$6_>792T~&O=GwLA&*_$stBYvO^L8@EVXLTwZ4g`@036L=w z@2^;|IYD&?IY5$^azRcA6LFQo2y}bT?#-m6y+D5di0x|iXO#5HY<+geu<=jRdUNca z23;2K;r%Q%E^IbBE!HP^Y?DUJ2vs#7uAapifj7lnWy1kA97<&#a6dvUU0I|}Xa&VQ zW--=7=Kx>v^L))aQY#kj+Y!_jItLgh%xItdNE+HWZ=P6KwVj=zJE5kO3%&>}S5PeS z8tOz#&H^D$Y!l*>jX{&7K2aLJ7E{InxfPY{gatL*jgiv}A`kL;Ivwy%+oinT0?aQ4^hd6wUqO06}eL$AeYB5n+GPnT6Y#Ht7}L!1nL!q@*3)N z87zlu>po|FbpE{6=2AGOTizp(IQZpZz78sW+WgLzQNkxzZ=lc8vuS;26F)QgfOGb~ zxtp(rC2M$DjI`Nmn-#JioEFPmAHV_!X>xq#jDUpTNCP+8yLcS{&pdFIBZs|RK`o=!q<3JC*i!@O^x+?3H8F|;=19~#Jeg&YV5ky z!~2UMFW-klt+d-o7Q;whJ}+KhN~i1ha!=4xUz{IY>>TyJ;!w1qLPP_}u{7MCNOWwp z-e`1y;OLt)_yY$TK!2N8p9`ixnm&dmZ8-P`d|^MkQ>|1sktktI!wGT%G=-w@901u+ zSal$x+e2Z7tKCcLjo{TGh~2t+S>FvZE}$goP{SNodM7k@M5+e}WAbCfP{OoPt3xD5 z9~}K6s1A981lnW*HN8nYYIF4UQ&bNDSG#7Y5%>aNH&~LBWM(f3MVxGrX@b(0W#8I6438U zO`@pl0e8}pnDAg`DjTWYr*QPmHb=^rFQfUqP!QS##v4kZsK4-c7T z84>;rIt+hkaJO|~M|0HS$YdZR51oNyx2RhS2(wD7$cKCJrdW6wVrsnE`Jk~rlH{#c zI&ON3tuJ6&ay(zL17zj|5SOw*iLZ^HagDaKz==Y16uu~G-C3f(V7a*P+|zuII", + "description": "add a small thin gold halo ring floating high above its head, not touching the head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009244155989752876 + } +} diff --git a/pixellab_src/pl_owl/pl_owl_halo.png b/pixellab_src/pl_owl/pl_owl_halo.png new file mode 100644 index 0000000000000000000000000000000000000000..caba2b50b1b82dc636c79533cdaf9e80a69a9c4f GIT binary patch literal 1547 zcmV+m2K4!fP)f0x4}D0D)St!&ZCF~#4>klzOhc^M9r@1gxtV+SZn9zLZf@-TV3@fx zbI(2JJ2U6bow-B-0t5&UAV7cs0RjXFa0?<-h=)vnyH7dmY8oHU=(jNOlT|Le`+kaF zI7i#|d|eP7jpNGTlPWRu5hphS)&lO4`yq=q6QtIQT1!< zde+?NE0)36Cni0c3L)|kGIVt!a>c^c-`H@#%Qz6C0wUMBT*$x|GAK)VDBm;LAyW$O zJbIj>kKV->^YJOpf9ZPL#B*47G8Uz>>N~h%@!|wsdjFk#<>swehVeJXCb%LI4O4ln zj){oOB=b?$k_}l!i^)`FZIr_CMI$6c$PkwM&r@-_oT#awc_JoZaVAAdzQ%*dEtkiw z#+%#kHK8_z^Sqyx6vak{PID@{{udRG&G1lNt_~CWpl?~UblvZA@jRX(@&R0nTwjcU zk)hMn(s9661`*3`_pukDYE|Xx(0t@ACQm%?Cf^SuAVZ<0SRI$enCQ9RIX1wU zrrvHQ0&N(=l1~0Q%6ZzOseF5t&GV26*?=zJ7X%2PR7v^`AlE?g$T&|4cvGfCdNeS$ zZQaT_>LlVL$l*R6kZsCvV+3ruJZ^c!%`43f<0%-2*u}HWwH^=!S`(9##V7wkz zbXoed^q{z*ufZ0Vxry?w_QPC0Kip?^mUfBaAOTYYYX+GDGVB4!!2Q{tk*^IQG6P#+ za~eNP^|YfrHOzmUpQCn~WFv$Gc)jF@30iKbvy7iEZ?yV4Nswn0dMUpal%!qlhdH4< zO!ex0PU>X`;xUsbx&CVg=q?!R-^J2fMQ z<#8-nqNR+6aM;}l`GCr$uNMdx>`Au>lms>jXqfBH81V1G-JG|cJ*AradNSgJ9s~4% z>G$AAq9}saj&~g-y!Qep1U2ag0?=1|cTB0zU$&8ezRtJBrXgVG(c^3wqPylfE5UFi zxlRtgVT}^KUgUvH?M>k8AZX#xbDi|r#{+cm)&11e*3EkZZs;$LQFzY>lpI{CYdw3) z_BjkWkVo40gDHfJOHA((2>QP~W0jA5_-01u3s1jD1N9Hl{>iZn<4?Ta!#POIb7!fr z1hi<&Tv_S@ZleGmmc2vWc)cCiR0NO)84VyI+cXd(vk|0kifoz@kf^EPi_uR{*hm1f z5s}UF`q!b~2~hk^->_m}E zhHkuELwS&(pB?C4c0xwTLT!{1@k*khOu2p}K(Y7T8q%H@qs73rrb6=XCC}IDVUxmg z@e<~AHqW~SKPOCVh1>KYkAWBvo?o=r%_OY@6A6rZo10=qf6nF^ull-Ho!b2gd) zh4;Q}XbMmk@9UeSAVIdlR|EP8VYG1`k7Am3KQI)ay6W_(J?8X50D#ZmWuN zjvXL35@5LW1rGfa=WFDCI}6Me>W}C5s{Z1b8rZvAU2T7Y%cyg1mLj1|Z+G4X002ovPDHLkV1h?E@b~}# literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_owl/pl_shroud_ghostfire.json b/pixellab_src/pl_owl/pl_shroud_ghostfire.json new file mode 100644 index 0000000..e27e579 --- /dev/null +++ b/pixellab_src/pl_owl/pl_shroud_ghostfire.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add glowing purple ghostly flames rising from behind its shoulders, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007713085333506267 + } +} diff --git a/pixellab_src/pl_owl/pl_shroud_ghostfire.png b/pixellab_src/pl_owl/pl_shroud_ghostfire.png new file mode 100644 index 0000000000000000000000000000000000000000..425ea29b34b7e3ef2816bc6eb5eebdc87f18429f GIT binary patch literal 2554 zcmV# zaHu~VXekKB4~nVnq!XYm6i27EfTcjx!SGceHZdVFfz20eZs$3>=W_4OZoYQ28-!=( z&OLk2=li_xdCxiTS>P`2;x59CVpo}lI~~QYGHoyrq2B34sFCV;S9PJnce=-gA&8FH zv``U2kc3)W17?q!AV|0)r+`F?Cm|wMpoXK9-Uya4IyE9zpoVk4`-9WtL?oext0R9_ zu)BRjrzte(EntPKLgO;$Z{Cj`pM-D!Bu%7` zUp$X()%l9Cp4=l0B-DXyoI-GU3*_vw3cY!egc=UvrIsb)5rf2$!@8|c!V-qWVxVCk z=nke$8ZF*qh9qHK>PLNcX7m*#(>OhD3kz^sG)Rqevm+lXxEwx{de}tJjJacU60CWl zf)c8R5|vR}o94z1v}2f(fLO$%IAw>h06Et`c>N1g9XT~>j&`8x(|VDvx>%#<=jUgN z_tIUtXhD-myM6Dg+U1apT?v)&>CZob*z9kJ-_7T%#rvx@`w)Y8y!^egZXF&8AS4My z#)J{N@bS+T;6{cGF^R*)H}}yixb))hLPCNPYy+`K(8iZMErfTU_6qKa1>(lK1QEk) z;?TT#KeiSB0jb%J9!ZcykN_!s)Ql0LEt}gn=(HGU=iK;wvhyA{X~u>q zodgb^+N5tFChzzaPHbE+(ia=(GJ&Z}mWvgHzC-#ISzo55bxkbDH#xni?{^R2Nk&55y<+BTlOkSKMWNq1iQ>)iuYKfN+3U;)-RHWzR z{}dlo?8buyKkPF9&;9xRE_(r5Kwpl}N?(Kx)VPs^_NZ1IJ@6K$=NIb2AAk!FCV4k8 zAJ;V^57mMQNrGpDA}qt>O4fz1OUl&C8cE<(BhK&tCoXA~K?&b43kVdXxKEj-$?fXB zxpRaSNa4S`cmjsJ^0dh7+_DFaZ+wQNx=Nh{5+J=jg}=FK5!BU7(7x(bRK9x#(><32 z37lqP+94i!DZj+lnj9sZ!4n-komrziJn5CstI=o;59R$#b0Ahb0GHOfc%If-UCy%l zb92=qtu853q^Fjw*Rr;35O0|$%dsBoAG4)vHaJAv|5|okE1hvsvmTB(p8kZ+RP+<_ znA%+#nmskIx(d+g>D0g5U)hJDIU~)5qZK_*mSsKGADs{<94a+0cZ#$FYly8s(IY#8 zfHlhV!rzwY=5K{+^Ut+BK=r1qb;~^H;sH+Ixggw-is((CH6#Q$Jx&qO^oJogqR}+j zC6+2Wx~o%4&{D$}}n9-{aD6|>*lftIU{_;A5;@ep)?60FDiY-d(pF`^Ne;O`e_ zh<8uZGUzGrOzPntFEdKZ%1~6a5ZNd~5|^|oCD1lKA@bV(eMtx}_XBUdvD)Q_;Yaql@IXwfrN_V0NBTarl#v7Ziwe?#D zdtVCEyvEqQvHVkI4PpT6;1xc3l=*~LR9J|&x4$b$$eOc3#0F$U$B5lS#|h1M?n4)X z&98_TrJJegMa`91{r=Pj33TsV)Uwx?s6Z zf)(4>{#v|A;_zFc!Y+tORl`p}R$+p$0tsWdiwC5RsUvg}xYHxz{I#=X1D38{*G2P^ zFd1L8!Wv%tp~l0{Y^;C%QM2M zgYP39_jf60+!S4Cufw*QzFnZ$`%>7*F3sO+0StGgZ`o-}RtggMw)w2t zUElLkZHrc5J6kKlYCIsZ{>W=1MIZDv*82qO_y%kWTxhQo*Ia?n`T)aLx3 zye2Hcxb+P*zokXAq{YB<&JC1%+iAY(KbA;*cJs37cDc7u`%;)4kmZJUZ^YK<1gV+y zS=ne)+eLUQ5R5`oP=Ala&88MpUAE1DsbACY=iQ;&*9z>2e{JLDgO70_wUYv0d`Jji z5J2-r$h!a|NGzkvTxun*{_k49Oh2eqU|V&*;`Ere#MF!9-F?^YjD?J z5ozn{AceMB`eZwt2DAbR&j0>6zL1>;t9%!k)JXhOxu(HMbll^ew>CITX9YfiV9bv{ z>9rOkiSp8f{Trh~VI^Q|O^(up7F1Mt_xR2;HGZ`(!{i=x=)xp7YGQ*V%G7H(^x{78 zNbNI^Wh595lR;AL(@Jqu%%zx9F<7XFao#YTZH4cu0lmoTSeTiptbMc#(cAA7WlEOTev4U;VqUdiz z^^XxH*ajG=WEkw~_!!;XTaC~f=TARtj0rOAts7F(-H z@ZJdDTS(yv-aG~SpMa1~0nH~oak~j0vVVxQ;kxkhMubXu2`-}^bcFoULkUqknpI#q zc=_EZjPZLQSj&g<4_yP&s0|LyY6V6x>SM&x>u3FvK*5b=S&qN?9w-t98rtQ@=4-o$ zj?>", + "description": "add a wispy tail of glowing purple ghostly flame curling out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008242531723446316 + } +} diff --git a/pixellab_src/pl_owl/pl_tail_ghostfire.png b/pixellab_src/pl_owl/pl_tail_ghostfire.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b67a1c851c04844f27e46f81b5bde130a09078 GIT binary patch literal 2050 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_pebble/base_raw.png b/pixellab_src/pl_pebble/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..7f13081bb40f999b24850c452afe20f2736e463a GIT binary patch literal 1681 zcmV;C25$L@P)uSO*ExIfd@svfIw6dS}@h91Orq} zOhcgsLySdZ;saC!!5F;L=mVORiv)s!YTE^bcK00f&F(il=eBze6rcDfC%b2M=9}O7 z=0BG`z#ZLQi9w2E{a^iw!GxT2XfK3m+AA3bIxA`ht?$UK!V)BFM)_3F%A%u9g2OV= zIjdHWA#OLY0-ey_jA0|PG2I7J*Yt{M^7Gi?NZ!fT9n# z%8Rnm)%p`ow)~)m_hvNtKnqUHsk1>FV@m@;rvsJ^8%IomZim=F3=`_gDc6N#xz}OUh)1`JOVJDcj8pwqfVuCKOjqM90Gk zVA7<6EfSXEur%mUz$!%Cvas~!eTl;4l%NdLq>-J`i61F+#nPrj53Itp+asY?AhhYEym8nWvOYW4{+SCt5@&{AaAq!0E*lnvr z-1ZQb_h>j_sSmaU^-T;xEFr^j<=$OeZIgh46FAv} z)c)zplpRFU0=gwU#GoXy8jT*q(uhjfwXdOf%Nw?4t}iy=hWfAU?h5uo^N<)!HPvm5c#QCW6n_ttR0BneGVYedjE{881Bo^2jlFI9Nd z(=DLGl9C4_neAkjh3{!CO8~u_8?_hQ9A)8D*P?lQX9ewNr)# z9QiwyRgS}ASlyBXr}|uRT);H^I;^hxb?b5N{CPCD?o^o}a6PjOO_?Owv!2Q*Y2mZA zC@m>Q{hP1DONMY z6W%w&S3Yh=+)6aCNo&NSj!E_FQx+mX{bH?KvD(&#MWf~?;&Ars%5e7lrM7#{GR@dc zTi(L7DUaB)OrkOptuPA2vZMzoOVN)$z^w8o@J`dawsr^iw`0@WjjA2nfs+-;5^Qwp z&^*iapDtd)!$hSc*ld{sOT6cMblRKP?(f4mYHRLQigZqKg4rL6z3m7$4-kTTC%Fm)^)wyT9-iA$bv+(NE z#pO|^o`|280y;a=GlN)6!qUWC9{mN&Pk$k=761MwHzD3?o$dQR|5}xi6?meG)QQjK z0KfB<@-ht#{iDs9U8&9(PSFGDX8}L|=J6@e(U$C|XV=TSnSc|}Mg+z^MKCXPc}_&u zjX(ZD_Cp0}Lcy~R!Ac9!oO$jASY}+Gn4WBz-n6I*==2v2Tck7}H=|frj|AhmvZDa7 zL4Xys5y?hQ&5IJ6J!U2UWI8jR4%DK@sO z!o2Qu5&FS1uyBk7%K;gRB{VQCT{rq;xW4aw+mTcrRFdN5$@wrkC~r*ZR)kx&#ON)J z@}~ddRm3k{Pxx=|d%mYRFA*qZ-ncIZg(aggaJ?TFR=pCKC-fWm=+A%2cVwhV9OKUe^S<7;Hf3j*B^2)|Ihh6ww zV2k9A$x}NY#iHyMG&TeV4!ug~yOrFs?f(eU?wp{y6hr&Z=-BoLb(OGz-((zXkT~uL bw@d#49Zxl%()C)n00000NkvXXu0mjfYe_&P literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_pebble/pl_crystal_cluster.json b/pixellab_src/pl_pebble/pl_crystal_cluster.json new file mode 100644 index 0000000..30bcfee --- /dev/null +++ b/pixellab_src/pl_pebble/pl_crystal_cluster.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two clusters of gold crystals jutting out diagonally from behind its back on the left and right sides, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007932556125852797 + } +} diff --git a/pixellab_src/pl_pebble/pl_crystal_cluster.png b/pixellab_src/pl_pebble/pl_crystal_cluster.png new file mode 100644 index 0000000000000000000000000000000000000000..afc76b2fd8191e7d6a942493c730877df68ca232 GIT binary patch literal 2097 zcmV-12+sG3P)`geIMC60MsTyPCO5Xtzv ziHIHLie{D0&d;gq%1dSo{#$?@YM^ckvkNac&5nI8JF}M`Vv`9d*LIMaIhU~DJs^V0 zNh?Er5f64nyDCJ8X2IS990Hp-Zr1yIM}UsgUs7e!G4Xf%iIHr5*_OK)70mm9Og<90 z?B3Yf)WqJe*4?3}$F>L&+z&kxa1vENa zPu^^7tO5Xv??{tcI%g1DX!68Hu@!*+lb$7_3gQU-`V(1^ekyk?nL@h9ObpCfTZag2 z2wCH5eMq$0YSI*n49pma0B{k`)F#oBzGvuQ(GQgBX{V{1n#F+OWgEzo*2kK(39743 zF#)o+mQelci^O&08s3vke=VI(eRi2eAy9eDtJ|t}xw&my)jg^32o~icw0-k673|cu zfb8)|h;!6Vev>@2-lg=cbV?7-13{AWT8XHYTDH6C&Lymy6ykl!PDhfUYL=iRl^Gr# z(N1aeLdi#q1s!LJx;mKJx=fw}i{m*N{bk0A>+uryo#a z=>g0HU`99~f)#l_zgZL*yzclDAw`}XRpSM| zc-yXZmXQEN8x34UE6=AbUP>*+tBFUZu|KiHPqAr>IC|oNh}Mx2r7r(~y?0$~u@oU1 zA&kW3IXHQAiV4H|i?x{@K^u8B2qtMqa)63+K2CjH0C?XuG>v_ko|QpOCw`;0JsXI+ zI-(ZB4sihFy%Qd!oAu31001KJWSH1TJD&uP#EN5QfihNCaTw7eK*oUaLx{-748h)9 z;mH;RI3YpIB0tE)!;uGCSA4|Yjd=hVYc_30=F1t4xC+|DU;*q#ZBT|q*l`8h{v-Bhg%P$%7y_f@Y z8Ntb$*cOpf-4p|$JQ5*{k)r^ZJfk4^X(p+vN{XWBh#4coC=egR=lQOt*3t$cd{@s~ z%h4Z3?i|q0=baaB87vAl0z?384Vkd~;#lNcs2gJ&QIL-*0+RFRv3JF#8Ooyo8F^*# z8hRopTZ#e=xF%<9wM*5_;V<1nxf8}w$p+nirpmHXw*UD!dGE&xceDe!(L4&!lyp~u z4w~}vOsd##K2|H4p{U=}eZH5;V=m7t3v}b0ARo)m+st+F2=^ivfaik7pMk0<|+VyJfc9} z65LoTA`X@F@xKhgIkRG@i+U$F}3IM9Z|2;p_@o~fv b2id|uOHT*iR`r$d00000NkvXXu0mjfL2>V0 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_pebble/pl_crystals_head.json b/pixellab_src/pl_pebble/pl_crystals_head.json new file mode 100644 index 0000000..d7054ae --- /dev/null +++ b/pixellab_src/pl_pebble/pl_crystals_head.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small cluster of gold crystal spikes growing from the top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007605802588992649 + } +} diff --git a/pixellab_src/pl_pebble/pl_crystals_head.png b/pixellab_src/pl_pebble/pl_crystals_head.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd0f0389994e65bef2874e17679483cbcfe3965 GIT binary patch literal 1764 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_seal/pl_horn_ice.json b/pixellab_src/pl_seal/pl_horn_ice.json new file mode 100644 index 0000000..e7eef5f --- /dev/null +++ b/pixellab_src/pl_seal/pl_horn_ice.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a single pale icy blue ice crystal horn on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.010622908380296496 + } +} diff --git a/pixellab_src/pl_seal/pl_horn_ice.png b/pixellab_src/pl_seal/pl_horn_ice.png new file mode 100644 index 0000000000000000000000000000000000000000..01ab6040d6cac0df0db4c61e60f057d6b0afd964 GIT binary patch literal 1590 zcmV-62Fdw}P)AGpj1;!Uzn;CL>{)#6R6m$105PfhDY2UR5Y&qM=@)&>uVC9H#_$#8u z?MsgKcGRE+{)&hJj-X-NQdPTMK8X!7Ykfce^MI)^!QT;m(fh^c9q?B~EgM%(egpb7 z=+B54;E2AwnLiE#gH{dmi7zqQ=&4vKf^au_fUtgis4Rq11eX^e>BmC|TfeE_H%g*L z?Rqtcgo#MWLd8eNkg#wD6T!S<4ZFr*43_Q&0VL{OCEN?R@kEDdFiS~<_M0tCgdxjc zWY;5r1(3M$WGEj7MEszUvhg#YpNIITX31sqGMCAD?hOd^NwBL3ly7cyj(>kbP_Zp( zRL%}GShGNB-2BPxM;hxK>UpBTkYr5-UAw}S)l#D zF(?R_f5^>fPUX>4%=o91voLGo1f*MELM3)!(7pGdKQO4-*w5uPPUG)Tq|X4 z+JfkU_vJbpk5>Yg*+{P|m9+K(QO(At#7@EGnUAu3*bmi6bKGLb#Gk5|i_<|UMT!^` z>1KSj?F>sd%#A}Jd4NQ-zj4|eWW2BttFMP)>l2HxE-9B4W*>eI865)hi%wvF*eIMF zdmkbzj-WdFLAOT8_>|h4sCd{n#zRH-lBgF;W=FA;sPTzzh4p8P-Oi&HXJd5Avj`3y zBLCJ>d6A{1HD&nvOf$=;*OjXIjM@%?k^~E^UsiN8xcpPYwK*3-YctVOdx5?CEtWaRK!?wUfT0i9c6+d8b7PtDuf38AA^tHuu;3w}P7g^-{^8{8A*^*cA7b28hx>LV{vLS7P?n##&u zdjOe05kTtFh7__W8I$8Cd92KZ;7rfngiE)bd0HKE5n3Csp|$u^HJ-0m1P$7hLK2^W zVaQ-im^RL9rE|aA`xd~|b z>O(D_Q~U1%F&>O3R?dsTUdsrNJx}nVK^{Q!0SyH$Lu8_gZLtjz?|qpLp)+;m*-G$A zgKWIF`G7=V6QTl&9IF{U7NIf}?&@Z|7nD8ExmHoaT+Lb4R}gL`+LpVOVG=gfS5ihXvzO z+FDrvGJw3GC-&#=VetT(+-O{1J@^g67ALvY;U7@6vP0+O!5`xR-jKs(xC1;5oyg_RpvvU~-?OoQefyhe obKF){1Ofho6oAjHqk{nFKU;@n<0K!LS^xk507*qoM6N<$f__>6F#rGn literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_seal/pl_icicles_back.json b/pixellab_src/pl_seal/pl_icicles_back.json new file mode 100644 index 0000000..7f3cc41 --- /dev/null +++ b/pixellab_src/pl_seal/pl_icicles_back.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small fan of pale icy blue icicles sticking out from its back on the right side, behind its shoulders, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008393628385331895 + } +} diff --git a/pixellab_src/pl_seal/pl_icicles_back.png b/pixellab_src/pl_seal/pl_icicles_back.png new file mode 100644 index 0000000000000000000000000000000000000000..5a853eb9d414c0d7d02fb47d5c24fdd879e9c995 GIT binary patch literal 1800 zcmV+j2lx1iP);(l$4KPhmOG5LJp_ZbfrD-YVYse`}b4o|e90!BR#~3J@q9f^yW;W_f zGIh=FPo;|z&?|kRm zvu6QJOiWBnOiWBnOiWBnOiWBnOiWBnOiWBn{vQYr=sHRRxQB;wafSX2|9y|!gIQ_$ zC|xk;LEVd61aAt@mao>SOv*as(lB$E6?e{E#*Iy@;UigaxAu-ukM{_Vf&mm7@r2&J z{#CrnFDct0HEztxm0Q2m8bQgFD|x#pv5DdLEO=TXbUyoy8 zT#QSDm!`kY63u&RM~MO<(QHU0H$u~K(^-GBkNoNOI+~;#2?jzD{m$K5SbQYFL*ysp zTw9ieH{Xp%R73<~=S@Zymcaj+7H&r#UBa|g&M`sJ>lG3V0*RE6^gc-Hn8I~1(GsyfzaNFjgG>2jbLve8rfOL=R2Ud=O9)N%CI7~ri!KT%p4S5 zu(3pFjnuMDON4#1j{mln6tO&^e|MMu)zRO6sK~GjxE*4_y$tvUw=;@*?KJyQj z(-Yx(Njbl+BfoD$2rvePMlrLGeZGc<52ng2hS)P@j zh24dAfw9F|Y}7aG$i>8wc8}PYdK7D-qgeU-N*hA`8|m@}5e7lx=WWY&5nNoD#>*#* zZ`$jAOhk5c1kSCZC~yx|{4H5V;>$hlZExM?;%W42s_!swAj6P&y@)!`=Z~Y9kG5ga z8!xb&n3uQ=8#itSM7x(#eTUEhew^61bPCRno5<4D6-j*LmkxZ9w@FJs&KE+qQ>6%Q zAA*=(;p{inlXvJr&~dKz5u_w9{~VjsGqG~cXk_Pp8`YkTJ{dsG z$q>T_cEzg2$q-`WP<8waTLHEW>x-GnT|NaS{gA;gsGSA`dBghA{dMV(bQr+pqVEij zV&Z4Ve+Z%1tLQYXA1hZ@EJKsP0L=X?52O1>^1K$cxP0XjS~||B1<-W>i2yT(R=kQj z;tt`u5e(=<^#r~$W8#PQ;|&Vtf5LL|5-sE`Ia?q4WN2~7Ck{w zfIgg8Vv67J@d)n`;kL1A2$jzB7vge_y=+^2&j`1#+ED%TR<{OlhGK%A_XGjPqxcPd z3zB~T+I4N`u~Bi+WqV^;hHtx8yuRw>8O+MaLPBYQM+2NLDZ~B`Mro@aN(}HwU}R@h z94$nVwUF2O1qSk$9TiKPC(yW~8UcW+6D3T1%4-9FO$8qNUo>S97EP&CU0)Xxyg=lT zNE~a~6gRU@)Tvj+I}3M5Qb=bcxCwOR6>1=)h0vHL!3}FeWN=2^_x)~pM|e56O2S`H zHurckc>pnE-Bv6g{1W2R53;G?9A}KwAizrom@QYc=e;vuA2@-ves$~Rn!6BveYg>5 zk1#In0G9Uejhovycy+^6^j632#1j(+bi}G4e~6k`Q2lo)FRN37Jb>Z>O$DPiKfJyp z)O!6|KKdM4xR*Q1Jv#(p%vJkS;Pxq7op_)%3AbA&4?gzxH1?BH=vQk&$tbT7VK5bW1@7ISUWyzqMnvqe?(9*i<;u7FS?<^s z=FkoieKSyZjT(FmNZE1NRkV{gP#ekD*WOGNxp-%)ua#j|*LL)+fY;qTezD;hz(=yU z8bLGf8B`V(ZlKy4$2!=9@al>RK-2HFJyw>;%N*$59hP7W3XM?t-h6h$E8-F`GbITr zJL~@-((KSa$lW`6xHAhtqfWWQ2xJsmWj3WP^s%q7x*Mr^^x|~iyTcOn!K|-F{|l3* zf?kI7KrcZo-?@?Hb^4PmEN(c*j)%4(5)d;HV)JHb)H)baPyjB?n89zD1dtch$CjmE zu>AnqPo&3T>Gq!xJR;hDV;1|^XuckMMTZC-_;(3s;%{HDp)5VyW%Ow()JKa*yBpui zJC8=~gAw-e`|x`@gs%(A59cFz?n0I{LfxhNMtA`K`0$^Cl)I@DJhCs#Z99HLVAlxt qMaj+Qb6p5%I4F", + "description": "add one small gold spiral seashell stuck to the middle of its back on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.010229756938086615 + } +} diff --git a/pixellab_src/pl_seal/pl_seal_shell.png b/pixellab_src/pl_seal/pl_seal_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..7cb7eb32b1441152143f1a6a719febdb4ed055cd GIT binary patch literal 1604 zcmV-K2D|x*P)B=4oBHgr_hxxE*trL62$)++Qoc>=9k4NP-9 z^BayeQ1Nr;e}l;p5lGKYfdRSj3h_mMpq8?-hT2A}_!l(NPXJo3w;(t)7{Mib`8*p> z*8@TENNcTO;H17jIvu zZsz3i7)(8YO*mBnZS-WMEu4ujI!9uQUXQhjTWMnU(a*867bvQ#$38zD>Vl&Xa^WP- z1iUS(got1Iml1Ek4B!X3h{CW7p^6W_K_3cjm3F>7T-5=uo^772-5g^R;%~?-|4m0wDG3UZiHc3vI|s^fVXXMxzOb%1p8u zK`lq6!(*dx|I!s0>x|Y2iv=3rzI%Nl+$S=C4=*~rfft{@_!HU#mamzJY5zPV$*dek zP(ub{rbnZ3ln?G1t~gA$7j94CmvfN3!n#Y`nRgZ+CX&3Ja=a>}HUQlc6UN4d0mR9c&3}Z`!lcCsLH=IYUEF}BDbA171NKHJ!DfIpz10vLU7=RW*R1~f25)f83$XLL1lpNb*}_#r{g1nH*z zwr&qjyd3XJk@7gq2JiWfZ+#A?_nFK2W8NHrxp(jM5l`@meI1*%iBve5{fXax-y!A2 zsR~l!rAA%VMLx(0b_Nlz@(}lw_R{0jCBnB3(Nn)|e?Yg!p{0939;vp;DoD)z+6FrI zg%Cps=K>O5F>^c~TyAnG-nI)A-w*-x;)EQZxg+#|y%jDfH&B;|=7e)b;M~G813WaE zKH}}Mn9W!n9Y+0Lo?7~lo-^Q!6ea>!>f=OlLh;Y5%hD-W_ictU9XUf?K^iv< zn0~(!vsk*V*V-BlcBE$^tuTl03C{32U5Va^ls@sKF0DAi>X^+K78!<-Gh%>wQ)wLe z&8`ExUi$J>4cDM8z|HLhTi2Ca=r~diU;PZx${_f9EQ=22WebwEn0x^u zJZx=8_bu_qP+|ZwmQ(Va3pjT4DjI()g>PymUH^p;gOC+v*tiH9HWzM|<;yYShJSo` zq4nC)(9wM`iMs8-R@1RBhY=VI9N0nl&I$?`", + "description": "add a short teal tail ending in a pale icy blue ice shard, sticking out on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00912098413043552 + } +} diff --git a/pixellab_src/pl_seal/pl_tail_ice_shard.png b/pixellab_src/pl_seal/pl_tail_ice_shard.png new file mode 100644 index 0000000000000000000000000000000000000000..bca673e968865b9e1c11e5ee93bb7d8521cecdfe GIT binary patch literal 1662 zcmV-^27&pBP)Nkln+Q`ok>Aq@0@-mTMA~X^D}UOk{|u^Nk_XmP@mR zrM9Mgr6?2ZsT6+%eSc0n=e>Km?=R2Cy$_xDv)y;jz4x4R&-Zu! z+}}C(0WvZ&GBPqUGBPqUGBPqUGBPqUGBPqUGBOVb3O_xE+y`~&m4_4hlXhgE%bS&D zH82$9_^U21QAjELgyp8)#T7@ZoDx=+>T##O2`$^cfm*GB$z=4aA(Rr7Nob3EBc75p zJptxBofwclA3?J|WclGo6jF#6vOIC3Tk%2;Y}m`kX>ah?kWflha7E!x77E2vkwT&O z0}2t#B9R3;+|18GSl%j3OnJ&}LgC~Wk-G{>sqr{{sS!8!p7eV!P>WgE_1wj{YcwK2 zqXAM}&-_&tXPEf6=6r#~*jOye{RmY7I`oMNL2sZIv#?Y8Q&#a_8tE4RS1#2<`&bNy z|NK3lX2n505S@suhNDF4UZ51Suu*YO;M%w;EFN~~Bo-Pw*)gJ0&$>80C_*C*j*hYu zUvs^Vh0Bu@@F4X7LTCTL_{qqcI}Mr5;aK%%8ggD+&2HwEzmIGSP+X=*$)F*q){a5c ziT$V^KEbXKDn8>}2lOxcM?6IAUL>Yu6An+(vXkh?U$wj0aIxGPu~_@u&^PiBm6?vf zh+vq_^dit&UC+W3wa2jMd<%1y1~JLi{!als(K(IL~e7=f9$0#&{M|mgTKQNy%3J3H17?M}ztMl;3sp z@b~Nt)X&Mpt)i8D%ddH19K@=Zln`Njjcx;pn>w3R{I!b|t^bZh4jMw#Y7M*IaIu_S z7lsqlJ|HWLi&?tJ0v#EUKA%-uJM?+7E;^ANUW%}*2R&-d?Oq!|4c~DZo9QV@IDYIJ zzFNEhiV0Kj^t@yiZ);nNu<#J%6z;=}$??cJRKr3O%((tfBO-12>3ZN_`Uddc5h8Oh z-@uk(;Y@6;**e75UG4B)gb#4@pVVzDDG{PuP7bUWgY4 zVB)ie_GN-;$U)Dy3=8irzqPJjN%T+&hcZat>F*(S>`0f1IYV&75XJc_6I%K)w*0jY086BLXQV}`*Um+PANcwo$6K7RYcWqf(C5_yKR9t}Xd zyHLEa+tX`ts$fs~rE!Hh9vK&hwwiOOJ9&Yfn@vXa85jmfsPLdC1>(;&G4X{{UIMl; z1GvTAIOlpruP%p^QsWVtG9H@#1K8mxo(dm0HQr9V&>x`WM~sHIGr3Uky@;25L!{GW z#xvEY`19&c4eEx3FtMBmD1`O^%7V??Sue=m|0f*^3Qt4r-EZwD)_WQMk{IBXgQYC8 zgczCQFaLcGeeu5XyI^Z{;h_E)Cd$e6C&YOk&QbJprdrFPr8&452D?) zk#Bt-iy*Yc6JkR#tJ&aEyl^g{!+=eQ0;qS%ExtJM4#MxLQI!x8MW71RW!BbXI1h8@ zF|SrJ(cIDS(|)IPHvhotD*w2V?H>pYWovz(db1KD^Iy#w=do{F2J=s|01KxjpzXBn zHEFi6gA;G_0_}H*0K1J77p?CTN=QKA?qgl03q((G3a8bC)gH2d>A}41IF9!^qV0} zKECRtG612KQ-y}$PE#w?{R88afea&#}<3=P>$>8Hr}y3ei8GD{%in9>6-w$lw9ze?y+AXhN3dTL1t607*qo IM6N<$f@nV`Y5)KL literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_slime/base.json b/pixellab_src/pl_slime/base.json new file mode 100644 index 0000000..374c4c3 --- /dev/null +++ b/pixellab_src/pl_slime/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "small gooey slime creature shaped like a squat teardrop with a pointed tip leaning to one side, thick goo drips running down its sides and pooling at its base, one eye winking and a lopsided cheeky grin showing a single crimson tongue, crimson freckle spots on its cheeks, no arms, no legs, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south", + "seed": 301 + }, + "usage": { + "type": "generations", + "generations": 1.0 + } +} diff --git a/pixellab_src/pl_slime/base.png b/pixellab_src/pl_slime/base.png new file mode 100644 index 0000000000000000000000000000000000000000..1545032d0cae35975865f321e42e273ba34d32b1 GIT binary patch literal 1585 zcmV-12G043P)#Nmgo4-{vZJWsu+!&!o8IPBevf0&Jk(3aRvdnpinsF~sQp)d72m?$tr^6gG8RZXK zU~Byib>H{_FF*7Mqzvt+@j0s_Y7$sRvuiKwA#11@|5@jF_=C*P4}4W$?4V^7gKan46o9 z$TrRUj-)t*5+zjLPpNrD5Be7_c<=rCkpy3_XipZ zqF9n@7=|EXRwC8xx=%(-d_G1{7@rPlMxZDlCN-Z$&yFpak(`6h6*;ix&PP+jF~n9L z!Zl|b3wHyktgH;Ho?C(lvuSkYy-^sCh~pP;@=IsiUr=2tvMp&ie(X<8u+1i|?YtFW?%>gQTp2C$p zPvtHtUpHXqN8ygo;e4VPm#P~4dcyc|reGsxEn5w1eKoT8p951E23y^xyJ4udmi+($G?EHfj)lL*U5fw_sgtaZ6>m?Hn3o511$U<*nw* zi+n*)LUd>SprFVSwBWUOFmw7eJzOcvlLu2XbNRKZ4(Vq)3VM6AhJNAQy=M~^e7Oq? z_J0cNzMcFK@O)5K#y`sHHV?DpErB4l~YY?(v zGIw{0-s0uROqJrcH_N_Kk;HeCmO)E`?jq*kKh02r$QYi)%oy`S-oJ z4%?F!api?Uy1m+aPp@VrQra*uK{8?%AdiWHXfz&4jMhHXSEGmXs2Q>odOhX|PKzeqDz9bH~1ok4U zW{b}?$KhB>eV@|0Vk;Lbv(E}7 za~qx#*xzH5e>}x&1ZR(9m=Q=>Iw*G#w3;O22{|LJF~V^cV9^zO)hSD!ggqsicmCDy zw1rY4rsAkuselawC`s*SbvV%TO#^NOVFyb=5a`z@I!!57b%GzG!4sTU#EkUYfozyW zS*qBs8Ys@=H~P@0J@8V@U(rB_Ri!XmV~SI||F;=Ozy3&S-&rs=Kt-nStvSihU2&26 z7sZZmAZQCLpzxwB#KuJ7*Om@kwV#uk5SdKnDcgH5j@pi$=4bl-KQ?MI?5$_fci<0P zP0_Z?l$g7bVVULWOw|e8Tchu jQp!!ZKT8=HVEp(OE<2T)415xq00000NkvXXu0mjf4o&J( literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_slime/base_raw.png b/pixellab_src/pl_slime/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..7845e8494afb2f5558f4c65431c22e0fd172d163 GIT binary patch literal 1531 zcmV-#PET$K&1m;JWb#pY874bM8Io ze9rfL&iDJh7nsB({2<{j;J%323YGnLy6)N>W6T1bVyB|~Q5ziXf0#M6`GjNTROO+%jhLB|B-&i( zuV6wFCbF3gTST2(*V%cEl}QCfrpY4Gj6ozx9Y$+ij;QPmxa5nNFcywLq%ybuT}GA; zS}+V{CYxsEaTAWaCySMVWS!lYFfT6?Q5~vvT`4nQ2ITQtH@)sPA%#$$VJI^h(_Shc zx0T03Sg|!$10E%)bs0R0pOpt}4+fJ44=#olGN!O;k)srA!)K!&G(Xa^#M~Qs46-s| zO50iV)oeprYA(*N%!NH~0gkjBLtNznTyu9wW)oJVvNEiGVJRXkk)g?IAxq5S$1mMv zRd>ffP&^8(wz)Wd>~GelI2^j1!gXs3g<2v@ASrB(v5JS5gO%v+y&AlyM?q`BT6P?*4H67Hu;aJi}_U5@uH6n&o5($x{|!UGXc7^dtLQM#umjg{7K_#f#N( zigValM4Htd4tj1#o_d6RCwP4+vo7JkCyE4F!o`83tmLEjha>3mS_^hl@}e zRtkUn2KBr5u?n|FAjrCbXd1o%J0~Nn{hTj;fZV}bzUPg#VoZ{n;&4!h@k`>+)^}iE zViS|!aS!Wt@goX4Z24;#S*~{i9YC*F2n)J|7ryZxW+o?!?ISNh7Rt!ZV|7It7A0MU z{e6O{7Cn2mVBy!hu(0`a*qe5;i-YO8tc=}42cfn=IW%|$i#Gbw#>Yv+ULxE@S*rHn z!(|yb(sP+vzy8S;nDNoanDcPF+9^O9t^3>5v*6WuQQ1xu7tCYNA}gxk_6&{P4{!Uk z&BxxOu!yz0=2w(#TE#T@{###RWoa>9b@z++V&2}2+y%37-F0iEGz!)tC1F0W#D>bv zjjUNct}5J~A?QIe^7TvTFIj=?xicAI4k9i{g*fpEqS6;iWrl<>QQ&qnP0(q?n4m%Cx0V!T;p)yB6FCU zE{wuZ;NYJxw@dO_!vF@<2O1)Q#Dc-@&HDHvThrZY`@a?({`M0?oTP9*IJqb2uRF=g z?io?yMgBz`4A$mz!3QtSL0oJ!em~lUtIl(V4xnU&EO`TMGSqSGG%M-c;>8002ovPDHLkV1in&?GXR~ literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_slime/pl_bubbles_toxic.json b/pixellab_src/pl_slime/pl_bubbles_toxic.json new file mode 100644 index 0000000..5b110d7 --- /dev/null +++ b/pixellab_src/pl_slime/pl_bubbles_toxic.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a cluster of round gold bubbles of different sizes rising up from behind its body on both sides, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007215490871005589 + } +} diff --git a/pixellab_src/pl_slime/pl_bubbles_toxic.png b/pixellab_src/pl_slime/pl_bubbles_toxic.png new file mode 100644 index 0000000000000000000000000000000000000000..c040df3e49eb3bad969a28850fb35e1db8510346 GIT binary patch literal 2273 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_slime/pl_mushroom_cap.json b/pixellab_src/pl_slime/pl_mushroom_cap.json new file mode 100644 index 0000000..b214e1c --- /dev/null +++ b/pixellab_src/pl_slime/pl_mushroom_cap.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a small crimson mushroom cap with pale cream spots sitting on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "generations", + "generations": 1.0 + } +} diff --git a/pixellab_src/pl_slime/pl_mushroom_cap.png b/pixellab_src/pl_slime/pl_mushroom_cap.png new file mode 100644 index 0000000000000000000000000000000000000000..0bfad03414083b1d84d864fb5102e776812b5bf1 GIT binary patch literal 1402 zcmV-=1%>*FP)zDO#SfJ}M748fX54K3YmBxG{;s`G zhHmAD7caLjW}W^(v{#>b%O>HeuU?~yCmXc&%_N_c&xPJ|`^ED#g*?E5@=lApLAMte zx|L^SBLM_3bi@Rce1MzsAP9#uIC_nUt`FsMd)Yh2nl}+`{8&@3NRJ1|Zk>&s{+@1e z{HRfRtw9iTe<9G76BwiqRuKDUkbYR{d42+PCP3PQpp5d$MH$x^`+mWsX%5qmkIEMJ z)B1ichpnLW$s`{z`<_KqedGYO-58>E?ca-Yv%cPsu8?*DO3eAzf-iSctZc4*Z=nAw z`2|zA@(T~YZC~&0>J;r@Pp@bfJpYQeWw5W)U`(<;qqMSu5_Fe{Dd_=Gvq)GU$~RV3 zyFLRFbbEoR>q8~c2Sw{tJ~1#%kE~i^4}(NZ?{e7GWqmpD@z~Gi1(*@=&Qu}5die1E ztk!49UH}rxYd4B_WjWHJ3&t(ve@{$>NRMN!m&H9< z`Qnxn%G}@6Ajo5$l?U#dSw-9Hb_fy{pFHFG-e{_iW^Y*`&XccJW&8%$A5HZs9k!+- zId+7Wtq)7H^1#qomuQ)UvJHDC2!iEhuq>|-Q6R&@itgy=Cv!do>pOA$&Si4ugqL3a zkRD538~pO=;x^AE>88Q^euu#|l0Sws_cuI@z`V?bNuO$-+=o=-~6~bRcD1+~wxm067*Q z1~9S>g_;S_J}JKXA(M3Z_b7Sg2r*b}GP?pbMQn z1<7;n7pS(rCov$`_>7*uD3o&B2;uuY-jP*$ZGEqXfKl9X!YZkK+OF_6p87$wrO9II zNGnx{a zi9LXPpkjZ(AT{{U0!6;DA+1!t-wnhNC", + "description": "add a fan of five large sharp gold spikes sticking up from behind its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.0076432718965742325 + } +} diff --git a/pixellab_src/pl_slime/pl_slime_spikes_poison.png b/pixellab_src/pl_slime/pl_slime_spikes_poison.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1b1b7d0623c7e2def20952995ab9281178ebe6 GIT binary patch literal 2489 zcmV;q2}bsbP)aNBn>UtY5WJr&c~n_k|xA!nubuh`8XfN`2qc?QbjCMz#>xks8yQ;QQS6a z0!Sts(*#2zMfp-1jL4S=6&x1_YT5)0$PU;Tf3O{46V(ym-Kox-y|Zt|`}Mx9E#V_s zJ3BM`=HBz}J@>vhGSN83F^ygt^wCoEu@L^sBOu;colsOB_cK7U%F?NmLbUBl7Y0(2 zfGC4*s7xQ76yx0|V4`ZNoK8d{4WW-Qf%#RvbmrWkHm1v_?w{c2}F>18lnZpWI#EPN=J7Z27@GN7v*3_5^Wg0V0fq7@AgwMc}{dAdBQ z-J`C0K&O#Ng^~0IvhaaW5DS9o|4l$vpv8^V3627}({qx--{r7gRgz^R3TZNu(1*SF zYgv~clg)ax8(;{Uo70DW6!T2NLF2qh0#NsC#xOy2hQ4Q}FKm^FlqR8~rsGsOwY2Lo z38o(H1`LAQ+qb91Qub&Y7>I(L+#0JScAhnCf*4K&kmbvOj4wx3bOV%x9}J#4#L+Hv1ec zu#2A=PqU;`jKF}HRaSUB^w7GDuxTOB=4}fLZ0iJEgVP1uo}rQkFBQD_oQ;I9taMsF<5o(^ z%_Lg7M4ZQX7?)>0ltXwPQVO|_s2r*DBPxSl<6 z9-%)qH@F?%-`Q)khDmdRoyV-h@spc(ikVNOMb>GAU=n;Cdu=;AawKpXutV&;5twbv zKG1QrkI3hzyoaB#X#swVF)&`&=6r)go@X7^CDGNPn-TyXJoT1(eV`}`AIT|<(SoPsNgb!fn8RrXgDDP1-3fgH{5axA#-UGccZEEoEU^F|=!pC3% zWD;=CK>Ha{5tsy|#h~{E%FVu&+8-$<&s{}yU{52Z{q-N@zT!k!JFswLAbKK2jTYVw zv+nY05F~KR$$Nfign$#?EutjJ5Hq%{g35kgYKa}37QdU|631QL!#hO~fs|?=_sXL_d5;l>v8rj1@|S(i`ORy=N7b)r1NMw~;%n0iaSI3Foxv`7Rn3Bs@d5dep` zzst-`JQV!^(Dq&nUB9ALw66H^x!@Lkm}tvza3$#Xw^G5PXT-5@@ehdhGzK5I(Mz=fQIu>5 zXN}7Jt6q^R{Qu*LVp9?MF>ae)tH7cKHrjh%_S7^w%pd=04 zDh7G}-=CWY0Y}i$y|Jl|mj2-pk;AK3zDWyKET&aYnz;>3T3bmacito-g`EcAEW#e$ zpHW&&)xZCnIRAz8ydmR)3bW1UsTd?x&$mLdzv2NZn4T*LU@ZCLWA=wSW}Lrg&3o1^ zeu3*CVd089ZJnSh+ci=L10@h*1p-oY(nHQH@Sr}$a+Ja69?rau9=bY{(i+~i))C^j z=m&W3P$2h!+<^n5ZBQ#buK-Pl(#pVJCC@9PmsSpp2{B$J^UOa1s zKLoY;czclCm#UT8?WQCGhGX4$!>mGUNi1)IghJuA_2Lt%Di%jgwv7$>OL%zn{Bpzjy}_%XoM{(0AeRs1p#=1_iXC z@7F($ENnriC`OEl6o?0gs5_CxeT@7!(KyCImjeC=EXvToFz^3100000NkvXXu0mjf DKH{>( literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_snake/base.json b/pixellab_src/pl_snake/base.json new file mode 100644 index 0000000..2d74d16 --- /dev/null +++ b/pixellab_src/pl_snake/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "thick snake creature coiled in a tall spiral pile with its head raised high, broad wedge-shaped head with a blunt square snout and heavy brow ridges, crimson diamond pattern along its coils, pale banded underbelly, thin tail tip resting on the right side, no hood, no rattle, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 61 + }, + "usage": { + "type": "usd", + "usd": 0.0075322285228305395 + } +} diff --git a/pixellab_src/pl_snake/base.png b/pixellab_src/pl_snake/base.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4a2fc70fb636bcd415b0f7b132ab8e8dcc1f51 GIT binary patch literal 2084 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", + "description": "add a small crimson cobra hood flaring out just behind its neck, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00776524575551351 + } +} diff --git a/pixellab_src/pl_snake/pl_hood_cobra.png b/pixellab_src/pl_snake/pl_hood_cobra.png new file mode 100644 index 0000000000000000000000000000000000000000..38785371ee117cf507aa4be930bf811927d7d73d GIT binary patch literal 2320 zcmV+r3GeoaP)9qpQ#PP8#&CZvPbT87q1 zEUB$yNM@o2YZL1z)dr~=irQF5d=Usq5DOw`+@K(e#ALjk|KB~AbC>1e?p+|0{bnxb z+;i_e-2XfO>-={CKm72+4?q0y!w*0F@Z-A(gOBG|2Jk-za*xko@ZsEweO{Vo;O*m0 z$Zh&WGgg)~joYd5Vd|K9SJ_~^pU?gQuc$1%{VSlU`Lf%alkd0U)}>ar*9Ll0?qo;iE#!GfyPW^aUGCr!OnOb^&eQ8<0z`tWQAC1ySDB)RCYazO zq*Wc`_F&2kZa;6kjz8Jv;Om>;pf)#OL(D+P5F`-Mt|8PL81zzqp#hm6pTt$=8>DVq zht-882oDRumzTS+dSy0WZ>eg~Oh9DxMue>X(NSS)GDQUF;(5LpSz*-9P z4=3<=`)3VkEZ>LsY|p`3{K0_!pI%|m5WuusG=49Y}B?ya4$J(gZ<9e`cWPj?kpXBn^kFL0TZg z_593h@3Wl?m6tO>GK;UA_a$%NkC1>-KxfbYqh|`Ns}HCzctaT>tter9QXIEuN)D^x zPque4miKf9wglhF{hZ1g1O^4;%=K&islMxW*f7*lz)+i;uX(9jso$I6GO~6aLSR5Z zpE&^K8p6?1l11T_Knvh02`1xTN=vPl+hX+B|AhhF$In-hWd6vM78-fCNbaYcXaaq+{q3f(^R%P;M!Umz0pciK4_ zT49OP)D~#7b+MsUY@)=wE8fUrgudXHs5#x8%P$Ix>Gz>KM|3M9$cg-P)AfX|0NNp_I>~&$(0N+B{u^|uEBuAY<;9_$#PIYyn zEIfkGL$ZH^iKdZQYd;H-R#P@ft!>ddzURh`POL4k^~f!T69J05!K%Z5Lt?_rURVF# zg#`!=2*8!DE}XdDfoGy)v2EQF%zFNhcxb#C36r~Pgip^+Rr|NDc5uDHX);5a2r2Z3 z9F)lZR{ge^%eh6^bHV-heu2I9bwGFom%%~{xAPdOKgE7I%uzx_$Hw$& zu&m5Rq;s6if;8icrdEWU{{lm00t(gdXmtow_ZQy0>ZR4{>XW+5w%^g(h7GaZxdGX; zNPhbB@Kj$A$XW0^{#HQRbD-7E&wC<|37$cr3a%}E3a^F>>6{R8w@A^Imuc)lx3QK4&uTz$M22| znXiHZq*_B9YyxgJUFI-$d{Zu;Q~$wat6JKQw8S7Kma@)Qk^il z)Un%JbAKXAN{?Z`vvx>?V)SV4lb<2A7s5{sbkrJA{DGQ54#{rNkohWmf7;K}kD~-0 z&3ei0{p1u&M+9;iO%O+*I8Q?UYwco$XV(g)~x2 zN>ynGIPclTZnfZvEsifp1i4zQt~`BLv|mEQyLmlACV@17GDlkdp(22wEY8TlKJ!?( zf;{)zJ9jb(Kc4Y`CMO{OKv>z>ruimt&)Q8$4hn|ZsrG_|k5=ULr~@$3UJ9?*UO*A0 zE)l~;94C+7TNOy)=f_TVpVYO$di0cP-@L-TIl1n-!SLP;5&9zGSmkkUHz*EwG_w6` z#O!v|1l$QPG|P!0|AokH5hDsCGNvWptM=9GFGOonlpzwN9AVh~PVlyf=uIO?8(ax- qNsNZ|Pi1ch%D3Ph{qO_d0sJ2fasS-?(ZM1B0000", + "description": "add a row of large crimson spikes sticking far out from the back of its neck on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007791194968753391 + } +} diff --git a/pixellab_src/pl_snake/pl_spikes_frill.png b/pixellab_src/pl_snake/pl_spikes_frill.png new file mode 100644 index 0000000000000000000000000000000000000000..c28f1c5334d5d9cf6bd2ea264c6df237f838d35c GIT binary patch literal 2202 zcmV;L2xa$)P)w7E=zPhWckg}o zy?N){bG~!#c|Zsugb+dqA%qY@2qA?@LPo5mYzbw`7&+&0_I%(7O?4T51%G4++%H6v|s+)j=(`*5#Ar) zJCCEbOApg)cRPAu-JTQpzuk`cP5WtF`%PKEK>HaK>fOwRPmW;a_*3{mDnK%Ngl6k7 zPKqJnOJV97SDgZMlY`;C`me+#BO9j-*ZjHq{^kG{bp41sxwHRx8x}lrH@9~`Ggk=4 z@Q&|7_!IiMPM`0=B`ZjS_23s9vvdKTFIa_sG2uAW*ov25%;Ad-J6(p!qzu&p>RM0A z{+rDQz28w+m8K{$C={TJ1_>WO*nvgMH)2NSSRVUo%~t%fJjctPX?&o%6^?EN)Z1D$-G%>AD^6JU#q zMBISBQux(7oN#1MhO=}HCS4aJSDPRd@R#>Dp=VfkDI6&w<(v(pyPT4oKoP@gQnbNB z#0|UA;OF%_oV@a#2~Vh=lZjjV$1)EH?6#dVL<)aI1e;Y48ejDp?g)!O&EmD(Z#a0E z+hq0=Z9f}?FI&Dy-e>RaPH{8l{f{lk4CD?bgcw{3C{u(|t$;XzkD_8ZCoZlJ`e%$s zxFZqWuXQWnt)zG?+3Ys|iQ%!51H{>1xq#iO2a!;_GiNZf51l-m$2K`#Omym;)f+b; zEj1NdQW@fIO5|~;)5Qe1EN>c8O4rHxitzBU6AT^_bWF{}t#jP5UIp<0Vc&*owgQ?* zpol@CQ1Ad<^A3xG2nj@n0#=1Ut1Lhtx290CzCcUMDV#Xk#1Vnum@r@@BH`J&(+XJ5N>h0_cc=ZL0zu#_J6D1)h`yH?VGnq?|yCjiV`Hjt=ufbpDMf< z%g_2Vilg1aPy2Ew!lHT^_5h+gibr*}*QaHtK-vPQG{XGHZv&DoQ3 zJ6x}|zoOujEiaV7xneoD$^9+|8mt9dL1SJvVv0&TTwGsNV0zONM}Oioksv9dy!D9L zd+M~yJnT9qw$PfFCJKJ3}F}t6HHwl{;{U3fWiH)!NOzrXt z6+J&4TeodPPHz5Fh= z)E;3)&^hkO2jslm+!8*|509m=dC9I|$K^p+1sB4Xf7hP5nc?G_y+EISSpD3C==u5w zJVxeEg%CB&Q9@MHd=iU?jDX|C9EcC(n^f~+V}5vxz; zuKIpcT^$OO2FWqCi_e4nY0H48tIqGnpl& zsl%6;6_3hr4_Ci`l&Sgt&MQ9jg&JxgbI2$=-30LmO`^#i21*bAsR0r5j*uV~Erwn5G(zo!imRfJ+aW-pYmarWOj)B#8lmn*zwRbf%;5;0uF zabk2|RUm", + "description": "turn the tip of its curled tail on the right into a gold rattlesnake rattle made of three rounded segments, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 4, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009106588496102228 + } +} diff --git a/pixellab_src/pl_snake/pl_tail_rattle.png b/pixellab_src/pl_snake/pl_tail_rattle.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf6796ac395b9e1c15ca4a183dc71e08304e29a GIT binary patch literal 2246 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 literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_sprite/base_raw.png b/pixellab_src/pl_sprite/base_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..3bfd5c6cb5f987f7e1d0e78bc927bf478c9d0d3d GIT binary patch literal 1171 zcmV;E1Z?|>P)82`POrMs;UH#YB7=Em%{DbeN}c}F%hU4Nuu=9bz_qRaXxDMm(A(g6T! z#0XkobAE*Qhl&tVY=eD?SkrqOnmO-{YGYd4?mpglo_pToxgYbMbM9S6><5SU>v_-n zdw=iqJm)>YEdJ*ZDSD5bsWn6@NO_vS&^t#1gIxYSaFfeRA2%emo?U{HNV!%#Fs(tL z(}%I(5ZAA?^+O1OKU?=%UQ^g5_wbrBlrPBFJ5O9ZA7dEo@D?>ncxD+Tq1bM0J{}U1$q*Jny|lVj7a)F0G7cceDa(gVCT3&$%ldq4Ck= zkGOsNiwI6mVMy~GN)^E_e+)SqS2m^DCGh00ir82*Zb!}%K_gbXt8@i|U4H$Ew(0%- z95S<9x^29`AO({qs9yX+c@5^zapF7QX(k{H$EIwyl~wCDPd`$NqIpj4k9Wjo6g1_7 z^iAdD+8;pK!g3TWF2>4J@8DqT>A3cfJy?aDEEm#W-GTh|1%R_zAF~o5W)&2@yIw=l zrWF{uIgH}HjkxdNPSiUW^CI5bXY~9?n+SzM$b0v7j5O`QqAC~LQBo#_)#X8Dgj9Zu zW$8zIG1oOuclda>nLwwH7ti?MD9&6suG=Yc>Q+N-v)^MYmj!ukRpZGP z$=M+oL6k6m$pS7N4uPquTYeSv4@5++oy)3~2{O(cb6y@fPt8fGg7R$1qgb9NaP^N# zENg2+&enQNPK@KPw*APcsEZqs#z<8u<;I3p=(#FUdF}_(Bon0>d7#jP?7OF!9D&-3 zTz1tfC|q5H?(se>SyRkcDRrHqaUw=-B1fAf&_)lrEBM`J2&N^v#WYc^VSmiv*tId_ zty_xYJuS%mq!uT?Jc8k#5p1n_j!FF@>NLL#`znFdBRt`Cq2TgcxcqseOe#_TdZv#b zZ-0A4zvl3a4W%_0+}DCMXBv|uP`=D{FXY5cwxqi6#-#qNy=N`59|{MTZ3W5CLZcH% z_y0sq;q7ma4is)5Y5f{c)okaShiYw5i(XaI28pDq=X_tmZZhLP?jG%j-54Z_)bND> z0=@xbda)eArY{TAVd(sI&VK}B4pe=q5F;6aqVL1E<+3*$jY=_!-*}%(vloIH{b>sL z2BK9W;`r_7>wMgr@5wtsP*UPO=Igbo-9i)4|M54QX`!KIdlj6SACeK>OO lBxHi)OEf-V5pe*imR_y*NQ^i%)<002ovPDHLkV1ikAMJoUR literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_sprite/pl_cape_frost.json b/pixellab_src/pl_sprite/pl_cape_frost.json new file mode 100644 index 0000000..08870df --- /dev/null +++ b/pixellab_src/pl_sprite/pl_cape_frost.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a short jagged cape of pale icy blue ice crystals hanging from its shoulders and spreading out behind its body on both sides, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007821742879019843 + } +} diff --git a/pixellab_src/pl_sprite/pl_cape_frost.png b/pixellab_src/pl_sprite/pl_cape_frost.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6d9a16339330868fdc18ddcc2fa44c3e010f5f GIT binary patch literal 1419 zcmV;61$6p}P)q8l5C{YUfj}S-2m}IwKp+qZ1OkCTAQ1c?kS1tcd9ut&nh4REhdT(ms@deL9O!V|Xj&o8P zz)N&6@miwqis$Lr4O=mir-}h&t(Mok2yZWJ|B_?`047vs;{}E^@ z-VR;z5CwLXDX%ytURftQ;eN=Ow_Ig7gsr|bB{IU!B~HO^_aE^xGfqgekEDTwOi%ctNrfv!L*y60rRA zq2Kx|7MQ6{LiuxGI=e?z#=Z-};Q;kCfUF4c^Gjvq&HHm!RN@Cn-`;CjO^@K5(3r9Y~DS5;;|dzs=P z_mFPl!|@XIX#}LW@MVe<=FjzN)O+R9vQ<0yBM(g=)Dc7hbDc#UHs@m_{rvjHYZRZee@8J+I^CQN&aazPB6(-G z-JW{JY2M%cZh2(axIKCJ8wIjCpzwo-nkXcg66u+YWfp0sJQgDu#ws3HoUJ-~c_mCd zg5s5+fcDDQD2*$P{{q9n@&X+J)*tq<@4at$-nOk-D*r=ajK?8rEaGth#_)rLuRe-r z+tzm8W1vF4)Cac5GGccfJg{ylRAr>VoeR}Y zvGc-3NXkeXF~m4_LNEj16PJRI&(P82QMxxTNB(^AQu%;s8U0?oV=u3Vd05WMg7hh` zKX{Jjg+ZBL;`m+O@|lz3(d+~%SOp)QjQi^Jbu}u{luP5BmtOM?3&B=Jmp^g{1OgZ> Z{{ae_#HoJ-n8E-6002ovPDHLkV1jwSz*qnP literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_sprite/pl_ears_flame.json b/pixellab_src/pl_sprite/pl_ears_flame.json new file mode 100644 index 0000000..ebf403d --- /dev/null +++ b/pixellab_src/pl_sprite/pl_ears_flame.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add two pointed ears made of orange and yellow flames on the top sides of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007806698931588067 + } +} diff --git a/pixellab_src/pl_sprite/pl_ears_flame.png b/pixellab_src/pl_sprite/pl_ears_flame.png new file mode 100644 index 0000000000000000000000000000000000000000..3563a983957fdcee6765e7f63e039216121220fe GIT binary patch literal 1452 zcmV;d1ylNoP)>xB)gz)L)$qZRYKWm+rM21yqzLj7JwaYtDjsmVW@c~q_TDJy%=OUyC7a#Z zoqKMc|2*@|%-#V81_lNO1_lNO1_lNO1_lNO%#giDwA!PH;DbC{mcZ1Yrz{a(n@mM8 zgFP~7ENh$Kgoq`AT|rPu~1q}p*U3jTozzMij5#M6iN zaOr*40{9y3kx?n_SMJs)Ew?R+`Hog_yC&)R#_$w+kJc$SO#+guw;&|mWEiyqNC(IKZc zVL#_O*NxsVP7aL>BP%6SDb!9dZLh#%6GX=EhKfQA#)}wlJw=^g|4;!6(zCUSr@JnO z6rsK4C7J;BV?TdpIlem9qB(DJOfYM^8Eg?^9Fy{_x1c&-ZhshYu?h1!Pe`-nq7bjr z>s2NZS3hhEs>9NG9uc5IW0*LfR*-}3dHFYWUXSa1kCq>Xzqx|nET7SGjAN2{n?>-! zuaT<8KoHfq;7kNWb3ng<5j`?T^z(=n#)HiIM1ioM!(TNn{e-&^eenI3Na8~Tas3g%t?Kw5O>z&uv*>L+h*s?bJ38zQ$c$hjLu^dpe($~vG1oa54 zbK#FmNV29a_@ztK3$QDHCo+~<@O5vip9taV?6f_Jyu`S9Z7zujaJwdv`1rH*dSm)V z>eypHycf3q)|JJyj%8mZ?rJ&g_l#!(A(S+&8KfnV)g5Xk<|18UbHCl`JP>N zZGAvQnsK|4Syu!1iQUL7$)NRA@zk9nPXtbO<#i1Wh)s@%vr=&;aA8DH^FaJ7&1miZ zQmY4#1o!B5?!C`b0D|0KT0}4GWy&&EpWSWN`|wme@IhU*cCXQKik^2Al}5yQ-U1M0 z63%pSW#q z5_F$gQV}4ZU0aBPEExl164rD$VYOG&RowKs6Ns}_F31RpfTO6szRp*noJ%{X~)wt-sLeFHYt8RD6bF$VaW#T*$kwAoW+_Q$5?Ra2$F;dp1BdR07YOlu3^b9ON)5VQY)!z}A2x+$h}*I80jwzSn&y7VQBc1Y0x|Nx&15bRtg}Kh0W(bUBGLd-vvE9;_Se{btfW? zIg(%YQJ3;7xObY=k8$s;p=AF5GV)Ero6Fx}4Gatrj=urQEKV>b%5rJ|0000", + "description": "add two small stubby teal horns on top of its head with small orange and yellow flames burning at their tips, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009262786441379123 + } +} diff --git a/pixellab_src/pl_sprite/pl_horns_ember.png b/pixellab_src/pl_sprite/pl_horns_ember.png new file mode 100644 index 0000000000000000000000000000000000000000..12b444162cfc773d26ddff7df9c8b85bb181e91c GIT binary patch literal 1258 zcmVPhng(=9P_cZO+>_Sil=?jP62@*mF)-Z{8-yBZ1`@x zZ4)B~REETloBYCj;KpRKD@uJ|PKY7yQD6ZxH~ab{6^|y!kPZx7xeDA^T!zp7d;&6O z=fk9|hXKVjdf&E17w@XK>jitS)3N8|B|3KRtP^-0+ag{2+JF;_)A%3Te}w1WTTEiI zYu=%JGzNPP!9d?Na+VZ-YS$s)#$dE9P;^>W2A#~RS^$d*=hzp2>1dDWu!2|Tk^`jp zv)eYa-lqY)kP|lT2yKW)6Yq3_q2qms=q{BXd++I0BN!0oBFJ zAU7oy8qOUEb3(K_mCtygAbs>%nG_=+*n3^B+fe$%3na{Y=9{SXWu2)TSHn{WJ`KCZ z834H)V6?51q5H3Z zQsL||07ibtSfAwR-Jr`xay$$8=ROa`j|n*6FJM+vvmMoMHGc)3`ESK!1V_NYq7rDi zU_kka-?{D;CVCkZU*ye)?8$dXJc8#^{FIm1(Bo~}Kd0y@le~`LIf_RoBIro8;jvOg zqB}s~5{6OzNH^F?61)(kmmI%c+z)x5t$@RWe)z$^kCsXljUxkvJA)whJ|=HX7G$nm zL*D_3JOa))oT0R;t2t6YBPxpCfS%8NVap>r0fQq>6|9Rr{^!6QJH41%4v)^x1rDr< zGK4pe@9;9ZI`Pz4)z$0{ghHR>*t@mb))0Cj}DC~?!@9-yVr zvHY>G07`xubBj#0&M`nOqF}>jXHOGYhPXz65=>BxYsZH|4gB>-mJiQ;aW6VR;KpWe zM=R7FJ2v7XmIVfngK8|5U$*;n=pQq~%cOId53d@b$bT;*?lQdN{ZElbqk%E;FK!YV U$cVMG;Q#;t07*qoM6N<$g57Ld`Tzg` literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_sprite/pl_tail_bluefire_wisp.json b/pixellab_src/pl_sprite/pl_tail_bluefire_wisp.json new file mode 100644 index 0000000..dab77ce --- /dev/null +++ b/pixellab_src/pl_sprite/pl_tail_bluefire_wisp.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a short wispy tail of bright deep blue fire with a violet-blue core, starting at its lower back and flicking up on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.011745978699790108 + } +} diff --git a/pixellab_src/pl_sprite/pl_tail_bluefire_wisp.png b/pixellab_src/pl_sprite/pl_tail_bluefire_wisp.png new file mode 100644 index 0000000000000000000000000000000000000000..a43aea9d7f197a51f799a07eee6162b6cd909e44 GIT binary patch literal 1479 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 SK!TJ20000", + "description": "add a trailing wisp of glowing purple ghostly flames on the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009443331638971965 + } +} diff --git a/pixellab_src/pl_wisp/pl_tail_wisp_ghostfire.png b/pixellab_src/pl_wisp/pl_tail_wisp_ghostfire.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc5e9ee5d5409c04362e9dd726dfafc90d74ab1 GIT binary patch literal 2007 zcmV;|2PpW7P)C`-FLG*0YFSR(F|gbSx4SQ=r&}@M`jW zwjZt)Xc2-H27=6;G)knFMTE0!bi5*R8sM}J0uk<)hx*6cIEfF-^f}?VwrJG!RtMe% zq7vg>{>;e}7LBY@#6pZp#yQ>=H0a9$kegE|DO;|Z+HY{t_v1@D3IkeAR zLMvipf;F|X!XQv&zht?Aq{L*@0$4d^qKhm~j~sMfE5rv1e&GrCqU+!hSDV4XUQPZk zYTa9V(Hg8U2;(a1khC=gg{4QC5X7iYpzOdwqeCVXq0L8G2LafShhAKilrG^f*m3Q1 z|5s;*K)8U^URj7MS-D6`NOrp^lJ|5@*7MNxyO3vhX#K)vRyTO`VP6{eXAOqe0VD)u z0byHH-0r<|$70+UF@+r`SAORrP9-q;{h>vnD6w^+wZ2^U)EB7v0C~@-Sfuq;DgvF_ z|2c^KV?}k0IHCXB&)HshhvbPgX_-v^tFsmC8b9Z#tmTHE{yH!zl#Wm%`NMzA(jt^SOf#VN^vU6%O*r zGZ*1#!#P(wD+~Zd?6kp3M*hyypU{=C6e(~Dg4}{O75F5XNSr`|+(0Bu#{^LT1nw$ExqwW? z4vqUSwqIlBOk{~X31R!_7)d2$aeeOp9mvo2t4r5=L1p z(|ih)+HY*R!S+Re4k(CEj7@T+Q72NL%|gUYFd>AVnuZqCyY8_Fk27-3St7jHXJ6H0 z0!c3c%->Iy8_=4uOOd;0WM-qK`Zrfh;6YA=I>-@uf+zrr0nzX0BI0Hk!b`icy=0Nc zv`A5Y)wUqTb+QaG9g6p?&=D8EK7xJ+d5O;mkDnCEHmdbQN-L1&p|Ih8PUSO={0_%O zI?`fz5(=6M8F>nRp>Jo%*qn}V%tVYeL9XgA^{YVc7T$)%R=v`m==U7+);;1j;0aD} z1S=68&ifQNVRwxF4zG3!L4~$`yU-N;qT6*|gGg!txeQH?a4QhwL=LSS6&9d| zETP#U1kyA?9NcJK5z<=#GIjXfFZQq#QS*EeWI}ZVFlLU=m+Wl3gqMQGu;ZZ4Ekuu3 z$Zr@M%dCLf7e$4+QXvVUZFwJZk|tvM)B;_|>mdL}o|B-B7Bo2?ec@w#_&}860V2-> zpn8eybY3>nv!8RFlNA(C7@8~K?MVn#5qr@SQp^gXkr0qZ^024%I{y0$ktcjQ#SySb zqr0nX6+cGsDKHKSh9rc_`3teCOJ?OWA5-wmApS-ZV@+UtEft|rF+ftC%Unx4y3abU z)H~+%i9r6!0Dl9p{sWi!c9iOH-oyx_dg#sx!T1NPmj{?ZY4ANtP-dHT_5 zaIjZa=YE", + "description": "add a pair of small compact crimson bat wings spread from its back, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008215370098749796 + } +} diff --git a/pixellab_src/pl_wisp/pl_wings_bat.png b/pixellab_src/pl_wisp/pl_wings_bat.png new file mode 100644 index 0000000000000000000000000000000000000000..0d23950361b713b136999382cc4bf2a2b3d1175a GIT binary patch literal 2004 zcmV;_2P^oAP)ym#+A_j}Ig zbH3+$zUN#3G-%MEL4yVj8Z>Coph1HM4H`6P(C~kP@QB(afzlu0Q4k+ndeG$u(=V0K zy|={geG~jiyyEs<=|*jv1-|&RT2%;yD2C7br}GDS{laB3@(4BZh=kcQ=x4~v)gTB4 zcT?rD5r821^4-O{<{EKIxZaAAARb zZrsv-9WqwrOE>iqM(DcP^1z4dzc~V*9Iu0Qb5p=^>?@!3RR=yqO3r-xS$E_|s9u~+ z%f-^~RO@2!tIb_X3k!q@6v3C!`Ev9T<1!Y|hChbR4}`*>Dx6Cp-xt208>1?j?Qvus+riiTe~fUm3l@gFzoE^MXJXfGEm+BR3=Xun51~(XV#>IRyy*X^c;Sntz-(a&Gkn zD?;p^^a(oJt+MMm%?>!EsB>gwpJ(LUs$(Ju{_p^T#EXMd;T1E1oi^72;5`6?;UGg8 zT)u08+7`2Pj|aQPxqs$L6J#VO0-3*v-pl)|*Tp6SwvA;|R3a0E_}T*qk}ot9xMy_0 z6rmT+k|5QJ7}>7}*&uWFJTTz~C?-lG%Q8I%yf$(10fS#$=1j00I0|i@j{ADm;!Zsr zHUiYy2o*u}2Ei8s5Jn!cHcWt>Hg)pY*@*Kd$lQ)XjJ;J*`c0!B;tOAJ{lL^B%QR*ha4pH654Py^xp&>ssuxwi(K7cE}1dDEs1h4A^Q`cR|)TQ=gB_EtksS z&bB?O&%F~q5q?cxKnqVCQ{e0qSLk&`@I6LevWsnO7RmF(d7udWh0x#8$AGt1W%PLg z?%{j}=bYVTG0{L-&{HD|bjtb9lSkq|q(#$fG5?orWJD%Qb+HW`WyIMo2aQ9@zNvWR zz+=ExvmGidCaAE;mmds*ya^@wLVG>frlrH~b6rp%rnh&_o1kN2f=e4n{_k!pIF30- z9G^#^4Jv}A2J$0apHqS@#|iM@y8ZS5@l%?EC<3aC0!#_jySN?-fI#vQRW;C&?j%En z5Iw>j81eQ0I;X)7-Dv3+=#oqTraE>I$)mfo4UJL+CWJd| z3+aSg)*Db{NTSzD!B`sz90(>rh2`>q_y{m?5KKTmG&k^e2p)amp$7&toX0q#uTBaD z|i$e_BcWOexghi`9C?mW(^rz zdJwn5vRu75IF;C@rPI&oLBmPx;CNZV`xg?^XuU_wbJe^+SNIg@38%$R#XjaF2f)Wj_&do$+Bayj0<`B4ys%4L29^sw7gEx!_ z1~O(JW^Mq@?-xPa)ics>ql!L*<_njkn81P@59K^Z@(3n?GFfUWDTVf`G9lm&MCx&l zI>`&{L^wP$Qp)wiE32V^6NiD#b4;ISb_j5E;%H|w6gQVogoN7MrSzofsn#y&5DbJ6 zyATip5Mrl^3`<@Zl3vb{zB3U*W=wE-9yh-<$hDdQ#Ps**i=qe$peKdIIj346d4SNp zw?uW_#ba*%6qujOD4M&>kcqJ5gtQl6wn=RheSaVX+L4&RFHa-h+u}lA33udiD)5*a z^E|bw(oR602@;(9v9qSaN6BMlqdnt3Ve`L{s0y+z=CUKk9VJlM%kXnmvPB`34SL%QJ!dQj@^_k}udlYhE+6D7Fua;;mE z?tq?w%PB5@!JT$loG8soft69|5ET;bRS|UFB>(Q$C9r&0EFF0^_t{I3i27>}H1cUv zlk~l}%L=(=buJ?0>tnqtg3eoW9#4MomG|4*i)25pKU76OF*)kkm`%U)-obmw>p}?R z4t|a%JXrtRQDM?j$VAw&Bpot_rcx0M`cU%7-wWu)w>L-v%k~3(uf4M0{1~>)at1L5 zB(L-ihEw0~hgJLDlCFbVE$~|ek$D0OjL{>LAR}tL$DSZ~@~~P|X6Y)DN9-Er3~D%{ z#dRjxKSr>#KYkTJ5$a-}h72pANl!w22HjH(Nza0=q*2O$qw$!BexMJ!X_&B4`oMbL zdB^IE>=+~V-?=HPjO1DN$UJHKOUvm=a>DF+G&3}bzqePF0aUqdH*j8#cB}lO6Crl$ zDST3d8yW|a5`jWA*I$DXn+qZHg?UP|KHKXH;6F&O%oRdOeZct~KJ;1WnmkUb=gWVN m@Vfy0Y`?$tG-%KO9^*d@!K@ydhlaHP0000", + "description": "add a small floating wisp of glowing purple ghostly flame hovering on top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009791300031873916 + } +} diff --git a/pixellab_src/pl_wisp/pl_wisp_ghostfire.png b/pixellab_src/pl_wisp/pl_wisp_ghostfire.png new file mode 100644 index 0000000000000000000000000000000000000000..61f6a80f47d3492c27f9d6b3f78722f4b1df1092 GIT binary patch literal 1932 zcmV;72Xpv|P)?H(5}Gz(hqy9vg}e5}_d<2&PdCYWfE`nmB0>HAg4MX?kcmQ~&q~(;Sg|$=x(C%(Y4=xN_wqQZ4l#R4*dZc4tB5%#R^ClggV&2F7_oi_XH= z+2j!}(LZkYh=`R0&etOGPzWEDpNDo$r(JpR)@f+g z+=Z|N)5(yeuV!NmXdjUO#U9g5dlwVJ`=>7eXdL(T_Ns^WFdyjps|lP1qTtwc$V=;? zxwRUeTAVIcdXEZxAcDHAY{>2N8X+r>#62v}8xQ|-+@jhna15X18QA1=>f@tfUJc5yTG!a5rVHoC(TcDK|42sjB zzzP0K3~kiIpiYb1p}ouM@tImn05u>4K&fTI=nTD8K2TKG1ci4R#X2eYGunR9^;(!a zK?@i?B9@dkie@#SoM7dd0=VU6fcZ%&P>Hr593+xO{~!fES4#W?I=^xA6QKFq6Apzs z5CS1OV)8r~_2#SabHNWVKOx1g1Mc@6Q!}&d+IMDTvg?5+Bb2GS;qo8(ip-aQau9`Z zFY=CrfZEgB&?2gT*6m!y=Bfe((NLZTumcGddvsu!H60EV zcZz~QvuKN(VD}D^*Z*yR+`4ljaRiQmV<{;FC4g})?U)@;F{y!9EPK@~C3eq(eX!tr zSZv;r9Ym>v5I@j#%#MeEqEcv?VOmiHYD9ndP}KwtU3F~L5nOYWnzKr7@)+!_`{^|3 z8d{hgBUvOrwD3HY0>%(bZTZ6YJi6Jl4ez9MoOE8GO6@8fvbhGVNzm&6;02>P)C6>DwkwaQt~cchPgV7?tJGPtZPY>ZXpSS~nLEfa2vO51 zhfLd6&9)4yy*q5rXHa{wO!NudyGvnf=SUvG1z;O2-P)fCt;IRS?RmA;1&bq~$w*dP)B=RomyIQRG$<%>1diFbijl{Fhyzb~2&|V1 z1|6p(Xf9WaT9ThK4HCVFu|z5EIPNL{isVCgzs(44Dl5G&Nn4<1;8us*pW4u6 zu&hE5LOdh}O=3cjaG1XL=Y#M#USAUvpoCC@8 z=#gs@{*;cHRJd57", + "description": "add two small floating orbs of bright blue flame hovering on both sides of its body, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.00711135114563836 + } +} diff --git a/pixellab_src/pl_wisp/pl_wisp_orbs_bluefire.png b/pixellab_src/pl_wisp/pl_wisp_orbs_bluefire.png new file mode 100644 index 0000000000000000000000000000000000000000..ff94b54df11c13c9a6d6facdc13a6b38e291eb80 GIT binary patch literal 1934 zcmV;92XXj`P)R&A)1f-TeK z24-f{a^b2mrPL-)D@j0zhF`=~@C!tQd-ZAO-21%ueeVbNUU@HIy}#|<`}I8Mp5J-S zInQ~X_X6n9p+kob9XfRA(4j+z4jnpl=+L3#{{+@czsviIKCCy0Pb}W&@}lm@QRvuJ z*yFmfo+N(kO0)dn%=MeF{r5lI8UkTAM!@wm^aOb+V}Xi1!X0^pDS0NH2fVQi7&Ceb zl}E+^9LbmM+^Tx`cIgqfjdz|prZPhRMQ@ReN7@6*d?YUrJR)3m&zLbFddc!3aNy|1 z*Kc10^PEf~*5248pS_{x>+j&>pQ>QxtO;N(*%L5b4G=&GSH{G4DkTXjGv~pdyZ5_o zi*4{d9wHGU& z*8vTILhqJF_ZP7)$Rmin8%T`Nfp`!a1V$-XjqAR>81#}o>lRqO#FV+4T}4NQ^KLFe=FRmFNcQ(YiRPil43py!aVTNiz>_Jb>4%u zXTbHt27>#TdU#jjAvnIc{^QWA`73C3N3LlE`5+ZVt+%aOdNsz zP?j%7P@xO`RDHo8ByV$gRM*0(U3pl95(^qq&0agc5u_9rs)R7F_J~{A;*7% zX>Kfz-v5|{ZSsiL)lWs0`XiEFinIoBR`S7 z1Qt(?r+XYJQ&l6)-&ob5Ctz$lk38c1wN5%8uD`Exc}$ixjk>8G?RA4Tx`P%%n2}E? z`jW02*X66`?onHIz_l|Ka!wFQP6_8YNAd_^00Hqmpn}=ZVDR_=U6_^ya`Ye7h{_iBU9yR5oK0p&Z7hyef199W=77rh4l#o zaQos%6fXkfUVGVP!80Hs&ZU2w{XHg5xM^Gcm89B@-~{rdF^QlRB#q>-j$MT!F{wty zc^6n2%V;!Dm7y@g+)_tzBs|NPwLx#}3NwXLJUlno>lU~t@)!zA%#Ea+pfoV+%iH1{ zV?Qb(3GydQQjPZ1leftz&L2ONA)^>=*$WV(Lro-GYh?`@%j1~ApI(_o3xC4#G}&Uz&23FsL(o#OOoZ0k_v ziK6t0uqbRAgar-L)CdMG$>;9<6c$EA(#VV07au_eSJ!(LviZ_Q`TBlaD=a)z>0*S} z4Uw7}!Jt*lY)e+9cPKsN9VrAd2Tq}a2it!WJxHDk zg%LiRXNJUKlgJ20DVX=R0l4^jgCy|SwA=QH8!>muM))9!l9vo5@9Z4{<=+;=(%tVm zl)KgpM;`-~Cm=8)TG*p48hiJLZU@D-Ei~ zNM2Nr!jte*I_@N!lGCU%JZFD@tGoojQAKN32S}hX-2KssbKA!YWl@9+8Y_~r0}atw zT@NGHuX4AO9I*92gPsE|WZW1^sRPG_QOkJyw@1h3=zqfi;M?!}+D?ZK9nfw33z#Tp UmH>J>ng9R*07*qoM6N<$f;8`#+5i9m literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_worm/base.json b/pixellab_src/pl_worm/base.json new file mode 100644 index 0000000..c6b28de --- /dev/null +++ b/pixellab_src/pl_worm/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "chubby burrowing worm creature poking upright out of the ground, thick soft segmented teal body that is widest at the bottom, blunt rounded snout with a tiny button nose, small sleepy half-closed eyes, thick crimson ring bands around its body, two small stubby shovel-like digging claws on its chest, its lower body bending out to the right in a short round stub, no legs, no antennae, no tail, no dirt, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south", + "seed": 418 + }, + "usage": { + "type": "usd", + "usd": 0.008012065596050687 + } +} diff --git a/pixellab_src/pl_worm/base.png b/pixellab_src/pl_worm/base.png new file mode 100644 index 0000000000000000000000000000000000000000..652e42bbc942237cfb79f6eee8e732707e5303bf GIT binary patch literal 1608 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 W@0_KBZzxaz0000", + "description": "add a small closed crimson flower bud on a short teal stem with one tiny teal leaf, growing from the top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.009059144099553426 + } +} diff --git a/pixellab_src/pl_worm/pl_flower_bud.png b/pixellab_src/pl_worm/pl_flower_bud.png new file mode 100644 index 0000000000000000000000000000000000000000..08e47784675c17dd1f8a3fccaf0dbc61244832f9 GIT binary patch literal 1906 zcmV-&2aWiNP)g^)sN!2)ghXc1zu*sAe|LLzD;CEkDk4@O z5Nr^P3Gzpcwoqvzq{zonsX)M#@L^i9&>qk);b`yHJaad5v-eT7y}diQdy>iS&dkov z^UnJKYJk3@{W3O7R{)Iff$y0t^x|IpG# zVI_d-)(-0Iva@@0dpm^+lmLE9b2>eNPc8LfR;lQ zjPT&}QM&qJbBi=yC>)|d{~TT>!x%9Si|zJ=6zP2udJ`&pxnIRGi=a zJ-enadXZg^%zryjbMXqrXyTe?qd60%=o+if*HL~(Cc6S%r`qUP=?bIgUn?$yEi37`E+hreY@So!&|@p zQwK32;0hB66jXl<0&kr~E5A;s-nZlkKkIC{Uaf{cR6Ujvz^=TY|Y8m8(X|J}rw>9qAP zIyC83GVS|-^?@L!efBw-u6H?~?X=@k4biRN$hzM`#S`aJprQI<4CTz%Tj{N|=S0Qf zbG204)kHI6Q>fl<(fa}?c>uy%vS2PPo}EvNvkFE1&~J7#fnxOmXHpc>8lYS#U#oEy zhAq$fb~|fGlX87`xQ9Fdwl9-k-B3Z}X(~Mwo1u+KMT`KlKE!^j<(??r&5j(OtNzWS z)#5#Pe7q;GyiL;_Y(`Pi8Tjt)4INJ_SjxO%RB4fV{l&&<>+^hKirYVfz6^QQ0<@ z6Z8d{IDqIOLnaUN_+yWFRzlGSXh?jr=RZx|iT&7t238+7?2gpoF|5?JCa?nHDC;hs zWKMI&hAq1OoV+s=Gz5wt#?Y3TtEleURdJXB2UqX3?+0OK$tR>{#ENHr7y>PT>bseg z5|U2v$X+wW#`O272Z`u`CbD*RdwmZCJ8oMk=A@leRbeJ%vpGU0BErW>uG~O^yJ{)H z6o57*JD+OHR(oya8ycSD1N=ygqe-dY``BR!+5MM^ZB~c@U)}K1p}}zCr~_g;c0apvtdy zQO&&uukWM3`}2b0*Ts19>Q7p-o}D{jFA<&SNVjcW8ut~w)&djt0lW4e=99(8wavRK zsBGOT=D2vMD@b~Zh)`SrF~oY_AGVHX2=vMcJ*pj;qWd7cn)UjiqIFbng6DS6vV1lkEI@_pI5Rl-Aq z0E7T?SE~+tyvTC?JvB^Qsu~@2Tzh~A?F0OEaB3ny1NnQ2Gjns0bL{E>m<6|MXh~tR z!%R@eSDiaNZ~K5-EuQCuTsuNW0II4AwO#E>VHrW$so~0nQzD)CfH=nRkqUbVL+;xf zn8+Z+XAh&?Y{%JP+u1u*vU82kz92ok$Z>=Q{2$v6H4RV@lAr+=bBiD~G(VnZ$ zgmCYESb`H_c~!CcFeR9VJ6TCPl#u&>z<8$v!zAU^^#x>gw=MsOcOV457XW$g6F_*} zyrqu&16%vdK_O$nqQQSX&EYG_eFwLBL4Mv+PL|JE-VcPN07#x>5Bqx=f*9WfArEkC s_d66a9$GKH%ijt5zsMqpfF5o93oaLSKYer#0{{R307*qoM6N<$f", + "description": "add a lumpy clump of round gold dirt clods and small pebbles stuck on its back, peeking out over its right shoulder, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.007724657085206773 + } +} diff --git a/pixellab_src/pl_worm/pl_rocks_dirt.png b/pixellab_src/pl_worm/pl_rocks_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..d39feaf9a504dd20b22f346b37d7d870070578ff GIT binary patch literal 2047 zcmVr%0v>=7$|C5Nrt4>EURf&Ggn*bvN^{l8HrhANg z&1`L!DNZdbQ;f*UX7opA6zZfDMG@h>ciZo~_Z-f0#a9cDeVQcg}hD_nq(W z;SsrT;lhOr7cN}5aN)v*3l}b2xNz~mf=2BFMzr2hqv*ppyzw^KNXi%?pR3Bt=(-0! zY14PrD9XG3^M+fg--s+G3k3Yl%7A|0XxTm*Fl~36yst*lfl)junXc&8ksFUMxzDkG$P0MV zJJHDb#q`wrA9$CyZaz+J4b9>8459Y2!|;c-|BwqPny`FYN()o4JI6@1Kqu#5+`fKQ zi%vlv#G1Z5+dSCt^988=fY0Zn)W=?+IU6debjt~;385l`l|;3cN&YJWFh;FhPPb;H zOPg;&s{A~~WOn6ejL9C7&KHE>&FC!0Ltq_;caig84!TEULD=zkxx+t!H{unD4A`xw zr-ycaS0Q)Y9|%y4wbN=__yN0VKnM+GwM-r+K-N5acBqC$Cj_8Jyn;mzJB$m&YPOxA z{Y&%sGmu0-+UUnlBkZA1>^hz=?yuu9e{4S$w02S732X{>tjK%ciB~5lG(eJ7p*lnC zF0^EC@%+DE%>p#*aR$u$$7a|b#g0x5*dS6-!<<365a1Ol}Bm%T)%zoEvBHS|c@cg^<_S=&vb4e4wVN~@+mMY1?)OA>Oqp?YpR7AH&~oixfxYOWUq@t~cz0JA`42&mPe6BVIG&VcIy0J|%M5Fmqz z+MyB$5Is~ddCNDzJSx`}@-u|sYcgaeC_-W+p-?A>D#6VAhmtR$1LpzZc7I@>PJA7x zy@oFk$5mLlpPgpbl4a&V8+rH^0dI`P=`Sv1hDtP`sQG}5%oI9s^a#bq$B_THk8a4y zrF_f2gHYYFYs~XYIcx$k13Jo@0a^g^&?YN7wub0NfsfxPqqxqo?BrB{gf~_vUqis$ zRS^cQXV`Y_$$E-AA27RhohwV=>bGB$rlcZ7Wf;{wz(~&+M-{6UwmJxTLCCtGgy_34 zbI12cV_%^mYd z^YbJtCI0OGCwY89@d~*h+G4HTq&nFze2Q?iFd061O6ow7!W+rtx-(7m`tsMQqI?&( z6B9dAazY=fJ$8h05^`yxmPT9NTtlB<{5|A+jJLO^KlYGZ54(>@0^q0}z5%rad<}%q z)D&PdJ5*8-okVE$#+~A2@#V(LYqrsf#S7SWMX1Y8?1#E9Xr8F>)bVITphv3B0}j*y zNG%ptZ)1`;bYTZM_i6c`rr3D1bdCgi1amdKd^nf{Ok8_sw!A{+0iq3o3V{HEy!=94 z=L{3(15@H!La8sJ;RH4HdBx%dhFu7-xG=UbT@$f$MDq2G4wZn)25KS9U5u zTAT;kkHx~mQvXO#kG$k8_+SKt{w%MNq`GJKpfTAk|7{iuC%2wpEmC)1M2S$av_orm zzYj=(DqBRh7E6M5%Xw)`fuLmz~nuJGI zctKvZ^(AF}Z`o`pr=}7MbEtCJ{!Gregzq)l(eD^t dxS;5KpX002ovPDHLkV1j0n(jNc- literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_worm/pl_tail_splash.json b/pixellab_src/pl_worm/pl_tail_splash.json new file mode 100644 index 0000000..21a359f --- /dev/null +++ b/pixellab_src/pl_worm/pl_tail_splash.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a teal tail coming out of its back end on the right side, ending in a curling gold water splash wave, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.010474376466539172 + } +} diff --git a/pixellab_src/pl_worm/pl_tail_splash.png b/pixellab_src/pl_worm/pl_tail_splash.png new file mode 100644 index 0000000000000000000000000000000000000000..2402bf0ee3bdd5a9282ed820429c8ba60bffb8cc GIT binary patch literal 1784 zcmV#^pY+u6?U?e*I0?iJ!b$=vSj z&d$EiJMY)*0XA&duwlc74I4IW*sx*4h7B7wY}l}2!^ZyxQj*>y-v%;F$jfE=Df#L{ zBGBuj~Z?PZ>3>j!PEcX%zN9cmdOy31#`;oH)@eq zG~JLqffFBoBFwBKe6|-SYu~g=E<>c4JfFN`+q+0}-^DtGxp}e46KUR*zGG=R==nG? z!&FEn&nGi~Ctp`qHF8xr*NhGujt!sdPnsp9m^hcb^79Xj$ty?lbq$oU!83iD%i*D0 z$bY4pJ%u|&0kV7dE|e}?s`|W!tmI%M#kjy5fm}u%FF8~f;&a17IL-2VM^@kiW9NU`p)6Brua1VJL~>Z$FZYAl!%jsurc+W znz?JTE7&Z!jV%B|4p+fz00NKhN?;oivOL7bqrU&nv49gzK6dQw^<&L58?-l-V8}=* zW5sb7E}msa3VPJ0yYA6g!L;-#W3d8R*OFraD~n4Qk+sjijH5@6fdb-4abV`Xc?k3e z(bnFo88)+Qrh0y9Zxtin(?2lglDlF4uk4t*WG7dGWT^sN8(+twh0EAEnR?#hT+Ex5 z#rkT%lN`(~NLd_nb6o8B$fhb}ESSO0#nms%=|O$_GP3Y(cA*8`4PESF^G~PYDsIE%2iG8H#dBz^yn$6anhhtA5~CX}2>CCWEnf}a z`YkA)l#MI5{>Fj>JC(OZ>U|Ct7pO+)7)0PoAHpGEC=|xs2R_EG$8y=~6AnD>W^?Q0 zRac%DQerS}tb77_`I*Qr-3+u0fKt zA`nrsCQhErKOgQ9UmggC(7MONgdtp_=RpMu6w|z|BFm z1+RrP1Mh~!@VQzKoQVWCaup&@5Xn<;B<1L>WE7B_s+UJjI*y~c@sH#vU|s7Wp0nW@q3Gdb zD9Uqi;zlcP;Qw*SyNa`rma`Jy?K{W=pru(rR`&6XI1%I|jUW;yQ1%cZk|zt`ry_}7 zUl*p9WEf2^6<3{7^8X?Anw2p?rquTMy2S`*r!v!zmAA=7sI_)yvPQ(IRbOsqL32gz z?x<%je_Cy%OiA&3%qY!3!R8t!hj?GtV!{a%P*jwUmbRafmX(UIKZJSi3V0O%*1#Wq zX?f*4EQb>uxlVP@z|-nTmc%i2`lN(qcftf5-}gPz)1!qT5|h#$2=r^y9|sW}=nf+N zoTS-V5-20YAusvXZ(-Sh?=vPs0dnE8QnV=M7Z+lwyb~MH>HB?fdG4 z)aP@FfilisU|evH=i$DdA?*L;3$&bVVEs7{OvOVvv(f$MRg`B}pd1CL`|Kk$1q_^D z8IM!iJ}H#XC$7G0YYkb8xWY2Uj|o+P_seg&uq2ec(_4oKL&mAXlM}t|wl4O^xht0P8lJy{X@>Q8)@ljnsH#S`jl0;=%+V2stG zHKj0tg!Dv&VPr&-`l!y8L)S#&1lk7>_=bst?>6~4LA*cV7Lc!)ED1%c#xYV(7o)u1 z}|80fl=DH*dg*TzHM zvVVt(5SgytUq=JIS@XRBS;^dIw`#_=9o{o;4ic<^sszGl6hXyOPxqk4pGERk$uGeg zuxubk@px&9qBtMVeO@4M*}ue+RTGQbQ+@DKQkIb{nlvh`{2i$P4mpAM#{EOXh7B7q a1OEZ_qE*nM#G;x20000", + "description": "add a short thick gold leafy vine with three broad leaves, sprouting from the round stub at its lower right and trailing out to the right side, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008835690948698256 + } +} diff --git a/pixellab_src/pl_worm/pl_tail_vine.png b/pixellab_src/pl_worm/pl_tail_vine.png new file mode 100644 index 0000000000000000000000000000000000000000..5f231bcd2b98c72d41aa7fd66dca9411d2193ad6 GIT binary patch literal 1809 zcmV+s2k!WZP)77Z(>77Z(>77Z(>77Z(?o{|!n9y+`{Gw4qa8uF;>Y?dt#~+A_ob z8P9f9TP#r`DtyOAPE1TmGdwIha+vSYnP@I+KufiYJ6{ zGm;@X%m`5q*Qbqsb(JnYebCU5#S<}^@u2dp#0*DK9Ij6jZr>g{(i5T_tV?@v+xixs zdeK-~XDe9F=k+AWIXvB_+H`I*? zqB_;@WBNqf_ixQ>NLuA1NYyr?O-h_d%y)1T8bO4EJH zBOmPXUALYkhTQ4vhL+Nx6*k4l2 z=lX^kJT&cb%RHk0Q(igWk)!2&rl3bh?|XU}yr6GtUhh!h09j+k zvXIA~oQu8R7J>qz0h$I&aiCAa5Zt)dgz9s@8L}l#>FvAt9jMA*%EB)-T(^C1-xLq( z55}O|sB$e_Pf+0iX>%4JWkd#FQ$W0Xga^YC`WXYB63yL$j3pS9bT6O9mnY<}pW~@V z!P#!et@$qKopIe%e7&&}lc(Q>`hyu^8$pFbRE!ym^pav8(n$PQBc`FU=>iJVWt{`(b-=lI|t*$t;@Q2LKaWK?zty&Fn8Q|%pS@8oEh-xCN?O2eZoH} z(%+Z8Jgsqf3;$^EHLx^HSP zzi;0ggE>J)vC*T6z)AGXI%LSF!a*o#<>oI%LN8v>;MS199zfJB6{x_+M2qfRH zr%B)gu}Ro&A>IZSk-g+J3*7N~B4)f*V~zuw5N?MG2N~Wc7N`L)WGEO$Rmn5Jz_q^i zFWJK-$iD(zd^Nrb-ky{}0P?Q%4;a1`;+@Ie^(Z96N zICE^c)=Zwj#t@=q@#e0g!Wnoyz>QzIhy@CfR>;B$8a-rezI@OyCyOUxBs#upjDAmu zwiEA^2k=U8RAw>`95}{No?P6@0Nh0Y)HV8EJMZ{TKCd|O3y&N(kKaJa(gi_ZpJR*9 zqk_CZx@NZ*LD7s|kW|7^Y;MGYLq({lKE=ZwMR^KvfBO4(Ym8a38ftPEJx%4wfFkmn zx>RfJ)t2XU$HHa9**pBA1(s!1IKaLwW$51Zj-dM_A~sG%51be>}Sx6W**z_JlcBZMO}L5&tObLPzk89}V{Ud(+HJqHZsq0Jw?d85Oy z?L~QKKF|4=y#0RQUP-ZDmmDa?h(b$hno){vbqor09XrSf;&9vpuGTkU>qpyAS^fj3 zJxTExHn2Zx&!0ke;#6cK75g@?$Ip%DEXz}VbD9h)>XW~|*iWFfMC^br95lVnnury4 zUeIccQ_&7Kd{!tL%Mp0h#ywb@x0nN$_<}heTBsNoD`JHw=chCo^yHZf2JvD}K;mhr zEq!UeZ?lE=4*UC-&g~(p9c2}2ydCn_^GuqgA6D}KktTx*gV@am$q4*&8g0Fqw$H*r zZD)By1YVoBSTh@e#GNfH3@XSAo-M^Jw&1MqUTflITG}}EHif=Pq{3mS(X=2UeBuJ0 zV2)#}lNM%!e&zw}$QGYlX%UKqm480LO1uo5mtlQtTo^9(>Fr1wNZ zx^HjrVnwaN7-r0S2x0bZUL0-9{|hf{stb9RtHN0n8j?s5i58-0B9u7A|33oqk0j=_ zg?Q6iz}7oRe26uFRC^T)=m00000NkvXXu0mjfLRn-p literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_wyrm/base.json b/pixellab_src/pl_wyrm/base.json new file mode 100644 index 0000000..cda3d1e --- /dev/null +++ b/pixellab_src/pl_wyrm/base.json @@ -0,0 +1,20 @@ +{ + "endpoint": "create-image-pixen", + "request": { + "description": "elegant young eastern-style serpent dragon rising in a graceful S-curve, slender long teal body, long narrow snout with two thin drooping crimson whisker barbels, almond-shaped narrow eyes, small crimson scale ridge dots along its spine, pale segmented belly scales, two tiny clawed forelegs near its chest, body ending in a short blunt tail stub on the right side, no horns, no wings, no fins, original cute monster creature design, chibi proportions, teal body with darker teal shading, small crimson details, big expressive eyes, full body, centered, retro handheld game sprite", + "image_size": { + "width": 44, + "height": 44 + }, + "no_background": true, + "outline": "single color black outline", + "detail": "medium detail", + "view": "side", + "direction": "south-west", + "seed": 731 + }, + "usage": { + "type": "usd", + "usd": 0.007901206307941014 + } +} diff --git a/pixellab_src/pl_wyrm/base.png b/pixellab_src/pl_wyrm/base.png new file mode 100644 index 0000000000000000000000000000000000000000..9c690da3bb4c38ea1ff82b6c28fd0e50570f1525 GIT binary patch literal 1696 zcmV;R24DG!P)Mv1JQVDYTuk6euEE3I*F>MO4xjtVSV%EJ})T3$leEe<&!Lkg9-2 zMblCE6BCRVoBv$)K%1Xni3=p+K|cA2M&w&DEQ^#Gca{AV_>S)YXdb0DzLb$ zqEnP$(yAd6+*SC(+@;vRd=-x8e-4wmYz-thF{h{$vb_;{BXwllw?)pFIE3{u zW615_`F_IWx!AdFt@3`^7p3Udvln6>8injFMffmoucn5y|HRonrF>mc z=sXK^kGD6l@FX}LBvjU{mHfV>xD@ZqP3CK|f*o@*&>2V_ne&HcWO5HS-D$+vVNL4b z#@Fx2!V;E$c?=PeQ9MheZ`+5Bk^>hG6m{g=^sxY2QW}0OD!|EaxAM3af;W3|Np*PT z?b-J!vxF@&5_)55M;)1jbQ!10K}zV=tqYfNtzb(^qkD0*qDw?K=Q%taD;xB6gy!~C zito)KuBV=rat;^Cr!#ZtS}v`uombyNDfDoP_;RP>WxD359 z2T)cPj*d0? zw(~w^(M#ywFR-}(@7uQ!3`|-yLOn_;FoKjp!mHy4 zqLH6B=PB1h5n{flaZkci_Q+L9?ST>~A*ldKk~se-1gxklR>nO!K%#v6cS`xIhc4ja z?q4Wq;p)EHCeKeKWKTp>W23MvIh1^WL?1*-5ZCGgq!6+KQc`m{*SbF2rpRvkIH$$T zv)l3J-YRH`NuzdrCO*W}N5aRYX7JG-z8U1SCM_{(+@8n9ju`jk^m-?F-yrb?ZM9M6 z$YFPAItT?dz*(iX7A`X79SO0|_{48jC@FR> zqC!>ylNNGDh>1;2!jH{EKq!Hhzy1TBA!B`T7;m|)n0h}xNEiY~qa72|o$2&YRDeXWI;FXMVTtX{J3%73 zvgetZZs9aVlH@bUTBzrals@WORneJCjjbR5U0viEsi3#2tk*HkP zl-*?EYs;@G!e>~tUk^wK4qm6jwfkDO&|P`aJA qJ=otVL0b2XLpAme97$0o%{Oc z+;h)8=PbZI1}?;Y{9PJ1Ah=LSF5J1zZ-eq9r|F(mQyt3qs=%ow`pAk>7&l`A=o9r2 zryn6yc3f`v>CkG;M-ry6huiTzbU6-T%Pl!&Z83sdeAk@~1lnh%6Gt3rSd(mQj5}y%j!Ko=ea6 z);`!@TmV|aN5c3sv0xEN$a!ZFzKe894+F*iOwt>^ISaAz31mggdym2n&IQ+w*ZJ!c zo`i8n|4~;17k=17ddY}-b~-1yWbyv8hXgB986O`GM_Ix=k`n2ea3SfD(NWY!@^M&Z zmk*+1quuwI7$_UiX5;C^h4fK$7~C-6cZZ@&8N@7g4NH# zX#0@0&8BG=Y1h$-=yEzp#Wb_SNEW5$(NiVYQBj8( zSp<@0c>UT9&5v+sMmxzec1wEF`dlHaNEUB!T>OhXU-wEDcxrn5D zaC;TxJ~0oCP6p?+o{0-s7Th(qS z{>uIaSl6Sb66QyY90r9i7J9v8(nYI)C{dQKFIo5T&V}U<%VE#1Eih(sGU;vaC7VE&`NhGS zF^dYaY6$x~$w(C@&3TXtPrq3V1AYBoj*|+qJd-Y}4@y@plvKjY)vPUD$EVMGk~V`> zZ|4`f%XzC`gW+R?^Bex_za3P2MG2$CFeE}Cc_b^fx5hDMs>2H-lF``)GEFLS7a>8B z@Nc^+gl9&a*;~|GB#Y6B_@hF>`rTG-2y+}q@f#!5(pxX+Ep9kO^S&R2_MIoMLF=L4 z(a2MGPykv6L`LCka1IW#mE*(FVVsah((GB<06zewj34D`C+@2R4o|LyGu$h(!r_2- zkJvyB0$B+~N1d56B%5X`peq!7Ki<7sY7h~QbHnr&H`%BR`GkrRF!hCziOb)KsV(ps0l$6_5vyaU+7|>7M!11`YLYr%5xyb5>Er zK}a>_z%L$^V5HHVR13qb9LjsVTCtye@g12)$cMm$Lq3`jC3~(5GCn$qQeYeBKMbE_q=0MC0kh4ynh~bF1BN|H(5H@~Ob-hN4!^KOOq@@ z4M`WV#bVUnTSE!lwzbpd!#kEY%}=Hc#|{DpOi?j>G$m7b?r7>GvOUdR0@(t+dVeC= zh(p%AZ9O`ak`-q?5mReVLgT`jAU+Wnw_b;RiAj(>&IOC}CaQKXLkW>&NlS@KVYzY@ z4rHW*%i$!uyZI@%gmI-l{Icfm5yl@WX;cve+G(cS5xPjPHb@j<9@ZsTgkZ>qO4x_= z^`wE< literal 0 HcmV?d00001 diff --git a/pixellab_src/pl_wyrm/pl_horns_antler_dragon.json b/pixellab_src/pl_wyrm/pl_horns_antler_dragon.json new file mode 100644 index 0000000..a6135bd --- /dev/null +++ b/pixellab_src/pl_wyrm/pl_horns_antler_dragon.json @@ -0,0 +1,15 @@ +{ + "endpoint": "edit-image-pixen", + "request": { + "image": "", + "description": "add a pair of short thick gold dragon antlers, each with two branching prongs, growing from the top of its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 2, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008083348910013836 + } +} diff --git a/pixellab_src/pl_wyrm/pl_horns_antler_dragon.png b/pixellab_src/pl_wyrm/pl_horns_antler_dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc48771adf0bdc6c832c00b19f54f7aebc177bf GIT binary patch literal 1984 zcmV;x2S50UP)3z_vYRE?!E86 zdk65s3opFz!V53Fa34hZrFUChARFx>WiGd^Hw^G($nY?T>$~bb1B9Ij z3s2H_!z4i1>2cBiIAmtreP%nl+w%Hj%eR@R|0?j{7~gg;h`@^oA?_rKO*2}EqWy7V zZIY=fQKuCbyB92>IS49T-f{Lr8*dLh=fu0s2B?L>D;GPw zxPBrBr`E4#2Go_#J44c&@c0>@p-E&jn4-fSUKU&^WCqASK1g4a?C!a^3`wVPMBjz; z5E9WGAz@85f*Cde$dYm=$PzPRLVh0BM@C^@Nj?g*N-+8C5k2SQG9(?w5G3mAife=u zYy$a5vbfm7((Y-!JwpH#re$MVMm8o|jc0 z+1IE1YZ9&;%y1z7>wPEDC@dJE?SqkOw!mme&)Hve9zO|TaS__87F!E&V%19Jr4Z;k z;Uk20YRS*D&7qjIbRU-kLz*i62(pAb*~KWbX5qqtoqEj65D5@{=Fdgvaq%# zYy&CK7g2XgxGKK)huFGdq1NQ{b$_GbOF?Kkz>HxjdypIxX}B$rYuk}Tort_&at}HC z{^2_HPW7{6nj`x0T_&Cgr;CV6821G?Njsd5CGT~GUr-|!|KBFRgSvoJ%YMAn(fx8W-R6Po(@aU1&%DIF~8Ilt1gzOO&` zfnPu%=G=Y&k3S5x4QYfbR#qB&@_@(~l0aqg*Og+ftjx>v4+zBhQ)e+~N+Oz-TGywqy6xxM%*z-R$QY7<6M4m| z$5vhFs#+VM5>FuFRZPp_0E)+|fKUw`i@3E`-_xwWJqrK4$nLUl&7y%-wU*q)07)&x z?%Z0Nz@?ZuaVW3;j&IhZ+dvBzpS#H~O7oSKcfkSDzDq7R8Bg0|W&2f;z9w1Jgb5Oi z0TZ9Jk*nE)j1Y@h)2Si)BYE^Ory1)6h>nI~XDXx)HB}&H@3! zF9SD9U30x<2}LLKFuQL!5)^0YxfjtF?u7^n^23O6!yPKs)hDY@c*g2iBwlf+rFxMZ zUAuA~LStI9-WQ#_tPl?M&iW;h_WQXuNCs94-?xh3v>#$cpL+cr>xM*DkIeW zp7frGr|1#ClO<*X-6=#~6Dgnoibpa)k|d7*sl;Enc|g;9GJu4vt$Vcg*VA*6v*)y$ zAE?%#k>w`|h#J|GLuTcYB|OOnNHig0f?9TNKnx)%ASRW!v+rB&*yPy_?xJLvCYIT- zX#Z8{30bFcsttUoTOScm29mBCq1*;+Zly$*^@ObRc$FS@hyc=iGI}AAZE8NMEFsJk z%#kDV{qU$_BBleZwab+{JvKsf&=h_G&LSf`stv_k4_jw(It;36pQNbqT-#2&}w zT|wGmhEez;k` z{u7)Sr1<=5+Kf_R8~Vj@Cb^1OA=kxyFa=STXimG$8rTKP+bfx*9=(;HD?E__68Y*B z=BoH5NxLY0PMIJzxUyr+a0hpqj3n6%k``L|gjIVvfjYLJ0JbM(oKw(k!q6X@AtYx= zWd?0u_PIa}<*GqR(%gVDBwM;^Fl_Z+?Qxmetd;4X0V1BF#VYXwg8tKet`gjX%C|!Riw`~he}F_> z`+)+0dD}5qhjn-Okz!PKE;gD>=n!hd$nH_PABQEl4^=XOVDHg6p9w~0W#iX&k+7AO z@xDKQkm630BrQ$dQGXZ!pu(w;RDwW$g31VI1`y$dJ`JvG7T+Dj8xa(BU_$P{*@$>8 zvO*(bipmgY*b(lQ`ARSb%m|7QIq%_B5wE7v-91kU#-b+vd!79|=!F+}aqvG-EKv5S S1Vz~Z0000", + "description": "add one single small round shining gold pearl orb resting against the back of its curved neck on the right side, just behind its head, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 3, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008364033275180392 + } +} diff --git a/pixellab_src/pl_wyrm/pl_pearl_orb.png b/pixellab_src/pl_wyrm/pl_pearl_orb.png new file mode 100644 index 0000000000000000000000000000000000000000..b628e497584a427edc25a72352406043f3d2c870 GIT binary patch literal 2029 zcmVL3f7=$Y8Dxx;`Et8`$$eTHbpg~k=0a2zagixM(u~r zRECzLA{uIrl=7R#6htsS8X%xdN==gj_cVLIcQ5ZD$jAGx&w6X-&b#;AbIv_$?{oIq zXYU7i;DHAoc;JBt9(dq^2OfCf!T$~d?gM!>#wBp|Aup69I2H5>-Duj_6kKI!u~ z(8~&632Zwf{<8v*8u^Q*i}b=V4^1^q2v!&O-z5T$%lWwXW|$(spbH1SD`AIJ5PqcG6V3j+oX)L+(?o`#S%*{G0EAW)lE zfr7MkIR0AjC7p%6TxRt6+J!KvA35ofrSOj)jUfTPTyVOi8d8-IieR#Bk&=;%C&Ge} zR9uYtnLD{m6NFjhjrxeZ`@>c68|&|+X(6q|O5)Y)IFk+*J*?WL5M{P0o?n-sv$$rFYn@!j2g-*2!t zhDQeS5+O8}HK3-T2;~QM88I$XW`LZ&@3;8#4{zRun#Tn^% zxzVCp25&-mY-N(HbWDckN#&$;@NoW!rLD z5M&3IhYv$Y)1OS9h|@)+79_0X_J{W8BW2NKsA>yO|IJHg<7zr%!LL5fzDC*Jo?ABlEvZ1ZCI{O5l z7rNV52j$(GJ=Sj2)jOWBb8Al`HS+n#Vp;n;QqvH1*X>w!w2u9U#_DRW&;#QX$|m=VSgCF#5i zX=evhW`JSj38Z;4e0{xrfYawX?IUK*n|xDWa1tx-@W+By;=-+Cf`hzzAub`-Vci4I zrrWenR-e#`_9cbZD85jaTaFd8M#An+i)$h({NG7_cBF2=nPZhY`BPbi{M*%S zkIokaBgq>nfc88+p8Dga*^a|=lNO`#?0G&cQOrP5EL|bb+9%M_nY3>-tOoSKM`I0{ z%aUc#w7b|iC8jL1ml8*bnE2=TDf02B(08a;mp?#(mVf>{4_81jq7ynAXD&8u^m?J*@e;NsHJ35{`YlgMW#5O-?x~cOB-O zKxYQ6KCco|su&$N1S>Zb!DHd#EIZkxJ9KIpcYd~c8XbPJn;MnQ21yt<DTX4TMTV1)~iy*3>_f&O~XLyoZd@4k_Nyr#W_gYbD{6M2B0 z9b6>E9mxsO@{ISFSK!e8Glq@T3KwAN(s-R$@U#f*u^)UiA=La-h8BCGv@`fk8P93A zq|~j*J=K5@CXB%>7$*P)E<-E9CEhBh!?gW;;0@kLn-huXBzBD2ixqMi9eIOq59LJb z3-?UM>W~1a&CR%V`ee5ifFNJJaCeTwhF~MD;=K`HRZg+&pH+b)dUr^Df86VGx z!n+yys2Tu#yEG0BC+iXW{&uV$JBsrTugnW^|I^^l`*QF{Wfij5ZsuRg0wv#hBhD0@ z#oU7J&Zg{5Wq`o@un7%nj{YK-B>VFA~nLm{*k1RT!FihzhTR`F}&x~wK679 zpIND2WL!G}0N|7jCeV@~ke{I01`S$@j7Ssi=v}8Y+BPi-5gvz2)1crxPQi+73 z38XC?h`VIG0_K1PK@p<1dw56WwKTe`$0=Yg", + "description": "extend its body into a long teal tail curling up on the right side, ending in a fan-shaped crimson fin, keep everything else exactly the same", + "width": 64, + "height": 64, + "seed": 1, + "no_background": true + }, + "usage": { + "type": "usd", + "usd": 0.008324551158481174 + } +} diff --git a/pixellab_src/pl_wyrm/pl_tail_dragon_fin.png b/pixellab_src/pl_wyrm/pl_tail_dragon_fin.png new file mode 100644 index 0000000000000000000000000000000000000000..2d14bf8c03cc79f050b73af973147c1c9ffef150 GIT binary patch literal 2120 zcmV-O2)Fl%P)6iW@(+5!V9fq)=DQCzsqIlJ%jSoSUKADZ*NnajQV-o5YL@7#0F zJ@-5S6DCZUFk!-k2@@tvm@r|W7E{0HWVW9)rlIhdAw&mp+a#e8wkuJMw2ArY| z+sf)NdsyFY4Oa30hIoC%Sjr00#!#VnLOd~o5pfIX23w)SMUq&D*D!Nf=2Ip z`|=4)JSsY>(@i2zAakHTzM%TU(AR`U-*GpFOdf%L!}{}uN=F46D;wK8xXEiEEyzku zLE?xwtidF|g>c&GpgG*s*>!2^ZGB!uqHiJhN@&lgR_%^P>g-=nNCD6Bfk?T3Cn;PaUl zgaAaAh*Qz9{ef)kS@txJeEb0{YWr)-^N(_WO+cgx7g-Zrnvg!pulH^kee#%A8jK7o*(J`h=XM^L)+F#7b3 z#lUgN>F-kF^4L5Wt8Qt$H08Q0&< zJMNyN*J3 zeT&zfhH$2~nQIbysE+b#AcKbYjW(Kqa@(QZ!ai#rwZ#u*u1L(AO-DsX(d9M&zLCNISuV=@bK^Dh7Z)dKf&!lMNeyh&{m#RTyC>|L3)2Z$g$CR zq07NSz&gMh(gVF*ELIZD+9;<%Z zl+n`e8*1yhUGwu_0Y`LA_3Z&u;>f{x=_}){vpY}`Josp=;fn{CiGA6yi0Lx{Zz!nCvY+)GPX~!b4N%tfU-beJh+@yn}k8+J@@<6{!{rL70MX( z8#xH>7~gO8ZF9C^@HkhNiB6H{TmV0;eoMAV5Cr{xPvj|kq}`*Vt!FaDUpP;mmF++U z8M3rEkKde|Y*#H)TR<96NeC82ql z5S&dqe6TR!XQ&7RzFVD(_@P#r^uXZD`1-)n!&nIM$w^pK@Av00F>U1vnHMBzLD8Ah z?GEw05I{!O0@wZ0}YqCzZEX$V7;qc=j|`Bp56#2m|P=PyO)Y*SX?)0;v5IhCpiG_|5e3EM8`vi?Rt@`UZTSGc`1>pl5yQdJy zBnT8IXoBc8&`o@DuPXk4>OnrFb5;;ubPz)6(PAWB-uWOyLeT``iEymC9twH}EC|XF yX)D?ldAE&+eVz(>7XF;sFSP$-HemwiA^rmjHL1fIQ9}v<0000 ... # default library: pixellab python preview.py bases # every base creature, bare and lightly varied python preview.py body # one base with markings and a few variations @@ -13,7 +15,7 @@ Contact sheets for the sprite part library. Writes PNGs into preview/ (or $PREVI Options: --markings (default none), --scale N, --type (type ramp) Grid sheets are drawn in three test palettes (dark / light / near-gray), one row block each. -Cells with a red frame triggered "canvas expanded". Set PARTS_DIR to preview another library. +Cells with a red frame triggered "canvas expanded". Set PARTS_DIR to override the library's parts folder. """ import os import random @@ -23,16 +25,27 @@ from pathlib import Path from PIL import Image, ImageDraw import generate_sprite as gs -import sprite_parts as cfg +from sprite_parts import TYPES OUT = Path(os.environ.get("PREVIEW_OUT", "preview")) # set PREVIEW_OUT to keep sheets apart -PARTS = os.environ.get("PARTS_DIR", "parts") +lib = None # registry module, set in main +PARTS = None PALETTES = [("dark", ["#0D47A1", "#FFC107"]), ("light", ["#FFEB3B", "#5D4037"]), ("gray", ["#757575", "#E53935"])] BG = (226, 226, 220, 255) LABEL_H = 9 -BY_NAME = {slot: {p["name"]: p for p in parts} for slot, parts in cfg.SLOTS.items()} -DEFAULT_BODY = "base_fox" +BY_NAME = {} +DEFAULT_BODY = None + + +def use_library(name): + """Point the module state at a registry module.""" + global lib, PARTS, BY_NAME, DEFAULT_BODY + lib = gs.load_library(name) + PARTS = os.environ.get("PARTS_DIR", lib.PARTS_DIR) + BY_NAME = {slot: {p["name"]: p for p in parts} for slot, parts in lib.SLOTS.items()} + names = [b["name"] for b in lib.BODY] + DEFAULT_BODY = "base_fox" if "base_fox" in names else (names[0] if names else None) def P(slot, name): @@ -62,7 +75,7 @@ def allowed(slot, name, chosen): def top_type(slot, name): p = P(slot, name) - return max(cfg.TYPES, key=lambda t: gs.part_weight(p, t)) + return max(TYPES, key=lambda t: gs.part_weight(p, t)) def typed(chosen, ptype): @@ -94,7 +107,7 @@ def sheet(cells, path, ptype=None, markings="none", scale=4, cols=6): return cols = min(cols, len(cells)) rows_per = (len(cells) + cols - 1) // cols - cw, ch = gs.CANVAS, gs.CANVAS + LABEL_H + cw, ch = lib.CANVAS, lib.CANVAS + LABEL_H block_h = rows_per * ch + 12 img = Image.new("RGBA", (cols * cw, block_h * len(PALETTES)), BG) d = ImageDraw.Draw(img) @@ -104,15 +117,15 @@ def sheet(cells, path, ptype=None, markings="none", scale=4, cols=6): for i, (label, chosen) in enumerate(cells): cx, cy = (i % cols) * cw, y0 + 12 + (i // cols) * ch sprite = compose(chosen, markings) - expanded = max(sprite.width + 2, sprite.height + gs.GROUND_MARGIN + 1) > gs.CANVAS - spr = colored(gs.place_on_canvas(sprite), colors, typed(chosen, ptype)) + expanded = max(sprite.width + 2, sprite.height + lib.GROUND_MARGIN + 1) > lib.CANVAS + spr = colored(gs.place_on_canvas(sprite, lib), colors, typed(chosen, ptype)) if spr.size[0] > cw: - spr = spr.crop(((spr.width - cw) // 2, spr.height - gs.CANVAS, (spr.width + cw) // 2, spr.height)) + spr = spr.crop(((spr.width - cw) // 2, spr.height - lib.CANVAS, (spr.width + cw) // 2, spr.height)) img.alpha_composite(spr, (cx, cy)) if expanded: - d.rectangle((cx, cy, cx + cw - 1, cy + gs.CANVAS - 1), outline=(220, 0, 0, 255)) + d.rectangle((cx, cy, cx + cw - 1, cy + lib.CANVAS - 1), outline=(220, 0, 0, 255)) label = f"{label} {sprite.width}x{sprite.height}!" - d.text((cx + 1, cy + gs.CANVAS - 1), label[:19], fill=(40, 40, 40, 255)) + d.text((cx + 1, cy + lib.CANVAS - 1), label[:19], fill=(40, 40, 40, 255)) OUT.mkdir(parents=True, exist_ok=True) img.resize((img.width * scale, img.height * scale), Image.NEAREST).save(path) print(path) @@ -184,12 +197,16 @@ def raw_sheet(items, path, scale=8, cols=6): def variation(b): - """A light, legal variation for a base: first allowed head_top, back and tail in a fixed list.""" + """A light, legal variation for a base: first allowed head_top, back and tail in a fixed list + (any part of the slot if the library has none of the listed names).""" chosen = {"body": b} prefs = {"head_top": ["leaf_sprout", "crest_flame", "gem_forehead", "horn_single"], "back": ["wings_feather_small", "wings_bug", "spikes_back", "dorsal_fin"], "tail": ["tail_flame_tip", "tail_leaf", "tail_fish_fin", "tail_stinger", "tail_wispy", "tail_rattle"]} for slot, names in prefs.items(): + known = BY_NAME.get(slot, {}) + if not any(n in known for n in names): + names = [n for n in known if n != "none"] for n in names: if exists(slot, n) and allowed(slot, n, {**chosen, slot: n}): chosen[slot] = n @@ -198,9 +215,9 @@ def variation(b): def parse_opts(args): - opts, rest, it = {"markings": "none", "scale": None, "type": None}, [], iter(args) + opts, rest, it = {"markings": "none", "scale": None, "type": None, "library": gs.DEFAULT_LIBRARY}, [], iter(args) for a in it: - if a in ("--markings", "--scale", "--type"): + if a in ("--markings", "--scale", "--type", "--library"): opts[a[2:]] = next(it) else: rest.append(a) @@ -209,6 +226,10 @@ def parse_opts(args): def main(argv): opts, args = parse_opts(argv) + if opts["library"] not in gs.LIBRARIES: + print(f"unknown library {opts['library']!r}, choose from {', '.join(gs.LIBRARIES)}") + return + use_library(opts["library"]) scale = int(opts["scale"]) if opts["scale"] else None kw = {"markings": opts["markings"], "scale": scale or 4, "ptype": opts["type"]} if not args: @@ -223,7 +244,7 @@ def main(argv): elif cmd == "body": b = args[1] cells = [("bare", {"body": b}), ("varied", variation(b))] - cells += [(m, {"body": b, "_markings": m}) for m in cfg.MARKINGS if m != "none"] + cells += [(m, {"body": b, "_markings": m}) for m in lib.MARKINGS if m != "none"] sheet(cells, OUT / f"body_{b}.png", **kw) elif cmd == "part": slot, name = args[1], args[2] @@ -258,10 +279,11 @@ def main(argv): groups.append(cur) zoom_sheet(groups, OUT / "zoom.png", scale=scale or 5, markings=opts["markings"], ptype=opts["type"]) elif cmd == "all": - main(["bases"]) - for slot in cfg.SLOTS: - main(["raw", slot]) - main(["slot", slot]) + lflag = ["--library", opts["library"]] + main(lflag + ["bases"]) + for slot in lib.SLOTS: + main(lflag + ["raw", slot]) + main(lflag + ["slot", slot]) else: print(__doc__) diff --git a/sprite_parts.py b/sprite_parts.py index 4b64964..c66e2d9 100644 --- a/sprite_parts.py +++ b/sprite_parts.py @@ -22,6 +22,12 @@ Editing this file changes which parts existing businesses get, since every pick draws from the same seeded random sequence. """ +# Library constants (see generate_sprite.LIBRARIES) +NAME = "classic" +CANVAS = 96 # final sprite size (square) +GROUND_MARGIN = 4 # empty rows under the feet +PARTS_DIR = "parts" + TYPES = [ "normal", "fire", "water", "grass", "electric", "ice", "fighting", "poison", "ground", "flying", "psychic", "bug", "rock", "ghost", "dragon", diff --git a/sprite_parts_pl.py b/sprite_parts_pl.py new file mode 100644 index 0000000..378da8e --- /dev/null +++ b/sprite_parts_pl.py @@ -0,0 +1,217 @@ +""" +Part library generated with PixelLab (64x64 sprites). Same interface as sprite_parts.py. + +The library is described by one JSON spec per base creature in pixellab_library/.json +(schema in pixellab_library.py). The spec says how the art is generated (prompts, seeds), +how parts are extracted, and how they are picked (types, plans, tags). This module turns the +specs into the picking tables generate_sprite.py uses. Only parts that have been extracted +(parts_pl//.png exists) are registered. + +Differences from the classic library: +- Every body is available to every type (`other` defaults to 1); `types` only boosts. +- Parts with a fixed-color ramp ("fixed": "fire", ...) are type-locked: they must list + `types` and have other=0. +- `fits()` keeps every random pick inside the 64x64 canvas, so parts from any body can be + offered to every body without hand-written size deny lists. +""" +import json +from pathlib import Path + +from sprite_parts import MOTIF_PAIRS as CLASSIC_MOTIF_PAIRS +from sprite_parts import PLAN_WEIGHTS as CLASSIC_PLAN_WEIGHTS +from sprite_parts import PLANS, TYPES, TYPE_COLORS, none, part # noqa: F401 (TYPES/TYPE_COLORS re-exported) + +NAME = "pixellab" +CANVAS = 64 +GROUND_MARGIN = 3 +PARTS_DIR = "parts_pl" +SPEC_DIR = Path(__file__).with_name("pixellab_library") + +ALL = PLANS +FEATURE_SLOTS = ("head_top", "back", "tail") +DISABLED_SLOTS = {"aura"} +MAX_FEATURES = 2 +MOTIF_SAME, MOTIF_CLASH = 2.5, 0.08 +# Detailed generated art doesn't take painted-on spots well; markings stay off. +MARKINGS = {"none": {"_other": 1}} +# Weight of an empty slot, per slot. With MAX_FEATURES = 2 and head_top/back picked before tail, +# these give about: head_top 69%, back 55%, tail 51% filled, 2% plain (simulated over all types +# with 31 bodies / 111 parts). Re-tune when the library grows a lot. +NONE_WEIGHT = {"head_top": 10.0, "back": 16.0, "tail": 1.0} +PLAN_FLOOR = 1.0 # every plan stays possible for every type + + +class SpecError(Exception): + pass + + +def load_specs(spec_dir=SPEC_DIR): + specs = [] + for path in sorted(Path(spec_dir).glob("*.json")): + spec = json.loads(path.read_text()) + spec["_path"] = str(path) + specs.append(spec) + return specs + + +def _plans(value): + return list(ALL) if value in (None, "all") else list(value) + + +def _build(specs, parts_dir=PARTS_DIR): + body, slots, motifs = [], {s: [] for s in FEATURE_SLOTS}, {} + deny_from_parts = {} + for s in specs: + name = s["name"] + for p in s.get("parts", []): + if p.get("skip"): + continue + if p.get("fixed") and (p.get("other", 0) or not p.get("types")): + raise SpecError(f"{s['_path']}: {p['name']} uses fixed colors '{p['fixed']}' and must be " + f"type-locked: give it 'types' and other=0") + if not (Path(parts_dir) / p["slot"] / f"{p['name']}.png").exists(): + continue + palette = "fixed" if p.get("fixed") else p.get("palette", "main") + entry = part( + p["name"], _plans(p.get("plans")), p.get("types"), p.get("other", 0.3), + tags=list(p.get("tags", [])) + [f"_slot_{p['slot']}"], requires=p.get("requires", ()), + excludes=p.get("excludes", ()), palette=palette, z=p.get("z"), + desc=p.get("desc", p.get("edit", "")) + f" (from {name})") + entry["source"] = name # the body it was generated on (see attached()) + slots[p["slot"]].append(entry) + if p.get("motif"): + motifs[p["name"]] = p["motif"] + for b in p.get("deny_bodies", []): + deny_from_parts.setdefault(b, []).append(p["name"]) + if not (Path(parts_dir) / "body" / f"{name}.png").exists(): + continue + heads = [s["head"]] if isinstance(s.get("head"), str) else list(s.get("head", [])) + closed = [f"_slot_{slot}" for slot in FEATURE_SLOTS if slot not in s.get("slots", FEATURE_SLOTS)] + body.append(part( + name, [s["plan"]], s.get("types"), s.get("other", 1.0), tags=heads + list(s.get("tags", [])), + excludes=list(s.get("excludes", [])) + closed, deny=list(s.get("deny", [])), desc=s.get("desc", ""))) + for b in body: + b["deny"] += deny_from_parts.get(b["name"], []) + table = {"body": body, "aura": []} + for slot in FEATURE_SLOTS: + table[slot] = [none(other=NONE_WEIGHT[slot])] + slots[slot] + return table, motifs + + +SLOTS, MOTIFS = _build(load_specs()) +BODY = SLOTS["body"] +MOTIF_PAIRS = set(CLASSIC_MOTIF_PAIRS) + +_present = {b["plans"][0] for b in BODY} +PLAN_WEIGHTS = {t: {plan: CLASSIC_PLAN_WEIGHTS[t].get(plan, 0) + PLAN_FLOOR for plan in PLANS if plan in _present} + for t in TYPES} + + +# ------------------------------------------------------------------ canvas fit + attachment + +_extents = {} +_touch = {} + + +def _extent(slot, name): + """(anchors, opaque bbox, opaque mask without marker pixels) of a compiled part, cached.""" + key = (slot, name) + if key not in _extents: + import numpy as np + from PIL import Image + + import generate_sprite as gs # lazy: generate_sprite imports this module by name + img, anchors = gs.load_part(PARTS_DIR, slot, name) + raw = np.array(Image.open(Path(PARTS_DIR) / slot / f"{name}.png").convert("RGBA")) + mask = raw[..., 3] > 0 + for col in gs.MARKERS.values(): + mask &= ~np.all(raw[..., :3] == col, axis=-1) + _extents[key] = (anchors, img.getbbox(), mask) + return _extents[key] + + +MIN_COMPONENT = 6 # smaller specks are ignored by the attachment check + + +def _components(mask): + """8-connected components of a mask with at least MIN_COMPONENT pixels, as (ys, xs) arrays.""" + import numpy as np + seen = np.zeros_like(mask) + h, w = mask.shape + out = [] + for y0, x0 in zip(*np.nonzero(mask)): + if seen[y0, x0]: + continue + seen[y0, x0] = True + stack, comp = [(y0, x0)], [] + while stack: + y, x = stack.pop() + comp.append((y, x)) + for ny in (y - 1, y, y + 1): + for nx in (x - 1, x, x + 1): + if 0 <= ny < h and 0 <= nx < w and mask[ny, nx] and not seen[ny, nx]: + seen[ny, nx] = True + stack.append((ny, nx)) + if len(comp) >= MIN_COMPONENT: + out.append(tuple(np.array(comp).T)) + return out + + +_comps = {} + + +def contacts(body_name, slot, part_name): + """For each sizeable piece of the part (placed at the body's anchor): does it touch the body + (overlap or 8-adjacent)? Tuple of bools, one per piece, in a fixed order.""" + key = (body_name, slot, part_name) + if key not in _touch: + import numpy as np + banch, _, bmask = _extent("body", body_name) + panch, _, pmask = _extent(slot, part_name) + if (slot, part_name) not in _comps: + _comps[(slot, part_name)] = _components(pmask) + grown = bmask.copy() + for dy in (-1, 0, 1): + for dx in (-1, 0, 1): + grown |= np.roll(np.roll(np.pad(bmask, 1), dy, 0), dx, 1)[1:-1, 1:-1] + ox, oy = banch[slot][0] - panch["pivot"][0], banch[slot][1] - panch["pivot"][1] + hits = [] + for ys, xs in _comps[(slot, part_name)]: + xs, ys = xs + ox, ys + oy + inside = (xs >= 0) & (ys >= 0) & (xs < bmask.shape[1]) & (ys < bmask.shape[0]) + hits.append(bool(grown[ys[inside], xs[inside]].any())) + _touch[key] = tuple(hits) + return _touch[key] + + +_bodies = {b["name"] for b in BODY} + + +def attached(body, slot, p): + """Every piece of the part that touches its own source body must touch this body too. A pair + of wings needs both wings attached; a stemless tail or back spikes can't hang in mid-air; + pieces that float free by design (halo, sparks, orbs) may float anywhere.""" + here = contacts(body["name"], slot, p["name"]) + source = p.get("source") + home = contacts(source, slot, p["name"]) if source in _bodies else (True,) * len(here) + return all(h or not s for h, s in zip(here, home)) + + +def fits(body, picks): + """True if `body` plus `picks` ({slot: part}) composes within CANVAS, using the same placement + as generate_sprite.compose + place_on_canvas, and every part is attached to the body.""" + banch, bb, _ = _extent("body", body["name"]) + bx, by = banch["pivot"] + boxes = [(bb[0] - bx, bb[1] - by, bb[2] - bx, bb[3] - by)] + for slot, p in picks.items(): + if p["name"] == "none": + continue + if not attached(body, slot, p): + return False + anch, pb, _ = _extent(slot, p["name"]) + ax, ay = banch[slot] + ox, oy = ax - bx - anch["pivot"][0], ay - by - anch["pivot"][1] + boxes.append((pb[0] + ox, pb[1] + oy, pb[2] + ox, pb[3] + oy)) + w = max(b[2] for b in boxes) - min(b[0] for b in boxes) + h = max(b[3] for b in boxes) - min(b[1] for b in boxes) + return w + 2 <= CANVAS and h + GROUND_MARGIN + 1 <= CANVAS diff --git a/validate_parts.py b/validate_parts.py index 41ff20f..ed343b5 100755 --- a/validate_parts.py +++ b/validate_parts.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Validate the part library in parts/. +Validate a part library (default: the pixellab one in parts_pl/; --library classic for parts/). Fails on: - a missing file for any part listed in sprite_parts.py @@ -8,9 +8,10 @@ Fails on: - any partial alpha - a missing (or duplicated) required marker for the slot / body type - any legal composite that triggers "canvas expanded": checked exhaustively per body - via bounding boxes, plus a random sample of real composites + via bounding boxes (only for libraries without a fits() rule), plus a random sample of + real composites - python validate_parts.py [--sample N] + python validate_parts.py [--library pixellab|classic] [--sample N] [--verbose] """ import random import sys @@ -21,10 +22,11 @@ import numpy as np from PIL import Image import generate_sprite as gs -import sprite_parts as cfg +from sprite_parts import TYPES -PARTS = Path("parts") -ALLOWED = {tuple(v) for v in gs.KEYS.values()} | {gs.PUPIL, gs.EYE_WHITE} | {tuple(v) for v in gs.MARKERS.values()} +lib = None # registry module, set in main +PARTS = None +ALLOWED = {tuple(v) for v in gs.KEYS.values()} | {gs.PUPIL, gs.EYE_WHITE} | {tuple(v) for v in gs.MARKERS.values()} | gs.FIXED_COLORS MARKER_BY_COLOR = {v: k for k, v in gs.MARKERS.items()} @@ -87,7 +89,7 @@ def exhaustive_extents(): found by taking each side's extreme from a different slot (or one part covering both).""" problems = [] worst = {} - for body in cfg.BODY: + for body in lib.BODY: plan = body["plans"][0] b = bbox_of("body", body["name"]) if b is None: @@ -100,7 +102,7 @@ def exhaustive_extents(): opt = {} for slot in gs.PICK_ORDER[1:]: lst = [] - for p in cfg.SLOTS[slot]: + for p in lib.SLOTS[slot]: if p["name"] == "none" or plan not in p["plans"] or p["name"] in body["deny"]: continue if p["requires"] and not set(p["requires"]) & tags: @@ -138,10 +140,10 @@ def exhaustive_extents(): w, wwhy = worst_span(0, 2, fx0, fx1) h, hwhy = worst_span(1, 3, fy0, fy1) worst[body["name"]] = (w, h, wwhy, hwhy) - if w + 2 > gs.CANVAS: - problems.append(f"{body['name']}: worst width {w} > {gs.CANVAS - 2} ({wwhy})") - if h + gs.GROUND_MARGIN + 1 > gs.CANVAS: - problems.append(f"{body['name']}: worst height {h} > {gs.CANVAS - gs.GROUND_MARGIN - 1} ({hwhy})") + if w + 2 > lib.CANVAS: + problems.append(f"{body['name']}: worst width {w} > {lib.CANVAS - 2} ({wwhy})") + if h + lib.GROUND_MARGIN + 1 > lib.CANVAS: + problems.append(f"{body['name']}: worst height {h} > {lib.CANVAS - lib.GROUND_MARGIN - 1} ({hwhy})") return problems, worst @@ -149,37 +151,52 @@ def sample_composites(n): problems = [] rng = random.Random(12345) for i in range(n): - ptype = rng.choice(cfg.TYPES) + ptype = rng.choice(TYPES) prng = random.Random(i) - plan, chosen, markings, tags = gs.pick_parts(ptype, prng) + plan, chosen, markings, tags = gs.pick_parts(lib, ptype, prng) if any(not (PARTS / s / f"{p['name']}.png").exists() for s, p in chosen.items() if p["name"] != "none"): continue spr = gs.compose(str(PARTS), chosen, markings, prng) - if max(spr.width + 2, spr.height + gs.GROUND_MARGIN + 1) > gs.CANVAS: + if max(spr.width + 2, spr.height + lib.GROUND_MARGIN + 1) > lib.CANVAS: problems.append(f"sample {ptype} seed {i}: {spr.width}x{spr.height} " f"({', '.join(f'{s}={p['name']}' for s, p in chosen.items())})") return problems def main(argv): + global lib, PARTS n = 2000 if "--sample" in argv: n = int(argv[argv.index("--sample") + 1]) + name = argv[argv.index("--library") + 1] if "--library" in argv else gs.DEFAULT_LIBRARY + if name not in gs.LIBRARIES: + print(f"unknown library {name!r}, choose from {', '.join(gs.LIBRARIES)}") + return 2 + lib = gs.load_library(name) + PARTS = Path(lib.PARTS_DIR) + print(f"library {name} ({PARTS}/, canvas {lib.CANVAS})") + if not lib.BODY: + print("library is empty (no bodies), nothing to validate") + return 0 errs = [] - for slot, parts in cfg.SLOTS.items(): + for slot, parts in lib.SLOTS.items(): for p in parts: if p["name"] != "none": errs += check_file(slot, p) - size_probs, worst = exhaustive_extents() - errs += size_probs + if hasattr(lib, "fits"): + worst = {} + print("exhaustive size check skipped: library has a fits() rule, relying on the random sample") + else: + size_probs, worst = exhaustive_extents() + errs += size_probs errs += sample_composites(n) for e in errs: print("FAIL", e) if "--verbose" in argv: for b, (w, hh, ww, hw) in sorted(worst.items()): print(f"{b:16s} worst {w}x{hh} w:{ww} h:{hw}") - total = sum(1 for parts in cfg.SLOTS.values() for p in parts if p["name"] != "none") - present = sum(1 for slot, parts in cfg.SLOTS.items() for p in parts + total = sum(1 for parts in lib.SLOTS.values() for p in parts if p["name"] != "none") + present = sum(1 for slot, parts in lib.SLOTS.items() for p in parts if p["name"] != "none" and (PARTS / slot / f"{p['name']}.png").exists()) print(f"{present}/{total} parts present, {len(errs)} problem(s)") return 1 if errs else 0