koishi-plugin-ll-brick 1.0.10 → 1.0.12
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.
- package/lib/index.d.ts +2 -0
- package/lib/index.js +18 -10
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -30,10 +30,10 @@ exports.Config = koishi_1.Schema.intersect([
|
|
|
30
30
|
reverse: koishi_1.Schema.number()
|
|
31
31
|
.default(10)
|
|
32
32
|
.max(100)
|
|
33
|
-
.description('
|
|
33
|
+
.description('反拍概率(%)默认值:被拍时按此概率反击,主动拍人时按此概率免疫对方反拍(双向生效)'),
|
|
34
34
|
specialUser: koishi_1.Schema.dict(Number)
|
|
35
35
|
.role('table')
|
|
36
|
-
.description('键为用户ID
|
|
36
|
+
.description('键为用户ID,值为该用户的反拍概率(%)<br/>被拍时按此概率反击;主动拍人时按此概率免疫对方反拍<br/>填 100 即「攻防无敌」,不设置则用默认值'),
|
|
37
37
|
adminUsers: koishi_1.Schema.array(koishi_1.Schema.string())
|
|
38
38
|
.default([])
|
|
39
39
|
.description('管理员 ID 列表(openid):被加入的 ID 可以使用「充值」等管理命令'),
|
|
@@ -42,7 +42,10 @@ exports.Config = koishi_1.Schema.intersect([
|
|
|
42
42
|
.description('「拍人」消息顶部图片 URL(需公网可访问;留空则不显示图片)'),
|
|
43
43
|
fireImage: koishi_1.Schema.string()
|
|
44
44
|
.default('https://img3.tofaka.com/autoupload/ontjZmlK09ZHnuFOv9znC7KXl_QqVl-bpSwqP4fJO68/20260624/xsnm/447X447/images_%282%29.jpg')
|
|
45
|
-
.description('
|
|
45
|
+
.description('「烧砖开始」消息顶部图片 URL(需公网可访问;留空则不显示图片)'),
|
|
46
|
+
fireDoneImage: koishi_1.Schema.string()
|
|
47
|
+
.default('https://img3.tofaka.com/autoupload/ontjZmlK09ZHnuFOv9znC7KXl_QqVl-bpSwqP4fJO68/20260624/xsnm/447X447/images_%282%29.jpg')
|
|
48
|
+
.description('「烧制完毕」消息顶部图片 URL(需公网可访问;留空则不显示图片)'),
|
|
46
49
|
signImage: koishi_1.Schema.string()
|
|
47
50
|
.default('https://img3.tofaka.com/autoupload/ontjZmlK09ZHnuFOv9znC7KXl_QqVl-bpSwqP4fJO68/20260624/yNf2/447X447/images_%281%29.jpg')
|
|
48
51
|
.description('「签到」消息顶部图片 URL(需公网可访问;留空则不显示图片)'),
|
|
@@ -196,7 +199,7 @@ async function apply(ctx, config) {
|
|
|
196
199
|
'📢 快去用 `砖头 拍人` 狠狠地拍一下吧!',
|
|
197
200
|
]);
|
|
198
201
|
if (session.platform === 'qq') {
|
|
199
|
-
await sendQQMarkdown(session, fireDone, config.
|
|
202
|
+
await sendQQMarkdown(session, fireDone, config.fireDoneImage, 447);
|
|
200
203
|
}
|
|
201
204
|
else {
|
|
202
205
|
await session.send(fireDone);
|
|
@@ -241,14 +244,19 @@ async function apply(ctx, config) {
|
|
|
241
244
|
}], ["userId", "guildId"]);
|
|
242
245
|
const muteTime = koishi_1.Random.int(config.minMuteTime, config.maxMuteTime);
|
|
243
246
|
const muteTimeMs = muteTime * 1000;
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
+
// 反拍概率双向生效:被拍者的反击率 × (1 - 攻击者自身的反拍能力)
|
|
248
|
+
// 反拍能力 100% = 攻防无敌(拍人必中、被杀必反)
|
|
249
|
+
const probOf = (uid) => {
|
|
250
|
+
const raw = config.specialUser[uid] !== undefined ? config.specialUser[uid] : config.reverse;
|
|
251
|
+
const v = Number(raw);
|
|
252
|
+
return Number.isFinite(v) ? Math.max(0, Math.min(1, v / 100)) : 0;
|
|
253
|
+
};
|
|
254
|
+
const counterChance = probOf(targetUserId) * (1 - probOf(session.userId));
|
|
247
255
|
const isQQ = session.platform === 'qq';
|
|
248
|
-
if (koishi_1.Random.bool(
|
|
256
|
+
if (koishi_1.Random.bool(counterChance)) {
|
|
249
257
|
const muteErr = await tryMute(session.userId);
|
|
250
258
|
const msg = mdCard([
|
|
251
|
-
`${atUser(session, targetUserId)} 夺过你的砖头,把你拍晕了 **${muteTime}**
|
|
259
|
+
`${atUser(session, targetUserId)} 夺过你的砖头,把你拍晕了 **${muteTime}** 秒`,
|
|
252
260
|
muteErr ? '(因为我不是群管理员,所以并没什么卵用)' : '',
|
|
253
261
|
]);
|
|
254
262
|
if (isQQ) {
|
|
@@ -260,7 +268,7 @@ async function apply(ctx, config) {
|
|
|
260
268
|
else {
|
|
261
269
|
const muteErr = await tryMute(targetUserId);
|
|
262
270
|
const msg = mdCard([
|
|
263
|
-
`${atUser(session, targetUserId)} 你被 ${atUser(session, session.userId)} 一砖头拍晕了 **${muteTime}**
|
|
271
|
+
`${atUser(session, targetUserId)} 你被 ${atUser(session, session.userId)} 一砖头拍晕了 **${muteTime}** 秒`,
|
|
264
272
|
muteErr ? '(因为我不是群管理员,所以并没什么卵用)' : '',
|
|
265
273
|
]);
|
|
266
274
|
if (isQQ) {
|