# plugs/chargen.py

""" random character generator """

__copyright__ = 'this file is in the public domain'

from gozerbot.generic import handle_exception
from gozerbot.commands import cmnds
from gozerbot.examples import examples
from gozerbot.plughelp import plughelp
from gozerbot.tests import tests
import re, random, urllib, os

plughelp.add('chargen', 'Generate a random character for use in an RPG')

try:
	os.makedirs('./gozerdata/plugs/chargen')
except OSError:
	pass

	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.names", "gozerdata/plugs/chargen/list.names")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.surnames", "gozerdata/plugs/chargen/list.surnames")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.haircolor", "gozerdata/plugs/chargen/list.haircolor")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.hairstyle", "gozerdata/plugs/chargen/list.hairstyle")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.races", "gozerdata/plugs/chargen/list.races")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.eyes", "gozerdata/plugs/chargen/list.eyes")

def handle_charcreate(bot, ievent):
        """ Actually create the random character """

	name = open('gozerdata/plugs/chargen/list.names','r').readlines()
	surname = open('gozerdata/plugs/chargen/list.surnames','r').readlines()
	haircolor = open('gozerdata/plugs/chargen/list.haircolor','r').readlines()
	hairstyle = open('gozerdata/plugs/chargen/list.hairstyle','r').readlines()
	race = open('gozerdata/plugs/chargen/list.races','r').readlines()
	eyes = open('gozerdata/plugs/chargen/list.eyes','r').readlines()
	
	ievent.reply('Character: ')
	ievent.reply('Name    : ' + str(random.choice(name)) + ' ' + str(random.choice(surname)))
	ievent.reply('Hair    : ' + str(random.choice(hairstyle)) + ', ' + str(random.choice(haircolor)))
	ievent.reply('Eyes    : ' + str(random.choice(eyes)))
	ievent.reply('Race    : ' + str(random.choice(race)))

cmnds.add('chargen-create', handle_charcreate, 'USER')
examples.add('chargen-create', 'Create a random character', 'chargen-create')

def handle_charupdate(bot, ievent):
        """ Update the lists needed for creating the characters """

	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.names", "gozerdata/plugs/chargen/list.names")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.surnames", "gozerdata/plugs/chargen/list.surnames")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.haircolor", "gozerdata/plugs/chargen/list.haircolor")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.hairstyle", "gozerdata/plugs/chargen/list.hairstyle")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.races", "gozerdata/plugs/chargen/list.races")
	urllib.urlretrieve("http://projects.oldones.net/gozerbot-plugins/chargen/list.eyes", "gozerdata/plugs/chargen/list.eyes")
	ievent.reply('The list was updated')

cmnds.add('chargen-update', handle_charupdate, 'USER')
examples.add('chargen-update', 'Update the lists', 'chargen-update')

def handle_chargen(bot, ievent):
	if not ievent.args:
		ievent.missing('can be used with -> chargen-update & chargen-create ')

cmnds.add('chargen', handle_chargen, 'USER')
examples.add('chargen', 'generates random characters', 'chargen')
tests.add('chargen')
