Class: BCDice::GameSystem::Postman
- Defined in:
- lib/bcdice/game_system/Postman.rb
Constant Summary collapse
- ID =
ゲームシステムの識別子
'Postman'
- NAME =
ゲームシステム名
'壊れた世界のポストマン'
- SORT_KEY =
ゲームシステム名の読みがな
'こわれたせかいのほすとまん'
- HELP_MESSAGE =
ダイスボットの使い方
<<~MESSAGETEXT ◆判定:[n]PO[+-a][> or >= or @X] []内省略可。 達成値と判定の成否、クリティカル、ファンブルを結果表示します。 「n」でダイス数を指定。省略時は2D。 「+-a」で達成値への修正を指定。「+2+1-4」のような複数回指定可。 「>X」「>=X」「@X」で難易度を指定可。 「>X」は達成値>難易度、「>=X」「@X」は達成値>=難易度で判定します。 【書式例】 3PO+2-1 → 3Dで達成値修正+1の判定。達成値のみ表示。 PO@5+2 → 2Dで目標値7の判定。判定の成否と達成値を表示。 4PO-2+1>7+2 → 4Dで達成値修正-1、目標値9(同値は失敗)の判定。 ◆天候チェック:WEA[n] []内省略可。 天候チェック表を参照します。 「n」を指定すると、指定した結果を表示します。(【幸運点】使用時用) ◆自由行動シチュエーション表:FRE MESSAGETEXT
Instance Attribute Summary
Attributes inherited from Base
#d66_sort_type, #default_cmp_op, #default_target_number, #randomizer, #reroll_dice_reroll_threshold, #round_type, #sides_implicit_d, #upper_dice_reroll_threshold
Instance Method Summary collapse
- #checkRoll(diceCount, modify, type, target) ⇒ Object
- #eval_game_system_specific_command(command) ⇒ Object
- #get_free_situation_table ⇒ Object
- #get_weather_table(roc) ⇒ Object
-
#initialize(command) ⇒ Postman
constructor
A new instance of Postman.
Methods inherited from Base
#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, eval, #eval, #grich_text, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?
Methods included from Translate
Constructor Details
#initialize(command) ⇒ Postman
Returns a new instance of Postman.
46 47 48 49 |
# File 'lib/bcdice/game_system/Postman.rb', line 46 def initialize(command) super(command) @sort_add_dice = true # ダイスのソート有 end |
Instance Method Details
#checkRoll(diceCount, modify, type, target) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/bcdice/game_system/Postman.rb', line 88 def checkRoll(diceCount, modify, type, target) diceArray = @randomizer.(diceCount, 6).sort dice = diceArray.sum() diceText = diceArray.join(",") dice2 = diceArray[-2] + diceArray[-1] diceText2 = "#{diceArray[-2]},#{diceArray[-1]}" criticalCount = diceArray.count(6) if modify != 0 modifyText = '' modifyText = "+" if modify > 0 modifyText += modify.to_s end result = dice2 + modify if type != '' resultText = " 【失敗】" operatorText = ">" if type == '>' resultText = " 【成功】" if result > target else operatorText += "=" resultText = " 【成功】" if result >= target end end if criticalCount >= 2 resultText = " 【成功】(クリティカル)" elsif dice == diceCount resultText = " 【失敗】(ファンブル)" end text = "#{diceCount}D6(#{diceText})#{modifyText} > #{dice2}(#{diceText2})#{modifyText} = 達成値:#{result}" text += "#{operatorText}#{target} " if target > 0 text += resultText.to_s return text end |
#eval_game_system_specific_command(command) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/bcdice/game_system/Postman.rb', line 51 def eval_game_system_specific_command(command) text = case command.upcase when /(\d+)?PO(\d+)?(([+-]\d+)*)?((>|>=|@)(\d+)(([+-]\d+)*)?)?/i diceCount = (Regexp.last_match(1) || 2).to_i diceCount = 2 if diceCount < 2 modify = (Regexp.last_match(2) || 0).to_i modifyAddString = Regexp.last_match(3) || '' type = Regexp.last_match(6) || '' target = (Regexp.last_match(7) || 0).to_i targetAddString = Regexp.last_match(8) || '' modify_list = modifyAddString.scan(/[+-]\d+/) modify_list.each { |i| modify += i.to_i } if target != 0 target_list = targetAddString.scan(/[+-]\d+/) target_list.each { |j| target += j.to_i } end checkRoll(diceCount, modify, type, target) when /WEA(\d+)?/i roc = (Regexp.last_match(1) || 0).to_i get_weather_table(roc) when 'FRE' get_free_situation_table end return text end |
#get_free_situation_table ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/bcdice/game_system/Postman.rb', line 161 def get_free_situation_table() name = "自由行動シチュエーション表" table = [ [2, '何をするでもなく、霞がかったような夜空を見上げる。ふと隣に目を向ければ、彼/彼女が居た。彼/彼女は、こうなる前の夜空を知っているのだろうか。'], [3, '夢を見た。大戦の最中、街が、人が、世界が焼けていく悪夢を。追い立てられるようにして目を覚ますと、彼/彼女が君を見ていた。 ……もしかして、自分はよほどうなされていたのだろうか。'], [4, '周囲で見つけたガラクタを使って、ちょっとしたビックリ玩具を作ってみた。「彼/ 彼女」にコイツをけしかけたら、どんな反応をするだろうか?'], [5, '使えそうなものがないか探していると、カタンと物音がして何かが落ちた。拾い上げてみたそれは、かつてここで生活していた誰かの名残(写真、家具、玩具等)だった。'], [6, 'テントの中で夜を過ごしていると、ふと彼/彼女と話したくてたまらない気持ちになった。言ってしまえば、夜の静けさに寂しさを覚えてしまったのだ。'], [7, 'ここまでの配達の記録をつけていたら、背後から視線を感じる……! もしや、彼/彼女に覗かれている……!?'], [8, '周囲を探索していると、君一人では手の届かないところに金属製の箱か何かがあることに気づいた。彼/彼女に手伝ってもらえば、取れるだろうか……?'], [9, '朝まではまだしばらくあるというのに、目が覚めてしまった。二度寝しようにも寝付けずに居ると、隣でもぞもぞと動く気配がする。彼/彼女も、どうやら同じらしい。'], [10, '他愛のない話をするうちに、君は彼/彼女に問いかけていた。「何故、ポストマンになろうと思ったのか」 ……そういえば、君自身はどうだったろうか。'], [11, '保存食にありつこうとしたその時、君は気づいた。一匹のネズミが、彼/彼女の荷物の中に潜り込もうとしている。彼/彼女は気づいていないが、このままでは食料が危ない!'], [12, 'テントを設営し、落ち着いた頃にふと気づく。 ……身体が熱い。少し、だるさもあるような気もする。大したことはないと思うが、彼/彼女に相談しておいた方がいいだろうか。'] ] dice_list = @randomizer.(2, 6) dice = dice_list.sum() diceText = dice_list.join(",") tableText = get_table_by_number(dice, table) text = "#{name}(#{diceText}) > #{dice}:#{tableText}" return text end |
#get_weather_table(roc) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/bcdice/game_system/Postman.rb', line 129 def get_weather_table(roc) name = "天候チェック" table = [ [2, '大雨と強風。探索判定の難易度に+4。'], [3, '風が強い1日になりそう。探索判定の難易度に+2。'], [4, '晴れ。特になし。'], [5, '夜の間の雨でぬかるむ。探索判定の難易度に+2。'], [6, 'それなりの雨足。探索判定の難易度に+2。'], [7, '晴れ。特になし。'], [8, '天気は大荒れ。探索判定の難易度に+4。'], [9, '小雨が降る。探索判定の難易度に+1。'], [10, 'それなりの雨足。探索判定の難易度に+2。'], [11, '晴れ。特になし。'], [12, '風が強い1日になりそう。探索判定の難易度に+2。'] ] if roc == 0 dice_list = @randomizer.(2, 6) dice = dice_list.sum() diceText = dice_list.join(",") else roc = 2 if roc < 2 roc = 12 if roc > 12 dice = roc diceText = "Choice:#{roc}" end tableText = get_table_by_number(dice, table) text = "#{name}(#{diceText}) > #{dice}:#{tableText}" return text end |