#!/usr/bin/python

# -*- coding: utf-8 -*-

# Licensed with the venerable WTFPL, from http://www.wtfpl.net/

#

# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE

# Version 2, December 2004

#

# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>

#

# Everyone is permitted to copy and distribute verbatim or modified

# copies of this license document, and changing it is allowed as long

# as the name is changed.

#

# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE

# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

#

# 0. You just DO WHAT THE FUCK YOU WANT TO.

# Modules

import random

numnames = 0

gender = ""

# Commandline Parameters

import argparse

parser = argparse. ArgumentParser ( description = "Generate Necron names and titles" )

parser . add_argument ( "-n" , "--number" , help = "The number of names to generate (default:10)" , action = "store" , dest = "numnames" , required = False , default = 10 )

parser . add_argument ( "-g" , "--gender" , help = "The gender of the names to generate, m for male, f for female, b for both (default)" , action = "store" , dest = "gender" , required = False , default = "b" )

parameters = parser . parse_args ( )

numnames = parameters. numnames

gender = parameters. gender

#print "We got %s and %s" % (str(numnames), str(gender) )

#import sys

#sys.exit(0)

def integer_validate ( user_input ) :

try :

int ( user_input )

except ValueError :

return False

return True

if gender not in [ "m" , "f" , "b" ] :

print "Warning, we got an invalid gender '%s', defaulting to both genders" % ( str ( gender ) )

gender = "b"

if not integer_validate ( numnames ) :

print "Warning, we received an invalid number of names to generate, '%s' defaulting to 10" % ( str ( numnames ) )

numnames = 10

else :

numnames = int ( numnames )

# The data

