bcdice 3.0.0.pre.alpha.2 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +42 -1
- data/README.md +34 -7
- data/i18n/DetatokoSaga/ja_jp.yml +3 -2
- data/i18n/DetatokoSaga/ko_kr.yml +1 -0
- data/i18n/KillDeathBusiness/ja_jp.yml +4 -4
- data/i18n/KillDeathBusiness/ko_kr.yml +5 -4
- data/i18n/MagicaLogia/ko_kr.yml +564 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +40 -4
- data/i18n/StratoShout/ja_jp.yml +4 -4
- data/i18n/StratoShout/ko_kr.yml +4 -4
- data/lib/bcdice.rb +4 -1
- data/lib/bcdice/arithmetic.rb +22 -0
- data/lib/bcdice/arithmetic/node.rb +112 -43
- data/lib/bcdice/arithmetic/parser.rb +240 -0
- data/lib/bcdice/arithmetic_evaluator.rb +7 -156
- data/lib/bcdice/base.rb +8 -1
- data/lib/bcdice/command/lexer.rb +57 -0
- data/lib/bcdice/command/parsed.rb +65 -0
- data/lib/bcdice/command/parser.rb +489 -0
- data/lib/bcdice/common_command.rb +2 -0
- data/lib/bcdice/common_command/add_dice.rb +3 -1
- data/lib/bcdice/common_command/add_dice/node.rb +142 -69
- data/lib/bcdice/common_command/add_dice/parser.rb +100 -83
- data/lib/bcdice/common_command/add_dice/randomizer.rb +2 -0
- data/lib/bcdice/common_command/barabara_dice.rb +2 -0
- data/lib/bcdice/common_command/barabara_dice/node.rb +9 -1
- data/lib/bcdice/common_command/barabara_dice/result.rb +22 -0
- data/lib/bcdice/common_command/calc.rb +2 -0
- data/lib/bcdice/common_command/calc/node.rb +10 -1
- data/lib/bcdice/common_command/calc/parser.rb +1 -1
- data/lib/bcdice/common_command/d66_dice.rb +5 -1
- data/lib/bcdice/common_command/lexer.rb +2 -1
- data/lib/bcdice/common_command/upper_dice.rb +2 -0
- data/lib/bcdice/common_command/upper_dice/parser.rb +118 -97
- data/lib/bcdice/common_command/version.rb +3 -1
- data/lib/bcdice/deprecated/checker.rb +6 -6
- data/lib/bcdice/dice_table.rb +3 -0
- data/lib/bcdice/dice_table/chain_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_grid_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_parity_table.rb +36 -0
- data/lib/bcdice/dice_table/d66_range_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_table.rb +2 -0
- data/lib/bcdice/dice_table/roll_result.rb +2 -0
- data/lib/bcdice/dice_table/table.rb +2 -0
- data/lib/bcdice/enum.rb +2 -0
- data/lib/bcdice/format.rb +2 -0
- data/lib/bcdice/game_system.rb +10 -0
- data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
- data/lib/bcdice/game_system/AlchemiaStruggle.rb +346 -0
- data/lib/bcdice/game_system/Alshard.rb +1 -2
- data/lib/bcdice/game_system/Amadeus.rb +1 -1
- data/lib/bcdice/game_system/AngelGear.rb +123 -0
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -5
- data/lib/bcdice/game_system/ArsMagica.rb +1 -1
- data/lib/bcdice/game_system/BBN.rb +7 -5
- data/lib/bcdice/game_system/BadLife.rb +2 -2
- data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
- data/lib/bcdice/game_system/BeastBindTrinity.rb +3 -12
- data/lib/bcdice/game_system/BeginningIdol.rb +4 -4
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +4 -4
- data/lib/bcdice/game_system/BladeOfArcana.rb +4 -4
- data/lib/bcdice/game_system/BlindMythos.rb +12 -10
- data/lib/bcdice/game_system/BloodCrusade.rb +54 -80
- data/lib/bcdice/game_system/BloodMoon.rb +43 -2
- data/lib/bcdice/game_system/CardRanker.rb +24 -64
- data/lib/bcdice/game_system/ChaosFlare.rb +4 -4
- data/lib/bcdice/game_system/Chill.rb +1 -1
- data/lib/bcdice/game_system/CodeLayerd.rb +37 -67
- data/lib/bcdice/game_system/ColossalHunter.rb +2 -2
- data/lib/bcdice/game_system/Cthulhu.rb +8 -4
- data/lib/bcdice/game_system/Cthulhu7th.rb +42 -336
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
- data/lib/bcdice/game_system/CthulhuTech.rb +1 -2
- data/lib/bcdice/game_system/DarkBlaze.rb +5 -5
- data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
- data/lib/bcdice/game_system/DesperateRun.rb +163 -0
- data/lib/bcdice/game_system/DetatokoSaga.rb +25 -7
- data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +3 -3
- data/lib/bcdice/game_system/DiceBot.rb +22 -4
- data/lib/bcdice/game_system/DiceOfTheDead.rb +1 -1
- data/lib/bcdice/game_system/DoubleCross.rb +61 -94
- data/lib/bcdice/game_system/EarthDawn.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
- data/lib/bcdice/game_system/Elysion.rb +2 -2
- data/lib/bcdice/game_system/EmbryoMachine.rb +6 -6
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -2
- data/lib/bcdice/game_system/FilledWith.rb +3 -3
- data/lib/bcdice/game_system/FullMetalPanic.rb +1 -2
- data/lib/bcdice/game_system/GURPS.rb +1 -1
- data/lib/bcdice/game_system/Garako.rb +14 -5
- data/lib/bcdice/game_system/GardenOrder.rb +1 -1
- data/lib/bcdice/game_system/GehennaAn.rb +4 -4
- data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
- data/lib/bcdice/game_system/Gorilla.rb +1 -1
- data/lib/bcdice/game_system/Gundog.rb +1 -1
- data/lib/bcdice/game_system/GundogRevised.rb +3 -3
- data/lib/bcdice/game_system/GundogZero.rb +2 -2
- data/lib/bcdice/game_system/GurpsFW.rb +2 -5
- data/lib/bcdice/game_system/HarnMaster.rb +1 -1
- data/lib/bcdice/game_system/HatsuneMiku.rb +2 -2
- data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
- data/lib/bcdice/game_system/HuntersMoon.rb +17 -110
- data/lib/bcdice/game_system/Illusio.rb +25 -34
- data/lib/bcdice/game_system/InfiniteBabeL.rb +518 -0
- data/lib/bcdice/game_system/JekyllAndHyde.rb +42 -0
- data/lib/bcdice/game_system/JuinKansen.rb +251 -0
- data/lib/bcdice/game_system/KanColle.rb +17 -166
- data/lib/bcdice/game_system/KillDeathBusiness.rb +35 -44
- data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +2 -1
- data/lib/bcdice/game_system/LogHorizon.rb +8 -8
- data/lib/bcdice/game_system/LostRoyal.rb +2 -4
- data/lib/bcdice/game_system/MagicaLogia.rb +3 -3
- data/lib/bcdice/game_system/MagicaLogia_Korean.rb +66 -0
- data/lib/bcdice/game_system/MeikyuDays.rb +2 -2
- data/lib/bcdice/game_system/MeikyuKingdom.rb +3 -3
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +3 -3
- data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
- data/lib/bcdice/game_system/MetallicGuardian.rb +1 -2
- data/lib/bcdice/game_system/MonotoneMuseum.rb +4 -3
- data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +1 -1
- data/lib/bcdice/game_system/NSSQ.rb +2 -2
- data/lib/bcdice/game_system/Nechronica.rb +3 -3
- data/lib/bcdice/game_system/NeverCloud.rb +540 -5
- data/lib/bcdice/game_system/NightWizard.rb +2 -2
- data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
- data/lib/bcdice/game_system/NightmareHunterDeep.rb +3 -4
- data/lib/bcdice/game_system/NinjaSlayer.rb +30 -41
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
- data/lib/bcdice/game_system/OracleEngine.rb +14 -18
- data/lib/bcdice/game_system/OrgaRain.rb +17 -25
- data/lib/bcdice/game_system/Paradiso.rb +3 -3
- data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
- data/lib/bcdice/game_system/Peekaboo.rb +1 -1
- data/lib/bcdice/game_system/PhantasmAdventure.rb +0 -4
- data/lib/bcdice/game_system/Postman.rb +1 -1
- data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
- data/lib/bcdice/game_system/Raisondetre.rb +1 -1
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +8 -7
- data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
- data/lib/bcdice/game_system/RokumonSekai2.rb +3 -3
- data/lib/bcdice/game_system/RuinBreakers.rb +1 -1
- data/lib/bcdice/game_system/RyuTuber.rb +6 -4
- data/lib/bcdice/game_system/Ryutama.rb +2 -2
- data/lib/bcdice/game_system/SRS.rb +1 -6
- data/lib/bcdice/game_system/SamsaraBallad.rb +5 -4
- data/lib/bcdice/game_system/Satasupe.rb +90 -865
- data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
- data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
- data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +3 -3
- data/lib/bcdice/game_system/ShinobiGami.rb +75 -39
- data/lib/bcdice/game_system/ShoujoTenrankai.rb +1 -1
- data/lib/bcdice/game_system/Skynauts.rb +2 -2
- data/lib/bcdice/game_system/SteamPunkers.rb +7 -5
- data/lib/bcdice/game_system/StellarKnights.rb +1 -3
- data/lib/bcdice/game_system/SterileLife.rb +1 -1
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
- data/lib/bcdice/game_system/StratoShout.rb +10 -36
- data/lib/bcdice/game_system/StratoShout_Korean.rb +2 -1
- data/lib/bcdice/game_system/SwordWorld.rb +46 -182
- data/lib/bcdice/game_system/SwordWorld2_0.rb +21 -149
- data/lib/bcdice/game_system/SwordWorld2_5.rb +126 -40
- data/lib/bcdice/game_system/TherapieSein.rb +2 -2
- data/lib/bcdice/game_system/TokumeiTenkousei.rb +2 -2
- data/lib/bcdice/game_system/Torg.rb +2 -2
- data/lib/bcdice/game_system/TorgEternity.rb +5 -8
- data/lib/bcdice/game_system/TrinitySeven.rb +2 -2
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +7 -7
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +2 -2
- data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
- data/lib/bcdice/game_system/Utakaze.rb +2 -2
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
- data/lib/bcdice/game_system/Warhammer.rb +7 -7
- data/lib/bcdice/game_system/Warhammer4.rb +10 -13
- data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
- data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
- data/lib/bcdice/game_system/Yggdrasill.rb +605 -0
- data/lib/bcdice/game_system/ZettaiReido.rb +2 -2
- data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
- data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
- data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +2 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +2 -0
- data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +2 -0
- data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +2 -0
- data/lib/bcdice/game_system/one_way_heroics/tables.rb +2 -0
- data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
- data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
- data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +104 -0
- data/lib/bcdice/loader.rb +11 -4
- data/lib/bcdice/normalize.rb +3 -1
- data/lib/bcdice/preprocessor.rb +12 -8
- data/lib/bcdice/randomizer.rb +14 -0
- data/lib/bcdice/repl.rb +3 -1
- data/lib/bcdice/result.rb +4 -0
- data/lib/bcdice/translate.rb +2 -0
- data/lib/bcdice/user_defined_dice_table.rb +28 -15
- data/lib/bcdice/version.rb +3 -1
- metadata +28 -27
- data/.editorconfig +0 -21
- data/.github/.codecov.yaml +0 -10
- data/.github/workflows/coverage.yaml +0 -21
- data/.github/workflows/lint.yaml +0 -13
- data/.github/workflows/test.yml +0 -20
- data/.gitignore +0 -14
- data/.rubocop.yml +0 -108
- data/.rubocop_todo.yml +0 -114
- data/Gemfile +0 -14
- data/ROADMAP.md +0 -30
- data/Rakefile +0 -152
- data/bcdice.gemspec +0 -29
- data/bin/repl.rb +0 -21
- data/docs/README.txt +0 -2028
- data/docs/dicebot_sort_key.md +0 -72
- data/docs/how_to_make_dicebot.md +0 -453
- data/lib/bcdice/command_parser.rb +0 -242
- data/lib/bcdice/common_command/add_dice/parser.y +0 -153
- data/lib/bcdice/common_command/barabara_dice/parser.y +0 -107
- data/lib/bcdice/common_command/calc/parser.y +0 -79
- data/lib/bcdice/common_command/reroll_dice/parser.y +0 -158
- data/lib/bcdice/common_command/upper_dice/parser.y +0 -143
@@ -1200,8 +1200,8 @@ module BCDice
|
|
1200
1200
|
}.freeze
|
1201
1201
|
|
1202
1202
|
register_prefix(
|
1203
|
-
'EL
|
1204
|
-
'DATE
|
1203
|
+
'EL',
|
1204
|
+
'DATE', 'FDATE', 'ODATE', 'MDATE',
|
1205
1205
|
'RBT', 'SBT', 'BBT', 'CBT', 'DBT', 'IBT', 'FBT', 'LBT', 'PBT', 'NBT', 'ABT', 'VBT', 'GBT', 'HBT',
|
1206
1206
|
'BFT', 'FWT', 'FT',
|
1207
1207
|
'SRT', 'ORT', 'DRT', 'URT',
|
@@ -24,7 +24,7 @@ module BCDice
|
|
24
24
|
・射撃攻撃ファンブル表 SFT
|
25
25
|
INFO_MESSAGE_TEXT
|
26
26
|
|
27
|
-
register_prefix('EM\d
|
27
|
+
register_prefix('EM\d+', 'HLT', 'MFT', 'SFT', '2R10')
|
28
28
|
|
29
29
|
def initialize(command)
|
30
30
|
super(command)
|
@@ -34,10 +34,10 @@ module BCDice
|
|
34
34
|
|
35
35
|
def replace_text(string)
|
36
36
|
string
|
37
|
-
.gsub(/EM(\d+)([
|
38
|
-
.gsub(/EM(\d+)([
|
39
|
-
.gsub(/EM(\d+)([
|
40
|
-
.gsub(/EM(\d+)([
|
37
|
+
.gsub(/EM(\d+)([+\-][+\-\d]+)(@(\d+))(\#(\d+))/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[#{Regexp.last_match(4)},#{Regexp.last_match(6)}]" }
|
38
|
+
.gsub(/EM(\d+)([+\-][+\-\d]+)(\#(\d+))/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[20,#{Regexp.last_match(4)}]" }
|
39
|
+
.gsub(/EM(\d+)([+\-][+\-\d]+)(@(\d+))/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[#{Regexp.last_match(4)},2]" }
|
40
|
+
.gsub(/EM(\d+)([+\-][+\-\d]+)/i) { "2R10#{Regexp.last_match(2)}>=#{Regexp.last_match(1)}[20,2]" }
|
41
41
|
.gsub(/EM(\d+)(@(\d+))(\#(\d+))/i) { "2R10>=#{Regexp.last_match(1)}[#{Regexp.last_match(3)},#{Regexp.last_match(5)}]" }
|
42
42
|
.gsub(/EM(\d+)(\#(\d+))/i) { "2R10>=#{Regexp.last_match(1)}[20,#{Regexp.last_match(3)}]" }
|
43
43
|
.gsub(/EM(\d+)(@(\d+))/i) { "2R10>=#{Regexp.last_match(1)}[#{Regexp.last_match(3)},2]" }
|
@@ -63,7 +63,7 @@ module BCDice
|
|
63
63
|
def checkRoll(string)
|
64
64
|
string = replace_text(string)
|
65
65
|
|
66
|
-
return nil unless /(^|\s)S?(2[rR]10([
|
66
|
+
return nil unless /(^|\s)S?(2[rR]10([+\-\d]+)?([>=]+(\d+))(\[(\d+),(\d+)\]))(\s|$)/i =~ string
|
67
67
|
|
68
68
|
string = Regexp.last_match(2)
|
69
69
|
diff = 0
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'bcdice/game_system/SRS'
|
4
4
|
|
5
|
-
# 世界樹の迷宮SRSのダイスボット
|
6
5
|
module BCDice
|
7
6
|
module GameSystem
|
8
7
|
class EtrianOdysseySRS < SRS
|
@@ -16,7 +15,7 @@ module BCDice
|
|
16
15
|
SORT_KEY = 'せかいしゆのめいきゆうSRS'
|
17
16
|
|
18
17
|
# 固有のコマンドの接頭辞を設定する
|
19
|
-
register_prefix('2D6
|
18
|
+
register_prefix('2D6', 'EO', 'SQ')
|
20
19
|
|
21
20
|
# 成功判定のエイリアスコマンドを設定する
|
22
21
|
set_aliases_for_srs_roll('EO', 'SQ')
|
@@ -140,12 +140,12 @@ module BCDice
|
|
140
140
|
crt = 4
|
141
141
|
fmb = 17
|
142
142
|
|
143
|
-
if command =~ /(\d[
|
143
|
+
if command =~ /(\d[+\-\d]*)-(\d+)FW(@(\d+))?(\#(\d+))?/i
|
144
144
|
difficultyText = Regexp.last_match(1)
|
145
145
|
diceCount = Regexp.last_match(2).to_i
|
146
146
|
crt = Regexp.last_match(4).to_i unless Regexp.last_match(3).nil?
|
147
147
|
fmb = Regexp.last_match(6).to_i unless Regexp.last_match(5).nil?
|
148
|
-
elsif command =~ /(\d+)FW(
|
148
|
+
elsif command =~ /(\d+)FW(@(\d+))?(\#(\d+))?(<=([+\-\d]*))?/i
|
149
149
|
diceCount = Regexp.last_match(1).to_i
|
150
150
|
crt = Regexp.last_match(3).to_i unless Regexp.last_match(2).nil?
|
151
151
|
fmb = Regexp.last_match(5).to_i unless Regexp.last_match(4).nil?
|
@@ -222,7 +222,7 @@ module BCDice
|
|
222
222
|
|
223
223
|
# 夢幻の迷宮財宝表
|
224
224
|
def getTresureResult(command)
|
225
|
-
return nil unless command =~ /TRS(\d+)([
|
225
|
+
return nil unless command =~ /TRS(\d+)([+\-]\d)?/
|
226
226
|
|
227
227
|
rank = Regexp.last_match(1).to_i
|
228
228
|
modify = Regexp.last_match(2).to_i
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'bcdice/game_system/SRS'
|
4
4
|
|
5
|
-
# フルメタル・パニック!のダイスボット
|
6
5
|
module BCDice
|
7
6
|
module GameSystem
|
8
7
|
class FullMetalPanic < SRS
|
@@ -16,7 +15,7 @@ module BCDice
|
|
16
15
|
SORT_KEY = 'ふるめたるはにつくRPG'
|
17
16
|
|
18
17
|
# 固有のコマンドの接頭辞を設定する
|
19
|
-
register_prefix('2D6
|
18
|
+
register_prefix('2D6', 'MG', 'FP')
|
20
19
|
|
21
20
|
# 成功判定のエイリアスコマンドを設定する
|
22
21
|
set_aliases_for_srs_roll('MG', 'FP')
|
@@ -18,9 +18,9 @@ module BCDice
|
|
18
18
|
|
19
19
|
# ダイスボットの使い方
|
20
20
|
HELP_MESSAGE = <<~MESSAGETEXT
|
21
|
-
・判定 GR+n#f>=X (+n:判定値、#f:不安定による自動失敗基準値、X
|
21
|
+
・判定 GR+n#f>=X (+n:判定値、#f:不安定による自動失敗基準値、X:目標値、それぞれ省略可能)
|
22
22
|
・部位決定チャート:HIT
|
23
|
-
・ダメージ+部位決定:
|
23
|
+
・ダメージ+部位決定:GHAn(n:火力)
|
24
24
|
・ダメージチャート:xDCy(CDC/EDC/FDC/ADC/LDC )
|
25
25
|
・ダメージチャートver2:xDTy(CDT/EDT/FDT/ADT/LDT)
|
26
26
|
xは C:コックピット、E:エンジン、F:フレーム、A:アーム、L:レッグ
|
@@ -35,8 +35,16 @@ module BCDice
|
|
35
35
|
・武器改造チャート表:WCC
|
36
36
|
・イベントチャート表:EVC
|
37
37
|
・戦闘開始距離:BSD
|
38
|
+
|
39
|
+
デフォルトダイス:10面
|
38
40
|
MESSAGETEXT
|
39
41
|
|
42
|
+
def initialize(command)
|
43
|
+
super(command)
|
44
|
+
|
45
|
+
@sides_implicit_d = 10
|
46
|
+
end
|
47
|
+
|
40
48
|
# @param command [String]
|
41
49
|
# @return [String, nil]
|
42
50
|
def eval_game_system_specific_command(command)
|
@@ -53,10 +61,11 @@ module BCDice
|
|
53
61
|
# @param command [String]
|
54
62
|
# @return [String, nil]
|
55
63
|
def roll_gr(command)
|
56
|
-
parser =
|
64
|
+
parser = Command::Parser.new("GR", round_type: round_type)
|
65
|
+
.enable_fumble
|
66
|
+
.restrict_cmp_op_to(nil, :>=)
|
57
67
|
cmd = parser.parse(command)
|
58
68
|
return nil unless cmd
|
59
|
-
return nil if cmd.critical
|
60
69
|
|
61
70
|
modify_number = cmd.modify_number || 0
|
62
71
|
auto_failure_number = cmd.fumble || 1
|
@@ -645,7 +654,7 @@ module BCDice
|
|
645
654
|
)
|
646
655
|
}.freeze
|
647
656
|
|
648
|
-
register_prefix('GR
|
657
|
+
register_prefix('GR', '[CEFAL]D[CT][-+\d]+', 'GHA[-+\d]+', TABLES.keys)
|
649
658
|
end
|
650
659
|
end
|
651
660
|
end
|
@@ -32,7 +32,7 @@ module BCDice
|
|
32
32
|
|
33
33
|
def eval_game_system_specific_command(command)
|
34
34
|
case command
|
35
|
-
when %r{GO(
|
35
|
+
when %r{GO(-?\d+)(/(\d+))?(@(\d+))?}i
|
36
36
|
success_rate = Regexp.last_match(1).to_i
|
37
37
|
repeat_count = (Regexp.last_match(3) || 1).to_i
|
38
38
|
critical_border_text = Regexp.last_match(5)
|
@@ -23,7 +23,7 @@ module BCDice
|
|
23
23
|
幸運の助けを自動処理します。(連撃増加値、闘技チットを表示抑制します)
|
24
24
|
INFO_MESSAGE_TEXT
|
25
25
|
|
26
|
-
register_prefix('\d+G\d
|
26
|
+
register_prefix('\d+G\d+', '\d+GA\d+', '\d+R6')
|
27
27
|
|
28
28
|
def initialize(command)
|
29
29
|
super(command)
|
@@ -35,9 +35,9 @@ module BCDice
|
|
35
35
|
|
36
36
|
def replace_text(string)
|
37
37
|
string
|
38
|
-
.gsub(/(\d+)GA(\d+)([
|
38
|
+
.gsub(/(\d+)GA(\d+)([+\-][+\-\d]+)/) { "#{Regexp.last_match(1)}R6#{Regexp.last_match(3)}>=#{Regexp.last_match(2)}[1]" }
|
39
39
|
.gsub(/(\d+)GA(\d+)/) { "#{Regexp.last_match(1)}R6>=#{Regexp.last_match(2)}[1]" }
|
40
|
-
.gsub(/(\d+)G(\d+)([
|
40
|
+
.gsub(/(\d+)G(\d+)([+\-][+\-\d]+)/) { "#{Regexp.last_match(1)}R6#{Regexp.last_match(3)}>=#{Regexp.last_match(2)}[0]" }
|
41
41
|
.gsub(/(\d+)G(\d+)/) { "#{Regexp.last_match(1)}R6>=#{Regexp.last_match(2)}[0]" }
|
42
42
|
end
|
43
43
|
|
@@ -46,7 +46,7 @@ module BCDice
|
|
46
46
|
def eval_game_system_specific_command(string)
|
47
47
|
string = replace_text(string)
|
48
48
|
|
49
|
-
unless /(^|\s)S?((\d+)[rR]6([
|
49
|
+
unless /(^|\s)S?((\d+)[rR]6([+\-\d]+)?([>=]+(\d+))(\[(\d)\]))(\s|$)/i =~ string
|
50
50
|
return nil
|
51
51
|
end
|
52
52
|
|
@@ -52,7 +52,7 @@ module BCDice
|
|
52
52
|
if dig1 <= 0
|
53
53
|
" > クリティカル(達成値20+SL)"
|
54
54
|
else
|
55
|
-
" > 成功(達成値#{
|
55
|
+
" > 成功(達成値#{dig10 + dig1}+SL)"
|
56
56
|
end
|
57
57
|
else
|
58
58
|
" > 失敗"
|
@@ -68,7 +68,7 @@ module BCDice
|
|
68
68
|
mod = 0
|
69
69
|
|
70
70
|
# ダメージペナルティ表
|
71
|
-
if /(\w)DPT([
|
71
|
+
if /(\w)DPT([+\-\d]*)/i =~ string
|
72
72
|
ttype = 'ダメージペナルティー'
|
73
73
|
head = Regexp.last_match(1)
|
74
74
|
mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
|
@@ -77,7 +77,7 @@ module BCDice
|
|
77
77
|
end
|
78
78
|
|
79
79
|
# ファンブル表
|
80
|
-
if /(\w)FT([
|
80
|
+
if /(\w)FT([+\-\d]*)/i =~ string
|
81
81
|
ttype = 'ファンブル'
|
82
82
|
head = Regexp.last_match(1)
|
83
83
|
mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
|
@@ -37,7 +37,7 @@ module BCDice
|
|
37
37
|
mod = 0
|
38
38
|
|
39
39
|
# ダメージペナルティ表
|
40
|
-
if /(\w)DPT([
|
40
|
+
if /(\w)DPT([+\-\d]*)/i =~ string
|
41
41
|
ttype = 'ダメージペナルティー'
|
42
42
|
head = Regexp.last_match(1)
|
43
43
|
mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
|
@@ -46,7 +46,7 @@ module BCDice
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# ファンブル表
|
49
|
-
if /(\w)FT([
|
49
|
+
if /(\w)FT([+\-\d]*)/i =~ string
|
50
50
|
ttype = 'ファンブル'
|
51
51
|
head = Regexp.last_match(1)
|
52
52
|
mod = ArithmeticEvaluator.eval(Regexp.last_match(2)) if Regexp.last_match(2)
|
@@ -1,8 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# どどんとふ用 GURPS-FW オリジナルダイスボット
|
4
|
-
# Last update 2013/11/07
|
5
|
-
|
6
3
|
module BCDice
|
7
4
|
module GameSystem
|
8
5
|
class GurpsFW < Base
|
@@ -284,7 +281,7 @@ module BCDice
|
|
284
281
|
end
|
285
282
|
result = table[num]
|
286
283
|
|
287
|
-
when /REACT((
|
284
|
+
when /REACT((\+|-)?\d*)/
|
288
285
|
modify = Regexp.last_match(1).to_i
|
289
286
|
|
290
287
|
tableName = "反応表"
|
@@ -320,7 +317,7 @@ module BCDice
|
|
320
317
|
result, number = get_table_by_nD6(table, 3)
|
321
318
|
result = "#{dif}:#{result}"
|
322
319
|
|
323
|
-
when /TRS(E|N|H|L)(\d+)((
|
320
|
+
when /TRS(E|N|H|L)(\d+)((\+|-)?\d*)/
|
324
321
|
tableName = "財宝テーブル"
|
325
322
|
diff = Regexp.last_match(1)
|
326
323
|
depth = Regexp.last_match(2).to_i
|
@@ -21,7 +21,7 @@ module BCDice
|
|
21
21
|
・人型用 中段命中部位表 (SLH)/上段命中部位 (SLHU)/上段命中部位 (SLHD)
|
22
22
|
MESSAGETEXT
|
23
23
|
|
24
|
-
register_prefix('SHK\d
|
24
|
+
register_prefix('SHK\d+', 'SLH', 'SLHU', 'SLHD')
|
25
25
|
|
26
26
|
def check_1D100(total, _dice_total, cmp_op, target)
|
27
27
|
return '' if target == '?'
|
@@ -51,7 +51,7 @@ module BCDice
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def judgeRoll(command)
|
54
|
-
return nil unless /^(R([A-DS]|\d+)([
|
54
|
+
return nil unless /^(R([A-DS]|\d+)([+\-\d,]*))(@(\d))?((>(=)?)([+\-\d]*))?(@(\d))?$/i =~ command
|
55
55
|
|
56
56
|
skillRank = Regexp.last_match(2)
|
57
57
|
modifyText = Regexp.last_match(3)
|
@@ -699,7 +699,7 @@ module BCDice
|
|
699
699
|
),
|
700
700
|
}.freeze
|
701
701
|
|
702
|
-
register_prefix('R([A-DS]|\d+)
|
702
|
+
register_prefix('R([A-DS]|\d+)', TABLES.keys)
|
703
703
|
end
|
704
704
|
end
|
705
705
|
end
|
@@ -31,7 +31,7 @@ module BCDice
|
|
31
31
|
例)Hourai : 仁義八徳は、【義】(奇数、奇数、偶数)
|
32
32
|
INFO_MESSAGE_TEXT
|
33
33
|
|
34
|
-
register_prefix('ROL
|
34
|
+
register_prefix('ROL', 'MED\(\d+,\d+\)', 'RES\(\d+,\d+\)', 'INY', 'HTK', 'GOG')
|
35
35
|
|
36
36
|
# ゲームの名前
|
37
37
|
# チャット欄表示名
|
@@ -27,12 +27,8 @@ module BCDice
|
|
27
27
|
・異形アビリティー表 (SATx) (xは個数)
|
28
28
|
・異形アビリティー表2 (SA2Tx) (xは個数)
|
29
29
|
→表1と表2の振り分けも判定
|
30
|
-
|
31
|
-
|
32
|
-
・指定特技(腕部)表 (TAT)
|
33
|
-
・指定特技(胴部)表 (TBT)
|
34
|
-
・指定特技(脚部)表 (TLT)
|
35
|
-
・指定特技(環境)表 (TET)
|
30
|
+
・指定特技表 RTTn(n=分野番号、省略可能)
|
31
|
+
1.社会(TST) 2.頭部(THT) 3.腕部(TAT) 4.胴部(TBT) 5.脚部(TLT) 6.環境(TET)
|
36
32
|
・異形化表 (MST)
|
37
33
|
・代償表 (ERT)
|
38
34
|
・ディフェンス遭遇表1/2/3 (DS1ET/DS2ET/DS3ET)
|
@@ -71,7 +67,7 @@ module BCDice
|
|
71
67
|
when /^SA/i
|
72
68
|
roll_strange_ability_table(command)
|
73
69
|
else
|
74
|
-
roll_tables(command, TABLES)
|
70
|
+
roll_tables(command, TABLES) || RTT.roll_command(randomizer, command)
|
75
71
|
end
|
76
72
|
end
|
77
73
|
|
@@ -134,6 +130,19 @@ module BCDice
|
|
134
130
|
end
|
135
131
|
end
|
136
132
|
|
133
|
+
RTT = DiceTable::SaiFicSkillTable.new(
|
134
|
+
[
|
135
|
+
['社会', ['怯える', '考えない', '話す', '黙る', '売る', '伝える', '作る', '憶える', '脅す', '騙す', '怒る']],
|
136
|
+
['頭部', ['聴く', '感覚器', '見つける', '反応', '閃く', '脳', '考える', '予感', '叫ぶ', '口', '噛む']],
|
137
|
+
['腕部', ['操作', '殴る', '斬る', '利き腕', '撃つ', '掴む', '投げる', '逆腕', '刺す', '振る', '締める']],
|
138
|
+
['胴部', ['塞ぐ', '呼吸器', '止める', '動かない', '受ける', '心臓', '逸らす', 'かわす', '落ちる', '消化器', '耐える',]],
|
139
|
+
['脚部', ['迫る', '走る', '蹴る', '利き脚', '跳ぶ', '仕掛ける', 'しゃがむ', '逆脚', '滑る', '踏む', '歩く']],
|
140
|
+
['環境', ['耐熱', '休む', '待つ', '捕らえる', '隠れる', '追う', 'バランス', '現れる', '追い込む', '休まない', '耐寒']]
|
141
|
+
],
|
142
|
+
rttn: ['TST', 'THT', 'TAT', 'TBT', 'TLT', 'TET'],
|
143
|
+
rttn_format: "指定特技(%<category_name>s)表(%<row_dice>d) > %<skill_name>s"
|
144
|
+
)
|
145
|
+
|
137
146
|
TABLES = {
|
138
147
|
"CLT" => DiceTable::Table.new(
|
139
148
|
"都市ロケーション表",
|
@@ -224,108 +233,6 @@ module BCDice
|
|
224
233
|
'心臓',
|
225
234
|
]
|
226
235
|
),
|
227
|
-
"TST" => DiceTable::Table.new(
|
228
|
-
"指定特技(社会)表",
|
229
|
-
"2D6",
|
230
|
-
[
|
231
|
-
'怯える',
|
232
|
-
'考えない',
|
233
|
-
'話す',
|
234
|
-
'黙る',
|
235
|
-
'売る',
|
236
|
-
'伝える',
|
237
|
-
'作る',
|
238
|
-
'憶える',
|
239
|
-
'脅す',
|
240
|
-
'騙す',
|
241
|
-
'怒る',
|
242
|
-
]
|
243
|
-
),
|
244
|
-
"THT" => DiceTable::Table.new(
|
245
|
-
"指定特技(頭部)表",
|
246
|
-
"2D6",
|
247
|
-
[
|
248
|
-
'聴く',
|
249
|
-
'感覚器',
|
250
|
-
'見つける',
|
251
|
-
'反応',
|
252
|
-
'閃く',
|
253
|
-
'脳',
|
254
|
-
'考える',
|
255
|
-
'予感',
|
256
|
-
'叫ぶ',
|
257
|
-
'口',
|
258
|
-
'噛む',
|
259
|
-
]
|
260
|
-
),
|
261
|
-
"TAT" => DiceTable::Table.new(
|
262
|
-
"指定特技(腕部)表",
|
263
|
-
"2D6",
|
264
|
-
[
|
265
|
-
'操作',
|
266
|
-
'殴る',
|
267
|
-
'斬る',
|
268
|
-
'利き腕',
|
269
|
-
'撃つ',
|
270
|
-
'掴む',
|
271
|
-
'投げる',
|
272
|
-
'逆腕',
|
273
|
-
'刺す',
|
274
|
-
'振る',
|
275
|
-
'締める',
|
276
|
-
]
|
277
|
-
),
|
278
|
-
"TBT" => DiceTable::Table.new(
|
279
|
-
"指定特技(胴部)表",
|
280
|
-
"2D6",
|
281
|
-
[
|
282
|
-
'塞ぐ',
|
283
|
-
'呼吸器',
|
284
|
-
'止める',
|
285
|
-
'動かない',
|
286
|
-
'受ける',
|
287
|
-
'心臓',
|
288
|
-
'逸らす',
|
289
|
-
'かわす',
|
290
|
-
'落ちる',
|
291
|
-
'消化器',
|
292
|
-
'耐える',
|
293
|
-
]
|
294
|
-
),
|
295
|
-
"TLT" => DiceTable::Table.new(
|
296
|
-
"指定特技(脚部)表",
|
297
|
-
"2D6",
|
298
|
-
[
|
299
|
-
'迫る',
|
300
|
-
'走る',
|
301
|
-
'蹴る',
|
302
|
-
'利き脚',
|
303
|
-
'跳ぶ',
|
304
|
-
'仕掛ける',
|
305
|
-
'しゃがむ',
|
306
|
-
'逆脚',
|
307
|
-
'滑る',
|
308
|
-
'踏む',
|
309
|
-
'歩く',
|
310
|
-
]
|
311
|
-
),
|
312
|
-
"TET" => DiceTable::Table.new(
|
313
|
-
"指定特技(環境)表",
|
314
|
-
"2D6",
|
315
|
-
[
|
316
|
-
'耐熱',
|
317
|
-
'休む',
|
318
|
-
'待つ',
|
319
|
-
'捕らえる',
|
320
|
-
'隠れる',
|
321
|
-
'追う',
|
322
|
-
'バランス',
|
323
|
-
'現れる',
|
324
|
-
'追い込む',
|
325
|
-
'休まない',
|
326
|
-
'耐寒',
|
327
|
-
]
|
328
|
-
),
|
329
236
|
"DS1ET" => DiceTable::Table.new(
|
330
237
|
"ディフェンス遭遇表1st",
|
331
238
|
"1D6",
|
@@ -496,7 +403,7 @@ module BCDice
|
|
496
403
|
),
|
497
404
|
}.freeze
|
498
405
|
|
499
|
-
register_prefix('SA2?T\d*', TABLES.keys)
|
406
|
+
register_prefix(RTT.prefixes, 'SA2?T\d*', TABLES.keys)
|
500
407
|
end
|
501
408
|
end
|
502
409
|
end
|