bcdice 3.0.0.pre.alpha.1 → 3.0.0.pre.alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -1
- data/.rubocop.yml +12 -0
- data/.rubocop_todo.yml +1 -0
- data/CHANGELOG.md +34 -0
- data/Gemfile +6 -3
- data/Rakefile +52 -18
- data/bcdice.gemspec +2 -0
- data/i18n/Amadeus/ja_jp.yml +386 -0
- data/i18n/Amadeus/ko_kr.yml +148 -0
- data/i18n/Cthulhu/ja_jp.yml +11 -0
- data/i18n/Cthulhu/ko_kr.yml +11 -0
- data/i18n/Cthulhu/zh_hant.yml +11 -0
- data/i18n/DetatokoSaga/ja_jp.yml +74 -0
- data/i18n/DetatokoSaga/ko_kr.yml +74 -0
- data/i18n/DoubleCross/ja_jp.yml +53 -0
- data/i18n/DoubleCross/ko_kr.yml +53 -0
- data/i18n/Dracurouge/ja_jp.yml +1374 -0
- data/i18n/Dracurouge/ko_kr.yml +295 -0
- data/i18n/Fiasco/ja_jp.yml +10 -0
- data/i18n/Fiasco/ko_kr.yml +10 -0
- data/i18n/FutariSousa/ja_jp.yml +720 -0
- data/i18n/FutariSousa/ko_kr.yml +746 -0
- data/i18n/Insane/ja_jp.yml +454 -0
- data/i18n/Insane/ko_kr.yml +502 -0
- data/i18n/Kamigakari/ja_jp.yml +276 -0
- data/i18n/Kamigakari/ko_kr.yml +204 -0
- data/i18n/KillDeathBusiness/ja_jp.yml +1092 -0
- data/i18n/KillDeathBusiness/ko_kr.yml +1062 -0
- data/i18n/LogHorizon/ja_jp.yml +3082 -0
- data/i18n/LogHorizon/ko_kr.yml +923 -0
- data/i18n/MagicaLogia/ja_jp.yml +564 -0
- data/i18n/MonotoneMuseum/ja_jp.yml +525 -0
- data/i18n/MonotoneMuseum/ko_kr.yml +89 -0
- data/i18n/Nechronica/ja_jp.yml +57 -0
- data/i18n/Nechronica/ko_kr.yml +14 -0
- data/i18n/StratoShout/ja_jp.yml +160 -0
- data/i18n/StratoShout/ko_kr.yml +160 -0
- data/i18n/ja_jp.yml +5 -0
- data/i18n/ko_kr.yml +7 -0
- data/i18n/zh_hant.yml +3 -0
- data/lib/bcdice/arithmetic/node.rb +154 -0
- data/lib/bcdice/base.rb +87 -101
- data/lib/bcdice/common_command.rb +2 -0
- data/lib/bcdice/common_command/add_dice.rb +5 -41
- data/lib/bcdice/common_command/add_dice/node.rb +92 -16
- data/lib/bcdice/common_command/add_dice/parser.rb +374 -274
- data/lib/bcdice/common_command/add_dice/parser.y +153 -0
- data/lib/bcdice/common_command/add_dice/randomizer.rb +25 -33
- data/lib/bcdice/common_command/barabara_dice.rb +6 -47
- data/lib/bcdice/common_command/barabara_dice/node.rb +84 -0
- data/lib/bcdice/common_command/barabara_dice/parser.rb +336 -0
- data/lib/bcdice/common_command/barabara_dice/parser.y +107 -0
- data/lib/bcdice/common_command/calc.rb +7 -30
- data/lib/bcdice/common_command/calc/node.rb +30 -0
- data/lib/bcdice/common_command/calc/parser.rb +271 -0
- data/lib/bcdice/common_command/calc/parser.y +79 -0
- data/lib/bcdice/common_command/choice.rb +137 -19
- data/lib/bcdice/common_command/d66_dice.rb +48 -34
- data/lib/bcdice/common_command/lexer.rb +46 -0
- data/lib/bcdice/common_command/repeat.rb +102 -0
- data/lib/bcdice/common_command/reroll_dice.rb +8 -158
- data/lib/bcdice/common_command/reroll_dice/node.rb +198 -0
- data/lib/bcdice/common_command/reroll_dice/parser.rb +421 -0
- data/lib/bcdice/common_command/reroll_dice/parser.y +158 -0
- data/lib/bcdice/common_command/upper_dice.rb +10 -129
- data/lib/bcdice/common_command/upper_dice/node.rb +181 -0
- data/lib/bcdice/common_command/upper_dice/parser.rb +412 -0
- data/lib/bcdice/common_command/upper_dice/parser.y +143 -0
- data/lib/bcdice/common_command/version.rb +9 -17
- data/lib/bcdice/deprecated/checker.rb +78 -0
- data/lib/bcdice/dice_table/d66_grid_table.rb +8 -0
- data/lib/bcdice/dice_table/d66_table.rb +10 -0
- data/lib/bcdice/dice_table/sai_fic_skill_table.rb +75 -17
- data/lib/bcdice/dice_table/sai_fic_skill_table/category.rb +25 -0
- data/lib/bcdice/dice_table/sai_fic_skill_table/skill.rb +23 -0
- data/lib/bcdice/dice_table/table.rb +8 -0
- data/lib/bcdice/game_system.rb +7 -1
- data/lib/bcdice/game_system/AFF2e.rb +1 -1
- data/lib/bcdice/game_system/AceKillerGene.rb +2 -2
- data/lib/bcdice/game_system/Airgetlamh.rb +3 -3
- data/lib/bcdice/game_system/Alsetto.rb +1 -1
- data/lib/bcdice/game_system/Alshard.rb +1 -1
- data/lib/bcdice/game_system/AlterRaise.rb +2 -2
- data/lib/bcdice/game_system/Amadeus.rb +46 -507
- data/lib/bcdice/game_system/Amadeus_Korean.rb +12 -456
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
- data/lib/bcdice/game_system/Arianrhod.rb +0 -1
- data/lib/bcdice/game_system/ArsMagica.rb +1 -1
- data/lib/bcdice/game_system/Avandner.rb +1 -1
- data/lib/bcdice/game_system/BBN.rb +1 -1
- data/lib/bcdice/game_system/BadLife.rb +1 -1
- data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
- data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -2
- data/lib/bcdice/game_system/BeginningIdol.rb +2 -3
- data/lib/bcdice/game_system/BeginningIdol_Korean.rb +2 -3
- data/lib/bcdice/game_system/BladeOfArcana.rb +2 -2
- data/lib/bcdice/game_system/BlindMythos.rb +1 -1
- data/lib/bcdice/game_system/BloodCrusade.rb +0 -1
- data/lib/bcdice/game_system/BloodMoon.rb +0 -1
- data/lib/bcdice/game_system/CardRanker.rb +1 -2
- data/lib/bcdice/game_system/ChaosFlare.rb +1 -1
- data/lib/bcdice/game_system/Chill.rb +1 -1
- data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
- data/lib/bcdice/game_system/ColossalHunter.rb +1 -2
- data/lib/bcdice/game_system/Comes.rb +50 -0
- data/lib/bcdice/game_system/CrashWorld.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu.rb +94 -97
- data/lib/bcdice/game_system/Cthulhu7th.rb +108 -67
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
- data/lib/bcdice/game_system/CthulhuTech.rb +8 -14
- data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +7 -190
- data/lib/bcdice/game_system/Cthulhu_Korean.rb +5 -186
- data/lib/bcdice/game_system/DarkBlaze.rb +9 -5
- data/lib/bcdice/game_system/DarkDaysDrive.rb +17 -15
- data/lib/bcdice/game_system/DarkSouls.rb +1 -1
- data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
- data/lib/bcdice/game_system/DemonParasite.rb +1 -2
- data/lib/bcdice/game_system/DetatokoSaga.rb +48 -149
- data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +6 -274
- data/lib/bcdice/game_system/DiceOfTheDead.rb +9 -6
- data/lib/bcdice/game_system/DoubleCross.rb +102 -81
- data/lib/bcdice/game_system/DoubleCross_Korean.rb +13 -330
- data/lib/bcdice/game_system/Dracurouge.rb +376 -1678
- data/lib/bcdice/game_system/Dracurouge_Korean.rb +16 -271
- data/lib/bcdice/game_system/EarthDawn.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
- data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
- data/lib/bcdice/game_system/Elysion.rb +3 -4
- data/lib/bcdice/game_system/EmbryoMachine.rb +1 -1
- data/lib/bcdice/game_system/Emoklore.rb +131 -0
- data/lib/bcdice/game_system/EndBreaker.rb +1 -2
- data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
- data/lib/bcdice/game_system/Fiasco.rb +87 -70
- data/lib/bcdice/game_system/Fiasco_Korean.rb +7 -95
- data/lib/bcdice/game_system/FilledWith.rb +462 -566
- data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
- data/lib/bcdice/game_system/FutariSousa.rb +103 -938
- data/lib/bcdice/game_system/FutariSousa_Korean.rb +7 -948
- data/lib/bcdice/game_system/{Gurps.rb → GURPS.rb} +184 -217
- data/lib/bcdice/game_system/Garako.rb +131 -39
- data/lib/bcdice/game_system/GardenOrder.rb +2 -2
- data/lib/bcdice/game_system/GehennaAn.rb +1 -1
- data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
- data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
- data/lib/bcdice/game_system/GoldenSkyStories.rb +1 -1
- data/lib/bcdice/game_system/Gorilla.rb +1 -1
- data/lib/bcdice/game_system/GranCrest.rb +2 -3
- data/lib/bcdice/game_system/GundogRevised.rb +1 -1
- data/lib/bcdice/game_system/GundogZero.rb +1 -1
- data/lib/bcdice/game_system/GurpsFW.rb +2 -3
- data/lib/bcdice/game_system/HarnMaster.rb +2 -2
- data/lib/bcdice/game_system/HatsuneMiku.rb +1 -2
- data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
- data/lib/bcdice/game_system/HuntersMoon.rb +1 -2
- data/lib/bcdice/game_system/Illusio.rb +2 -2
- data/lib/bcdice/game_system/Insane.rb +90 -717
- data/lib/bcdice/game_system/Insane_Korean.rb +7 -719
- data/lib/bcdice/game_system/Kamigakari.rb +47 -242
- data/lib/bcdice/game_system/Kamigakari_Korean.rb +6 -394
- data/lib/bcdice/game_system/KanColle.rb +3 -3
- data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
- data/lib/bcdice/game_system/KillDeathBusiness.rb +162 -1144
- data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +6 -1459
- data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
- data/lib/bcdice/game_system/LiveraDoll.rb +2 -2
- data/lib/bcdice/game_system/LogHorizon.rb +350 -3379
- data/lib/bcdice/game_system/LogHorizon_Korean.rb +55 -1357
- data/lib/bcdice/game_system/LostRecord.rb +0 -1
- data/lib/bcdice/game_system/LostRoyal.rb +1 -2
- data/lib/bcdice/game_system/MagicaLogia.rb +158 -1044
- data/lib/bcdice/game_system/MeikyuDays.rb +1 -2
- data/lib/bcdice/game_system/MeikyuKingdom.rb +4 -4
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +4 -5
- data/lib/bcdice/game_system/MetalHead.rb +1 -1
- data/lib/bcdice/game_system/MetalHeadExtream.rb +2 -2
- data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
- data/lib/bcdice/game_system/MonotoneMuseum.rb +38 -239
- data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +10 -270
- data/lib/bcdice/game_system/NSSQ.rb +159 -0
- data/lib/bcdice/game_system/Nechronica.rb +34 -73
- data/lib/bcdice/game_system/Nechronica_Korean.rb +11 -128
- data/lib/bcdice/game_system/NeverCloud.rb +1 -1
- data/lib/bcdice/game_system/NightWizard.rb +1 -1
- data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
- data/lib/bcdice/game_system/NinjaSlayer.rb +12 -11
- data/lib/bcdice/game_system/NjslyrBattle.rb +1 -1
- data/lib/bcdice/game_system/OneWayHeroics.rb +1 -2
- data/lib/bcdice/game_system/OracleEngine.rb +1 -1
- data/lib/bcdice/game_system/OrgaRain.rb +2 -2
- data/lib/bcdice/game_system/Paradiso.rb +1 -1
- data/lib/bcdice/game_system/Paranoia.rb +1 -1
- data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
- data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
- data/lib/bcdice/game_system/Peekaboo.rb +22 -122
- data/lib/bcdice/game_system/Postman.rb +2 -2
- data/lib/bcdice/game_system/PulpCthulhu.rb +3 -3
- data/lib/bcdice/game_system/Raisondetre.rb +2 -2
- data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
- data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
- data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
- data/lib/bcdice/game_system/RuinBreakers.rb +296 -0
- data/lib/bcdice/game_system/Ryutama.rb +1 -1
- data/lib/bcdice/game_system/SRS.rb +1 -2
- data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
- data/lib/bcdice/game_system/Satasupe.rb +1 -2
- data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
- data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
- data/lib/bcdice/game_system/ShadowRun5.rb +2 -2
- data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
- data/lib/bcdice/game_system/ShinMegamiTenseiKakuseihen.rb +1 -1
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
- data/lib/bcdice/game_system/ShinobiGami.rb +1 -2
- data/lib/bcdice/game_system/ShoujoTenrankai.rb +2 -2
- data/lib/bcdice/game_system/Skynauts.rb +1 -1
- data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
- data/lib/bcdice/game_system/StellarKnights.rb +1 -2
- data/lib/bcdice/game_system/SterileLife.rb +1 -1
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -2
- data/lib/bcdice/game_system/StratoShout.rb +44 -247
- data/lib/bcdice/game_system/StratoShout_Korean.rb +6 -282
- data/lib/bcdice/game_system/Strave.rb +2 -2
- data/lib/bcdice/game_system/SwordWorld.rb +8 -9
- data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -3
- data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -3
- data/lib/bcdice/game_system/TherapieSein.rb +1 -1
- data/lib/bcdice/game_system/TokumeiTenkousei.rb +1 -1
- data/lib/bcdice/game_system/TokyoGhostResearch.rb +2 -2
- data/lib/bcdice/game_system/Torg.rb +2 -2
- data/lib/bcdice/game_system/Torg1_5.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +1 -1
- data/lib/bcdice/game_system/TrinitySeven.rb +1 -1
- data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
- data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -2
- data/lib/bcdice/game_system/UnsungDuet.rb +139 -0
- data/lib/bcdice/game_system/Utakaze.rb +1 -1
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
- data/lib/bcdice/game_system/Villaciel.rb +1 -2
- data/lib/bcdice/game_system/Warhammer.rb +1 -1
- data/lib/bcdice/game_system/Warhammer4.rb +329 -0
- data/lib/bcdice/game_system/WitchQuest.rb +1 -1
- data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
- data/lib/bcdice/game_system/YankeeYogSothoth.rb +15 -15
- data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
- data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
- data/lib/bcdice/game_system/filled_with/cook_tables.rb +119 -0
- data/lib/bcdice/game_system/filled_with/lot_tables.rb +155 -0
- data/lib/bcdice/loader.rb +6 -8
- data/lib/bcdice/preprocessor.rb +15 -40
- data/lib/bcdice/repl.rb +1 -1
- data/lib/bcdice/result.rb +83 -0
- data/lib/bcdice/translate.rb +11 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +80 -4
@@ -28,7 +28,6 @@ module BCDice
|
|
28
28
|
super(command)
|
29
29
|
|
30
30
|
@sort_add_dice = true
|
31
|
-
@enabled_d66 = true
|
32
31
|
@d66_sort_type = D66SortType::NO_SORT
|
33
32
|
end
|
34
33
|
|
@@ -39,94 +38,35 @@ module BCDice
|
|
39
38
|
debug("eval_game_system_specific_command command", command)
|
40
39
|
|
41
40
|
case command.upcase
|
42
|
-
|
43
|
-
when "RT"
|
44
|
-
tableName, result, number = getReimonCompensationTableResult
|
45
|
-
|
46
41
|
when /^MT(\d*)$/
|
47
42
|
rank = Regexp.last_match(1)
|
48
43
|
rank ||= 1
|
49
44
|
rank = rank.to_i
|
50
45
|
tableName, result, number = getGetMaterialTableResult(rank)
|
51
|
-
|
52
46
|
else
|
53
|
-
return roll_tables(command, TABLES)
|
47
|
+
return roll_tables(command, self.class::TABLES)
|
54
48
|
end
|
55
49
|
|
56
50
|
if result.empty?
|
57
51
|
return ""
|
58
52
|
end
|
59
53
|
|
60
|
-
text = "#{tableName}(#{number})
|
54
|
+
text = "#{tableName}(#{number}) > #{result}"
|
61
55
|
return text
|
62
56
|
end
|
63
57
|
|
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
58
|
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
|
-
]
|
59
|
+
tableName = translate("Kamigakari.MT.name")
|
60
|
+
table = translate("Kamigakari.MT.items")
|
120
61
|
|
121
62
|
result, number = get_table_by_d66(table)
|
122
|
-
result += "断片"
|
123
63
|
|
124
64
|
effect, number2 = getMaterialEffect(rank)
|
125
65
|
number = "#{number},#{number2}"
|
126
66
|
|
127
67
|
price = getPrice(effect)
|
128
68
|
|
129
|
-
result = "
|
69
|
+
result = translate("Kamigakari.MT.result_format", material: result, effect: effect)
|
130
70
|
result += ":#{price}" unless price.nil?
|
131
71
|
|
132
72
|
return tableName, result, number
|
@@ -139,10 +79,10 @@ module BCDice
|
|
139
79
|
type = ""
|
140
80
|
if number < 6
|
141
81
|
result, number2 = getMaterialEffectNomal(rank)
|
142
|
-
type = "
|
82
|
+
type = translate("Kamigakari.MT.common_material.name")
|
143
83
|
else
|
144
84
|
result, number2 = getMaterialEffectRare()
|
145
|
-
type = "
|
85
|
+
type = translate("Kamigakari.MT.rare_material.name")
|
146
86
|
end
|
147
87
|
|
148
88
|
result = "#{type}:#{result}"
|
@@ -152,21 +92,7 @@ module BCDice
|
|
152
92
|
end
|
153
93
|
|
154
94
|
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
|
-
]
|
95
|
+
table = translate("Kamigakari.MT.common_material.items")
|
170
96
|
|
171
97
|
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
172
98
|
|
@@ -198,17 +124,19 @@ module BCDice
|
|
198
124
|
end
|
199
125
|
|
200
126
|
def getMaterialEffectRare()
|
201
|
-
table = [
|
202
|
-
|
203
|
-
|
127
|
+
table = [
|
128
|
+
[3, "**" + translate("Kamigakari.MT.rare_material.give_attribute")], # 付与
|
129
|
+
[5, "**" + translate("Kamigakari.MT.rare_material.halve_damage")], # 半減
|
130
|
+
[6, translate("Kamigakari.MT.rare_material.optional_by_GM")],
|
131
|
+
]
|
204
132
|
|
205
133
|
number = @randomizer.roll_once(6)
|
206
134
|
result = get_table_by_number(number, table)
|
207
135
|
debug('getMaterialEffectRare result', result)
|
208
136
|
|
209
|
-
if result
|
137
|
+
if result.include?("**")
|
210
138
|
attribute, number2 = getAttribute()
|
211
|
-
result = result.sub(
|
139
|
+
result = result.sub("**", attribute.to_s)
|
212
140
|
number = "#{number},#{number2}"
|
213
141
|
end
|
214
142
|
|
@@ -216,16 +144,7 @@ module BCDice
|
|
216
144
|
end
|
217
145
|
|
218
146
|
def getAttribute()
|
219
|
-
table =
|
220
|
-
[21, '[火炎]'],
|
221
|
-
[33, '[冷気]'],
|
222
|
-
[43, '[電撃]'],
|
223
|
-
[53, '[風圧]'],
|
224
|
-
[56, '[幻覚]'],
|
225
|
-
[62, '[魔毒]'],
|
226
|
-
[64, '[磁力]'],
|
227
|
-
[66, '[閃光]'],
|
228
|
-
]
|
147
|
+
table = translate("Kamigakari.MT.attribute")
|
229
148
|
|
230
149
|
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
231
150
|
|
@@ -235,160 +154,46 @@ module BCDice
|
|
235
154
|
end
|
236
155
|
|
237
156
|
def getPrice(effect)
|
238
|
-
power =
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
power = 0
|
249
|
-
end
|
157
|
+
power =
|
158
|
+
if (m = effect.match(/\+(\d+)/))
|
159
|
+
m[1].to_i
|
160
|
+
elsif effect.include?(translate("Kamigakari.MT.rare_material.give_attribute")) # 付与
|
161
|
+
3
|
162
|
+
elsif effect.include?(translate("Kamigakari.MT.rare_material.halve_damage")) # 半減
|
163
|
+
4
|
164
|
+
else
|
165
|
+
0
|
166
|
+
end
|
250
167
|
|
251
|
-
table = [
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
168
|
+
table = [
|
169
|
+
nil,
|
170
|
+
"500G(#{translate('Kamigakari.MT.effect_power')}:1)",
|
171
|
+
"1000G(#{translate('Kamigakari.MT.effect_power')}:2)",
|
172
|
+
"1500G(#{translate('Kamigakari.MT.effect_power')}:3)",
|
173
|
+
"2000G(#{translate('Kamigakari.MT.effect_power')}:4)",
|
174
|
+
"3000G(#{translate('Kamigakari.MT.effect_power')}:5)",
|
175
|
+
]
|
257
176
|
price = table[power]
|
258
177
|
|
259
178
|
return price
|
260
179
|
end
|
261
180
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
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,
|
181
|
+
class << self
|
182
|
+
private
|
183
|
+
|
184
|
+
def translate_tables(locale)
|
350
185
|
{
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
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 => "草壁(くさかべ) 大悟/文"
|
186
|
+
"RT" => DiceTable::Table.from_i18n("Kamigakari.table.RT", locale),
|
187
|
+
"ET" => DiceTable::D66Table.from_i18n("Kamigakari.table.ET", locale),
|
188
|
+
"KT" => DiceTable::D66Table.from_i18n("Kamigakari.table.KT", locale),
|
189
|
+
"NT" => DiceTable::D66Table.from_i18n("Kamigakari.table.NT", locale),
|
387
190
|
}
|
388
|
-
|
389
|
-
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
TABLES = translate_tables(:ja_jp)
|
390
195
|
|
391
|
-
register_prefix(
|
196
|
+
register_prefix('MT(\d*)', TABLES.keys)
|
392
197
|
end
|
393
198
|
end
|
394
199
|
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "bcdice/game_system/Kamigakari"
|
4
|
+
|
3
5
|
module BCDice
|
4
6
|
module GameSystem
|
5
|
-
class Kamigakari_Korean <
|
7
|
+
class Kamigakari_Korean < Kamigakari
|
6
8
|
# ゲームシステムの識別子
|
7
9
|
ID = 'Kamigakari:Korean'
|
8
10
|
|
@@ -24,405 +26,15 @@ module BCDice
|
|
24
26
|
・D66주사위 가능
|
25
27
|
INFO_MESSAGE_TEXT
|
26
28
|
|
27
|
-
|
28
|
-
'RT',
|
29
|
-
'MT(\d*)',
|
30
|
-
'ET',
|
31
|
-
'NT',
|
32
|
-
'KT'
|
33
|
-
])
|
29
|
+
register_prefix_from_super_class()
|
34
30
|
|
35
31
|
def initialize(command)
|
36
32
|
super(command)
|
37
33
|
|
38
|
-
@
|
39
|
-
@enabled_d66 = true
|
40
|
-
@d66_sort_type = D66SortType::NO_SORT
|
41
|
-
end
|
42
|
-
|
43
|
-
def eval_game_system_specific_command(command)
|
44
|
-
tableName = ""
|
45
|
-
result = ""
|
46
|
-
|
47
|
-
debug("eval_game_system_specific_command command", command)
|
48
|
-
|
49
|
-
case command
|
50
|
-
|
51
|
-
when "RT"
|
52
|
-
tableName, result, number = getReimonCompensationTableResult
|
53
|
-
|
54
|
-
when /^MT(\d*)$/
|
55
|
-
rank = Regexp.last_match(1)
|
56
|
-
rank ||= 1
|
57
|
-
rank = rank.to_i
|
58
|
-
tableName, result, number = getGetMaterialTableResult(rank)
|
59
|
-
|
60
|
-
when "ET"
|
61
|
-
tableName, result, number = getEmotionTableResult
|
62
|
-
|
63
|
-
when "NT"
|
64
|
-
tableName, result, number = getNameTableResult
|
65
|
-
|
66
|
-
when "KT"
|
67
|
-
tableName, result, number = getKyoukaiTableResult
|
68
|
-
|
69
|
-
else
|
70
|
-
debug("eval_game_system_specific_command commandNOT matched -> command:", command)
|
71
|
-
return ""
|
72
|
-
end
|
73
|
-
|
74
|
-
if result.empty?
|
75
|
-
return ""
|
76
|
-
end
|
77
|
-
|
78
|
-
text = "#{tableName}(#{number}):#{result}"
|
79
|
-
return text
|
80
|
-
end
|
81
|
-
|
82
|
-
def getReimonCompensationTableResult
|
83
|
-
tableName = "영문소비의 댓가표"
|
84
|
-
|
85
|
-
table = [
|
86
|
-
'사신화:물리법칙을 너무 초월한 대가로, 영혼이 왜곡되어, PC는 즉시 아라미타마로 변모한다. 아라미타마화한 PC는, 어딘가로 떠나간다.',
|
87
|
-
'존재소멸:아라미타마화를 최후의 힘으로 억누른다. 하지만 그 결과, PC의 영혼은 불타버려, 이 세계에서 소멸한다. 그 PC는 [상태변화: 사망]이 되어, 시체도 남지 않는다.',
|
88
|
-
'사망:영혼의 왜곡을 어떻게든 막지만, 영혼이 붕괴한다. PC는 [상태변화: 사망]이 되나 유체는 남는다.',
|
89
|
-
'영혼반괴:영혼의 왜곡을 막아냈지만, 영혼 자체에 치명적인 부상을 입어, 전신에 장해가 남는다. 거기에 동반하여 영문도 소실해, 일반인으로 돌아간다.',
|
90
|
-
'기억소멸:기적적으로, 영혼의 마모에 의한 신체적 악영향을 피한다. 시간을 두는 것으로 영문도 회복되나, 정신적인 영향을 받아, 모든 기억을 잃는다.',
|
91
|
-
'영향없음:기적적으로, 영혼의 마모에 의한 악영향을 완전히 피하고, 또한 영문의 회복도 빠를 것으로 보인다. 육체나 정신 모두, 딱히 영향은 없다.',
|
92
|
-
]
|
93
|
-
result, number = get_table_by_1d6(table)
|
94
|
-
|
95
|
-
return tableName, result, number
|
96
|
-
end
|
97
|
-
|
98
|
-
def getEmotionTableResult
|
99
|
-
tableName = "감정표"
|
100
|
-
|
101
|
-
table = [
|
102
|
-
[11, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'],
|
103
|
-
[12, '운명/그 캐릭터에게, 운명적, 또는 숙명적인 것을 느끼고 있다.'],
|
104
|
-
[13, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'],
|
105
|
-
[14, '가족/그 캐릭터에게, 가족같은 친근감을 품고 있다.'],
|
106
|
-
[15, '악연/그 캐릭터에게, 악연을 느끼고 있다.'],
|
107
|
-
[16, '악연/그 캐릭터에게, 악연을 느끼고 있다.'],
|
108
|
-
[21, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
|
109
|
-
[22, '사제/그 캐릭터와는, 마치 사제지간의 감정을 느끼고 있다. 누가 제자고 누가 스승인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
|
110
|
-
[23, '호적수/그 캐릭터를, 호적수라 여기고 있다.'],
|
111
|
-
[24, '호적수/그 캐릭터를, 호적수라 여기고 있다.'],
|
112
|
-
[25, '친근감/그 캐릭터에게, 친근감을 품고 있다.'],
|
113
|
-
[26, '친근감/그 캐릭터에게, 친근감을 품고 있다.'],
|
114
|
-
[31, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'],
|
115
|
-
[32, '성의/그 캐릭터에게, 성실함을 느끼고 있다.'],
|
116
|
-
[33, '우정/그 캐릭터에게, 우정을 품고 있다.'],
|
117
|
-
[34, '우정/그 캐릭터에게, 우정을 품고 있다.'],
|
118
|
-
[35, '존경/그 캐릭터에게, 존경을 품고 있다.'],
|
119
|
-
[36, '존경/그 캐릭터에게, 존경을 품고 있다.'],
|
120
|
-
[41, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
|
121
|
-
[42, '비호/그 캐릭터에게, 비호의 감정을 품고 있다. 누가 보호자고 누가 피보호자인지, 플레이어 끼리(또는 GM과)상담해 결정한다.'],
|
122
|
-
[43, '호감/그 캐릭터에게, 호감을 품고 있다.'],
|
123
|
-
[44, '호감/그 캐릭터에게, 호감을 품고 있다.'],
|
124
|
-
[45, '흥미/그 캐릭터에게, 흥미를 품고 있다.'],
|
125
|
-
[46, '흥미/그 캐릭터에게, 흥미를 품고 있다.'],
|
126
|
-
[51, '감명/그 캐릭터에게, 감명을 느끼고 있다.'],
|
127
|
-
[52, '감명/그 캐릭터에게, 감명을 느끼고 있다.'],
|
128
|
-
[53, '외경/그 캐릭터를 두려워하고 있다.'],
|
129
|
-
[54, '외경/그 캐릭터를 두려워하고 있다.'],
|
130
|
-
[55, '마음에 듬/그 캐릭터를 마음에 들어한다.'],
|
131
|
-
[56, '마음에 듬/그 캐릭터를 마음에 들어한다.'],
|
132
|
-
[61, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'],
|
133
|
-
[62, '애정/그 캐릭터에게 애정, 또는 거기에 가까운 집착심을 품고 있다.'],
|
134
|
-
[63, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'],
|
135
|
-
[64, '신뢰/그 캐릭터에게 신뢰를 느끼고 있다.'],
|
136
|
-
[65, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'],
|
137
|
-
[66, '*PC의 임의/플레이어, 또는 GM이 설정한 임의의 감정을 품고 있다.'],
|
138
|
-
]
|
139
|
-
|
140
|
-
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
141
|
-
|
142
|
-
result = get_table_by_number(number, table)
|
143
|
-
|
144
|
-
return tableName, result, number
|
145
|
-
end
|
146
|
-
|
147
|
-
def getNameTableResult
|
148
|
-
tableName = "전기 성씨・이름 결정표"
|
149
|
-
|
150
|
-
table = [
|
151
|
-
[11, '미츠루기(御剣) 리쿠/린'],
|
152
|
-
[12, '시시우치(獅子内) 야마토/카에데'],
|
153
|
-
[13, '하쿠긴(白銀) 하야토/사쿠라'],
|
154
|
-
[14, '타케노우치(竹内) 마코토/하루카'],
|
155
|
-
[15, '코다치(古太刀) 다이치/미사'],
|
156
|
-
[16, '쿠가(空閑) 슌/마오'],
|
157
|
-
[21, '오니가타(鬼形) 료/마이'],
|
158
|
-
[22, '미칸나기(御巫) 타쿠미/나나미'],
|
159
|
-
[23, '고마도우(護摩堂) 히토시/치히로'],
|
160
|
-
[24, '류엔(龍円) 타쿠마/아카네'],
|
161
|
-
[25, '카가미베(鏡部) 쿄우/아스카'],
|
162
|
-
[26, '이누가미(犬神) 코우/시오리'],
|
163
|
-
[31, '메이게츠인(明月院) 아오이/유이'],
|
164
|
-
[32, '도우메키(百目鬼) 렌야/모에'],
|
165
|
-
[33, '오소가미(怨神) 타츠야/아야카'],
|
166
|
-
[34, '아라라기(蘭) 류노스케/아즈사'],
|
167
|
-
[35, '타마키(珠輝) 아키라/히토미'],
|
168
|
-
[36, '간류(眼龍) 케이/사오리'],
|
169
|
-
[41, '텟포즈카(鉄砲塚) 마사토/사라'],
|
170
|
-
[42, '오리가미(檻神) 나오야/야요이'],
|
171
|
-
[43, '후지와라(不死原) 쥰/치아키'],
|
172
|
-
[44, '쿠로우자(九朗座) 무사시/하루나'],
|
173
|
-
[45, '츠치미카도(土御門) 쿄스케/스이'],
|
174
|
-
[46, '이자요이(十六夜) 케이지/후타바'],
|
175
|
-
[51, '텐포우린(転法輪) 히로/레나'],
|
176
|
-
[52, '시교우(執行) 히비키/사유리'],
|
177
|
-
[53, '호우리(祝) 료타로/히나'],
|
178
|
-
[54, '코우소(神尊) 토모/시온'],
|
179
|
-
[55, '아시야(芦屋) 타카유키/카스미'],
|
180
|
-
[56, '나나샤(七社) 카즈키/후카'],
|
181
|
-
[61, '키바(騎馬) 테츠야/시노'],
|
182
|
-
[62, '토우마(当麻) 켄/사야'],
|
183
|
-
[63, '키츠네즈카(狐塚) 호쿠토/마야'],
|
184
|
-
[64, '텐진바야시(天神林) 소라/아키라'],
|
185
|
-
[65, '메아라시(明嵐) 야쿠모/오토하'],
|
186
|
-
[66, '쿠사카베(草壁) 다이고/아야'],
|
187
|
-
]
|
188
|
-
|
189
|
-
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
190
|
-
|
191
|
-
result = get_table_by_number(number, table)
|
192
|
-
|
193
|
-
return tableName, result, number
|
194
|
-
end
|
195
|
-
|
196
|
-
def getKyoukaiTableResult
|
197
|
-
tableName = "마경임계표"
|
198
|
-
|
199
|
-
table = [
|
200
|
-
[11, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."],
|
201
|
-
[12, "시공의 비틀림\n현재 위치의 시공이 비틀려, PC전원은 즉시 [침입 에리어]로 돌아간다."],
|
202
|
-
[13, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."],
|
203
|
-
[14, "강적등장\n갑자기, 〈재앙신〉화한 [모노노케]가 출현한다. GM은 PC의 [세계간섭LV]의 평균+3의 [LV]을 가진 임의의 [모노노케]를 1체 골라, 임의의 [탐색 에리어]에 배치. 거기서는 [우회]불가로 [전투]가 발생한다."],
|
204
|
-
[15, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."],
|
205
|
-
[16, "그림자의 손\n장기로 형성된 무수한 손이, PC들을 붙잡으려고 한다. PC전원은 [효과종류: 마법공격/거리: 전투지대/대상: 전투지대/달성치: 20+PC의 [세계간섭LV]의 평균/마법 데미지: 20×PC의 [세계간섭LV]의 평균/저항[반감]]을 받는다."],
|
206
|
-
[21, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."],
|
207
|
-
[22, "무수한 마안\n공간 전체게 무시무시한 마안이 출현한다. PC전원은 [대휴식]할 때까지 [상태변화: 암흑·고통]이 된다."],
|
208
|
-
[23, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."],
|
209
|
-
[24, "공간붕괴\n갑자기, 마경의 공간이 붕괴한다. PC전원은 [효과종류: 물리공격/거리: 전투지대/대상: 전투지대/달성치: 30+PC의 [세계간섭LV]의 평균/물리 데미지: 30×PC의 [세계간섭LV]의 평균]을 받는다."],
|
210
|
-
[25, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."],
|
211
|
-
[26, "방어구 부식\n이질적인 안개가 나타나, 방어구를 부식시킨다. PC전원은, [소지·장비]중인 임의의 [아이템: 방어구]를 1개 잃는다."],
|
212
|
-
[31, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."],
|
213
|
-
[32, "소재소실\n주변에서 수상한 빛이 떨어져, 소지 중인 [소재]를 소실시킨다. PC 전원이 [소지]중인 [소재]가 전부 소멸한다."],
|
214
|
-
[33, "없음\n딱히 아무 일도 일어나지 않는다."],
|
215
|
-
[34, "없음\n딱히 아무 일도 일어나지 않는다."],
|
216
|
-
[35, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."],
|
217
|
-
[36, "모노노케 강습\n갑자기, 〈재앙신〉화한 [모노노케]가 출현해, PC들을 덮친다. GM은 PC의 [세계간섭LV]의 평균+2의 [LV]을 가진 임의의 [모노노케]를 2체 골라, PC의 앞에 출현시키고, 즉시 [전투]를 개시한다."],
|
218
|
-
[41, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."],
|
219
|
-
[42, "휴식방해\nPC가 휴식하려고 할 때마다, 다양한 공간에서 촉수나 독충 등이 출현해 덮쳐든다. PC들은 이후, [마경토벌]이 종료될 때까지 [대휴식]을 할 수 없다."],
|
220
|
-
[43, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."],
|
221
|
-
[44, "용맥파괴\n영력이 폭주해 공간이 일그러져, [영력]이 어그러진다. PC전원은 즉시 [영력]을 모두 다시 굴린다."],
|
222
|
-
[45, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."],
|
223
|
-
[46, "고유시간정지\nPC들의 육체의 일부가 잿빛으로 변하고, 움직일 수 없게 된다. PC 전원은, [타이밍: 준비·방어·특수]에서 1개 골라, 이후 그 [타이밍]을 소비할 수 없게 된다."],
|
224
|
-
[51, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."],
|
225
|
-
[52, "용맥불순\n영력이 갑자기 고갈되어, [영력]의 순환에 악영향이 발생한다. PC전원은 이후, [마경토벌]이 종료될 때까지 [영력조작]을 할 수 없다."],
|
226
|
-
[53, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."],
|
227
|
-
[54, "술식봉인\n주변의 공기가 변모해, 악영향이 일어난다. PC전원은 이후, 취득한 《탤런트》중, 사용하는 [코스트]가 가장 큰 것 1개가 [마경토벌]종료까지 사용불능이 된다. [코스트: 없음]뿐일 경우, GM이 임의로 1개 결정한다."],
|
228
|
-
[55, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다.。"],
|
229
|
-
[56, "장식품 소멸\n주변이 푸른 빛으로 감싸이고, 어째선지 PC들의 장식품이 사라진다. PC전원은, [소지·장비]중인 [아이템: 장식]을 모두 잃는다."],
|
230
|
-
[61, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."],
|
231
|
-
[62, "우자의 황금 소실\n주변이 붉은 빛으로 감싸이고, 어째선지 PC들의 [G]가 사라진다. PC 전원은, [소지금]이 [반감]한다."],
|
232
|
-
[63, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."],
|
233
|
-
[64, "GM의 임의\n이 표 중에서 GM이 효과를 1개 골라 발생시킨다."],
|
234
|
-
[65, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."],
|
235
|
-
[66, "임계중복\n[마경임계]가 2번 발생한다. GM은 이 표를 2번 굴려, 효과를 각각 적용할 수 있다. 다시 「임계중복」이 발생한 경우, [GM의 임의] 1번으로 취급한다."],
|
236
|
-
]
|
237
|
-
|
238
|
-
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
239
|
-
|
240
|
-
result = get_table_by_number(number, table)
|
241
|
-
|
242
|
-
return tableName, result, number
|
243
|
-
end
|
244
|
-
|
245
|
-
def getGetMaterialTableResult(rank)
|
246
|
-
tableName = "획득 소재 차트"
|
247
|
-
table = [
|
248
|
-
'진홍의 ',
|
249
|
-
'까끌까끌한 ',
|
250
|
-
'비취의 ',
|
251
|
-
'예리한 ',
|
252
|
-
'황금의 ',
|
253
|
-
'말랑말랑한 ',
|
254
|
-
'은색의 ',
|
255
|
-
'뾰족한 ',
|
256
|
-
'순백의 ',
|
257
|
-
'딱딱한 ',
|
258
|
-
'칠흑의 ',
|
259
|
-
'빛나는 ',
|
260
|
-
'매끄러운 ',
|
261
|
-
'탁한 ',
|
262
|
-
'덥수룩한 ',
|
263
|
-
'사악한 ',
|
264
|
-
'끈적이는 ',
|
265
|
-
'성스러운 ',
|
266
|
-
'작열의 ',
|
267
|
-
'불꽃의 ',
|
268
|
-
'빙결의 ',
|
269
|
-
'얼음의 ',
|
270
|
-
'뜨거운 ',
|
271
|
-
'바람의 ',
|
272
|
-
'차가운 ',
|
273
|
-
'번개의 ',
|
274
|
-
'흙의 ',
|
275
|
-
'환상의 ',
|
276
|
-
'뼈형태의 ',
|
277
|
-
'봉인의 ',
|
278
|
-
'이빨형태의 ',
|
279
|
-
'비늘형태의 ',
|
280
|
-
'돌형태의 ',
|
281
|
-
'보석형태의 ',
|
282
|
-
'모피형태의 ',
|
283
|
-
'깃털형태의 ',
|
284
|
-
]
|
285
|
-
|
286
|
-
result, number = get_table_by_d66(table)
|
287
|
-
result += "단편"
|
288
|
-
|
289
|
-
effect, number2 = getMaterialEffect(rank)
|
290
|
-
number = "#{number},#{number2}"
|
291
|
-
|
292
|
-
price = getPrice(effect)
|
293
|
-
|
294
|
-
result = "#{result}.#{effect}"
|
295
|
-
result += ":#{price}" unless price.nil?
|
296
|
-
|
297
|
-
return tableName, result, number
|
298
|
-
end
|
299
|
-
|
300
|
-
def getMaterialEffect(rank)
|
301
|
-
number = @randomizer.roll_once(6)
|
302
|
-
|
303
|
-
result = ""
|
304
|
-
type = ""
|
305
|
-
if number < 6
|
306
|
-
result, number2 = getMaterialEffectNomal(rank)
|
307
|
-
type = "자주 발견되는 소재"
|
308
|
-
else
|
309
|
-
result, number2 = getMaterialEffectRare()
|
310
|
-
type = "드문 소재"
|
311
|
-
end
|
312
|
-
|
313
|
-
result = "#{type}:#{result}"
|
314
|
-
number = "#{number},#{number2}"
|
315
|
-
|
316
|
-
return result, number
|
317
|
-
end
|
318
|
-
|
319
|
-
def getMaterialEffectNomal(rank)
|
320
|
-
table = [
|
321
|
-
[13, '체력+n'],
|
322
|
-
[16, '민첩+n'],
|
323
|
-
[23, '지성+n'],
|
324
|
-
[26, '정신+n'],
|
325
|
-
[33, '행운+n'],
|
326
|
-
[35, '물D+n'],
|
327
|
-
[41, '마D+n'],
|
328
|
-
[43, '행동+n'],
|
329
|
-
[46, '생명+n×3'],
|
330
|
-
[53, '장갑+n'],
|
331
|
-
[56, '결계+n'],
|
332
|
-
[63, '이동+n마스'],
|
333
|
-
[66, '※PC의 임의'],
|
334
|
-
]
|
335
|
-
|
336
|
-
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
337
|
-
|
338
|
-
result = get_table_by_number(number, table)
|
339
|
-
debug("getMaterialEffectNomal result", result)
|
340
|
-
|
341
|
-
if result =~ /\+n/
|
342
|
-
power, number2 = getMaterialEffectPower(rank)
|
343
|
-
|
344
|
-
result = result.sub(/\+n/, "+#{power}")
|
345
|
-
number = "#{number},#{number2}"
|
346
|
-
end
|
347
|
-
|
348
|
-
return result, number
|
34
|
+
@locale = :ko_kr
|
349
35
|
end
|
350
36
|
|
351
|
-
|
352
|
-
table = [
|
353
|
-
[4, [1, 1, 1, 2, 2, 3]],
|
354
|
-
[8, [1, 1, 2, 2, 3, 3]],
|
355
|
-
[9, [1, 2, 3, 3, 4, 5]],
|
356
|
-
]
|
357
|
-
|
358
|
-
rank = 9 if rank > 9
|
359
|
-
rankTable = get_table_by_number(rank, table)
|
360
|
-
power, number = get_table_by_1d6(rankTable)
|
361
|
-
|
362
|
-
return power, number
|
363
|
-
end
|
364
|
-
|
365
|
-
def getMaterialEffectRare()
|
366
|
-
table = [[3, '**부여'],
|
367
|
-
[5, '**반감'],
|
368
|
-
[6, '※GM의 임의'],]
|
369
|
-
|
370
|
-
number = @randomizer.roll_once(6)
|
371
|
-
result = get_table_by_number(number, table)
|
372
|
-
debug('getMaterialEffectRare result', result)
|
373
|
-
|
374
|
-
if result =~ /\*\*/
|
375
|
-
attribute, number2 = getAttribute()
|
376
|
-
result = result.sub(/\*\*/, attribute.to_s)
|
377
|
-
number = "#{number},#{number2}"
|
378
|
-
end
|
379
|
-
|
380
|
-
return result, number
|
381
|
-
end
|
382
|
-
|
383
|
-
def getAttribute()
|
384
|
-
table = [
|
385
|
-
[21, '[화염]'],
|
386
|
-
[33, '[냉기]'],
|
387
|
-
[43, '[전격]'],
|
388
|
-
[53, '[풍압]'],
|
389
|
-
[56, '[환각]'],
|
390
|
-
[62, '[마독]'],
|
391
|
-
[64, '[자력]'],
|
392
|
-
[66, '[섬광]'],
|
393
|
-
]
|
394
|
-
|
395
|
-
number = @randomizer.roll_d66(D66SortType::NO_SORT)
|
396
|
-
|
397
|
-
result = get_table_by_number(number, table)
|
398
|
-
|
399
|
-
return result, number
|
400
|
-
end
|
401
|
-
|
402
|
-
def getPrice(effect)
|
403
|
-
power = 0
|
404
|
-
|
405
|
-
case effect
|
406
|
-
when /\+(\d+)/
|
407
|
-
power = Regexp.last_match(1).to_i
|
408
|
-
when /부여/
|
409
|
-
power = 3
|
410
|
-
when /반감/
|
411
|
-
power = 4
|
412
|
-
else
|
413
|
-
power = 0
|
414
|
-
end
|
415
|
-
|
416
|
-
table = [nil,
|
417
|
-
'500G(효과치:1)',
|
418
|
-
'1000G(효과치:2)',
|
419
|
-
'1500G(효과치:3)',
|
420
|
-
'2000G(효과치:4)',
|
421
|
-
'3000G(효과치:5)',]
|
422
|
-
price = table[power]
|
423
|
-
|
424
|
-
return price
|
425
|
-
end
|
37
|
+
TABLES = translate_tables(:ko_kr).freeze
|
426
38
|
end
|
427
39
|
end
|
428
40
|
end
|