Class: BCDice::GameSystem::TrinitySeven
- Defined in:
- lib/bcdice/game_system/TrinitySeven.rb
Constant Summary collapse
- ID =
ゲームシステムの識別子
'TrinitySeven'
- NAME =
ゲームシステム名
'トリニティセブンRPG'
- SORT_KEY =
ゲームシステム名の読みがな
'とりにていせふんRPG'
- HELP_MESSAGE =
ダイスボットの使い方
<<~MESSAGETEXT クリティカルが変動した命中及び、7の出目がある場合のダメージ計算が行なえます。 なお、通常の判定としても利用できます。 ・発動/命中 [TR(±c*)<=(x)±(y*) 又は TR<=(x) など]*は必須ではない項目です。 "TR(クリティカルの修正値*)<=(発動/命中)±(発動/命中の修正値*)" 加算減算のみ修正値も付けられます。 [修正値]は必須ではありません。 例)TR<=50 TR<=60+20 TR7<=40 TR-7<=80 TR+10<=80+20 ・ダメージ計算 [(x)DM(c*)±(y*) 又は (x)DM(c*) 又は (x)DM±(y*)]*は必須ではない項目です。 "(ダイス数)DM(7の出目の数*)+(修正*)" 加算減算のみ修正値も付けられます。 [7の出目の数]および[修正値]は必須ではありません。 例)6DM2+1 5DM2 4DM 3DM+3 後から7の出目に変更する場合はC(7*6+5)のように入力して計算してください。 ・名前表 [TRNAME] 名字と名前を出します。PCや突然現れたNPCの名付けにどうぞ。 MESSAGETEXT
- NAME1 =
DiceTable::Table.new( "名字表", "1D100", [ '春日', # 1 '浅見', '風間', '神無月', '倉田', '不動', '山奈', 'シャルロック', '霧隠', '果心', # 10 '今井', '長瀬', '明智', '風祭', '志貫', '一文字', '月夜野', '桜田門', '果瀬', '九十九', # 20 '速水', '片桐', '葉月', 'ウィンザー', '時雨里', '神城', '水際', '一ノ江', '仁藤', '北千住', # 30 '西村', '諏訪', '藤宮', '御代', '橘', '霧生', '白石', '椎名', '綾小路', '二条', # 40 '光明寺', '春秋', '雪見', '刀条院', 'ランカスター', 'ハクア', 'エルタニア', 'ハーネス', 'アウグストゥス', '椎名町', # 50 '鍵守', '茜ヶ崎', '鎮宮', '美柳', '鎖々塚', '櫻ノ杜', '鏡ヶ守', '輝井', '南陽', '雪乃城', # 60 '六角屋', '鈴々', '東三条', '朱雀院', '青龍院', '白虎院', '玄武院', '麒麟院', 'リーシュタット', 'サンクチュアリ', # 70 '六実', '須藤', 'ミレニアム', '七里', '三枝', '八殿', '藤里', '久宝', '東', '赤西', # 80 '神ヶ崎', 'グランシア', 'ダークブーレード', '天光寺', '月見里', '璃宮', '藤見澤', '赤聖', '姫宮', '華ノ宮', # 90 '"天才"', '"達人"', '"賢者"', '"疾風"', '"海の"', '"最強"', '"凶器"', '"灼熱"', '"人間兵器"', '"魔王"', # 100 ] )
- NAME2 =
DiceTable::Table.new( "名字表", "1D100", [ 'アラタ/聖', # 1 'アビィス/リリス', 'ルーグ/レヴィ', 'ラスト/アリン', 'ソラ/ユイ', 'イーリアス/アキオ', 'アカーシャ/ミラ', 'アリエス/リーゼロッテ', 'ムラサメ/シャルム', '龍貴/竜姫', # 10 '英樹/春菜', '準一/湊', '急司郎/光理', '夕也/愛奈', '晴彦/アキ', '疾風/ヤシロ', 'カガリ/灯花', '次郎/優都', '春太郎/静理', 'ジン/時雨', # 20 'イオリ/伊織', 'ユウヒ/優姫', 'サツキ/翠名', 'シュライ/サクラ', 'ミナヅキ/姫乃', 'カエデ/優樹菜', 'ハル/フユ', 'ドール/瑞江', 'ニトゥレスト/キリカ', 'スカー/綾瀬', # 30 '真夏/小夏', '光一/ののか', '彩/翠', 'トウカ/柊花', '命/ミコト', '司/つかさ', 'ゆとり/なごみ', '冬彦/観月', 'カレン/華恋', '清次郎/亜矢', # 40 'サード/夢子', 'ボックス/詩子', 'ヘリオス/カエデ', 'ゲート/京香', 'オンリー/パトリシア', 'ザッハーク/アーリ', 'ラスタバン/ラスティ', '桜花/燁澄', '計都/リヴィア', 'カルヴァリオ/香夜', # 50 '悠人/夜々子', '太子/羽菜', '夕立/夕凪', 'アルフ/愛美', 'ファロス/灯利', 'スプートニク/詩姫', 'アーネスト/累', 'ナイン/カグヤ', 'クリア/ヒマワリ', 'ウォーカー/オリビア', # 60 'ダーク/クオン', 'ウェイヴ/凛', 'ルーン/マリエ', 'エンギ/セイギ', 'シラヌイ/ミライ', 'ブライン/キズナ', 'クロウ/カナタ', 'スレイヤー/ヒカル', 'レス/ミリアリア', 'ミフユ/サリエル', # 70 '鳴央/音央', 'モンジ/理亜', 'パルデモントゥム/スナオ', 'ミシェル/詩穂', 'フレンズ/サン', 'サトリ/識', 'ロード/唯花', 'クロノス/久宝', 'フィラデルフィア/冬海', 'ティンダロス/美星', # 80 '勇弥/ユーリス', 'エイト/アンジェラ', 'サタン/ルシエル', 'エース/小波', 'セージ/胡蝶', '忍/千之', '重吾/キリコ', 'マイケル/ミホシ', 'カズマ/鶴香', 'ヤマト/エリシエル', # 90 '歴史上の人物の名前(信長、ジャンヌなど)', 'スポーツ選手の名前(ベッカム、沙保里など)', '学者の名前(ソクラテス、エレナなど)', 'アイドルの名前(タクヤ、聖子など)', '土地、国、町の名前(イングランド、ワシントンなど)', 'モンスターの名前(ドラゴン、ラミアなど)', '武器防具の名前(ソード、メイルなど)', '自然現象の名前(カザンハリケーンなど)', '機械の名前(洗濯機、テレビなど)', '目についた物の名前(シャーペン、メガネなど)', # 100 ] )
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
-
#eval_game_system_specific_command(command) ⇒ Object
スパゲッティなコードだけど許して!!! → 絶対に許さない。全力でリファクタリングした。.
- #get_hit_roll_result(total, target, critical) ⇒ Object
- #get_roll_damage_result(diceCount, critical, diceList, modify) ⇒ Object
- #result_1d100(_total, dice_total, _cmp_op, _target) ⇒ Object
- #roll_damage(command) ⇒ Object
- #roll_hit(command) ⇒ Object
- #roll_name(command) ⇒ Object
Methods inherited from Base
#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, #eval, eval, #grich_text, #initialize, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?
Methods included from Translate
Constructor Details
This class inherits a constructor from BCDice::Base
Instance Method Details
#eval_game_system_specific_command(command) ⇒ Object
スパゲッティなコードだけど許して!!! → 絶対に許さない。全力でリファクタリングした。
41 42 43 44 45 46 47 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 41 def eval_game_system_specific_command(command) # スパゲッティなコードだけど許して!!! → 絶対に許さない。全力でリファクタリングした。 debug("eval_game_system_specific_command command", command) roll_hit(command) || roll_damage(command) || roll_name(command) end |
#get_hit_roll_result(total, target, critical) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 71 def get_hit_roll_result(total, target, critical) if total >= 96 Result.fumble("ファンブル") elsif total <= critical Result.critical("クリティカル") elsif total <= target Result.success("成功") else Result.failure("失敗") end end |
#get_roll_damage_result(diceCount, critical, diceList, modify) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 104 def get_roll_damage_result(diceCount, critical, diceList, modify) if critical <= 0 total = diceList.sum() + modify return total, nil end restDice = diceList.clone critical = diceCount if critical > diceCount critical.times do restDice.shift diceList.shift diceList.push(7) end max = restDice.pop max = 1 if max.nil? total = max * (7**critical) + restDice.sum() + modify return total, diceList end |
#result_1d100(_total, dice_total, _cmp_op, _target) ⇒ Object
128 129 130 131 132 133 134 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 128 def result_1d100(_total, dice_total, _cmp_op, _target) if dice_total >= 96 Result.fumble("ファンブル") elsif dice_total <= 7 Result.critical("クリティカル") end end |
#roll_damage(command) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 83 def roll_damage(command) parser = Command::Parser.new(/\d+DM\d*/, round_type: round_type) .restrict_cmp_op_to(nil) cmd = parser.parse(command) return nil unless cmd dice_count, critical = cmd.command.split("DM", 2).map(&:to_i) modify = cmd.modify_number dice_list = @randomizer.(dice_count, 6).sort dice_text = dice_list.join(",") total, additionalList = get_roll_damage_result(dice_count, critical, dice_list, modify) additionalListText = additionalList.nil? ? "" : "→[#{additionalList.join(',')}]" text = "(#{cmd}) > [#{dice_text}]#{additionalListText}#{Format.modifier(modify)} > #{total}" return text end |
#roll_hit(command) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 49 def roll_hit(command) parser = Command::Parser.new(/TR\d*/, round_type: round_type) .restrict_cmp_op_to(:<=) cmd = parser.parse(command) return nil unless cmd modify = cmd.command[2..-1].to_i + cmd.modify_number critical = 7 + modify target = cmd.target_number total = @randomizer.roll_once(100) result = get_hit_roll_result(total, target, critical) cmd.command = "TR" cmd.modify_number = modify result.text = "(#{cmd}) > #{total} > #{result.text}" debug("eval_game_system_specific_command result text", result.text) result end |
#roll_name(command) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/bcdice/game_system/TrinitySeven.rb', line 136 def roll_name(command) unless command == "TRNAME" return nil end first_name = NAME1.roll(@randomizer).last_body second_name = NAME2.roll(@randomizer).last_body text = "#{first_name} , #{second_name}" return text end |