Esempio n. 1
0
    def __init__(self):
        self.cfeats = self.load_json('srd-classfeats.json', [])
        self.classes = self.load_json('srd-classes.json', [])
        self.conditions = self.load_json('conditions.json', [])
        self.feats = self.load_json('srd-feats.json', [])
        self.itemprops = self.load_json('itemprops.json', {})
        self.monsters = self.load_json('srd-bestiary.json', [])
        self.names = self.load_json('names.json', [])
        self.rules = self.load_json('rules.json', [])

        self.spells = [Spell.from_data(r) for r in self.load_json('srd-spells.json', [])]
        self.backgrounds = [Background.from_data(b) for b in self.load_json('srd-backgrounds.json', [])]
        self.items = [i for i in self.load_json('srd-items.json', []) if i.get('type') is not '$']
        self.monster_mash = [Monster.from_data(m) for m in self.monsters]

        self.subclasses = self.load_subclasses()

        srd_races = self.load_json('srd-races.json', [])
        self.fancyraces = [Race.from_data(r) for r in srd_races]
        self.rfeats = []
        for race in srd_races:
            for entry in race['entries']:
                if isinstance(entry, dict) and 'name' in entry:
                    temp = {'name': "{}: {}".format(race['name'], entry['name']),
                            'text': parse_data_entry(entry['entries']), 'srd': race['srd']}
                    self.rfeats.append(temp)
Esempio n. 2
0
    def load_common(self):
        self.backgrounds = [Background.from_data(b) for b in self.srd_backgrounds]
        self.fancyraces = [Race.from_data(r) for r in self.srd_races]
        self.monster_mash = [Monster.from_data(m) for m in self.monsters]
        self.spells = [Spell.from_data(s) for s in self.srd_spells]

        self.items = [i for i in self.srd_items if i.get('type') is not '$']

        self.rfeats = self.load_rfeats()
        self.subclasses = self.load_subclasses()
Esempio n. 3
0
 def __init__(self):
     with open('./res/conditions.json', 'r') as f:
         self.conditions = json.load(f)
     with open('./res/rules.json', 'r') as f:
         self.rules = json.load(f)
     with open('./res/feats.json', 'r') as f:
         self.feats = json.load(f)
     with open('./res/races.json', 'r') as f:
         _raw = json.load(f)
         self.rfeats = []
         self.fancyraces = [Race.from_data(r) for r in _raw]
         for race in _raw:
             for entry in race['entries']:
                 if isinstance(entry, dict) and 'name' in entry:
                     temp = {
                         'name': "{}: {}".format(race['name'],
                                                 entry['name']),
                         'text': parse_data_entry(entry['entries']),
                         'srd': race['srd']
                     }
                     self.rfeats.append(temp)
     with open('./res/classes.json', 'r') as f:
         self.classes = json.load(f)
     with open('./res/classfeats.json') as f:
         self.cfeats = json.load(f)
     with open('./res/bestiary.json', 'r') as f:
         self.monsters = json.load(f)
         self.monster_mash = [Monster.from_data(m) for m in self.monsters]
     with open('./res/spells.json', 'r') as f:
         self.spells = [Spell.from_data(r) for r in json.load(f)]
     with open('./res/items.json', 'r') as f:
         _items = json.load(f)
         self.items = [i for i in _items if i.get('type') is not '$']
     with open('./res/backgrounds.json', 'r') as f:
         self.backgrounds = [Background.from_data(b) for b in json.load(f)]
     self.subclasses = self.load_subclasses()
     with open('./res/itemprops.json', 'r') as f:
         self.itemprops = json.load(f)
     with open('./res/names.json', 'r') as f:
         self.names = json.load(f)
