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 CHANGED
@@ -31,6 +31,8 @@ export interface Config {
31
31
  slapImage: string;
32
32
  /** 「烧砖」消息顶部图片 URL */
33
33
  fireImage: string;
34
+ /** 「烧制完毕」消息顶部图片 URL */
35
+ fireDoneImage: string;
34
36
  /** 「签到」消息顶部图片 URL */
35
37
  signImage: string;
36
38
  checking: boolean;
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,值为被拍时的反击概率(%)<br/>不设置则使用默认概率'),
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('「烧砖」消息顶部图片 URL(需公网可访问;留空则不显示图片)'),
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.fireImage, 447);
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
- const probability = config.specialUser[targetUserId] !== undefined
245
- ? config.specialUser[targetUserId] / 100
246
- : config.reverse / 100;
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(probability)) {
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) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-ll-brick",
3
3
  "description": "砖头拍人插件(克隆自 koishi-plugin-brick),非管理员时会提示",
4
- "version": "1.0.10",
4
+ "version": "1.0.12",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [