bcdice 3.0.0.pre.alpha.1 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +70 -0
- data/README.md +34 -7
- data/i18n/Amadeus/ja_jp.yml +386 -0
- data/i18n/Amadeus/ko_kr.yml +148 -0
- data/i18n/Cthulhu/ja_jp.yml +11 -0
- data/i18n/Cthulhu/ko_kr.yml +11 -0
- data/i18n/Cthulhu/zh_hant.yml +11 -0
- data/i18n/DetatokoSaga/ja_jp.yml +75 -0
- data/i18n/DetatokoSaga/ko_kr.yml +75 -0
- data/i18n/DoubleCross/ja_jp.yml +53 -0
- data/i18n/DoubleCross/ko_kr.yml +53 -0
- data/i18n/Dracurouge/ja_jp.yml +1374 -0
- data/i18n/Dracurouge/ko_kr.yml +295 -0
- data/i18n/Fiasco/ja_jp.yml +10 -0
- data/i18n/Fiasco/ko_kr.yml +10 -0
- data/i18n/FutariSousa/ja_jp.yml +720 -0
- data/i18n/FutariSousa/ko_kr.yml +746 -0
- data/i18n/Insane/ja_jp.yml +454 -0
- data/i18n/Insane/ko_kr.yml +502 -0
- data/i18n/Kamigakari/ja_jp.yml +276 -0
- data/i18n/Kamigakari/ko_kr.yml +204 -0
- data/i18n/KillDeathBusiness/ja_jp.yml +1092 -0
- data/i18n/KillDeathBusiness/ko_kr.yml +1063 -0
- data/i18n/LogHorizon/ja_jp.yml +3082 -0
- data/i18n/LogHorizon/ko_kr.yml +923 -0
- data/i18n/MagicaLogia/ja_jp.yml +564 -0
- data/i18n/MagicaLogia/ko_kr.yml +564 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +561 -0
- data/i18n/MonotoneMuseum/ko_kr.yml +89 -0
- data/i18n/Nechronica/ja_jp.yml +57 -0
- data/i18n/Nechronica/ko_kr.yml +14 -0
- data/i18n/StratoShout/ja_jp.yml +160 -0
- data/i18n/StratoShout/ko_kr.yml +160 -0
- data/i18n/ja_jp.yml +5 -0
- data/i18n/ko_kr.yml +7 -0
- data/i18n/zh_hant.yml +3 -0
- data/lib/bcdice.rb +4 -1
- data/lib/bcdice/arithmetic.rb +22 -0
- data/lib/bcdice/arithmetic/node.rb +223 -0
- data/lib/bcdice/arithmetic/parser.rb +240 -0
- data/lib/bcdice/arithmetic_evaluator.rb +7 -156
- data/lib/bcdice/base.rb +94 -101
- 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 +4 -0
- data/lib/bcdice/common_command/add_dice.rb +8 -42
- data/lib/bcdice/common_command/add_dice/node.rb +221 -72
- data/lib/bcdice/common_command/add_dice/parser.rb +391 -274
- data/lib/bcdice/common_command/add_dice/randomizer.rb +27 -33
- data/lib/bcdice/common_command/barabara_dice.rb +8 -47
- data/lib/bcdice/common_command/barabara_dice/node.rb +92 -0
- data/lib/bcdice/common_command/barabara_dice/parser.rb +336 -0
- data/lib/bcdice/common_command/barabara_dice/result.rb +22 -0
- data/lib/bcdice/common_command/calc.rb +9 -30
- data/lib/bcdice/common_command/calc/node.rb +39 -0
- data/lib/bcdice/common_command/calc/parser.rb +271 -0
- data/lib/bcdice/common_command/choice.rb +137 -19
- data/lib/bcdice/common_command/d66_dice.rb +52 -34
- data/lib/bcdice/common_command/lexer.rb +47 -0
- data/lib/bcdice/common_command/repeat.rb +102 -0
- data/lib/bcdice/common_command/reroll_dice.rb +8 -158
- data/lib/bcdice/common_command/reroll_dice/node.rb +198 -0
- data/lib/bcdice/common_command/reroll_dice/parser.rb +421 -0
- data/lib/bcdice/common_command/upper_dice.rb +12 -129
- data/lib/bcdice/common_command/upper_dice/node.rb +181 -0
- data/lib/bcdice/common_command/upper_dice/parser.rb +433 -0
- data/lib/bcdice/common_command/version.rb +11 -17
- data/lib/bcdice/deprecated/checker.rb +78 -0
- 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 +10 -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 +12 -0
- data/lib/bcdice/dice_table/roll_result.rb +2 -0
- data/lib/bcdice/dice_table/sai_fic_skill_table.rb +75 -17
- data/lib/bcdice/dice_table/sai_fic_skill_table/category.rb +25 -0
- data/lib/bcdice/dice_table/sai_fic_skill_table/skill.rb +23 -0
- data/lib/bcdice/dice_table/table.rb +10 -0
- data/lib/bcdice/enum.rb +2 -0
- data/lib/bcdice/format.rb +2 -0
- data/lib/bcdice/game_system.rb +17 -1
- data/lib/bcdice/game_system/AFF2e.rb +1 -1
- data/lib/bcdice/game_system/AceKillerGene.rb +3 -3
- data/lib/bcdice/game_system/Airgetlamh.rb +3 -3
- data/lib/bcdice/game_system/AlchemiaStruggle.rb +346 -0
- data/lib/bcdice/game_system/Alsetto.rb +1 -1
- data/lib/bcdice/game_system/Alshard.rb +1 -2
- data/lib/bcdice/game_system/AlterRaise.rb +2 -2
- data/lib/bcdice/game_system/Amadeus.rb +47 -508
- data/lib/bcdice/game_system/Amadeus_Korean.rb +12 -456
- data/lib/bcdice/game_system/AngelGear.rb +123 -0
- data/lib/bcdice/game_system/AnimaAnimus.rb +2 -6
- data/lib/bcdice/game_system/Arianrhod.rb +0 -1
- 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 +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 -13
- data/lib/bcdice/game_system/BeginningIdol.rb +6 -7
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +6 -7
- data/lib/bcdice/game_system/BladeOfArcana.rb +6 -6
- data/lib/bcdice/game_system/BlindMythos.rb +12 -10
- data/lib/bcdice/game_system/BloodCrusade.rb +54 -81
- data/lib/bcdice/game_system/BloodMoon.rb +43 -3
- data/lib/bcdice/game_system/CardRanker.rb +24 -65
- 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 +3 -4
- data/lib/bcdice/game_system/Comes.rb +50 -0
- data/lib/bcdice/game_system/CrashWorld.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu.rb +99 -98
- data/lib/bcdice/game_system/Cthulhu7th.rb +117 -370
- 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 +8 -15
- data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +7 -190
- data/lib/bcdice/game_system/Cthulhu_Korean.rb +5 -186
- data/lib/bcdice/game_system/DarkBlaze.rb +13 -9
- data/lib/bcdice/game_system/DarkDaysDrive.rb +17 -15
- data/lib/bcdice/game_system/DarkSouls.rb +1 -1
- data/lib/bcdice/game_system/DeadlineHeroes.rb +3 -3
- data/lib/bcdice/game_system/DemonParasite.rb +1 -2
- data/lib/bcdice/game_system/DesperateRun.rb +163 -0
- data/lib/bcdice/game_system/DetatokoSaga.rb +69 -152
- data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +9 -277
- data/lib/bcdice/game_system/DiceBot.rb +22 -4
- data/lib/bcdice/game_system/DiceOfTheDead.rb +9 -6
- data/lib/bcdice/game_system/DoubleCross.rb +145 -157
- data/lib/bcdice/game_system/DoubleCross_Korean.rb +13 -330
- data/lib/bcdice/game_system/Dracurouge.rb +376 -1678
- data/lib/bcdice/game_system/Dracurouge_Korean.rb +16 -271
- 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 +5 -6
- data/lib/bcdice/game_system/EmbryoMachine.rb +6 -6
- data/lib/bcdice/game_system/Emoklore.rb +131 -0
- data/lib/bcdice/game_system/EndBreaker.rb +1 -2
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -2
- data/lib/bcdice/game_system/Fiasco.rb +87 -70
- data/lib/bcdice/game_system/Fiasco_Korean.rb +7 -95
- data/lib/bcdice/game_system/FilledWith.rb +465 -569
- data/lib/bcdice/game_system/FullMetalPanic.rb +1 -2
- data/lib/bcdice/game_system/FutariSousa.rb +103 -938
- data/lib/bcdice/game_system/FutariSousa_Korean.rb +7 -948
- data/lib/bcdice/game_system/{Gurps.rb → GURPS.rb} +184 -217
- data/lib/bcdice/game_system/Garako.rb +140 -39
- data/lib/bcdice/game_system/GardenOrder.rb +3 -3
- data/lib/bcdice/game_system/GehennaAn.rb +4 -4
- data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
- data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
- data/lib/bcdice/game_system/GoldenSkyStories.rb +1 -1
- data/lib/bcdice/game_system/Gorilla.rb +1 -1
- data/lib/bcdice/game_system/GranCrest.rb +2 -3
- data/lib/bcdice/game_system/Gundog.rb +1 -1
- data/lib/bcdice/game_system/GundogRevised.rb +4 -4
- data/lib/bcdice/game_system/GundogZero.rb +3 -3
- data/lib/bcdice/game_system/GurpsFW.rb +4 -8
- data/lib/bcdice/game_system/HarnMaster.rb +2 -2
- data/lib/bcdice/game_system/HatsuneMiku.rb +2 -3
- data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
- data/lib/bcdice/game_system/HuntersMoon.rb +17 -111
- data/lib/bcdice/game_system/Illusio.rb +27 -36
- data/lib/bcdice/game_system/InfiniteBabeL.rb +518 -0
- data/lib/bcdice/game_system/Insane.rb +90 -717
- data/lib/bcdice/game_system/Insane_Korean.rb +7 -719
- data/lib/bcdice/game_system/JekyllAndHyde.rb +42 -0
- data/lib/bcdice/game_system/JuinKansen.rb +251 -0
- data/lib/bcdice/game_system/Kamigakari.rb +47 -242
- data/lib/bcdice/game_system/Kamigakari_Korean.rb +6 -394
- data/lib/bcdice/game_system/KanColle.rb +20 -169
- data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
- data/lib/bcdice/game_system/KillDeathBusiness.rb +189 -1180
- data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +8 -1460
- data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
- data/lib/bcdice/game_system/LiveraDoll.rb +2 -2
- data/lib/bcdice/game_system/LogHorizon.rb +350 -3379
- data/lib/bcdice/game_system/LogHorizon_Korean.rb +55 -1357
- data/lib/bcdice/game_system/LostRecord.rb +0 -1
- data/lib/bcdice/game_system/LostRoyal.rb +3 -6
- data/lib/bcdice/game_system/MagicaLogia.rb +158 -1044
- data/lib/bcdice/game_system/MagicaLogia_Korean.rb +66 -0
- data/lib/bcdice/game_system/MeikyuDays.rb +2 -3
- data/lib/bcdice/game_system/MeikyuKingdom.rb +7 -7
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +7 -8
- data/lib/bcdice/game_system/MetalHead.rb +1 -1
- data/lib/bcdice/game_system/MetalHeadExtream.rb +7 -7
- data/lib/bcdice/game_system/MetallicGuardian.rb +1 -2
- data/lib/bcdice/game_system/MonotoneMuseum.rb +41 -241
- data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +10 -270
- data/lib/bcdice/game_system/NSSQ.rb +159 -0
- data/lib/bcdice/game_system/Nechronica.rb +37 -76
- data/lib/bcdice/game_system/Nechronica_Korean.rb +11 -128
- 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 +33 -43
- data/lib/bcdice/game_system/NjslyrBattle.rb +1 -1
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -2
- data/lib/bcdice/game_system/OracleEngine.rb +14 -18
- data/lib/bcdice/game_system/OrgaRain.rb +19 -27
- data/lib/bcdice/game_system/Paradiso.rb +3 -3
- data/lib/bcdice/game_system/Paranoia.rb +1 -1
- 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 +23 -123
- data/lib/bcdice/game_system/PhantasmAdventure.rb +0 -4
- data/lib/bcdice/game_system/Postman.rb +3 -3
- data/lib/bcdice/game_system/PulpCthulhu.rb +3 -3
- data/lib/bcdice/game_system/Raisondetre.rb +3 -3
- 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 +296 -0
- 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 -7
- data/lib/bcdice/game_system/SamsaraBallad.rb +5 -4
- data/lib/bcdice/game_system/Satasupe.rb +90 -866
- data/lib/bcdice/game_system/ScreamHighSchool.rb +4 -4
- data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
- data/lib/bcdice/game_system/ShadowRun5.rb +2 -2
- data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
- data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +1 -1
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +5 -5
- data/lib/bcdice/game_system/ShinobiGami.rb +75 -40
- data/lib/bcdice/game_system/ShoujoTenrankai.rb +3 -3
- 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 +2 -5
- data/lib/bcdice/game_system/SterileLife.rb +2 -2
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -3
- data/lib/bcdice/game_system/StratoShout.rb +39 -268
- data/lib/bcdice/game_system/StratoShout_Korean.rb +8 -283
- data/lib/bcdice/game_system/Strave.rb +2 -2
- data/lib/bcdice/game_system/SwordWorld.rb +52 -189
- data/lib/bcdice/game_system/SwordWorld2_0.rb +21 -150
- data/lib/bcdice/game_system/SwordWorld2_5.rb +126 -41
- data/lib/bcdice/game_system/TherapieSein.rb +3 -3
- data/lib/bcdice/game_system/TokumeiTenkousei.rb +2 -2
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +2 -2
- data/lib/bcdice/game_system/Torg.rb +3 -3
- data/lib/bcdice/game_system/Torg1_5.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +5 -8
- data/lib/bcdice/game_system/TrinitySeven.rb +3 -3
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +7 -7
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +2 -3
- data/lib/bcdice/game_system/UnsungDuet.rb +139 -0
- data/lib/bcdice/game_system/Utakaze.rb +2 -2
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
- data/lib/bcdice/game_system/Villaciel.rb +1 -2
- data/lib/bcdice/game_system/Warhammer.rb +7 -7
- data/lib/bcdice/game_system/Warhammer4.rb +326 -0
- 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 +15 -15
- 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/filled_with/cook_tables.rb +119 -0
- data/lib/bcdice/game_system/filled_with/lot_tables.rb +155 -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 +17 -12
- data/lib/bcdice/normalize.rb +3 -1
- data/lib/bcdice/preprocessor.rb +23 -44
- data/lib/bcdice/randomizer.rb +14 -0
- data/lib/bcdice/repl.rb +4 -2
- data/lib/bcdice/result.rb +87 -0
- data/lib/bcdice/translate.rb +13 -0
- data/lib/bcdice/user_defined_dice_table.rb +28 -15
- data/lib/bcdice/version.rb +3 -1
- metadata +101 -24
- 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 -96
- data/.rubocop_todo.yml +0 -113
- data/Gemfile +0 -11
- data/ROADMAP.md +0 -30
- data/Rakefile +0 -118
- data/bcdice.gemspec +0 -27
- 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
@@ -36,22 +36,22 @@ module BCDice
|
|
36
36
|
例)DCSL7 DCEL22
|
37
37
|
INFO_MESSAGE_TEXT
|
38
38
|
|
39
|
-
register_prefix(
|
39
|
+
register_prefix(
|
40
40
|
'(SH|SHS)(\-?\d+)(\/\d+)?(@\d+)?',
|
41
41
|
'(EM|TR|FE)(\-?\d+)(@\d+)?',
|
42
42
|
'DC(SL|BL|IM|BR|RF|EL).+'
|
43
|
-
|
43
|
+
)
|
44
44
|
|
45
45
|
def eval_game_system_specific_command(command)
|
46
46
|
case command
|
47
|
-
when /(EM|TR|FE)(
|
47
|
+
when /(EM|TR|FE)(-?\d+)(@(\d+))?/i
|
48
48
|
command_type = Regexp.last_match(1).upcase
|
49
49
|
success_rate = Regexp.last_match(2).to_i
|
50
50
|
critical_border_text = Regexp.last_match(4)
|
51
51
|
critical_border = get_critical_border(critical_border_text, success_rate)
|
52
52
|
|
53
53
|
return check_roll_sh(success_rate, critical_border, command_type)
|
54
|
-
when %r{(SH|SHS)(
|
54
|
+
when %r{(SH|SHS)(-?\d+)(/(\d+))?(@(\d+))?}i
|
55
55
|
success_rate = Regexp.last_match(2).to_i
|
56
56
|
repeat_count = (Regexp.last_match(4) || 1).to_i
|
57
57
|
critical_border_text = Regexp.last_match(6)
|
@@ -21,7 +21,7 @@ module BCDice
|
|
21
21
|
BコマンドとRコマンド時に、グリッチの表示を行います。
|
22
22
|
INFO_MESSAGE_TEXT
|
23
23
|
|
24
|
-
register_prefix(
|
24
|
+
register_prefix('(\d+)B6@(\d+)')
|
25
25
|
|
26
26
|
def initialize(command)
|
27
27
|
super(command)
|
@@ -40,7 +40,7 @@ module BCDice
|
|
40
40
|
m = /(\d+B6)@(\d+)/.match(command)
|
41
41
|
b_dice = m[1]
|
42
42
|
limit = m[2].to_i
|
43
|
-
output_before_limited = BCDice::CommonCommand::BarabaraDice.
|
43
|
+
output_before_limited = BCDice::CommonCommand::BarabaraDice.eval(b_dice, self, @randomizer).text
|
44
44
|
|
45
45
|
m = /成功数(\d+)/.match(output_before_limited)
|
46
46
|
output_after_limited = output_before_limited
|
@@ -33,13 +33,13 @@ module BCDice
|
|
33
33
|
例)CSW10 CBX76
|
34
34
|
MESSAGETEXT
|
35
35
|
|
36
|
-
register_prefix(
|
37
|
-
'CRL
|
38
|
-
'RL
|
39
|
-
|
36
|
+
register_prefix(
|
37
|
+
'CRL', 'CSW', 'CLS', 'CSS', 'CSP', 'CAX', 'CCL', 'CMA', 'CBX', 'CPR', 'CST',
|
38
|
+
'RL', 'SW', 'LS', 'SS', 'SP', 'AX', 'CL', 'BW', 'MA', 'BX', 'PR', 'ST'
|
39
|
+
)
|
40
40
|
|
41
41
|
def eval_game_system_specific_command(command)
|
42
|
-
m = /^([A-Z]+)([
|
42
|
+
m = /^([A-Z]+)([+\-]?\d+)?(?:>=(\d+))?$/i.match(command)
|
43
43
|
unless m
|
44
44
|
return nil
|
45
45
|
end
|
@@ -16,9 +16,18 @@ module BCDice
|
|
16
16
|
|
17
17
|
# ダイスボットの使い方
|
18
18
|
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
19
|
+
・行為判定 SG@s#f>=x
|
20
|
+
2D6の行為判定を行う
|
21
|
+
s: スペシャル値 (省略時 12)
|
22
|
+
f: ファンブル値 (省略時 2)
|
23
|
+
x: 目標値 (省略可)
|
24
|
+
例)SG, SG@11, SG@11#3, SG#3>=7
|
19
25
|
・各種表
|
20
26
|
・(無印)シーン表 ST/ファンブル表 FT/感情表 ET
|
21
|
-
/変調表 WT/戦場表 BT/異形表 MT
|
27
|
+
/変調表 WT/戦場表 BT/異形表 MT
|
28
|
+
・ランダム特技決定表 RTTn (n:分野番号、省略可能)
|
29
|
+
1器術 2体術 3忍術 4謀術 5戦術 6妖術
|
30
|
+
・ランダム分野表 RCT
|
22
31
|
・(弐)都市シーン表 CST/館シーン表 MST/出島シーン表 DST
|
23
32
|
・(参)トラブルシーン表 TST/日常シーン表 NST/回想シーン表 KST
|
24
33
|
・(死)東京シーン表 TKST/戦国シーン表 GST
|
@@ -38,53 +47,89 @@ module BCDice
|
|
38
47
|
super(command)
|
39
48
|
|
40
49
|
@sort_add_dice = true
|
41
|
-
@enabled_d66 = true
|
42
50
|
@d66_sort_type = D66SortType::ASC
|
43
51
|
end
|
44
52
|
|
45
|
-
|
46
|
-
|
53
|
+
SPECIAL = "スペシャル(【生命力】1点か変調一つを回復)"
|
54
|
+
|
55
|
+
def result_2d6(total, dice_total, _dice_list, cmp_op, target)
|
56
|
+
return nil unless cmp_op == :>=
|
47
57
|
|
48
58
|
if dice_total <= 2
|
49
|
-
"
|
59
|
+
Result.fumble("ファンブル")
|
50
60
|
elsif dice_total >= 12
|
51
|
-
|
61
|
+
Result.critical(SPECIAL)
|
52
62
|
elsif target == "?"
|
53
|
-
|
63
|
+
nil
|
54
64
|
elsif total >= target
|
55
|
-
"
|
65
|
+
Result.success("成功")
|
56
66
|
else
|
57
|
-
"
|
67
|
+
Result.failure("失敗")
|
58
68
|
end
|
59
69
|
end
|
60
70
|
|
61
|
-
|
62
|
-
string = command.upcase
|
63
|
-
|
64
|
-
result = roll_tables(command, TABLES)
|
65
|
-
if result
|
66
|
-
return result
|
67
|
-
end
|
71
|
+
register_prefix("SG")
|
68
72
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
return sinobigami_metamorphose_table()
|
74
|
-
end
|
73
|
+
def eval_game_system_specific_command(command)
|
74
|
+
result = action_roll(command) || roll_tables(command, TABLES) || RTT.roll_command(@randomizer, command)
|
75
|
+
return result if result
|
76
|
+
return sinobigami_metamorphose_table() if command == 'MT'
|
75
77
|
|
76
|
-
|
78
|
+
nil
|
77
79
|
end
|
78
80
|
|
81
|
+
RTT = DiceTable::SaiFicSkillTable.new(
|
82
|
+
[
|
83
|
+
['器術', ['絡繰術', '火術', '水術', '針術', '仕込み', '衣装術', '縄術', '登術', '拷問術', '壊器術', '掘削術']],
|
84
|
+
['体術', ['騎乗術', '砲術', '手裏剣術', '手練', '身体操術', '歩法', '走法', '飛術', '骨法術', '刀術', '怪力']],
|
85
|
+
['忍術', ['生存術', '潜伏術', '遁走術', '盗聴術', '腹話術', '隠形術', '変装術', '香術', '分身の術', '隠蔽術', '第六感']],
|
86
|
+
['謀術', ['医術', '毒術', '罠術', '調査術', '詐術', '対人術', '遊芸', '九ノ一の術', '傀儡の術', '流言の術', '経済力']],
|
87
|
+
['戦術', ['兵糧術', '鳥獣術', '野戦術', '地の利', '意気', '用兵術', '記憶術', '見敵術', '暗号術', '伝達術', '人脈']],
|
88
|
+
['妖術', ['異形化', '召喚術', '死霊術', '結界術', '封術', '言霊術', '幻術', '瞳術', '千里眼の術', '憑依術', '呪術']],
|
89
|
+
],
|
90
|
+
s_format: "『%<category_name>s』%<skill_name>s",
|
91
|
+
rtt_format: "ランダム指定特技表(%<category_dice>d,%<row_dice>d) > %<text>s"
|
92
|
+
)
|
93
|
+
|
79
94
|
private
|
80
95
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
96
|
+
def action_roll(command)
|
97
|
+
parser = Command::Parser.new("SG", round_type: round_type)
|
98
|
+
.restrict_cmp_op_to(:>=, nil)
|
99
|
+
.enable_critical
|
100
|
+
.enable_fumble
|
101
|
+
cmd = parser.parse(command)
|
102
|
+
return nil unless cmd
|
86
103
|
|
87
|
-
|
104
|
+
cmd.critical ||= 12
|
105
|
+
cmd.fumble ||= 2
|
106
|
+
|
107
|
+
dice_list = @randomizer.roll_barabara(2, 6).sort
|
108
|
+
dice_total = dice_list.sum()
|
109
|
+
total = dice_total + cmd.modify_number
|
110
|
+
|
111
|
+
result =
|
112
|
+
if dice_total <= cmd.fumble
|
113
|
+
Result.fumble("ファンブル")
|
114
|
+
elsif dice_total >= cmd.critical
|
115
|
+
Result.critical(SPECIAL)
|
116
|
+
elsif cmd.cmp_op.nil?
|
117
|
+
Result.new
|
118
|
+
elsif total >= cmd.target_number
|
119
|
+
Result.success("成功")
|
120
|
+
else
|
121
|
+
Result.failure("失敗")
|
122
|
+
end
|
123
|
+
|
124
|
+
sequence = [
|
125
|
+
"(#{cmd.to_s(:after_modify_number)})",
|
126
|
+
"#{dice_total}[#{dice_list.join(',')}]#{Format.modifier(cmd.modify_number)}",
|
127
|
+
total,
|
128
|
+
result.text
|
129
|
+
].compact
|
130
|
+
|
131
|
+
result.text = sequence.join(" > ")
|
132
|
+
result
|
88
133
|
end
|
89
134
|
|
90
135
|
# 異形表
|
@@ -614,16 +659,6 @@ module BCDice
|
|
614
659
|
),
|
615
660
|
}.freeze
|
616
661
|
|
617
|
-
# ランダム指定特技表
|
618
|
-
RANDOM_SKILL_TABLE = [
|
619
|
-
['器術', ['絡繰術', '火術', '水術', '針術', '仕込み', '衣装術', '縄術', '登術', '拷問術', '壊器術', '掘削術']],
|
620
|
-
['体術', ['騎乗術', '砲術', '手裏剣術', '手練', '身体操術', '歩法', '走法', '飛術', '骨法術', '刀術', '怪力']],
|
621
|
-
['忍術', ['生存術', '潜伏術', '遁走術', '盗聴術', '腹話術', '隠形術', '変装術', '香術', '分身の術', '隠蔽術', '第六感']],
|
622
|
-
['謀術', ['医術', '毒術', '罠術', '調査術', '詐術', '対人術', '遊芸', '九ノ一の術', '傀儡の術', '流言の術', '経済力']],
|
623
|
-
['戦術', ['兵糧術', '鳥獣術', '野戦術', '地の利', '意気', '用兵術', '記憶術', '見敵術', '暗号術', '伝達術', '人脈']],
|
624
|
-
['妖術', ['異形化', '召喚術', '死霊術', '結界術', '封術', '言霊術', '幻術', '瞳術', '千里眼の術', '憑依術', '呪術']],
|
625
|
-
].freeze
|
626
|
-
|
627
662
|
# 異形表
|
628
663
|
METAMORPHOSE_TABLE = [
|
629
664
|
'1D6を振り、「妖魔忍法表A」で、ランダムに忍法の種類を決定する。妖魔化している間、その妖魔忍法を修得しているものとして扱う。この異形は、違う種類の妖魔忍法である限り、違う異形として扱う。',
|
@@ -674,7 +709,7 @@ module BCDice
|
|
674
709
|
}
|
675
710
|
].freeze
|
676
711
|
|
677
|
-
register_prefix(
|
712
|
+
register_prefix('MT', RTT.prefixes, TABLES.keys)
|
678
713
|
end
|
679
714
|
end
|
680
715
|
end
|
@@ -24,7 +24,7 @@ module BCDice
|
|
24
24
|
NORBLE 貴族趣味/MARCHEN メルヒェン/COLONIAL コロニアル/
|
25
25
|
SHELF 本棚のある場所/LITTLE 小さな妹の部屋/
|
26
26
|
ELDER 素敵なお姉さまの部屋/ATERIEL アトリエ/OPEN 集まれる場所/
|
27
|
-
HAUNTED SIMPLE 侘び住まい
|
27
|
+
HAUNTED 精神的瑕疵物件/SIMPLE 侘び住まい
|
28
28
|
・いろいろな場所
|
29
29
|
LARGE 広い場所/CORRIDOR 廊下/STAIRS 階段/
|
30
30
|
COSY 居心地のいい場所/TERRACE テラス・ベランダ/
|
@@ -33,10 +33,10 @@ module BCDice
|
|
33
33
|
RUIN 廃屋/SHORE 水のほとり
|
34
34
|
MESSAGETEXT
|
35
35
|
|
36
|
-
register_prefix(
|
36
|
+
register_prefix("SPRING", "SUMMER", "AUTUMN", "WINTER", "MORNING", "NOON", "AFTERNOON", "TWILIGHT", "NIGHT", "MIDNIGHT", "NORBLE", "MARCHEN", "COLONIAL", "SHELF", "LITTLE", "ELDER", "ATERIEL", "OPEN", "HAUNTED", "SIMPLE", "LARGE", "CORRIDOR", "STAIRS", "COSY", "TERRACE", "GARRET", "KITCHEN", "BATH", "REST", "CELLER", "LUMBER", "GARDEN", "WASTED", "RUIN", "SHORE")
|
37
37
|
|
38
38
|
def eval_game_system_specific_command(command)
|
39
|
-
info = EVENT_TABLES[command
|
39
|
+
info = self.class::EVENT_TABLES[command]
|
40
40
|
|
41
41
|
return nil if info.nil?
|
42
42
|
|
@@ -25,14 +25,14 @@ module BCDice
|
|
25
25
|
◆砲撃判定+ダメージチェック (BOMn/Dx/y@m) n:目標値(省略時:7)
|
26
26
|
x:ダメージ左側の値、y:ダメージ右側の値
|
27
27
|
m:《弾道学》(省略可)上:8、下:2、左:4、右:6
|
28
|
-
例) BOM/D/4 BOM9/D19@4
|
28
|
+
例) BOM/D/4 BOM9/D19/2@4
|
29
29
|
◆《回避運動》 (AVOn@mXX) n:目標値(省略時:7)
|
30
30
|
m:回避方向。上:8、下:2、左:4、右:6、XX:ダメージチェック結果
|
31
31
|
例)
|
32
32
|
AVO9@8[縦1,横4],[縦2,横6],[縦3,横8] AVO@2[縦6,横4],[縦2,横6]
|
33
33
|
MESSAGETEXT
|
34
34
|
|
35
|
-
register_prefix(
|
35
|
+
register_prefix('D', '2D6<=', 'SN', 'NV', 'AVO', 'BOM')
|
36
36
|
|
37
37
|
def initialize(command)
|
38
38
|
super(command)
|
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bcdice/dice_table/d66_range_table'
|
2
4
|
|
3
5
|
module BCDice
|
4
6
|
module GameSystem
|
5
7
|
class SteamPunkers < Base
|
6
|
-
ID = 'SteamPunkers'
|
7
|
-
NAME = 'スチームパンカーズ'
|
8
|
-
SORT_KEY = 'すちいむはんかあす'
|
8
|
+
ID = 'SteamPunkers'
|
9
|
+
NAME = 'スチームパンカーズ'
|
10
|
+
SORT_KEY = 'すちいむはんかあす'
|
9
11
|
|
10
|
-
HELP_MESSAGE = <<~MESSAGETEXT
|
12
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
11
13
|
・判定コマンド (SPn)
|
12
14
|
SP(判定ダイス数)>=(目標値)
|
13
15
|
SP4>=3のように入力し、5が出たらヒット数1,6が出たらヒット数2として成功数を数えます。
|
@@ -479,7 +481,7 @@ module BCDice
|
|
479
481
|
)
|
480
482
|
}.freeze
|
481
483
|
|
482
|
-
register_prefix(
|
484
|
+
register_prefix('SP', TABLES.keys)
|
483
485
|
end
|
484
486
|
end
|
485
487
|
end
|
@@ -67,7 +67,6 @@ module BCDice
|
|
67
67
|
super(command)
|
68
68
|
|
69
69
|
@sort_barabara_dice = true # バラバラロール(Bコマンド)でソート有
|
70
|
-
@enabled_d66 = true
|
71
70
|
@d66_sort_type = D66SortType::NO_SORT
|
72
71
|
end
|
73
72
|
|
@@ -127,15 +126,13 @@ module BCDice
|
|
127
126
|
|
128
127
|
# 正規表現の都合で先頭に ',' が残っているので取っておく
|
129
128
|
text = text[1..-1]
|
130
|
-
|
129
|
+
text.split(',').map do |rule|
|
131
130
|
v = rule.split('>').map(&:to_i)
|
132
131
|
{
|
133
132
|
from: v[0],
|
134
133
|
to: v[1],
|
135
134
|
}
|
136
135
|
end
|
137
|
-
|
138
|
-
rules
|
139
136
|
end
|
140
137
|
|
141
138
|
def roll_all_situation_b2_tables
|
@@ -850,7 +847,7 @@ module BCDice
|
|
850
847
|
),
|
851
848
|
}.freeze
|
852
849
|
|
853
|
-
register_prefix(
|
850
|
+
register_prefix('\d+SK\d?(,\d>\d)*', 'STB2', 'ALLS', 'PET', 'FT\d*', TABLES.keys)
|
854
851
|
end
|
855
852
|
end
|
856
853
|
end
|
@@ -37,7 +37,7 @@ module BCDice
|
|
37
37
|
・超未来の宇宙船内 INT
|
38
38
|
MESSAGETEXT
|
39
39
|
|
40
|
-
register_prefix(
|
40
|
+
register_prefix('(\d+)*DA.*\[(\d+),(\d+)(,(\d+))?\]', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT') # '(\d+)*DA.*\[.*\]'
|
41
41
|
|
42
42
|
def eval_game_system_specific_command(command) # ダイスロールコマンド
|
43
43
|
# 通常判定部分をgetJudgeResultコマンドに切り分け
|
@@ -104,7 +104,7 @@ module BCDice
|
|
104
104
|
|
105
105
|
def getJudgeResult(command)
|
106
106
|
case command
|
107
|
-
when /(\d+)*DA([\d
|
107
|
+
when /(\d+)*DA([\d+*\-]*\d)?\[(\d+),(\d+)(,(\d+))?\]/i
|
108
108
|
number = (Regexp.last_match(1) || 1).to_i
|
109
109
|
correction = (Regexp.last_match(2) || 0).to_i
|
110
110
|
single = (Regexp.last_match(3) || 4).to_i
|
@@ -21,13 +21,12 @@ module BCDice
|
|
21
21
|
・D66ダイスあり
|
22
22
|
INFO_MESSAGE_TEXT
|
23
23
|
|
24
|
-
register_prefix(
|
24
|
+
register_prefix('\d+SR')
|
25
25
|
|
26
26
|
def initialize(command)
|
27
27
|
super(command)
|
28
28
|
|
29
29
|
@sort_add_dice = true
|
30
|
-
@enabled_d66 = true
|
31
30
|
@d66_sort_type = D66SortType::NO_SORT
|
32
31
|
@round_type = RoundType::FLOOR
|
33
32
|
end
|
@@ -47,7 +46,7 @@ module BCDice
|
|
47
46
|
debug("checkRoll begin command", command)
|
48
47
|
|
49
48
|
result = ''
|
50
|
-
return result unless command =~ /^(\d+)SR([
|
49
|
+
return result unless command =~ /^(\d+)SR([+\-]?\d+)?(>=(\d+))?$/i
|
51
50
|
|
52
51
|
diceCount = Regexp.last_match(1).to_i
|
53
52
|
modify = Regexp.last_match(2).to_i
|
@@ -17,33 +17,18 @@ module BCDice
|
|
17
17
|
|
18
18
|
VOT, GUT, BAT, KEYT, DRT: (ボーカル、ギター、ベース、キーボード、ドラム)トラブル表
|
19
19
|
EMO: 感情表
|
20
|
-
|
20
|
+
ATn, RTTn: 特技表(n=分野。空:ランダム 1:主義 2:身体 3:モチーフ 4:エモーション 5:行動 6:逆境)
|
21
|
+
RCT: 分野ランダム表
|
21
22
|
SCENE, MACHI, GAKKO, BAND: (汎用、街角、学校、バンド)シーン表 接近シーンで使用
|
22
23
|
TENKAI: シーン展開表 奔走シーン 練習シーンで使用
|
23
24
|
|
24
|
-
|
25
|
+
D66入れ替えあり
|
25
26
|
INFO_MESSAGE_TEXT
|
26
27
|
|
27
|
-
register_prefix([
|
28
|
-
'VOT',
|
29
|
-
'GUT',
|
30
|
-
'BAT',
|
31
|
-
'KEYT',
|
32
|
-
'DRT',
|
33
|
-
'EMO',
|
34
|
-
'AT[1-6]?',
|
35
|
-
'SCENE',
|
36
|
-
'MACHI',
|
37
|
-
'GAKKO',
|
38
|
-
'BAND',
|
39
|
-
'TENKAI'
|
40
|
-
])
|
41
|
-
|
42
28
|
def initialize(command)
|
43
29
|
super(command)
|
44
30
|
|
45
31
|
@sort_add_dice = true
|
46
|
-
@enabled_d66 = true
|
47
32
|
@d66_sort_type = D66SortType::ASC
|
48
33
|
end
|
49
34
|
|
@@ -51,266 +36,52 @@ module BCDice
|
|
51
36
|
return '' if target == '?'
|
52
37
|
return '' unless cmp_op == :>=
|
53
38
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
39
|
+
result =
|
40
|
+
if dice_total <= 2
|
41
|
+
translate("StratoShout.fumble")
|
42
|
+
elsif dice_total >= 12
|
43
|
+
translate("StratoShout.critical")
|
44
|
+
elsif total >= target
|
45
|
+
translate("success")
|
46
|
+
else
|
47
|
+
translate("failure")
|
48
|
+
end
|
49
|
+
|
50
|
+
return " > #{result}"
|
63
51
|
end
|
64
52
|
|
65
53
|
def eval_game_system_specific_command(command)
|
66
|
-
|
67
|
-
when 'VOT'
|
68
|
-
title = 'ボーカルトラブル表(P167)'
|
69
|
-
table = [
|
70
|
-
"歌詞を忘れてしまった! 何も言葉が出てこない……",
|
71
|
-
"マイクのコードに足を引っ掛けてしまった! 危ない!",
|
72
|
-
"マイクスタンドが倒れてしまった!",
|
73
|
-
"音程がズレているけど、なかなか直せない!",
|
74
|
-
"リズムがズレてきている気がする……修正できない!",
|
75
|
-
"喉が枯れそうだ。まずい、セーブしないと……!"
|
76
|
-
]
|
77
|
-
return textFrom1D6Table(title, table)
|
78
|
-
when 'GUT'
|
79
|
-
title = 'ギタートラブル表(P169)'
|
80
|
-
table = [
|
81
|
-
"やべっ、コードを間違えた! どうにかごまかそう……",
|
82
|
-
"ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!",
|
83
|
-
"ギターの音にノイズが乗ってるような……直ってくれ……!",
|
84
|
-
"あれ? 今曲のどの辺りだっけ……?",
|
85
|
-
"弦が切れてしまった! なんて不吉な……。",
|
86
|
-
"ピックが飛んでった! 指で弾くしかない……!"
|
87
|
-
]
|
88
|
-
return textFrom1D6Table(title, table)
|
89
|
-
when 'BAT'
|
90
|
-
title = 'ベーストラブル表(P171)'
|
91
|
-
table = [
|
92
|
-
"やべっ、コードを間違えた! どうにかごまかそう……",
|
93
|
-
"ゲッ、シールド(信号を伝えるコード)が抜けちゃった! 音が出ない!",
|
94
|
-
"ベースの音にノイズが乗ってるような……直ってくれ……!",
|
95
|
-
"あれ? 今曲のどの辺りだっけ……?",
|
96
|
-
"指先の感覚が麻痺してきた。動かない……!",
|
97
|
-
"テンポが速くなってきているけど、止まらない!"
|
98
|
-
]
|
99
|
-
return textFrom1D6Table(title, table)
|
100
|
-
when 'KEYT'
|
101
|
-
title = 'キーボードトラブル表(P173)'
|
102
|
-
table = [
|
103
|
-
"指先の感覚が麻痺してきた。動かない……!",
|
104
|
-
"音量のスライドに触れてしまった! 爆音が出てしまう!",
|
105
|
-
"あれ? 今曲のどの辺りだっけ……?",
|
106
|
-
"音の出ない鍵がある……故障!?",
|
107
|
-
"音色を間違えた! 元の音色は何番だっけ……!?",
|
108
|
-
"手を置く位置が一つズレてる……! 不協和音だ!"
|
109
|
-
]
|
110
|
-
return textFrom1D6Table(title, table)
|
111
|
-
when 'DRT'
|
112
|
-
title = 'ドラムトラブル表(P175)'
|
113
|
-
table = [
|
114
|
-
"手がこんがらがってきた! 軌道修正しないと……!",
|
115
|
-
"あれ? 今曲のどの辺りだっけ……?",
|
116
|
-
"ハイハットが開かない! ネジが緩んでるのか……!?",
|
117
|
-
"アドリブ入れたけど、次のフレーズが思いつかない……!",
|
118
|
-
"テンポが速くなってきているけど、止まらない!",
|
119
|
-
"スティックが飛んでった! 代わりはどこだっけ……。"
|
120
|
-
]
|
121
|
-
return textFrom1D6Table(title, table)
|
122
|
-
when 'EMO'
|
123
|
-
title = '感情表(P183)'
|
124
|
-
table = [
|
125
|
-
"共感/不信",
|
126
|
-
"友情/嫉妬",
|
127
|
-
"好敵手/苛立ち",
|
128
|
-
"不可欠/敬遠",
|
129
|
-
"尊敬/劣等感",
|
130
|
-
"愛情/負い目"
|
131
|
-
]
|
132
|
-
return textFrom1D6Table(title, table)
|
133
|
-
when /^AT([1-6]?)$/
|
134
|
-
value = Regexp.last_match(1).to_i
|
135
|
-
return getSkillList(value)
|
136
|
-
when "SCENE"
|
137
|
-
title = "シーン表(P199)"
|
138
|
-
table = [
|
139
|
-
"一人の時間。ふと過去の記憶を辿る。そういえば以前、あんなことがあったような……。",
|
140
|
-
"どこからか、言い争っているような声が聞こえてきた。喧嘩だろうか?",
|
141
|
-
"夜の帳が下り、辺りは静寂に包まれている。あいつは今、何をしているだろう。",
|
142
|
-
"仲間と一緒にご飯を食べていると、会話は自然とあの話に……。",
|
143
|
-
"笑い声に満ちた空間。ずっとこんな時間が続けばいいのに。",
|
144
|
-
"日の当たる場所。毎日の忙しさを離れ、穏やかな時間が過ぎていく。",
|
145
|
-
"スマートフォンに着信の通知がついていた。電話? メッセージ? 誰からだろう。",
|
146
|
-
"突然、あなたのもとに来訪者が現れた。何か伝えたいことがあるようだ。",
|
147
|
-
"誰かの忘れ物を見つけた。届けてあげたほうがいいだろうか。",
|
148
|
-
"誰かが噂話をしている。聞くつもりはなくとも、それは勝手に耳に入ってきた。",
|
149
|
-
"なんだか悪寒がする。なにか良くないことが起きているような……。"
|
150
|
-
]
|
151
|
-
return textFrom2D6Table(title, table)
|
152
|
-
when "MACHI"
|
153
|
-
title = "街角シーン表(P199)"
|
154
|
-
table = [
|
155
|
-
"入ったことのない場所に、初めて足を踏み入れた。少し緊張してしまうな。",
|
156
|
-
"アルバイト先。バイト仲間から、意外なことを教えられた。",
|
157
|
-
"会話もままならないような、大音量の音楽。その場にいるだけで気分が高揚する。",
|
158
|
-
"横断歩道で信号を待っていると、見知った人物の姿を見つけた。",
|
159
|
-
"突然の雨に、慌てて足を早める人々。自分も早く帰らなければ。",
|
160
|
-
"何気なく立ち寄った店の中で、知人とばったり。こんなところで何を?",
|
161
|
-
"練習を終えて立ち寄った飲食店で、意外な人物を発見。少し様子を見てみよう。",
|
162
|
-
"あちこちから子どもたちのはしゃぎ声が聞こえてくる。自分にもあんな頃があったんだろうか。",
|
163
|
-
"音のない、静寂の世界。たまには音から離れるのもいいものだ。",
|
164
|
-
"電車の中。つり革に掴まりながら揺られていると、見覚えのある乗客を見つけた。",
|
165
|
-
"カラオケの廊下を歩いていると、どこからか聞き覚えのある声が……?"
|
166
|
-
]
|
167
|
-
return textFrom2D6Table(title, table)
|
168
|
-
when "GAKKO"
|
169
|
-
title = "学校シーン表(P199)"
|
170
|
-
table = [
|
171
|
-
"校舎裏、何かを話す二人組を見かけた。一体何を話しているのだろう……?",
|
172
|
-
"とある部室。部員たちは集中して部活に励んでいるようだが……。",
|
173
|
-
"先生から、ターゲットについて尋ねられた。なにか気になることがあるようだ。",
|
174
|
-
"木々の隙間から朝日差し込む通学路。ある者は忙しそうに、またある者は楽しそうに校舎へ向かっている。",
|
175
|
-
"休み時間。教室のあちこちで飛び交う、他愛のない噂話。その中から、気になる会話が聞こえてきた。",
|
176
|
-
"何もかもが茜色に染まる夕暮れ時。生徒たちは学業から解放され、自由に残り少ない一日を過ごしている。",
|
177
|
-
"移動教室だ。渡り廊下から下を見ると、見覚えのある人物がいた。",
|
178
|
-
"昼休み。生徒は思い思いの場所で昼食を取っている。さて、自分はどこで食べようか。",
|
179
|
-
"先生から頼まれごとを引き受けてしまった。さっさと済ませてしまおう。",
|
180
|
-
"そろそろ学校が閉まる時間だ。明かりのついている教室はもうほとんどない。",
|
181
|
-
"スピーカーから校内放送が聞こえた。誰かを呼んでいるようだが……?"
|
182
|
-
]
|
183
|
-
return textFrom2D6Table(title, table)
|
184
|
-
when "BAND"
|
185
|
-
title = "バンドシーン表(P199)"
|
186
|
-
table = [
|
187
|
-
"音楽専門のニュースサイトをチェック。大小様々な記事が投稿されている。",
|
188
|
-
"意外なところで練習している人物を発見。少し声をかけてみようか。",
|
189
|
-
"ちょっとした壁に衝突。誰かに相談した方がいいかも……。",
|
190
|
-
"ライブを見るためライブハウスへとやってきた。どんなステージになるのだろう。",
|
191
|
-
"打ち合わせに行ったライブハウス。来ているのは自分たちだけじゃないようだ。",
|
192
|
-
"練習が終わった帰り道。あいつも練習が終わった頃だろうか。",
|
193
|
-
"どこからか楽器の音が聞こえてくる。誰か演奏しているのだろうか。",
|
194
|
-
"熱気のこもる部屋を出て、スタジオの待合室でクールダウン。ソファに座っているのは……。",
|
195
|
-
"訪れた楽器店で、見知った人物を発見。何をしに来ているのだろう。",
|
196
|
-
"最新のヒット曲が流れるCDショップの店内。次はどんな曲をやろうか……。",
|
197
|
-
"何気なく鳴らした音から、突発セッションに発展。軽く実力を見せつけてやろう。"
|
198
|
-
]
|
199
|
-
return textFrom2D6Table(title, table)
|
200
|
-
when 'TENKAI'
|
201
|
-
title = 'シーン展開表(P201)'
|
202
|
-
table = [
|
203
|
-
[11, "絶望: ステップを更に大きくする、あるいはシーンプレイヤーを破滅に追い込むような状況に陥ります。【ディスコード】+2点。"],
|
204
|
-
[12, "崩壊: ステップによってシーンプレイヤーの大切なものが崩壊する、あるいは崩壊目前に追い込まれます。【ディスコード】+2点。"],
|
205
|
-
[13, "断絶: シーンプレイヤーはステップによって何かと絶縁状態になります。【ディスコード】+2点。"],
|
206
|
-
[14, "恐怖: ステップに恐怖するような出来事に遭遇します。【ディスコード】+2点。"],
|
207
|
-
[15, "誤解: シーンプレイヤーがステップに関するなんらかの誤解を受けます。【ディスコード】+2点。"],
|
208
|
-
[16, "試練: シーンプレイヤーはステップに関連した試練に直面します。【ディスコード】+2点。"],
|
209
|
-
[22, "悪心: シーンプレイヤーの心に魔が差し、ステップを不合理に解決しようとします。【ディスコード】+1点。"],
|
210
|
-
[23, "束縛: ステップに関わるなんらかに束縛され、自由な行動ができなくなります。【ディスコード】+1点。"],
|
211
|
-
[24, "凶兆: ステップについて、悪いことが起きそうな前触れが訪れます。【ディスコード】+1点。"],
|
212
|
-
[25, "加速: シーンプレイヤーはステップの解決に追われます。【ディスコード】+1点。"],
|
213
|
-
[26, "日常: シーンプレイヤーはのんびりとした日常を送ります。【コンディション】+1点。"],
|
214
|
-
[33, "休息: ステップを忘れられるような、穏やかなひとときを過ごします。【コンディション】+1点。"],
|
215
|
-
[34, "吉兆: ステップについて、いいことが起きそうな前触れが訪れます。【コンディション】+1点。"],
|
216
|
-
[35, "発見: シーンプレイヤーはステップについて何かを発見します。【コンディション】+1点。"],
|
217
|
-
[36, "希望: シーンプレイヤーの中に、ステップに対して前向きに取り組む意思が生まれます。【コンディション】+1点。"],
|
218
|
-
[44, "成長: ステップを通して、シーンプレイヤーが成長します。【コンディション】+2点。"],
|
219
|
-
[45, "愛情: ステップを通して、シーンプレイヤーが愛情に触れます。【コンディション】+2点。"],
|
220
|
-
[46, "朗報: ステップに関する良い知らせが舞い込みます。【コンディション】+2点。"],
|
221
|
-
[55, "好転: ステップが良い方向に向かうような事件が起きます。【コンディション】+3点。"],
|
222
|
-
[56, "直感: ステップを解決させる決定的な閃きを得ます。【コンディション】+3点。"],
|
223
|
-
[66, "奇跡: ステップに関して、奇跡的な幸運が舞い込みます。【コンディション】+3点。"],
|
224
|
-
]
|
225
|
-
return textFromD66Table(title, table)
|
226
|
-
# when 'TEMP'
|
227
|
-
# title = '表(P)'
|
228
|
-
# table = [
|
229
|
-
# [11, ""],
|
230
|
-
# [12, ""],
|
231
|
-
# [13, ""],
|
232
|
-
# [14, ""],
|
233
|
-
# [15, ""],
|
234
|
-
# [16, ""],
|
235
|
-
# [22, ""],
|
236
|
-
# [23, ""],
|
237
|
-
# [24, ""],
|
238
|
-
# [25, ""],
|
239
|
-
# [26, ""],
|
240
|
-
# [33, ""],
|
241
|
-
# [34, ""],
|
242
|
-
# [35, ""],
|
243
|
-
# [36, ""],
|
244
|
-
# [44, ""],
|
245
|
-
# [45, ""],
|
246
|
-
# [46, ""],
|
247
|
-
# [55, ""],
|
248
|
-
# [56, ""],
|
249
|
-
# [66, ""],
|
250
|
-
# ]
|
251
|
-
# return textFromD66Table(title, table)
|
252
|
-
end
|
253
|
-
|
254
|
-
return nil
|
54
|
+
roll_tables(command, self.class::TABLES) || self.class::RTT.roll_command(@randomizer, command)
|
255
55
|
end
|
256
56
|
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
57
|
+
class << self
|
58
|
+
private
|
59
|
+
|
60
|
+
def translate_tables(locale)
|
61
|
+
{
|
62
|
+
"VOT" => DiceTable::Table.from_i18n("StratoShout.table.VOT", locale),
|
63
|
+
"GUT" => DiceTable::Table.from_i18n("StratoShout.table.GUT", locale),
|
64
|
+
"BAT" => DiceTable::Table.from_i18n("StratoShout.table.BAT", locale),
|
65
|
+
"KEYT" => DiceTable::Table.from_i18n("StratoShout.table.KEYT", locale),
|
66
|
+
"DRT" => DiceTable::Table.from_i18n("StratoShout.table.DRT", locale),
|
67
|
+
"EMO" => DiceTable::Table.from_i18n("StratoShout.table.EMO", locale),
|
68
|
+
"SCENE" => DiceTable::Table.from_i18n("StratoShout.table.SCENE", locale),
|
69
|
+
"MACHI" => DiceTable::Table.from_i18n("StratoShout.table.MACHI", locale),
|
70
|
+
"GAKKO" => DiceTable::Table.from_i18n("StratoShout.table.GAKKO", locale),
|
71
|
+
"BAND" => DiceTable::Table.from_i18n("StratoShout.table.BAND", locale),
|
72
|
+
"TENKAI" => DiceTable::D66Table.from_i18n("StratoShout.table.TENKAI", locale),
|
73
|
+
}
|
273
74
|
end
|
274
75
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
def textFrom2D6Table(title, table)
|
279
|
-
text, number = get_table_by_2d6(table)
|
280
|
-
|
281
|
-
return "#{title} > [#{number}] > #{text}"
|
282
|
-
end
|
283
|
-
|
284
|
-
def getSkillList(field = 0)
|
285
|
-
title = '特技リスト'
|
286
|
-
table = [
|
287
|
-
['主義', ['過去', '恋人', '仲間', '家族', '自分', '今', '理由', '夢', '世界', '幸せ', '未来']],
|
288
|
-
['身体', ['頭', '目', '耳', '口', '胸', '心臓', '血', '背中', '手', 'XXX', '足']],
|
289
|
-
['モチーフ', ['闇', '武器', '魔法', '獣', '町', '歌', '食べ物', '花', '空', '季節', '光']],
|
290
|
-
['エモーション', ['悲しい', '怒り', '不安', '恐怖', '驚き', '高鳴り', '情熱', '確信', '期待', '楽しい', '喜び']],
|
291
|
-
['行動', ['泣く', '忘れる', '消す', '壊す', '叫ぶ', '歌う', '踊る', '走る', '鳴らす', '呼ぶ', '笑う']],
|
292
|
-
['逆境', ['死', '喪失', '暴力', '孤独', '後悔', '実力', '退屈', '権力', '富', '恋愛', '生']],
|
293
|
-
]
|
294
|
-
|
295
|
-
number1 = 0
|
296
|
-
if field == 0
|
297
|
-
table, number1 = get_table_by_1d6(table)
|
298
|
-
else
|
299
|
-
table = table[field - 1]
|
76
|
+
def translate_rtt(locale)
|
77
|
+
DiceTable::SaiFicSkillTable.from_i18n("StratoShout.RTT", locale, rtt: 'AT', rttn: ['AT1', 'AT2', 'AT3', 'AT4', 'AT5', 'AT6'])
|
300
78
|
end
|
79
|
+
end
|
301
80
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
text = title
|
306
|
-
if field == 0
|
307
|
-
text += " > [#{number1},#{number2}]"
|
308
|
-
else
|
309
|
-
text += "(#{fieldName}分野) > [#{number2}]"
|
310
|
-
end
|
81
|
+
TABLES = translate_tables(:ja_jp)
|
82
|
+
RTT = translate_rtt(:ja_jp)
|
311
83
|
|
312
|
-
|
313
|
-
end
|
84
|
+
register_prefix(TABLES.keys, RTT.prefixes)
|
314
85
|
end
|
315
86
|
end
|
316
87
|
end
|