bcdice 3.0.0.pre.alpha.1
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 +7 -0
- data/.editorconfig +21 -0
- data/.github/.codecov.yaml +10 -0
- data/.github/workflows/coverage.yaml +21 -0
- data/.github/workflows/lint.yaml +13 -0
- data/.github/workflows/test.yml +20 -0
- data/.gitignore +14 -0
- data/.rubocop.yml +96 -0
- data/.rubocop_todo.yml +113 -0
- data/CHANGELOG.md +868 -0
- data/Gemfile +11 -0
- data/LICENSE +29 -0
- data/README.md +38 -0
- data/ROADMAP.md +30 -0
- data/Rakefile +118 -0
- data/bcdice.gemspec +27 -0
- data/bin/repl.rb +21 -0
- data/docs/README.txt +2028 -0
- data/docs/dicebot_sort_key.md +72 -0
- data/docs/how_to_make_dicebot.md +453 -0
- data/lib/bcdice.rb +8 -0
- data/lib/bcdice/arithmetic_evaluator.rb +167 -0
- data/lib/bcdice/base.rb +423 -0
- data/lib/bcdice/command_parser.rb +242 -0
- data/lib/bcdice/common_command.rb +23 -0
- data/lib/bcdice/common_command/add_dice.rb +54 -0
- data/lib/bcdice/common_command/add_dice/node.rb +488 -0
- data/lib/bcdice/common_command/add_dice/parser.rb +282 -0
- data/lib/bcdice/common_command/add_dice/randomizer.rb +48 -0
- data/lib/bcdice/common_command/barabara_dice.rb +57 -0
- data/lib/bcdice/common_command/calc.rb +39 -0
- data/lib/bcdice/common_command/choice.rb +35 -0
- data/lib/bcdice/common_command/d66_dice.rb +63 -0
- data/lib/bcdice/common_command/reroll_dice.rb +190 -0
- data/lib/bcdice/common_command/upper_dice.rb +165 -0
- data/lib/bcdice/common_command/version.rb +26 -0
- data/lib/bcdice/dice_table.rb +8 -0
- data/lib/bcdice/dice_table/chain_table.rb +33 -0
- data/lib/bcdice/dice_table/d66_grid_table.rb +26 -0
- data/lib/bcdice/dice_table/d66_range_table.rb +26 -0
- data/lib/bcdice/dice_table/d66_table.rb +34 -0
- data/lib/bcdice/dice_table/range_table.rb +267 -0
- data/lib/bcdice/dice_table/roll_result.rb +43 -0
- data/lib/bcdice/dice_table/sai_fic_skill_table.rb +32 -0
- data/lib/bcdice/dice_table/table.rb +35 -0
- data/lib/bcdice/enum.rb +15 -0
- data/lib/bcdice/format.rb +36 -0
- data/lib/bcdice/game_system.rb +187 -0
- data/lib/bcdice/game_system/AFF2e.rb +141 -0
- data/lib/bcdice/game_system/AceKillerGene.rb +55 -0
- data/lib/bcdice/game_system/Airgetlamh.rb +117 -0
- data/lib/bcdice/game_system/Alsetto.rb +124 -0
- data/lib/bcdice/game_system/Alshard.rb +27 -0
- data/lib/bcdice/game_system/AlterRaise.rb +282 -0
- data/lib/bcdice/game_system/Amadeus.rb +622 -0
- data/lib/bcdice/game_system/Amadeus_Korean.rb +501 -0
- data/lib/bcdice/game_system/AnimaAnimus.rb +96 -0
- data/lib/bcdice/game_system/Arianrhod.rb +50 -0
- data/lib/bcdice/game_system/ArsMagica.rb +149 -0
- data/lib/bcdice/game_system/Avandner.rb +101 -0
- data/lib/bcdice/game_system/BBN.rb +143 -0
- data/lib/bcdice/game_system/BadLife.rb +435 -0
- data/lib/bcdice/game_system/BarnaKronika.rb +188 -0
- data/lib/bcdice/game_system/BattleTech.rb +530 -0
- data/lib/bcdice/game_system/BeastBindTrinity.rb +348 -0
- data/lib/bcdice/game_system/BeginningIdol.rb +2527 -0
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2378 -0
- data/lib/bcdice/game_system/BladeOfArcana.rb +252 -0
- data/lib/bcdice/game_system/BlindMythos.rb +460 -0
- data/lib/bcdice/game_system/BloodCrusade.rb +423 -0
- data/lib/bcdice/game_system/BloodMoon.rb +213 -0
- data/lib/bcdice/game_system/CardRanker.rb +249 -0
- data/lib/bcdice/game_system/ChaosFlare.rb +181 -0
- data/lib/bcdice/game_system/Chill.rb +163 -0
- data/lib/bcdice/game_system/Chill3.rb +52 -0
- data/lib/bcdice/game_system/CodeLayerd.rb +132 -0
- data/lib/bcdice/game_system/ColossalHunter.rb +569 -0
- data/lib/bcdice/game_system/CrashWorld.rb +81 -0
- data/lib/bcdice/game_system/Cthulhu.rb +252 -0
- data/lib/bcdice/game_system/Cthulhu7th.rb +767 -0
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +386 -0
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +383 -0
- data/lib/bcdice/game_system/CthulhuTech.rb +263 -0
- data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +243 -0
- data/lib/bcdice/game_system/Cthulhu_Korean.rb +240 -0
- data/lib/bcdice/game_system/DarkBlaze.rb +207 -0
- data/lib/bcdice/game_system/DarkDaysDrive.rb +425 -0
- data/lib/bcdice/game_system/DarkSouls.rb +91 -0
- data/lib/bcdice/game_system/DeadlineHeroes.rb +583 -0
- data/lib/bcdice/game_system/DemonParasite.rb +524 -0
- data/lib/bcdice/game_system/DetatokoSaga.rb +310 -0
- data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +310 -0
- data/lib/bcdice/game_system/DiceBot.rb +17 -0
- data/lib/bcdice/game_system/DiceOfTheDead.rb +111 -0
- data/lib/bcdice/game_system/DoubleCross.rb +373 -0
- data/lib/bcdice/game_system/DoubleCross_Korean.rb +371 -0
- data/lib/bcdice/game_system/Dracurouge.rb +1856 -0
- data/lib/bcdice/game_system/Dracurouge_Korean.rb +310 -0
- data/lib/bcdice/game_system/DungeonsAndDragons.rb +19 -0
- data/lib/bcdice/game_system/EarthDawn.rb +225 -0
- data/lib/bcdice/game_system/EarthDawn3.rb +275 -0
- data/lib/bcdice/game_system/EarthDawn4.rb +272 -0
- data/lib/bcdice/game_system/EclipsePhase.rb +51 -0
- data/lib/bcdice/game_system/Elric.rb +36 -0
- data/lib/bcdice/game_system/Elysion.rb +1213 -0
- data/lib/bcdice/game_system/EmbryoMachine.rb +227 -0
- data/lib/bcdice/game_system/EndBreaker.rb +132 -0
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +27 -0
- data/lib/bcdice/game_system/Fiasco.rb +123 -0
- data/lib/bcdice/game_system/Fiasco_Korean.rb +122 -0
- data/lib/bcdice/game_system/FilledWith.rb +1543 -0
- data/lib/bcdice/game_system/FullMetalPanic.rb +27 -0
- data/lib/bcdice/game_system/FutariSousa.rb +994 -0
- data/lib/bcdice/game_system/FutariSousa_Korean.rb +994 -0
- data/lib/bcdice/game_system/Garako.rb +559 -0
- data/lib/bcdice/game_system/GardenOrder.rb +451 -0
- data/lib/bcdice/game_system/GehennaAn.rb +136 -0
- data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +120 -0
- data/lib/bcdice/game_system/GoblinSlayer.rb +168 -0
- data/lib/bcdice/game_system/GoldenSkyStories.rb +77 -0
- data/lib/bcdice/game_system/Gorilla.rb +44 -0
- data/lib/bcdice/game_system/GranCrest.rb +518 -0
- data/lib/bcdice/game_system/Gundog.rb +52 -0
- data/lib/bcdice/game_system/GundogRevised.rb +294 -0
- data/lib/bcdice/game_system/GundogZero.rb +261 -0
- data/lib/bcdice/game_system/Gurps.rb +403 -0
- data/lib/bcdice/game_system/GurpsFW.rb +2330 -0
- data/lib/bcdice/game_system/HarnMaster.rb +208 -0
- data/lib/bcdice/game_system/HatsuneMiku.rb +706 -0
- data/lib/bcdice/game_system/Hieizan.rb +48 -0
- data/lib/bcdice/game_system/HouraiGakuen.rb +270 -0
- data/lib/bcdice/game_system/HuntersMoon.rb +503 -0
- data/lib/bcdice/game_system/Illusio.rb +89 -0
- data/lib/bcdice/game_system/InfiniteFantasia.rb +51 -0
- data/lib/bcdice/game_system/Insane.rb +822 -0
- data/lib/bcdice/game_system/Insane_Korean.rb +773 -0
- data/lib/bcdice/game_system/IthaWenUa.rb +38 -0
- data/lib/bcdice/game_system/JamesBond.rb +45 -0
- data/lib/bcdice/game_system/Kamigakari.rb +394 -0
- data/lib/bcdice/game_system/Kamigakari_Korean.rb +428 -0
- data/lib/bcdice/game_system/KanColle.rb +938 -0
- data/lib/bcdice/game_system/KemonoNoMori.rb +258 -0
- data/lib/bcdice/game_system/KillDeathBusiness.rb +1420 -0
- data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +1510 -0
- data/lib/bcdice/game_system/KurayamiCrying.rb +49 -0
- data/lib/bcdice/game_system/LiveraDoll.rb +375 -0
- data/lib/bcdice/game_system/LogHorizon.rb +3567 -0
- data/lib/bcdice/game_system/LogHorizon_Korean.rb +1407 -0
- data/lib/bcdice/game_system/LostRecord.rb +30 -0
- data/lib/bcdice/game_system/LostRoyal.rb +242 -0
- data/lib/bcdice/game_system/MagicaLogia.rb +1148 -0
- data/lib/bcdice/game_system/MeikyuDays.rb +415 -0
- data/lib/bcdice/game_system/MeikyuKingdom.rb +466 -0
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +269 -0
- data/lib/bcdice/game_system/MetalHead.rb +249 -0
- data/lib/bcdice/game_system/MetalHeadExtream.rb +917 -0
- data/lib/bcdice/game_system/MetallicGuardian.rb +31 -0
- data/lib/bcdice/game_system/MonotoneMuseum.rb +354 -0
- data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +304 -0
- data/lib/bcdice/game_system/Nechronica.rb +211 -0
- data/lib/bcdice/game_system/Nechronica_Korean.rb +160 -0
- data/lib/bcdice/game_system/NeverCloud.rb +74 -0
- data/lib/bcdice/game_system/NightWizard.rb +231 -0
- data/lib/bcdice/game_system/NightWizard3rd.rb +24 -0
- data/lib/bcdice/game_system/NightmareHunterDeep.rb +117 -0
- data/lib/bcdice/game_system/NinjaSlayer.rb +274 -0
- data/lib/bcdice/game_system/NjslyrBattle.rb +54 -0
- data/lib/bcdice/game_system/Nuekagami.rb +293 -0
- data/lib/bcdice/game_system/OneWayHeroics.rb +134 -0
- data/lib/bcdice/game_system/OracleEngine.rb +265 -0
- data/lib/bcdice/game_system/OrgaRain.rb +77 -0
- data/lib/bcdice/game_system/Oukahoushin3rd.rb +162 -0
- data/lib/bcdice/game_system/Paradiso.rb +323 -0
- data/lib/bcdice/game_system/Paranoia.rb +64 -0
- data/lib/bcdice/game_system/ParanoiaRebooted.rb +109 -0
- data/lib/bcdice/game_system/ParasiteBlood.rb +231 -0
- data/lib/bcdice/game_system/Pathfinder.rb +21 -0
- data/lib/bcdice/game_system/Peekaboo.rb +324 -0
- data/lib/bcdice/game_system/Pendragon.rb +39 -0
- data/lib/bcdice/game_system/PhantasmAdventure.rb +73 -0
- data/lib/bcdice/game_system/Postman.rb +185 -0
- data/lib/bcdice/game_system/PulpCthulhu.rb +184 -0
- data/lib/bcdice/game_system/Raisondetre.rb +171 -0
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +58 -0
- data/lib/bcdice/game_system/RecordOfSteam.rb +149 -0
- data/lib/bcdice/game_system/RokumonSekai2.rb +110 -0
- data/lib/bcdice/game_system/RoleMaster.rb +24 -0
- data/lib/bcdice/game_system/RuneQuest.rb +47 -0
- data/lib/bcdice/game_system/RyuTuber.rb +266 -0
- data/lib/bcdice/game_system/Ryutama.rb +199 -0
- data/lib/bcdice/game_system/SRS.rb +348 -0
- data/lib/bcdice/game_system/SamsaraBallad.rb +111 -0
- data/lib/bcdice/game_system/Satasupe.rb +1173 -0
- data/lib/bcdice/game_system/ScreamHighSchool.rb +128 -0
- data/lib/bcdice/game_system/SevenFortressMobius.rb +34 -0
- data/lib/bcdice/game_system/ShadowRun.rb +26 -0
- data/lib/bcdice/game_system/ShadowRun4.rb +49 -0
- data/lib/bcdice/game_system/ShadowRun5.rb +80 -0
- data/lib/bcdice/game_system/SharedFantasia.rb +69 -0
- data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +85 -0
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +506 -0
- data/lib/bcdice/game_system/ShinobiGami.rb +680 -0
- data/lib/bcdice/game_system/ShoujoTenrankai.rb +677 -0
- data/lib/bcdice/game_system/Skynauts.rb +324 -0
- data/lib/bcdice/game_system/SteamPunkers.rb +485 -0
- data/lib/bcdice/game_system/StellarKnights.rb +856 -0
- data/lib/bcdice/game_system/SterileLife.rb +452 -0
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +103 -0
- data/lib/bcdice/game_system/StratoShout.rb +316 -0
- data/lib/bcdice/game_system/StratoShout_Korean.rb +314 -0
- data/lib/bcdice/game_system/Strave.rb +223 -0
- data/lib/bcdice/game_system/SwordWorld.rb +491 -0
- data/lib/bcdice/game_system/SwordWorld2_0.rb +295 -0
- data/lib/bcdice/game_system/SwordWorld2_5.rb +121 -0
- data/lib/bcdice/game_system/TherapieSein.rb +93 -0
- data/lib/bcdice/game_system/TokumeiTenkousei.rb +96 -0
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +122 -0
- data/lib/bcdice/game_system/TokyoNova.rb +19 -0
- data/lib/bcdice/game_system/Torg.rb +364 -0
- data/lib/bcdice/game_system/Torg1_5.rb +139 -0
- data/lib/bcdice/game_system/TorgEternity.rb +414 -0
- data/lib/bcdice/game_system/TrinitySeven.rb +364 -0
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +287 -0
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +527 -0
- data/lib/bcdice/game_system/Utakaze.rb +153 -0
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +132 -0
- data/lib/bcdice/game_system/Villaciel.rb +555 -0
- data/lib/bcdice/game_system/WARPS.rb +33 -0
- data/lib/bcdice/game_system/WaresBlade.rb +34 -0
- data/lib/bcdice/game_system/Warhammer.rb +336 -0
- data/lib/bcdice/game_system/WitchQuest.rb +275 -0
- data/lib/bcdice/game_system/WorldOfDarkness.rb +135 -0
- data/lib/bcdice/game_system/YankeeYogSothoth.rb +440 -0
- data/lib/bcdice/game_system/YearZeroEngine.rb +134 -0
- data/lib/bcdice/game_system/ZettaiReido.rb +142 -0
- data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +383 -0
- data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +89 -0
- data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +196 -0
- data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +223 -0
- data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +214 -0
- data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +610 -0
- data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +117 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +380 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +184 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +417 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +912 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +121 -0
- data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +67 -0
- data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +166 -0
- data/lib/bcdice/game_system/one_way_heroics/tables.rb +668 -0
- data/lib/bcdice/loader.rb +37 -0
- data/lib/bcdice/normalize.rb +38 -0
- data/lib/bcdice/preprocessor.rb +87 -0
- data/lib/bcdice/randomizer.rb +137 -0
- data/lib/bcdice/repl.rb +155 -0
- data/lib/bcdice/user_defined_dice_table.rb +153 -0
- data/lib/bcdice/version.rb +3 -0
- metadata +304 -0
@@ -0,0 +1,252 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class BladeOfArcana < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'BladeOfArcana'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ブレイド・オブ・アルカナ'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'ふれいとおふあるかな'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
■行為判定 nA[m][Cx][Fy]
|
18
|
+
n:ダイス数 m:判定値(省略時はクリティカル値と同じ)
|
19
|
+
x:クリティカル値(省略時は1) y:ファンブル値(省略時は20)
|
20
|
+
注)[m]、[Cx]、[Fy]は省略可能。
|
21
|
+
例)3A12C4F15→3個振り12以下で成功。C値4、F値は15。
|
22
|
+
例)3A12→3個振り12以下で成功。C値1、F値は20。
|
23
|
+
|
24
|
+
■各種表 (+:出目2~21に変更 -:出目0~19に変更)
|
25
|
+
●リインカーネイション
|
26
|
+
因縁表 CTR[+/-] 前世邂逅表 DJV[-]
|
27
|
+
悪徳シーン表 AKST[+/-]
|
28
|
+
●The 3rd(第三版)
|
29
|
+
因縁表 CT3[+/-]
|
30
|
+
注)[]内は省略可能。
|
31
|
+
例)CTR→因縁表(R版)を出目1~20でロールする。
|
32
|
+
例)CTR+→因縁表(R版)を出目2~21でロールする。
|
33
|
+
INFO_MESSAGE_TEXT
|
34
|
+
|
35
|
+
register_prefix([
|
36
|
+
'\d+A\d*[CF]?\d*[CF]?\d*',
|
37
|
+
'CT3[\+\-]?',
|
38
|
+
'CTR[\+\-]?',
|
39
|
+
'DJV\-?',
|
40
|
+
'AKST[\+\-]?'
|
41
|
+
])
|
42
|
+
|
43
|
+
def initialize(command)
|
44
|
+
super(command)
|
45
|
+
|
46
|
+
@sort_add_dice = true
|
47
|
+
end
|
48
|
+
|
49
|
+
def eval_game_system_specific_command(command)
|
50
|
+
case command.upcase
|
51
|
+
when /^(\d+)A(\d*)([CF]?)(\d*)([CF]?)(\d*)$/
|
52
|
+
counts = Regexp.last_match(1).to_i
|
53
|
+
judgment = Regexp.last_match(2).to_i
|
54
|
+
option1 = Regexp.last_match(3)
|
55
|
+
argument1 = Regexp.last_match(4)
|
56
|
+
option2 = Regexp.last_match(5)
|
57
|
+
argument2 = Regexp.last_match(6)
|
58
|
+
return nil if (option1.empty? != argument1.empty?) || (option2.empty? != argument2.empty?) || (!option2.empty? && (option1 == option2))
|
59
|
+
|
60
|
+
if option1 == 'C'
|
61
|
+
critical = argument1.to_i
|
62
|
+
fumble = argument2.to_i
|
63
|
+
else
|
64
|
+
critical = argument2.to_i
|
65
|
+
fumble = argument1.to_i
|
66
|
+
end
|
67
|
+
return rollAct(counts, judgment, critical, fumble)
|
68
|
+
|
69
|
+
when /^CT3([\+\-]?)$/
|
70
|
+
sign = Regexp.last_match(1)
|
71
|
+
title = '因縁表(The 3rd) 『BoA3』P292'
|
72
|
+
table = [
|
73
|
+
"【他生】",
|
74
|
+
"【師弟】",
|
75
|
+
"【忘却】",
|
76
|
+
"【兄姉】",
|
77
|
+
"【貸し】",
|
78
|
+
"【慕情】",
|
79
|
+
"【主従】",
|
80
|
+
"【強敵】",
|
81
|
+
"【秘密】",
|
82
|
+
"【恩人】",
|
83
|
+
"【告発】",
|
84
|
+
"【友人】",
|
85
|
+
"【仇敵】",
|
86
|
+
"【父母】",
|
87
|
+
"【借り】",
|
88
|
+
"【信頼】",
|
89
|
+
"【幼子】",
|
90
|
+
"【取引】",
|
91
|
+
"【地縁】",
|
92
|
+
"【同志】",
|
93
|
+
"【不審】",
|
94
|
+
"【自身】",
|
95
|
+
]
|
96
|
+
return tableText(title, table, sign)
|
97
|
+
|
98
|
+
when /^CTR([\+\-]?)$/
|
99
|
+
sign = Regexp.last_match(1)
|
100
|
+
title = '因縁表(リインカーネイション) 『BAR』P51、299'
|
101
|
+
table = [
|
102
|
+
"【他生】",
|
103
|
+
"【師弟】",
|
104
|
+
"【忘却】",
|
105
|
+
"【兄姉】",
|
106
|
+
"【貸し】",
|
107
|
+
"【憧憬】",
|
108
|
+
"【主従】",
|
109
|
+
"【強敵】",
|
110
|
+
"【秘密】",
|
111
|
+
"【恩人】",
|
112
|
+
"【取引】",
|
113
|
+
"【友人】",
|
114
|
+
"【怨敵】",
|
115
|
+
"【後援】",
|
116
|
+
"【借り】",
|
117
|
+
"【信頼】",
|
118
|
+
"【弟妹】",
|
119
|
+
"【商売】",
|
120
|
+
"【奇縁】",
|
121
|
+
"【同志】",
|
122
|
+
"【有為】",
|
123
|
+
"【自身】",
|
124
|
+
]
|
125
|
+
return tableText(title, table, sign)
|
126
|
+
|
127
|
+
when /^DJV(\-?)$/
|
128
|
+
sign = Regexp.last_match(1)
|
129
|
+
title = '前世邂逅表(デジャブ) 『BAR』P235'
|
130
|
+
table = [
|
131
|
+
"【鮮烈な風】\n風は懐かしい匂いを、香りを運んでくる。それは……。",
|
132
|
+
"【薄暗い影】\nまるで時が止まってしまっているかのようだ。",
|
133
|
+
"【操りの糸】\nそれはあなたを導く蜘蛛の糸。",
|
134
|
+
"【天上の光】\n偉大なるものがもたらす、天上からの御しるし。",
|
135
|
+
"【温もり】\n春のひなたのような温かさを感じる。",
|
136
|
+
"【鋭いナイフ】\n鋭いナイフのような視線を感じる。これは……。",
|
137
|
+
"【共鳴】\n同じ感覚を感じる、ふたりは通じ合っている。",
|
138
|
+
"【城壁】\n厳しく高い城壁のように重く堅く厚い。",
|
139
|
+
"【砕ける器】\n落ちれば砕ける。砕ければそれは器ではない。",
|
140
|
+
"【陽炎】\n求めれば揺らいで消える。",
|
141
|
+
"【終わりなき円環】\nそれはあなたを捉え巡る輪廻の輪。",
|
142
|
+
"【天秤】\n揺れるバランス、揺れ続ける安定。",
|
143
|
+
"【流れる水】\nひとつ所にとどまらず、姿を固めることはない",
|
144
|
+
"【光る刃】\n鋭く光る刃のような、鋭いまなざし。",
|
145
|
+
"【悪魔】\nあまりにも危険な魅力、それは悪魔的だった。",
|
146
|
+
"【牙】\n獲物を引き裂く鋭く長い、牙。",
|
147
|
+
"【輝く星】\n星は暗く小さい。だがそこに輝く。",
|
148
|
+
"【冴え渡る月光】\n冷たさと安らかさが同居している。",
|
149
|
+
"【照りつける太陽】\n暑い。",
|
150
|
+
"【燃えさかる炎】\n炎はすべてを破壊し、すべてを滅ぼす。",
|
151
|
+
"【世界】\nすべてはこの世界の中で起こり、終わる。",
|
152
|
+
"【なし】",
|
153
|
+
]
|
154
|
+
return tableText(title, table, sign)
|
155
|
+
|
156
|
+
when /^AKST([\+\-]?)$/
|
157
|
+
sign = Regexp.last_match(1)
|
158
|
+
title = '悪徳シーン表 『GoV』P16、164'
|
159
|
+
table = [
|
160
|
+
"▼ウェントス/止まない風\n【行動】殺戮者の狂気に当てられたのか、通り魔的殺人者が現れる。切り裂かれた人々の悲鳴が響き渡る。",
|
161
|
+
"▼エフェクトス/原初の力\n【行動】殺戮者の配下が無法を働く。店先で金品を要求したり、暴力を振るったりしている。",
|
162
|
+
"▼クレアータ/傀儡人形の王\n【行動】殺戮者の配下が人々の行動を監視している。違反した者には即座に罰が与えられる。",
|
163
|
+
"▼マーテル/生ける神\n【行動】殺戮者の配下が人々に殺戮者への信仰を告白し、忠誠を宣誓するように強要している。",
|
164
|
+
"▼コロナ/簒奪者\n【行動】嘆き悲しんでいる者がいる。殺戮者によって、財産、地位、家族あるいは、恋人を奪い取られたという。",
|
165
|
+
"▼フィニス/永遠の人\n【行動】怪物が人々を虐殺している。この地には人間が多すぎるのだという。それが彼らの主の決定だ。",
|
166
|
+
"▼エルス/無私なる愛\n【行動】殺戮者の配下が略奪を働いている。どうやら、殺戮者に献上するものを争っているようだ。",
|
167
|
+
"▼アダマス/万物の保護者\n【行動】反逆者と名指しされる。人々は君たちに接触しようとしない。情報を集めるにも苦労しそうだ。",
|
168
|
+
"▼アルドール/終わりなき戦い\n【行動】ならず者の集団が人々を襲っている。力を示さなければ切り捨てられるのは彼らなのだ。",
|
169
|
+
"▼ファンタスマ/謀略の渦\n【行動】人々は君を見るなり逃げ出した。どうやら恐ろしい殺人者だと思われているようだ。",
|
170
|
+
"▼アクシス/真理の探究者\n【行動】殺戮者の配下の手によって、人々が連れ去られている。誰ひとりもどってこない。",
|
171
|
+
"▼レクス/捕縛者\n【行動】殺戮者への恐怖に駆られた人々はその命令にしたがって徒党を組み、PCたちを捜索している。",
|
172
|
+
"▼アクア/澱んだ水\n【行動】人々は獣のように生きている。言葉は通じない。有効なのは力、暴力だけだ。",
|
173
|
+
"▼グラディウス/暗き死の刃\n【行動】殺戮者とその配下によって虐殺が行なわれている。見渡す限り、死者ばかりだ。",
|
174
|
+
"▼アングルス/純白の恐怖\n【行動】遊びとして人間狩りが行なわれている。人々は逃げ惑い、殺戮者は愉悦に笑う。",
|
175
|
+
"▼ディアボルス/悪魔の囁き\n【行動】殺戮者は少年少女を召し上げている。召し上げられた者たちは音信不通となってしまう。",
|
176
|
+
"▼フルキフェル/裏切り者\n【行動】人々は猜疑の目で君を見る。嘘を吐くのが普通の場所で真実を見いだせるだろうか。",
|
177
|
+
"▼ステラ/破滅への愛\n【行動】街や村落が破壊されている。焼け野原の中、人々は力なくうずくまる。ここには絶望だけがあった。",
|
178
|
+
"▼ルナ/奪う者\n【行動】君たちの目の前に略奪が繰り返される。略奪のために略奪を行なう殺戮者の配下たち。",
|
179
|
+
"▼デクストラ/邪悪な技\n【行動】殺戮者による非道な人体実験が繰り返されている。そのための実験材料が集められている。",
|
180
|
+
"▼イグニス/根源たる炎\n【行動】街や集落、あるいは店舗や住宅が焼き討ちに合う。人々は互いに陥れ、磔刑が行なわれている。",
|
181
|
+
"▼オービス/闇の鎖\n【行動】世界の完全なる破滅、人類の絶滅、無作為で広範囲な虐殺が行なわれる。",
|
182
|
+
]
|
183
|
+
return tableText(title, table, sign)
|
184
|
+
end
|
185
|
+
|
186
|
+
return nil
|
187
|
+
end
|
188
|
+
|
189
|
+
def rollAct(counts, judgment = 0, critical = 0, fumble = 0)
|
190
|
+
if critical < 1
|
191
|
+
critical = 1
|
192
|
+
end
|
193
|
+
if judgment <= 0
|
194
|
+
judgment = critical
|
195
|
+
elsif critical > judgment
|
196
|
+
critical = judgment
|
197
|
+
end
|
198
|
+
|
199
|
+
if fumble <= 0
|
200
|
+
fumble = 20
|
201
|
+
end
|
202
|
+
if counts <= 0
|
203
|
+
counts = 1
|
204
|
+
fumble -= 5
|
205
|
+
end
|
206
|
+
if fumble < 2
|
207
|
+
fumble = 2
|
208
|
+
elsif fumble > 20
|
209
|
+
fumble = 20
|
210
|
+
end
|
211
|
+
|
212
|
+
dice_list = @randomizer.roll_barabara(counts, 20).sort
|
213
|
+
value = dice_list.sum()
|
214
|
+
string = dice_list.join(",")
|
215
|
+
|
216
|
+
text = "(#{counts}A#{judgment}C#{critical}F#{fumble}) > #{string} > "
|
217
|
+
|
218
|
+
unless counts == 1
|
219
|
+
value = string.split(",").map(&:to_i).min
|
220
|
+
text += "#{value} > "
|
221
|
+
end
|
222
|
+
|
223
|
+
if value >= fumble
|
224
|
+
text += 'ファンブル'
|
225
|
+
elsif value <= critical
|
226
|
+
text += 'クリティカル'
|
227
|
+
elsif value > judgment
|
228
|
+
text += '失敗'
|
229
|
+
else
|
230
|
+
text += '成功'
|
231
|
+
end
|
232
|
+
return text
|
233
|
+
end
|
234
|
+
|
235
|
+
def tableText(title, table, sign = '')
|
236
|
+
number = @randomizer.roll_once(20)
|
237
|
+
index = number
|
238
|
+
if sign == '+'
|
239
|
+
index += 1
|
240
|
+
elsif sign == '-'
|
241
|
+
index -= 1
|
242
|
+
end
|
243
|
+
|
244
|
+
text = "#{title} > #{index}"
|
245
|
+
unless sign.empty?
|
246
|
+
text += "[#{number}#{sign}1]"
|
247
|
+
end
|
248
|
+
return text + ' > ' + table[index]
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
@@ -0,0 +1,460 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class BlindMythos < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'BlindMythos'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ブラインド・ミトスRPG'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'ふらいんとみとすRPG'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
17
|
+
・判定:BMx@y>=z、BMSx@y>=z
|
18
|
+
x:スキルレベル
|
19
|
+
y:目標難易度(省略可。デフォルト4)
|
20
|
+
z:必要成功度
|
21
|
+
BMコマンドはダイスの振り足しを常に行い、
|
22
|
+
BMSは振り足しを自動では行いません。
|
23
|
+
例)BM>=1 BM@3>=1 BMS2>=1
|
24
|
+
|
25
|
+
・判定振り足し:ReRollx,x,x...@y>=1
|
26
|
+
x:振るダイスの個数
|
27
|
+
y:目標難易度(省略可。デフォルト4)
|
28
|
+
z:必要成功度
|
29
|
+
振り足しを自動で行わない場合(BMSコマンド)に使用します。
|
30
|
+
|
31
|
+
・LE:失う感情表
|
32
|
+
・感情後遺症表 ESx
|
33
|
+
ESH:喜、ESA:怒、ESS:哀、ESP:楽、ESL:愛、ESE:感
|
34
|
+
・DT:汚染チャート
|
35
|
+
・RPxyz:守護星表チェック
|
36
|
+
xyz:守護星ナンバーを指定
|
37
|
+
例)RP123 RP258
|
38
|
+
MESSAGETEXT
|
39
|
+
|
40
|
+
def eval_game_system_specific_command(command)
|
41
|
+
debug("eval_game_system_specific_command Begin")
|
42
|
+
|
43
|
+
text = judgeRoll(command)
|
44
|
+
return text unless text.nil?
|
45
|
+
|
46
|
+
isStop = true
|
47
|
+
text, = reRoll(command, isStop)
|
48
|
+
return text unless text.nil?
|
49
|
+
|
50
|
+
text = getRulingPlanetDiceCommandResult(command)
|
51
|
+
return text unless text.nil?
|
52
|
+
|
53
|
+
text = getDurtyTableCommandReuslt(command)
|
54
|
+
return text unless text.nil?
|
55
|
+
|
56
|
+
return roll_tables(command, TABLES)
|
57
|
+
end
|
58
|
+
|
59
|
+
def judgeRoll(command)
|
60
|
+
return nil unless /^BM(S)?(\d*)(@(\d+))?>=(\d+)$/i =~ command
|
61
|
+
|
62
|
+
isStop = !Regexp.last_match(1).nil?
|
63
|
+
skillRank = Regexp.last_match(2).to_i
|
64
|
+
judgeNumberText = Regexp.last_match(3)
|
65
|
+
judgeNumber = (Regexp.last_match(4) || 4).to_i
|
66
|
+
targetNumber = (Regexp.last_match(5) || 1).to_i
|
67
|
+
|
68
|
+
message = ""
|
69
|
+
diceCount = skillRank + 2
|
70
|
+
isReRoll = false
|
71
|
+
text, bitList, successList, countOneList, canReRoll =
|
72
|
+
getRollResult([diceCount], judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop)
|
73
|
+
|
74
|
+
message += text
|
75
|
+
message += getTotalResultMessageText(bitList, successList, countOneList, targetNumber, isStop, canReRoll)
|
76
|
+
|
77
|
+
return message
|
78
|
+
end
|
79
|
+
|
80
|
+
def reRoll(command, isStop)
|
81
|
+
debug("ReRoll Begin", command)
|
82
|
+
|
83
|
+
return nil unless /^ReRoll([\d,]+)(@(\d+))?>=(\d+)$/i =~ command
|
84
|
+
|
85
|
+
debug("ReRoll pass")
|
86
|
+
|
87
|
+
rerollCountsText = Regexp.last_match(1)
|
88
|
+
judgeNumberText = Regexp.last_match(2)
|
89
|
+
judgeNumber = (Regexp.last_match(3) || 4).to_i
|
90
|
+
targetNumber = Regexp.last_match(4).to_i
|
91
|
+
|
92
|
+
rerollCounts = rerollCountsText.split(/,/).map(&:to_i)
|
93
|
+
|
94
|
+
commandText = ""
|
95
|
+
rerollCounts.each do |diceCount|
|
96
|
+
commandText += "," unless commandText.empty?
|
97
|
+
commandText += "ReRoll#{diceCount}#{judgeNumberText}>=#{targetNumber}"
|
98
|
+
end
|
99
|
+
|
100
|
+
debug("commandText", commandText)
|
101
|
+
|
102
|
+
message = ""
|
103
|
+
if rerollCounts.size > 1
|
104
|
+
message += "(#{commandText})" if isStop
|
105
|
+
end
|
106
|
+
message += "\n"
|
107
|
+
isReRoll = true
|
108
|
+
text, _bitList, successList, countOneList, =
|
109
|
+
getRollResult(rerollCounts, judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop)
|
110
|
+
|
111
|
+
message += text
|
112
|
+
|
113
|
+
return message, successList, countOneList, targetNumber
|
114
|
+
end
|
115
|
+
|
116
|
+
def getRollResult(rerollCounts, judgeNumberText, judgeNumber, targetNumber, isReRoll, isStop)
|
117
|
+
bitList = []
|
118
|
+
successList = []
|
119
|
+
countOneList = []
|
120
|
+
rerollTargetList = []
|
121
|
+
|
122
|
+
message = ""
|
123
|
+
rerollCounts.each_with_index do |diceCount, index|
|
124
|
+
message += "\n" unless index == 0
|
125
|
+
|
126
|
+
commandName = "ReRoll#{diceCount}"
|
127
|
+
unless isReRoll
|
128
|
+
if isStop
|
129
|
+
commandName = "BMS#{diceCount - 2}"
|
130
|
+
else
|
131
|
+
commandName = "BM#{diceCount - 2}"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
commandText = "#{commandName}#{judgeNumberText}>=#{targetNumber}"
|
135
|
+
|
136
|
+
diceList = @randomizer.roll_barabara(diceCount, 6).sort
|
137
|
+
diceText = diceList.join(",")
|
138
|
+
|
139
|
+
message += " > " if isReRoll
|
140
|
+
message += "(#{commandText}) > #{diceCount}D6[#{diceText}] > "
|
141
|
+
|
142
|
+
success, countOne, resultText = getSuccessResultText(diceList, judgeNumber)
|
143
|
+
bitList += diceList.find_all { |i| i >= 4 } unless isReRoll
|
144
|
+
successList << success
|
145
|
+
countOneList << countOne
|
146
|
+
message += resultText
|
147
|
+
|
148
|
+
sameDiceList = getSameDieList(diceList)
|
149
|
+
next if sameDiceList.empty?
|
150
|
+
|
151
|
+
rerollText = ""
|
152
|
+
sameDiceList.each do |list|
|
153
|
+
rerollText += "," unless rerollText.empty?
|
154
|
+
rerollText += list.join('')
|
155
|
+
end
|
156
|
+
|
157
|
+
rerollTargetList << sameDiceList.map(&:count).join(",")
|
158
|
+
|
159
|
+
message += "、リロール[#{rerollText}]"
|
160
|
+
end
|
161
|
+
|
162
|
+
rerollCommand = ""
|
163
|
+
unless rerollTargetList.empty?
|
164
|
+
rerollCommand = "ReRoll#{rerollTargetList.join(',')}#{judgeNumberText}>=#{targetNumber}"
|
165
|
+
message += "\n > コマンド:#{rerollCommand}" if isStop
|
166
|
+
end
|
167
|
+
|
168
|
+
canReRoll = !rerollCommand.empty?
|
169
|
+
|
170
|
+
if canReRoll
|
171
|
+
unless isStop
|
172
|
+
text, successListTmp, countOneListTmp, = reRoll(rerollCommand, isStop)
|
173
|
+
message += text
|
174
|
+
successList += successListTmp
|
175
|
+
countOneList += countOneListTmp
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
return message, bitList, successList, countOneList, canReRoll
|
180
|
+
end
|
181
|
+
|
182
|
+
def getTotalResultMessageText(bitList, successList, countOneList, targetNumber, isStop, canReRoll)
|
183
|
+
success = successList.inject { |sum, i| sum + i }
|
184
|
+
countOne = countOneList.inject { |sum, i| sum + i }
|
185
|
+
|
186
|
+
result = ""
|
187
|
+
|
188
|
+
if successList.size > 1
|
189
|
+
result += "\n > 最終成功数:#{success}"
|
190
|
+
end
|
191
|
+
|
192
|
+
if canReRoll && isStop
|
193
|
+
result += "\n"
|
194
|
+
|
195
|
+
if success >= targetNumber
|
196
|
+
result += " > 現状で成功。コマンド実行で追加リロールも可能"
|
197
|
+
else
|
198
|
+
result += " > 現状のままでは失敗"
|
199
|
+
result += "。汚染ポイント+#{countOne}" if countOne >= 1
|
200
|
+
end
|
201
|
+
|
202
|
+
return result
|
203
|
+
end
|
204
|
+
|
205
|
+
if success >= targetNumber
|
206
|
+
result += " > 成功"
|
207
|
+
|
208
|
+
if bitList.size >= 1
|
209
|
+
result += "、禁書ビット発生[#{bitList.join(',')}]"
|
210
|
+
end
|
211
|
+
|
212
|
+
else
|
213
|
+
result += " > 失敗"
|
214
|
+
result += "。汚染ポイント+#{countOne}" if countOne >= 1
|
215
|
+
end
|
216
|
+
|
217
|
+
return result
|
218
|
+
end
|
219
|
+
|
220
|
+
def getSameDieList(diceList)
|
221
|
+
sameDiceList = []
|
222
|
+
|
223
|
+
diceList.uniq.each do |i|
|
224
|
+
next if i == 1
|
225
|
+
|
226
|
+
list = diceList.find_all { |dice| dice == i }
|
227
|
+
next if list.length <= 1
|
228
|
+
|
229
|
+
sameDiceList << list
|
230
|
+
end
|
231
|
+
|
232
|
+
return sameDiceList
|
233
|
+
end
|
234
|
+
|
235
|
+
def getSuccessResultText(diceList, judgeNumber)
|
236
|
+
success = 0
|
237
|
+
countOne = 0
|
238
|
+
|
239
|
+
diceList.each do |i|
|
240
|
+
countOne += 1 if i == 1
|
241
|
+
|
242
|
+
next unless i >= judgeNumber
|
243
|
+
|
244
|
+
success += 1
|
245
|
+
end
|
246
|
+
|
247
|
+
result = "成功数:#{success}"
|
248
|
+
|
249
|
+
return success, countOne, result
|
250
|
+
end
|
251
|
+
|
252
|
+
def getRulingPlanetDiceCommandResult(command)
|
253
|
+
return nil unless command =~ /^RP(\d+)/i
|
254
|
+
|
255
|
+
targetNumbers = Regexp.last_match(1).split(//).map(&:to_i)
|
256
|
+
diceList = getRulingPlanetDice
|
257
|
+
|
258
|
+
matchResult = "失敗"
|
259
|
+
targetNumbers.each do |i|
|
260
|
+
if diceList.include?(i)
|
261
|
+
matchResult = "発動"
|
262
|
+
break
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
text = "守護星表チェック(#{targetNumbers.join(',')}) > #{diceList.count}D10[#{diceList.join(',')}] > #{matchResult}"
|
267
|
+
|
268
|
+
return text
|
269
|
+
end
|
270
|
+
|
271
|
+
def getRulingPlanetDice
|
272
|
+
dice1 = @randomizer.roll_once(10)
|
273
|
+
dice2 = dice1
|
274
|
+
|
275
|
+
while dice1 == dice2
|
276
|
+
dice2 = @randomizer.roll_once(10)
|
277
|
+
end
|
278
|
+
|
279
|
+
dice1 = changeRulingPlanetDice(dice1)
|
280
|
+
dice2 = changeRulingPlanetDice(dice2)
|
281
|
+
|
282
|
+
return dice1, dice2
|
283
|
+
end
|
284
|
+
|
285
|
+
def changeRulingPlanetDice(dice)
|
286
|
+
return 0 if dice == 10
|
287
|
+
|
288
|
+
return dice
|
289
|
+
end
|
290
|
+
|
291
|
+
def getDurtyTableCommandReuslt(command)
|
292
|
+
return nil unless /^DT$/i =~ command
|
293
|
+
|
294
|
+
table = <<~__TABLE_END__
|
295
|
+
汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す)
|
296
|
+
PC全員の「トラウマ」「喪失」すべてに2ダメージ
|
297
|
+
PC全員の「喪失」2つに4ダメージ
|
298
|
+
PC全員の「トラウマ」すべてに2ダメージ。その後さらに汚染が2増える
|
299
|
+
PC全員、1つの【記憶】の両方の値が0になる。このときアクロバットダイス獲得不可
|
300
|
+
PC全員の「喪失」1つに4ダメージ。このときアクロバットダイス獲得不可
|
301
|
+
PC全員の「トラウマ」すべてに1ダメージ。その後さらに汚染が3増える
|
302
|
+
PC全員の「トラウマ」すべてに1ダメージ。その後アクロバットダイスをPC人数分失う
|
303
|
+
PC全員の「喪失」すべてに2ダメージ。禁書ビットをすべて失う
|
304
|
+
PC全員の「トラウマ」2つに3ダメージ。その後さらに汚染が1増える
|
305
|
+
PC全員の「トラウマ」「喪失」すべてに1ダメージ
|
306
|
+
PC全員の「喪失」1つに4ダメージ。禁書ビットをすべて失う
|
307
|
+
PC全員の「トラウマ」すべてに2ダメージ
|
308
|
+
PC全員の1つの【記憶】の「トラウマ」「喪失」それぞれに3ダメージ
|
309
|
+
PC全員の「喪失」すべてに1ダメージ
|
310
|
+
PC全員の「トラウマ」3つに2ダメージ
|
311
|
+
PC全員の「トラウマ」と「喪失」それぞれ1つに3ダメージ
|
312
|
+
PC全員の「喪失」3つに2ダメージ
|
313
|
+
PC全員のすべての「トラウマ」に1 ダメージ
|
314
|
+
PC全員のひとつの【記憶】の「トラウマ」「喪失」それぞれに3ダメージ
|
315
|
+
PC全員の「喪失」すべてに2ダメージ
|
316
|
+
PC全員の「トラウマ」ひとつに4ダメージ。禁書ビットをすべて失う
|
317
|
+
PC全員の「トラウマ」「喪失」すべてに1ダメージ
|
318
|
+
PC全員の「喪失」2つに3ダメージ。その後さらに汚染が1増える
|
319
|
+
PC全員の「トラウマ」すべてに2ダメージ。禁書ビットをすべて失う
|
320
|
+
PC全員の「喪失」すべてに1ダメージ。その後アクロバットダイスをPC人数分失う
|
321
|
+
PC全員の「喪失」すべてに1ダメージ。その後さらに汚染が3増える
|
322
|
+
PC全員の「トラウマ」1つに4ダメージ。このときアクロバットダイス獲得不可
|
323
|
+
PC全員、1つの【記憶】の両方の値が0になる。このときアクロバットダイス獲得不可
|
324
|
+
PC全員の「喪失」すべてに2ダメージ。その後さらに汚染が2増える
|
325
|
+
PC全員の「トラウマ」2つに4ダメージ
|
326
|
+
PC全員の「トラウマ」「喪失」すべてに2ダメージ
|
327
|
+
汚染チャートを2回振り、その効果を適用する(1・2-2,5・6-12 なら振り直す)
|
328
|
+
__TABLE_END__
|
329
|
+
|
330
|
+
table = table.split("\n")
|
331
|
+
|
332
|
+
dice1 = @randomizer.roll_once(6)
|
333
|
+
dice2 = @randomizer.roll_sum(2, 6)
|
334
|
+
|
335
|
+
index = (dice2 - 2) * 3 + (dice1 / 2.0).ceil - 1
|
336
|
+
|
337
|
+
return "汚染チャート(#{dice1},#{dice2}) > #{table[index]}"
|
338
|
+
end
|
339
|
+
|
340
|
+
TABLES = {
|
341
|
+
"LE" => DiceTable::Table.new(
|
342
|
+
"失う感情表",
|
343
|
+
"1D6",
|
344
|
+
[
|
345
|
+
"喜:喜びは消えた。嬉しい気持ちとは、なんだっただろう。",
|
346
|
+
"怒:激情は失われ、憎しみもどこかへと消える。",
|
347
|
+
"哀:どんなに辛くても、悲しさを感じない。どうやら涙も涸れたらしい。",
|
348
|
+
"楽:もはや楽しいことなどない。希望を抱くだけ無駄なのだ。",
|
349
|
+
"愛:愛など幻想……無力で儚い、役に立たない世迷い言だ。",
|
350
|
+
"感:なにを見ても、感動はない。心は凍てついている。"
|
351
|
+
]
|
352
|
+
),
|
353
|
+
"ESH" => DiceTable::Table.new(
|
354
|
+
"「喜」の感情後遺症表",
|
355
|
+
"2D6",
|
356
|
+
[
|
357
|
+
"日々喜びを求めてしまう。",
|
358
|
+
"日々喜びを求めてしまう。",
|
359
|
+
"嬉しい時間が長続きしない。",
|
360
|
+
"素直に喜びを共有できないことがある。",
|
361
|
+
"小さなことで大きく喜びを感じる。",
|
362
|
+
"小さなことで大きく喜びを感じる。",
|
363
|
+
"影響なし。",
|
364
|
+
"影響なし。",
|
365
|
+
"「喜」の後遺症をひとつ消してもよい。",
|
366
|
+
"「喜」の後遺症をひとつ消してもよい。",
|
367
|
+
"「喜」の後遺症をひとつ消してもよい。"
|
368
|
+
]
|
369
|
+
),
|
370
|
+
"ESA" => DiceTable::Table.new(
|
371
|
+
"「怒」の感情後遺症表",
|
372
|
+
"2D6",
|
373
|
+
[
|
374
|
+
"始終不機嫌になる。",
|
375
|
+
"始終不機嫌になる。",
|
376
|
+
"一度怒ると、なかなか収まらない。",
|
377
|
+
"怒りっぽくなる",
|
378
|
+
"怒りかたが激しくなる。",
|
379
|
+
"怒りかたが激しくなる。",
|
380
|
+
"影響なし。",
|
381
|
+
"影響なし。",
|
382
|
+
"「怒」の後遺症をひとつ消してもよい。",
|
383
|
+
"「怒」の後遺症をひとつ消してもよい。",
|
384
|
+
"「怒」の後遺症をひとつ消してもよい。"
|
385
|
+
]
|
386
|
+
),
|
387
|
+
"ESS" => DiceTable::Table.new(
|
388
|
+
"「哀」の感情後遺症表",
|
389
|
+
"2D6",
|
390
|
+
[
|
391
|
+
"一度涙が出るとなかなか止まらない。",
|
392
|
+
"一度涙が出るとなかなか止まらない。",
|
393
|
+
"夜、哀しいことを思い出して目が覚める。",
|
394
|
+
"不意に哀しい気持ちになる。",
|
395
|
+
"涙もろくなる。",
|
396
|
+
"涙もろくなる。",
|
397
|
+
"影響なし。",
|
398
|
+
"影響なし。",
|
399
|
+
"「哀」の後遺症をひとつ消してもよい。",
|
400
|
+
"「哀」の後遺症をひとつ消してもよい。",
|
401
|
+
"「哀」の後遺症をひとつ消してもよい。"
|
402
|
+
]
|
403
|
+
),
|
404
|
+
"ESP" => DiceTable::Table.new(
|
405
|
+
"「楽」の感情後遺症表",
|
406
|
+
"2D6",
|
407
|
+
[
|
408
|
+
"突然陽気になったり、不意に笑い出してしまう。",
|
409
|
+
"突然陽気になったり、不意に笑い出してしまう。",
|
410
|
+
"周りが楽しくなさそうだと不安になる。",
|
411
|
+
"楽しいことがないと落ち着かない。",
|
412
|
+
"些細なことでも笑ってしまう。",
|
413
|
+
"些細なことでも笑ってしまう。",
|
414
|
+
"影響なし。",
|
415
|
+
"影響なし。",
|
416
|
+
"「楽」の後遺症をひとつ消してもよい。",
|
417
|
+
"「楽」の後遺症をひとつ消してもよい。",
|
418
|
+
"「楽」の後遺症をひとつ消してもよい。"
|
419
|
+
]
|
420
|
+
),
|
421
|
+
"ESL" => DiceTable::Table.new(
|
422
|
+
"「愛」の感情後遺症表",
|
423
|
+
"2D6",
|
424
|
+
[
|
425
|
+
"少しでも気になる相手に愛を求めてしまう。",
|
426
|
+
"少しでも気になる相手に愛を求めてしまう。",
|
427
|
+
"愛する相手(恋人・家族・ペット・空想)から離れたくない。",
|
428
|
+
"誰彼構わず優しくしてしまう。",
|
429
|
+
"ひとりでいると不安を感じる。",
|
430
|
+
"ひとりでいると不安を感じる。",
|
431
|
+
"影響なし。",
|
432
|
+
"影響なし。",
|
433
|
+
"「愛」の後遺症をひとつ消してもよい。",
|
434
|
+
"「愛」の後遺症をひとつ消してもよい。",
|
435
|
+
"「愛」の後遺症をひとつ消してもよい。"
|
436
|
+
]
|
437
|
+
),
|
438
|
+
"ESE" => DiceTable::Table.new(
|
439
|
+
"「感」の感情後遺症表",
|
440
|
+
"2D6",
|
441
|
+
[
|
442
|
+
"感動を共有できない相手を不信に思ってしまう。",
|
443
|
+
"感動を共有できない相手を不信に思ってしまう。",
|
444
|
+
"嬉しくても哀しくてもすぐに涙が出る。",
|
445
|
+
"リアクションがオーバーになる。",
|
446
|
+
"ちょっとしたことで感動する。",
|
447
|
+
"ちょっとしたことで感動する。",
|
448
|
+
"影響なし。",
|
449
|
+
"影響なし。",
|
450
|
+
"「感」の後遺症をひとつ消してもよい。",
|
451
|
+
"「感」の後遺症をひとつ消してもよい。",
|
452
|
+
"「感」の後遺症をひとつ消してもよい。"
|
453
|
+
]
|
454
|
+
),
|
455
|
+
}.freeze
|
456
|
+
|
457
|
+
register_prefix(['BM.*', 'ReRoll\d+.*', 'RP\d+', 'DT'] + TABLES.keys)
|
458
|
+
end
|
459
|
+
end
|
460
|
+
end
|