コード例 #1
0
ファイル: combat.py プロジェクト: thomasmckay/avrae
    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)
コード例 #2
0
ファイル: combat.py プロジェクト: nadizak/avrae
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)