Esempio n. 4
0
 def __init__(self):
     with open('./res/conditions.json', 'r') as f:
         self.conditions = json.load(f)
     with open('./res/rules.json', 'r') as f:
         self.rules = json.load(f)
     with open('./res/feats.json', 'r') as f:
         self.feats = json.load(f)
     with open('./res/races.json', 'r') as f:
         _raw = json.load(f)
         self.rfeats = []
         self.races = copy.deepcopy(_raw)
         self.fancyraces = [Race.from_data(r) for r in self.races]
         for race in _raw:
             for entry in race['entries']:
                 if isinstance(entry, dict) and 'name' in entry:
                     temp = {
                         'name': "{}: {}".format(race['name'],
                                                 entry['name']),
                         'text': parse_data_entry(entry['entries']),
                         'srd': race['srd']
                     }
                     self.rfeats.append(temp)
     with open('./res/classes.json', 'r', encoding='utf-8-sig') as f:
         _raw = json.load(f)
         self.cfeats = []
         self.classes = copy.deepcopy(_raw)
         for _class in _raw:
             for level in _class.get('classFeatures', []):
                 for feature in level:
                     fe = {
                         'name': f"{_class['name']}: {feature['name']}",
                         'text': parse_data_entry(feature['entries']),
                         'srd': _class['srd']
                     }
                     self.cfeats.append(fe)
                     options = [
                         e for e in feature['entries']
                         if isinstance(e, dict) and e['type'] == 'options'
                     ]
                     for option in options:
                         for opt_entry in option.get('entries', []):
                             fe = {
                                 'name':
                                 f"{_class['name']}: {feature['name']}: {_resolve_name(opt_entry)}",
                                 'text':
                                 f"{_parse_prereqs(opt_entry)}{parse_data_entry(opt_entry['entries'])}",
                                 'srd': _class['srd']
                             }
                             self.cfeats.append(fe)
             for subclass in _class.get('subclasses', []):
                 for level in subclass.get('subclassFeatures', []):
                     for feature in level:
                         options = [
                             f for f in feature.get('entries', []) if
                             isinstance(f, dict) and f['type'] == 'options'
                         ]  # battlemaster only
                         for option in options:
                             for opt_entry in option.get('entries', []):
                                 fe = {
                                     'name':
                                     f"{_class['name']}: {option['name']}: "
                                     f"{_resolve_name(opt_entry)}",
                                     'text':
                                     parse_data_entry(opt_entry['entries']),
                                     'srd':
                                     subclass.get('srd', False)
                                 }
                                 self.cfeats.append(fe)
                         for entry in feature.get('entries', []):
                             if not isinstance(entry, dict): continue
                             if not entry.get('type') == 'entries': continue
                             fe = {
                                 'name':
                                 f"{_class['name']}: {subclass['name']}: {entry['name']}",
                                 'text': parse_data_entry(entry['entries']),
                                 'srd': subclass.get('srd', False)
                             }
                             self.cfeats.append(fe)
                             options = [
                                 e for e in entry['entries']
                                 if isinstance(e, dict)
                                 and e['type'] == 'options'
                             ]
                             for option in options:
                                 for opt_entry in option.get('entries', []):
                                     fe = {
                                         'name':
                                         f"{_class['name']}: {subclass['name']}: {entry['name']}: "
                                         f"{_resolve_name(opt_entry)}",
                                         'text':
                                         parse_data_entry(
                                             opt_entry['entries']),
                                         'srd':
                                         subclass.get('srd', False)
                                     }
                                     self.cfeats.append(fe)
     with open('./res/bestiary.json', 'r') as f:
         self.monsters = json.load(f)
         self.monster_mash = [Monster.from_data(m) for m in self.monsters]
     with open('./res/spells.json', 'r') as f:
         self.spells = json.load(f)
     with open('./res/items.json', 'r') as f:
         _items = json.load(f)
         self.items = [i for i in _items if i.get('type') is not '$']
     with open('./res/auto_spells.json', 'r') as f:
         self.autospells = json.load(f)
     with open('./res/backgrounds.json', 'r') as f:
         self.backgrounds = json.load(f)
     self.subclasses = self.load_subclasses()
     with open('./res/itemprops.json', 'r') as f:
         self.itemprops = json.load(f)