bcdice 3.0.0.pre.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,208 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class HarnMaster < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'HarnMaster'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ハーンマスター'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'はあんますたあ'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
17
|
+
・判定
|
18
|
+
1D100<=XX の判定時に致命的失敗・決定的成功を判定
|
19
|
+
・ショック判定(SHKx)
|
20
|
+
例)SHK13,3
|
21
|
+
・人型用 中段命中部位表 (SLH)/上段命中部位 (SLHU)/上段命中部位 (SLHD)
|
22
|
+
MESSAGETEXT
|
23
|
+
|
24
|
+
register_prefix(['SHK\d+.*', 'SLH', 'SLHU', 'SLHD'])
|
25
|
+
|
26
|
+
def check_1D100(total, _dice_total, cmp_op, target)
|
27
|
+
return '' if target == '?'
|
28
|
+
return '' unless cmp_op == :<=
|
29
|
+
|
30
|
+
result = getCheckResult(total, target)
|
31
|
+
return "> #{result}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def getCheckResult(total, diff)
|
35
|
+
return getFailResult(total) if total > diff
|
36
|
+
|
37
|
+
return getSuccessResult(total)
|
38
|
+
end
|
39
|
+
|
40
|
+
def getFailResult(total)
|
41
|
+
return "致命的失敗" if (total % 5) == 0
|
42
|
+
|
43
|
+
return "失敗"
|
44
|
+
end
|
45
|
+
|
46
|
+
def getSuccessResult(total)
|
47
|
+
return "決定的成功" if (total % 5) == 0
|
48
|
+
|
49
|
+
return "成功"
|
50
|
+
end
|
51
|
+
|
52
|
+
def eval_game_system_specific_command(command)
|
53
|
+
result = nil
|
54
|
+
|
55
|
+
case command
|
56
|
+
when /^SHK(\d*),(\d+)/i
|
57
|
+
toughness = Regexp.last_match(1).to_i
|
58
|
+
damage = Regexp.last_match(2).to_i
|
59
|
+
result = getCheckShockResult(damage, toughness)
|
60
|
+
when /SLH(U|D)?/i
|
61
|
+
type = Regexp.last_match(1)
|
62
|
+
result = getStrikeLocationHuman(type)
|
63
|
+
else
|
64
|
+
result = nil
|
65
|
+
end
|
66
|
+
|
67
|
+
return result
|
68
|
+
rescue StandardError => e
|
69
|
+
return e.message
|
70
|
+
end
|
71
|
+
|
72
|
+
def getCheckShockResult(damage, toughness)
|
73
|
+
dice_list = @randomizer.roll_barabara(damage, 6)
|
74
|
+
dice = dice_list.sum()
|
75
|
+
diceText = dice_list.join(",")
|
76
|
+
|
77
|
+
result = (dice <= toughness ? '成功' : '失敗')
|
78
|
+
|
79
|
+
text = "ショック判定(ダメージ:#{damage}, 耐久力:#{toughness}) > (#{dice}[#{diceText}]) > #{result}"
|
80
|
+
return text
|
81
|
+
end
|
82
|
+
|
83
|
+
def getStrikeLocationHuman(type)
|
84
|
+
typeName = ''
|
85
|
+
table = nil
|
86
|
+
|
87
|
+
case type
|
88
|
+
when 'U'
|
89
|
+
typeName = "命中部位(人型 上段)"
|
90
|
+
table = getStrikeLocationHumanUpperTable()
|
91
|
+
when 'D'
|
92
|
+
typeName = "命中部位(人型 下段)"
|
93
|
+
table = getStrikeLocationHumanDownTable()
|
94
|
+
when nil
|
95
|
+
typeName = "命中部位(人型 中段)"
|
96
|
+
table = getStrikeLocationHumanNormalTable()
|
97
|
+
else
|
98
|
+
raise "unknow atak type #{type}"
|
99
|
+
end
|
100
|
+
|
101
|
+
number = @randomizer.roll_once(100)
|
102
|
+
part = get_table_by_number(number, table)
|
103
|
+
part = getLocationSide(part, number)
|
104
|
+
part = getFaceLocation(part)
|
105
|
+
|
106
|
+
result = "#{typeName} > (#{number})#{part}"
|
107
|
+
|
108
|
+
return result
|
109
|
+
end
|
110
|
+
|
111
|
+
def getLocationSide(part, number)
|
112
|
+
unless part =~ /^\*/
|
113
|
+
debug("part has NO side", part)
|
114
|
+
return part
|
115
|
+
end
|
116
|
+
|
117
|
+
debug("part has side", part)
|
118
|
+
|
119
|
+
side = (number.odd? ? "左" : "右")
|
120
|
+
|
121
|
+
part.sub(/\*/, side)
|
122
|
+
end
|
123
|
+
|
124
|
+
def getFaceLocation(part)
|
125
|
+
debug("getFaceLocation part", part)
|
126
|
+
|
127
|
+
unless part =~ /\+$/
|
128
|
+
debug("is NOT Face")
|
129
|
+
return part
|
130
|
+
end
|
131
|
+
|
132
|
+
debug("is Face")
|
133
|
+
|
134
|
+
table = [
|
135
|
+
[15, "顎"],
|
136
|
+
[30, "*目"],
|
137
|
+
[64, "*頬"],
|
138
|
+
[80, "鼻"],
|
139
|
+
[90, "*耳"],
|
140
|
+
[100, "口"],
|
141
|
+
]
|
142
|
+
|
143
|
+
number = @randomizer.roll_once(100)
|
144
|
+
faceLocation = get_table_by_number(number, table)
|
145
|
+
debug("faceLocation", faceLocation)
|
146
|
+
debug("number", number)
|
147
|
+
faceLocation = getLocationSide(faceLocation, number)
|
148
|
+
|
149
|
+
result = part.sub(/\+$/, " > (#{number})#{faceLocation}")
|
150
|
+
return result
|
151
|
+
end
|
152
|
+
|
153
|
+
def getStrikeLocationHumanUpperTable()
|
154
|
+
table = [
|
155
|
+
[15, "頭部"],
|
156
|
+
[30, "顔+"],
|
157
|
+
[45, "首"],
|
158
|
+
[57, "*肩"],
|
159
|
+
[69, "*上腕"],
|
160
|
+
[73, "*肘"],
|
161
|
+
[81, "*前腕"],
|
162
|
+
[85, "*手"],
|
163
|
+
[95, "胸部"],
|
164
|
+
[100, "腹部"],
|
165
|
+
]
|
166
|
+
return table
|
167
|
+
end
|
168
|
+
|
169
|
+
def getStrikeLocationHumanNormalTable()
|
170
|
+
table = [
|
171
|
+
[5, "頭部"],
|
172
|
+
[10, "顔+"],
|
173
|
+
[15, "首"],
|
174
|
+
[27, "*肩"],
|
175
|
+
[33, "*上腕"],
|
176
|
+
[35, "*肘"],
|
177
|
+
[39, "*前腕"],
|
178
|
+
[43, "*手"],
|
179
|
+
[60, "胸部"],
|
180
|
+
[70, "腹部"],
|
181
|
+
[74, "股間"],
|
182
|
+
[80, "*臀部"],
|
183
|
+
[88, "*腿"],
|
184
|
+
[90, "*膝"],
|
185
|
+
[96, "*脛"],
|
186
|
+
[100, "*足"],
|
187
|
+
]
|
188
|
+
return table
|
189
|
+
end
|
190
|
+
|
191
|
+
def getStrikeLocationHumanDownTable()
|
192
|
+
table = [
|
193
|
+
[6, "*前腕"],
|
194
|
+
[12, "*手"],
|
195
|
+
[19, "胸部"],
|
196
|
+
[29, "腹部"],
|
197
|
+
[35, "股間"],
|
198
|
+
[49, "*臀部"],
|
199
|
+
[70, "*腿"],
|
200
|
+
[78, "*膝"],
|
201
|
+
[92, "*脛"],
|
202
|
+
[100, "*足"],
|
203
|
+
]
|
204
|
+
return table
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
@@ -0,0 +1,706 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class HatsuneMiku < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'HatsuneMiku'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = '初音ミクTRPG ココロダンジョン'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'はつねみくTRPGこころたんしよん'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・判定(Rx±y@z>=t)
|
18
|
+
能力値のダイスごとに成功・失敗の判定を行います。
|
19
|
+
x:能力ランク(S,A~D)。数字指定で直接その個数のダイスが振れます
|
20
|
+
y:修正値。A+2 あるいは A++ のように表記。混在時は A++,+1 のように記述も可能
|
21
|
+
z:スペシャル最低値(省略:6) t:目標値(省略:4)
|
22
|
+
例) RA R2 RB+1 RC++ RD+,+2 RA>=5 RS-1@5>=6
|
23
|
+
結果はネイロを取得した残りで最大値を表示
|
24
|
+
例) RB
|
25
|
+
HatsuneMiku : (RB>=4) > [3,5] >
|
26
|
+
ネイロに3(青)を取得した場合 5:成功
|
27
|
+
ネイロに5(白)を取得した場合 3:失敗
|
28
|
+
・各種表
|
29
|
+
ファンブル表 FT/致命傷表 CWT/休憩表 BT/目標表 TT/関係表 RT
|
30
|
+
障害表 OT/リクエスト表 RQT/情景表 ST
|
31
|
+
・キーワード表
|
32
|
+
ダーク DKT/ホット HKT/ラブ LKT/エキセントリック EKT/メランコリー MKT
|
33
|
+
・名前表 NT
|
34
|
+
コア別 ダーク DNT/ホット HNT/ラブ LNT/エキセントリック ENT/メランコリー MNT
|
35
|
+
・オトダマ各種表
|
36
|
+
性格表A OPA/性格表B OPB/趣味表 OHT/外見表 OLT/一人称表 OIT/呼び名表 OYT
|
37
|
+
リアクション表 ORT/出会い表 OMT
|
38
|
+
INFO_MESSAGE_TEXT
|
39
|
+
|
40
|
+
def initialize(command)
|
41
|
+
super(command)
|
42
|
+
|
43
|
+
@enabled_d66 = true
|
44
|
+
@d66_sort_type = D66SortType::ASC
|
45
|
+
end
|
46
|
+
|
47
|
+
def eval_game_system_specific_command(command)
|
48
|
+
text = judgeRoll(command)
|
49
|
+
return text unless text.nil?
|
50
|
+
|
51
|
+
return roll_tables(command, TABLES)
|
52
|
+
end
|
53
|
+
|
54
|
+
def judgeRoll(command)
|
55
|
+
return nil unless /^(R([A-DS]|\d+)([\+\-\d,]*))(@(\d))?((>(=)?)([\+\-\d]*))?(@(\d))?$/i =~ command
|
56
|
+
|
57
|
+
skillRank = Regexp.last_match(2)
|
58
|
+
modifyText = Regexp.last_match(3)
|
59
|
+
signOfInequality = (Regexp.last_match(7).nil? ? ">=" : Regexp.last_match(7))
|
60
|
+
targetText = (Regexp.last_match(9).nil? ? "4" : Regexp.last_match(9))
|
61
|
+
|
62
|
+
specialNum = Regexp.last_match(5)
|
63
|
+
specialNum ||= Regexp.last_match(11)
|
64
|
+
specialNum ||= 6
|
65
|
+
specialNum = specialNum.to_i
|
66
|
+
specialText = (specialNum == 6 ? "" : "@#{specialNum}")
|
67
|
+
|
68
|
+
modifyText = getChangedModifyText(modifyText)
|
69
|
+
|
70
|
+
commandText = "R#{skillRank}#{modifyText}"
|
71
|
+
|
72
|
+
rankDiceList = {"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2}
|
73
|
+
diceCount = rankDiceList[skillRank]
|
74
|
+
diceCount = skillRank.to_i if skillRank =~ /^\d+$/
|
75
|
+
|
76
|
+
modify = ArithmeticEvaluator.eval(modifyText)
|
77
|
+
target = ArithmeticEvaluator.eval(targetText)
|
78
|
+
|
79
|
+
diceList = @randomizer.roll_barabara(diceCount, 6).sort
|
80
|
+
diceText = diceList.join(",")
|
81
|
+
|
82
|
+
diceList = [diceList.min] if skillRank == "D"
|
83
|
+
|
84
|
+
message = "(#{commandText}#{specialText}#{signOfInequality}#{targetText}) > [#{diceText}]#{modifyText} > "
|
85
|
+
|
86
|
+
if diceList.length <= 1
|
87
|
+
dice = diceList.first
|
88
|
+
total = dice + modify
|
89
|
+
result = check_success(total, dice, signOfInequality, target, specialNum)
|
90
|
+
message += "#{total}:#{result}"
|
91
|
+
else
|
92
|
+
texts = []
|
93
|
+
diceList.each_with_index do |pickup_dice, index|
|
94
|
+
rests = diceList.clone
|
95
|
+
rests.delete_at(index)
|
96
|
+
dice = rests.max
|
97
|
+
total = dice + modify
|
98
|
+
result = check_success(total, dice, signOfInequality, target, specialNum)
|
99
|
+
|
100
|
+
colorList = ["黒", "赤", "青", "緑", "白", "任意"]
|
101
|
+
color = colorList[pickup_dice - 1]
|
102
|
+
texts << " ネイロに#{pickup_dice}(#{color})を取得した場合 #{total}:#{result}"
|
103
|
+
end
|
104
|
+
texts.uniq!
|
105
|
+
message += "\n" + texts.join("\n")
|
106
|
+
end
|
107
|
+
|
108
|
+
return message
|
109
|
+
end
|
110
|
+
|
111
|
+
def getChangedModifyText(text)
|
112
|
+
modifyText = ""
|
113
|
+
values = text.split(/,/)
|
114
|
+
|
115
|
+
values.each do |value|
|
116
|
+
case value
|
117
|
+
when "++"
|
118
|
+
modifyText += "+2"
|
119
|
+
when "+"
|
120
|
+
modifyText += "+1"
|
121
|
+
else
|
122
|
+
modifyText += value
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
return modifyText
|
127
|
+
end
|
128
|
+
|
129
|
+
def check_success(total_n, dice_n, signOfInequality, diff, special_n)
|
130
|
+
return "ファンブル" if dice_n == 1
|
131
|
+
return "スペシャル" if dice_n >= special_n
|
132
|
+
|
133
|
+
cmp_op = Normalize.comparison_operator(signOfInequality)
|
134
|
+
target_num = diff.to_i
|
135
|
+
|
136
|
+
if total_n.send(cmp_op, target_num)
|
137
|
+
"成功"
|
138
|
+
else
|
139
|
+
"失敗"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
TABLES = {
|
144
|
+
"FT" => DiceTable::Table.new(
|
145
|
+
"ファンブル表",
|
146
|
+
"1D6",
|
147
|
+
[
|
148
|
+
"周囲から活気が失われる。黒以外のすべてのネイロを一つずつ減らす。",
|
149
|
+
"仲間に迷惑をかけてしまう。自分以外のPC全員の【生命力】が1点減少する。",
|
150
|
+
"この失敗は後に祟るかもしれない……。自分の【生命力】が1D6点減少する。",
|
151
|
+
"ココロに疲労感が満ちていく。自分がストレスを1点受ける。",
|
152
|
+
"1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。",
|
153
|
+
"ラッキー!特に何も起こらない"
|
154
|
+
]
|
155
|
+
),
|
156
|
+
"CWT" => DiceTable::Table.new(
|
157
|
+
"致命傷表",
|
158
|
+
"1D6",
|
159
|
+
[
|
160
|
+
"絶望的な攻撃を受ける。そのキャラクターは強制退出になる。",
|
161
|
+
"苦痛の悲鳴をあげ、無惨にも崩れ落ちる。そのキャラクターは行動不能になる。また、黒のネイロが一つ増える。",
|
162
|
+
"オトクイの一撃で、あなたは吹き飛ばされてしまう。そのキャラクターは行動不能になる。また、分類が装備のナンバーにストレスを1点受ける。",
|
163
|
+
"強烈な一撃を受けて気絶する。そのキャラクターは行動不能になる。",
|
164
|
+
"意識はあるが、立ち上がることができない。そのキャラクターは行動不能になる。次のシーンにまだ【生命力】が0点だった場合、自動的に1点に回復する。",
|
165
|
+
"奇跡的に踏みとどまり、持ちこたえる。【生命力】が1点になる。"
|
166
|
+
]
|
167
|
+
),
|
168
|
+
"BT" => DiceTable::Table.new(
|
169
|
+
"休憩表",
|
170
|
+
"1D6",
|
171
|
+
[
|
172
|
+
"仲間との楽しい時間。自分の【想い人】のパトスを一つ回復する。",
|
173
|
+
"これまでの冒険を思い返す。自分の【能力値】のパトスを一つ回復する。",
|
174
|
+
"自分のオトダマと会話する。【協力者】のパトスか、ナンバーのパトスを一つ回復する。",
|
175
|
+
"体をゆっくり休める。自分の【生命力】を2D6点回復する。望むなら、回復を行う前に、自分の【活力】を決め直してもよい。",
|
176
|
+
"お、ラッキー!いいもの見つけた!自分のコインを1枚増やす。",
|
177
|
+
"ノイズストアに接続できた。各PCは、自分の【頭脳】のダイスの数と同じ個数まで、アプリを購入できる。"
|
178
|
+
]
|
179
|
+
),
|
180
|
+
"TT" => DiceTable::Table.new(
|
181
|
+
"目標表",
|
182
|
+
"1D6",
|
183
|
+
[
|
184
|
+
"悪意。PCの中でもっとも【生命力】の低いもの一人を目標に選ぶ。もっとも低い【生命力】の持ち主が複数いる場合、その中から、GMが自由に一人目標を選ぶ。",
|
185
|
+
"狡猾。パラグラフ1〜5の中で、もっとも高い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。",
|
186
|
+
"堅実。PCの中で、その脅威の「判定欄」に書かれた能力値がもっとも低いランクのキャラクター一人を目標に選ぶ。もっとも低いランクのキャラクターが複数いる場合、その中から、もっとも低いモッドのキャラクター一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。",
|
187
|
+
"豪快。PCの中でもっとも高いランクの【武勇】の持ち主一人を目標に選ぶ。もっとも高いランクの持ち主が複数いる場合、その中から、もっとも高いモッドの持ち主一人を目標に選ぶ。モッドも同じ値だった場合、GMが自由に一人目標を選ぶ。",
|
188
|
+
"単純。パラグラフ1〜5の中で、もっとも低い数値のパラグラフにいるPC一人を目標に選ぶ。全員が圏外にいる場合、圏外にいるPC全員を目標に選ぶ。",
|
189
|
+
"乱戦。その脅威のいるパラグラフの数値と数値が1離れたパラグラフにいるPC全員を目標に選ぶ。そのパラグラフにPCがいなかった場合、GMが自由に一人目標を選ぶ。"
|
190
|
+
]
|
191
|
+
),
|
192
|
+
"RT" => DiceTable::Table.new(
|
193
|
+
"関係表",
|
194
|
+
"1D6",
|
195
|
+
[
|
196
|
+
"恋心(プラス)/殺意(マイナス)",
|
197
|
+
"同情(プラス)/侮蔑(マイナス)",
|
198
|
+
"憧憬(プラス)/嫉妬(マイナス)",
|
199
|
+
"信頼(プラス)/疑い(マイナス)",
|
200
|
+
"共感(プラス)/不気味(マイナス)",
|
201
|
+
"大切(プラス)/面倒(マイナス)"
|
202
|
+
]
|
203
|
+
),
|
204
|
+
"OT" => DiceTable::Table.new(
|
205
|
+
"障害表",
|
206
|
+
"1D6",
|
207
|
+
[
|
208
|
+
"あなたのココロに大きな変化が訪れる。1D6を振ること。そのPCのコアが、その出目が1ならダークに、2ならホットに、3ならラブに、4ならエキセントリックに、5ならメランコリーに変化する。6だった場合、コアは変化しない。",
|
209
|
+
"あなたは肉体的に大きなダメージを負う。1D6点のダメージを受ける。",
|
210
|
+
"ノイズの助けを借りて問題を解決する。コインを1D6枚を支払う必要がある。コインを支払う場合、ほかのPCからコインを譲ってもらってもよい。支払いが足りなかった場合、その差額分だけ自分の【生命力】を減らす。",
|
211
|
+
"大きな疲労感を感じる。ストレスを1点受ける。",
|
212
|
+
"思わず時間をつかってしまう。【タイム】が1点減少する。",
|
213
|
+
"場にイヤな気配が満ちていく。黒のネイロが一つ増える。"
|
214
|
+
]
|
215
|
+
),
|
216
|
+
"RQT" => DiceTable::Table.new(
|
217
|
+
"リクエスト表",
|
218
|
+
"2D6",
|
219
|
+
[
|
220
|
+
"そのエリアの風景が、あなたの【情景】へと書き換えられていく。「お前の始まりの物語を語れ。お前はこの地で何を思った?」",
|
221
|
+
"あなたは、そのエリアの風景の中に懐かしいものを見つけ、自分の罪を思い出した。「何を見た?なにを悔いている?」",
|
222
|
+
"そのエリアの風景が、あなたのコアと同じ色に染まる。あなたは、その風景の中になりたい自分の姿を見つける。「それがお前の望みか?お前は未来に何を求める?」",
|
223
|
+
"あなたの脳裏に、人物欄に書かれた人物一人のイメージが浮かぶ。その人物は何かを囁き、あなたのココロが傷ついた。「そいつは誰だ?一体何と言ったのだ?」",
|
224
|
+
"あなたは、そのエリアの風景の中に奇妙なものを見つけ、恐怖した。「何を見た?なぜそれを恐れる?」",
|
225
|
+
"そのエリアにココロダンジョンの持ち主が現れる。その人物は、お前に質問してくる。「私をどう思ってる?なぜ、私を助ける?」",
|
226
|
+
"あなたのオトダマの姿が、あなたのよく知っている人物に変わる「その人物は誰だ?そいつをどう思っている?」",
|
227
|
+
"そのエリアに、あなたの持つナンバーが響き渡る。「これがお前のウタか?そのウタの名はなんだ?」",
|
228
|
+
"あなたのオトダマの姿が、あなたの好きな人物の姿に変わる。「それがお前が焦がれる人物か。そいつをどうしたい?」",
|
229
|
+
"そのエリアの風景にあなたの日常が浮かび上がる。「お前は何をしている?その暮らしをどう思っている?」",
|
230
|
+
"あなたの目の前に、あなたの死体が横たわっている。「お前を殺すものは何だ?お前は誰に殺される?」"
|
231
|
+
]
|
232
|
+
),
|
233
|
+
"ST" => DiceTable::D66Table.new(
|
234
|
+
"情景表",
|
235
|
+
D66SortType::ASC,
|
236
|
+
{
|
237
|
+
11 => "立ち並ぶ本棚の森",
|
238
|
+
12 => "夕日が差し込む教室",
|
239
|
+
13 => "鳴り止まない踏切",
|
240
|
+
14 => "ビルから見下ろした街並み",
|
241
|
+
15 => "二人で見た星空",
|
242
|
+
16 => "液晶画面に映る奇妙な光景",
|
243
|
+
22 => "ガラス窓に並ぶ雨だれ",
|
244
|
+
23 => "植物園の温室",
|
245
|
+
24 => "屋台が並ぶ祭りの風景",
|
246
|
+
25 => "陽炎が立ちのぼるアスファルト",
|
247
|
+
26 => "0時を示す時計の針",
|
248
|
+
33 => "無機質な白い天井",
|
249
|
+
34 => "暗闇に浮かび上がるヘッドライト",
|
250
|
+
35 => "後ろからついてくる野良猫",
|
251
|
+
36 => "一面の花畑",
|
252
|
+
44 => "あなたを見つめる大勢の観衆",
|
253
|
+
45 => "降り積もる雪",
|
254
|
+
46 => "古めかしい洋館の応接間",
|
255
|
+
55 => "おとぎ話に出てくるような森",
|
256
|
+
56 => "深夜のコンビニ",
|
257
|
+
66 => "誰もいない体育館"
|
258
|
+
}
|
259
|
+
),
|
260
|
+
"DKT" => DiceTable::D66Table.new(
|
261
|
+
"ダーク・キーワード表",
|
262
|
+
D66SortType::ASC,
|
263
|
+
{
|
264
|
+
11 => "崩壊する楽園",
|
265
|
+
12 => "空に堕ちる",
|
266
|
+
13 => "優しい暴力",
|
267
|
+
14 => "沈黙の掟",
|
268
|
+
15 => "闇に溺れる",
|
269
|
+
16 => "こぼれ落ちた命",
|
270
|
+
22 => "行き止まりの絶望",
|
271
|
+
23 => "漆黒の翼",
|
272
|
+
24 => "眠れぬ夜",
|
273
|
+
25 => "避けられぬ運命",
|
274
|
+
26 => "斬り裂かれた景色",
|
275
|
+
33 => "からっぽな自分",
|
276
|
+
34 => "仮面の奥",
|
277
|
+
35 => "月光中毒",
|
278
|
+
36 => "昏い魔術",
|
279
|
+
44 => "……オブザデッド",
|
280
|
+
45 => "ココロを殺す",
|
281
|
+
46 => "感染する破滅",
|
282
|
+
55 => "愛の鎖",
|
283
|
+
56 => "残酷な真実",
|
284
|
+
66 => "デスゲーム"
|
285
|
+
}
|
286
|
+
),
|
287
|
+
"DNT" => DiceTable::D66Table.new(
|
288
|
+
"ダーク・名前表",
|
289
|
+
D66SortType::ASC,
|
290
|
+
{
|
291
|
+
11 => "ダーク/濁、搦 ネロ/音呂、寝路",
|
292
|
+
12 => "クロト/黒斗、玄徒 ヤミ/夜美、闇",
|
293
|
+
13 => "ネクロ/根黒、寝喰 マコ/魔子、混乎",
|
294
|
+
14 => "カゲオ/影男、陰夫 オニコ/鬼子、隠忍呼",
|
295
|
+
15 => "アクタ/芥、悪太 ホタル/蛍、歩足",
|
296
|
+
16 => "マオウ/魔王、万凹 ミダラ/淫、美堕裸",
|
297
|
+
22 => "マミヤ/魔美也、狸夜 ジャミ/邪美、蛇実",
|
298
|
+
23 => "ドクロ/髑髏、毒炉 ヨミ/黄泉、詠",
|
299
|
+
24 => "マクラ/枕、真暗 サツキ/殺鬼、五月",
|
300
|
+
25 => "ゲドウ/外道、戯堂 サヤ/小夜、鞘",
|
301
|
+
26 => "ジゴク/地獄、慈極 ウマル/埋、兎丸",
|
302
|
+
33 => "エンド/怨人、終 ヨハネ/夜羽、世刎",
|
303
|
+
34 => "ノロイ/呪、鈍 カバネ/屍、椛音",
|
304
|
+
35 => "アクム/悪夢、飽夢 クサリ/腐、鎖",
|
305
|
+
36 => "バツ/罰、× ニエ/贄、沸",
|
306
|
+
44 => "ネガ/音我、願 リリス/璃々子、離里素",
|
307
|
+
45 => "ウツロ/虚、洞 ネタミ/妬美、寝多実",
|
308
|
+
46 => "ハジメ/始、創 ホロビ/滅、亡",
|
309
|
+
55 => "ザイン/罪印、沙陰 リンボ/淋墓、辺獄",
|
310
|
+
56 => "ハラワタ/腑、祓輪太 ユガミ/歪、由神",
|
311
|
+
66 => "イミ/忌、逝美 ムイミ/無意味、無為巳"
|
312
|
+
}
|
313
|
+
),
|
314
|
+
"HKT" => DiceTable::D66Table.new(
|
315
|
+
"ホット・キーワード表",
|
316
|
+
D66SortType::ASC,
|
317
|
+
{
|
318
|
+
11 => "真夜中をぶっ壊す",
|
319
|
+
12 => "夢を打ち上げろ",
|
320
|
+
13 => "譲れない明日",
|
321
|
+
14 => "あふれ出す衝動",
|
322
|
+
15 => "獣を解き放て",
|
323
|
+
16 => "蒸発した涙",
|
324
|
+
22 => "高らかに叫べ",
|
325
|
+
23 => "負けられない戦い",
|
326
|
+
24 => "握りしめた拳",
|
327
|
+
25 => "疾走する青春",
|
328
|
+
26 => "ココロに従え",
|
329
|
+
33 => "がんばれ",
|
330
|
+
34 => "そのまま進め",
|
331
|
+
35 => "自分の旗",
|
332
|
+
36 => "抗い壊し突き進む",
|
333
|
+
44 => "咲き誇る情熱の花",
|
334
|
+
45 => "暑苦しい友情",
|
335
|
+
46 => "オレ色に染まれ",
|
336
|
+
55 => "世界に八つ当たり",
|
337
|
+
56 => "消せない炎",
|
338
|
+
66 => "オーバードライブ"
|
339
|
+
}
|
340
|
+
),
|
341
|
+
"HNT" => DiceTable::D66Table.new(
|
342
|
+
"ホット・名前表",
|
343
|
+
D66SortType::ASC,
|
344
|
+
{
|
345
|
+
11 => "レッド/烈怒、煉集 アカネ/赤音、茜",
|
346
|
+
23 => "タケル/武、猛 ヒトミ/瞳、仁美",
|
347
|
+
36 => "ジョウ/情、丈 アオリ/煽、亜織",
|
348
|
+
12 => "アツシ/熱、純志 カンナ/神奈、柑菜",
|
349
|
+
24 => "グレン/紅蓮、九煉 ナツコ/夏子、懐子",
|
350
|
+
44 => "ロック/六句、麓 フォルテ/鳳流弖、彫照",
|
351
|
+
13 => "カケル/駆、賭 ハル/晴、春",
|
352
|
+
25 => "アラシ/嵐、荒 ヒカル/光、晃",
|
353
|
+
45 => "ヤマト/大和、岳斗 イサミ/伊佐美、勇美",
|
354
|
+
14 => "ガッツ/牙突、勝 アカリ/紅莉、明里",
|
355
|
+
26 => "エンジョウ/炎上、円定 コマチ/小町、小真知",
|
356
|
+
46 => "リュウセイ/流星、龍盛 ミライ/未来、美良依",
|
357
|
+
15 => "ケン/剣、拳 アスカ/明日香、飛鳥",
|
358
|
+
33 => "レツ/烈、裂 リズム/理澄、李珠夢",
|
359
|
+
55 => "イカル/怒、鵤 ヒマワリ/向日葵、火回",
|
360
|
+
16 => "ゴウ/豪、剛 ヒミコ/日美子、卑弥呼",
|
361
|
+
34 => "リキ/力、陸希 キョウカ/響歌、驚花",
|
362
|
+
56 => "ツトム/努、勉 ハナビ/花火、羽夏妃",
|
363
|
+
22 => "ヒイロ/火色、陽彩 アキラ/晶、爽",
|
364
|
+
35 => "ホムラ/焔、吠叢 カグヤ/輝夜、赫映",
|
365
|
+
66 => "レオ/伶央、獅王 マツリ/祭、茉莉"
|
366
|
+
}
|
367
|
+
),
|
368
|
+
"LKT" => DiceTable::D66Table.new(
|
369
|
+
"ラブ・キーワード表",
|
370
|
+
D66SortType::ASC,
|
371
|
+
{
|
372
|
+
11 => "大人の恋",
|
373
|
+
12 => "ドキドキが止まらない",
|
374
|
+
13 => "つないだ手",
|
375
|
+
14 => "世界を敵に回しても",
|
376
|
+
15 => "重なる声",
|
377
|
+
16 => "君のためなら死ねる",
|
378
|
+
22 => "甘い口づけ",
|
379
|
+
23 => "まぶたをとじて",
|
380
|
+
24 => "キミとボク",
|
381
|
+
25 => "好きとか嫌いとか",
|
382
|
+
26 => "いつまでも",
|
383
|
+
33 => "抱きしめたい",
|
384
|
+
34 => "75億と1千五百万人愛してる",
|
385
|
+
35 => "自動的な恋",
|
386
|
+
36 => "会いたい",
|
387
|
+
44 => "伝えたいコトバ",
|
388
|
+
45 => "ありがとう",
|
389
|
+
46 => "時間を止めて",
|
390
|
+
55 => "大好き",
|
391
|
+
56 => "素敵な贈り物",
|
392
|
+
66 => "ビューティフルワールド"
|
393
|
+
}
|
394
|
+
),
|
395
|
+
"LNT" => DiceTable::D66Table.new(
|
396
|
+
"ラブ・名前表",
|
397
|
+
D66SortType::ASC,
|
398
|
+
{
|
399
|
+
11 => "シアン/詩庵、思杏 アオイ/葵、蒼生",
|
400
|
+
12 => "ソナタ/奏名太、其方 イズミ/泉、出海",
|
401
|
+
13 => "ツナグ/繋、継 カレン/可憐、歌恋",
|
402
|
+
14 => "ミノル/実、稔 コイ/恋、鯉",
|
403
|
+
15 => "ユウ/優、悠 ラブ/良舞、羅步",
|
404
|
+
16 => "レイン/玲音、霊印 アマミ/甘味、天海",
|
405
|
+
22 => "ソウヤ/想夜、添也 フミ/文、芙美",
|
406
|
+
23 => "イトシ/糸糸、意俊 コイシ/恋志、小石",
|
407
|
+
24 => "エガオ/笑顔、描生 オモイ/想、念",
|
408
|
+
25 => "マコト/誠、真実 マナ/真菜、愛",
|
409
|
+
26 => "ユウリ/有理、悠里 ケイ/恵、佳",
|
410
|
+
33 => "チヒロ/千尋、茅紘 ウララ/麗、占",
|
411
|
+
34 => "トモ/友、杜望 ヒナ/雛、比奈",
|
412
|
+
35 => "ソラ/空、宙 ツユ/露、梅雨",
|
413
|
+
36 => "ユウダイ/雄大、優大 ノゾミ/望、希海",
|
414
|
+
44 => "ハグ/剥、抱 キス/喜好、口吻",
|
415
|
+
45 => "ショウタ/翔太、祥太 アイ/愛、藍",
|
416
|
+
46 => "ジュン/純、潤 ミサオ/美沙緒、操",
|
417
|
+
55 => "リョウ/涼、猟 イチズ/一途、意地図",
|
418
|
+
56 => "シグレ/時雨、紫暮 アオバ/青葉、碧羽",
|
419
|
+
66 => "ロミオ/路美雄、露澪 ロマン/浪漫、絽萬"
|
420
|
+
}
|
421
|
+
),
|
422
|
+
"EKT" => DiceTable::D66Table.new(
|
423
|
+
"エキセントリック・キーワード表",
|
424
|
+
D66SortType::ASC,
|
425
|
+
{
|
426
|
+
11 => "シェフのきまぐれニルヴァーナ",
|
427
|
+
23 => "宇宙人とデート",
|
428
|
+
36 => "ぷるぷる",
|
429
|
+
12 => "おかず食べ過ぎ",
|
430
|
+
24 => "まいにち寝正月",
|
431
|
+
44 => "夜明けのツタンカーメン",
|
432
|
+
13 => "バイバイバイアグラ",
|
433
|
+
25 => "猫がにゃー",
|
434
|
+
45 => "半額の宴",
|
435
|
+
14 => "おふとん王国の攻防",
|
436
|
+
26 => "道草にがい",
|
437
|
+
46 => "超気持ちいいなにか",
|
438
|
+
15 => "ぐるぐるとクルクル",
|
439
|
+
33 => "ブシドーロック!サムライパンク!",
|
440
|
+
55 => "いあ!いあ!はすたあ!",
|
441
|
+
16 => "ゴリラの千年王国",
|
442
|
+
34 => "冷やしインド",
|
443
|
+
56 => "小学生に貯金で負けた",
|
444
|
+
22 => "くもん式フランケンシュタイナー",
|
445
|
+
35 => "生きててよかった",
|
446
|
+
66 => "秒速1ポロンクセマ"
|
447
|
+
}
|
448
|
+
),
|
449
|
+
"ENT" => DiceTable::D66Table.new(
|
450
|
+
"エキセントリック・名前表",
|
451
|
+
D66SortType::ASC,
|
452
|
+
{
|
453
|
+
11 => "ライム/来夢、雷鵡 ミドリ/緑、美登里",
|
454
|
+
12 => "ランポ/乱歩、蘭舗 ビビリ/恐、美々裏",
|
455
|
+
13 => "シラズ/不知、調頭 ヒスイ/翡翠、陽彗",
|
456
|
+
14 => "ムウ/夢生、無 キノコ/茸、紀乃子",
|
457
|
+
15 => "ネコヒコ/猫彦、寝子日子 イヌコ/犬子、夷猫",
|
458
|
+
16 => "ダダ/駄々、蛇陀 キリコ/切子、霧湖",
|
459
|
+
22 => "イケメン/活面、逝麺 ラムネ/来夢音、螺旨",
|
460
|
+
23 => "キョウスケ/狂介、京助 ランマ/乱麻、爛漫",
|
461
|
+
24 => "ネジ/螺子、寝児 アリス/有栖、亜梨子",
|
462
|
+
25 => "マワル/回、環 タタミ/畳、多々実",
|
463
|
+
26 => "キュウ/球、Q ズキン/頭巾、厨琴",
|
464
|
+
33 => "サバン/沙蛮、裂卍 マニア/摩尼亜、間合",
|
465
|
+
34 => "カエル/帰、蛙 エリマキ/襟巻、絵里真希",
|
466
|
+
35 => "ナゾウ/謎宇、何造 カンノン/観音、疳暢",
|
467
|
+
36 => "イッキュウ/一休、逸宮 ミロク/弥勒、診録",
|
468
|
+
44 => "シュール/酒潤、終琉 カプリ/華降、噛布里",
|
469
|
+
45 => "キジン/奇人、鬼神 フシギ/不思議、節黄",
|
470
|
+
46 => "カブキ/歌舞伎、傾 メロン/芽論、女侖",
|
471
|
+
55 => "ジョーカー/冗歌、浄化 ピエロ/秘絵呂、道化師",
|
472
|
+
56 => "ウイロウ/外郎、初弄 マッチャ/抹茶、末耶",
|
473
|
+
66 => "ビックリ/吃驚、! ハテナ/果菜、?"
|
474
|
+
}
|
475
|
+
),
|
476
|
+
"MKT" => DiceTable::D66Table.new(
|
477
|
+
"メランコリー・キーワード表",
|
478
|
+
D66SortType::ASC,
|
479
|
+
{
|
480
|
+
11 => "ごめんなさい",
|
481
|
+
12 => "甘い甘い逃避",
|
482
|
+
13 => "ひとりぼっち",
|
483
|
+
14 => "ズルい世界",
|
484
|
+
15 => "果たせなかった約束",
|
485
|
+
16 => "取り返しのつかない言葉",
|
486
|
+
22 => "いっそ死にたい",
|
487
|
+
23 => "置いてきた夢",
|
488
|
+
24 => "見あげた青空",
|
489
|
+
25 => "きみの嘘",
|
490
|
+
26 => "すれ違う言葉",
|
491
|
+
33 => "幸せだった昨日",
|
492
|
+
34 => "こんなはずじゃなかった",
|
493
|
+
35 => "別れてしまった二つの道",
|
494
|
+
36 => "また会えたらいいね",
|
495
|
+
44 => "ここではないどこか",
|
496
|
+
45 => "青春の終わり",
|
497
|
+
46 => "大好きだった膝の上",
|
498
|
+
55 => "誰かぼくをほめて",
|
499
|
+
56 => "高潔な裏切り",
|
500
|
+
66 => "ナルシズム"
|
501
|
+
}
|
502
|
+
),
|
503
|
+
"MNT" => DiceTable::D66Table.new(
|
504
|
+
"メランコリー・名前表",
|
505
|
+
D66SortType::ASC,
|
506
|
+
{
|
507
|
+
11 => "ヴァイス/灰主、唄守 マシロ/真白、万代",
|
508
|
+
12 => "キズ/傷、疵 ダレカ/誰香、惰麗華",
|
509
|
+
13 => "ユレル/揺、遊玲流 エモ/絵萌、恵面",
|
510
|
+
14 => "オボロ/朧、憶露 ホノカ/仄、穂乃香",
|
511
|
+
15 => "メロ/夢露、芽朗 シズ/静、志津",
|
512
|
+
16 => "ヒイラギ/柊、氷刺木 カタミ/形見、片実",
|
513
|
+
22 => "リネン/理然、離念 スノウ/素皇、珠瑙",
|
514
|
+
23 => "セツナ/切、刹那 シノブ/偲、忍",
|
515
|
+
24 => "ナミダ/涙、波太 カスカ/霞歌、幽",
|
516
|
+
25 => "ムスビ/結、息日 カコ/過去、寡子",
|
517
|
+
26 => "ウソ/嘘、宇曽 アイカ/哀歌、愛香",
|
518
|
+
33 => "ペイン/閉音、病印 ツラミ/辛美、貫実",
|
519
|
+
34 => "ヨリミチ/寄道、頼道 シラユキ/白雪、知由樹",
|
520
|
+
35 => "ヒトリ/独、一人 オトナ/音鳴、乙菜",
|
521
|
+
36 => "スバル/昴、透遙 ハルカ/遥、晴香",
|
522
|
+
44 => "バイバイ/梅云、吠々 バニラ/香子蘭、芭韮",
|
523
|
+
45 => "トオル/透、通 リツ/律、慄",
|
524
|
+
46 => "タビ/旅、足袋 チギリ/契、千切",
|
525
|
+
55 => "サイゴ/彩吾、最期 サクラ/桜、咲良",
|
526
|
+
56 => "アワレ/憐、哀 ヒメイ/悲鳴、姫衣",
|
527
|
+
66 => "ヘヴン/戸聞、天国 ガラス/硝子、枯州"
|
528
|
+
}
|
529
|
+
),
|
530
|
+
"OPA" => DiceTable::D66Table.new(
|
531
|
+
"オトダマ性格表A",
|
532
|
+
D66SortType::ASC,
|
533
|
+
{
|
534
|
+
11 => "さわやか",
|
535
|
+
12 => "単純",
|
536
|
+
13 => "目立ちたがり",
|
537
|
+
14 => "笑い上戸",
|
538
|
+
15 => "P大好き",
|
539
|
+
16 => "がんばり屋",
|
540
|
+
22 => "ひょうきん",
|
541
|
+
23 => "ほれっぽい",
|
542
|
+
24 => "勇敢",
|
543
|
+
25 => "好奇心旺盛",
|
544
|
+
26 => "優しい",
|
545
|
+
33 => "八方美人",
|
546
|
+
34 => "博愛",
|
547
|
+
35 => "感情的",
|
548
|
+
36 => "おしゃべり",
|
549
|
+
44 => "無鉄砲",
|
550
|
+
45 => "元気",
|
551
|
+
46 => "楽観的",
|
552
|
+
55 => "自信家",
|
553
|
+
56 => "自由",
|
554
|
+
66 => "好戦的"
|
555
|
+
}
|
556
|
+
),
|
557
|
+
"OPB" => DiceTable::D66Table.new(
|
558
|
+
"オトダマ性格表B",
|
559
|
+
D66SortType::ASC,
|
560
|
+
{
|
561
|
+
11 => "悲観的",
|
562
|
+
12 => "大人しい",
|
563
|
+
13 => "臆病",
|
564
|
+
14 => "クール",
|
565
|
+
15 => "のんき",
|
566
|
+
16 => "マジメ",
|
567
|
+
22 => "夢想家",
|
568
|
+
23 => "常識人",
|
569
|
+
24 => "サイコ",
|
570
|
+
25 => "おおらか",
|
571
|
+
26 => "平和主義者",
|
572
|
+
33 => "慎重",
|
573
|
+
34 => "合理主義者",
|
574
|
+
35 => "無口",
|
575
|
+
36 => "照れ屋",
|
576
|
+
44 => "おひとよし",
|
577
|
+
45 => "なまけもの",
|
578
|
+
46 => "腰が低い",
|
579
|
+
55 => "疑い深い",
|
580
|
+
56 => "謙虚",
|
581
|
+
66 => "嘘つき"
|
582
|
+
}
|
583
|
+
),
|
584
|
+
"OHT" => DiceTable::D66Table.new(
|
585
|
+
"オトダマ趣味表",
|
586
|
+
D66SortType::ASC,
|
587
|
+
{
|
588
|
+
11 => "散歩",
|
589
|
+
23 => "温泉",
|
590
|
+
36 => "オークション",
|
591
|
+
12 => "うわさ話",
|
592
|
+
24 => "ギャンブル",
|
593
|
+
44 => "パズル",
|
594
|
+
13 => "寝る",
|
595
|
+
25 => "動物",
|
596
|
+
45 => "占い",
|
597
|
+
14 => "読書",
|
598
|
+
26 => "アニメ",
|
599
|
+
46 => "焼き肉",
|
600
|
+
15 => "アイドル",
|
601
|
+
33 => "ガーデニング",
|
602
|
+
55 => "スポーツ観戦",
|
603
|
+
16 => "甘味",
|
604
|
+
34 => "漫画",
|
605
|
+
56 => "ゲーム",
|
606
|
+
22 => "飲み会",
|
607
|
+
35 => "ドラマ",
|
608
|
+
66 => "動画配信"
|
609
|
+
}
|
610
|
+
),
|
611
|
+
"OLT" => DiceTable::D66Table.new(
|
612
|
+
"オトダマ外見表",
|
613
|
+
D66SortType::ASC,
|
614
|
+
{
|
615
|
+
11 => "デフォルト",
|
616
|
+
12 => "王子様/お姫様",
|
617
|
+
13 => "和装",
|
618
|
+
14 => "獣系",
|
619
|
+
15 => "ゴス",
|
620
|
+
16 => "眼鏡",
|
621
|
+
22 => "スポーツ",
|
622
|
+
23 => "軍服",
|
623
|
+
24 => "天使/悪魔の羽",
|
624
|
+
44 => "季節イベント",
|
625
|
+
25 => "学生服",
|
626
|
+
26 => "メガホン",
|
627
|
+
33 => "スポーツ系",
|
628
|
+
34 => "パンク",
|
629
|
+
35 => "フォーマル",
|
630
|
+
36 => "ジャージ",
|
631
|
+
45 => "白衣",
|
632
|
+
46 => "童話コス",
|
633
|
+
55 => "バニー",
|
634
|
+
56 => "水着",
|
635
|
+
66 => "戦隊コス"
|
636
|
+
}
|
637
|
+
),
|
638
|
+
"OIT" => DiceTable::Table.new(
|
639
|
+
"オトダマ一人称表",
|
640
|
+
"2D6",
|
641
|
+
[
|
642
|
+
"それがし",
|
643
|
+
"おいら/あたい",
|
644
|
+
"自分の名前",
|
645
|
+
"おれ/あたし",
|
646
|
+
"わたくし",
|
647
|
+
"私",
|
648
|
+
"ぼく/うち",
|
649
|
+
"自分",
|
650
|
+
"俺様/あたくし",
|
651
|
+
"余/妾",
|
652
|
+
"ミー"
|
653
|
+
]
|
654
|
+
),
|
655
|
+
"OYT" => DiceTable::Table.new(
|
656
|
+
"オトダマ呼び名表",
|
657
|
+
"2D6",
|
658
|
+
[
|
659
|
+
"ユー",
|
660
|
+
"(PCの名前)たん/きゅん",
|
661
|
+
"同志(PCの名前)",
|
662
|
+
"キミ",
|
663
|
+
"(PCの名前)くん/ちゃん",
|
664
|
+
"マスター",
|
665
|
+
"(PCの名前)さん",
|
666
|
+
"(PCの名前)様",
|
667
|
+
"あなた",
|
668
|
+
"(PCの名前)氏/女史",
|
669
|
+
"(PCの名前)殿"
|
670
|
+
]
|
671
|
+
),
|
672
|
+
"ORT" => DiceTable::Table.new(
|
673
|
+
"リアクション表",
|
674
|
+
"1D6",
|
675
|
+
[
|
676
|
+
"オトダマの表の性格を表すセリフ",
|
677
|
+
"オトダマの裏の性格を表すセリフ",
|
678
|
+
"PCを応援するセリフ",
|
679
|
+
"PCをからかうセリフ",
|
680
|
+
"趣味にまつわるセリフ",
|
681
|
+
"攻撃を行うときのセリフ"
|
682
|
+
]
|
683
|
+
),
|
684
|
+
"OMT" => DiceTable::Table.new(
|
685
|
+
"出会い表",
|
686
|
+
"2D6",
|
687
|
+
[
|
688
|
+
"名門オトダマ使い。あなたは、代々オトダマを操る一族に生まれました。あなたには、幼い頃から相棒となるオトダマがいます。あなたは、そのオトダマと共に育ちました。",
|
689
|
+
"傷ついたオトダマ。ある日、あなたは傷ついたオトダマを発見しました。意識を失い、今にも消えそうなオトダマに触れると、オトダマは意識を取り戻し、あなたを恩人と慕うようになりました。",
|
690
|
+
"見えないお友達。あなたは孤独な幼年期を過ごしてきました。そのとき、あなたを導いてくれたのが、あなたのオトダマです。オトダマは、あなたに他人のココロのウタを聞き、人々を助ける術を教えてくれました。",
|
691
|
+
"再生。あなたはオトクイに自分のココロのウタを食べられました。オトダマ使いに憑依したオトクイが倒されたとき、自分のココロの中から新たなオトダマが生まれました。",
|
692
|
+
"愛するココロ。あなたには、子どもの頃から大好きだったウタがありました。ある日、そのウタを口ずさんでいるとき、突然、後ろから拍手の音が聞こえました。振り向くと、そこにオトダマがいました。",
|
693
|
+
"動画。あなたは、動画を通じて歌を聞くのが好きでした。あるとき、聞いたことのないような素敵なウタが聞こえてきたかと思うと、画面の向こうからオトダマが飛び出してきました。",
|
694
|
+
"喪失。ある日、あなたは悲劇に見舞われました。そのとき、あなたはとても大切にしていた何かを失いました。その失ったものを補うかのように、あなたの側にオトダマが現れました。",
|
695
|
+
"受け継がれるウタ。あなたのオトダマは、あなたが大好きだった人の相棒だったオトダマでした。しかし、その人は悲劇に出会い、あなたの元を去りました。そのとき、あなたにオトダマを託したのです。",
|
696
|
+
"謎のメール。ある日、友人からあなたの元に一通のメールが送られてきました。そのメールを開くと、不思議な音楽が流れ出し、オトダマが現れました。その友人とは、それ以来、連絡がつきません。",
|
697
|
+
"封印。ある日、あなたは古いレコード屋で一曲の音盤に出会います。その音盤を再生してみると、オトダマが現れました。そして、オトダマは「封印を解いてくれたお礼に、しばらく付き合ってあげる」と言ってきました。",
|
698
|
+
"一目惚れ。以前、あなたは様々な楽曲を発表していました。すると、その楽曲に一目惚れしたと言って、あなたの元にオトダマが押しかけてきました。以来、そのオトダマに付きまとわれる毎日です。"
|
699
|
+
]
|
700
|
+
),
|
701
|
+
}.freeze
|
702
|
+
|
703
|
+
register_prefix(['R([A-DS]|\d+).*'] + TABLES.keys)
|
704
|
+
end
|
705
|
+
end
|
706
|
+
end
|