added rarity to the default fields

This commit is contained in:
Bill Zorn 2015-08-01 02:26:34 -07:00
parent 0ec41d60a6
commit f0e631e015
5 changed files with 14815 additions and 14758 deletions

File diff suppressed because it is too large Load Diff

View File

@ -36,16 +36,16 @@ def main(fname, oname = None, verbose = True, dupes = 0, encoding = 'std', stabl
dupes = 1
elif encoding in ['rmana']:
if dupes == 0:
dupes = 3
dupes = 1
randomize_mana = True
elif encoding in ['rmana_dual']:
if dupes == 0:
dupes = 3
dupes = 1
fmt_ordered = fmt_ordered + [cardlib.field_cost]
randomize_mana = True
elif encoding in ['rfields']:
if dupes == 0:
dupes = 10
dupes = 1
fmt_labeled = cardlib.fmt_labeled_default
randomize_fields = True
#randomize_mana = True
@ -79,11 +79,26 @@ def main(fname, oname = None, verbose = True, dupes = 0, encoding = 'std', stabl
for json_cardname in sorted(json_srcs):
if len(json_srcs[json_cardname]) > 0:
jcards = json_srcs[json_cardname]
card = cardlib.Card(json_srcs[json_cardname][0])
# look for a normal rarity version, in a set we can use
idx = 0
card = cardlib.Card(jcards[idx])
while (idx < len(jcards)
and (card.rarity == utils.rarity_special_marker
or exclude_sets(jcards[idx][utils.json_field_set_name]))):
idx += 1
if idx < len(jcards):
card = cardlib.Card(jcards[idx])
# if there isn't one, settle with index 0
if idx >= len(jcards):
idx = 0
card = cardlib.Card(jcards[idx])
# we could go back and look for a card satisfying one of the criteria,
# but eh
skip = False
if (exclude_sets(jcards[0][utils.json_field_set_name])
or exclude_layouts(jcards[0]['layout'])):
if (exclude_sets(jcards[idx][utils.json_field_set_name])
or exclude_layouts(jcards[idx]['layout'])):
skip = True
for cardtype in card.types:
if exclude_types(cardtype):

View File

@ -74,6 +74,7 @@ fmt_ordered_default = [
field_types,
field_loyalty,
field_subtypes,
field_rarity,
field_pt,
field_cost,
field_text,
@ -191,21 +192,32 @@ def fields_from_json(src_json):
fields[field_subtypes] = [(-1, map(lambda s: utils.to_ascii(s.lower()),
src_json['subtypes']))]
if 'rarity' in src_json:
if src_json['rarity'] in utils.json_rarity_map:
fields[field_rarity] = [(-1, utils.json_rarity_map[src_json['rarity']])]
else:
fields[field_rarity] = [(-1, src_json['rarity'])]
parsed = False
else:
parsed = False
if 'loyalty' in src_json:
fields[field_loyalty] = [(-1, utils.to_unary(str(src_json['loyalty'])))]
p_t = ''
parsed_pt = True
if 'power' in src_json:
p_t = utils.to_ascii(utils.to_unary(src_json['power'])) + '/' # hardcoded
valid = False
parsed_pt = False
if 'toughness' in src_json:
p_t = p_t + utils.to_ascii(utils.to_unary(src_json['toughness']))
valid = True
parsed_pt = True
elif 'toughness' in src_json:
p_t = '/' + utils.to_ascii(utils.to_unary(src_json['toughness'])) # hardcoded
valid = False
parsed_pt = False
if p_t:
fields[field_pt] = [(-1, p_t)]
parsed = parsed and parsed_pt
# similarly, return the actual Manatext object
if 'text' in src_json:
@ -533,7 +545,11 @@ class Card:
outstr += ' ' + self.__dict__[field_cost].format(for_forum = for_forum)
if self.__dict__[field_rarity]:
outstr += ' (' + self.__dict__[rarity] + ')'
if self.__dict__[field_rarity] in utils.json_rarity_unmap:
rarity = utils.json_rarity_unmap[self.__dict__[field_rarity]]
else:
rarity = self.__dict__[field_rarity]
outstr += ' (' + rarity + ')'
if not self.parsed:
outstr += ' _UNPARSED_'
@ -594,7 +610,11 @@ class Card:
cardname = self.__dict__[field_name]
outstr += cardname
if self.__dict__[field_rarity]:
outstr += ' (' + self.__dict__[field_rarity] + ')'
if self.__dict__[field_rarity] in utils.json_rarity_unmap:
rarity = utils.json_rarity_unmap[self.__dict__[field_rarity]]
else:
rarity = self.__dict__[field_rarity]
outstr += ' (' + rarity.lower() + ')'
if not self.parsed:
outstr += ' _UNPARSED_'
if not self.valid:

View File

@ -22,6 +22,14 @@ choice_close_delimiter = ']'
x_marker = 'X'
tap_marker = 'T'
untap_marker = 'Q'
# second letter of the word
rarity_common_marker = 'O'
rarity_uncommon_marker = 'N'
rarity_rare_marker = 'A'
rarity_mythic_marker = 'Y'
# with some crazy exceptions
rarity_special_marker = 'E'
rarity_basic_land_marker = 'L'
# unambiguous synonyms
counter_rename = 'uncast'
@ -41,7 +49,7 @@ unary_exceptions = {
# field labels, to allow potential reordering of card format
field_label_name = '1'
field_label_rarity = 'Y' # 2 is part of some mana symbols {2/B} ...
field_label_rarity = '0' # 2 is part of some mana symbols {2/B} ...
field_label_cost = '3'
field_label_supertypes = '4'
field_label_types = '5'
@ -49,7 +57,6 @@ field_label_subtypes = '6'
field_label_loyalty = '7'
field_label_pt = '8'
field_label_text = '9'
# one left, could use for managing bsides
# additional fields we add to the json cards
json_field_bside = 'bside'

View File

@ -24,6 +24,22 @@ choice_close_delimiter = config.choice_close_delimiter
x_marker = config.x_marker
tap_marker = config.tap_marker
untap_marker = config.untap_marker
rarity_common_marker = config.rarity_common_marker
rarity_uncommon_marker = config.rarity_uncommon_marker
rarity_rare_marker = config.rarity_rare_marker
rarity_mythic_marker = config.rarity_mythic_marker
rarity_special_marker = config.rarity_special_marker
rarity_basic_land_marker = config.rarity_basic_land_marker
json_rarity_map = {
'Common' : rarity_common_marker,
'Uncommon' : rarity_uncommon_marker,
'Rare' : rarity_rare_marker,
'Mythic Rare' : rarity_mythic_marker,
'Special' : rarity_special_marker,
'Basic Land' : rarity_basic_land_marker,
}
json_rarity_unmap = {json_rarity_map[k] : k for k in json_rarity_map}
# unambiguous synonyms
counter_rename = config.counter_rename
@ -458,4 +474,3 @@ def from_symbols(s, for_forum = False):
return s
unletters_regex = r"[^abcdefghijklmnopqrstuvwxyz']"