Class: BCDice::GameSystem::ShinobiGami

Inherits:
Base
  • Object
show all
Defined in:
lib/bcdice/game_system/ShinobiGami.rb

Defined Under Namespace

Classes: DemonSkillTableForMetamorphose

Constant Summary collapse

ID =

ゲームシステムの識別子

'ShinobiGami'
NAME =

ゲームシステム名

'シノビガミ'
SORT_KEY =

ゲームシステム名の読みがな

'しのひかみ'
HELP_MESSAGE =

ダイスボットの使い方25/01/17:書式成形(半角スペース×2に統一、同じ書籍のシーン表は改行なしで列挙)

"\u30FB\u884C\u70BA\u5224\u5B9A nSG@s#f>=x\n  2D6\u306E\u884C\u70BA\u5224\u5B9A\u3092\u884C\u3046\u3002\u30C0\u30A4\u30B9\u6570\u304C\u6307\u5B9A\u3055\u308C\u305F\u5834\u5408\u3001\u5927\u304D\u3044\u51FA\u76EE2\u500B\u3092\u63A1\u7528\u3059\u308B\u3002\n  n: \u30C0\u30A4\u30B9\u6570 (\u7701\u7565\u6642 2)\n  s: \u30B9\u30DA\u30B7\u30E3\u30EB\u5024 (\u7701\u7565\u6642 12)\n  f: \u30D5\u30A1\u30F3\u30D6\u30EB\u5024 (\u7701\u7565\u6642 2)\n  x: \u76EE\u6A19\u5024 (\u7701\u7565\u53EF)\n  \u4F8B\uFF09SG, SG@11, SG@11#3, SG#3>=7, 3SG>=7\n\n\u30FB\u884C\u70BA\u5224\u5B9A\u4EE5\u5916\u306E\u8868\n  \u4EE5\u4E0B\u306E\u8868\u306F\u300C\u56DE\u6570+\u30B3\u30DE\u30F3\u30C9\u300D\u3067\u8907\u6570\u56DE\u632F\u308C\u308B\n  \u4F8B\uFF093RCT, 2WT\n\n\u30FB\u30E9\u30F3\u30C0\u30E0\u7279\u6280\u6C7A\u5B9A\u8868 RTTn (n:\u5206\u91CE\u756A\u53F7\u3001\u7701\u7565\u53EF\u80FD)\n  1\u5668\u8853 2\u4F53\u8853 3\u5FCD\u8853 4\u8B00\u8853 5\u6226\u8853 6\u5996\u8853\n\n\u30FB\u30E9\u30F3\u30C0\u30E0\u5206\u91CE\u8868 RCT\n\n\u30FB\u5404\u7A2E\u8868\uFF1A\u57FA\u672C\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u4EE5\u964D\n  \u30D5\u30A1\u30F3\u30D6\u30EB\u8868 FT\u3001\u6226\u5834\u8868 BT\u3001\u611F\u60C5\u8868 ET\u3001\u5909\u8ABF\u8868 WT\u3001\u6226\u56FD\u5909\u8ABF\u8868 GWT\u3001\u30D7\u30E9\u30A4\u30BA\u52B9\u679C\u8868 PT\n  \u5996\u9B54\u5316\uFF08\u7570\u5F62\u8868\u3001\u5996\u9B54\u5FCD\u6CD5\u8868\u4E00\u62EC\uFF09 MT\u3001\u7570\u5F62\u8868 MTR\u3001\u5996\u9B54\u5FCD\u6CD5\u8868(x:A,B,C) DSx\n\n\u30FB\u5404\u7A2E\u8868\uFF1A\u6D41\u6D3E\u30D6\u30C3\u30AF\u4EE5\u964D\n  \u6BD4\u826F\u5742\u6D41\u6D3E\u30D6\u30C3\u30AF\n    \u30D1\u30CB\u30C3\u30AF\u8868 HRPT\n  \u978D\u99AC\u6D41\u6D3E\u30D6\u30C3\u30AF\n    \u65B0\u6226\u5834\u8868 BNT\n  \u5FA1\u658E\u6D41\u6D3E\u30D6\u30C3\u30AF\n    \u899A\u9192\u8868 OTAT\n    \u5FCD\u6CD5\u6388\u696D\u30B7\u30FC\u30F3\u8868\uFF08x:1-\u653B\u6483\u7CFB 2-\u9632\u5FA1\u7CFB 3-\u6226\u7565\u7CFB\uFF09NCTx\n    \u3010\u6570\u5947\u3011OTS\n  \u96A0\u5FCD\u6D41\u6D3E\u30D6\u30C3\u30AF\n    \u5996\u8853\u5909\u8ABF\u5BFE\u5FDC\u8868\uFF08x:\u306A\u3057-\u73FE\u4EE3\uFF0F\u6226\u56FD\u30011-\u73FE\u4EE3\u30012-\u6226\u56FD\uFF09YWTx\n    \u5996\u9B54\u5316\uFF08\u65B0\u7570\u5F62\u8868\u5229\u7528\uFF09 NMT\u3001\u65B0\u7570\u5F62\u8868 NMTR\u3001\u5996\u9B54\u5FCD\u6CD5\u8868\uFF08x:1-\u7570\u970A 2-\u51F6\u8EAB 3-\u795E\u5316 4-\u653B\u6FC0\uFF09DSNx\n    \u51FA\u7269\u8868 ONDT\n\n\u30FB\u5404\u7A2E\u8868\uFF1A\u57FA\u672C\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u6539\u8A02\u7248\u4EE5\u524D\n  \u7121\u5370\n    \u65E7\u30D5\u30A1\u30F3\u30D6\u30EB\u8868 OFT \u3001\u65E7\u5909\u8ABF\u8868 OWT\u3001\u65E7\u6226\u5834\u8868 OBT\u3001\u7570\u5F62\u8868 MT\n  \u602A\n    \u602A\u30D5\u30A1\u30F3\u30D6\u30EB\u8868 KFT\u3001\u602A\u5909\u8ABF\u8868 KWT (\u57FA\u672C\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u3068\u540C\u4E00\uFF09\n\n\u30FB\u30B7\u30FC\u30F3\u8868\n  \u57FA\u672C\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\n    \u901A\u5E38 ST\u3001\u51FA\u5CF6 DST\u3001\u90FD\u5E02 CST\u3001\u9928 MST\u3001\u30C8\u30E9\u30D6\u30EB TST\u3001\u56DE\u60F3 KST\u3001\u65E5\u5E38 NST\u3001\u5B66\u6821 GAST\u3001\u6226\u56FD GST\n  \u5FCD\u79D8\u4F1D\n    \u4E2D\u5FCD\u8A66\u9A13 HC\u3001\u6EC5\u3073\u306E\u5854 HT\u3001\u5F71\u306E\u8857 HK\u3001\u591C\u884C\u5217\u8ECA HY\u3001\u75C5\u9662 HO\u3001\u9F8D\u52D5 HR\u3001\u5BC6\u5BA4 HM\u3001\u50AC\u7720 HS\n  \u6B63\u5FCD\u8A18\n    \u30AB\u30B8\u30CE TC\u3001\u30ED\u30FC\u30C9\u30E0\u30FC\u30D3\u30FC TRM\u3001\u30DE\u30B9\u30AB\u30EC\u30A4\u30C9\u30FB\u30AD\u30E3\u30C3\u30B9\u30EB TMC\u3001\u6708\u5929\u306B\u6B7B\u306E\u54B2\u304F TGS\u3001\u604B\u4EBA\u3068\u306E\u65E5\u3005 TKH\u3001\u5B66\u6821\uFF08\u9ED2\u661F\u796D\uFF09 TKG\u3001\u9B54\u90FD\u5B66\u5712 TMG\u3001\u9B54\u90FD\u6771\u4EAC TMT\n  \u6D41\u6D3E\u30D6\u30C3\u30AF\u4EE5\u964D\n    \u5FA1\u658E\u6D41\u6D3E\u30D6\u30C3\u30AF\n      \u4E0D\u826F\u9AD8\u6821 OTFK\n  \u57FA\u672C\u30EB\u30FC\u30EB\u30D6\u30C3\u30AF\u6539\u8A02\u7248\u4EE5\u524D\n    \u6B7B\n      \u6771\u4EAC TKST\n    \u30EA\u30D7\u30EC\u30A4\u62261\u301C2\u5DFB\n      \u4EAC\u90FD KYST\u3001\u795E\u793E\u4ECF\u95A3 JBST\n  \u305D\u306E\u4ED6\n    \u79CB\u7A7A\u306B\u96EA\u821E\u3048\u3070 AKST\u3001\u590F\u306E\u7D42\u308F\u308A NTST\u3001\u51FA\u5CF6EX DXST\u3001\u707D\u5384 CLST\u3001\u659C\u6B6F\u30E9\u30DC HLST\u3001\u57F9\u990A\u30D7\u30E9\u30F3\u30C8 PLST\n\n\u30FBD66\u30C0\u30A4\u30B9\u3042\u308A\n"
SPECIAL =
"スペシャル(【生命力】1点か変調一つを回復)"
RTT =
DiceTable::SaiFicSkillTable.new(
  [
    ['器術', ['絡繰術', '火術', '水術', '針術', '仕込み', '衣装術', '縄術', '登術', '拷問術', '壊器術', '掘削術']],
    ['体術', ['騎乗術', '砲術', '手裏剣術', '手練', '身体操術', '歩法', '走法', '飛術', '骨法術', '刀術', '怪力']],
    ['忍術', ['生存術', '潜伏術', '遁走術', '盗聴術', '腹話術', '隠形術', '変装術', '香術', '分身の術', '隠蔽術', '第六感']],
    ['謀術', ['医術', '毒術', '罠術', '調査術', '詐術', '対人術', '遊芸', '九ノ一の術', '傀儡の術', '流言の術', '経済力']],
    ['戦術', ['兵糧術', '鳥獣術', '野戦術', '地の利', '意気', '用兵術', '記憶術', '見敵術', '暗号術', '伝達術', '人脈']],
    ['妖術', ['異形化', '召喚術', '死霊術', '結界術', '封術', '言霊術', '幻術', '瞳術', '千里眼の術', '憑依術', '呪術']],
  ],
  s_format: "『%<category_name>s』%<skill_name>s",
  rtt_format: "ランダム指定特技表(%<category_dice>d,%<row_dice>d) > %<text>s"
)

