Skip to content

Commit

Permalink
プラグイン Detatoko 修正
Browse files Browse the repository at this point in the history
* コマンド".ds"で、スキルランクに31以上を指定した時の処理にエラーがあったので修正した
* コマンド".ds"で、フラグを先に、四則演算を後ろに記述しても認識するようにした
* 判定値がフラグ以下だった場合の、気力ダメージに関する出力の改良した
* 上の修正に伴い、ドキュメントを更新した
* 発言にマッチする部分にある正規表現のうち、繰り返されるいくつかを定数化した
  • Loading branch information
koi-chan committed Mar 17, 2015
1 parent 2b2f0d2 commit fe750ef
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 15 deletions.
2 changes: 1 addition & 1 deletion doc/plugins/detatoko.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Detatoko
> でたとこサーガ [koi-chan]: スキルランク = 3 -> [6, 6, 5, 6]:12 + 3 = 15 (フラグ:10)
.ds3@10
> でたとこサーガ [koi-chan]: スキルランク = 3 -> [5, 4, 5, 5]:10 = 10 (フラグ:10)
> でたとこサーガ [koi-chan]: フラグ以下 -> 気力ダメージ = 3
> でたとこサーガ [koi-chan]: フラグ以下】気力ダメージ -> 1d6 = 4
```

### 体力烙印の獲得 (`.dvst` / `.dsst` / `.dtr` / `.d体力烙印`)
Expand Down
8 changes: 8 additions & 0 deletions lib/rgrb/plugin/detatoko/constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,16 @@
module RGRB
module Plugin
module Detatoko
# スキルランクを表す正規表現
SR_RE = /s(\d+)/
# 固定値での四則演算を表す正規表現
SOLID_RE = %r|([+*\-/])(\d+)|
# フラグを指定した時の正規表現
FLAG_RE = /@(\d+)/
# コマンドのパターンの最後を表す正規表現
END_RE = /(?:[\s ]|$)/
# スタンス系統にマッチする正規表現
STANCE_RE = /(?:敵視|宿命|憎悪|雲上|従属|不明|[・+\+])+/
end
end
end
11 changes: 6 additions & 5 deletions lib/rgrb/plugin/detatoko/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ def initialize
# @param [Fixnum] flag フラグ
# @return [String]
def skill_decision(skill_rank, calc, solid, flag)
header = "スキルランク = #{skill_rank} -> "

case skill_rank
when 0
result = @dice_roll_generator.dice_roll(3, 6)
Expand All @@ -37,17 +39,16 @@ def skill_decision(skill_rank, calc, solid, flag)
end
decision = values.reduce(0, :+)

message = "スキルランク = #{skill_rank} -> ["
message << result.values.join(',')
message << ":#{decision}]"
message = header
message << "[#{result.values.join(',')}:#{decision}]"
message << " #{calc} #{solid}" unless solid == 0
message << " = "
message << eval("#{decision.to_f} #{calc} #{solid}").ceil.to_s
unless flag == 0
message << " (フラグ:#{flag})"
if decision <= flag
message << "\n" \
"フラグ以下 -> 気力ダメージ = #{@random.rand(1..6)}"
message << "\n【フラグ以下】気力ダメージ -> 1d6 = "
message << "#{@random.rand(1..6)}"
end
end

Expand Down
19 changes: 10 additions & 9 deletions lib/rgrb/plugin/detatoko/irc_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,19 @@ class IrcAdapter

set(plugin_name: 'Detatoko')
self.prefix = '.d'
match(/s(\d+)#{END_RE}/i, method: :skill_decision)
match(%r|s(\d+)([+*\-/])(\d+)#{END_RE}|i, method: :skill_decision)
match(%r|s(\d+)([+*\-/])(\d+)@(\d+)|i, method: :skill_decision)
match(/s(\d+)@(\d+)/i, method: :skill_decision_flag)
match(/#{SR_RE}#{END_RE}/io, method: :skill_decision)
match(/#{SR_RE}#{SOLID_RE}#{END_RE}/io, method: :skill_decision)
match(/#{SR_RE}#{SOLID_RE}#{FLAG_RE}/io, method: :skill_decision)
match(/#{SR_RE}#{FLAG_RE}#{END_RE}/io, method: :skill_decision_flag)
match(/#{SR_RE}#{FLAG_RE}#{SOLID_RE}/io, method: :skill_decision_flag)
match(/(v|m|s|w)s/i, method: :stigma)
match(/(t|k)r/i, method: :stigma)
match(/(体|気)力烙印/i, method: :stigma)
match(/(v|m|s|w)be/i, method: :badend)
match(/(t|k)b/i, method: :badend)
match(/(体|気)力バッドエンド/i, method: :badend)
match(/stance[\s ]+((?:敵視|宿命|憎悪|雲上|従属|不明|[・+\+])+)/i, method: :stance)
match(/スタンス[\s ]+((?:敵視|宿命|憎悪|雲上|従属|不明|[・+\+])+)/i, method: :stance)
match(/stance[\s ]+(#{STANCE_RE})/io, method: :stance)
match(/スタンス[\s ]+(#{STANCE_RE})/io, method: :stance)

def initialize(*args)
super
Expand All @@ -42,10 +43,10 @@ def skill_decision(m, skill_rank, calc = '+', solid = 0, flag = 0)
}
end

# skill_decision の固定値なし・フラグあり用ラッパー
# skill_decision のフラグ先行コマンド用ラッパー
# @return [void]
def skill_decision_flag(m, skill_rank, flag = 0)
skill_decision(m, skill_rank, '+', '0', flag)
def skill_decision_flag(m, skill_rank, flag = 0, calc = '+', solid = 0)
skill_decision(m, skill_rank, calc, solid, flag)
end

# 烙印(p.63)を得る
Expand Down

0 comments on commit fe750ef

Please sign in to comment.