bcdice 3.9.0 → 3.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -1
- data/README.md +0 -1
- data/lib/bcdice/game_system/CastleInGray.rb +6 -4
- data/lib/bcdice/game_system/Emoklore.rb +3 -3
- data/lib/bcdice/game_system/HeroScale.rb +837 -0
- data/lib/bcdice/game_system/KemonoNoMori.rb +133 -1
- data/lib/bcdice/game_system/MonotoneMuseum.rb +4 -2
- data/lib/bcdice/game_system/NSSQ.rb +24 -11
- data/lib/bcdice/game_system/ShinobiGami.rb +155 -26
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +40 -12
- data/lib/bcdice/game_system/Ventangle.rb +133 -0
- data/lib/bcdice/game_system/cthulhu7th/rollable.rb +2 -0
- data/lib/bcdice/game_system/sword_world/transcendent_test.rb +2 -0
- data/lib/bcdice/game_system.rb +2 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +5 -3
@@ -0,0 +1,133 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bcdice/base'
|
4
|
+
|
5
|
+
module BCDice
|
6
|
+
module GameSystem
|
7
|
+
class Ventangle < Base
|
8
|
+
# ゲームシステムの識別子
|
9
|
+
ID = 'Ventangle'
|
10
|
+
|
11
|
+
# ゲームシステム名
|
12
|
+
NAME = 'Ventangle'
|
13
|
+
|
14
|
+
# ゲームシステム名の読みがな
|
15
|
+
#
|
16
|
+
# 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして
|
17
|
+
# 設定してください
|
18
|
+
SORT_KEY = 'うえんたんくる'
|
19
|
+
|
20
|
+
# ダイスボットの使い方
|
21
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
22
|
+
基本書式 VTn@s#f$g>=T n=ダイス数(省略時2) s=スペシャル値(省略時12) f=ファンブル値(省略時2) g=レベルギャップ判定値(省略可) T=目標値(省略可)
|
23
|
+
|
24
|
+
例:
|
25
|
+
VT デフォルトのスペシャル値・ファンブル値の判定を行う
|
26
|
+
VT@10#3 スペシャル値10、ファンブル値3の判定を行う
|
27
|
+
VT3@10#3 スペシャル値10、ファンブル値3の判定を、アドバンテージを1点消費してダイス3つで行う
|
28
|
+
|
29
|
+
VT>=5 デフォルトのスペシャル値・ファンブル値で目標値5の判定を行う
|
30
|
+
VT@10#3>=5 スペシャル値10、ファンブル値3で目標値5の判定を行う
|
31
|
+
VT@10#3$5>=5 スペシャル値10、ファンブル値3で目標値5の判定を行う。この際達成値が目標値より5以上大きい場合、ギャップボーナスを表示する
|
32
|
+
VT3@10#3>=5 スペシャル値10、ファンブル値3で目標値5の判定を、アドバンテージを1点消費してダイス3つで行う
|
33
|
+
VT3@10#3$4>=5 スペシャル値10、ファンブル値3で目標値5の判定を、アドバンテージを1点消費してダイス3つで行う。この際達成値が目標値より4以上大きい場合、ギャップボーナスを表示する
|
34
|
+
MESSAGETEXT
|
35
|
+
|
36
|
+
# 既定のスペシャル値
|
37
|
+
DEFAULT_SPECIAL_VALUE = 12
|
38
|
+
# 既定のファンブル値
|
39
|
+
DEFAULT_FUMBLE_VALUE = 2
|
40
|
+
# 規定のダイス個数
|
41
|
+
DEFAULT_DICE_NUM = 2
|
42
|
+
|
43
|
+
# ダイスボットで使用するコマンドを配列で列挙する
|
44
|
+
register_prefix('VT')
|
45
|
+
|
46
|
+
def eval_game_system_specific_command(command)
|
47
|
+
debug("eval_game_system_specific_command Begin")
|
48
|
+
|
49
|
+
parser = Command::Parser.new('VT', round_type: round_type)
|
50
|
+
.enable_critical
|
51
|
+
.enable_fumble
|
52
|
+
.enable_dollar
|
53
|
+
.enable_suffix_number
|
54
|
+
.restrict_cmp_op_to(nil, :>=)
|
55
|
+
cmd = parser.parse(command)
|
56
|
+
|
57
|
+
unless cmd
|
58
|
+
return nil
|
59
|
+
end
|
60
|
+
|
61
|
+
dice_num = cmd.suffix_number || DEFAULT_DICE_NUM
|
62
|
+
if dice_num < DEFAULT_DICE_NUM
|
63
|
+
return nil
|
64
|
+
end
|
65
|
+
|
66
|
+
dice_list = @randomizer.roll_barabara(dice_num, 6)
|
67
|
+
if dice_num > 2
|
68
|
+
# 出目の順序を保存して上位2つの出目を取得
|
69
|
+
j = 0 # 安定ソートのために利用 cf. https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/sort_by.html
|
70
|
+
using_list = dice_list.map.with_index { |x, i| {index: i, value: x} }
|
71
|
+
.sort_by { |x| [x[:value], j += 1] }.reverse.take(2)
|
72
|
+
.sort_by { |x| x[:index] }.map { |x| x[:value] }
|
73
|
+
else
|
74
|
+
using_list = dice_list
|
75
|
+
end
|
76
|
+
dice_total = using_list.sum
|
77
|
+
total = dice_total + cmd.modify_number
|
78
|
+
|
79
|
+
result = compare(dice_total, total, cmd)
|
80
|
+
|
81
|
+
advantage_str =
|
82
|
+
if dice_num > 2
|
83
|
+
using_list.to_s
|
84
|
+
end
|
85
|
+
|
86
|
+
modifier_str =
|
87
|
+
if cmd.modify_number > 0
|
88
|
+
"#{dice_total}#{Format.modifier(cmd.modify_number)}"
|
89
|
+
end
|
90
|
+
|
91
|
+
level_gap_str =
|
92
|
+
if cmd.target_number && cmd.dollar && result.success? && (gap = total - cmd.target_number) >= cmd.dollar
|
93
|
+
"ギャップボーナス(#{gap})"
|
94
|
+
end
|
95
|
+
|
96
|
+
sequence = [
|
97
|
+
cmd.to_s,
|
98
|
+
dice_list.to_s,
|
99
|
+
advantage_str,
|
100
|
+
modifier_str,
|
101
|
+
total.to_s,
|
102
|
+
result.text,
|
103
|
+
level_gap_str,
|
104
|
+
].compact
|
105
|
+
|
106
|
+
result.text = sequence.join(" > ")
|
107
|
+
|
108
|
+
return result
|
109
|
+
end
|
110
|
+
|
111
|
+
def compare(dice_total, total, cmd)
|
112
|
+
special = cmd.critical || DEFAULT_SPECIAL_VALUE
|
113
|
+
fumble = cmd.fumble || DEFAULT_FUMBLE_VALUE
|
114
|
+
|
115
|
+
if dice_total <= fumble
|
116
|
+
return Result.fumble('ファンブル')
|
117
|
+
elsif dice_total >= special
|
118
|
+
return Result.critical('スペシャル')
|
119
|
+
end
|
120
|
+
|
121
|
+
if cmd.target_number
|
122
|
+
if total.send(cmd.cmp_op, cmd.target_number)
|
123
|
+
return Result.success('成功')
|
124
|
+
else
|
125
|
+
return Result.failure('失敗')
|
126
|
+
end
|
127
|
+
else
|
128
|
+
return Result.new(nil)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
data/lib/bcdice/game_system.rb
CHANGED
@@ -100,6 +100,7 @@ require "bcdice/game_system/GURPS"
|
|
100
100
|
require "bcdice/game_system/GurpsFW"
|
101
101
|
require "bcdice/game_system/HarnMaster"
|
102
102
|
require "bcdice/game_system/HatsuneMiku"
|
103
|
+
require "bcdice/game_system/HeroScale"
|
103
104
|
require "bcdice/game_system/Hieizan"
|
104
105
|
require "bcdice/game_system/HouraiGakuen"
|
105
106
|
require "bcdice/game_system/HuntersMoon"
|
@@ -226,6 +227,7 @@ require "bcdice/game_system/TwilightGunsmoke"
|
|
226
227
|
require "bcdice/game_system/UnsungDuet"
|
227
228
|
require "bcdice/game_system/Utakaze"
|
228
229
|
require "bcdice/game_system/VampireTheMasquerade5th"
|
230
|
+
require "bcdice/game_system/Ventangle"
|
229
231
|
require "bcdice/game_system/Villaciel"
|
230
232
|
require "bcdice/game_system/VisionConnect"
|
231
233
|
require "bcdice/game_system/WARPS"
|
data/lib/bcdice/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bcdice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SAKATA Sinji
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -237,6 +237,7 @@ files:
|
|
237
237
|
- lib/bcdice/game_system/GurpsFW.rb
|
238
238
|
- lib/bcdice/game_system/HarnMaster.rb
|
239
239
|
- lib/bcdice/game_system/HatsuneMiku.rb
|
240
|
+
- lib/bcdice/game_system/HeroScale.rb
|
240
241
|
- lib/bcdice/game_system/Hieizan.rb
|
241
242
|
- lib/bcdice/game_system/HouraiGakuen.rb
|
242
243
|
- lib/bcdice/game_system/HunterTheReckoning5th.rb
|
@@ -363,6 +364,7 @@ files:
|
|
363
364
|
- lib/bcdice/game_system/UnsungDuet.rb
|
364
365
|
- lib/bcdice/game_system/Utakaze.rb
|
365
366
|
- lib/bcdice/game_system/VampireTheMasquerade5th.rb
|
367
|
+
- lib/bcdice/game_system/Ventangle.rb
|
366
368
|
- lib/bcdice/game_system/Villaciel.rb
|
367
369
|
- lib/bcdice/game_system/VisionConnect.rb
|
368
370
|
- lib/bcdice/game_system/WARPS.rb
|
@@ -450,7 +452,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
450
452
|
- !ruby/object:Gem::Version
|
451
453
|
version: '0'
|
452
454
|
requirements: []
|
453
|
-
rubygems_version: 3.4.
|
455
|
+
rubygems_version: 3.4.12
|
454
456
|
signing_key:
|
455
457
|
specification_version: 4
|
456
458
|
summary: BCDice is a rolling dice engine for TRPG
|