malenames = ( 'Aaab' , 'Aah' , 'Aakheperka' , 'Aanekhtou' , 'Aas' , 'Abet' , 'Ab' , 'Abuskhau' , 'Acherres' , 'Aches' , 'Adom' , 'Agymah' , 'Ahmose' , 'Aiari' , 'Aions' , 'Akiiki' , 'Amememhasenb' , 'Ameneman' , 'Amenemapet' , 'Amenemha' , 'Amenkno' , 'Amenmessu' , 'Amennofre' , 'Amenrahersef' , 'Amenrut' , 'Amentotankhatra' , 'Amentuankh' , 'Am' , 'Ammon' , 'Amran' , 'Amsi' , 'Anasch' , 'Anaua' , 'Anemher' , 'Anhurnekht' , 'Ani' , 'Anima' , 'Ankhfkhons' , 'Ankhhapi' , 'Ankhhapimes' , 'Ankhu' , 'Anp' , 'Ansapata' , 'Ao' , 'Apepi' , 'Apmatenu' , 'Aqer' , 'Arirantesf' , 'Arpaesis' , 'Aseskafankh' , 'Aseskaf' , 'Asra' , 'Asromiamun' , 'Assa-tatkeres' , 'Asten' , 'Asychis' , 'Atekhramun' , 'Aten' , 'Ati' , 'Atmoo' , 'Atum' , 'Aukheperu' , 'Av' , 'Azizi' , 'Badru' , 'Bah' , 'Bankole' , 'Basa' , 'Bastet' , 'Bastpaduse' , 'Bebti' , 'Binra' , 'Cheops' , 'Cheres' , 'Chuma' , 'Darius' , 'Djoser' , 'Dsjot-month' , 'Ehoou' , 'Ei-uskh' , 'Enna-enna' , 'Eoea' , 'Eopeii' , 'Fai-iri-ei' , 'Fai-iten-hemh-bai' , 'Faki' , 'Funsani' , 'Geta' , 'Hagar' , 'Hamset' , 'Har-benen' , 'Har-im-hotep' , 'Har-net-atef' , 'Harpakrut' , 'Harscheft' , 'Harsiesi' , 'Hat-ei' , 'Hat-hor-se' , 'Heh-en-khonsa' , 'Hem-bai' , 'Her-het-su' , 'Hik-nekht' , 'Hobs' , 'Hor-im-hotep' , 'Horirem' , 'Hor' , 'Horminuter' , 'Hotephers' , 'Hru-amen' , 'Humai' , 'Hu' , 'Imhotep' , 'Iri-sen' , 'Iritis' , 'Ishaq' , 'Ispimagu' , 'Jibade' , 'Kabhsenuf' , 'Kamuzu' , 'Kasaika' , 'Kefschemsu' , 'Khaba' , 'Khaem-pe' , 'Khaf-hor' , 'Khaldun' , 'Khasu-en-amen' , 'Khert-ase' , 'Khet-ef' , 'Khnemu' , 'Khnum-khufu' , 'Khu-en-pthah' , 'Khufu' , 'Kosey' , 'Lamersekeni' , 'Lateef' , 'Ludim' , 'Lukman' , 'Madu' , 'Makt' , 'Malouli' , 'Manu' , 'Marthad' , 'Masa-ha-rota' , 'Maskini' , 'Massui' , 'Meht-naskhti' , 'Menenba' , 'Menes' , 'Menkauhor' , 'Mentun-sasu' , 'Mentu-ra' , 'Mered' , 'Mer-het' , 'Meri' , 'Meri-ra' , 'Merira' , 'Met-hont-mimut' , 'Mibahu' , 'Minkabh' , 'Min' , 'Mi-ra' , 'Month' , 'Mosegi' , 'Moses' , 'Moswen' , 'Msrah' , 'Mui-en-hiku' , 'Nahab' , 'Nahi' , 'Namurot' , 'Nane' , 'Nascht-amen' , 'Neb-amen' , 'Neb-ankh' , 'Neb-nofre' , 'Neb-pu' , 'Nechtu' , 'Nefer' , 'Nefer-pu' , 'Nehara' , 'Nekhtarhebi' , 'Nekht-har-en-shen' , 'Nekht-mutf' , 'Nekhtou' , 'Neocaisaros' , 'Nephelcheres' , 'Nes-a-hor' , 'Nesahor' , 'Nesu' , 'Nidintabel' , 'Nkosi' , 'Nofre-mat' , 'Ntariusha' , 'Nub-hotep' , 'Nut-mi-amen' , 'Onouris' , 'Osymundyas' , 'Ouaphres' , 'Ouaphris' , 'Ouza' , 'Padubast' , 'Pa-du-isi' , 'Pa-du-neit' , 'Pa-du-nub' , 'Pa-du-pthah' , 'Pah-os' , 'Pa-nehes' , 'Pantina' , 'Pa-ra-nefer' , 'Paru' , 'Pef-aa-khonsu' , 'Pef-nifi-neith' , 'Pen-eoou' , 'Pen-piei' , 'Pent-aur' , 'Pepi-merira' , 'Peteharpocrates' , 'Pet-en-senas' , 'Pet-isis' , 'Petubastes' , 'Petubast' , 'Phanes' , 'Pheles' , 'Philinos' , 'Pibamen' , 'Piea' , 'Pien-nun-enpe' , 'Pis-aroer' , 'Pou-isis' , 'Pra-en-amen' , 'Psa-ben-hor' , 'Psammis' , 'Psar' , 'Psenio' , 'Psi-mut' , 'Psi-naches' , 'Psusennes' , 'Ptah' , 'Pthah' , 'Puer' , 'Purusha' , 'Qeb' , 'Ra-hotep' , 'Râ' , 'Ra-men-ankh' , 'Ra-men-tau-neb' , 'Ra-men-tme' , 'Ra-mes' , 'Ra-mes-su' , 'Ra-neb-nem' , 'Ra-neb-peh' , 'Ra-theris' , 'Rekh-khet-sa' , 'Res-sen-ba' , 'Ruta' , 'Rut-amen' , 'Ruta-sa-sha-ka' , 'Sabacon' , 'Sabatok' , 'Sa-ei-nub-eu' , 'Sah' , 'Sahura' , 'Sa-par' , 'Sa-pi-neb' , 'Sasur-amen' , 'Sebek' , 'Sebercheres' , 'Sefkh' , 'Se-khem-ka' , 'Semempses' , 'Senb' , 'Sen' , 'Serach' , 'Se-ra-nefer-tai' , 'Set-en-et' , 'Seti-nekht' , 'Set' , 'Shaa-em-uas' , 'Shakir' , 'Sharu-sha-ta-kata' , 'Sheshanka' , 'Silsi' , 'Si-nen-uer' , 'S-khem-ka' , 'S-nefer-ka' , 'Souniro' , 'Stephinates' , 'Sudi' , 'Supti' , 'Suten-hi' , 'Suten-rekh' , 'Tabu' , 'Tachus' , 'Taf-nekht' , 'Tahu' , 'Ta-na-sa-ta-nasa' , 'Tat' , 'Taut-mut-f' , 'Teni' , 'Tet-en-hor' , 'Thema' , 'Thoth' , 'Tosertosis' , 'Tsafento' , 'Tumentu-af-ankh' , 'Turo' , 'Tutankhamen' , 'Uaem-kau' , 'Uah-abra' , 'Uarseken' , 'Ufa' , 'Ur' , 'User-mat' , 'User-t' )

