#!/usr/bin/env python3 """ 🎮 DOLINA SMRTI - HYBRID STYLE PRODUCTION Direct integration with agent's generation capabilities Saves all assets to proper folders automatically """ import json from pathlib import Path # Output directory structure OUTPUT_BASE = Path("/Users/davidkotnik/repos/novafarma/assets/images") # Approved Hybrid Style Formula STYLE_PREFIX = """dark hand-drawn 2D stylized indie game art, bold thick black hand-drawn outlines, smooth vector rendering, cartoon-style exaggerated proportions but dark mature atmosphere NOT Disney, mature 90s cartoon aesthetic, """ STYLE_SUFFIX = """, stylized character NOT realistic, mature indie game art, solid bright green background RGB(0,255,0) chroma key green screen, game asset, PNG""" # Generate asset list for agent to process def generate_asset_queue(): """Generate list of all assets to create""" assets = [] # Main characters gronk = f"{STYLE_PREFIX}Gronk the troll, massive green-grey skinned troll, PINK dreadlocks very prominent, stretched earlobes with large gauges, facial piercings, holding colorful vape device with pink smoke, wearing LOOSE BAGGY black t-shirt with band logo, LOOSE WIDE black pants, pink sneakers, peaceful zen expression, full body visible from head to feet standing on ground{STYLE_SUFFIX}" kai = f"{STYLE_PREFIX}Kai teenage boy survivor, post-apocalyptic nomad style, GREEN natural dreadlocks hair, stretched earlobes with plugs visible, facial piercings on nose and lip, wearing dirty worn blue jacket, torn jeans, combat boots, survival backpack, determined serious expression, athletic build, full body visible from head to feet standing on ground{STYLE_SUFFIX}" ana = f"{STYLE_PREFIX}Ana teenage girl explorer, Kai's twin sister, PINK dreadlocks hair, stretched earlobes with small plugs, wearing brown adventure vest over green shirt, blue jeans, brown boots, leather backpack with map, kind curious expression, full body visible from head to feet standing on ground{STYLE_SUFFIX}" assets.append({"cat": "npcs", "file": "gronk_troll.png", "prompt": gronk}) assets.append({"cat": "npcs", "file": "kai_survivor.png", "prompt": kai}) assets.append({"cat": "npcs", "file": "ana_explorer.png", "prompt": ana}) # NPCs npcs = [ ("npc_trader.png", "wasteland trader, nomadic merchant with cart, weathered face, hooded cloak"), ("npc_blacksmith.png", "nomadic blacksmith, leather apron, strong arms, hammer, burns"), ("npc_healer.png", "herbalist healer woman, herb pouch, kind elderly, flower crown"), ("npc_hunter.png", "wasteland hunter, crossbow, animal pelts, face paint"), ("npc_farmer.png", "apocalypse farmer, patched overalls, straw hat, hoe"), ("npc_mechanic.png", "mechanic survivor, oil stained, wrench, welding goggles"), ("npc_soldier.png", "ex-military survivor, tactical vest, rifle, scarred"), ("npc_medic.png", "field medic, white coat blood stains, medical bag"), ("npc_elder.png", "wise tribal elder, walking stick, long white beard"), ("npc_child.png", "survivor orphan child, oversized clothes, teddy bear"), ("npc_cook.png", "camp cook, pot and ladle, big belly, friendly"), ("npc_scout.png", "nomad scout, binoculars, light armor, agile"), ] for file, desc in npcs: prompt = f"{STYLE_PREFIX}2D indie game character, {desc}, full body standing{STYLE_SUFFIX}" assets.append({"cat": "npcs", "file": file, "prompt": prompt}) # Animals animals = [ ("susi_dachshund.png", "Susi dachshund dog, brown and black, long body, floppy ears, pink collar, happy"), ("dog_husky.png", "husky dog, fluffy grey white, blue eyes, friendly"), ("cow_spotted.png", "dairy cow, black white spots, friendly"), ("chicken_white.png", "white chicken, red comb, pecking"), ("pig_pink.png", "pink pig, curly tail, muddy happy"), ("horse_brown.png", "brown horse, black mane, majestic"), ("deer_forest.png", "forest deer, brown, antlers, graceful"), ("wolf_grey.png", "grey wolf, fierce, pack hunter"), ] for file, desc in animals: prompt = f"{STYLE_PREFIX}2D indie game animal sprite, {desc}, full body side view{STYLE_SUFFIX}" assets.append({"cat": "zivali", "file": file, "prompt": prompt}) # Zombies zombies = [ ("zombie_basic.png", "basic zombie, shambling, torn clothes, grey skin, undead"), ("zombie_runner.png", "fast zombie, sprinting, aggressive, rage face"), ("zombie_bloated.png", "bloated zombie, huge swollen, toxic green drool"), ("zombie_dreadlocks.png", "zombie with dreadlocks, brown shirt, farmer style"), ] for file, desc in zombies: prompt = f"{STYLE_PREFIX}2D indie game monster sprite, {desc}, full body{STYLE_SUFFIX}" assets.append({"cat": "mutanti", "file": file, "prompt": prompt}) # Environment envs = [ ("tree_oak.png", "oak tree, green leaves, brown trunk"), ("tree_dead.png", "dead tree, no leaves, gnarled branches, wonky crooked"), ("bush_green.png", "green bush, leafy, slightly warped shape"), ("rock_large.png", "large boulder, moss, weathered"), ("campfire.png", "campfire, flames, logs burning"), ] for file, desc in envs: prompt = f"{STYLE_PREFIX}2D indie game object sprite, {desc}, environment asset{STYLE_SUFFIX}" assets.append({"cat": "environment", "file": file, "prompt": prompt}) return assets # Generate queue if __name__ == "__main__": assets = generate_asset_queue() # Save to JSON for agent to process queue_file = Path("/Users/davidkotnik/repos/novafarma/asset_queue.json") with open(queue_file, 'w') as f: json.dump(assets, f, indent=2) print(f"✅ Generated queue: {len(assets)} assets") print(f"📁 Saved to: {queue_file}") print("\nCategories:") cats = {} for a in assets: cats[a['cat']] = cats.get(a['cat'], 0) + 1 for cat, count in sorted(cats.items()): print(f" {cat}: {count}")