Example #1
0
def parse_saving_throw(spell, value, override=False):
    value = colon_filter(value)
    if value.find('Throw ') == 0:
        value = value.replace('Throw ', '')
    if spell.has_key('saving_throw') and override:
        spell['saving_throw'] = value
    elif not spell.has_key('saving_throw'):
        spell['saving_throw'] = value
Example #2
0
def parse_saving_throw(spell, value, override=False):
	value = colon_filter(value)
	if value.find('Throw ') == 0:
		value = value.replace('Throw ', '')
	if spell.has_key('saving_throw') and override:
		spell['saving_throw'] = value
	elif not spell.has_key('saving_throw'):
		spell['saving_throw'] = value
Example #3
0
def parse_school(spell, value):
	value = value.replace(';', '')
	value = colon_filter(value)
	m = re.search('\((.*)\)', value)
	if m:
		spell['subschool'] = m.group(1)
		value= re.sub('\(.*\)', '', value)
	m = re.search('\[(.*)\]', value)
	if m:
		descriptor = m.group(1)
		spell['descriptor'] = descriptor.split(', ')
		value = re.sub('\[.*\]', '', value)
	spell['school'] = value.strip()
Example #4
0
def parse_school(spell, value):
    value = value.replace(';', '')
    value = colon_filter(value)
    m = re.search('\((.*)\)', value)
    if m:
        spell['subschool'] = m.group(1)
        value = re.sub('\(.*\)', '', value)
    m = re.search('\[(.*)\]', value)
    if m:
        descriptor = m.group(1)
        spell['descriptor'] = descriptor.split(', ')
        value = re.sub('\[.*\]', '', value)
    spell['school'] = value.strip()
Example #5
0
def parse_components(spell, value):
	value = colon_filter(value)
	m = re.search('\(.*?[^\)],.*?\)', value)
	while m:
		value = re.sub(r"\((.*?)[^\)],(.*?)\)", r"(\1|\2)", value)
		m = re.search('\(.*?[^\)],.*?\)', value)
	comps = value.split(', ')
	finalcomps = []
	for comp in comps:
		if comp.find('(') > -1:
			m = re.search('(.*) \((.*)\)', comp)
			name = m.group(1)
			comments = m.group(2)
			comments = comments.replace('|', ',')
			finalcomps.append({'type': name, 'text': comments})
		else:
			finalcomps.append({'type': comp})
	spell['components'] = finalcomps
Example #6
0
def parse_level(spell, value):
	value = colon_filter(value)
	if value.find(";"):
		value = value.replace(";", ",")
	levels = value.split(', ')
	finallevels = []
	for level in levels:
		m = re.search('(.*) (\d*)', level)
		c = m.group(1)
		l = int(m.group(2))
		if c.lower().strip() == 'sorcerer/wizard':
			finallevels.append({'class': 'sorcerer', 'level': l})
			finallevels.append({'class': 'wizard', 'level': l})
		elif c.lower().strip() == 'cleric':
			finallevels.append({'class': 'cleric', 'level': l})
			finallevels.append({'class': 'oracle', 'level': l})
		else:
			finallevels.append({'class': c, 'level': l})
	spell['level'] = finallevels
Example #7
0
def parse_level(spell, value):
    value = colon_filter(value)
    if value.find(";"):
        value = value.replace(";", ",")
    levels = value.split(', ')
    finallevels = []
    for level in levels:
        m = re.search('(.*) (\d*)', level)
        c = m.group(1)
        l = int(m.group(2))
        if c.lower().strip() == 'sorcerer/wizard':
            finallevels.append({'class': 'sorcerer', 'level': l})
            finallevels.append({'class': 'wizard', 'level': l})
        elif c.lower().strip() == 'cleric':
            finallevels.append({'class': 'cleric', 'level': l})
            finallevels.append({'class': 'oracle', 'level': l})
        else:
            finallevels.append({'class': c, 'level': l})
    spell['level'] = finallevels
Example #8
0
def parse_components(spell, value):
	value = colon_filter(value)
	m = re.search ('(\(.*?\))', value)
	content = []
	while m:
		value = re.sub('\(.*?\)', '{%s}' % len(content), value, count=1)
		content.append(m.groups()[0].replace(",", "|"))
		m = re.search('(\(.*?\))', value)
	comps = value.split(', ')
	finalcomps = []
	for comp in comps:
		if comp.find('{') > -1:
			m = re.search('(.*) {([0-9]*)}(.*)', comp)
			name = m.group(1)
			content_index = int(m.group(2))
			comments = content[content_index].replace('|', ',').replace('(', '').replace(')', '')
			finalcomps.append({'type': name, 'text': comments})
			if m.group(3) != '':
				finalcomps.append({'text': m.group(3)})
		else:
			finalcomps.append({'type': comp})
	spell['components'] = finalcomps
