diff --git a/i18n/Alsetto/ja_jp.yml b/i18n/Alsetto/ja_jp.yml new file mode 100644 index 000000000..db10e3e0a --- /dev/null +++ b/i18n/Alsetto/ja_jp.yml @@ -0,0 +1,5 @@ +ja_jp: + Alsetto: + damage: "%{total_damage}ダメージ" + success_count: "成功数:%{success_count}" + triumph: " / %{critical_count}トライアンフ" diff --git a/i18n/Alsetto/ko_kr.yml b/i18n/Alsetto/ko_kr.yml new file mode 100644 index 000000000..053845b1a --- /dev/null +++ b/i18n/Alsetto/ko_kr.yml @@ -0,0 +1,5 @@ +ko_kr: + Alsetto: + damage: "%{total_damage} 대미지" + success_count: "성공 수 : %{success_count}" + triumph: " / %{critical_count} 트라이엄프" diff --git a/lib/bcdice/game_system.rb b/lib/bcdice/game_system.rb index 7bfaa1c16..aa93fcb45 100644 --- a/lib/bcdice/game_system.rb +++ b/lib/bcdice/game_system.rb @@ -8,6 +8,7 @@ require "bcdice/game_system/Airgetlamh" require "bcdice/game_system/AlchemiaStruggle" require "bcdice/game_system/Alsetto" +require "bcdice/game_system/Alsetto_Korean" require "bcdice/game_system/Alshard" require "bcdice/game_system/AlterRaise" require "bcdice/game_system/Amadeus" diff --git a/lib/bcdice/game_system/Alsetto.rb b/lib/bcdice/game_system/Alsetto.rb index 97939e03d..6f02fa4a2 100644 --- a/lib/bcdice/game_system/Alsetto.rb +++ b/lib/bcdice/game_system/Alsetto.rb @@ -50,7 +50,7 @@ def eval_game_system_specific_command(command) private - def parce_check_roll(command) + def parse_check_roll(command) m = /(\d+)AL(C|G)?(\d+)?((x|\*)(\d+))?$/i.match(command) unless m return nil @@ -80,7 +80,7 @@ def parce_check_roll(command) end def check_roll(command) - parsed = parce_check_roll(command) + parsed = parse_check_roll(command) unless parsed return nil end @@ -119,13 +119,15 @@ def check_roll(command) if is_damage total_damage = total_success_count * damage - result = "(#{rapid}D6\<\=#{target}) > #{text} > Hits:#{total_success_count}*#{damage} > #{total_damage}ダメージ" + damage_text = translate("Alsetto.damage", total_damage: total_damage) + result = "(#{rapid}D6\<\=#{target}) > #{text} > Hits:#{total_success_count}*#{damage} > #{damage_text}" else - result = "(#{rapid}D6\<\=#{target}) > #{text} > 成功数:#{total_success_count}" + success_text = translate("Alsetto.success_count", success_count: total_success_count) + result = "(#{rapid}D6\<\=#{target}) > #{text} > #{success_text}" end if enable_critical - result += " / #{total_critical_count}トライアンフ" + result += translate("Alsetto.triumph", critical_count: total_critical_count) end return result diff --git a/lib/bcdice/game_system/Alsetto_Korean.rb b/lib/bcdice/game_system/Alsetto_Korean.rb new file mode 100644 index 000000000..d0ffd483b --- /dev/null +++ b/lib/bcdice/game_system/Alsetto_Korean.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'bcdice/game_system/Alsetto' + +module BCDice + module GameSystem + class Alsetto_Korean < Alsetto + # ゲームシステムの識別子 + ID = 'Alsetto:Korean' + + # ゲームシステム名 + NAME = '시편의 알세토' + + # ゲームシステム名の読みがな + SORT_KEY = '国際化:Korean:시편의 알세토' + + # ダイスボットの使い方 + HELP_MESSAGE = <<~MESSAGETEXT + ・성공 판정:nAL[m]    ・트라이엄프 없음:nALC[m] + ・명중 판정:nAL[m]*p   ・트라이엄프 없음:nALC[m]*p + ・명중 판정(건슬링거의 근원시):nALG[m]*p + [] 내부는 생략 가능. + + AL 커맨드는 트라이엄프 수만큼, 자동으로 추가 주사위 굴림 처리를 수행합니다. + 「n」으로 주사위 수를 지정. + 「m」으로 목표치를 지정. 생략 시에는 기본값인 「3」이 사용됩니다. + 「p」로 공격력을 지정. 「*」 대신 「x」도 사용 가능. + 공격력을 지정하면 명중 판정이 되며, 성공수가 아닌 대미지를 결과로 표시합니다. + + ALC 커맨드는 트라이엄프 없이 성공수, 대미지를 결과로 표시합니다. + ALG 커맨드는 「2 이하」에서 트라이엄프 처리를 수행합니다. + + 【사용 예시】 + ・5AL → 5d6에서 목표치 3. + ・5ALC → 5d6에서 목표치 3. 트라이엄프 없음. + ・6AL2 → 6d6에서 목표치 2. + ・4AL*5 → 4d6에서 목표치 3, 공격력 5의 명중 판정. + ・7AL2x10 → 7d6에서 목표치 2, 공격력 10의 명중 판정. + ・8ALC4x5 → 8d6에서 목표치 4, 공격력 5, 트라이엄프 없는 명중 판정. + MESSAGETEXT + + register_prefix_from_super_class() + + def initialize(command) + super(command) + + @locale = :ko_kr + end + end + end +end diff --git a/test/data/Alsetto_Korean.toml b/test/data/Alsetto_Korean.toml new file mode 100644 index 000000000..88b87d933 --- /dev/null +++ b/test/data/Alsetto_Korean.toml @@ -0,0 +1,330 @@ +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL" +output = "(6D6<=3) > 0[6,6,6,6,6,6] > 성공 수 : 0 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL" +output = "(6D6<=3) > 2[2,3,4,5,6,6] > 성공 수 : 2 / 0 트라이엄프" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL" +output = "(6D6<=3) > 3[1,2,3,4,5,6]+0[6] > 성공 수 : 3 / 1 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL" +output = "(6D6<=3) > 3[1,1,3,4,5,6]+1[3,6] > 성공 수 : 4 / 1 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL" +output = "(6D6<=3) > 3[1,1,3,4,5,6]+1[1,6]+1[3] > 성공 수 : 5 / 2 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 1 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL4" +output = "(6D6<=4) > 0[6,6,6,6,6,6] > 성공 수 : 0 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL4" +output = "(6D6<=4) > 3[2,3,4,5,6,6] > 성공 수 : 3 / 0 트라이엄프" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL4" +output = "(6D6<=4) > 4[1,2,3,4,5,6]+0[6] > 성공 수 : 4 / 1 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6AL4" +output = "(6D6<=4) > 4[1,1,3,4,5,6]+1[4,6] > 성공 수 : 5 / 1 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "4AL*5" +output = "(4D6<=3) > 0[6,6,6,6] > Hits:0*5 > 0 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "4ALx5" +output = "(4D6<=3) > 0[6,6,6,6] > Hits:0*5 > 0 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "4ALX5" +output = "(4D6<=3) > 0[6,6,6,6] > Hits:0*5 > 0 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "4AL*5" +output = "(4D6<=3) > 2[2,3,4,5] > Hits:2*5 > 10 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "4AL*5" +output = "(4D6<=3) > 2[1,1,6,6]+1[3,6] > Hits:3*5 > 15 대미지 / 1 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "5AL4*10" +output = "(5D6<=4) > 0[6,6,6,6,6] > Hits:0*10 > 0 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "5AL4x10" +output = "(5D6<=4) > 3[2,3,4,5,6] > Hits:3*10 > 30 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "5AL4X10" +output = "(5D6<=4) > 4[1,2,3,4,5]+0[6] > Hits:4*10 > 40 대미지 / 1 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "5AL4*10" +output = "(5D6<=4) > 3[1,1,1,6,6]+2[1,1,6]+1[4,6] > Hits:6*10 > 60 대미지 / 2 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALC" +output = "(6D6<=3) > 3[1,2,3,4,5,6] > 성공 수 : 3" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALC4" +output = "(6D6<=4) > 4[1,2,3,4,5,6] > 성공 수 : 4" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALC*5" +output = "(6D6<=3) > 3[1,2,3,4,5,6] > Hits:3*5 > 15 대미지" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALC4X5" +output = "(6D6<=4) > 4[1,2,3,4,5,6] > Hits:4*5 > 20 대미지" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALG*5" +output = "(6D6<=3) > 0[6,6,6,6,6,6] > Hits:0*5 > 0 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALG*5" +output = "(6D6<=3) > 3[3,3,3,6,6,6] > Hits:3*5 > 15 대미지 / 0 트라이엄프" +rands = [ + { sides = 6, value = 3 }, + { sides = 6, value = 3 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "Alsetto:Korean" +input = "6ALG*5" +output = "(6D6<=3) > 3[1,2,3,6,6,6]+1[2,6]+1[3] > Hits:5*5 > 25 대미지 / 2 트라이엄프" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, +]