Esempio n. 1
0
def apply_skills(character):
    character.setdefault('skills', [])
    for skill in list(character['skills']):
        pass
        # character['skills'] = ......

    character['points'].setdefault('spent', FlockDict())
    character['points'].setdefault('available', FlockDict())

    character['points']['spent']['mental'] = lambda: sum(
        skill.cost for skill in character['skills'] if skill.isMental)
    character['points']['available']['mental'] = lambda: character['points']['total']['mental'] - \
                                                         character['points']['spent']['mental']
    character['points']['spent']['physical'] = lambda: sum(
        skill.cost for skill in character['skills'] if skill.isPhysical)
    character['points']['available']['physical'] = lambda: character['points']['total']['physical'] - \
                                                           character['points']['spent']['physical']
    character['points']['spent']['heroic'] = lambda: sum(
        skill.cost for skill in character['skills'] if skill.isHeroic)
    character['points']['available']['heroic'] = lambda: character['points']['total']['heroic'] - \
                                                         character['points']['spent']['heroic']
    character['points']['spent']['universal'] = lambda: -sum(
        min(0, character['points']['available'][pt_type])
        for pt_type in character['points']['available']
        if pt_type != 'universal')
    character['points']['available']['universal'] = lambda: character['points']['total']['universal'] - \
                                                            character['points']['spent']['universal']
Esempio n. 2
0
def apply_level_allotments(character):
    if 'level' not in character:
        character['level'] = 1
    character.setdefault('points', FlockDict())
    character['points'].setdefault('total', FlockDict({'universal': 10}))
    character['points']['total']['mental'] = lambda: character[
        'level'] * character['bonuses']['Mental Skill Points']

    character['points']['total']['physical'] = lambda: character[
        'level'] * character['bonuses']['Phy Skill Points']
    character['points']['total']['heroic'] = lambda: character['level'] * (
        character['level'] + 1 + character['bonuses']['heroics'])
Esempio n. 3
0
 def setUp(self):
     super().setUp()
     self.flock = FlockDict()
     self.flock['a'] = 'Original Value'
     self.flock['b'] = {'i': 'Original Value', 'ii': 42}
     self.flock['c'] = [1, 2, 3]
     self.flock['d'] = set('ABC')
Esempio n. 4
0
def apply_racial_bonuses(character):
    if character["Race"] == "Human":
        preVal = character["Spirit"]
        character["Spirit"] = lambda: preVal + 2
        character.setdefault('Racial Bonuses', FlockDict())
        character['Racial Bonuses']['heroics'] = 1
    # print("character bonuses {ct_type} sources {sources} bonuses {rb_type}".format(
    #     ct_type=type(character.promises['bonuses']), rb_type=type(character.promises['Racial Bonuses']),
    #     sources=character.promises['bonuses'].sources))
    character.promises['bonuses'].sources.append(character['Racial Bonuses'])
Esempio n. 5
0
def apply_attribute_table(character):
    if 'Attribute_Bonuses' not in character:
        character['Attribute_Bonuses'] = FlockDict()
    for (attribute, bonus), table in get_attribute_table().items():
        character['Attribute_Bonuses'][bonus] = lookup(character, attribute,
                                                       table)
    character['base_bonuses'] = {'Spell Points Multiple': {'General': 1}}
    character['bonuses'] = FlockAggregator(
        [character['Attribute_Bonuses'], character['base_bonuses']],
        cross_total)
Esempio n. 6
0
 def test_split_cache(self):
     self.flock2 = FlockDict()
     self.flock2['dest'] = reference(self.flock, 'source')
     self.flock2['nested_dest'] = {'dest': reference(self.flock, 'nested_source', 'source')}
     self.flock2['jump_dest'] = {'dest': reference(self.flock['nested_source'], 'source')}
     assert self.flock2['dest'] == self.flock2['nested_dest']['dest'] == 'Original Value'
     self.flock['source'] = '1st New Value'
     assert self.flock2['dest'] == '1st New Value'
     assert self.flock2['nested_dest']['dest'] == self.flock2['jump_dest']['dest'] == 'Original Value'
     self.flock['nested_source']['source'] = '2nd New Value'
     assert self.flock2['dest'] == '1st New Value'
     assert self.flock2['nested_dest']['dest'] == '2nd New Value'
     assert self.flock2['jump_dest']['dest'] == '2nd New Value'
Esempio n. 7
0
def load_character(filename):
    sheet = pickle.load(open(filename, 'rb'))
    ret = FlockDict(sheet)
    return apply_rules(ret)
Esempio n. 8
0
                        default=None,
                        help="File to read character from.")
    parser.add_argument("--outfile",
                        type=argparse.FileType('w'),
                        default=None,
                        help="File to read character from.")
    return parser


if __name__ == "__main__":
    logging.basicConfig()
    parser = get_parser()
    opt = parser.parse_args()

    # char = load_character("Mondavite2.pkl")
    char = FlockDict()

    if not opt.infile:
        char['base_stats'] = {
            'Combat Skill': 13,
            'Dexterity': 16,
            'Health': 11,
            'Intelligence': 18,
            'Magic': 17,
            'Perception': 20,
            'Presence': 11,
            'Speed': 13,
            'Spirit': 10,
            'Strength': 10,
            'Luck': 10
        }
Esempio n. 9
0
 def setUp(self):
     super().setUp()
     self.flock = FlockDict()
     self.flock['x'] = {x: x for x in range(1, 10)}
     self.flock['y'] = {x: 2 * x for x in range(1, 10)}
Esempio n. 10
0
 def setUp(self):
     super().setUp()
     self.flock = FlockDict()
     self.flock['source'] = 'Original Value'
     self.flock['nested_source'] = {'source': 'Original Value'}
Esempio n. 11
0
 def setUp(self):
     super().setUp()
     self.flock = FlockDict()