#!/usr/bin/python3 from random import randint, choice def noun_person(): return choice(('Archer', 'Artisan', 'Baker', 'Bandit', 'Beggar', 'Bishop', 'Blacksmith', 'Brewer', 'Butcher', 'Butler', 'Cardinal', 'Cobbler', 'Cook', 'Cooper', 'Damsel', 'Drummer', 'Executioner', 'Farmer', 'Ferrier', 'Fisherman', 'Fishmonger', 'Fool', 'Gatekeeper', 'Gravedigger', 'Groom', 'Guildsman', 'Hatter', 'Hayward', 'Herald', 'Hunter', 'Jailer', 'Jester', 'King', 'Knight', 'Lady', 'Lord', 'Maid', 'Maiden', 'Mason', 'Mayor', 'Mercenary', 'Merchant', 'Miller', 'Miner', 'Minstrel', 'Monk', 'Noble', 'Pilgrim', 'Pirate', 'Potter', 'Priest', 'Prince', 'Princess', 'Privateer', 'Queen', 'Ratcatcher', 'Sailor', 'Scholar', 'Scribe', 'Servant', 'Sheriff', 'Slave', 'Smuggler', 'Soldier', 'Spy', 'Squire', 'Steward', 'Tailor', 'Tax Collector', 'Thief', 'Tinker', 'Torturer', 'Vagabond', 'Weaver', 'Wench', 'Wizard')) def noun_animal(): return choice(('Ape', 'Badger (Honey)', 'Bat', 'Bear', 'Beaver', 'Bee', 'Bison', 'Boar', 'Camel', 'Cat', 'Cockerel', 'Crow', 'Doe', 'Dog', 'Dolphin', 'Dove', 'Duck', 'Eagle', 'Elephant', 'Emu', 'Ferret', 'Fish', 'Flounder', 'Fox', 'Frog', 'Goat', 'Goose', 'Hawk', 'Heron', 'Hippo', 'Hornet', 'Horse', 'Hound', 'Kingfisher', 'Ladybug', 'Lion', 'Lizard', 'Magpie', 'Mantis', 'Mink', 'Monkey', 'Mouse', 'Ostrich', 'Otter', 'Owl', 'Ox', 'Parrot', 'Pig', 'Pony', 'Raccoon', 'Rat', 'Raven', 'Rhino', 'Rooster', 'Seahorse', 'Seal', 'Shark', 'Skunk', 'Snake', 'Song Bird', 'Sparrow', 'Spider', 'Squirrel', 'Stag', 'Stork', 'Swan', 'Thrush', 'Tiger', 'Toad', 'Turkey', 'Turtle/Tortoise', 'Vulture', 'Walrus', 'Warthog', 'Weasel', 'Whale', 'Wolf', 'Wolverine', 'Woodchuck', 'Zebra')) def noun_monster(): return choice(('Angel', 'Beholder', 'Brownie', 'Bugbear', 'Centaur', 'Chimera', 'Devil', 'Dragon', 'Faerie', 'Giant', 'Goblin', 'Golem', 'Greenman', 'Griffin', 'Hellhound', 'Hobgoblin', 'Jackalope', 'Kobold', 'Mimic', 'Minotaur', 'Ogre', 'Orc', 'Otyugh', 'Owlbear', 'Peryton', 'Phoenix', 'Rust Monster', 'Scarecrow', 'Skeleton', 'Sphinx', 'Stirge', 'Troll', 'Unicorn', 'Werewolf', 'Wyvern')) def noun_object(): return choice(('Anchor', 'Anvil', 'Barrel', 'Beef/Mutton', 'Bell', 'Blessing', 'Boot', 'Bowl', 'Bucket', 'Cactus', 'Caltrop', 'Candle', 'Cap', 'Castle', 'Chain', 'Chair', 'Cheese', 'Cloak', 'Crown', 'Cup', 'Dagger', 'Door', 'Fire', 'Flag', 'Flagon', 'Flail', 'Folly', 'Goblet', 'Hammer', 'Hart', 'Head', 'Hoe', 'Hook', 'Hop Pole', 'Jug', 'Kettle', 'Key', 'Ladder', 'Lantern', 'Lock', 'Mace', 'Map', 'Mill', 'Moon', 'Mug', 'Net', 'Noose', 'Oak', 'Post', 'Pot', 'Quill', 'Quiver', 'Ring', 'Road', 'Rose', 'Sausage', 'Sceptre', 'Scythe ', 'Shoe', 'Spade', 'Spigot', 'Spoon', 'Staff', 'Stars', 'Stone', 'Sun', 'Sundial', 'Sword', 'Table', 'Tankard', 'Tap', 'Thorn', 'Torch', 'Tree', 'Wagonwheel', 'Water', 'Wheel', 'Whip', 'Wind', 'Windmill')) def noun(): return choice((noun_person, noun_animal, noun_monster, noun_object))() def adjective(): return choice(('Black', 'Blue', 'Brass', 'Copper', 'Crystal', 'Golden', 'Green', 'Grey', 'Iron', 'Orange', 'Purple', 'Red', 'Shining', 'Silver', 'White', 'Yellow', 'Angry', 'Ardent', 'Arrant', 'Bawdy', 'Blind', 'Crazy', 'Crooked', 'Dark', 'Deaf', 'Disfigured', 'Fancy', 'Fat', 'Fickle', 'Filthy', 'Foolish', 'Friendly', 'Frightened', 'Frigid', 'Graceful', 'Grumpy', 'Hairy', 'Happy', 'Honest', 'Humble', 'Jovial', 'Lazy', 'Lonely', 'Loyal', 'Mad', 'Majestic', 'Naughty', 'Noisy', 'Olde', 'Pale', 'Pretty', 'Proud', 'Queasy', 'Quick', 'Ragged', 'Regal', 'Rowdy', 'Royal', 'Rusty', 'Salty', 'Skanky', 'Slippery', 'Sober', 'Soggy', 'Squeaky', 'Stingy', 'Straight', 'Strange', 'Striped', 'Studious', 'Swift', 'Thin', 'Toothless', 'Ugly', 'Vulgar', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Eleven', 'Twelve')) def verb(): return choice(('Bleeding', 'Crying', 'Dancing', 'Drinking', 'Fainting', 'Falling', 'Fighting', 'Flying', 'Laughing', 'Leaping', 'Nesting', 'Over-Flowing', 'Prancing', 'Praying', 'Rhyming', 'Running', 'Skulking', 'Sleeping', 'Spitting', 'Wandering')) name_formats = ( (lambda: "The " + adjective() + " " + noun() + "'s " + noun_object()), (lambda: "The " + noun() + " & " + noun()), (lambda: "The " + verb() + " " + noun()), (lambda: "The " + adjective() + " " + noun()),) def gen_tavern_name(): name = choice(name_formats)() return name if __name__ == "__main__": print(gen_tavern_name())