bcdice 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +79 -2
- data/README.md +32 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +3 -3
- data/i18n/StellarKnights/ja_jp.yml +496 -0
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/calc.rb +1 -1
- data/lib/bcdice/dice_table.rb +2 -0
- data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
- data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
- data/lib/bcdice/dice_table/sai_fic_skill_table.rb +1 -1
- data/lib/bcdice/game_system.rb +4 -0
- data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
- data/lib/bcdice/game_system/Ainecadette.rb +68 -0
- data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
- data/lib/bcdice/game_system/AlchemiaStruggle.rb +1 -1
- data/lib/bcdice/game_system/Alsetto.rb +1 -1
- data/lib/bcdice/game_system/Alshard.rb +1 -1
- data/lib/bcdice/game_system/AlterRaise.rb +2 -2
- data/lib/bcdice/game_system/AngelGear.rb +123 -0
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
- data/lib/bcdice/game_system/Arianrhod.rb +6 -8
- data/lib/bcdice/game_system/ArsMagica.rb +1 -1
- data/lib/bcdice/game_system/Avandner.rb +1 -1
- data/lib/bcdice/game_system/BBN.rb +1 -1
- data/lib/bcdice/game_system/BadLife.rb +1 -1
- data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
- data/lib/bcdice/game_system/BattleTech.rb +1 -1
- data/lib/bcdice/game_system/BeastBindTrinity.rb +2 -2
- data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
- data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
- data/lib/bcdice/game_system/BlindMythos.rb +1 -1
- data/lib/bcdice/game_system/BloodCrusade.rb +48 -49
- data/lib/bcdice/game_system/BloodMoon.rb +50 -8
- data/lib/bcdice/game_system/CardRanker.rb +10 -9
- data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
- data/lib/bcdice/game_system/Chill.rb +10 -10
- data/lib/bcdice/game_system/Chill3.rb +9 -9
- data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
- data/lib/bcdice/game_system/CrashWorld.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu.rb +8 -4
- data/lib/bcdice/game_system/Cthulhu7th.rb +86 -342
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
- data/lib/bcdice/game_system/CthulhuTech.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
- data/lib/bcdice/game_system/DarkBlaze.rb +1 -12
- data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
- data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
- data/lib/bcdice/game_system/DemonParasite.rb +5 -13
- data/lib/bcdice/game_system/DesperateRun.rb +1 -1
- data/lib/bcdice/game_system/DiceOfTheDead.rb +1 -1
- data/lib/bcdice/game_system/DoubleCross.rb +2 -2
- data/lib/bcdice/game_system/Dracurouge.rb +1 -1
- 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/EclipsePhase.rb +14 -14
- data/lib/bcdice/game_system/Elric.rb +18 -14
- data/lib/bcdice/game_system/Elysion.rb +3 -3
- data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
- data/lib/bcdice/game_system/Emoklore.rb +3 -3
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
- data/lib/bcdice/game_system/Fiasco.rb +1 -1
- data/lib/bcdice/game_system/FilledWith.rb +205 -1272
- data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
- data/lib/bcdice/game_system/GURPS.rb +17 -28
- data/lib/bcdice/game_system/Garako.rb +12 -4
- data/lib/bcdice/game_system/GardenOrder.rb +1 -1
- data/lib/bcdice/game_system/GehennaAn.rb +1 -1
- data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
- data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
- data/lib/bcdice/game_system/Gorilla.rb +3 -9
- data/lib/bcdice/game_system/GranCrest.rb +18 -11
- data/lib/bcdice/game_system/Gundog.rb +9 -8
- data/lib/bcdice/game_system/GundogRevised.rb +10 -9
- data/lib/bcdice/game_system/GundogZero.rb +1 -1
- data/lib/bcdice/game_system/GurpsFW.rb +16 -16
- data/lib/bcdice/game_system/HarnMaster.rb +19 -26
- data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
- data/lib/bcdice/game_system/Hieizan.rb +12 -21
- data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
- data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
- data/lib/bcdice/game_system/Illusio.rb +25 -34
- data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
- data/lib/bcdice/game_system/Insane.rb +13 -20
- data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
- data/lib/bcdice/game_system/JamesBond.rb +10 -10
- data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
- data/lib/bcdice/game_system/Kamigakari.rb +1 -1
- data/lib/bcdice/game_system/KanColle.rb +4 -9
- data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
- data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
- data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
- data/lib/bcdice/game_system/LogHorizon.rb +3 -3
- data/lib/bcdice/game_system/LostRoyal.rb +1 -1
- data/lib/bcdice/game_system/MeikyuDays.rb +11 -9
- data/lib/bcdice/game_system/MeikyuKingdom.rb +28 -28
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -5
- data/lib/bcdice/game_system/MetalHead.rb +12 -22
- data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
- data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
- data/lib/bcdice/game_system/MonotoneMuseum.rb +9 -7
- data/lib/bcdice/game_system/Nechronica.rb +28 -21
- data/lib/bcdice/game_system/NeverCloud.rb +540 -5
- data/lib/bcdice/game_system/NightWizard.rb +1 -1
- data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
- data/lib/bcdice/game_system/NinjaSlayer.rb +4 -13
- data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
- data/lib/bcdice/game_system/OracleEngine.rb +1 -1
- 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/ParasiteBlood.rb +1 -1
- data/lib/bcdice/game_system/Peekaboo.rb +4 -9
- data/lib/bcdice/game_system/Pendragon.rb +7 -7
- data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
- data/lib/bcdice/game_system/Postman.rb +2 -2
- data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
- data/lib/bcdice/game_system/Raisondetre.rb +2 -2
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
- data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
- data/lib/bcdice/game_system/Revulture.rb +123 -0
- data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
- data/lib/bcdice/game_system/RuneQuest.rb +8 -8
- data/lib/bcdice/game_system/Ryutama.rb +1 -1
- data/lib/bcdice/game_system/SRS.rb +1 -1
- data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
- data/lib/bcdice/game_system/Satasupe.rb +79 -860
- 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 +20 -24
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
- data/lib/bcdice/game_system/ShinobiGami.rb +17 -9
- data/lib/bcdice/game_system/Skynauts.rb +4 -4
- data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
- data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
- data/lib/bcdice/game_system/StellarKnights.rb +59 -696
- data/lib/bcdice/game_system/SterileLife.rb +2 -3
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
- data/lib/bcdice/game_system/StratoShout.rb +8 -16
- data/lib/bcdice/game_system/Strave.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld.rb +58 -185
- data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -150
- data/lib/bcdice/game_system/SwordWorld2_5.rb +127 -41
- data/lib/bcdice/game_system/TherapieSein.rb +1 -1
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
- data/lib/bcdice/game_system/Torg.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +2 -2
- data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
- data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
- data/lib/bcdice/game_system/Utakaze.rb +1 -1
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
- data/lib/bcdice/game_system/Villaciel.rb +1 -1
- data/lib/bcdice/game_system/WARPS.rb +11 -9
- data/lib/bcdice/game_system/WaresBlade.rb +4 -9
- data/lib/bcdice/game_system/Warhammer.rb +16 -7
- data/lib/bcdice/game_system/Warhammer4.rb +16 -12
- data/lib/bcdice/game_system/WitchQuest.rb +1 -1
- data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
- data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
- data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
- data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
- 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/filled_with/enemy_data_tables.rb +322 -0
- data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
- data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
- 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 +122 -0
- data/lib/bcdice/repl.rb +1 -1
- data/lib/bcdice/result.rb +26 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +20 -4
|
@@ -9,7 +9,7 @@ module BCDice
|
|
|
9
9
|
ID = 'SwordWorld2.5'
|
|
10
10
|
|
|
11
11
|
# ゲームシステム名
|
|
12
|
-
NAME = '
|
|
12
|
+
NAME = 'ソード・ワールド2.5'
|
|
13
13
|
|
|
14
14
|
# ゲームシステム名の読みがな
|
|
15
15
|
SORT_KEY = 'そおとわあると2.5'
|
|
@@ -32,10 +32,12 @@ module BCDice
|
|
|
32
32
|
またタイプの軽減化のために末尾に「@クリティカル値」でも処理するようにしました。
|
|
33
33
|
例)K20[10] K10+5[9] k30[10] k10[9]+10 k10-5@9
|
|
34
34
|
|
|
35
|
-
・レーティング表の半減 (HKx)
|
|
35
|
+
・レーティング表の半減 (HKx, KxH+N)
|
|
36
36
|
レーティング表の先頭または末尾に"H"をつけると、レーティング表を振って最終結果を半減させます。
|
|
37
|
+
末尾につけた場合、直後に修正ををつけることで、半減後の加減算を行うことができます。
|
|
38
|
+
この際、複数の項による修正にはカッコで囲うことが必要です(カッコがないとパースに失敗します)
|
|
37
39
|
クリティカル値を指定しない場合、クリティカルなしと扱われます。
|
|
38
|
-
例)HK20 K20h HK10-5@9 K10-5@9H K20gfH
|
|
40
|
+
例)HK20 K20h HK10-5@9 K10-5@9H K20gfH K20+8H+2 K20+8H+(1+1)
|
|
39
41
|
|
|
40
42
|
・ダイス目の修正(運命変転やクリティカルレイ用)
|
|
41
43
|
末尾に「$修正値」でダイス目に修正がかかります。
|
|
@@ -66,54 +68,138 @@ module BCDice
|
|
|
66
68
|
|
|
67
69
|
・絡み効果表 (TT)
|
|
68
70
|
絡み効果表を出すことができます。
|
|
69
|
-
INFO_MESSAGE_TEXT
|
|
70
71
|
|
|
71
|
-
|
|
72
|
+
・ドルイドの物理魔法用表 (Dru[2-6の値,7-9の値,10-12の値])
|
|
73
|
+
例)Dru[0,3,6]+10-3
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def replace_text(string)
|
|
77
|
-
return string unless RATING_TABLE_RE_FOR_CHANGE_TEXT.match?(string)
|
|
75
|
+
・アビスカース表 (ABT)
|
|
76
|
+
アビスカース表を出すことができます。
|
|
77
|
+
INFO_MESSAGE_TEXT
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
register_prefix('H?K', 'Gr', '2D6?@\d+', 'FT', 'TT', 'Dru', 'ABT')
|
|
80
|
+
|
|
81
|
+
ABYSS_CURSE_TABLE = DiceTable::D66GridTable.new(
|
|
82
|
+
'アビスカース表', [
|
|
83
|
+
[
|
|
84
|
+
"「自傷の」 装備時 この武具を装備中に装備者がクリティカルを発生させた時、装備者のHPが5点減少する。",
|
|
85
|
+
"「嘆きの」 装備時 近くに敵がいたり、長い緊張状態が続くと涙が止まらなくなる。戦闘中なら「射程:術者(自身)」「射程:接触」以外の効果で対象を選べなくなる。",
|
|
86
|
+
"「優しき」 装備時 敵に同情してしまう。敵対するキャラクターを対象にする場合、対象のHPが1点以上減少しているなら命中力判定、魔法行使判定に-2のペナルティ修正を受ける。",
|
|
87
|
+
"「差別の」 装備時 特定の分類に対して与える物理ダメージ・魔法ダメージが2点減少する。分類は「分類決定表」で無作為に決定する。",
|
|
88
|
+
"「脆弱な」 装備時 魔法ダメージを受けるたび、そのダメージが+1点される。",
|
|
89
|
+
"「無謀な」 装備時 防護点が2点減少する(最低0)。",
|
|
90
|
+
], [
|
|
91
|
+
"「重い」 装備時 強化した武具の必要筋力が+2される。威力、防護点などは変化なし。",
|
|
92
|
+
"「難しい」 装備時 いかなる威力表使用時でも、③④欄の数値が威力に関係なく「0」になる(自動失敗ではない)。",
|
|
93
|
+
"「軟弱な」 装備時 精神抵抗力判定に-1のペナルティ修正を受ける。",
|
|
94
|
+
"「病弱な」 装備時 生命抵抗力判定に-1のペナルティ修正を受ける。",
|
|
95
|
+
"「過敏な」 装備時 特定の属性から受ける物理ダメージ、魔法ダメージが2点上昇する。属性は「属性決定表」で無作為に決定する。",
|
|
96
|
+
"「陽気な」 装備時 精神抵抗判定に失敗するたび、笑いが止まらなくなる。次の手番終了時まで行動判定(『Ⅰ』123頁)に-1のペナルティ修正を受ける。この効果は累積する。",
|
|
97
|
+
], [
|
|
98
|
+
"「たどたどしい」 装備時 話をする時に言葉に詰まったり、言い間違えたりしやすくなる。魔法行使判定に-1のペナルティ修正を受ける。",
|
|
99
|
+
"「代弁する」 装備時 自身の会話は、そのまま武具が魔法文明語の聞き取りづらい声で話す。装備中は魔法文明語以外の言語で会話は行えず、妖精魔法、魔動機術を行使できなくなる。",
|
|
100
|
+
"「施しは受けない」 装備時 戦闘中、「抵抗:任意」の効果を受け入れた場合、次の手番終了時まで生命抵抗力、精神抵抗力に-2のペナルティ修正を受ける。",
|
|
101
|
+
"「死に近い」 携行時 常に生死判定に「冒険者レベル」と同じ値のペナルティ修正を受ける。",
|
|
102
|
+
"「おしゃれな」 携行時 その武具を常に華美に飾りたくなる。収入を得るたび、その1割以上をこの武具の装飾に費やさなければならない(効果などに変化はない)。",
|
|
103
|
+
"「マナを吸う」 携行時 魔法や練技など、自身の意思でMPを消費する効果を使用する場合、すべてのMP消費が1点上昇する。",
|
|
104
|
+
], [
|
|
105
|
+
"「鈍重な」 携行時 移動力が半分(端数切り上げ)になる。",
|
|
106
|
+
"「定まらない」 携行時 戦闘中の手番開始時に1dし、出目が「1」なら《ターゲッティング》とそれを前提とした戦闘特技を習得していないものとして扱う。",
|
|
107
|
+
"「錯乱の」 携行時 戦闘中の手番開始時に1dし、出目が「1」なら近接攻撃を含む「射程:接触」の対象に効果を使用する際、対象は同じ位置(エリア、座標)の全てのキャラクター(敵味方含む)から無作為に選ばれる。",
|
|
108
|
+
"「足絡みの」 携行時 戦闘中の手番開始時に1dし、出目が「1」ならその場で即座に転倒する。手番中には起き上がれない。",
|
|
109
|
+
"「滑り落ちる」 携行時 戦闘中の手番開始時に1dし、出目が「1」なら手に装備または保持しているものをすべてその場に落とす(その手番の主動作で拾う事は可能)。",
|
|
110
|
+
"「悪臭放つ」 携行時 強い悪臭を放つ。所持しているだけで他のキャラクターに不快感を与え、隠密判定に-2のペナルティ修正を受ける。さらに冒険者ランク(『Ⅱ』137頁)が1段階低いものとして扱われる。",
|
|
111
|
+
], [
|
|
112
|
+
"「醜悪な」 携行時 武具の見た目が悪く、魅力がない。売却する際、基本取引価格の4分の1の価格で売却する。さらに冒険者ランク(『Ⅱ』137頁)が1段階低いものとして扱われる。",
|
|
113
|
+
"「唸る」 携行時 その武具から常に羽虫が飛び交うような音が響く。隠密判定、危険感知判定に-4のペナルティ修正を受ける。",
|
|
114
|
+
"「ふやけた」 携行時 水を吸ったようにふやけた質感をしている。追加ダメージ-1(武器)、防護点-1(鎧、盾)。病気属性の効果に対する生命抵抗力、精神抵抗力判定に-4のペナルティ修正を受ける。",
|
|
115
|
+
"「古傷の」 携行時 HPを回復する効果(休息による回復を含む)を受けた場合、その回復量が1点減少する。",
|
|
116
|
+
"「まばゆい」 携行時 光などを弾いて強く輝く。自身は常に視界が悪い事による-1のペナルティ修正を受ける。",
|
|
117
|
+
"「栄光なき」 携行時 行為判定で自動成功した際、自動成功とは扱わず、2dを振り直し、その後の出目に従う。この効果は1日に1回のみ発揮される。",
|
|
118
|
+
], [
|
|
119
|
+
"「正直者の」 携行時 嘘、方便がすぐばれるようになる。真偽判定の対象となる場合、-4のペナルティ修正を受ける。",
|
|
120
|
+
"「乗り物酔いの」 携行時 揺れに弱くなる。自身の足以外の手段で10分以上移動した後、1時間、行動判定に-1のペナルティ修正を受ける。",
|
|
121
|
+
"「碧を厭う」 携行時 自然の中では落ち着かなくなる。自然環境(『Ⅰ』108頁)では行動判定に-1のペナルティ修正を受ける。",
|
|
122
|
+
"「我慢できない」 携行時 セッション中に1日の始まりを迎えるたび、趣味や嗜好品などに「冒険者レベル×10」ガメルを出費しなければならない。趣味や嗜好品が消費できない環境であれば、翌日の朝まで最大HP、最大MPが「冒険者レベル」点減少する。",
|
|
123
|
+
"「つきまとう」 携行時 この武具が気がつけば身の回りにある。この武具以外での命中力判定、魔法行使判定(武器)、回避力判定(鎧、盾)に-4のペナルティ修正を受ける。",
|
|
124
|
+
"「のろまな」 携行時 戦闘開始処理の「戦闘準備」をいっさい行えなくなる。",
|
|
125
|
+
],
|
|
126
|
+
]
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
ABYSS_CURSE_CATEGORY_TABLE = DiceTable::D66ParityTable.new(
|
|
130
|
+
"アビスカース分類決定表",
|
|
131
|
+
["蛮族", "動物", "植物", "アンデッド", "魔法生物", "「蛮族」「動物」「植物」「アンデッド」「魔法生物」から任意"],
|
|
132
|
+
["魔動機", "幻獣", "妖精", "魔神", "人族", "「魔動機」「幻獣」「妖精」「魔神」「人族」から任意"]
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
ABYSS_CURSE_ATTR_TABLE = DiceTable::D66ParityTable.new(
|
|
136
|
+
"アビスカース属性決定表",
|
|
137
|
+
["土", "水・氷", "炎", "風", "雷", "純粋エネルギー"],
|
|
138
|
+
["断空", "衝撃", "毒", "病気", "呪い", "精神効果"]
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
def eval_game_system_specific_command(command)
|
|
142
|
+
case command
|
|
143
|
+
when /^dru\[(\d+),(\d+),(\d+)\]/i
|
|
144
|
+
power_list = Regexp.last_match.captures.map(&:to_i)
|
|
145
|
+
druid_parser = Command::Parser.new(/dru\[\d+,\d+,\d+\]/i, round_type: BCDice::RoundType::CEIL)
|
|
146
|
+
|
|
147
|
+
cmd = druid_parser.parse(command)
|
|
148
|
+
unless cmd
|
|
149
|
+
return nil
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
druid_dice(cmd, power_list)
|
|
153
|
+
when 'ABT'
|
|
154
|
+
get_abyss_curse_table
|
|
155
|
+
else
|
|
156
|
+
super(command)
|
|
82
157
|
end
|
|
83
158
|
end
|
|
84
159
|
|
|
85
|
-
def
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def getAdditionalString(string, output)
|
|
90
|
-
output, values = super(string, output)
|
|
91
|
-
|
|
92
|
-
keptDiceChangeModify, = getKeptDiceChangesFromString(string)
|
|
93
|
-
|
|
94
|
-
values['keptDiceChangeModify'] = keptDiceChangeModify
|
|
95
|
-
output += "a[#{keptDiceChangeModify}]" if keptDiceChangeModify != 0
|
|
96
|
-
|
|
97
|
-
return output, values
|
|
160
|
+
def rating_parser
|
|
161
|
+
return RatingParser.new(version: :v2_5)
|
|
98
162
|
end
|
|
99
163
|
|
|
100
|
-
def
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
164
|
+
def druid_dice(command, power_list)
|
|
165
|
+
dice_list = @randomizer.roll_barabara(2, 6)
|
|
166
|
+
dice_total = dice_list.sum()
|
|
167
|
+
offset =
|
|
168
|
+
case dice_total
|
|
169
|
+
when 2..6
|
|
170
|
+
0
|
|
171
|
+
when 7..9
|
|
172
|
+
1
|
|
173
|
+
when 10..12
|
|
174
|
+
2
|
|
175
|
+
end
|
|
176
|
+
power = power_list[offset]
|
|
177
|
+
total = power + command.modify_number
|
|
178
|
+
sequence = [
|
|
179
|
+
"(#{command.command.capitalize}#{Format.modifier(command.modify_number)})",
|
|
180
|
+
"2D[#{dice_list.join(',')}]=#{dice_total}",
|
|
181
|
+
"#{power}#{Format.modifier(command.modify_number)}",
|
|
182
|
+
total
|
|
183
|
+
]
|
|
184
|
+
|
|
185
|
+
return sequence.join(" > ")
|
|
107
186
|
end
|
|
108
187
|
|
|
109
|
-
def
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
188
|
+
def get_abyss_curse_table
|
|
189
|
+
table_result = ABYSS_CURSE_TABLE.roll(@randomizer)
|
|
190
|
+
additional =
|
|
191
|
+
case table_result.value
|
|
192
|
+
when 14 # 「差別の」における分類決定表
|
|
193
|
+
ABYSS_CURSE_CATEGORY_TABLE.roll(@randomizer).to_s
|
|
194
|
+
when 25 # 「過敏な」における属性決定表
|
|
195
|
+
ABYSS_CURSE_ATTR_TABLE.roll(@randomizer).to_s
|
|
196
|
+
end
|
|
197
|
+
final_result = [
|
|
198
|
+
table_result.to_s,
|
|
199
|
+
additional,
|
|
200
|
+
].compact
|
|
201
|
+
|
|
202
|
+
return final_result.join("\n")
|
|
117
203
|
end
|
|
118
204
|
end
|
|
119
205
|
end
|
|
@@ -28,7 +28,7 @@ module BCDice
|
|
|
28
28
|
・ボーナス表「BTx+y or BONUSx+y or TOTALx+y」 xは数値, yは技能基本値
|
|
29
29
|
INFO_MESSAGE_TEXT
|
|
30
30
|
|
|
31
|
-
register_prefix('TG
|
|
31
|
+
register_prefix('TG', '1R20', 'RT', 'Result', 'IT', 'Intimidate', 'Test', 'TT', 'Taunt', 'Trick', 'CT', 'MT', 'Maneuver', 'ODT', 'ords', 'odamage', 'DT', 'damage', 'BT', 'bonus', 'total')
|
|
32
32
|
|
|
33
33
|
def replace_text(string)
|
|
34
34
|
string = string.gsub(/Result/i, 'RT')
|
|
@@ -41,7 +41,7 @@ module BCDice
|
|
|
41
41
|
・ダメージ結果表「DTx or DAMAGEx」
|
|
42
42
|
・ロールボーナス表「BTx+y or BONUSx+y or TOTALx+y」 xは数値, yは技能基本値
|
|
43
43
|
INFO_MESSAGE_TEXT
|
|
44
|
-
register_prefix('TE
|
|
44
|
+
register_prefix('TE', 'UP', 'POS', '\d+BD', 'TG', 'RT', 'Result', 'DT', 'damage', 'BT', 'bonus', 'total', '1R20')
|
|
45
45
|
|
|
46
46
|
def eval_game_system_specific_command(command)
|
|
47
47
|
torg_check(command) ||
|
|
@@ -229,7 +229,7 @@ module BCDice
|
|
|
229
229
|
# ロールボーナス表コマンド
|
|
230
230
|
def getRollBonusDiceCommandResult(command)
|
|
231
231
|
debug("TorgEternity Roll Bonus Table Command ? ", command)
|
|
232
|
-
m = /(BT|Bonus)(\d+)(([+\-]\d+)*)/i.match(command)
|
|
232
|
+
m = /(BT|Bonus|Total)(\d+)(([+\-]\d+)*)/i.match(command)
|
|
233
233
|
unless m
|
|
234
234
|
return nil
|
|
235
235
|
end
|
|
@@ -33,7 +33,7 @@ module BCDice
|
|
|
33
33
|
|
|
34
34
|
MESSAGETEXT
|
|
35
35
|
|
|
36
|
-
register_prefix('
|
|
36
|
+
register_prefix('\d+DM', 'TR', 'TRNAME')
|
|
37
37
|
|
|
38
38
|
def eval_game_system_specific_command(command) # スパゲッティなコードだけど許して!!! → 絶対に許さない。全力でリファクタリングした。
|
|
39
39
|
debug("eval_game_system_specific_command command", command)
|
|
@@ -133,11 +133,11 @@ module BCDice
|
|
|
133
133
|
return total, diceList
|
|
134
134
|
end
|
|
135
135
|
|
|
136
|
-
def
|
|
136
|
+
def result_1d100(_total, dice_total, _cmp_op, _target)
|
|
137
137
|
if dice_total >= 96
|
|
138
|
-
"
|
|
138
|
+
Result.fumble("ファンブル")
|
|
139
139
|
elsif dice_total <= 7
|
|
140
|
-
"
|
|
140
|
+
Result.critical("クリティカル")
|
|
141
141
|
end
|
|
142
142
|
end
|
|
143
143
|
|
|
@@ -41,7 +41,7 @@ module BCDice
|
|
|
41
41
|
NOT_CHECK_SUCCESS = -1 # 判定成功にかかわるチェックを行わない(判定失敗に関わるチェックは行う)
|
|
42
42
|
|
|
43
43
|
# ダイスボットで使用するコマンドを配列で列挙する
|
|
44
|
-
register_prefix('\d*VMF
|
|
44
|
+
register_prefix('\d*VMF')
|
|
45
45
|
|
|
46
46
|
def eval_game_system_specific_command(command)
|
|
47
47
|
m = /\A(\d+)?(VMF)(\d+)(\+(\d+))?/.match(command)
|
|
@@ -47,7 +47,7 @@ module BCDice
|
|
|
47
47
|
・改良種表 IS
|
|
48
48
|
MESSAGETEXT
|
|
49
49
|
|
|
50
|
-
register_prefix('
|
|
50
|
+
register_prefix('\d+VBS(>=\d+)?', '\d+VF', '\d+VM', '\d+VG', 'PJ[VA]?', 'PQ[VA]?', 'AC', 'MM([IAD]|V[VA]?)', 'F[LRWGBCS]', 'IP[VA]?', 'EP[VA]?', 'MP', 'IS')
|
|
51
51
|
|
|
52
52
|
def initialize(command)
|
|
53
53
|
super(command)
|
|
@@ -15,17 +15,19 @@ module BCDice
|
|
|
15
15
|
# ダイスボットの使い方
|
|
16
16
|
HELP_MESSAGE = "失敗、成功度の自動判定を行います。\n"
|
|
17
17
|
|
|
18
|
-
def
|
|
18
|
+
def result_2d6(total, dice_total, _dice_list, cmp_op, target)
|
|
19
|
+
return nil unless cmp_op == :<=
|
|
20
|
+
|
|
19
21
|
if dice_total <= 2
|
|
20
|
-
"
|
|
22
|
+
Result.critical("クリティカル")
|
|
21
23
|
elsif dice_total >= 12
|
|
22
|
-
"
|
|
23
|
-
elsif
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
Result.fumble("ファンブル")
|
|
25
|
+
elsif target == "?"
|
|
26
|
+
Result.nothing
|
|
27
|
+
elsif total <= target
|
|
28
|
+
Result.success("#{target - total}成功")
|
|
29
|
+
else
|
|
30
|
+
Result.failure("失敗")
|
|
29
31
|
end
|
|
30
32
|
end
|
|
31
33
|
end
|
|
@@ -15,18 +15,13 @@ module BCDice
|
|
|
15
15
|
# ダイスボットの使い方
|
|
16
16
|
HELP_MESSAGE = "nD10>=m 方式の判定で成否、完全成功、完全失敗を自動判定します。\n"
|
|
17
17
|
|
|
18
|
-
def
|
|
19
|
-
return
|
|
20
|
-
return '' unless cmp_op == :>=
|
|
18
|
+
def result_nd10(_total, _dice_total, dice_list, cmp_op, _target)
|
|
19
|
+
return nil unless cmp_op == :>=
|
|
21
20
|
|
|
22
21
|
if dice_list.count(10) == dice_list.size
|
|
23
|
-
|
|
22
|
+
Result.critical("完全成功")
|
|
24
23
|
elsif dice_list.count(1) == dice_list.size
|
|
25
|
-
|
|
26
|
-
elsif total >= target
|
|
27
|
-
' > 成功'
|
|
28
|
-
else
|
|
29
|
-
' > 失敗'
|
|
24
|
+
Result.fumble("絶対失敗")
|
|
30
25
|
end
|
|
31
26
|
end
|
|
32
27
|
end
|
|
@@ -26,7 +26,7 @@ module BCDice
|
|
|
26
26
|
例)wh60 wh43@4W WH65@
|
|
27
27
|
INFO_MESSAGE_TEXT
|
|
28
28
|
|
|
29
|
-
register_prefix('WH
|
|
29
|
+
register_prefix('WH')
|
|
30
30
|
|
|
31
31
|
def initialize(command)
|
|
32
32
|
super(command)
|
|
@@ -51,14 +51,23 @@ module BCDice
|
|
|
51
51
|
return output_msg
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
def
|
|
55
|
-
return
|
|
56
|
-
return
|
|
54
|
+
def result_1d100(total, _dice_total, cmp_op, target)
|
|
55
|
+
return Result.nothing if target == '?'
|
|
56
|
+
return nil unless cmp_op == :<=
|
|
57
57
|
|
|
58
58
|
if total <= target
|
|
59
|
-
"
|
|
59
|
+
Result.success("成功(成功度#{(target - total) / 10})")
|
|
60
60
|
else
|
|
61
|
-
"
|
|
61
|
+
Result.failure("失敗(失敗度#{(total - target) / 10})")
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def result_1d100_text(total, dice_total, cmp_op, target)
|
|
66
|
+
result = result_1d100(total, dice_total, cmp_op, target)&.text
|
|
67
|
+
if result.nil?
|
|
68
|
+
""
|
|
69
|
+
else
|
|
70
|
+
" > #{result}"
|
|
62
71
|
end
|
|
63
72
|
end
|
|
64
73
|
|
|
@@ -322,7 +331,7 @@ module BCDice
|
|
|
322
331
|
total_n = @randomizer.roll_once(100)
|
|
323
332
|
|
|
324
333
|
output = "(#{string}) > #{total_n}"
|
|
325
|
-
output +=
|
|
334
|
+
output += result_1d100_text(total_n, total_n, :<=, diff)
|
|
326
335
|
|
|
327
336
|
pos_num = (total_n % 10) * 10 + (total_n / 10).to_i
|
|
328
337
|
pos_num = 100 if total_n >= 100
|
|
@@ -18,7 +18,7 @@ module BCDice
|
|
|
18
18
|
"WH部位 頑健ボーナス以下フラグ"の形で指定します。
|
|
19
19
|
部位は「H(頭部)」「A(腕)」「B(胴体)」「L(足)」の4カ所です。
|
|
20
20
|
頑健ボーナスフラグは頑健ボーナス以下のダメージの時にUをつけます。
|
|
21
|
-
例)
|
|
21
|
+
例)whctH whctAU WHCTL
|
|
22
22
|
|
|
23
23
|
■ 命中部位表 (WHLT)
|
|
24
24
|
命中部位をランダムに決定します。(クリティカル用)
|
|
@@ -28,7 +28,7 @@ module BCDice
|
|
|
28
28
|
|
|
29
29
|
■ 命中判定 (WHx)
|
|
30
30
|
"WH(命中値)"の形で指定します。
|
|
31
|
-
|
|
31
|
+
命中判定を行って、クリティカルかファンブルでなければ部位も表示します。
|
|
32
32
|
例)wh60 wh(43-20)
|
|
33
33
|
INFO_MESSAGE_TEXT
|
|
34
34
|
|
|
@@ -44,9 +44,9 @@ module BCDice
|
|
|
44
44
|
roll_critical_table(command) || roll_attack(command) || roll_tables(command, TABLES)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
def
|
|
48
|
-
return
|
|
49
|
-
return
|
|
47
|
+
def result_1d100(total, _dice_total, cmp_op, target)
|
|
48
|
+
return Result.nothing if target == '?'
|
|
49
|
+
return nil unless cmp_op == :<=
|
|
50
50
|
|
|
51
51
|
t10 = total / 10
|
|
52
52
|
d10 = target / 10
|
|
@@ -62,18 +62,19 @@ module BCDice
|
|
|
62
62
|
|
|
63
63
|
result =
|
|
64
64
|
if total <= 5
|
|
65
|
-
"自動成功"
|
|
65
|
+
Result.success("自動成功")
|
|
66
66
|
elsif total >= 96
|
|
67
|
-
"自動失敗"
|
|
67
|
+
Result.failure("自動失敗")
|
|
68
68
|
elsif total <= target
|
|
69
|
-
"成功"
|
|
69
|
+
Result.success("成功")
|
|
70
70
|
else
|
|
71
|
-
"失敗"
|
|
71
|
+
Result.failure("失敗")
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
sl_text = format("(SL%+d)", sl)
|
|
75
|
+
result.text += "#{sl_text} > #{result_detail(sl, total, target)}"
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
return result
|
|
77
78
|
end
|
|
78
79
|
|
|
79
80
|
private
|
|
@@ -249,7 +250,7 @@ module BCDice
|
|
|
249
250
|
|
|
250
251
|
target_number = m[1].to_i
|
|
251
252
|
total = @randomizer.roll_once(100)
|
|
252
|
-
result =
|
|
253
|
+
result = result_1d100(total, total, :<=, target_number)&.text
|
|
253
254
|
|
|
254
255
|
sequence = [
|
|
255
256
|
"(#{command})",
|
|
@@ -266,6 +267,9 @@ module BCDice
|
|
|
266
267
|
if (total > target_number) || (total > 95) # 自動失敗時のファンブル処理も
|
|
267
268
|
if ones == tens
|
|
268
269
|
"ファンブル"
|
|
270
|
+
else
|
|
271
|
+
# 一の位と十の位を入れ替えて参照する
|
|
272
|
+
"(#{HIT_PARTS_TABLE.fetch(merge_d100(ones, tens)).content})"
|
|
269
273
|
end
|
|
270
274
|
elsif ones == tens
|
|
271
275
|
"クリティカル"
|
|
@@ -317,7 +321,7 @@ module BCDice
|
|
|
317
321
|
[61..70, '君はひどく躓きバランスを回復するのに手間取る。次の「移動」を失う。'],
|
|
318
322
|
[71..80, '君は武器を取り回しを誤る。次の「アクション」を失う。'],
|
|
319
323
|
[81..90, '君は筋を違えるか、足首をひねってしまう。「筋断裂(軽度)」の負傷を得る。「致命的負傷」としてカウントされる。'],
|
|
320
|
-
[91..100, '君は射程内のランダムな味方を攻撃してしまう。命中判定の出目の1の位をSL
|
|
324
|
+
[91..100, '君は射程内のランダムな味方を攻撃してしまう。命中判定の出目の1の位をSLとして用いること。攻撃可能な味方が居ない場合は、自己を攻撃してしまい「朦朧状態」1つを得る。'],
|
|
321
325
|
]
|
|
322
326
|
)
|
|
323
327
|
}.freeze
|