femalenames = ( 'Acenath' , 'Achen' , 'Ahit' , 'Ahmes' , 'Ahura' , 'Ai' , 'Ain' , 'Akila' , 'Amaunet' , 'Amem' , 'Ameniritis' , 'Amenmeit' , 'Amenset' , 'Ament' , 'Amunnebkettoti' , 'Amunta' , 'Ana' , 'Anat' , 'Ankhesenamen' , 'Ankhes' , 'Ankhta' , 'Antaemnekht' , 'Anub' , 'Anucis' , 'Anuketmatma' , 'Apet' , 'Arat' , 'Arbasutanifu' , 'Aria' , 'As' , 'Ashtarchemosh' , 'Asmatarta' , 'Asnofre' , 'Astaretenheb' , 'Astarte' , 'Astekhu' , 'Atef' , 'Atim' , 'Aua' , 'Auait' , 'Aurera' , 'Auset' , 'Babmouth' , 'Bantanath' , 'Bektaten' , 'Bektuernuro' , 'Bennu' , 'Bentaresh' , 'Bentres' , 'Bubastis' , 'Dendera' , 'Dsjot-khons' , 'Ebony' , 'Enskerk' , 'Eshe' , 'Esi' , 'Habibah' , 'Halima' , 'Hapentmat' , 'Hap-tek' , 'Hapu' , 'Haqikah' , 'Hasina' , 'Hatasu' , 'Hat-hor' , 'Hat-hor-hat' , 'Hat-hor-het-aei' , 'Hat-hor-se' , 'Hat-hor-se-t' , 'Hat-hors' , 'Hat-ka-nebter' , 'Hat-mit-ra' , 'Hat-schep-u' , 'Heb-i' , 'Heh-t' , 'Hem-at-rota' , 'Hent-anu' , 'Hent-kherpu' , 'Heqet' , 'Hes-ra' , 'Hise-t' , 'Hon-t-khem-u' , 'Hon-t-mit-heb' , 'Hon-t-to-kheb' , 'Hon-t-to-neb' , 'Hont-usen' , 'Hotep-bese-t' , 'Hotep' , 'Hotephetes' , 'Hotep-t' , 'Hunra' , 'Ife' , 'Isi-em-chev' , 'Isi-em-kheb' , 'Jendayi' , 'Kabir' , 'Ka' , 'Kahi' , 'Kakra' , 'Kamilah' , 'Kanika' , 'Karo-amat' , 'Karo-mana' , 'Kartek' , 'Karum-mama' , 'Katesch' , 'Kema' , 'Kemat' , 'Kesi' , 'Kes-kes-t' , 'Ketet' , 'Khata' , 'Khepri' , 'Khet-ankh' , 'Khons-iri-tes' , 'Khonsu' , 'Kissa' , 'Layla' , 'Lotus' , 'Maa' , 'Maibe' , 'Ma-ka-ra' , 'Makara' , 'Meht-em-i-sekhet' , 'Meht-urt' , 'Memphis' , 'Mer-ankhes' , 'Meret-pa' , 'Meri-en-sekar' , 'Meri' , 'Meri-s-ankh' , 'Meri-s-te-khu' , 'Mer-tetes' , 'Mert-hapi' , 'Mert-u' , 'Mesi' , 'Mes-sit' , 'Meten-hont' , 'Mit-aten' , 'Monifa' , 'Mosi' , 'Mouth-en-ap' , 'Mukamutara' , 'Mukantagara' , 'Muntu-hotep' , 'Mut' , 'Mut-iritis' , 'Mut-snat-em' , 'Naa' , 'Naham-s-rata' , 'Nane' , 'Na-nefru-sekhet' , 'Nani' , 'Nathifa' , 'Neb-en-toti' , 'Nebet' , 'Neb-oo' , 'Nebt-het' , 'Nebt-hotep' , 'Nefer-ra' , 'Nefertari' , 'Nefer-u-sebek' , 'Nehimeou' , 'Neit-aker' , 'Neithoker' , 'Nen-sala' , 'Nes-a' , 'Nes-khons' , 'Nes-tauta-khut' , 'Nes-ten-nes-t' , 'Net' , 'Nile' , 'Nit' , 'Nitk-hotep-iri-bent' , 'Nitocris' , 'Niut' , 'Nofre-ari' , 'Nofre-aten-tunen-et' , 'Nofre-t-ari' , 'Nofre-titi' , 'Nub-em-usekh' , 'Nub-hotep' , 'Nubia' , 'Nubit' , 'Nub-khas' , 'Nub-na' , 'Nub-nofre' , 'Nubukha' , 'Nuru' , 'Ode' , 'OJufemi' , 'Olabisi' , 'Oni' , 'Oseye' , 'Ouei' , 'Panya' , 'Philotera-her-sankh' , 'Pthah-se' , 'Pyrrha' , 'Raa' , 'Ra-i' , 'Ra-ka-mat' , 'Ra-maa-ur-nefru' , 'Ra-nefru' , 'Ratta' , 'Raziya' , 'Rehema' , 'Renenet' , 'Renen' , 'Renpe-nofre' , 'Sabo-en-ea' , 'Safiya' , 'Sa-khonsu' , 'Salihah' , 'Sarapous' , 'Sat-bu' , 'Sati' , 'Scemiophris' , 'Sebek-em-isis' , 'Seb-tet' , 'Sekhet-hotep-et' , 'Selk' , 'Selma' , 'Senebsima' , 'Senet' , 'Sensaos' , 'Sent' , 'Sepuntepet' , 'Sera' , 'Sesur-hat' , 'Set-akorf' , 'Set-amen' , 'Set-ap' , 'Set-en-isi' , 'Set-hathor' , 'Set-kherta' , 'Sharifa' , 'Shep-shet' , 'Siotio' , 'Siti' , 'Sitiribeu' , 'Sotep-et-en-ra' , 'Souban' , 'Sslama' , 'Subira' , 'Suma' , 'Surhet-het-u-fent' , 'Ta-apep' , 'Ta-ba-ret' , 'Ta-ei' , 'Taf-nekhta' , 'Ta-hemi' , 'Taia' , 'Tai-af' , 'Ta-khara' , 'Ta-khat' , 'Ta-khot' , 'Ta-ki-uata' , 'Talibah' , 'Tanen-tu' , 'Ta-pera' , 'Taskhtali' , 'Tat-akat' , 'Tat-ara' , 'Tat-maut-a-s-ankh' , 'Tauau' , 'Ta-uer' , 'Tauret' , 'Taurt' , 'Tekh-bes' , 'Ten-pe-piou' , 'Tet-anhur' , 'Teti' , 'Thermutis' , 'Thot-hartais' , 'Thouéris' , 'Tiah-hor' , 'Ti' , 'Tii-mer-ast' , 'To-meri' , 'Tou-tou-ea' , 'Tuaa' , 'Tures' , 'Tutu-ten-apet' , 'Uer-naro' , 'Ur-merits-teshr-shen' , 'Usur-t-kau' , 'Uuhetu' , 'Walidah' , 'Zahra' )

