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,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class IthaWenUa < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'IthaWenUa'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'イサー・ウェン=アー'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'いさあうえんああ'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = "1D100<=m 方式の判定で成否、クリティカル(01)・ファンブル(00)を自動判定します。\n"
|
17
|
+
|
18
|
+
def check_1D100(total, _dice_total, cmp_op, target)
|
19
|
+
return '' if target == '?'
|
20
|
+
return '' unless cmp_op == :<=
|
21
|
+
|
22
|
+
diceValue = total % 100
|
23
|
+
dice0 = diceValue / 10 # 10の位を代入
|
24
|
+
dice1 = diceValue % 10 # 1の位を代入
|
25
|
+
|
26
|
+
if (dice0 == 0) && (dice1 == 1)
|
27
|
+
' > 01 > クリティカル'
|
28
|
+
elsif (dice0 == 0) && (dice1 == 0)
|
29
|
+
' > 00 > ファンブル'
|
30
|
+
elsif total <= target
|
31
|
+
' > 成功'
|
32
|
+
else
|
33
|
+
' > 失敗'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class JamesBond < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'JamesBond'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ジェームズ・ボンド007'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'しええむすほんと007'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・1D100の目標値判定で、効果レーティングを1~4で自動判定。
|
18
|
+
例)1D100<=50
|
19
|
+
JamesBond : (1D100<=50) → 20 → 効果3(良)
|
20
|
+
INFO_MESSAGE_TEXT
|
21
|
+
|
22
|
+
def check_1D100(total, _dice_total, cmp_op, target) # ゲーム別成功度判定(1d100)
|
23
|
+
return '' if target == '?'
|
24
|
+
return '' unless cmp_op == :<=
|
25
|
+
|
26
|
+
base = ((target + 9) / 10).floor
|
27
|
+
|
28
|
+
if total >= 100
|
29
|
+
# 100は常に失敗
|
30
|
+
" > 失敗"
|
31
|
+
elsif total <= base
|
32
|
+
" > 効果1(完璧)"
|
33
|
+
elsif total <= base * 2
|
34
|
+
" > 効果2(かなり良い)"
|
35
|
+
elsif total <= base * 5
|
36
|
+
" > 効果3(良)"
|
37
|
+
elsif total <= target
|
38
|
+
" > 効果4(まあまあ)"
|
39
|
+
else
|
40
|
+
" > 失敗"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,394 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Kamigakari < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'Kamigakari'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = '神我狩'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'かみかかり'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・各種表
|
18
|
+
・感情表(ET)
|
19
|
+
・霊紋消費の代償表(RT)
|
20
|
+
・伝奇名字・名前決定表(NT)
|
21
|
+
・魔境臨界表(KT)
|
22
|
+
・獲得素材チャート(MTx xは[法則障害]の[強度]。省略時は1)
|
23
|
+
例) MT MT3 MT9
|
24
|
+
・D66ダイスあり
|
25
|
+
INFO_MESSAGE_TEXT
|
26
|
+
|
27
|
+
def initialize(command)
|
28
|
+
super(command)
|
29
|
+
|
30
|
+
@sort_add_dice = true
|
31
|
+
@enabled_d66 = true
|
32
|
+
@d66_sort_type = D66SortType::NO_SORT
|
33
|
+
end
|
34
|
+
|
35
|
+
def eval_game_system_specific_command(command)
|
36
|
+
tableName = ""
|
37
|
+
result = ""
|
38
|
+
|
39
|
+
debug("eval_game_system_specific_command command", command)
|
40
|
+
|
41
|
+
case command.upcase
|
42
|
+
|
43
|
+
when "RT"
|
44
|
+
tableName, result, number = getReimonCompensationTableResult
|
45
|
+
|
46
|
+
when /^MT(\d*)$/
|
47
|
+
rank = Regexp.last_match(1)
|
48
|
+
rank ||= 1
|
49
|
+
rank = rank.to_i
|
50
|
+
tableName, result, number = getGetMaterialTableResult(rank)
|
51
|
+
|
52
|
+
else
|
53
|
+
return roll_tables(command, TABLES)
|
54
|
+
end
|
55
|
+
|
56
|
+
if result.empty?
|
57
|
+
return ""
|
58
|
+
end
|
59
|
+
|
60
|
+
text = "#{tableName}(#{number}):#{result}"
|
61
|
+
return text
|
62
|
+
end
|
63
|
+
|
64
|
+
def getReimonCompensationTableResult
|
65
|
+
tableName = "霊紋消費の代償表"
|
66
|
+
|
67
|
+
table = [
|
68
|
+
'邪神化:物理法則を超過しすぎた代償として、霊魂そのものが歪み、PCは即座にアラミタマへと変貌する。アラミタマ化したPCは、いずこかへと消え去る。',
|
69
|
+
'存在消滅:アラミタマ化を最後の力で抑え込む。だがその結果、PCの霊魂は燃え尽きてしまい、この世界から消滅する。そのPCは[状態変化:死亡]となり死体も残らない。',
|
70
|
+
'死亡:霊魂の歪みをかろうじて食い止めるが、霊魂が崩壊する。PCは[状態変化:死亡]となるが遺体は残る。',
|
71
|
+
'霊魂半壊:霊魂の歪みを食い止めるものの、霊魂そのものに致命的な負傷を受け、全身に障害が残る。それに伴って霊紋も消滅し、一般人へと戻る。',
|
72
|
+
'記憶消滅:奇跡的に霊魂の摩耗による身体的な悪影響を免れる。時間を置くことで霊紋も回復するが、精神的に影響を受け、すべての記憶を失ってしまう。',
|
73
|
+
'影響なし:奇跡的に、霊魂の摩耗による悪影響を完全に退け、さらに霊紋の回復も早期を見込める。肉体や精神にも、特に影響はない。',
|
74
|
+
]
|
75
|
+
result, number = get_table_by_1d6(table)
|
76
|
+
|
77
|
+
return tableName, result, number
|
78
|
+
end
|
79
|
+
|
80
|
+
def getGetMaterialTableResult(rank)
|
81
|
+
tableName = "獲得素材チャート"
|
82
|
+
table = [
|
83
|
+
'真紅の',
|
84
|
+
'ざらつく',
|
85
|
+
'紺碧の',
|
86
|
+
'鋭い',
|
87
|
+
'黄金の',
|
88
|
+
'柔らかな',
|
89
|
+
'銀色の',
|
90
|
+
'尖った',
|
91
|
+
'純白の',
|
92
|
+
'硬い',
|
93
|
+
'漆黒の',
|
94
|
+
'輝く',
|
95
|
+
'なめらかな',
|
96
|
+
'濁った',
|
97
|
+
'ふさふさの',
|
98
|
+
'邪悪な',
|
99
|
+
'粘つく',
|
100
|
+
'聖なる',
|
101
|
+
'灼熱の',
|
102
|
+
'炎の',
|
103
|
+
'氷結の',
|
104
|
+
'氷の',
|
105
|
+
'熱い',
|
106
|
+
'風の',
|
107
|
+
'冷たい',
|
108
|
+
'雷の',
|
109
|
+
'土の',
|
110
|
+
'幻の',
|
111
|
+
'骨状の',
|
112
|
+
'刻印の',
|
113
|
+
'牙状の',
|
114
|
+
'鱗状の',
|
115
|
+
'石状の',
|
116
|
+
'宝石状の',
|
117
|
+
'毛皮状の',
|
118
|
+
'羽根状の',
|
119
|
+
]
|
120
|
+
|
121
|
+
result, number = get_table_by_d66(table)
|
122
|
+
result += "断片"
|
123
|
+
|
124
|
+
effect, number2 = getMaterialEffect(rank)
|
125
|
+
number = "#{number},#{number2}"
|
126
|
+
|
127
|
+
price = getPrice(effect)
|
128
|
+
|
129
|
+
result = "#{result}。#{effect}"
|
130
|
+
result += ":#{price}" unless price.nil?
|
131
|
+
|
132
|
+
return tableName, result, number
|
133
|
+
end
|
134
|
+
|
135
|
+
def getMaterialEffect(rank)
|
136
|
+
number = @randomizer.roll_once(6)
|
137
|
+
|
138
|
+
result = ""
|
139
|
+
type = ""
|
140
|
+
if number < 6
|
141
|
+
result, number2 = getMaterialEffectNomal(rank)
|
142
|
+
type = "よく見つかる素材"
|
143
|
+
else
|
144
|
+
result, number2 = getMaterialEffectRare()
|
145
|
+
type = "珍しい素材"
|
146
|
+
end
|
147
|
+
|
148
|
+
result = "#{type}:#{result}"
|
149
|
+
number = "#{number},#{number2}"
|
150
|
+
|
151
|
+
return result, number
|
152
|
+
end
|
153
|
+
|
154
|
+
def getMaterialEffectNomal(rank)
|
155
|
+
table = [
|
156
|
+
[13, '体力+n'],
|
157
|
+
[16, '敏捷+n'],
|
158
|
+
[23, '知性+n'],
|
159
|
+
[26, '精神+n'],
|
160
|
+
[33, '幸運+n'],
|
161
|
+
[35, '物D+n'],
|
162
|
+
[41, '魔D+n'],
|
163
|
+
[43, '行動+n'],
|
164
|
+
[46, '生命+n×3'],
|
165
|
+
[53, '装甲+n'],
|
166
|
+
[56, '結界+n'],
|
167
|
+
[63, '移動+nマス'],
|
168
|
+
[66, '※PCの任意'],
|
169
|
+
]
|
170
|
+
|
171
|
+
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
172
|
+
|
173
|
+
result = get_table_by_number(number, table)
|
174
|
+
debug("getMaterialEffectNomal result", result)
|
175
|
+
|
176
|
+
if result =~ /\+n/
|
177
|
+
power, number2 = getMaterialEffectPower(rank)
|
178
|
+
|
179
|
+
result = result.sub(/\+n/, "+#{power}")
|
180
|
+
number = "#{number},#{number2}"
|
181
|
+
end
|
182
|
+
|
183
|
+
return result, number
|
184
|
+
end
|
185
|
+
|
186
|
+
def getMaterialEffectPower(rank)
|
187
|
+
table = [
|
188
|
+
[4, [1, 1, 1, 2, 2, 3]],
|
189
|
+
[8, [1, 1, 2, 2, 3, 3]],
|
190
|
+
[9, [1, 2, 3, 3, 4, 5]],
|
191
|
+
]
|
192
|
+
|
193
|
+
rank = 9 if rank > 9
|
194
|
+
rankTable = get_table_by_number(rank, table)
|
195
|
+
power, number = get_table_by_1d6(rankTable)
|
196
|
+
|
197
|
+
return power, number
|
198
|
+
end
|
199
|
+
|
200
|
+
def getMaterialEffectRare()
|
201
|
+
table = [[3, '**付与'],
|
202
|
+
[5, '**半減'],
|
203
|
+
[6, '※GMの任意'],]
|
204
|
+
|
205
|
+
number = @randomizer.roll_once(6)
|
206
|
+
result = get_table_by_number(number, table)
|
207
|
+
debug('getMaterialEffectRare result', result)
|
208
|
+
|
209
|
+
if result =~ /\*\*/
|
210
|
+
attribute, number2 = getAttribute()
|
211
|
+
result = result.sub(/\*\*/, attribute.to_s)
|
212
|
+
number = "#{number},#{number2}"
|
213
|
+
end
|
214
|
+
|
215
|
+
return result, number
|
216
|
+
end
|
217
|
+
|
218
|
+
def getAttribute()
|
219
|
+
table = [
|
220
|
+
[21, '[火炎]'],
|
221
|
+
[33, '[冷気]'],
|
222
|
+
[43, '[電撃]'],
|
223
|
+
[53, '[風圧]'],
|
224
|
+
[56, '[幻覚]'],
|
225
|
+
[62, '[魔毒]'],
|
226
|
+
[64, '[磁力]'],
|
227
|
+
[66, '[閃光]'],
|
228
|
+
]
|
229
|
+
|
230
|
+
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
231
|
+
|
232
|
+
result = get_table_by_number(number, table)
|
233
|
+
|
234
|
+
return result, number
|
235
|
+
end
|
236
|
+
|
237
|
+
def getPrice(effect)
|
238
|
+
power = 0
|
239
|
+
|
240
|
+
case effect
|
241
|
+
when /\+(\d+)/
|
242
|
+
power = Regexp.last_match(1).to_i
|
243
|
+
when /付与/
|
244
|
+
power = 3
|
245
|
+
when /半減/
|
246
|
+
power = 4
|
247
|
+
else
|
248
|
+
power = 0
|
249
|
+
end
|
250
|
+
|
251
|
+
table = [nil,
|
252
|
+
'500G(効果値:1)',
|
253
|
+
'1000G(効果値:2)',
|
254
|
+
'1500G(効果値:3)',
|
255
|
+
'2000G(効果値:4)',
|
256
|
+
'3000G(効果値:5)',]
|
257
|
+
price = table[power]
|
258
|
+
|
259
|
+
return price
|
260
|
+
end
|
261
|
+
|
262
|
+
TABLES = {
|
263
|
+
"ET" => DiceTable::D66Table.new(
|
264
|
+
"感情表",
|
265
|
+
D66SortType::NO_SORT,
|
266
|
+
{
|
267
|
+
11 => "運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。",
|
268
|
+
12 => "運命/そのキャラクターに、運命的、あるいは宿命的なものを感じている。",
|
269
|
+
13 => "家族/そのキャラクターに、家族のような親近感をいだいている。",
|
270
|
+
14 => "家族/そのキャラクターに、家族のような親近感をいだいている。",
|
271
|
+
15 => "腐れ縁/そのキャラクターに、腐れ縁を感じている。",
|
272
|
+
16 => "腐れ縁/そのキャラクターに、腐れ縁を感じている。",
|
273
|
+
21 => "師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。",
|
274
|
+
22 => "師弟/そのキャラクターとは、まるで師弟のような関係だと感じている。どちらが弟子で、どちらが師匠かは相談して決定する。",
|
275
|
+
23 => "好敵手/そのキャラクターを、好敵手だと感じている。",
|
276
|
+
24 => "好敵手/そのキャラクターを、好敵手だと感じている。",
|
277
|
+
25 => "親近感/そのキャラクターに、親近感をいだいている。",
|
278
|
+
26 => "親近感/そのキャラクターに、親近感をいだいている。",
|
279
|
+
31 => "誠意/そのキャラクターに、誠実さを感じている。",
|
280
|
+
32 => "誠意/そのキャラクターに、誠実さを感じている。",
|
281
|
+
33 => "友情/そのキャラクターに、友情をいだいている。",
|
282
|
+
34 => "友情/そのキャラクターに、友情をいだいている。",
|
283
|
+
35 => "尊敬/そのキャラクターに、尊敬をいだいている。",
|
284
|
+
36 => "尊敬/そのキャラクターに、尊敬をいだいている。",
|
285
|
+
41 => "庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。",
|
286
|
+
42 => "庇護/そのキャラクターに、庇護の感情をいだいている。どちらが保護者で、どちらが被保護者かは相談して決定する。",
|
287
|
+
43 => "好感/そのキャラクターに、好感をいだいている。",
|
288
|
+
44 => "好感/そのキャラクターに、好感をいだいている。",
|
289
|
+
45 => "興味/そのキャラクターに、興味をいだいている。",
|
290
|
+
46 => "興味/そのキャラクターに、興味をいだいている。",
|
291
|
+
51 => "感銘/そのキャラクターに、感銘をいだいている。",
|
292
|
+
52 => "感銘/そのキャラクターに、感銘をいだいている。",
|
293
|
+
53 => "畏怖/そのキャラクターに、畏怖をいだいている。",
|
294
|
+
54 => "畏怖/そのキャラクターに、畏怖をいだいている。",
|
295
|
+
55 => "お気に入り/そのキャラクターを、気に入っている。",
|
296
|
+
56 => "お気に入り/そのキャラクターを、気に入っている。",
|
297
|
+
61 => "愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。",
|
298
|
+
62 => "愛情/そのキャラクターに愛情、またはそれに近い執着心をいだいている。",
|
299
|
+
63 => "信頼/そのキャラクターに、信頼を感じている。",
|
300
|
+
64 => "信頼/そのキャラクターに、信頼を感じている。",
|
301
|
+
65 => "*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。",
|
302
|
+
66 => "*PCの任意/プレイヤー、またはGMが設定した任意の感情をいだいている。"
|
303
|
+
}
|
304
|
+
),
|
305
|
+
"KT" => DiceTable::D66Table.new(
|
306
|
+
"魔境臨界表",
|
307
|
+
D66SortType::NO_SORT,
|
308
|
+
{
|
309
|
+
11 => "時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。",
|
310
|
+
12 => "時空の捻じれ\n現在地の時空が捻じれ、PC全員は即時に[侵入エリア]へと戻る。",
|
311
|
+
13 => "強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。",
|
312
|
+
14 => "強敵登場\n突如、<崇り神>化した[モノノケ]が出撃する。GMは、PCの[世界干渉LV]の平均+3の[LV]を持つ任意の[モノノケ]を1体選び任意の[探索エリア]に配置。そこでは[迂回]不可で[戦闘]が発生する。",
|
313
|
+
15 => "影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。",
|
314
|
+
16 => "影の手\n瘴気で形成された無数の手がPC達を握りつぶそうとする。PC全員は[効果種別:魔法攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:20+PCの[世界干渉LV]の平均/魔法ダメージ:20×PCの[世界干渉LV]の平均/抵抗[半減]]を受ける。",
|
315
|
+
21 => "無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。",
|
316
|
+
22 => "無数の邪眼\n空間全体に恐ろしい邪眼が出現する。PC全員は、[大休止]するまで[状態変化:暗闇・苦痛]となる。",
|
317
|
+
23 => "空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。",
|
318
|
+
24 => "空間崩壊\n突如として、魔境の空間が崩壊する。PC全員は[効果種別:物理攻撃/距離:戦闘地帯/対象:戦闘地帯/達成値:30+PCの[世界干渉LV]の平均/物理ダメージ:30×PCの[世界干渉LV]の平均]]を受ける。",
|
319
|
+
25 => "防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。",
|
320
|
+
26 => "防具腐食\n周辺から異様な霧が立ち込め、防具を腐食する。PC全員は、[所持・装備]中の任意の[アイテム:防具]1つを失う。",
|
321
|
+
31 => "素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。",
|
322
|
+
32 => "素材消失\n周囲から異様な光が零れ、所持中の[素材]を消失させる。PC全員が[所持]中の[素材]が、すべて消滅する。",
|
323
|
+
33 => "なし\n特に何も起こらない。",
|
324
|
+
34 => "なし\n特に何も起こらない。",
|
325
|
+
35 => "モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。",
|
326
|
+
36 => "モノノケ強襲\n突如として<崇り神>化した[モノノケ]が出現し、PCたちに襲いかかる。GMはPCの[世界干渉LV]の平均+2の[LV]を持つ任意の[モノノケ]を2体選び、PC達の前に出現させ、即座に[戦闘]を開始する。",
|
327
|
+
41 => "休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。",
|
328
|
+
42 => "休息妨害\nPCが休息しようとするたびに、さまざまな空間から、触手や毒蠱などが出現して襲いかかってくる。PCたちは以降、[魔境討伐]が終了するまで[大休止]を行えない。",
|
329
|
+
43 => "龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。",
|
330
|
+
44 => "龍脈破壊\n霊力が暴走して空間が歪み、[霊力]が狂う。PC全員は即座に[霊力]をすべて振り直す。",
|
331
|
+
45 => "固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。",
|
332
|
+
46 => "固有時間停止\nPCたちの肉体の一部が灰色と化し、動かなくなる。PC全員は[タイミング:準備・防御・特殊]から1つ選び、以後その[タイミング]を消費できなくなる。",
|
333
|
+
51 => "龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。",
|
334
|
+
52 => "龍脈不順\n霊力が突如として混濁し、[霊力]の循環に悪影響が発生する。PC全員は以後、[魔境討伐]が終了するまで[霊力操作]が行えない。",
|
335
|
+
53 => "術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。",
|
336
|
+
54 => "術技封印\n周囲の空気が変貌し、悪影響が起こる。PC全員は以後、修得済みの《タレント》中、使用する[コスト]が最も多いもの1つが[魔境討伐]終了まで使用不能となる。[コスト:なし]ばかりの場合、GMが任意で1つを決定する。",
|
337
|
+
55 => "装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。",
|
338
|
+
56 => "装飾品消滅\n周囲が青い光に包まれると、なぜかPCたちの装飾品が失われている。PC全員は[所持・装備中]の[アイテム・装飾]をすべて失う。",
|
339
|
+
61 => "愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。",
|
340
|
+
62 => "愚者の黄金消失\n周囲が赤い光に包まれると、なぜかPCたちの[G]が失われている。PC全員は、[所持金]が[半減]する。",
|
341
|
+
63 => "GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。",
|
342
|
+
64 => "GMの任意\nこの表のなかから、GMが効果を1つ選んで発生させる。",
|
343
|
+
65 => "臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。",
|
344
|
+
66 => "臨界重複\n[魔境臨界]が2回発生する。GMはこの表を2回振り、効果をそれぞれ適応できる。再び「臨界重複」が発生した場合、[GMの任意]1回として扱う。"
|
345
|
+
}
|
346
|
+
),
|
347
|
+
"NT" => DiceTable::D66Table.new(
|
348
|
+
"伝奇名字・名前決定表",
|
349
|
+
D66SortType::NO_SORT,
|
350
|
+
{
|
351
|
+
11 => "御剣(みつるぎ) 陸/凛",
|
352
|
+
12 => "獅子内(ししうち) 大和/楓",
|
353
|
+
13 => "白銀(はくぎん) 隼人/桜",
|
354
|
+
14 => "竹内(たけのうち) 真/遥",
|
355
|
+
15 => "古太刀(こだち) 大地/美咲",
|
356
|
+
16 => "空閑(くが) 俊/真央",
|
357
|
+
21 => "鬼形(おにがた) 諒/舞",
|
358
|
+
22 => "御巫(みかんなぎ) 匠/七海",
|
359
|
+
23 => "護摩堂(ごまどう) 仁/千尋",
|
360
|
+
24 => "龍円(りゅうえん) 拓真/茜",
|
361
|
+
25 => "鏡部(かがみべ) 京/明日香",
|
362
|
+
26 => "犬神(いぬがみ) 剛/栞",
|
363
|
+
31 => "明月院(めいげついん) 葵/唯",
|
364
|
+
32 => "百目鬼(どうめき) 蓮也/萌",
|
365
|
+
33 => "恐神(おそがみ) 達也/綾香",
|
366
|
+
34 => "蘭(あららぎ) 龍之介/梓",
|
367
|
+
35 => "珠輝(たまき) 章/瞳",
|
368
|
+
36 => "眼龍(がんりゅう) 圭/沙織",
|
369
|
+
41 => "鉄砲塚(てっぽうづか) 雅人/沙良",
|
370
|
+
42 => "檻神(おりがみ) 直哉/弥生",
|
371
|
+
43 => "不死原(ふじわら) 純/千秋",
|
372
|
+
44 => "九郎座(くろうざ) 武蔵/春菜",
|
373
|
+
45 => "土御門(つちみかど) 亮介/翠",
|
374
|
+
46 => "十六夜(いざよい) 啓二/双葉",
|
375
|
+
51 => "転法輪(てんぽうりん) 英雄/麗菜",
|
376
|
+
52 => "執行(しぎょう) 響/小百合",
|
377
|
+
53 => "祝(ほうり) 良太郎/陽奈",
|
378
|
+
54 => "神尊(こうそ) 智/紫苑",
|
379
|
+
55 => "芦屋(あしや) 孝之/香澄",
|
380
|
+
56 => "七社(ななしゃ) 克己/風香",
|
381
|
+
61 => "騎馬(きば) 哲也/詩乃",
|
382
|
+
62 => "当麻(とうま) 玄/沙耶",
|
383
|
+
63 => "狐塚(きつねづか) 北斗/麻耶",
|
384
|
+
64 => "天神林(てんじんばやし) 空/晶",
|
385
|
+
65 => "明嵐(めあらし) 八雲/乙葉",
|
386
|
+
66 => "草壁(くさかべ) 大悟/文"
|
387
|
+
}
|
388
|
+
),
|
389
|
+
}.freeze
|
390
|
+
|
391
|
+
register_prefix(['RT', 'MT(\d*)'] + TABLES.keys)
|
392
|
+
end
|
393
|
+
end
|
394
|
+
end
|