Exemplo n.º 1
0
 def armor_class(self):
     try:
         max_dex = min(item.max_dex for item in self.ac_items()
                       if item.max_dex is not None)
         dexterity_modifier = min(max_dex, self.dexterity_modifier())
     except ValueError:  # If there is no AC item with a max dex
         dexterity_modifier = self.dexterity_modifier()
     return 10 + dexterity_modifier + get_total_bonus(self, 'armor class')
Exemplo n.º 2
0
 def will_save(self):
     levels = self.levels.values('character_class__id').annotate(
         Count("id")).order_by()
     base_save = 0
     for level in levels:
         character_class = CharacterClass.objects.filter(
             id=level['character_class__id']).get()
         base_save += self.get_base_save(
             character_class.good_will_progression, level['id__count'],
             character_class.is_prestige_class)
     return base_save + self.wisdom_modifier() + get_total_bonus(
         self, 'will save')
Exemplo n.º 3
0
 def burrow_speed(self):
     speed = self.get_best_speed('burrow')
     return max(self.safe_race().burrow_speed, speed) + get_total_bonus(
         self, 'burrow speed')
Exemplo n.º 4
0
 def climb_speed(self):
     speed = self.get_best_speed('climb')
     return max(self.safe_race().climb_speed, speed) + get_total_bonus(
         self, 'climb speed')
Exemplo n.º 5
0
 def dexterity(self):
     return self.base_dexterity + get_total_bonus(self, 'dexterity')
Exemplo n.º 6
0
 def attack_bonus(self, specific_weapon):
     # TODO proficiency, weapon properties (enhancement)
     return self.base_attack_bonus() + self.strength_modifier(
     ) + get_total_bonus(self, 'attack')
Exemplo n.º 7
0
 def combat_maneuver_defense(self):
     return 10 + self.base_attack_bonus() + self.strength_modifier() + self.dexterity_modifier() + \
            self.get_special_size_modifier(self.size) + get_total_bonus(self, 'armor class', bonus_types=[
                 'circumstance', 'deflection', 'dodge', 'insight', 'luck', 'morale', 'profane', 'sacred', 'penalty'
             ])
Exemplo n.º 8
0
 def damage_resistance(self):
     return 0 + get_total_bonus(self, 'damage resistance')
Exemplo n.º 9
0
 def charisma(self):
     return self.base_charisma + get_total_bonus(self, 'charisma')
Exemplo n.º 10
0
 def hit_points(self):
     return self.get_starting_hit_points() \
            + sum(roll.result for roll in self.roll_set.all()) \
            + get_modifier(self.constitution()) * self.level() \
            + get_total_bonus(self, 'hit points')
Exemplo n.º 11
0
 def wisdom(self):
     return self.base_wisdom + get_total_bonus(self, 'wisdom')
Exemplo n.º 12
0
 def intelligence(self):
     return self.base_intelligence + get_total_bonus(self, 'intelligence')
Exemplo n.º 13
0
 def constitution(self):
     return self.base_constitution + get_total_bonus(self, 'constitution')
Exemplo n.º 14
0
 def touch_armor_class(self):
     return self.armor_class() - get_total_bonus(
         self,
         'armor class',
         bonus_types=['armor', 'shield', 'natural armor'])
Exemplo n.º 15
0
 def initiative(self):
     return get_modifier(self.dexterity()) + get_total_bonus(
         self, 'initiative')
Exemplo n.º 16
0
 def flatfooted_armor_class(self):
     return 10 + get_total_bonus(self, 'armor class') - get_total_bonus(
         self, 'armor class', bonus_types=['dodge'])
Exemplo n.º 17
0
 def base_speed(self):
     return self.safe_race().base_speed + get_total_bonus(
         self, 'base speed')
Exemplo n.º 18
0
 def spell_resistance(self):
     return 0 + get_total_bonus(self, 'spell resistance')
Exemplo n.º 19
0
 def fly_speed(self):
     speed = self.get_best_speed('fly')
     return max(self.safe_race().fly_speed, speed) + get_total_bonus(
         self, 'fly speed')
Exemplo n.º 20
0
 def skill_bonus(self, skill):
     trained_bonus = 3 if (self.trained(skill)
                           and self.class_skill(skill)) else 0
     return self.rank_set.filter(to=skill).count() + trained_bonus + self.get_ability_modifier(skill.key_ability) + \
         get_total_bonus(self, skill.name.lower())
Exemplo n.º 21
0
 def swim_speed(self):
     speed = self.get_best_speed('swim')
     return max(self.safe_race().swim_speed, speed) + get_total_bonus(
         self, 'swim speed')
Exemplo n.º 22
0
 def damage(self, specific_weapon):
     damage_bonus = self.strength_modifier() + get_total_bonus(
         self, 'damage')
     damage = specific_weapon.damage()
     return f'{damage[0]}d{damage[1]}+{damage_bonus}'
Exemplo n.º 23
0
 def strength(self):
     return self.base_strength + get_total_bonus(self, 'strength')