def save(self, ability: str, adv: bool = None): """ Rolls a combatant's saving throw. :param str ability: The type of save ("str", "dexterity", etc). :param bool adv: Whether to roll the save with advantage. Rolls with advantage if ``True``, disadvantage if ``False``, or normally if ``None``. :returns: A SimpleRollResult describing the rolled save. :rtype: :class:`~cogs5e.funcs.scripting.functions.SimpleRollResult` """ try: save = self._combatant.saves.get(ability) mod = save.value except ValueError: raise InvalidSaveType sb = self._combatant.active_effects('sb') if sb: saveroll = '1d20{:+}+{}'.format(mod, '+'.join(sb)) else: saveroll = '1d20{:+}'.format(mod) adv = 0 if adv is None else 1 if adv else -1 save_roll = roll(saveroll, adv=adv, rollFor='{} Save'.format(ability[:3].upper()), inline=True, show_blurbs=False) return SimpleRollResult(save_roll.rolled, save_roll.total, save_roll.skeleton, [part.to_dict() for part in save_roll.raw_dice.parts], save_roll)
def save(self, ability: str, adv: bool = None): try: save_skill = next(s for s in ('strengthSave', 'dexteritySave', 'constitutionSave', 'intelligenceSave', 'wisdomSave', 'charismaSave') if ability.lower() in s.lower()) except StopIteration: raise InvalidSaveType mod = self._combatant.saves.get(save_skill, 0) sb = self._combatant.active_effects('sb') if sb: saveroll = '1d20{:+}+{}'.format(mod, '+'.join(sb)) else: saveroll = '1d20{:+}'.format(mod) adv = 0 if adv is None else 1 if adv else -1 save_roll = roll(saveroll, adv=adv, rollFor='{} Save'.format(save_skill[:3].upper()), inline=True, show_blurbs=False) return SimpleRollResult( save_roll.rolled, save_roll.total, save_roll.skeleton, [part.to_dict() for part in save_roll.raw_dice.parts], save_roll)
def save(self, ability: str, adv: bool = None): try: save = self._combatant.saves.get(ability) mod = save.value except ValueError: raise InvalidSaveType sb = self._combatant.active_effects('sb') if sb: saveroll = '1d20{:+}+{}'.format(mod, '+'.join(sb)) else: saveroll = '1d20{:+}'.format(mod) adv = 0 if adv is None else 1 if adv else -1 save_roll = roll(saveroll, adv=adv, rollFor='{} Save'.format(ability[:3].upper()), inline=True, show_blurbs=False) return SimpleRollResult(save_roll.rolled, save_roll.total, save_roll.skeleton, [part.to_dict() for part in save_roll.raw_dice.parts], save_roll)
def save(self, ability: str, adv: bool = None): """ Rolls a combatant's saving throw. :param str ability: The type of save ("str", "dexterity", etc). :param bool adv: Whether to roll the save with advantage. Rolls with advantage if ``True``, disadvantage if ``False``, or normally if ``None``. :returns: A SimpleRollResult describing the rolled save. :rtype: :class:`~cogs5e.funcs.scripting.functions.SimpleRollResult` """ try: save = self._combatant.saves.get(ability) except ValueError: raise InvalidSaveType sb = self._combatant.active_effects('sb') saveroll = save.d20(base_adv=adv) if sb: saveroll = f'{saveroll}+{"+".join(sb)}' save_roll = roll(saveroll) return SimpleRollResult(save_roll)