dualfirst = ( 'Guardian' , 'Heir' , 'Keeper' , 'King' , 'Knight' , 'Lord' , 'Seer' , 'Soldier' , 'Warrior' )

dualsecond = ( 'Aether' , 'Blood' , 'Crystal' , 'Darkness' , 'Dawn' , 'Day' , 'Death' , 'Destiny' , 'Dreams' , 'Fear' , 'Fire' , 'Flames' , 'Frost' , 'Grief' , 'Ice' , 'Knowledge' , 'Light' , 'Lightning' , 'Metal' , 'Mind' , 'Mist' , 'Mystery' , 'Night' , 'Pain' , 'Rage' , 'Ruin' , 'Shadow' , 'Silence' , 'Space' , 'Spark' , 'Spirit' , 'Stars' , 'Time' , 'Thunder' , 'Twilight' , 'Void' , 'War' )

singlewords = ( 'Adamant' , 'All-knowing' , 'All-seeing' , 'Almighty' , 'Annihilator' , 'Ardent' , 'Assassin' , 'Atrocious' , 'Barbarous' , 'Beheader' , 'Behemoth' , 'Bestial' , 'Bitter' , 'Bloodied' , 'Blood-soaked' , 'Blood-spattered' , 'Bloodstained' , 'Bloodthirsty' , 'Boisterous' , 'Bright' , 'Brilliant' , 'Brutal' , 'Callous' , 'Celebrated' , 'Cerberus' , 'Champion' , 'Chivalrous' , 'Clouded' , 'Cold-blooded' , 'Colossal' , 'Colossus' , 'Commanding' , 'Compassionless' , 'Conqueror' , 'Consecrated' , 'Crimson' , 'Cruel' , 'Cutthroat' , 'Cyclops' , 'Dark' , 'Dazzling' , 'Defender' , 'Demolisher' , 'Destroyer' , 'Devoted' , 'Distinguished' , 'Doorkeeper' , 'Dutiful' , 'Elevated' , 'Eradicator' , 'Esteemed' , 'Exalted' , 'Executioner' , 'Exterminator' , 'Extravagant' , 'Faithful' , 'Ferocious' , 'Fierce' , 'Firebrand' , 'Firm' , 'First' , 'Flenser' , 'Gatekeeper' , 'Giant' , 'Gigantic' , 'Gilded' , 'Glittering' , 'Glorious' , 'Godbreaker' , 'Gory' , 'Grandiose' , 'Great' , 'Grievous' , 'Grim' , 'Grisly' , 'Guardian' , 'Hateful' , 'Heroic' , 'Honorable' , 'Honored' , 'Illuminated' , 'Illustrious' , 'Immortal' , 'Impaler' , 'Implacable' , 'Ineffable' , 'Inexorable' , 'Intellectual' , 'Iron-fisted' , 'Lifetaker' , 'Lofty' , 'Lookout' , 'Loyal' , 'Magnanimous' , 'Magnificent' , 'Majestic' , 'Malevolent' , 'Merciless' , 'Mighty' , 'Omnipotent' , 'Overseer' , 'Paladin' , 'Phaeron’sHand' , 'Pitiless' , 'Prodigious' , 'Protector' , 'Proud' , 'Radiant' , 'Relentless' , 'Resplendent' , 'Ruthless' , 'Savage' , 'Sentinel' , 'Sentry' , 'Shining' , 'Shrouded' , 'Slaughterer' , 'Spiteful' , 'Splendid' , 'Stalwart' , 'Starkiller' , 'Starwalker' , 'Stormbringer' , 'Storm’sEye' , 'Strangler' , 'Stupendous' , 'Sublime' , 'Sumptuous' , 'Superior' , 'Terrible' , 'Titan' , 'Torchbearer' , 'Transcendent' , 'Triumphant' , 'Tyrannical' , 'Unbending' , 'Unfailing' , 'Unflinching' , 'Unforgiving' , 'Unliving' , 'Unmerciful' , 'Unrelenting' , 'Unstoppable' , 'Vanquisher' , 'Venerable' , 'Vengeful' , 'Vicious' , 'Victorious' , 'Vindictive' , 'Warden' , 'Watchdog' , 'Wicked' , 'Wise' , 'Zealous' )

