bcdice/BCDice

View on GitHub
lib/bcdice/game_system/NjslyrBattle.rb

Summary

Maintainability
A
35 mins
Test Coverage
A
100%
# frozen_string_literal: true

module BCDice
  module GameSystem
    class NjslyrBattle < Base
      # ゲームシステムの識別子
      ID = 'NjslyrBattle'

      # ゲームシステム名
      NAME = 'NJSLYRBATTLE'

      # ゲームシステム名の読みがな
      SORT_KEY = 'にんしやすれいやあはとる'

      # ダイスボットの使い方
      HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
        ・カラテロール
        2d6<=(カラテ点)
        例)2d6<=5
        (2D6<=5) > 2[1,1] > 2 > 成功 重点 3 溜まる
      INFO_MESSAGE_TEXT

      # ゲーム別成功度判定(2D6)
      def result_2d6(total, _dice_total, dice_list, cmp_op, target)
        return Result.nothing if target == "?"
        return nil if cmp_op != :<=

        result = (total <= target ? Result.success("成功") : Result.failure("失敗"))
        result.text += juuten(dice_list)

        return result
      end

      private

      def juuten(dice_list)
        juuten = dice_list.count(1) + dice_list.count(6)

        if dice_list[0] == dice_list[1]
          juuten += 1
        end

        if juuten > 0
          " 重点 #{juuten} 溜まる"
        else
          ""
        end
      end
    end
  end
end