diff --git a/build_dynamic_prompt.py b/build_dynamic_prompt.py index df7c083..7626aac 100644 --- a/build_dynamic_prompt.py +++ b/build_dynamic_prompt.py @@ -10,7 +10,7 @@ from random_functions import * # insanity level controls randomness of propmt 0-10 # forcesubject van be used to force a certain type of subject # Set artistmode to none, to exclude artists -def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = "all", imagetype = "all"): +def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artists = "all", imagetype = "all"): completeprompt = " " @@ -20,10 +20,12 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " wereanimaladded = 0 isweighted = 0 hybridorswap = "" + artistmode = "normal" if(insanitylevel==0): insanitylevel = random.randint(1, 10) # 10 = add everything, 1 is add almost nothing - insanitylevel3 = int(insanitylevel/3) + 1 + insanitylevel3 = int((insanitylevel/3) + 1.20) + print("Setting insanity level to " + str(insanitylevel)) # main chooser: 0 object, 1 animal, 2 humanoid, 3 landscape, 4 event/concept @@ -55,7 +57,11 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " hybridhumanlist = ["-fictional-", "-nonfictional-"] # possible?: think about curated artist list? - if(artistmode == "all"): + artistsplacement = "front" + if(uncommon_dist(insanitylevel)): + artistsplacement = "back" + + if(artists == "all" and artistsplacement == "front"): # take 1-3 artists, weighted to 1-2 step = random.randint(0, 1) end = random.randint(1, insanitylevel3) @@ -70,8 +76,10 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " # adding at step x a:X # stopping at step x ::X # enhancing from step x - - artistmode = "normal" + + + + modeselector = random.randint(0,10) if modeselector < 5 and end - step >= 2: artistmodeslist = ["hybrid", "stopping", "adding", "switching", "enhancing"] @@ -163,12 +171,23 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " hybridorswap = random.choice(hybridorswaplist) completeprompt += "[" - completeprompt = add_from_csv(completeprompt, random.choice(objecttypelist), 0, "","") + chosenobjecttype = random.choice(objecttypelist) + completeprompt = add_from_csv(completeprompt, chosenobjecttype, 0, "","") if(hybridorswap == "hybrid"): - completeprompt += "|" + random.choice(hybridlist) + "]" + if(uncommon_dist(insanitylevel)): + completeprompt += "|" + random.choice(hybridlist) + "]" + else: + completeprompt += "|" + completeprompt = add_from_csv(completeprompt, chosenobjecttype, 0, "","") + completeprompt += "]" if(hybridorswap == "swap"): - completeprompt += ":" + random.choice(hybridlist) + ":" + str(random.randint(1,5)) + "]" + if(uncommon_dist(insanitylevel)): + completeprompt += ":" + random.choice(hybridlist) + ":" + str(random.randint(1,5)) + "]" + else: + completeprompt += ":" + completeprompt = add_from_csv(completeprompt, chosenobjecttype, 0, "","") + completeptompt += ":" + str(random.randint(1,5)) + "]" hybridorswap = "" if(mainchooser == "animal"): @@ -184,9 +203,15 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " completeprompt = add_from_csv(completeprompt, "animals", 0, "","") if(hybridorswap == "hybrid"): - completeprompt += "|" + random.choice(hybridlist) + "]" + if(uncommon_dist(insanitylevel)): + completeprompt += "|" + random.choice(hybridlist) + "]" + else: + completeprompt += "| -animal- ]" if(hybridorswap == "swap"): - completeprompt += ":" + random.choice(hybridlist) + ":" + str(random.randint(1,5)) + "]" + if(uncommon_dist(insanitylevel)): + completeprompt += ":" + random.choice(hybridlist) + ":" + str(random.randint(1,5)) + "]" + else: + completeprompt += ":-animal-:" + str(random.randint(1,5)) + "]" hybridorswap = "" if(subjectchooser == "human"): @@ -253,8 +278,14 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " hybridorswap = "" if(normal_dist(insanitylevel)): + completeprompt += " and " + if(rare_dist(insanitylevel)): + completeprompt = add_from_csv(completeprompt, "descriptors", 0, "","") + if(rare_dist(insanitylevel)): + completeprompt = add_from_csv(completeprompt, "ethnicity", 0, "","") + addontolocation = ["locations","buildings", "vehicles"] - completeprompt = add_from_csv(completeprompt, random.choice(addontolocation), 0, "and ","") + completeprompt = add_from_csv(completeprompt, random.choice(addontolocation), 0, "","") if(subjectchooser == "event"): completeprompt = add_from_csv(completeprompt, "events", 0, "\"","\"") @@ -264,17 +295,25 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " completeprompt = add_from_csv(completeprompt, "concept_suffix", 0, "","\"") # object with a face - if(mainchooser == "object" and legendary_dist(insanitylevel)): + if(mainchooser == "object" and unique_dist(insanitylevel)): completeprompt += " with a face " # object materials - if(mainchooser == "object" and normal_dist(insanitylevel)): + if(mainchooser == "object" and uncommon_dist(insanitylevel)): completeprompt += "made from -material- " + + # object detailing + if(mainchooser == "object" and rare_dist(insanitylevel)): + completeprompt += "detailed with " + if(uncommon_dist(insanitylevel)): + completeprompt = add_from_csv(completeprompt, "descriptors", 0, "","") + completeprompt += "-material- patterns " + # riding an animal, holding an object or driving a vehicle, rare if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid"] and rare_dist(insanitylevel)): humanspecial = 1 - speciallist = [" riding a -animal- ", "holding a -object- ", " driving a -vehicle-", " visiting a -building-"] + speciallist = [" riding a -animal- ", "holding a -object- ", " driving a -vehicle-", " visiting a -building-", "with a -animal-", "surrounded by -object-s"] completeprompt += random.choice(speciallist) # SD understands emoji's. Can be used to manipulate facial expressions. @@ -320,10 +359,13 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " completeprompt += ":" + "-outfit-" + ":" + str(random.randint(1,5)) + "]" hybridorswap = "" + if(subjectchooser in ["animal as human","human","fictional", "non fictional", "humanoid"] and uncommon_dist(insanitylevel) and humanspecial != 1): + completeprompt = add_from_csv(completeprompt, "poses", 1, "","") + if(subjectchooser in ["human","job","fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel)): - completeprompt = completeprompt + ", " - completeprompt = add_from_csv(completeprompt, "haircolors", 0, "","") - completeprompt = add_from_csv(completeprompt, "hairstyles", 0, " hair styled as ","") + completeprompt += ", " + completeprompt = add_from_csv(completeprompt, "haircolors", 0, "","") + completeprompt = add_from_csv(completeprompt, "hairstyles", 0, " hair styled as ","") if(subjectchooser in ["animal as human,","human","fictional", "non fictional", "humanoid"] and normal_dist(insanitylevel)): completeprompt = add_from_csv(completeprompt, "accessories", 1, "","") @@ -338,12 +380,12 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " case "landscape": completeprompt = add_from_csv(completeprompt, "locations", 1, " background is ","") case "buildingbackground": - completeprompt = ",background is " + completeprompt += ",background is " if(uncommon_dist(insanitylevel)): completeprompt = add_from_csv(completeprompt, "descriptors", 0, "","") completeprompt = add_from_csv(completeprompt, "buildings", 0, "","") case "insidebuilding": - completeprompt = ",inside a " + completeprompt += ",inside a " if(uncommon_dist(insanitylevel)): completeprompt = add_from_csv(completeprompt, "descriptors", 0, "","") completeprompt = add_from_csv(completeprompt, "buildings", 0, "","") @@ -390,15 +432,86 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " # vomit some cool/wierd things into the prompt if(uncommon_dist(insanitylevel)): completeprompt = add_from_csv(completeprompt, "vomit", 1, "","") + if(uncommon_dist(insanitylevel)): + completeprompt = add_from_csv(completeprompt, "vomit", 1, "","") + # everyone loves the adding quality. The better models don't need this, but lets add it anyway if(uncommon_dist(insanitylevel)): completeprompt = add_from_csv(completeprompt, "quality", 1, "","") + if(uncommon_dist(insanitylevel)): + completeprompt = add_from_csv(completeprompt, "quality", 1, "","") if artistmode in ["enhancing"]: completeprompt += "::" + str(random.randint(1,17)) + "]" + + + if(artists == "all" and artistsplacement == "back"): + completeprompt += ", " + # take 1-3 artists, weighted to 1-2 + step = random.randint(0, 1) + end = random.randint(1, insanitylevel3) + + + + + # determine artist mode: + # normal + # hybrid | + # switching A:B:X + # adding at step x a:X + # stopping at step x ::X + + + modeselector = random.randint(0,10) + if modeselector < 4 and end - step >= 2: + artistmodeslist = ["hybrid", "stopping", "adding", "switching"] + artistmode = artistmodeslist[modeselector] + if artistmode in ["hybrid","switching"] and end - step == 1: + artistmode = "normal" + + if artistmode in ["hybrid", "stopping", "adding","switching"]: + completeprompt += " [" + + while step < end: + if(normal_dist(insanitylevel)): + isweighted = 1 + + if isweighted == 1: + completeprompt += " (" + + completeprompt = add_from_csv(completeprompt, "artists", 0, "art by ","") + + if isweighted == 1: + completeprompt += ":" + str(1 + (random.randint(-3,3)/10)) + ")" + + if artistmode in ["hybrid"] and not end - step == 1: + completeprompt += "|" + if artistmode in ["switching"] and not end - step == 1: + completeprompt += ":" + + if artistmode not in ["hybrid", "switching"]and not end - step == 1: + completeprompt += "," + + isweighted = 0 + + step = step + 1 + + if artistmode in ["stopping"]: + completeprompt += "::" + completeprompt += str(random.randint(1,19)) + + if artistmode in ["switching","adding"]: + completeprompt += ":" + str(random.randint(1,18)) + if artistmode in ["hybrid", "stopping","adding", "switching"]: + completeprompt += "]" + + + completeprompt += ", " + + #replace any values colorlist = csv_to_list("colors") animallist = csv_to_list("animals") @@ -461,7 +574,8 @@ def build_dynamic_prompt(insanitylevel = 5, forcesubject = "all", artistmode = " completeprompt = re.sub(', ,', ',', completeprompt) completeprompt = re.sub(' , ', ',', completeprompt) completeprompt = re.sub(' +', ' ', completeprompt[2:]) # remove first character, that is always a comma. Remove any excess spaces - + + print(completeprompt) return completeprompt \ No newline at end of file diff --git a/csvfiles/accessories.csv b/csvfiles/accessories.csv index 1b3dc06..bd82d58 100644 --- a/csvfiles/accessories.csv +++ b/csvfiles/accessories.csv @@ -90,7 +90,15 @@ Crown Tiara Mask made out of -material- angelic halo +flower crown wrinkles pores Makeup -No makeup \ No newline at end of file +No makeup +Circlet +-animal- Tattoo +-object- Tattoo +-vehicle- Tattoo +-building- Tattoo +Three-eyed +Hair ribbons \ No newline at end of file diff --git a/csvfiles/buildings.csv b/csvfiles/buildings.csv index 45b4631..973016a 100644 --- a/csvfiles/buildings.csv +++ b/csvfiles/buildings.csv @@ -150,4 +150,6 @@ Wind turbine Nuclear missile silo Dungeon Gate -Botanical Garden \ No newline at end of file +Botanical Garden +Garden +Citadel \ No newline at end of file diff --git a/csvfiles/cameras.csv b/csvfiles/cameras.csv index 18e7abd..6cc56ef 100644 --- a/csvfiles/cameras.csv +++ b/csvfiles/cameras.csv @@ -19,4 +19,5 @@ Canon R5 Hasselblad Kodak gold 200 Nikon d850 -Sony A9 II \ No newline at end of file +Sony A9 II +Fuji superia 400 \ No newline at end of file diff --git a/csvfiles/colors.csv b/csvfiles/colors.csv index a9bd2ac..c7265a1 100644 --- a/csvfiles/colors.csv +++ b/csvfiles/colors.csv @@ -35,4 +35,6 @@ Vibrant Neutral Iridescent Neon -Lime green \ No newline at end of file +Lime green +Rainbow +Psychedelic \ No newline at end of file diff --git a/csvfiles/concept_prefix.csv b/csvfiles/concept_prefix.csv index 259281a..0c7d367 100644 --- a/csvfiles/concept_prefix.csv +++ b/csvfiles/concept_prefix.csv @@ -82,4 +82,10 @@ Mother Gates Dungeon Conjurer -Garden \ No newline at end of file +Garden +Storm +Wonder +Legend +Lords +Nucleus +Virus \ No newline at end of file diff --git a/csvfiles/concept_suffix.csv b/csvfiles/concept_suffix.csv index 875786a..23c80dc 100644 --- a/csvfiles/concept_suffix.csv +++ b/csvfiles/concept_suffix.csv @@ -68,4 +68,7 @@ Heaven Hell Elements Earth -Bounty \ No newline at end of file +Bounty +Insanity +Nature +Pain \ No newline at end of file diff --git a/csvfiles/descriptors.csv b/csvfiles/descriptors.csv index 6209272..f69b1c9 100644 --- a/csvfiles/descriptors.csv +++ b/csvfiles/descriptors.csv @@ -40,7 +40,6 @@ Irresistible Sensual Sexy Seductive -Magnetic Charismatic Enthralling Engaging @@ -328,4 +327,21 @@ Floating Shiny Chibi Anime -Verdant \ No newline at end of file +Verdant +Vamperic +Melting +Sacred +Infected +Overgrown +Winged +Intricate +Ornate +Messy +Dirty +Natural +Playful +Sleek +Holy +Broken +Surreal +Realistic \ No newline at end of file diff --git a/csvfiles/directions.csv b/csvfiles/directions.csv index 615b674..f86f9bc 100644 --- a/csvfiles/directions.csv +++ b/csvfiles/directions.csv @@ -15,4 +15,5 @@ Ultrarealistic Visual novel Video game screenshot Movie still -Anime screencap \ No newline at end of file +Anime screencap +Overdetailed art \ No newline at end of file diff --git a/csvfiles/ethnicity.csv b/csvfiles/ethnicity.csv index e9ff2d1..c22de83 100644 --- a/csvfiles/ethnicity.csv +++ b/csvfiles/ethnicity.csv @@ -117,4 +117,6 @@ Ming Dynasty Qing Dynasty Edo Period Golden Age -Moorish \ No newline at end of file +Moorish +Shinto +Norse \ No newline at end of file diff --git a/csvfiles/fictional characters.csv b/csvfiles/fictional characters.csv index 2c3c3e7..4f8799c 100644 --- a/csvfiles/fictional characters.csv +++ b/csvfiles/fictional characters.csv @@ -515,4 +515,17 @@ Dragonite John Wick Captain -material-beard -animal-man -Poison Ivy from Batman \ No newline at end of file +Poison Ivy from Batman +Ryu from Street fighter +Ken from Street fighter +Chun-Li from Street fighter +Guile from Street fighter +Blanka from Street fighter +Dhalsim from Street fighter +Zangief from Street fighter +B2 from Nier +A2 from Nier +S9 from Nier +Kainé from Nier +Emil from Nier +Anthropomorphic -animal- \ No newline at end of file diff --git a/csvfiles/haircolors.csv b/csvfiles/haircolors.csv index e6df183..cb8527a 100644 --- a/csvfiles/haircolors.csv +++ b/csvfiles/haircolors.csv @@ -9,4 +9,9 @@ Honey Platinum Gray Bald --color- \ No newline at end of file +Silver +Gold +White +Dark +-color- +-color- and -color- \ No newline at end of file diff --git a/csvfiles/humanoids.csv b/csvfiles/humanoids.csv index 648417d..48f3aba 100644 --- a/csvfiles/humanoids.csv +++ b/csvfiles/humanoids.csv @@ -119,4 +119,7 @@ Bloodelf Voidelf Zandalari Murloc -Elemental \ No newline at end of file +Elemental +Dragonkin +Valkyrie +Frost giant \ No newline at end of file diff --git a/csvfiles/jobs.csv b/csvfiles/jobs.csv index cdd87ba..a9cbf39 100644 --- a/csvfiles/jobs.csv +++ b/csvfiles/jobs.csv @@ -355,4 +355,8 @@ Baron Baroness Nobleman Vizier -Sultan \ No newline at end of file +Sultan +Geisha +Yogi +Adventurer +Royalty \ No newline at end of file diff --git a/csvfiles/lighting.csv b/csvfiles/lighting.csv index 0ca1046..f257355 100644 --- a/csvfiles/lighting.csv +++ b/csvfiles/lighting.csv @@ -31,4 +31,6 @@ Motion blur Bloom light Black lighting Gel lighting --color- lighting \ No newline at end of file +-color- lighting +Moonlight +Sunlight \ No newline at end of file diff --git a/csvfiles/locations.csv b/csvfiles/locations.csv index cff11b0..451da5e 100644 --- a/csvfiles/locations.csv +++ b/csvfiles/locations.csv @@ -188,6 +188,7 @@ Temperate Forest Deciduous Forest Rainforest Mangrove +Rice paddy Bog Fen Peatland @@ -654,5 +655,13 @@ Stormwind Orgrimmar Ironforge Tristram -cityscape -paradise \ No newline at end of file +Cityscape +Paradise +Garden +Field of flowers +Dalaran +Mossy land +Rural area +Urban area +Outer space +Night city cyberpunk \ No newline at end of file diff --git a/csvfiles/materials.csv b/csvfiles/materials.csv index a7b6846..847d90c 100644 --- a/csvfiles/materials.csv +++ b/csvfiles/materials.csv @@ -64,10 +64,6 @@ Angora wool Cashmere Mohair Merino wool -Vicuña wool -Bison leather -Crocodile leather -Ostrich leather Sharkskin Snakeskin Alligator skin @@ -75,20 +71,12 @@ Gator skin Suede Leather Lace -Silk charmeuse -Silk chiffon -Silk organza -Satin charmeuse -Velvet corduroy -Mohair velvet -Wool crepe -Wool gabardine -Wool suiting -Wool challis -Harris tweed -Donegal tweed -Camel hair -Kashmiri shawls +Silk +Satin +Velvet +Wool +Tweed +Kashmir Waxed cotton Cloth Gold @@ -106,4 +94,18 @@ Crystal Emerald Wires Plating -Fabric \ No newline at end of file +Fabric +Circuitry +Runes +Foam +Plants +Ice +Fire +Magic +Energy +Trees +Water +Vines +Cobblestone +Moss +Scales \ No newline at end of file diff --git a/csvfiles/objects.csv b/csvfiles/objects.csv index 23b02f1..aa95a4d 100644 --- a/csvfiles/objects.csv +++ b/csvfiles/objects.csv @@ -208,6 +208,7 @@ Melon Rhubarb Tomato Sword +Katana Mace Battle Axe Spear @@ -378,4 +379,26 @@ Marigolds Cup of Coffee Cup of Tea Faberge egg -Quilt \ No newline at end of file +Quilt +Circlet +Crown +Tiara +Black hole +Nebula +Star cluster +Asteroid belt +Supernova +Comet +Planet +Galaxy +Croissant +Danish pastry +Pain au chocolat +Brioche +Puff pastry +Éclair +Baklava +Strudel +Beignet +Scone +Bread \ No newline at end of file diff --git a/csvfiles/othertypes.csv b/csvfiles/othertypes.csv index da2bcf1..0d9dfca 100644 --- a/csvfiles/othertypes.csv +++ b/csvfiles/othertypes.csv @@ -73,4 +73,7 @@ Historical Photo Associated press photo editorial illustration digital sculpture made of -material- -Fashion shoot \ No newline at end of file +Fashion shoot +-color- and -color- fractals +mandala +zentangle \ No newline at end of file diff --git a/csvfiles/outfits.csv b/csvfiles/outfits.csv index 2972261..6337398 100644 --- a/csvfiles/outfits.csv +++ b/csvfiles/outfits.csv @@ -486,4 +486,8 @@ Field jacket Chore coat Raincoat Fur coat -Armor \ No newline at end of file +Armor +Short skirt and a long jacket +-material- outfit +Band shirt +Holy raiment \ No newline at end of file diff --git a/csvfiles/poses.csv b/csvfiles/poses.csv new file mode 100644 index 0000000..bb7bc2f --- /dev/null +++ b/csvfiles/poses.csv @@ -0,0 +1,65 @@ +looking up +looking down +looking towards camera +looking away from camera +looking to the side +Looking over the shoulder +Sitting +Standing +Jumping +Dancing +Laying down +Hands behind head +Hands above the head +Hands on face +Resting on a diagonal +Sitting with elbows on knees +Kneeling +Facing forward +Sitting with hands around ankles +sitting with back arched +Standing with hand on hip +Leaning forward +Leaning back +Movement pose +JoJo pose +Battle pose +Crossed legs +Sitting with crossed legs +Hands Up Pose +Feminine Pose +Masculine Pose +Playing with Hair +Strolling pose +One Leg Up pose +Crossed arms +Hands in Pockets +Thoughtful Pose +One Hand in Pocket +Dynamic pose +Look into the Distance +Making funny face +Twirl pose +Action pose +Sexy pose +giving you the finger +Pointing at you +Crouching down +Vivacious pose +Bending forward +Bending backwards +Kung fu pose +Muscle pose +Yoga pose +Stretching pose +Casting magic pose +Hero pose +Adventure pose +S-shape pose +vogue pose +glamour pose +fashion modeling pose +relaxing pose +sleeping pose +Contrapposto +Tilted head \ No newline at end of file diff --git a/csvfiles/quality.csv b/csvfiles/quality.csv index eb75550..95b5e33 100644 --- a/csvfiles/quality.csv +++ b/csvfiles/quality.csv @@ -26,4 +26,5 @@ masterpiece lots of details dslr photolab -adobe lightroom \ No newline at end of file +adobe lightroom +arthouse \ No newline at end of file diff --git a/csvfiles/shotsizes.csv b/csvfiles/shotsizes.csv index 564f443..fcdd651 100644 --- a/csvfiles/shotsizes.csv +++ b/csvfiles/shotsizes.csv @@ -34,4 +34,6 @@ High exposure Aerial View cinematic shot overhead angle -Sharp focus \ No newline at end of file +Sharp focus +Street level shot +Fashion shot \ No newline at end of file diff --git a/csvfiles/timeperiods.csv b/csvfiles/timeperiods.csv index 76780d3..d0dc5e3 100644 --- a/csvfiles/timeperiods.csv +++ b/csvfiles/timeperiods.csv @@ -23,4 +23,7 @@ Clear skies Sunny Bathed in shadows Thunderstorm -Foggy \ No newline at end of file +Foggy +Starry night +Moon in the night +Sun in the sky \ No newline at end of file diff --git a/csvfiles/vehicles.csv b/csvfiles/vehicles.csv index 2c0ebc4..172bd1f 100644 --- a/csvfiles/vehicles.csv +++ b/csvfiles/vehicles.csv @@ -1,6 +1,7 @@ Train Car Sports car +Muscle car Formula 1 car Ship Motercycle @@ -93,4 +94,14 @@ Harley-Davidson Honda Yamaha Kawasaki -Ducati \ No newline at end of file +Ducati +Police car +Ambulance +Fire truck +Tow truck +Garbage truck +Postal delivery truck +Armored vehicle +Snow plow +Tractor trailer +Utility van \ No newline at end of file diff --git a/csvfiles/vomit.csv b/csvfiles/vomit.csv index da595c8..91292ad 100644 --- a/csvfiles/vomit.csv +++ b/csvfiles/vomit.csv @@ -34,4 +34,19 @@ bloom caustics Swirling -material- vignette -Instagram \ No newline at end of file +Instagram +-color- splash +-color- and -color- splash +-color- and -color- fractal art +layered textures +blended visuals +overlapping compositions +expressive brush strokes +Bright design +-color- details +-color- and -color- details +Light sparkles +Complex background +Plain white background +Zentangle +Mandala \ No newline at end of file diff --git a/random_functions.py b/random_functions.py index f4f984a..cc35dfd 100644 --- a/random_functions.py +++ b/random_functions.py @@ -15,13 +15,13 @@ def rare_dist(insanitylevel): return roll def legendary_dist(insanitylevel): - roll = (random.randint(1, 40)