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,240 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Cthulhu_Korean < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'Cthulhu:Korean'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = '크툴루'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = '国際化:Korean:크툴루의부름7'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
c=크리티컬치 / f=펌블치 / s=스페셜
|
18
|
+
|
19
|
+
1d100<=n c・f・s 모두 오프(단순하게 수치만을 뽑아낼 때 사용)
|
20
|
+
|
21
|
+
・cfs이 붙는 판정의 커맨드
|
22
|
+
|
23
|
+
CC 1d100 판정을 행함 c=1、f=100
|
24
|
+
CCB 위와 동일、c=5、f=96
|
25
|
+
|
26
|
+
예:CC<=80 (기능치 80로 행휘판정. 1%룰으로 cf적용)
|
27
|
+
예:CCB<=55 (기능치 55로 행휘판정. 5%룰으로 cf적용)
|
28
|
+
|
29
|
+
・경우의 수 판정에 대해서
|
30
|
+
|
31
|
+
CBR(x,y) c=1、f=100
|
32
|
+
CBRB(x,y) c=5、f=96
|
33
|
+
|
34
|
+
・저항 판정에 대해서
|
35
|
+
RES(x-y) c=1、f=100
|
36
|
+
RESB(x-y) c=5、f=96
|
37
|
+
|
38
|
+
※고장 넘버 판정
|
39
|
+
|
40
|
+
・CC(x) c=1、f=100
|
41
|
+
x=고장 넘버. 주사위 눈x이상이 나온 후에, 펌블이 동시에 발생했을 경우. 모두 출력한다. (텍스트 「펌블&고장」)
|
42
|
+
펌블이 아닌 경우, 성공・실패에 관련되지 않고 「고장」만을 출력한다. (성공・실패를 출력하지 않고 덧쓰기한 것을 출력하는 형태)
|
43
|
+
|
44
|
+
・CCB(x) c=5、f=96
|
45
|
+
위와 동일
|
46
|
+
INFO_MESSAGE_TEXT
|
47
|
+
|
48
|
+
register_prefix(['CC(B)?\(\d+\)', 'CC(B)?.*', 'RES(B)?.*', 'CBR(B)?\(\d+,\d+\)'])
|
49
|
+
|
50
|
+
def initialize(command)
|
51
|
+
super(command)
|
52
|
+
@special_percentage = 20
|
53
|
+
@critical_percentage = 1
|
54
|
+
@fumble_percentage = 1
|
55
|
+
end
|
56
|
+
|
57
|
+
def eval_game_system_specific_command(command)
|
58
|
+
case command
|
59
|
+
when /CCB/i
|
60
|
+
# 5%
|
61
|
+
@critical_percentage = 5
|
62
|
+
@fumble_percentage = 5
|
63
|
+
return getCheckResult(command)
|
64
|
+
when /CC/i
|
65
|
+
# 1%
|
66
|
+
@critical_percentage = 1
|
67
|
+
@fumble_percentage = 1
|
68
|
+
return getCheckResult(command)
|
69
|
+
when /RESB/i
|
70
|
+
# 5%
|
71
|
+
@critical_percentage = 5
|
72
|
+
@fumble_percentage = 5
|
73
|
+
return getRegistResult(command)
|
74
|
+
when /CBRB/i
|
75
|
+
# 5%
|
76
|
+
@critical_percentage = 5
|
77
|
+
@fumble_percentage = 5
|
78
|
+
return getCombineRoll(command)
|
79
|
+
when /RES/i
|
80
|
+
# 1%
|
81
|
+
@critical_percentage = 1
|
82
|
+
@fumble_percentage = 1
|
83
|
+
return getRegistResult(command)
|
84
|
+
when /CBR/i
|
85
|
+
# 1%
|
86
|
+
@critical_percentage = 1
|
87
|
+
@fumble_percentage = 1
|
88
|
+
return getCombineRoll(command)
|
89
|
+
end
|
90
|
+
|
91
|
+
return nil
|
92
|
+
end
|
93
|
+
|
94
|
+
def getCheckResult(command)
|
95
|
+
broken_num = 0
|
96
|
+
diff = 0
|
97
|
+
|
98
|
+
if (m = /CC(B)?(\d+)<=(\d+)/i.match(command))
|
99
|
+
# /\(\d+\)/의()는 pattern-killer로 해석되는 듯 함
|
100
|
+
broken_num = m[2].to_i
|
101
|
+
diff = m[3].to_i
|
102
|
+
elsif (m = /CC(B)?<=(\d+)/i.match(command))
|
103
|
+
diff = m[2].to_i
|
104
|
+
end
|
105
|
+
|
106
|
+
output = ""
|
107
|
+
|
108
|
+
if diff > 0
|
109
|
+
output = "(1D100<=#{diff})"
|
110
|
+
|
111
|
+
if broken_num > 0
|
112
|
+
output += " 고장넘버[#{broken_num}]"
|
113
|
+
end
|
114
|
+
|
115
|
+
total_n = @randomizer.roll_once(100)
|
116
|
+
|
117
|
+
output += " > #{total_n}"
|
118
|
+
output += " > #{getCheckResultText(total_n, diff, broken_num)}"
|
119
|
+
else
|
120
|
+
# 1D100단순 치환 취급
|
121
|
+
# 필요없을지도
|
122
|
+
total_n = @randomizer.roll_once(100)
|
123
|
+
output = "(1D100) > #{total_n}"
|
124
|
+
end
|
125
|
+
|
126
|
+
return output
|
127
|
+
end
|
128
|
+
|
129
|
+
def getCheckResultText(total_n, diff, broken_num = 0)
|
130
|
+
result = ""
|
131
|
+
diff_special = 0
|
132
|
+
fumble = false
|
133
|
+
|
134
|
+
if @special_percentage > 0
|
135
|
+
# special의 값설정이 없는 경우 크리티컬/펌블 판정도 없다
|
136
|
+
diff_special = (diff * @special_percentage / 100).floor
|
137
|
+
if diff_special < 1
|
138
|
+
diff_special = 1
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
if (total_n <= diff) && (total_n < 100)
|
143
|
+
result = "성공"
|
144
|
+
|
145
|
+
if diff_special > 0
|
146
|
+
if total_n <= @critical_percentage
|
147
|
+
if total_n <= diff_special
|
148
|
+
result = "크리티컬/스페셜"
|
149
|
+
else
|
150
|
+
result = "크리티컬"
|
151
|
+
end
|
152
|
+
else
|
153
|
+
if total_n <= diff_special
|
154
|
+
result = "스페셜"
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
else
|
159
|
+
result = "실패"
|
160
|
+
|
161
|
+
if diff_special > 0
|
162
|
+
if (total_n >= (101 - @fumble_percentage)) && (diff < 100)
|
163
|
+
result = "펌블"
|
164
|
+
fumble = true
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
if broken_num > 0
|
170
|
+
if total_n >= broken_num
|
171
|
+
if fumble
|
172
|
+
result += "/고장"
|
173
|
+
else
|
174
|
+
result = "고장"
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
return result
|
180
|
+
end
|
181
|
+
|
182
|
+
def getRegistResult(command)
|
183
|
+
m = /RES(B)?([-\d]+)/i.match(command)
|
184
|
+
unless m
|
185
|
+
return "1"
|
186
|
+
end
|
187
|
+
|
188
|
+
value = m[2].to_i
|
189
|
+
target = value * 5 + 50
|
190
|
+
|
191
|
+
if target < 5
|
192
|
+
return "(1d100<=#{target}) > 자동실패"
|
193
|
+
end
|
194
|
+
|
195
|
+
if target > 95
|
196
|
+
return "(1d100<=#{target}) > 자동성공"
|
197
|
+
end
|
198
|
+
|
199
|
+
# 통상판정
|
200
|
+
total_n = @randomizer.roll_once(100)
|
201
|
+
result = getCheckResultText(total_n, target)
|
202
|
+
|
203
|
+
return "(1d100<=#{target}) > #{total_n} > #{result}"
|
204
|
+
end
|
205
|
+
|
206
|
+
def getCombineRoll(command)
|
207
|
+
m = /CBR(B)?\((\d+),(\d+)\)/i.match(command)
|
208
|
+
unless m
|
209
|
+
return "1"
|
210
|
+
end
|
211
|
+
|
212
|
+
diff_1 = m[2].to_i
|
213
|
+
diff_2 = m[3].to_i
|
214
|
+
|
215
|
+
total = @randomizer.roll_once(100)
|
216
|
+
|
217
|
+
result_1 = getCheckResultText(total, diff_1)
|
218
|
+
result_2 = getCheckResultText(total, diff_2)
|
219
|
+
|
220
|
+
successList = ["크리티컬/스페셜", "크리티컬", "스페셜", "성공"]
|
221
|
+
|
222
|
+
succesCount = 0
|
223
|
+
succesCount += 1 if successList.include?(result_1)
|
224
|
+
succesCount += 1 if successList.include?(result_2)
|
225
|
+
debug("succesCount", succesCount)
|
226
|
+
|
227
|
+
rank =
|
228
|
+
if succesCount >= 2
|
229
|
+
"성공"
|
230
|
+
elsif succesCount == 1
|
231
|
+
"부분적 성공"
|
232
|
+
else
|
233
|
+
"실패"
|
234
|
+
end
|
235
|
+
|
236
|
+
return "(1d100<=#{diff_1},#{diff_2}) > #{total}[#{result_1},#{result_2}] > #{rank}"
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|
@@ -0,0 +1,207 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bcdice/normalize'
|
4
|
+
require 'bcdice/format'
|
5
|
+
|
6
|
+
module BCDice
|
7
|
+
module GameSystem
|
8
|
+
class DarkBlaze < Base
|
9
|
+
# ゲームシステムの識別子
|
10
|
+
ID = 'DarkBlaze'
|
11
|
+
|
12
|
+
# ゲームシステム名
|
13
|
+
NAME = 'ダークブレイズ'
|
14
|
+
|
15
|
+
# ゲームシステム名の読みがな
|
16
|
+
SORT_KEY = 'たあくふれいす'
|
17
|
+
|
18
|
+
# ダイスボットの使い方
|
19
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
20
|
+
・行為判定 (DBxy#n)
|
21
|
+
行為判定専用のコマンドです。
|
22
|
+
"DB(能力)(技能)#(修正)"でロールします。Rコマンド(3R6+n[x,y]>=m mは難易度)に読替をします。
|
23
|
+
クリティカルとファンブルも自動で処理されます。
|
24
|
+
DB@x@y#m と DBx,y#m にも対応しました。
|
25
|
+
例)DB33 DB32#-1 DB@3@1#1 DB3,2 DB23#1>=4 3R6+1[3,3]>=4
|
26
|
+
|
27
|
+
・掘り出し袋表 (BTx)
|
28
|
+
"BT(ダイス数)"で掘り出し袋表を自動で振り、結果を表示します。
|
29
|
+
例)BT1 BT2 BT[1...3]
|
30
|
+
INFO_MESSAGE_TEXT
|
31
|
+
|
32
|
+
register_prefix(['DB.*', 'BT.*', '3R6.*'])
|
33
|
+
|
34
|
+
def replace_text(string)
|
35
|
+
return string unless string =~ /DB/i
|
36
|
+
|
37
|
+
string = string.gsub(/DB(\d),(\d)/) { "DB#{Regexp.last_match(1)}#{Regexp.last_match(2)}" }
|
38
|
+
string = string.gsub(/DB\@(\d)\@(\d)/) { "DB#{Regexp.last_match(1)}#{Regexp.last_match(2)}" }
|
39
|
+
string = string.gsub(/DB(\d)(\d)(#([\d][\+\-\d]*))/) { "3R6+#{Regexp.last_match(4)}[#{Regexp.last_match(1)},#{Regexp.last_match(2)}]" }
|
40
|
+
string = string.gsub(/DB(\d)(\d)(#([\+\-\d]*))/) { "3R6#{Regexp.last_match(4)}[#{Regexp.last_match(1)},#{Regexp.last_match(2)}]" }
|
41
|
+
string = string.gsub(/DB(\d)(\d)/) { "3R6[#{Regexp.last_match(1)},#{Regexp.last_match(2)}]" }
|
42
|
+
|
43
|
+
return string
|
44
|
+
end
|
45
|
+
|
46
|
+
# ゲーム別成功度判定(nD6)
|
47
|
+
def check_nD6(total, _dice_total, _dice_list, cmp_op, target)
|
48
|
+
if cmp_op != :>= || target == "?"
|
49
|
+
''
|
50
|
+
elsif total >= target
|
51
|
+
" > 成功"
|
52
|
+
else
|
53
|
+
" > 失敗"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_roll(string)
|
58
|
+
string = replace_text(string)
|
59
|
+
return nil unless (m = /(^|\s)S?(3[rR]6([\+\-\d]+)?(\[(\d+),(\d+)\])(([>=]+)(\d+))?)(\s|$)/i.match(string))
|
60
|
+
|
61
|
+
string = m[2]
|
62
|
+
mod = 0
|
63
|
+
abl = 1
|
64
|
+
skl = 1
|
65
|
+
signOfInequality = ""
|
66
|
+
diff = 0
|
67
|
+
|
68
|
+
mod = ArithmeticEvaluator.eval(m[3]) if m[3]
|
69
|
+
|
70
|
+
if m[4]
|
71
|
+
abl = m[5].to_i
|
72
|
+
skl = m[6].to_i
|
73
|
+
end
|
74
|
+
|
75
|
+
if m[7]
|
76
|
+
cmp_op = Normalize.comparison_operator(m[8])
|
77
|
+
signOfInequality = Format.comparison_operator(cmp_op)
|
78
|
+
diff = m[9].to_i
|
79
|
+
end
|
80
|
+
|
81
|
+
total, out_str, dice_list = get_dice(mod, abl, skl)
|
82
|
+
output = "(#{string}) > #{out_str}"
|
83
|
+
|
84
|
+
if signOfInequality != "" # 成功度判定処理
|
85
|
+
dice_total = dice_list.inject(&:+)
|
86
|
+
cmp_op = Normalize.comparison_operator(signOfInequality)
|
87
|
+
output += check_result(total, dice_total, dice_list, 6, cmp_op, diff)
|
88
|
+
end
|
89
|
+
|
90
|
+
return output
|
91
|
+
end
|
92
|
+
|
93
|
+
def get_dice(mod, abl, skl)
|
94
|
+
total = 0
|
95
|
+
crit = 0
|
96
|
+
fumble = 0
|
97
|
+
dice_c = 3 + mod.abs
|
98
|
+
|
99
|
+
dice_arr = @randomizer.roll_barabara(dice_c, 6).sort
|
100
|
+
dice_str = dice_arr.join(",")
|
101
|
+
|
102
|
+
3.times do |i|
|
103
|
+
ch = dice_arr[i]
|
104
|
+
|
105
|
+
if mod < 0
|
106
|
+
ch = dice_arr[dice_c - i - 1]
|
107
|
+
end
|
108
|
+
|
109
|
+
total += 1 if ch <= abl
|
110
|
+
total += 1 if ch <= skl
|
111
|
+
crit += 1 if ch <= 2
|
112
|
+
fumble += 1 if ch >= 5
|
113
|
+
end
|
114
|
+
|
115
|
+
resultText = ""
|
116
|
+
|
117
|
+
if crit >= 3
|
118
|
+
resultText = " > クリティカル"
|
119
|
+
total = 6 + skl
|
120
|
+
end
|
121
|
+
|
122
|
+
if fumble >= 3
|
123
|
+
resultText = " > ファンブル"
|
124
|
+
total = 0
|
125
|
+
end
|
126
|
+
|
127
|
+
output = "#{total}[#{dice_str}]#{resultText}"
|
128
|
+
|
129
|
+
return total, output, dice_arr
|
130
|
+
end
|
131
|
+
|
132
|
+
def eval_game_system_specific_command(command)
|
133
|
+
if (m = /^BT(\d)?$/i.match(command))
|
134
|
+
dice = m[1]&.to_i || 1
|
135
|
+
return get_horidasibukuro_table(dice)
|
136
|
+
end
|
137
|
+
|
138
|
+
return check_roll(command)
|
139
|
+
end
|
140
|
+
|
141
|
+
# ** 掘り出し袋表
|
142
|
+
def get_horidasibukuro_table(dice)
|
143
|
+
output = '1'
|
144
|
+
|
145
|
+
material_kind = [ # 2D6
|
146
|
+
"蟲甲", # 5
|
147
|
+
"金属", # 6
|
148
|
+
"金貨", # 7
|
149
|
+
"植物", # 8
|
150
|
+
"獣皮", # 9
|
151
|
+
"竜鱗", # 10
|
152
|
+
"レアモノ", # 11
|
153
|
+
"レアモノ", # 12
|
154
|
+
]
|
155
|
+
|
156
|
+
magic_stone = [ # 1D3
|
157
|
+
"火炎石",
|
158
|
+
"雷撃石",
|
159
|
+
"氷結石",
|
160
|
+
]
|
161
|
+
|
162
|
+
num1 = @randomizer.roll_sum(2, 6)
|
163
|
+
num2 = @randomizer.roll_sum(dice, 6)
|
164
|
+
|
165
|
+
debug('dice', dice)
|
166
|
+
debug('num1', num1)
|
167
|
+
debug('num2', num2)
|
168
|
+
|
169
|
+
if num1 <= 4
|
170
|
+
num2 = @randomizer.roll_once(6)
|
171
|
+
magic_stone_result = (magic_stone[(num2 / 2).to_i - 1])
|
172
|
+
output = "《#{magic_stone_result}》を#{dice}個獲得"
|
173
|
+
elsif num1 == 7
|
174
|
+
output = "《金貨》を#{num2}枚獲得"
|
175
|
+
else
|
176
|
+
type = material_kind[num1 - 5]
|
177
|
+
|
178
|
+
if num2 <= 3
|
179
|
+
output = "《#{type} I》を1個獲得"
|
180
|
+
elsif num2 <= 5
|
181
|
+
output = "《#{type} I》を2個獲得"
|
182
|
+
elsif num2 <= 7
|
183
|
+
output = "《#{type} I》を3個獲得"
|
184
|
+
elsif num2 <= 9
|
185
|
+
output = "《#{type} II》を1個獲得"
|
186
|
+
elsif num2 <= 11
|
187
|
+
output = "《#{type} I》を2個《#{type} II》を1個獲得"
|
188
|
+
elsif num2 <= 13
|
189
|
+
output = "《#{type} I》を2個《#{type} II》を2個獲得"
|
190
|
+
elsif num2 <= 15
|
191
|
+
output = "《#{type} III》を1個獲得"
|
192
|
+
elsif num2 <= 17
|
193
|
+
output = "《#{type} II》を2個《#{type} III》を1個獲得"
|
194
|
+
else
|
195
|
+
output = "《#{type} II》を2個《#{type} III》を2個獲得"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
if output != '1'
|
200
|
+
output = "掘り出し袋表[#{num1},#{num2}] > #{output}"
|
201
|
+
end
|
202
|
+
|
203
|
+
return output
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
@@ -0,0 +1,425 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class DarkDaysDrive < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'DarkDaysDrive'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ダークデイズドライブ'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'たあくていすとらいふ'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・判定
|
18
|
+
スペシャル/ファンブル/成功/失敗を判定
|
19
|
+
・各種表
|
20
|
+
RTT ランダム特技決定表
|
21
|
+
ABRT アビリティ決定表
|
22
|
+
DT ダメージ表
|
23
|
+
FT 失敗表
|
24
|
+
GJT 大成功表
|
25
|
+
ITT 移動トラブル表
|
26
|
+
NTT 任務トラブル表
|
27
|
+
STT 襲撃トラブル表
|
28
|
+
HTT 変身トラブル表
|
29
|
+
DET ドライブイベント表
|
30
|
+
BET ブレイクイベント表
|
31
|
+
CT キャンプ表
|
32
|
+
KZT 関係属性表
|
33
|
+
IA イケメンアクション決定表
|
34
|
+
IAA 遠距離
|
35
|
+
IAB 移動
|
36
|
+
IAC 近距離
|
37
|
+
IAD 善人
|
38
|
+
IAE 悪人
|
39
|
+
IAF 幼い
|
40
|
+
IAG バカ
|
41
|
+
IAH 渋い
|
42
|
+
IAI 賢い
|
43
|
+
IAJ 超自然
|
44
|
+
・D66ダイスあり
|
45
|
+
INFO_MESSAGE_TEXT
|
46
|
+
|
47
|
+
def initialize(command)
|
48
|
+
super(command)
|
49
|
+
@enabled_d66 = true
|
50
|
+
@d66_sort_type = D66SortType::ASC
|
51
|
+
end
|
52
|
+
|
53
|
+
# ゲーム別成功度判定(2D6)
|
54
|
+
def check_2D6(total, dice_total, _dice_list, cmp_op, target)
|
55
|
+
return '' if target == '?'
|
56
|
+
return '' unless cmp_op == :>=
|
57
|
+
|
58
|
+
if dice_total <= 2
|
59
|
+
" > ファンブル(判定失敗。失敗表(FT)を追加で1回振る)"
|
60
|
+
elsif dice_total >= 12
|
61
|
+
" > スペシャル(判定成功。大成功表(GJT)を1回使用可能)"
|
62
|
+
elsif total >= target
|
63
|
+
" > 成功"
|
64
|
+
else
|
65
|
+
" > 失敗"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def eval_game_system_specific_command(command)
|
70
|
+
roll_tables(command, TABLES)
|
71
|
+
end
|
72
|
+
|
73
|
+
TABLES = {
|
74
|
+
"RTT" => DiceTable::SaiFicSkillTable.new(
|
75
|
+
[
|
76
|
+
['背景', ['呪い', '絶望', '孤児', '死別', '一般人', '獲物', '憧れ', '友人', '挑戦者', '血縁', '永遠']],
|
77
|
+
['仕事', ['脅迫', '捨てる', '拉致', '盗む', 'ハッキング', '侵入', '変装', 'だます', '隠す', 'のぞく', '聞き出す']],
|
78
|
+
['捜索', ['トイレ', '食事', '自然', '運動施設', '街', '友愛会', '暗部', '史跡', '文化施設', '温泉', '宿泊']],
|
79
|
+
['趣味', ['お酒', 'グルメ', 'ダンス', 'スポーツ', '健康', 'ファッション', '恋愛', 'フェス', '音楽', '物語', '学問']],
|
80
|
+
['雰囲気', ['だらしない', 'のんびり', '暖かい', '明るい', '甘い', '普通', '洗練', '渋い', '静か', '真面目', '冷たい']],
|
81
|
+
['戦闘法', ['忍術', '古武術', '剣術', '棒術', '拳法', 'ケンカ', '総合格闘技', 'レスリング', '軍隊格闘術', '射撃', '弓術']],
|
82
|
+
]
|
83
|
+
),
|
84
|
+
"ABRT" => DiceTable::D66Table.new(
|
85
|
+
"アビリティ決定表",
|
86
|
+
D66SortType::ASC,
|
87
|
+
{
|
88
|
+
11 => "インストラクター(P155)",
|
89
|
+
12 => "運送業(P155)",
|
90
|
+
13 => "運転手(P155)",
|
91
|
+
14 => "カフェ店員(P155)",
|
92
|
+
15 => "趣味人(P155)",
|
93
|
+
16 => "ショップ店員(P155)",
|
94
|
+
22 => "正社員(P156)",
|
95
|
+
23 => "大工(P156)",
|
96
|
+
24 => "探偵(P156)",
|
97
|
+
25 => "バイヤー(P156)",
|
98
|
+
26 => "俳優(P156)",
|
99
|
+
33 => "派遣社員(P156)",
|
100
|
+
34 => "犯罪者(P157)",
|
101
|
+
35 => "バンドマン(P157)",
|
102
|
+
36 => "バーテンダー(P157)",
|
103
|
+
44 => "ヒモ(P157)",
|
104
|
+
45 => "ホスト(P157)",
|
105
|
+
46 => "ホテルマン(P157)",
|
106
|
+
55 => "無職(P158)",
|
107
|
+
56 => "用心棒(P158)",
|
108
|
+
66 => "料理人(P158)"
|
109
|
+
}
|
110
|
+
),
|
111
|
+
"DT" => DiceTable::Table.new(
|
112
|
+
"ダメージ表",
|
113
|
+
"1D6",
|
114
|
+
[
|
115
|
+
"疲れ",
|
116
|
+
"痛み",
|
117
|
+
"焦り",
|
118
|
+
"不調",
|
119
|
+
"ショック",
|
120
|
+
"ケガ"
|
121
|
+
]
|
122
|
+
),
|
123
|
+
"FT" => DiceTable::Table.new(
|
124
|
+
"失敗表",
|
125
|
+
"1D6",
|
126
|
+
[
|
127
|
+
"任意のアイテムを一つ失う",
|
128
|
+
"1ダメージを受ける",
|
129
|
+
"【所持金ランク】が1減少する(最低0)",
|
130
|
+
"2ダメージを受ける",
|
131
|
+
"【所持金ランク】が2減少する(最低0)",
|
132
|
+
"標的レベルが1増加する"
|
133
|
+
]
|
134
|
+
),
|
135
|
+
"GJT" => DiceTable::Table.new(
|
136
|
+
"大成功表",
|
137
|
+
"1D6",
|
138
|
+
[
|
139
|
+
"主人からお褒めの言葉をいただく",
|
140
|
+
"ダメージを1回復する",
|
141
|
+
"ダメージを1回復する",
|
142
|
+
"関係のチェックを一つ消す",
|
143
|
+
"ダメージを2回復する",
|
144
|
+
"【所持金ランク】が1増加する"
|
145
|
+
]
|
146
|
+
),
|
147
|
+
"ITT" => DiceTable::Table.new(
|
148
|
+
"移動トラブル表",
|
149
|
+
"1D6",
|
150
|
+
[
|
151
|
+
"検問(P220)",
|
152
|
+
"急な腹痛(P220)",
|
153
|
+
"黒煙(P221)",
|
154
|
+
"蚊(P221)",
|
155
|
+
"落とし物(P222)",
|
156
|
+
"空腹(P222)"
|
157
|
+
]
|
158
|
+
),
|
159
|
+
"NTT" => DiceTable::Table.new(
|
160
|
+
"任務トラブル表",
|
161
|
+
"1D6",
|
162
|
+
[
|
163
|
+
"通報(P223)",
|
164
|
+
"プレッシャー(P223)",
|
165
|
+
"マナー違反(P224)",
|
166
|
+
"志願者(P224)",
|
167
|
+
"仲間割れ(P225)",
|
168
|
+
"狩人の噂(P225)"
|
169
|
+
]
|
170
|
+
),
|
171
|
+
"STT" => DiceTable::Table.new(
|
172
|
+
"襲撃トラブル表",
|
173
|
+
"1D6",
|
174
|
+
[
|
175
|
+
"孤独な追跡者(P226)",
|
176
|
+
"地元の若者たち(P226)",
|
177
|
+
"V-FILES(P227)",
|
178
|
+
"チンピラの群れ(P227)",
|
179
|
+
"孤独な狩人(P228)",
|
180
|
+
"狩人の群れ(P228)"
|
181
|
+
]
|
182
|
+
),
|
183
|
+
"HTT" => DiceTable::D66Table.new(
|
184
|
+
"変身トラブル表",
|
185
|
+
D66SortType::NO_SORT,
|
186
|
+
{
|
187
|
+
11 => "あれを食べたい(P214)",
|
188
|
+
12 => "あれを着たい(P214)",
|
189
|
+
13 => "あれを見たい(P215)",
|
190
|
+
14 => "あれを狩りたい(P215)",
|
191
|
+
15 => "あれを踊りたい(P216)",
|
192
|
+
16 => "あれに入りたい(P216)",
|
193
|
+
21 => "強奪(P217)",
|
194
|
+
22 => "暴行(P217)",
|
195
|
+
23 => "虐殺(P218)",
|
196
|
+
24 => "誘拐(P218)",
|
197
|
+
25 => "無精(P219)",
|
198
|
+
26 => "失踪(P219)",
|
199
|
+
31 => "あれを食べたい(P214)",
|
200
|
+
32 => "あれを着たい(P214)",
|
201
|
+
33 => "あれを見たい(P215)",
|
202
|
+
34 => "あれを狩りたい(P215)",
|
203
|
+
35 => "あれを踊りたい(P216)",
|
204
|
+
36 => "あれに入りたい(P216)",
|
205
|
+
41 => "強奪(P217)",
|
206
|
+
42 => "暴行(P217)",
|
207
|
+
43 => "虐殺(P218)",
|
208
|
+
44 => "誘拐(P218)",
|
209
|
+
45 => "無精(P219)",
|
210
|
+
46 => "失踪(P219)",
|
211
|
+
51 => "あれを食べたい(P214)",
|
212
|
+
52 => "あれを着たい(P214)",
|
213
|
+
53 => "あれを見たい(P215)",
|
214
|
+
54 => "あれを狩りたい(P215)",
|
215
|
+
55 => "あれを踊りたい(P216)",
|
216
|
+
56 => "あれに入りたい(P216)",
|
217
|
+
61 => "強奪(P217)",
|
218
|
+
62 => "暴行(P217)",
|
219
|
+
63 => "虐殺(P218)",
|
220
|
+
64 => "誘拐(P218)",
|
221
|
+
65 => "無精(P219)",
|
222
|
+
66 => "失踪(P219)"
|
223
|
+
}
|
224
|
+
),
|
225
|
+
"DET" => DiceTable::Table.new(
|
226
|
+
"ドライブイベント表",
|
227
|
+
"1D6",
|
228
|
+
[
|
229
|
+
"身の上話をする。目標が背景分野で選択している特技がドライブ判定の指定特技になる。",
|
230
|
+
"スキル自慢をする。目標が仕事分野で選択している特技がドライブ判定の指定特技になる。",
|
231
|
+
"むかし行った場所の話をする。目標が捜索分野で選択している特技がドライブ判定の指定特技になる。",
|
232
|
+
"趣味の話をする。目標が趣味分野で選択している特技がドライブ判定の指定特技になる。",
|
233
|
+
"テーマがない雑談をする。目標が雰囲気分野で選択している特技がドライブ判定の指定特技になる。",
|
234
|
+
"物騒な話をする。目標が戦闘法分野で選択している特技がドライブ判定の指定特技になる。"
|
235
|
+
]
|
236
|
+
),
|
237
|
+
"BET" => DiceTable::Table.new(
|
238
|
+
"ブレイクイベント表",
|
239
|
+
"1D6",
|
240
|
+
[
|
241
|
+
"イケメンの車は風光明美な場所に到着する。197ページの「観光地」を参照。",
|
242
|
+
"イケメンの車は明るい光に照らされた小さな店に到着する。197ページの「コンビニ」を参照。",
|
243
|
+
"イケメンの車は巨大かつ何でも売っている店に到着する。198ページの「ホームセンター」を参照。",
|
244
|
+
"イケメンの車はドライバーたちの憩いの地に到着する。198ページの「サービスエリア」を参照。",
|
245
|
+
"イケメンの車は大きなサービスエリアのような場所に到着する。199ページの「道の駅」を参照。",
|
246
|
+
"イケメンの車は闇の底に隠された秘密の場所に到着する。199ページの「友愛会支部」を参照。"
|
247
|
+
]
|
248
|
+
),
|
249
|
+
"CT" => DiceTable::Table.new(
|
250
|
+
"キャンプ表",
|
251
|
+
"1D6",
|
252
|
+
[
|
253
|
+
"無料仮眠所・いい感じの空き地:定員無制限/居住性-2/価格0/発見率2",
|
254
|
+
"カプセルホテル:定員1/居住性-1/価格3/発見率2",
|
255
|
+
"ラブホテル:定員2/居住性0/価格4/発見率1",
|
256
|
+
"ビジネスホテル:定員2/居住性0/価格4/発見率1",
|
257
|
+
"観光ホテル:定員4/居住性1/価格5/発見率1",
|
258
|
+
"高級ホテル:定員4/居住性2/価格6/発見率0"
|
259
|
+
]
|
260
|
+
),
|
261
|
+
"KZT" => DiceTable::Table.new(
|
262
|
+
"関係属性表",
|
263
|
+
"1D6",
|
264
|
+
[
|
265
|
+
"軽蔑",
|
266
|
+
"反感",
|
267
|
+
"混乱",
|
268
|
+
"興味",
|
269
|
+
"共感",
|
270
|
+
"憧れ"
|
271
|
+
]
|
272
|
+
),
|
273
|
+
"IA" => DiceTable::D66Table.new(
|
274
|
+
"イケメンアクション決定表",
|
275
|
+
D66SortType::ASC,
|
276
|
+
{
|
277
|
+
11 => "遠距離",
|
278
|
+
12 => "遠距離",
|
279
|
+
13 => "移動",
|
280
|
+
14 => "移動",
|
281
|
+
15 => "近距離",
|
282
|
+
16 => "近距離",
|
283
|
+
22 => "善人",
|
284
|
+
23 => "善人",
|
285
|
+
24 => "悪人",
|
286
|
+
25 => "悪人",
|
287
|
+
26 => "幼い",
|
288
|
+
33 => "幼い",
|
289
|
+
34 => "バカ",
|
290
|
+
35 => "バカ",
|
291
|
+
36 => "渋い",
|
292
|
+
44 => "渋い",
|
293
|
+
45 => "賢い",
|
294
|
+
46 => "賢い",
|
295
|
+
55 => "超自然",
|
296
|
+
56 => "超自然",
|
297
|
+
66 => "振り直しor自由選択"
|
298
|
+
}
|
299
|
+
),
|
300
|
+
"IAA" => DiceTable::Table.new(
|
301
|
+
"イケメンアクション(遠距離)表",
|
302
|
+
"1D6",
|
303
|
+
[
|
304
|
+
"目を合わせて微笑む(かっこよさ:4)",
|
305
|
+
"場所を譲る(かっこよさ:4)",
|
306
|
+
"髪をかきあげる(かっこよさ:5)",
|
307
|
+
"複雑なポーズで座る(かっこよさ:5)",
|
308
|
+
"物憂げな表情で振り返る(かっこよさ:6)",
|
309
|
+
"ものを上に持つ(かっこよさ:6)"
|
310
|
+
]
|
311
|
+
),
|
312
|
+
"IAB" => DiceTable::Table.new(
|
313
|
+
"イケメンアクション(移動)表",
|
314
|
+
"1D6",
|
315
|
+
[
|
316
|
+
"車道側を歩く(かっこよさ:4)",
|
317
|
+
"乗り物から降りる(かっこよさ:4)",
|
318
|
+
"真剣な表情で近づく(かっこよさ:4)",
|
319
|
+
"馬に乗る(かっこよさ:6)",
|
320
|
+
"ダメージを受けつつ移動(かっこよさ:6)",
|
321
|
+
"瞬間移動(かっこよさ:6)"
|
322
|
+
]
|
323
|
+
),
|
324
|
+
"IAC" => DiceTable::Table.new(
|
325
|
+
"イケメンアクション(近距離)表",
|
326
|
+
"1D6",
|
327
|
+
[
|
328
|
+
"黙って見つめる(かっこよさ:3)",
|
329
|
+
"ちょっとしたプレゼント(かっこよさ:3)",
|
330
|
+
"顎クイ(かっこよさ:5)",
|
331
|
+
"壁ドン(かっこよさ:5)",
|
332
|
+
"お姫様抱っこ(かっこよさ:7)",
|
333
|
+
"床ドン(かっこよさ:7)"
|
334
|
+
]
|
335
|
+
),
|
336
|
+
"IAD" => DiceTable::Table.new(
|
337
|
+
"イケメンアクション(善人)表",
|
338
|
+
"1D6",
|
339
|
+
[
|
340
|
+
"手を引いて逃げる(かっこよさ:4)",
|
341
|
+
"毛布を掛ける(かっこよさ:4)",
|
342
|
+
"守る(かっこよさ:5)",
|
343
|
+
"笑って去る(かっこよさ:5)",
|
344
|
+
"全てを捧げる(かっこよさ:6)",
|
345
|
+
"悪堕ち(かっこよさ:6)"
|
346
|
+
]
|
347
|
+
),
|
348
|
+
"IAE" => DiceTable::Table.new(
|
349
|
+
"イケメンアクション(悪人)表",
|
350
|
+
"1D6",
|
351
|
+
[
|
352
|
+
"攻撃する(かっこよさ:4)",
|
353
|
+
"暗く笑う(かっこよさ:4)",
|
354
|
+
"奪う(かっこよさ:4)",
|
355
|
+
"目論見を口にする(かっこよさ:6)",
|
356
|
+
"罠にかける(かっこよさ:6)",
|
357
|
+
"改心する(かっこよさ:6)"
|
358
|
+
]
|
359
|
+
),
|
360
|
+
"IAF" => DiceTable::Table.new(
|
361
|
+
"イケメンアクション(幼い)表",
|
362
|
+
"1D6",
|
363
|
+
[
|
364
|
+
"甘える(かっこよさ:3)",
|
365
|
+
"疲れる(かっこよさ:3)",
|
366
|
+
"無邪気な発言(かっこよさ:5)",
|
367
|
+
"おねだり(かっこよさ:5)",
|
368
|
+
"上目遣い(かっこよさ:7)",
|
369
|
+
"抱きつく(かっこよさ:7)"
|
370
|
+
]
|
371
|
+
),
|
372
|
+
"IAG" => DiceTable::Table.new(
|
373
|
+
"イケメンアクション(バカ)表",
|
374
|
+
"1D6",
|
375
|
+
[
|
376
|
+
"苦悩する(かっこよさ:4)",
|
377
|
+
"屈託のない笑顔(かっこよさ:4)",
|
378
|
+
"転ぶ(かっこよさ:4)",
|
379
|
+
"叫ぶ(かっこよさ:6)",
|
380
|
+
"間違える(かっこよさ:6)",
|
381
|
+
"怖がる(かっこよさ:6)"
|
382
|
+
]
|
383
|
+
),
|
384
|
+
"IAH" => DiceTable::Table.new(
|
385
|
+
"イケメンアクション(渋い)表",
|
386
|
+
"1D6",
|
387
|
+
[
|
388
|
+
"説教(かっこよさ:4)",
|
389
|
+
"気づかせる(かっこよさ:4)",
|
390
|
+
"見守る(かっこよさ:5)",
|
391
|
+
"残心(かっこよさ:5)",
|
392
|
+
"称える(かっこよさ:6)",
|
393
|
+
"いい位置を取る(かっこよさ:6)"
|
394
|
+
]
|
395
|
+
),
|
396
|
+
"IAI" => DiceTable::Table.new(
|
397
|
+
"イケメンアクション(賢い)表",
|
398
|
+
"1D6",
|
399
|
+
[
|
400
|
+
"難しい本を読む(かっこよさ:3)",
|
401
|
+
"アドバイスをする(かっこよさ:3)",
|
402
|
+
"眼鏡を持ち上げる(かっこよさ:5)",
|
403
|
+
"状況を解説する(かっこよさ:5)",
|
404
|
+
"計算できなくなる(かっこよさ:7)",
|
405
|
+
"大丈夫だと言う(かっこよさ:7)"
|
406
|
+
]
|
407
|
+
),
|
408
|
+
"IAJ" => DiceTable::Table.new(
|
409
|
+
"イケメンアクション(超自然)表",
|
410
|
+
"1D6",
|
411
|
+
[
|
412
|
+
"水に濡れる(かっこよさ:4)",
|
413
|
+
"風を纏う(かっこよさ:4)",
|
414
|
+
"地割れ(かっこよさ:5)",
|
415
|
+
"火を放つ(かっこよさ:5)",
|
416
|
+
"闇を生み出す(かっこよさ:6)",
|
417
|
+
"光る(かっこよさ:6)"
|
418
|
+
]
|
419
|
+
),
|
420
|
+
}.freeze
|
421
|
+
|
422
|
+
register_prefix(['RTT'] + TABLES.keys)
|
423
|
+
end
|
424
|
+
end
|
425
|
+
end
|