Example #9
0
def parse_level(spell, value):
	value = colon_filter(value)
	if value.find(";"):
		value = value.replace(";", ",")
	levels = value.split(', ')
	finallevels = []
	hunterlevels = None
	for level in levels:
		m = re.search('(.*) (\d*)', level)
		c = m.group(1)
		l = int(m.group(2))
		if c.lower().strip() == 'sorcerer/wizard':
			finallevels.append({'class': 'sorcerer', 'level': l})
			finallevels.append({'class': 'wizard', 'level': l})
			finallevels.append({'class': 'arcanist', 'level': l})
		elif c.lower().strip() == 'bard':
			finallevels.append({'class': 'bard', 'level': l})
			finallevels.append({'class': 'skald', 'level': l})
		elif c.lower().strip() == 'alchemist':
			finallevels.append({'class': 'alchemist', 'level': l})
			finallevels.append({'class': 'investigator', 'level': l})
		elif c.lower().strip() == 'cleric':
			finallevels.append({'class': 'cleric', 'level': l})
			finallevels.append({'class': 'oracle', 'level': l})
			finallevels.append({'class': 'warpriest', 'level': l})
		elif c.lower().strip() in ['druid', 'ranger']:
			finallevels.append({'class': c, 'level': l})
			if l <= 6:
				if not hunterlevels:
					hunterlevels = {'class': 'hunter', 'level': l}
				elif hunterlevels['level'] > l:
					hunterlevels['level'] = l
		else:
			finallevels.append({'class': c, 'level': l})

	if hunterlevels:
		finallevels.append(hunterlevels)

	spell['level'] = finallevels
Example #10
0
def parse_components(spell, value):
    value = colon_filter(value)
    m = re.search('(\(.*?\))', value)
    content = []
    while m:
        value = re.sub('\(.*?\)', '{%s}' % len(content), value, count=1)
        content.append(m.groups()[0].replace(",", "|"))
        m = re.search('(\(.*?\))', value)
    comps = value.split(', ')
    finalcomps = []
    for comp in comps:
        if comp.find('{') > -1:
            m = re.search('(.*) {([0-9]*)}(.*)', comp)
            name = m.group(1)
            content_index = int(m.group(2))
            comments = content[content_index].replace('|', ',').replace(
                '(', '').replace(')', '')
            finalcomps.append({'type': name, 'text': comments})
            if m.group(3) != '':
                finalcomps.append({'text': m.group(3)})
        else:
            finalcomps.append({'type': comp})
    spell['components'] = finalcomps
Example #11
0
def parse_school(spell, value):
	value = value.replace(';', '')
	value = colon_filter(value)
	m = re.search('\((.*)\)', value)
	if m:
		spell['subschool_text'] = m.group(1)
		spell['subschool'] = subschool_list(spell['subschool_text'])
		value= re.sub('\(.*\)', '', value)
	m = re.search('\[(.*)\]', value)
	if m:
		descriptor = m.group(1)
		spell['descriptor_text'] = descriptor
		descriptors = descriptor.split(', ')
		repaired_descriptors = []
		for d in descriptors:
			if d.startswith('or '):
				d = d[3:]
			if d.endswith(' see text'):
				d = d[:-9]
			repaired_descriptors.append(d)
		spell['descriptor'] = repaired_descriptors
		value = re.sub('\[.*\]', '', value)
	spell['school'] = value.strip()
Example #12
0
	def fxn(sb, value):
		value = colon_filter(value)
		value = value.replace('&ndash;', '-')
		value = value.replace('&mdash;', '-')
		spells = sb.setdefault('spells', {})
		spells[field] = value
Example #13
0
def parse_casting_time(spell, value):
	value = colon_filter(value)
	if value.find('Time ') == 0:
		value = value.replace('Time', '')
	spell['casting_time'] = value
Example #14
0
	def fxn(spell, value):
		value = colon_filter(value)
		effect = spell.setdefault('effects', [])
		effect.append({'name': filter_name(field), 'text': value})
Example #15
0
def parse_casting_time(spell, value):
    value = colon_filter(value)
    if value.find('Time ') == 0:
        value = value.replace('Time', '')
    spell['casting_time'] = value
Example #16
0
 def fxn(spell, value):
     value = colon_filter(value)
     effect = spell.setdefault('effects', [])
     effect.append({'name': filter_name(field), 'text': value})