nouns = ( 'Blade' , 'Blood' , 'Bone' , 'Dawn' , 'Dragon' , 'Drake' , 'Dusk' , 'Fire' , 'Frost' , 'Grave' , 'Galaxy' , 'God' , 'Hammer' , 'Head' , 'Heart' , 'Ice' , 'Iron' , 'Life' , 'Planet' , 'Shadow' , 'Shield' , 'Skull' , 'Sky' , 'Spear' , 'Spark' , 'Star' , 'Steel' , 'Storm' , 'Stone' , 'Sun' , 'Sword' , 'Thunder' , 'World' )

verbs = ( 'Banger' , 'Beater' , 'Binder' , 'Blazer' , 'Breaker' , 'Catcher' , 'Chucker' , 'Cracker' , 'Crusher' , 'Cutter' , 'Eater' , 'Herder' , 'Hunter' , 'Eater' , 'Fighter' , 'Killer' , 'Maker' , 'Master' , 'Rider' , 'Runner' , 'Screamer' , 'Seeker' , 'Shredder' , 'Smasher' , 'Snatcher' , 'Speaker' , 'Stabber' , 'Strider' , 'Sweeper' , 'Tracker' , 'Walker' , 'Warper' , 'Weaver' )

def getname ( ) :

if gender == "m" :

return random . choice ( malenames )

elif gender == "f" :

return random . choice ( femalenames )

else :

# Coin toss

gchoice = random . randint ( 0 , 1 )

if gchoice == 0 :

return random . choice ( malenames )

else :

return random . choice ( femalenames )

def gettitle ( ) :

# Type 1 is single words, type 2 is dual words, type 3 is nounverber

type = random . randint ( 1 , 3 )

if type == 1 :

# Single words

return random . choice ( singlewords )

elif type == 2 :

# Dual words

return "%s of %s" % ( random . choice ( dualfirst ) , random . choice ( dualsecond ) )

else :

# Nounverber

return "%s%s" % ( random . choice ( nouns ) , random . choice ( verbs ) )

for i in range ( numnames ) :