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,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class WARPS < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'WARPS'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ワープス'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'わあふす'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = "失敗、成功度の自動判定を行います。\n"
|
17
|
+
|
18
|
+
def check_2D6(total, dice_total, _dice_list, cmp_op, target)
|
19
|
+
if dice_total <= 2
|
20
|
+
" > クリティカル"
|
21
|
+
elsif dice_total >= 12
|
22
|
+
" > ファンブル"
|
23
|
+
elsif cmp_op == :<= && target != "?"
|
24
|
+
if total <= target
|
25
|
+
" > #{target - total}成功"
|
26
|
+
else
|
27
|
+
" > 失敗"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class WaresBlade < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'WaresBlade'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ワースブレイド'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'わあすふれいと'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = "nD10>=m 方式の判定で成否、完全成功、完全失敗を自動判定します。\n"
|
17
|
+
|
18
|
+
def check_nD10(total, _dice_total, dice_list, cmp_op, target)
|
19
|
+
return '' if target == '?'
|
20
|
+
return '' unless cmp_op == :>=
|
21
|
+
|
22
|
+
if dice_list.count(10) == dice_list.size
|
23
|
+
' > 完全成功'
|
24
|
+
elsif dice_list.count(1) == dice_list.size
|
25
|
+
' > 絶対失敗'
|
26
|
+
elsif total >= target
|
27
|
+
' > 成功'
|
28
|
+
else
|
29
|
+
' > 失敗'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,336 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Warhammer < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'Warhammer'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ウォーハンマー'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'うおおはんまあ'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・クリティカル表(whHxx/whAxx/whBxx/whLxx)
|
18
|
+
"WH部位 クリティカル値"の形で指定します。部位は「H(頭部)」「A(腕)」「B(胴体)」「L(足)」の4カ所です。
|
19
|
+
例)whH10 whA5 WHL4
|
20
|
+
・命中判定(WHx@t)
|
21
|
+
"WH(命中値)@(種別)"の形で指定します。
|
22
|
+
種別は脚の数を数字、翼が付いているものは「W」、手が付いているものは「H」で書きます。
|
23
|
+
「2H(二足)」「2W(有翼二足)」「4(四足)」「4H(半人四足)」「4W(有翼四足)」「W(鳥類)」となります。
|
24
|
+
命中判定を行って、当たれば部位も表示します。
|
25
|
+
なお、種別指定を省略すると「二足」、「@」だけにすると全種別の命中部位を表示します。(コマンドを忘れた時の対応です)
|
26
|
+
例)wh60 wh43@4W WH65@
|
27
|
+
INFO_MESSAGE_TEXT
|
28
|
+
|
29
|
+
register_prefix(['WH.*'])
|
30
|
+
|
31
|
+
def initialize(command)
|
32
|
+
super(command)
|
33
|
+
|
34
|
+
@round_type = RoundType::CEIL # 端数切り上げに設定
|
35
|
+
end
|
36
|
+
|
37
|
+
def eval_game_system_specific_command(command)
|
38
|
+
output_msg = nil
|
39
|
+
|
40
|
+
case command.upcase
|
41
|
+
|
42
|
+
when /^(WH\d+(@[\dWH]*)?)/i
|
43
|
+
attackCommand = Regexp.last_match(1)
|
44
|
+
output_msg = getAttackResult(attackCommand)
|
45
|
+
|
46
|
+
when /^(WH[HABTLW]\d+)/i
|
47
|
+
criticalCommand = Regexp.last_match(1)
|
48
|
+
output_msg = getCriticalResult(criticalCommand)
|
49
|
+
end
|
50
|
+
|
51
|
+
return output_msg
|
52
|
+
end
|
53
|
+
|
54
|
+
def check_1D100(total, _dice_total, cmp_op, target)
|
55
|
+
return '' if target == '?'
|
56
|
+
return '' unless cmp_op == :<=
|
57
|
+
|
58
|
+
if total <= target
|
59
|
+
" > 成功(成功度#{(target - total) / 10})"
|
60
|
+
else
|
61
|
+
" > 失敗(失敗度#{(total - target) / 10})"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
#################### WHFRP関連 ########################
|
66
|
+
def getCriticalResult(string)
|
67
|
+
# クリティカル効果データ
|
68
|
+
whh = [
|
69
|
+
'01:打撃で状況が把握出来なくなる。次ターンは1回の半アクションしか行なえない。',
|
70
|
+
'02:耳を強打された為、耳鳴りが酷く目眩がする。1Rに渡って一切のアクションを行なえない。',
|
71
|
+
'03:打撃が頭皮を酷く傷つけた。【武器技術度】に-10%。治療を受けるまで継続。',
|
72
|
+
'04:鎧が損傷し当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら1Rの間アクションを行なえない。',
|
73
|
+
'05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30で、立ち上がるには起立アクションが必要。',
|
74
|
+
'06:1d10R気絶。',
|
75
|
+
'07:1d10分気絶。以後CTはサドンデス。',
|
76
|
+
'08:顔がずたずたになって倒れ、以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると片方の視力を失う。',
|
77
|
+
'09:凄まじい打撃により頭蓋骨が粉砕される。死は瞬時に訪れる。',
|
78
|
+
'10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。',
|
79
|
+
]
|
80
|
+
wha = [
|
81
|
+
'01:手に握っていたものを落とす。盾はくくりつけられている為、影響なし。',
|
82
|
+
'02:打撃で腕が痺れ、1Rの間使えなくなる。',
|
83
|
+
'03:手の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。',
|
84
|
+
'04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら腕が痺れ、1Rの間使えなくなる。',
|
85
|
+
'05:腕の機能が失われ、治療を受けるまで回復できない。手で握っていたもの(盾を除く)は落ちる。',
|
86
|
+
'06:腕が砕かれる。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。',
|
87
|
+
'07:手首から先が血まみれの残骸と化す。手で握っていたもの(盾を除く)は落ちる。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると手の機能を失う。',
|
88
|
+
'08:腕は血まみれの肉塊がぶら下がっている状態になる。手で握っていたもの(盾を除く)は落ちる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑健】テストに失敗すると肘から先の機能を失う。',
|
89
|
+
'09:大動脈に傷が及んだ。コンマ数秒の内に損傷した肩から血を噴出して倒れる。ショックと失血により、ほぼ即死する。',
|
90
|
+
'10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。',
|
91
|
+
]
|
92
|
+
whb = [
|
93
|
+
'01:打撃で息が詰まる。1Rの間、キャラクターの全てのテストや攻撃に-20%。',
|
94
|
+
'02:股間への一撃。苦痛のあまり、1Rに渡って一切のアクションを行なえない。',
|
95
|
+
'03:打撃で肋骨がぐちゃぐちゃになる。以後治療を受けるまでの間、【武器技術度】に-10%。',
|
96
|
+
'04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら股間への一撃、1Rに渡って一切のアクションを行なえない。',
|
97
|
+
'05:転んで倒れ、息が詰まって悶絶する。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。',
|
98
|
+
'06:1d10R気絶。',
|
99
|
+
'07:ひどい内出血が起こり、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。',
|
100
|
+
'08:脊髄が粉砕されて倒れ、以後治療を受けるまで無防備状態。以後CTはサドンデスを適用。【頑強】テストに失敗すると腰から下が不随になる。',
|
101
|
+
'09:凄まじい打撃により複数の臓器が破裂し、死は数秒のうちに訪れる。',
|
102
|
+
'10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。',
|
103
|
+
]
|
104
|
+
whl = [
|
105
|
+
'01:よろめく。次のターン、1回の半アクションしか行なえない。',
|
106
|
+
'02:脚が痺れる。1Rに渡って【移動】は半減し、脚に関連する【敏捷】テストに-20%。回避が出来なくなる。',
|
107
|
+
'03:脚の機能が失われ、治療を受けるまで回復しない。【移動】は半減し、脚に関連する【敏捷】テストに-20%。回避が出来なくなる。',
|
108
|
+
'04:鎧が損傷する。当該部位のAP-1。修理するには(職能:鎧鍛冶)テスト。鎧を着けていないなら脚が痺れる、1Rに渡って【移動】は半減し、脚に関連する【敏捷】テストに-20%、回避不可になる。',
|
109
|
+
'05:転んで倒れ、頭がくらくらする。1Rに渡ってあらゆるテストに-30の修正、立ち上がるには起立アクションが必要。',
|
110
|
+
'06:脚が砕かれ、無防備状態。出血がひどく、治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。',
|
111
|
+
'07:脚は血まみれの残骸と化し、無防備状態になる。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると足首から先を失う。',
|
112
|
+
'08:脚は血まみれの肉塊がぶらさがっている状態。以後無防備状態。治療を受けるまで毎Rの被害者のターン開始時に20%で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると膝から下を失う。',
|
113
|
+
'09:大動脈に傷が及ぶ。コンマ数秒の内に脚の残骸から血を噴出して倒れ、ショックと出血で死は瞬時に訪れる。',
|
114
|
+
'10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。',
|
115
|
+
]
|
116
|
+
whw = [
|
117
|
+
'01:軽打。1ラウンドに渡って、あらゆるテストに-10%。',
|
118
|
+
'02:かすり傷。+10%の【敏捷】テストを行い、失敗なら直ちに高度を1段階失う。地上にいるクリーチャーは、次のターンには飛び立てない。',
|
119
|
+
'03:損傷する。【飛行移動力】が2点低下する。-10%の【敏捷】テストを行い、失敗なら直ちに高度を1段階失う。地上にいるクリーチャーは、次のターンには飛び立てない。',
|
120
|
+
'04:酷く損傷する。【飛行移動力】が4点低下する。-30%の【敏捷】テストを行い、失敗なら直ちに高度を1段階失う。地上にいるクリーチャーは、1d10ターンが経過するまで飛び立てない。',
|
121
|
+
'05:翼が使えなくなる。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。',
|
122
|
+
'06:翼の付け根に傷が開く。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。治療を受けるまで毎R被害者のターン開始時に20%の確率で死亡。以後CTはサドンデスを適用。',
|
123
|
+
'07:翼は血まみれの残骸と化し、無防備状態になる。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。治療を受けるまで毎R被害者のターン開始時に20%の確率で死亡。以後CTはサドンデスを適用。【頑強】テストに失敗すると飛行能力を失う。',
|
124
|
+
'08:翼が千切れてバラバラになり、無防備状態になる。【飛行移動力】が0に低下する。飛行中のものは落下し、高度に応じたダメージを受ける。地上にいるクリーチャーは、怪我が癒えるまで飛び立てない。治療を受けるまで毎R被害者のターン開始時に20%の確率で死亡。以後CTはサドンデスを適用。飛行能力を失う。',
|
125
|
+
'09:大動脈が切断された。コンマ数秒の内に血を噴き上げてくずおれる、ショックと出血で死は瞬時に訪れる。',
|
126
|
+
'10:死亡する。いかに盛大に出血し、どのような死に様を見せたのかを説明してもよい。',
|
127
|
+
]
|
128
|
+
|
129
|
+
criticalTable = [
|
130
|
+
5, 7, 9, 10, 10, 10, 10, 10, 10, 10, # 01-10
|
131
|
+
5, 6, 8, 9, 10, 10, 10, 10, 10, 10, # 11-20
|
132
|
+
4, 6, 8, 9, 9, 10, 10, 10, 10, 10, # 21-30
|
133
|
+
4, 5, 7, 8, 9, 9, 10, 10, 10, 10, # 31-40
|
134
|
+
3, 5, 7, 8, 8, 9, 9, 10, 10, 10, # 41-50
|
135
|
+
3, 4, 6, 7, 8, 8, 9, 9, 10, 10, # 51-60
|
136
|
+
2, 4, 6, 7, 7, 8, 8, 9, 9, 10, # 61-70
|
137
|
+
2, 3, 5, 6, 7, 7, 8, 8, 9, 9, # 71-80
|
138
|
+
1, 3, 5, 6, 6, 7, 7, 8, 8, 9, # 81-90
|
139
|
+
1, 2, 4, 5, 6, 6, 7, 7, 8, 8, # 91-00
|
140
|
+
]
|
141
|
+
|
142
|
+
unless /WH([HABTLW])(\d+)/ =~ string
|
143
|
+
return '1'
|
144
|
+
end
|
145
|
+
|
146
|
+
partsWord = Regexp.last_match(1) # 部位
|
147
|
+
criticalValue = Regexp.last_match(2).to_i # クリティカル値
|
148
|
+
criticalValue = 10 if criticalValue > 10
|
149
|
+
criticalValue = 1 if criticalValue < 1
|
150
|
+
|
151
|
+
whpp = ''
|
152
|
+
whppp = ''
|
153
|
+
|
154
|
+
case partsWord
|
155
|
+
when /H/i
|
156
|
+
whpp = '頭部'
|
157
|
+
whppp = whh
|
158
|
+
when /A/i
|
159
|
+
whpp = '腕部'
|
160
|
+
whppp = wha
|
161
|
+
when /[TB]/i
|
162
|
+
whpp = '胴体'
|
163
|
+
whppp = whb
|
164
|
+
when /L/i
|
165
|
+
whpp = '脚部'
|
166
|
+
whppp = whl
|
167
|
+
when /W/i
|
168
|
+
whpp = '翼部'
|
169
|
+
whppp = whw
|
170
|
+
end
|
171
|
+
|
172
|
+
dice_now = @randomizer.roll_once(100)
|
173
|
+
|
174
|
+
crit_no = ((dice_now - 1) / 10).to_i * 10
|
175
|
+
crit_num = criticalTable[crit_no + criticalValue - 1]
|
176
|
+
|
177
|
+
resultText = whppp[crit_num - 1]
|
178
|
+
if crit_num >= 5
|
179
|
+
resultText += 'サドンデス×'
|
180
|
+
else
|
181
|
+
resultText += 'サドンデス○'
|
182
|
+
end
|
183
|
+
|
184
|
+
output = "#{whpp}CT表(#{dice_now}+#{criticalValue}) > #{resultText}"
|
185
|
+
|
186
|
+
return output
|
187
|
+
end
|
188
|
+
|
189
|
+
def wh_atpos(pos_num, pos_type) # WHFRP2命中部位表
|
190
|
+
debug("wh_atpos begin pos_type", pos_type)
|
191
|
+
pos_2l = [
|
192
|
+
'二足',
|
193
|
+
15, '頭部',
|
194
|
+
35, '右腕',
|
195
|
+
55, '左腕',
|
196
|
+
80, '胴体',
|
197
|
+
90, '右脚',
|
198
|
+
100, '左脚',
|
199
|
+
]
|
200
|
+
pos_2lw = [
|
201
|
+
'有翼二足',
|
202
|
+
15, '頭部',
|
203
|
+
25, '右腕',
|
204
|
+
35, '左腕',
|
205
|
+
45, '右翼',
|
206
|
+
55, '左翼',
|
207
|
+
80, '胴体',
|
208
|
+
90, '右脚',
|
209
|
+
100, '左脚',
|
210
|
+
]
|
211
|
+
pos_4l = [
|
212
|
+
'四足',
|
213
|
+
15, '頭部',
|
214
|
+
60, '胴体',
|
215
|
+
70, '右前脚',
|
216
|
+
80, '左前脚',
|
217
|
+
90, '右後脚',
|
218
|
+
100, '左後脚',
|
219
|
+
]
|
220
|
+
pos_4la = [
|
221
|
+
'半人四足',
|
222
|
+
10, '頭部',
|
223
|
+
20, '右腕',
|
224
|
+
30, '左腕',
|
225
|
+
60, '胴体',
|
226
|
+
70, '右前脚',
|
227
|
+
80, '左前脚',
|
228
|
+
90, '右後脚',
|
229
|
+
100, '左後脚',
|
230
|
+
]
|
231
|
+
pos_4lw = [
|
232
|
+
'有翼四足',
|
233
|
+
10, '頭部',
|
234
|
+
20, '右翼',
|
235
|
+
30, '左翼',
|
236
|
+
60, '胴体',
|
237
|
+
70, '右前脚',
|
238
|
+
80, '左前脚',
|
239
|
+
90, '右後脚',
|
240
|
+
100, '左後脚',
|
241
|
+
]
|
242
|
+
pos_b = [
|
243
|
+
'鳥',
|
244
|
+
15, '頭部',
|
245
|
+
35, '右翼',
|
246
|
+
55, '左翼',
|
247
|
+
80, '胴体',
|
248
|
+
90, '右脚',
|
249
|
+
100, '左脚',
|
250
|
+
]
|
251
|
+
|
252
|
+
wh_pos = [pos_2l, pos_2lw, pos_4l, pos_4la, pos_4lw, pos_b]
|
253
|
+
|
254
|
+
pos_t = 0
|
255
|
+
debug("pos_type", pos_type)
|
256
|
+
if pos_type != ""
|
257
|
+
case pos_type
|
258
|
+
when /\@(2W|W2)/i
|
259
|
+
pos_t = 1
|
260
|
+
when /\@(4W|W4)/i
|
261
|
+
pos_t = 4
|
262
|
+
when /\@(4H|H4)/i
|
263
|
+
pos_t = 3
|
264
|
+
when /\@4/i
|
265
|
+
pos_t = 2
|
266
|
+
when /\@W/i
|
267
|
+
pos_t = 5
|
268
|
+
else
|
269
|
+
unless /\@(2H|H2|2)/i =~ pos_type
|
270
|
+
pos_t = -1
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
output = ""
|
276
|
+
|
277
|
+
debug("pos_t", pos_t)
|
278
|
+
if pos_t < 0
|
279
|
+
wh_pos.each do |pos_i|
|
280
|
+
output += get_wh_atpos_message(pos_i, pos_num)
|
281
|
+
end
|
282
|
+
else
|
283
|
+
pos_i = wh_pos[pos_t]
|
284
|
+
output += get_wh_atpos_message(pos_i, pos_num)
|
285
|
+
end
|
286
|
+
|
287
|
+
return output
|
288
|
+
end
|
289
|
+
|
290
|
+
def get_wh_atpos_message(pos_i, pos_num)
|
291
|
+
output = ""
|
292
|
+
|
293
|
+
output += ' ' + pos_i[0] + ":"
|
294
|
+
|
295
|
+
1.step(pos_i.length + 1, 2) do |i|
|
296
|
+
if pos_num <= pos_i[i]
|
297
|
+
output += pos_i[i + 1]
|
298
|
+
break
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
return output
|
303
|
+
end
|
304
|
+
|
305
|
+
def getAttackResult(string)
|
306
|
+
debug("getAttackResult begin string", string)
|
307
|
+
|
308
|
+
pos_type = ""
|
309
|
+
|
310
|
+
if /(.+)(@.*)/ =~ string
|
311
|
+
string = Regexp.last_match(1)
|
312
|
+
pos_type = Regexp.last_match(2)
|
313
|
+
debug("pos_type", pos_type)
|
314
|
+
end
|
315
|
+
|
316
|
+
unless /WH(\d+)/i =~ string
|
317
|
+
return '1'
|
318
|
+
end
|
319
|
+
|
320
|
+
diff = Regexp.last_match(1).to_i
|
321
|
+
|
322
|
+
total_n = @randomizer.roll_once(100)
|
323
|
+
|
324
|
+
output = "(#{string}) > #{total_n}"
|
325
|
+
output += check_1D100(total_n, total_n, :<=, diff)
|
326
|
+
|
327
|
+
pos_num = (total_n % 10) * 10 + (total_n / 10).to_i
|
328
|
+
pos_num = 100 if total_n >= 100
|
329
|
+
|
330
|
+
output += wh_atpos(pos_num, pos_type) if total_n <= diff
|
331
|
+
|
332
|
+
return output
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
@@ -0,0 +1,275 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class WitchQuest < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'WitchQuest'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'ウィッチクエスト'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'ういつちくえすと'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
17
|
+
・チャレンジ(成功判定)(WQn)
|
18
|
+
n回2d6ダイスを振って判定を行います。
|
19
|
+
例)WQ3
|
20
|
+
・SET(ストラクチャーカードの遭遇表(SETn)
|
21
|
+
ストラクチャーカードの番号(n)の遭遇表結果を得ます。
|
22
|
+
例)SET1 SET48
|
23
|
+
MESSAGETEXT
|
24
|
+
|
25
|
+
register_prefix(['WQ\d+', 'SET\d+'])
|
26
|
+
|
27
|
+
def eval_game_system_specific_command(command)
|
28
|
+
case command
|
29
|
+
when /WQ(\d+)/
|
30
|
+
number = Regexp.last_match(1).to_i
|
31
|
+
return challenge(number)
|
32
|
+
when /SET(\d+)/
|
33
|
+
number = Regexp.last_match(1).to_i
|
34
|
+
return getStructureEncounter(number)
|
35
|
+
end
|
36
|
+
|
37
|
+
return nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def challenge(number)
|
41
|
+
success = 0
|
42
|
+
results = []
|
43
|
+
|
44
|
+
number.times do
|
45
|
+
value1 = @randomizer.roll_once(6)
|
46
|
+
value2 = @randomizer.roll_once(6)
|
47
|
+
|
48
|
+
if value1 == value2
|
49
|
+
success += 1
|
50
|
+
end
|
51
|
+
|
52
|
+
results << "#{value1},#{value2}"
|
53
|
+
end
|
54
|
+
|
55
|
+
successText = "(#{results.join(' / ')}) > " + getSuccessText(success)
|
56
|
+
return successText
|
57
|
+
end
|
58
|
+
|
59
|
+
def getSuccessText(success)
|
60
|
+
table = [[0, "失敗"],
|
61
|
+
[1, "1レベル成功(成功)"],
|
62
|
+
[2, "2レベル成功(大成功)"],
|
63
|
+
[3, "3レベル成功(奇跡的大成功)"],
|
64
|
+
[4, "4レベル成功(歴史的大成功)"],
|
65
|
+
[5, "5レベル成功(伝説的大成功)"],
|
66
|
+
[6, "6レベル成功(神話的大成功)"],]
|
67
|
+
|
68
|
+
if success >= table.last.first
|
69
|
+
return table.last.last
|
70
|
+
end
|
71
|
+
|
72
|
+
return get_table_by_number(success, table)
|
73
|
+
end
|
74
|
+
|
75
|
+
def getStructureEncounter(number)
|
76
|
+
debug("getStructureEncounter number", number)
|
77
|
+
|
78
|
+
tables = [[1, ['船から降りてきた', '魚を売っている', '仕事で忙しそうな', '異国から来た', 'おもしろおかしい', '汗水流している']],
|
79
|
+
[2, ['おかしな格好をした', '歌を歌っている', 'ステキな笑顔をした', '日なたぼっこをしている', '悩んでいる', '旅をしている']],
|
80
|
+
[3, ['待ちぼうけをしている', '壁に登っている', 'タバコを吸っている', '踊りを踊っている', '幸せそうな', '向こうから走ってくる']],
|
81
|
+
[4, ['見張りをしている', 'しゃべれない', '見張りをしている', '一輪車に乗った', '元気いっぱいの', '真面目な']],
|
82
|
+
[5, ['ウソつきな', '買い物をしている', 'ギターを弾いている', 'あなたのほうをじっと見ている', 'ポップコーンを売っている', '屋台を出している']],
|
83
|
+
[6, ['子供を探している', '時計を直している', '物乞いをしている', '気象実験をしている', '飛び降りようとしている', '時間をきにしている']],
|
84
|
+
[7, ['目の見えない', '金持ちそうな', '一人歩きをしたことがない', 'ふられてしまった', '待ち合わせをしている', '道に迷った']],
|
85
|
+
[8, ['お祈りをしている', 'スケッチをしている', '勉強熱心な', '記念碑を壊そうとしている', '大きな声で文句をいっている', '記念撮影している']],
|
86
|
+
[9, ['隠れている', 'はしごに登っている', '鐘を鳴らしている', '共通語の通じない', '記憶を失った', 'あなたのほうにバタッと倒れた']],
|
87
|
+
[10, ['暇そうな', '笑ったことがない', 'ぶくぶくと太った', '後継者を探している', '王様におつかえしている', '愛国心旺盛な']],
|
88
|
+
[11, ['閉じ込められた', '悲しそうな', '怒っている', '降りれなくなっている', 'もの憂げな', '飛ぼうとしている']],
|
89
|
+
[12, ['釣りをしている', '泳いでいる', '川に物を落としてしまった', '砂金を掘っている', '川にゴミを捨てている', 'カエルに化かされてしまった']],
|
90
|
+
[13, ['世間話をしている', '結婚を薦めたがる', 'いやらしい話の好きな', '選択をしている', '水を汲んでいる', '井戸に落ちてしまった']],
|
91
|
+
[14, ['人におごりたがる', '踊り子をしている', '賭けをしている', '泣き上戸な', '飲み比べをしている', '自慢話をしている']],
|
92
|
+
[15, ['素朴そうな', '田舎者の', 'あなたをだまそうとしている', 'ケンカをしている', '泊まるお金のない', 'あなたに依頼をしにきた']],
|
93
|
+
[16, ['悪い占いの結果しか言わない', 'あなたに嫉妬している', '魅惑的な', 'おしつけがましい', 'いいかげんな占いしかしない', '変わった占いをしている']],
|
94
|
+
[17, ['かくれんぼをしている', 'あまやどりをしている', '(ここにはだれもいません)', '家の掃除をしている', '取り壊しをしようとしている', '昔ここに住んでいた']],
|
95
|
+
[18, ['畑を耕している', '畑を荒らしている', '畑泥棒の', '収穫している', '日焼けして真っ黒な', '嫁いできた(婿にきた)']],
|
96
|
+
[19, ['粉をひいている', '馬に乗って風車に突進している', '風が吹かなくて困っている', '寝ている', '筋骨りゅうりゅうな', '遊んでいる']],
|
97
|
+
[20, ['パーティーをしている', '酔っ払っている', '酒を仕込んでいる', '即売会をしている', '笑っている', '太った']],
|
98
|
+
[21, ['ひとりたたずむ', '花から生まれた', '花が大好きな', '花粉症の', '花を買いにきた', 'ラグビーをやって花をあらしてる']],
|
99
|
+
[22, ['几帳面な', '眼鏡をかけた', 'なまいきな', 'なわとびをしている', '困っている', 'ませている']],
|
100
|
+
[23, ['本を読んでいる', '世間話をしたがる', '派手な格好をした', '勉強熱心な', 'うるさい', '魔女のことについて調べている']],
|
101
|
+
[24, ['神父さんに相談をしている', '結婚式を挙げている', '物静かな', '片足の無い', '熱い視線を送ってくる', '挑発してくる']],
|
102
|
+
[25, ['頑固な', '刀の切れ味をためしたがる', 'いいかげんな性格の', 'スグに弟子にしたがる', '見せの前でウロウロしている', '道を尋ねている']],
|
103
|
+
[26, ['不機嫌な', '客の意見を聞かない', '物を売らない', '不幸な気前のいい', '発明家の']],
|
104
|
+
[27, ['恋人にプレゼントを探している', '香り中毒になった', '客に手伝わせる', 'おまじないの好きな', '人好きのする', 'いじめっこな']],
|
105
|
+
[28, ['騒がしい', 'お菓子を食べて涙を流している', '笑いの止まらない', '甘い物に目がない', '別れ話をしている', 'あなたをお茶に誘う']],
|
106
|
+
[29, ['フランスパンを盗んで走る', 'しらけた顔をした', '店番をする', 'あなたをバイトで使いたがる', '変なパンしか作らない', '朝が苦手な']],
|
107
|
+
[30, ['偏屈な', '威勢のいい', 'ケンカっぱやい', '野次馬根性の強い', '肉が食べれない', '心優しく気前がいい']],
|
108
|
+
[31, ['夫婦ケンカをしている', '猫に魚を盗られた', '助けを求めている', '魚の種類がわからない', '『おいしい』としかいわない', 'あやしい']],
|
109
|
+
[32, ['ヤンキー風の', '自分がかっこいいと思っている', '力自慢の', '元は王様だといいはる', '魔女のファンだという', '子沢山の']],
|
110
|
+
[33, ['わがままな', 'かっこいい', '独り言を言っている', '変わった料理しかださない', '目茶苦茶辛い料理を食べている', 'デートをしている']],
|
111
|
+
[34, ['仮病を使っている', '不治の病を持った', '”おめでた”の', 'フケた顔した', '髪の毛を染めた', '(健康でも)病名をいいたがる']],
|
112
|
+
[35, ['実験をしたがる', '精力をつけたがっている', '惚れ薬を探している', '薬づけになっている', 'この町まで薬を売りに来た', '睡眠薬で自殺をしようとしている']],
|
113
|
+
[36, ['服まで質に入れた', '値段にケチをつけている', '疲れている', '子供を質に入れようとしている', '涙もろい', '人間不信な']],
|
114
|
+
[37, ['着飾った', 'おねだりしている', '退屈そうな', '見栄っぱりな', '高いものを薦める', '宝石など買うつもりのない']],
|
115
|
+
[38, ['だだをこねている', 'ぬいぐるみを抱いている', 'あなたを侵略者と考えている', 'あなたの”おしり”にさわる', '幸せのおもちゃを売っている', 'あなたを自分の子と間違えている']],
|
116
|
+
[39, ['人の話を聞かない', '気分屋な', 'カリアゲしかできない', 'うわさ話の好きな', '自動販売機を開発したという', 'おせっかいな']],
|
117
|
+
[40, ['お風呂あがりの', 'こきつかわれている', 'シェイプアップしている', '人から追われている', '人の体をじろじろと見る', 'この町を案内してほしいという']],
|
118
|
+
[41, ['サングラスをかけた', 'みんな自分のファンと思っている', 'あなたを役者と勘違いしている', 'あなたはスターになれるという', '手品をしている', '『いそがしい』をいい続けている']],
|
119
|
+
[42, ['ギャンブルをしている', '競技に出場している', '全財産を賭けている', '勇敢な', '参加者を募っている', '情けない競技(闘技)をしてる']],
|
120
|
+
[43, ['ダンスを踊っている', 'ブレイクダンスをして場違いな', '子供を背中におんぶしている', 'あなたと踊りたがる', '踊ったことのない', '食べることに夢中な']],
|
121
|
+
[44, ['2階からお金をばらまいている', '窓の奥で涙をながしている', '窓から忍びこもう', 'ピアノを弾いている', 'ここに住んでいる', '家に招待したがる']],
|
122
|
+
[45, ['馬にブラシをかけている', '気性の激しい', '騎手を探している', '馬と話ができる', '馬の生まれ変わりという', '馬を安楽死させようか迷っている']],
|
123
|
+
[46, ['いたずら好きな', 'ライバル意識の強い', '魔法の下手な', '魔法を信じない', '自分を神と思っている', '魔法を使って人を化かしたがる']],
|
124
|
+
[47, ['傷だらけな', '両手に宝物を持った', 'かわいい', '地図を見ながら出てきている', '剣を持った', 'ダンジョンの主といわれる']],
|
125
|
+
[48, ['墓参りをしている', '耳の遠い', '死んでしまった', '葬式をしている', 'きもだめしをしている', '墓守をしている']],]
|
126
|
+
|
127
|
+
table = get_table_by_number(number, tables, nil)
|
128
|
+
return nil if table.nil?
|
129
|
+
|
130
|
+
text, index = get_table_by_1d6(table)
|
131
|
+
|
132
|
+
person = getPersonTable1()
|
133
|
+
|
134
|
+
return "SET#{number} > #{index}:#{text}#{person}"
|
135
|
+
end
|
136
|
+
|
137
|
+
def getPersonTable1()
|
138
|
+
gotoNextTable = lambda { "表2へ" + getPersonTable2() }
|
139
|
+
|
140
|
+
table = [[11, "おじさん"],
|
141
|
+
[12, "おばさん"],
|
142
|
+
[13, "おじいさん"],
|
143
|
+
[14, "おばあさん"],
|
144
|
+
[15, "男の子"],
|
145
|
+
[16, "女の子"],
|
146
|
+
|
147
|
+
[22, "美少女"],
|
148
|
+
[23, "美少年"],
|
149
|
+
[24, "青年"],
|
150
|
+
[25, "少年"],
|
151
|
+
[26, "男女(カップル)"],
|
152
|
+
|
153
|
+
[33, "新婚さん"],
|
154
|
+
[34, "お兄さん"],
|
155
|
+
[35, "お姉さん"],
|
156
|
+
[36, "店主(お店の人)"],
|
157
|
+
|
158
|
+
[44, "王様"],
|
159
|
+
[45, "衛兵"],
|
160
|
+
[46, "魔女"],
|
161
|
+
|
162
|
+
[55, "お姫様"],
|
163
|
+
[56, gotoNextTable],
|
164
|
+
|
165
|
+
[66, gotoNextTable],]
|
166
|
+
|
167
|
+
getPersonTable(table)
|
168
|
+
end
|
169
|
+
|
170
|
+
def getPersonTable2()
|
171
|
+
gotoNextTable = lambda { "表3へ" + getPersonTable3() }
|
172
|
+
|
173
|
+
table = [[11, "魔法使い"],
|
174
|
+
[12, "観光客"],
|
175
|
+
[13, "先生"],
|
176
|
+
[14, "探偵"],
|
177
|
+
[15, "刷"],
|
178
|
+
[16, "お嬢様"],
|
179
|
+
|
180
|
+
[22, "お嬢様"],
|
181
|
+
[23, "紳士"],
|
182
|
+
[24, "ご婦人"],
|
183
|
+
[25, "女王様"],
|
184
|
+
[26, "職人さん"],
|
185
|
+
|
186
|
+
[33, "女子高生"],
|
187
|
+
[34, "学生"],
|
188
|
+
[35, "剣闘士"],
|
189
|
+
[36, "鳥"],
|
190
|
+
|
191
|
+
[44, "猫"],
|
192
|
+
[45, "犬"],
|
193
|
+
[46, "カエル"],
|
194
|
+
|
195
|
+
[55, "蛇"],
|
196
|
+
[56, gotoNextTable],
|
197
|
+
|
198
|
+
[66, gotoNextTable],]
|
199
|
+
|
200
|
+
getPersonTable(table)
|
201
|
+
end
|
202
|
+
|
203
|
+
def getPersonTable3()
|
204
|
+
gotoNextTable = lambda { "表4へ" + getPersonTable4() }
|
205
|
+
|
206
|
+
table = [[11, "貴族"],
|
207
|
+
[12, "いるか"],
|
208
|
+
[13, "だいこん"],
|
209
|
+
[14, "じゃがいも"],
|
210
|
+
[15, "にんじん"],
|
211
|
+
[16, "ドラゴン"],
|
212
|
+
|
213
|
+
[22, "ゾンビ"],
|
214
|
+
[23, "幽霊"],
|
215
|
+
[24, "うさぎ"],
|
216
|
+
[25, "天使"],
|
217
|
+
[26, "悪魔"],
|
218
|
+
|
219
|
+
[33, "赤ちゃん"],
|
220
|
+
[34, "馬"],
|
221
|
+
[35, "石"],
|
222
|
+
[36, "お母さん"],
|
223
|
+
|
224
|
+
[44, "妖精"],
|
225
|
+
[45, "守護霊"],
|
226
|
+
[46, "猫神様"],
|
227
|
+
|
228
|
+
[55, "ロボット"],
|
229
|
+
[56, "恐ろしい人"],
|
230
|
+
|
231
|
+
[66, gotoNextTable],]
|
232
|
+
|
233
|
+
getPersonTable(table)
|
234
|
+
end
|
235
|
+
|
236
|
+
def getPersonTable4()
|
237
|
+
table = [[11, "魔女エディス"],
|
238
|
+
[12, "魔女レーデルラン"],
|
239
|
+
[13, "魔女キリル"],
|
240
|
+
[14, "大魔女”ロロ”様"],
|
241
|
+
[15, "エディスのお母さん”エリー”"],
|
242
|
+
[16, "猫トンガリ"],
|
243
|
+
|
244
|
+
[22, "猫ヒューベ"],
|
245
|
+
[23, "猫ゆうのす"],
|
246
|
+
[24, "猫集会の集団の一団"],
|
247
|
+
[25, "岩"],
|
248
|
+
[26, "PCの母"],
|
249
|
+
|
250
|
+
[33, "PCの父"],
|
251
|
+
[34, "PCの兄"],
|
252
|
+
[35, "PCの姉"],
|
253
|
+
[36, "PCの弟"],
|
254
|
+
|
255
|
+
[44, "PCの妹"],
|
256
|
+
[45, "PCの遠い親戚"],
|
257
|
+
[46, "PCの死んだはずの両親"],
|
258
|
+
|
259
|
+
[55, "初恋の人"],
|
260
|
+
[56, "分かれた女(男)、不倫中の相手、または独身PCの場合、二股をかけている二人の両方"],
|
261
|
+
|
262
|
+
[66, "宇宙人"],]
|
263
|
+
|
264
|
+
getPersonTable(table)
|
265
|
+
end
|
266
|
+
|
267
|
+
def getPersonTable(table)
|
268
|
+
number = @randomizer.roll_d66(D66SortType::ASC)
|
269
|
+
debug("getPersonTable number", number)
|
270
|
+
|
271
|
+
" > #{number}:" + get_table_by_number(number, table)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|