加算ロールの演算処理を担うクラス。
getSlashedDice
ダイスロール結果の除算を行う。接尾辞 U
や R
によって丸め処理の方法を指定することができる。
例:
4D10
の結果が30
のとき- 切り捨て:
4D10/7
→ 4.2… → 4 - 四捨五入:
4D10/7R
→ 4.2… → 4 - 切り上げ:
4D10/7U
→ 4.2… → 5
- 切り捨て:
4D10
の結果が32
のとき- 切り捨て:
4D10/7
→ 4.5… → 4 - 四捨五入:
4D10/7R
→ 4.5… → 5 - 切り上げ:
4D10/7U
→ 4.5… → 5
- 切り捨て:
def getSlashedDice(slashMark, dice)
return dice unless( /^\/(\d+)(.)?$/i === slashMark )
rate = $1.to_i
mark = $2
return dice if( rate == 0 )
value = (1.0 * dice / rate)
case mark
when "U"
dice = value.ceil
when "R"
dice = value.round
else
dice = value.floor
end
return dice
end