Instance Attribute Summary

Attributes inherited from Base

#d66_sort_type, #default_cmp_op, #default_target_number, #randomizer, #reroll_dice_reroll_threshold, #round_type, #sides_implicit_d, #upper_dice_reroll_threshold

Instance Method Summary collapse

Methods inherited from Base

#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, #eval, eval, #grich_text, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

#initialize(command) ⇒ ShinobiGami

Returns a new instance of ShinobiGami.



93
94
95
96
97
98
# File 'lib/bcdice/game_system/ShinobiGami.rb', line 93

def initialize(command)
  super(command)

  @sort_add_dice = true
  @d66_sort_type = D66SortType::ASC
end

Instance Method Details

#eval_game_system_specific_command(command) ⇒ Object



120
121
122
# File 'lib/bcdice/game_system/ShinobiGami.rb', line 120

def eval_game_system_specific_command(command)
  return action_roll(command) || repeat_table(command)
end

#repeat_table(command) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
# File 'lib/bcdice/game_system/ShinobiGami.rb', line 124

def repeat_table(command)
  times = command.start_with?(/\d/) ? command.to_i : 1
  key = command.sub(/^\d+/, '')
  results = [*0...times].map do |_|
    roll_tables(key, TABLES) || roll_tables(key, SCENE_TABLES) ||
      roll_tables(key, DEMON_SKILL_TABLES) || roll_tables(key, DEMON_SKILL_TABLES_NEW) || RTT.roll_command(@randomizer, key)
  end.compact
  return nil if results.empty?

  return results.join("\n")
end

#result_2d6(total, dice_total, _dice_list, cmp_op, target) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/bcdice/game_system/ShinobiGami.rb', line 102

def result_2d6(total, dice_total, _dice_list, cmp_op, target)
  return nil unless cmp_op == :>=

  if dice_total <= 2
    Result.fumble("ファンブル")
  elsif dice_total >= 12
    Result.critical(SPECIAL)
  elsif target == "?"
    nil
  elsif total >= target
    Result.success("成功")
  else
    Result.failure("失敗")
  end
end