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,249 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class CardRanker < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'CardRanker'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'カードランカー'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'かあとらんかあ'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
ランダムでモンスターカードを選ぶ (RM)
|
18
|
+
特定のモンスターカードを選ぶ (CMxy x:色、y:番号)
|
19
|
+
白:W、青:U、緑:V、金:G、赤:R、黒:B
|
20
|
+
例)CMW1→白の2:白竜 CMG12→金の12:土精霊
|
21
|
+
場所表 (ST)
|
22
|
+
街中場所表 (CST)
|
23
|
+
郊外場所表 (OST)
|
24
|
+
学園場所表 (GST)
|
25
|
+
運命表 (DT)
|
26
|
+
大会運命表 (TDT)
|
27
|
+
学園運命表 (GDT)
|
28
|
+
崩壊運命表 (CDT)
|
29
|
+
INFO_MESSAGE_TEXT
|
30
|
+
|
31
|
+
def initialize(command)
|
32
|
+
super(command)
|
33
|
+
|
34
|
+
@sort_add_dice = true
|
35
|
+
@enabled_d66 = true
|
36
|
+
@d66_sort_type = D66SortType::ASC
|
37
|
+
end
|
38
|
+
|
39
|
+
# ゲーム別成功度判定(2D6)
|
40
|
+
def check_2D6(total, dice_total, _dice_list, cmp_op, target)
|
41
|
+
return '' if target == '?'
|
42
|
+
return '' unless cmp_op == :>=
|
43
|
+
|
44
|
+
if dice_total <= 2
|
45
|
+
return " > ファンブル"
|
46
|
+
elsif dice_total >= 12
|
47
|
+
return " > スペシャル > " + getRandumMonster()
|
48
|
+
elsif total >= target
|
49
|
+
return " > 成功"
|
50
|
+
else
|
51
|
+
return " > 失敗"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def eval_game_system_specific_command(command)
|
56
|
+
command = command.upcase
|
57
|
+
|
58
|
+
case command
|
59
|
+
when /^RM$/i
|
60
|
+
return getRandumMonster
|
61
|
+
when /^CM(\w)(\d+)$/i
|
62
|
+
color = Regexp.last_match(1).upcase
|
63
|
+
index = Regexp.last_match(2).to_i
|
64
|
+
return getMonster(color, index)
|
65
|
+
else
|
66
|
+
return roll_tables(command, TABLES)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def getRandumMonster
|
71
|
+
type = "ランダムモンスター選択"
|
72
|
+
colorTable = getColorTable
|
73
|
+
color, colorIndex = get_table_by_1d6(colorTable)
|
74
|
+
|
75
|
+
monsters = getMonsterTables(colorIndex - 1)
|
76
|
+
monsterName, monsterIndex = get_table_by_2d6(monsters)
|
77
|
+
|
78
|
+
output = "#{type}(#{colorIndex},#{monsterIndex}) > #{color}の#{monsterIndex}:#{monsterName}"
|
79
|
+
return output
|
80
|
+
end
|
81
|
+
|
82
|
+
def getColorTable
|
83
|
+
['白', '青', '緑', '金', '赤', '黒']
|
84
|
+
end
|
85
|
+
|
86
|
+
def getMonsterTables(colorIndex)
|
87
|
+
tables = [
|
88
|
+
['白竜', '僧侶', '格闘家', '斧使い', '剣士', '槍士', '歩兵', '弓兵', '砲兵', '天使', '軍神'],
|
89
|
+
['水竜', '魚', '魚人', 'イカ', '蟹', '探偵', '海賊', '魔術師', '使い魔', '雲', '水精霊'],
|
90
|
+
['緑竜', 'ワーム', '鳥人', '鳥', '獣', '獣人', 'エルフ', '妖精', '昆虫', '植物', '森精霊'],
|
91
|
+
['金竜', '宝石', '岩石', '鋼', '錬金術師', '魔法生物', 'ドワーフ', '機械', '運命', '女神', '土精霊'],
|
92
|
+
['火竜', '竜人', '恐竜', '戦車', '蛮族', '小鬼', '大鬼', '巨人', '雷', '炎', '火精霊'],
|
93
|
+
['黒竜', '闇騎士', '怪物', '忍者', '妖怪', '蝙蝠', '吸血鬼', '不死者', '幽霊', '悪魔', '邪神'],
|
94
|
+
]
|
95
|
+
|
96
|
+
return tables[colorIndex]
|
97
|
+
end
|
98
|
+
|
99
|
+
def getMonster(color, monsterIndex)
|
100
|
+
return nil if monsterIndex < 2
|
101
|
+
|
102
|
+
type = "モンスター選択"
|
103
|
+
|
104
|
+
colorWords = ['W', 'U', 'V', 'G', 'R', 'B']
|
105
|
+
colorIndex = colorWords.index(color)
|
106
|
+
debug("colorIndex")
|
107
|
+
|
108
|
+
return nil if colorIndex.nil?
|
109
|
+
|
110
|
+
colorTable = getColorTable
|
111
|
+
color = colorTable[colorIndex]
|
112
|
+
|
113
|
+
monsters = getMonsterTables(colorIndex)
|
114
|
+
debug("monsters", monsters)
|
115
|
+
debug("monsterIndex", monsterIndex)
|
116
|
+
monsterName = monsters[monsterIndex - 2]
|
117
|
+
|
118
|
+
return nil if monsterName.nil?
|
119
|
+
|
120
|
+
output = "#{type} > #{color}の#{monsterIndex}:#{monsterName}"
|
121
|
+
return output
|
122
|
+
end
|
123
|
+
|
124
|
+
TABLES = {
|
125
|
+
"BFT" => DiceTable::Table.new(
|
126
|
+
"バトルフィールド表",
|
127
|
+
"1D6",
|
128
|
+
[
|
129
|
+
"ハイ・アンティ/戦闘フェイズの終了時、勝者は通常習得できるモンスターカード一つに加えて、もう一つ敗者からモンスターカードを選んで手に入れることができる。//通常よりも多くのカードを賭けの対象にするルール。",
|
130
|
+
"バーニング/ラウンドの終了時、すべてのキャラクターは【LP】現在値を3点失う。//マグマの近くや極寒の地など体力を削られるような過酷な環境で行われるルール。",
|
131
|
+
"ノーマル/特に影響なし。//通常のルール。",
|
132
|
+
"ハード/すべてのキャラクターの判定にプラス1の修正を加える。また、ラウンド終了時にすべてのキャラクターはモンスターカードを一つ選んで破壊状態(ルールブックP187参照)にしなければならない。//風の強い場所や水中など、カードを扱いにくい環境でのルール。",
|
133
|
+
"スピード/モンスターカードのリスクが1高いものとして扱われる。また、判定に失敗した場合、速度から振り落とされて1D6のダメージを受ける。//バイクやローラーボードなどを使って行われる高速カードバトルルール。",
|
134
|
+
"デスルール/戦闘フェイズでも死亡判定が発声する。また、戦闘不能になったキャラクターは即座に死亡判定を行う。ただし、攻撃を行った側がデスルールを使用しないことを選択すれば、死亡判定は発生しない。//モンスターによって実際のダメージを与える、死の危険性があるルール。"
|
135
|
+
]
|
136
|
+
),
|
137
|
+
"CDT" => DiceTable::Table.new(
|
138
|
+
"崩壊運命表",
|
139
|
+
"1D6",
|
140
|
+
[
|
141
|
+
"レジェンドカードがあなたを崩壊する大地に呼び寄せた。暴虐な振る舞いをするダークランカーを倒すことをレジェンドカードは望んでいる。",
|
142
|
+
"あなたはひょんなことから人を助けた。すると、あなたはいつの間にか救世主と呼ばれる存在になっていた、救世主であるあなたに人々は懇願する。ダークランカーを倒してくれと。",
|
143
|
+
"あなたの住むところはダークランカーの力が及ばない楽園であった。しかし、楽園はダークランカー一味の襲撃にあい、あなただけが生き残ってしまった。楽園を出たあなたは戦いを決意する。",
|
144
|
+
"世の中は変わった。だが、愛する人(もしくは愛する物や家族)は健在だ。あなたは愛する人を護るためにも、ダークランカーを倒すべく動き始めた。",
|
145
|
+
"あなたはこの世界が好きだ。それはどんな理由でもよい。しかし、ダークランカーが持つダークカードはこの世界を壊す。ならば、倒してこの世界を守らねばならない。",
|
146
|
+
"崩壊していく大地。泣き叫ぶ人々の声。あなたはこの状況を作ったのが、あなたの身内であると知る。ダークカードの手から身内を救うためにも、あなたはカードを手にとった。"
|
147
|
+
]
|
148
|
+
),
|
149
|
+
"CST" => DiceTable::Table.new(
|
150
|
+
"街中場所表",
|
151
|
+
"1D6",
|
152
|
+
[
|
153
|
+
"カードショップ/ソウルカードを遊ぶ者たちが集まる場所。プレイスペースもあれば、カードの販売もしている。",
|
154
|
+
"ビル街/ビルが立ち並ぶ街。ビジネスマンが忙しなく動き、チェーン店が多く見られる。",
|
155
|
+
"駅前/人が集まる駅前。電車から降りてくる人は多く、今日も人と人がすれ違う。",
|
156
|
+
"食事処/レストランから大衆食堂、喫茶店やバーなど、食事は人の活力であり、カードランカーにも元気は必要だ。",
|
157
|
+
"道路/長く広い道路。車と人が通過していく場所だが、時おりトラブルを抱えたカードランカー同士が戦っている。",
|
158
|
+
"プール/都会にあるプール。都会の生活に疲れた人々が集まる場所。時おり、ソウルカードの戦いも見られる。"
|
159
|
+
]
|
160
|
+
),
|
161
|
+
"DT" => DiceTable::Table.new(
|
162
|
+
"運命表",
|
163
|
+
"1D6",
|
164
|
+
[
|
165
|
+
"あなたが欲しているカードはダークランカーが持っているかもしれないという情報を掴んだ。ダークランカーを倒し、アンティルールでカードを手に入れなければならない。",
|
166
|
+
"ダークランカーとなった人物とあなたはカード仲間であったが、ある日見たその人物はダークカードの力にとり憑かれて豹変していた。あなたは仲間をカードによって救うため、戦いを決意した。",
|
167
|
+
"ダークランカーはあなたの仲間や身内、大切なモノを傷つけた(壊した)。あなたの大切なものを傷つけたダークランカー、許しはしない。",
|
168
|
+
"あなたの持つレジェンドカードが、ダークランカーもしくは他のレジェンドカードが出現することを察知した。レジェンドカードに導かれるまま、キミはダークランカー(レジェンドカード)を探し始めた。",
|
169
|
+
"カードランカーの組織やソウルカードの安定を願う人からそのダークランカーを倒すように依頼を受けた、あなたはその仕事を受ける価値があると思った。そう思った理由は報酬でもいいし、あなたの流儀でもよい。",
|
170
|
+
"ダークランカーとあなたは偶然にも出会ってしまった。ダークランカーは危険な存在だ。見てしまった以上、放っておくわけにはいかない。"
|
171
|
+
]
|
172
|
+
),
|
173
|
+
"GDT" => DiceTable::Table.new(
|
174
|
+
"学園運命表",
|
175
|
+
"1D6",
|
176
|
+
[
|
177
|
+
"あなたが過ごしているクラスや寮、部活が潰されそうになった。その裏にはダークランカーの影響があるらしい。",
|
178
|
+
"学園の偉い人から、カードランカーであるあなたに調査依頼が入った。どうやらダークランカーが学園に干渉しているとのこと。",
|
179
|
+
"学園内のカードが奪われた。ダークランカーの影響だろう。大切にされていたカードを取り戻すために、あなたは立ち上がった。",
|
180
|
+
"学内に邪悪な影響を受けたカードが入り込んでいた。おそらく、ダークランカーの仕業に違いない。",
|
181
|
+
"ダークランカーによって被害を受けた生徒があなたに相談してきた。あなたはその生徒のためにもダークランカーの調査に乗り出した。",
|
182
|
+
"ダークランカーの影響を受け、授業や部活動はまともにできなくなってしまった。あなたは元の学校生活を再開させるためにも、調査を始めた。"
|
183
|
+
]
|
184
|
+
),
|
185
|
+
"OST" => DiceTable::Table.new(
|
186
|
+
"郊外場所表",
|
187
|
+
"1D6",
|
188
|
+
[
|
189
|
+
"カードショップ/ソウルカードを遊ぶ者たちが集まる場所。少し治安と客層が悪いが、賞金稼ぎも集まる。",
|
190
|
+
"荒野/動植物も少なく、ピリピリとした雰囲気のある場所。",
|
191
|
+
"遺跡/古代の遺跡。レジェンドカードやモンスターカードはこうした場所に発生したり、隠されていたりすることが多い。",
|
192
|
+
"平原/どこまでも続く平原。動物も温厚であり、生い茂る草花が柔らかな印象を与える場所だ。",
|
193
|
+
"山岳/険しい道が続く山。カードの精霊たちが生息していることもあるが、カード山賊団には気をつけねばならない。",
|
194
|
+
"海川/海や川。山と同じくカードの精霊たちが住んでいる場所だ。安らげる場所でもあり、休憩している人がソウルカードをしている。"
|
195
|
+
]
|
196
|
+
),
|
197
|
+
"GST" => DiceTable::Table.new(
|
198
|
+
"学園場所表",
|
199
|
+
"1D6",
|
200
|
+
[
|
201
|
+
"購買/学生にとっては学園内で唯一買い物ができる場所。パンの他に、カードパックが売っている。",
|
202
|
+
"グラウンド/体育館/運動するのに適した広い空間だが、同時にソウルカードをやるのにもうってつけの場所である。",
|
203
|
+
"屋上/校舎の屋上は一部の生徒には人気のスポットだ。今日も強い風が彼らを迎えている。",
|
204
|
+
"教室/日が昇っている間は、学生たちの声で賑やかな場所。夕暮れからは少し物哀しく、寂しい。",
|
205
|
+
"校舎裏/学校の中でも珍しく人目につかない場所。不良たちがソウルカードをやっている姿が見られる。",
|
206
|
+
"部活棟/部活をやる者のために用意された場所。しかし、サボってソウルカードをやっているところも。"
|
207
|
+
]
|
208
|
+
),
|
209
|
+
"ST" => DiceTable::Table.new(
|
210
|
+
"場所表",
|
211
|
+
"1D6",
|
212
|
+
[
|
213
|
+
"カード系/ショップや大会の会場など、ソウルカードに関係がある場所。カードランカーたちも集まってくる。",
|
214
|
+
"自然/公園や山など、自然の息吹が感じられる場所。耳を澄ませばカードの声も聞こえるかもしれない。",
|
215
|
+
"神秘/古代の施設や、神社・教会などの神秘的な場所。レジェンドカードが隠されているかもしれない。",
|
216
|
+
"安息/自宅など、安らげる空間。そこはあなたが安らげる場所であり、思い出の地なのかもしれない。",
|
217
|
+
"街中/人々が住む街中。何気なく落ちているカードの中には、価値があるものもあるかも。",
|
218
|
+
"水辺/プールや海岸など、水が近くに存在する場所。ひとまず、ここでひと息つけそうだ。"
|
219
|
+
]
|
220
|
+
),
|
221
|
+
"TDT" => DiceTable::Table.new(
|
222
|
+
"大会運命表",
|
223
|
+
"1D6",
|
224
|
+
[
|
225
|
+
"あなたは友人と共に大会に出場した。しかし、友人はダークランカーによって倒されてしまった。",
|
226
|
+
"あなたは大会の商品を狙い、大会に出場した。だが、ダークランカーもそれを狙っているらしい。",
|
227
|
+
"あなたは大会の運営者から、大会に関わっているダークランカーの撃破を依頼された。",
|
228
|
+
"あなたはカードの導くままに、大会に関わってくるダークランカーの出現を察知した。",
|
229
|
+
"あなたは大会の一選手として戦っていた。だが、謎の刺客によって襲われた。きっとダークランカーの仕業に違いない。",
|
230
|
+
"あなたは大会に出場し、優勝候補と言われているカードランカーだ。だが、そんなキミをダークランカーは襲った。"
|
231
|
+
]
|
232
|
+
),
|
233
|
+
"WT" => DiceTable::Table.new(
|
234
|
+
"変調表",
|
235
|
+
"1D6",
|
236
|
+
[
|
237
|
+
"猛毒/ラウンド終了時に【LP】の現在値を3点失う。また【LP】の現在値を回復できない。",
|
238
|
+
"炎上/ラウンド終了時に、モンスターカードを一つ選び破壊状態にしなければならない。既に破壊状態になっているものは選べない。",
|
239
|
+
"妨害/攻撃判定にマイナス2の修正を受ける。",
|
240
|
+
"捕縛/ブロック判定にマイナス2の修正を受ける。",
|
241
|
+
"召喚制限/「タイプ:補助」のモンスターカードを使用できない。",
|
242
|
+
"暗闇/「タイプ:支援」のモンスターカードを使用できない。"
|
243
|
+
]
|
244
|
+
),
|
245
|
+
}.freeze
|
246
|
+
register_prefix(['RM', 'CM.*'] + TABLES.keys)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bcdice/command_parser'
|
4
|
+
|
5
|
+
module BCDice
|
6
|
+
module GameSystem
|
7
|
+
class ChaosFlare < Base
|
8
|
+
# ゲームシステムの識別子
|
9
|
+
ID = 'ChaosFlare'
|
10
|
+
# ゲームシステム名
|
11
|
+
NAME = 'カオスフレア'
|
12
|
+
|
13
|
+
# ゲームシステム名の読みがな
|
14
|
+
SORT_KEY = 'かおすふれあ'
|
15
|
+
|
16
|
+
# ダイスボットの使い方
|
17
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
18
|
+
判定
|
19
|
+
CF
|
20
|
+
書式: [ダイスの数]CF[修正値][@クリティカル値][#ファンブル値][>=目標値]
|
21
|
+
CF以外は全て省略可能
|
22
|
+
例:
|
23
|
+
- CF 2D6,クリティカル値12,ファンブル値2で判定
|
24
|
+
- CF+10@10 修正値+10,クリティカル値10で判定
|
25
|
+
- CF+10#3 修正値+10,ファンブル値3で判定
|
26
|
+
- CF+10>=10 目標値を指定した場合、差分値も出力する
|
27
|
+
- 3CF+10@10#3>=10 3D6での判定
|
28
|
+
- CF@9#3+8>=10
|
29
|
+
|
30
|
+
2D6
|
31
|
+
ファンブル値2で判定する。クリティカルの判定は行われない。
|
32
|
+
目標値が設定された場合、差分値を出力する。
|
33
|
+
- 2D6+4>=10
|
34
|
+
|
35
|
+
各種表
|
36
|
+
FT: 因縁表
|
37
|
+
FTx: 数値を指定すると因果表の値を出力する
|
38
|
+
- FT -> 11から66の間でランダム決定
|
39
|
+
- FT23 -> 23の項目を出力
|
40
|
+
- FT0
|
41
|
+
- FT7
|
42
|
+
INFO_MESSAGE_TEXT
|
43
|
+
|
44
|
+
register_prefix(['\d*CF.*', 'FT\d*'])
|
45
|
+
|
46
|
+
# ゲーム別成功度判定(2D6)。以前の処理をそのまま残しています。
|
47
|
+
def check_2D6(total, dice_total, _dice_list, cmp_op, target)
|
48
|
+
return '' if target == '?'
|
49
|
+
|
50
|
+
output = ''
|
51
|
+
|
52
|
+
if dice_total <= 2
|
53
|
+
total -= 20
|
54
|
+
output = " > ファンブル(-20)"
|
55
|
+
end
|
56
|
+
|
57
|
+
unless cmp_op == :>=
|
58
|
+
return output
|
59
|
+
end
|
60
|
+
|
61
|
+
if total >= target
|
62
|
+
output += " > 成功"
|
63
|
+
if total > target
|
64
|
+
output += " > 差分値#{total - target}"
|
65
|
+
end
|
66
|
+
else
|
67
|
+
output += " > 失敗 > 差分値#{total - target}"
|
68
|
+
end
|
69
|
+
|
70
|
+
return output
|
71
|
+
end
|
72
|
+
|
73
|
+
def eval_game_system_specific_command(command)
|
74
|
+
if command.start_with? "FT"
|
75
|
+
roll_fate_table(command)
|
76
|
+
else
|
77
|
+
cf_roll(command)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
# 因縁表
|
84
|
+
def roll_fate_table(command)
|
85
|
+
m = /^FT(\d+)?/.match(command)
|
86
|
+
if m[1]
|
87
|
+
num = m[1].to_i
|
88
|
+
if [0, 7].include?(num)
|
89
|
+
return "因果表(#{num}) > #{FATE_TABLE[num][0]}"
|
90
|
+
end
|
91
|
+
|
92
|
+
dice1 = num / 10
|
93
|
+
dice2 = num % 10
|
94
|
+
if !(1..6).include?(dice1) || !(1..6).include?(dice2)
|
95
|
+
return nil
|
96
|
+
end
|
97
|
+
else
|
98
|
+
dice1 = @randomizer.roll_once(6)
|
99
|
+
dice2 = @randomizer.roll_once(6)
|
100
|
+
end
|
101
|
+
|
102
|
+
index1 = dice1
|
103
|
+
index2 = (dice2 / 2) - 1
|
104
|
+
return "因果表(#{dice1}#{dice2}) > #{FATE_TABLE[index1][index2]}"
|
105
|
+
end
|
106
|
+
|
107
|
+
# カオスフレア専用コマンド
|
108
|
+
# @param command [String]
|
109
|
+
# @return [String, nil]
|
110
|
+
def cf_roll(command)
|
111
|
+
parser = CommandParser.new(/\d*CF/)
|
112
|
+
|
113
|
+
@cmd = parser.parse(command)
|
114
|
+
unless @cmd
|
115
|
+
return nil
|
116
|
+
end
|
117
|
+
|
118
|
+
times = @cmd.command == "CF" ? 2 : @cmd.command.to_i
|
119
|
+
critical = @cmd.critical || 12
|
120
|
+
fumble = @cmd.fumble || 2
|
121
|
+
@cmd.dollar = nil
|
122
|
+
|
123
|
+
if times < 0 || ![:>=, nil].include?(@cmd.cmp_op)
|
124
|
+
return nil
|
125
|
+
end
|
126
|
+
|
127
|
+
dice_list = @randomizer.roll_barabara(times, 6)
|
128
|
+
dice_total = dice_list.sum()
|
129
|
+
dice_list_text = dice_list.join(",")
|
130
|
+
|
131
|
+
is_critical = dice_total >= critical
|
132
|
+
is_fumble = dice_total <= fumble
|
133
|
+
|
134
|
+
total =
|
135
|
+
if is_critical
|
136
|
+
30
|
137
|
+
elsif is_fumble
|
138
|
+
-20
|
139
|
+
else
|
140
|
+
dice_total
|
141
|
+
end
|
142
|
+
|
143
|
+
total += @cmd.modify_number
|
144
|
+
|
145
|
+
sequence = [
|
146
|
+
"(#{@cmd.to_s(:after_modify_number)})",
|
147
|
+
"#{dice_total}[#{dice_list_text}]",
|
148
|
+
total.to_s,
|
149
|
+
("0" if total < 0),
|
150
|
+
("クリティカル" if is_critical),
|
151
|
+
("ファンブル" if is_fumble),
|
152
|
+
("差分値 #{difference(total)}" if @cmd.target_number),
|
153
|
+
].compact
|
154
|
+
|
155
|
+
return sequence.join(" > ")
|
156
|
+
end
|
157
|
+
|
158
|
+
# @param total [Integer] 合計値
|
159
|
+
# @return [Integer] 差分値
|
160
|
+
def difference(total)
|
161
|
+
if total < 0
|
162
|
+
-@cmd.target_number
|
163
|
+
else
|
164
|
+
total - @cmd.target_number
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
# 表を振るのに使う定数的なやつ。
|
169
|
+
FATE_TABLE = [
|
170
|
+
["腐れ縁"],
|
171
|
+
["純愛", "親近感", "庇護"],
|
172
|
+
["信頼", "感服", "共感"],
|
173
|
+
["友情", "尊敬", "慕情"],
|
174
|
+
["好敵手", "期待", "借り"],
|
175
|
+
["興味", "憎悪", "悲しみ"],
|
176
|
+
["恐怖", "執着", "利用"],
|
177
|
+
["任意"]
|
178
|
+
].freeze
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Chill < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'Chill'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'Chill'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'ちる'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
|
17
|
+
・ストライク・ランク (SRx)
|
18
|
+
"SRストライク・ランク"の形で記入します。
|
19
|
+
ストライク・ランク・チャートに従って自動でダイスロールを行い、
|
20
|
+
負傷とスタミナロスを計算します。
|
21
|
+
ダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。
|
22
|
+
例)SR7 sr13 SR(7+4) Ssr10
|
23
|
+
INFO_MESSAGE_TEXT
|
24
|
+
|
25
|
+
register_prefix(['SR\d+.*'])
|
26
|
+
|
27
|
+
def check_1D100(total, _dice_total, cmp_op, target)
|
28
|
+
return '' if target == '?'
|
29
|
+
return '' if cmp_op != :<=
|
30
|
+
|
31
|
+
if total >= 100
|
32
|
+
" > ファンブル"
|
33
|
+
elsif total > target
|
34
|
+
" > 失敗"
|
35
|
+
elsif total >= (target * 0.9)
|
36
|
+
" > L成功"
|
37
|
+
elsif total >= (target / 2)
|
38
|
+
" > M成功"
|
39
|
+
elsif total >= (target / 10)
|
40
|
+
" > H成功"
|
41
|
+
else
|
42
|
+
" > C成功"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def eval_game_system_specific_command(command)
|
47
|
+
roll_strike_rank_result(command)
|
48
|
+
end
|
49
|
+
|
50
|
+
def roll_strike_rank_result(string)
|
51
|
+
debug('strike_rank begin string', string)
|
52
|
+
|
53
|
+
wounds = 0
|
54
|
+
sta_loss = 0
|
55
|
+
dice = ''
|
56
|
+
dice_add = ""
|
57
|
+
dice_str = ""
|
58
|
+
|
59
|
+
unless /(^|\s)[sS]?(SR|sr)(\d+)($|\s)/ =~ string
|
60
|
+
debug('invalid string', string)
|
61
|
+
return "1"
|
62
|
+
end
|
63
|
+
|
64
|
+
strikeRank = Regexp.last_match(3).to_i
|
65
|
+
|
66
|
+
if strikeRank < 14
|
67
|
+
sta_loss, dice, dice_add, dice_str = check_strike_rank(strikeRank)
|
68
|
+
wounds, dice_w, dice_wa, dice_ws = check_strike_rank(strikeRank - 3)
|
69
|
+
dice = dice + ', ' + dice_w
|
70
|
+
dice_add += ', ' + dice_wa
|
71
|
+
dice_str = dice_str + ', ' + dice_ws
|
72
|
+
else
|
73
|
+
sta_loss, _dice, dice_add, dice_str = check_strike_rank(13)
|
74
|
+
|
75
|
+
dice_list = @randomizer.roll_barabara(4, 10)
|
76
|
+
wounds = dice_list.sum()
|
77
|
+
dice_ws = dice_list.join(",")
|
78
|
+
|
79
|
+
dice = '5d10*3, 4d10+' + ((strikeRank - 13) * 2).to_s + 'd10'
|
80
|
+
dice_add += ', ' + wounds.to_s
|
81
|
+
dice_str = "#{dice_str}, #{dice_ws}"
|
82
|
+
|
83
|
+
dice_list = @randomizer.roll_barabara((strikeRank - 13) * 2, 10)
|
84
|
+
wounds_wk = dice_list.sum()
|
85
|
+
dice_ws = dice_list.join(",")
|
86
|
+
|
87
|
+
dice_str += "+#{dice_ws}"
|
88
|
+
dice_add += "+#{wounds_wk}"
|
89
|
+
wounds += wounds_wk
|
90
|
+
end
|
91
|
+
|
92
|
+
output = "#{dice_str} > #{dice_add} > スタミナ損失#{sta_loss}, 負傷#{wounds}"
|
93
|
+
|
94
|
+
string += ':' + dice
|
95
|
+
|
96
|
+
if output.empty?
|
97
|
+
return "1"
|
98
|
+
end
|
99
|
+
|
100
|
+
output = "(#{string}) > #{output}"
|
101
|
+
debug('strike_rank end output', output)
|
102
|
+
|
103
|
+
return output
|
104
|
+
end
|
105
|
+
|
106
|
+
def check_strike_rank(strikeRank)
|
107
|
+
strikeRank = strikeRank.to_i
|
108
|
+
|
109
|
+
dice = ''
|
110
|
+
dice_add = ''
|
111
|
+
dice_str = ''
|
112
|
+
damage = 0
|
113
|
+
|
114
|
+
if strikeRank < 1
|
115
|
+
damage = 0
|
116
|
+
dice_str = '-'
|
117
|
+
dice_add = '-'
|
118
|
+
dice = '-'
|
119
|
+
|
120
|
+
elsif strikeRank < 2
|
121
|
+
dice = '0or1'
|
122
|
+
damage = @randomizer.roll_once(2)
|
123
|
+
dice_str = damage.to_s
|
124
|
+
|
125
|
+
damage -= 1
|
126
|
+
dice_add = damage.to_s
|
127
|
+
elsif strikeRank < 3
|
128
|
+
dice = '1or2'
|
129
|
+
damage = @randomizer.roll_once(2)
|
130
|
+
dice_str = damage.to_s
|
131
|
+
dice_add = damage.to_s
|
132
|
+
elsif strikeRank < 4
|
133
|
+
dice = '1d5'
|
134
|
+
damage = @randomizer.roll_once(5)
|
135
|
+
dice_str = damage.to_s
|
136
|
+
dice_add = damage.to_s
|
137
|
+
elsif strikeRank < 10
|
138
|
+
dice = (strikeRank - 3).to_s + 'd10'
|
139
|
+
dice_list = @randomizer.roll_barabara(strikeRank - 3, 10)
|
140
|
+
damage = dice_list.sum()
|
141
|
+
dice_add = damage.to_s
|
142
|
+
dice_str = dice_list.join(",")
|
143
|
+
elsif strikeRank < 13
|
144
|
+
dice = (strikeRank - 6).to_s + 'd10*2'
|
145
|
+
dice_list = @randomizer.roll_barabara(strikeRank - 6, 10)
|
146
|
+
total = dice_list.sum()
|
147
|
+
dice_add = "#{total}*2"
|
148
|
+
damage = total * 2
|
149
|
+
dice_str = "(#{dice_list.join(',')})*2"
|
150
|
+
else
|
151
|
+
dice = '5d10*3'
|
152
|
+
dice_list = @randomizer.roll_barabara(5, 10)
|
153
|
+
total = dice_list.sum()
|
154
|
+
dice_add = "#{total}*3"
|
155
|
+
damage = total * 3
|
156
|
+
dice_str = "(#{dice_list.join(',')})*3"
|
157
|
+
end
|
158
|
+
|
159
|
+
return damage, dice, dice_add, dice_str
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|