koishi-plugin-ggcevo-game 1.4.65 → 1.4.67

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.
@@ -501,7 +501,7 @@ export declare const BattleEffectProcessor: {
501
501
  * @param activeBosses 当前所有活跃Boss列表
502
502
  * @returns 包含最终伤害值和所有效果消息的对象
503
503
  */
504
- export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[], weaponName: string, damage: number, hasCrit: boolean, ignoreRate: number): {
504
+ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[], weaponName: string, damage: number, hasCrit: boolean, ignoreRate: number, careerData: any): {
505
505
  finalDamage: number;
506
506
  messages: string[];
507
507
  radiationLayerAdded: boolean;
@@ -1,6 +1,6 @@
1
1
  import { Context } from 'koishi';
2
2
  import { Config } from '../index';
3
- export declare function handlePrimaryAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, activeBosses: any[], weaponName: string): Promise<{
3
+ export declare function handlePrimaryAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, activeBosses: any[], weaponName: string, careerData: any): Promise<{
4
4
  initialDamage: number;
5
5
  currentHP: number;
6
6
  isDefeated: boolean;
@@ -14,7 +14,7 @@ export declare function handlePrimaryAttack(ctx: Context, session: any, handle:
14
14
  pulseApplied: boolean;
15
15
  arcApplied: boolean;
16
16
  }>;
17
- export declare function handleScatterAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, weaponName: string, activeBosses: any[]): Promise<{
17
+ export declare function handleScatterAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, weaponName: string, activeBosses: any[], careerData: any): Promise<{
18
18
  scatterEffectMessages: string[];
19
19
  extraDamages: {
20
20
  name: string;
@@ -44,7 +44,7 @@ export declare function updateTaskProgress(ctx: Context, handle: string, taskUpd
44
44
  taskId: number;
45
45
  count: number;
46
46
  }[]): Promise<void>;
47
- export declare function testAttackFunction(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, activeBosses: any[], weaponName: string): Promise<{
47
+ export declare function testAttackFunction(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, activeBosses: any[], weaponName: string, careerData: any): Promise<{
48
48
  initialDamage: number;
49
49
  hasCrit: boolean;
50
50
  effectMessage: string[];
@@ -1,7 +1,8 @@
1
1
  import { Context } from 'koishi';
2
2
  import { Config } from '../index';
3
- export declare function calculateTotalDamage(ctx: Context, session: any, config: Config, equippedWeapon: any, targetBoss: any): Promise<{
3
+ export declare function calculateTotalDamage(ctx: Context, session: any, config: Config, equippedWeapon: any, targetBoss: any, careerData: any): Promise<{
4
4
  damage: number;
5
+ baseDamage: number;
5
6
  hasCrit: boolean;
6
7
  effectMessage: string[];
7
8
  }>;
package/lib/index.js CHANGED
@@ -36,7 +36,7 @@ var weaponConfig = {
36
36
  id: 1,
37
37
  type: "实弹武器",
38
38
  category: "实弹武器",
39
- damage: 10,
39
+ damage: 13,
40
40
  armorDamageReduction: 1,
41
41
  // 每点护甲减伤1点伤害
42
42
  description: "标准配置武器,中距离作战利器",
@@ -68,7 +68,7 @@ var weaponConfig = {
68
68
  id: 3,
69
69
  type: "热能武器",
70
70
  category: "热能武器",
71
- damage: 20,
71
+ damage: 23,
72
72
  armorDamageReduction: 0.25,
73
73
  description: "基于热能的强大武器,烧烬一切",
74
74
  specialeffect: "",
@@ -100,7 +100,7 @@ var weaponConfig = {
100
100
  id: 5,
101
101
  type: "实弹武器",
102
102
  category: "实弹武器",
103
- damage: 20,
103
+ damage: 16,
104
104
  armorDamageReduction: 1,
105
105
  description: "一种改造后的采矿切割机,有效对抗重甲目标",
106
106
  specialeffect: "",
@@ -145,16 +145,16 @@ var weaponConfig = {
145
145
  id: 8,
146
146
  type: "热能武器",
147
147
  category: "热能武器",
148
- damage: 22,
148
+ damage: 25,
149
149
  armorDamageReduction: 1,
150
150
  description: "喷射稳定的液氮恒流,对长时间接触者造成致命的损伤",
151
- specialeffect: "攻击使目标叠加“寒冷”层数,每层使其受到的伤害+2.5%(至多+50%)",
151
+ specialeffect: "攻击使目标叠加[寒冷]层数,每层使其受到的伤害提高2.5%(上限50%)",
152
152
  price: 775,
153
153
  redCrystalCost: 7,
154
154
  isantiair: false,
155
155
  tagEffects: {
156
- "惧寒": 2,
157
- "灵能": 1.5,
156
+ "惧寒": 1.5,
157
+ "灵能": 1.2,
158
158
  "护盾": 0.5
159
159
  }
160
160
  },
@@ -162,7 +162,7 @@ var weaponConfig = {
162
162
  id: 9,
163
163
  type: "能量武器",
164
164
  category: "能量武器",
165
- damage: 25,
165
+ damage: 24,
166
166
  armorDamageReduction: 0.5,
167
167
  description: "一种经过改造的电动工具,可对近距离的目标放出高压电",
168
168
  specialeffect: "攻击消耗目标200点能量",
@@ -178,16 +178,15 @@ var weaponConfig = {
178
178
  id: 10,
179
179
  type: "热能武器",
180
180
  category: "热能武器",
181
- damage: 24,
181
+ damage: 27,
182
182
  armorDamageReduction: 0.75,
183
183
  description: "一种高度危险性的武器,设计用辐射照射并伤害敌人",
184
- specialeffect: "攻击使生物目标(无机械标签)叠加“辐射”层数,每层使其受到的伤害+2.5%(至多+50%)",
184
+ specialeffect: "攻击使无机械标签的[生物]目标叠加[辐射]层数,每层使其受到的伤害提高2.5%(上限50%)",
185
185
  price: 825,
186
186
  redCrystalCost: 8,
187
187
  isantiair: true,
188
188
  tagEffects: {
189
- "生物": 1.5,
190
- "护盾": 0.5,
189
+ "生物": 1.2,
191
190
  "机械": 0.2
192
191
  }
193
192
  },
@@ -195,10 +194,10 @@ var weaponConfig = {
195
194
  id: 11,
196
195
  type: "能量武器",
197
196
  category: "能量武器",
198
- damage: 30,
197
+ damage: 27,
199
198
  armorDamageReduction: 0,
200
199
  description: "激光步枪的变种,采用折射技术升级",
201
- specialeffect: "拥有“散射”效果,对其他目标造成50%的伤害",
200
+ specialeffect: "触发散射攻击,对非主目标造成120%基础伤害",
202
201
  price: 1450,
203
202
  redCrystalCost: 14,
204
203
  isantiair: true,
@@ -210,22 +209,22 @@ var weaponConfig = {
210
209
  id: 12,
211
210
  type: "能量武器",
212
211
  category: "能量武器",
213
- damage: 30,
212
+ damage: 29,
214
213
  armorDamageReduction: 0.75,
215
214
  description: "面对护盾目标而开发的武器",
216
- specialeffect: "攻击无视护盾目标50%的减伤效果",
215
+ specialeffect: "攻击[护盾]目标时无视50%减伤",
217
216
  price: 1050,
218
217
  redCrystalCost: 10,
219
218
  isantiair: true,
220
219
  tagEffects: {
221
- "护盾": 1.8
220
+ "护盾": 1.75
222
221
  }
223
222
  },
224
223
  "动力钻头": {
225
224
  id: 13,
226
225
  type: "实弹武器",
227
226
  category: "实弹武器",
228
- damage: 30,
227
+ damage: 32,
229
228
  armorDamageReduction: 0.5,
230
229
  description: "这种强大的钻头是由那些想把矿工SCV上的大螺丝用作武器的人创造的",
231
230
  specialeffect: "",
@@ -235,17 +234,17 @@ var weaponConfig = {
235
234
  tagEffects: {
236
235
  "建筑": 2,
237
236
  "重甲": 1.5,
238
- "机械": 1.5
237
+ "机械": 1.2
239
238
  }
240
239
  },
241
240
  "脉冲扰乱枪": {
242
241
  id: 14,
243
242
  type: "能量武器",
244
243
  category: "能量武器",
245
- damage: 40,
244
+ damage: 36,
246
245
  armorDamageReduction: 1,
247
246
  description: "一种原型能量武器,能够发射强大的脉冲",
248
- specialeffect: "攻击使目标的技能层数减少2层",
247
+ specialeffect: "攻击使目标技能层数减少2层",
249
248
  price: 1500,
250
249
  redCrystalCost: 15,
251
250
  isantiair: true,
@@ -316,7 +315,7 @@ var weaponConfig = {
316
315
  id: 19,
317
316
  type: "能量武器",
318
317
  category: "能量武器",
319
- damage: 35,
318
+ damage: 30,
320
319
  armorDamageReduction: 1,
321
320
  description: "这是在一位高级灵能者的帮助下,解析灵能力量制作出的高科技武器",
322
321
  specialeffect: "",
@@ -349,10 +348,10 @@ var weaponConfig = {
349
348
  id: 102,
350
349
  type: "能量武器",
351
350
  category: "传奇武器",
352
- damage: 70,
351
+ damage: 75,
353
352
  armorDamageReduction: -1,
354
353
  description: "一件传奇武器",
355
- specialeffect: "暴击率+80%",
354
+ specialeffect: "暴击率+25%",
356
355
  price: 6400,
357
356
  redCrystalCost: 200,
358
357
  isantiair: true,
@@ -373,7 +372,8 @@ var weaponConfig = {
373
372
  isantiair: false,
374
373
  tagEffects: {
375
374
  "惧热": 2,
376
- "轻甲": 1.5
375
+ "轻甲": 1.5,
376
+ "生物": 1.2
377
377
  }
378
378
  },
379
379
  "DSR-55反器材步枪": {
@@ -398,7 +398,7 @@ var weaponConfig = {
398
398
  damage: 100,
399
399
  armorDamageReduction: 0,
400
400
  description: "优雅而独特的武器",
401
- specialeffect: "无视目标100%的减伤效果",
401
+ specialeffect: "无视100%减伤",
402
402
  price: 6400,
403
403
  redCrystalCost: 200,
404
404
  isantiair: false,
@@ -426,7 +426,7 @@ var weaponConfig = {
426
426
  damage: 60,
427
427
  armorDamageReduction: 0,
428
428
  description: "一件传奇武器",
429
- specialeffect: "攻击无视目标80%的减伤效果",
429
+ specialeffect: "无视80%减伤",
430
430
  price: 6400,
431
431
  redCrystalCost: 200,
432
432
  isantiair: true,
@@ -455,58 +455,65 @@ var weaponConfig = {
455
455
  var modConfig = {
456
456
  "动能增幅": {
457
457
  cost: 1750,
458
- effect: "伤害+20%",
458
+ effect: "伤害+15%",
459
+ // 规范术语
459
460
  exclusiveTo: "",
460
461
  isExclusive: false
461
462
  },
462
463
  "棱镜水晶": {
463
464
  cost: 2250,
464
- effect: "暴击率+20%",
465
+ effect: "暴击率+10%",
466
+ // 保持原描述
465
467
  exclusiveTo: "",
466
468
  isExclusive: false
467
469
  },
468
470
  "破甲模块": {
469
471
  cost: 1250,
470
- effect: "攻击无视目标10%的减伤效果",
472
+ effect: "无视10%减伤",
473
+ // 术语统一
471
474
  exclusiveTo: "",
472
475
  isExclusive: false
473
476
  },
474
- // 新增专属模块
477
+ // 专属模组修改
475
478
  "裂甲核心": {
476
479
  cost: 750,
477
- effect: "攻击伤害+40%,攻击无视目标的40%减伤效果",
480
+ effect: "伤害+40%,无视40%减伤",
481
+ // 统一伤害/防御描述
478
482
  exclusiveTo: "高斯步枪",
479
- // 指定专属武器
480
483
  isExclusive: true
481
- // 标记为专属模块
482
484
  },
483
485
  "棱镜超载核心": {
484
- cost: 3050,
485
- effect: "暴击率+80%",
486
+ cost: 2550,
487
+ effect: "暴击率+20%",
488
+ // 保持原描述
486
489
  exclusiveTo: "激光步枪",
487
490
  isExclusive: true
488
491
  },
489
492
  "助燃核心": {
490
493
  cost: 2550,
491
- effect: "对惧热目标改为造成300%伤害,对生物目标改为造成200%伤害",
494
+ effect: "对[惧热]目标造成300%伤害,对[生物]目标造成200%伤害",
495
+ // 规范标签引用和效果描述
492
496
  exclusiveTo: "焚烧枪",
493
497
  isExclusive: true
494
498
  },
495
499
  "光束曲射晶片": {
496
500
  cost: 2750,
497
- effect: "攻击时造成散射,只能对其他目标造成50%的伤害",
501
+ effect: "触发散射攻击,对非主目标造成100%基础伤害",
502
+ // 明确机制命名
498
503
  exclusiveTo: "碎骨步枪",
499
504
  isExclusive: true
500
505
  },
501
506
  "金刚石瞄准镜": {
502
507
  cost: 2250,
503
- effect: "无视目标20%的减伤效果",
508
+ effect: "无视20%减伤",
509
+ // 术语统一
504
510
  exclusiveTo: "侦察步枪",
505
511
  isExclusive: true
506
512
  },
507
513
  "微型聚变核心": {
508
514
  cost: 2750,
509
- effect: "连续攻击每次提高7.5%的伤害(至多提高45%)",
515
+ effect: "连续攻击叠加[伤害提升],每层提高7.5%伤害(上限6层)",
516
+ // 机制命名和数值规范化
510
517
  exclusiveTo: "聚变磁轨枪",
511
518
  isExclusive: true
512
519
  }
@@ -718,7 +725,7 @@ var syndicatePirateConfig = [
718
725
  },
719
726
  {
720
727
  professionName: "猩红杀手",
721
- effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时每1点护甲减少0点伤害; 购买DSR-55反器材步枪(传奇)享有50%的折扣",
728
+ effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时每1点护甲减少1点伤害; 购买DSR-55反器材步枪(传奇)享有50%的折扣",
722
729
  requirements: "“侦察步枪”武器等级≥3级",
723
730
  Jobtransfer: true,
724
731
  costredcrystal: 30
@@ -930,31 +937,31 @@ var Spacestationtechnology = [
930
937
  level: 1,
931
938
  cost: 500,
932
939
  description: "提高挖矿效率,每日签到金币奖励+5%",
933
- careerBonus: "每日签到金币奖励+10%"
940
+ careerBonus: "每日签到金币奖励额外+5%"
934
941
  },
935
942
  {
936
943
  level: 2,
937
944
  cost: 1750,
938
945
  description: "提高挖矿效率,每日签到金币奖励+10%",
939
- careerBonus: "每日签到金币奖励+20%; 解锁太空“挖矿”权限"
946
+ careerBonus: "每日签到金币奖励额外+10%; 解锁太空“挖矿”权限"
940
947
  },
941
948
  {
942
949
  level: 3,
943
950
  cost: 2950,
944
951
  description: "提高挖矿效率,每日签到金币奖励+15%",
945
- careerBonus: "每日签到金币奖励+30%; 解锁太空“挖矿”权限; 建造矿骡协同挖矿,效率提高20%"
952
+ careerBonus: "每日签到金币奖励额外+15%; 解锁太空“挖矿”权限; 建造矿骡协同挖矿,效率提高20%"
946
953
  },
947
954
  {
948
955
  level: 4,
949
956
  cost: 4250,
950
957
  description: "提高挖矿效率,每日签到金币奖励+20%",
951
- careerBonus: "每日签到金币奖励+40%; 解锁太空“挖矿”权限; 建造矿骡协同挖矿,效率提高40%"
958
+ careerBonus: "每日签到金币奖励额外+20%; 解锁太空“挖矿”权限; 建造矿骡协同挖矿,效率提高40%"
952
959
  },
953
960
  {
954
961
  level: 5,
955
962
  cost: 5375,
956
963
  description: "提高挖矿效率,每日签到金币奖励+25%",
957
- careerBonus: "每日签到金币奖励+50%; 解锁太空“挖矿”权限; 建造矿骡协同挖矿,效率提高60%,并且单次挖矿时间上限增加至48小时"
964
+ careerBonus: "每日签到金币奖励额外+25%; 解锁太空“挖矿”权限; 建造矿骡协同挖矿,效率提高60%,并且单次挖矿时间上限增加至48小时"
958
965
  }
959
966
  ]
960
967
  },
@@ -969,31 +976,31 @@ var Spacestationtechnology = [
969
976
  level: 1,
970
977
  cost: 500,
971
978
  description: "提升空间站武器等级,升级武器享有5%的折扣",
972
- careerBonus: "升级武器享有10%的折扣"
979
+ careerBonus: "升级武器额外享有5%的折扣"
973
980
  },
974
981
  {
975
982
  level: 2,
976
983
  cost: 1500,
977
984
  description: "提升空间站武器等级,升级武器享有10%的折扣",
978
- careerBonus: "升级武器享有20%的折扣"
985
+ careerBonus: "升级武器额外享有10%的折扣"
979
986
  },
980
987
  {
981
988
  level: 3,
982
989
  cost: 2550,
983
990
  description: "提升空间站武器等级,升级武器享有15%的折扣",
984
- careerBonus: "升级武器享有30%的折扣"
991
+ careerBonus: "升级武器额外享有15%的折扣"
985
992
  },
986
993
  {
987
994
  level: 4,
988
995
  cost: 3950,
989
996
  description: "提升空间站武器等级,升级武器享有20%的折扣",
990
- careerBonus: "在升级武器享有40%的折扣"
997
+ careerBonus: "升级武器额外享有20%的折扣"
991
998
  },
992
999
  {
993
1000
  level: 5,
994
1001
  cost: 4650,
995
1002
  description: "提升空间站武器等级,升级武器享有25%的折扣",
996
- careerBonus: "升级武器享有50%的折扣; 解锁传奇武器购买权限1次"
1003
+ careerBonus: "升级武器额外享有25%的折扣; 解锁传奇武器购买权限1次"
997
1004
  }
998
1005
  ]
999
1006
  },
@@ -1007,13 +1014,13 @@ var Spacestationtechnology = [
1007
1014
  level: 1,
1008
1015
  cost: 750,
1009
1016
  description: "重启武器升级站,武器改装通用模块享有5%的折扣",
1010
- careerBonus: "武器改装通用模块享有10%的折扣"
1017
+ careerBonus: "武器改装通用模块额外享有5%的折扣"
1011
1018
  },
1012
1019
  {
1013
1020
  level: 2,
1014
1021
  cost: 1e3,
1015
1022
  description: "重启高级武器改装站,武器改装通用模块享有5%的折扣; 武器改装专属模块享有5%的折扣",
1016
- careerBonus: "武器改装通用模块享有10%的折扣; 武器改装专属模块享有10%的折扣"
1023
+ careerBonus: "武器改装通用模块额外享有5%的折扣; 武器改装专属模块额外享有5%的折扣"
1017
1024
  }
1018
1025
  ]
1019
1026
  },
@@ -1028,31 +1035,31 @@ var Spacestationtechnology = [
1028
1035
  level: 1,
1029
1036
  cost: 500,
1030
1037
  description: "重启安防参数代码,攻击获得的金币+5%",
1031
- careerBonus: "攻击获得的金币+10%"
1038
+ careerBonus: "攻击获得的金币额外+5%"
1032
1039
  },
1033
1040
  {
1034
1041
  level: 2,
1035
1042
  cost: 2050,
1036
1043
  description: "提高空间站安防系统强度,攻击获得的金币+10%",
1037
- careerBonus: "攻击获得的金币+20%"
1044
+ careerBonus: "攻击获得的金币额外+10%"
1038
1045
  },
1039
1046
  {
1040
1047
  level: 3,
1041
1048
  cost: 3250,
1042
1049
  description: "进一步提高空间站安防系统强度,攻击获得的金币+15%",
1043
- careerBonus: "攻击获得的金币+30%"
1050
+ careerBonus: "攻击获得的金币额外+15%"
1044
1051
  },
1045
1052
  {
1046
1053
  level: 4,
1047
1054
  cost: 4250,
1048
1055
  description: "大幅提高空间站安防系统强度,攻击获得的金币+20%",
1049
- careerBonus: "攻击获得的金币+40%"
1056
+ careerBonus: "攻击获得的金币额外+20%"
1050
1057
  },
1051
1058
  {
1052
1059
  level: 5,
1053
1060
  cost: 5350,
1054
1061
  description: "完全恢复空间站安防系统,攻击获得的金币+25%",
1055
- careerBonus: "攻击获得的金币+50%; 获得一次打开安全军械库防爆门的权限,可以随机获得一把传奇武器"
1062
+ careerBonus: "攻击获得的金币额外+25%; 获得一次打开安全军械库防爆门的权限,可以随机获得一把传奇武器"
1056
1063
  }
1057
1064
  ]
1058
1065
  },
@@ -1067,31 +1074,31 @@ var Spacestationtechnology = [
1067
1074
  level: 1,
1068
1075
  cost: 500,
1069
1076
  description: "升级空间站关键系统,完成任务奖励+5%",
1070
- careerBonus: "完成任务奖励+10%"
1077
+ careerBonus: "完成任务奖励额外+5%"
1071
1078
  },
1072
1079
  {
1073
1080
  level: 2,
1074
1081
  cost: 1250,
1075
1082
  description: "升级空间站关键系统,完成任务奖励+10%",
1076
- careerBonus: "完成任务奖励+20%"
1083
+ careerBonus: "完成任务奖励额外+10%"
1077
1084
  },
1078
1085
  {
1079
1086
  level: 3,
1080
1087
  cost: 2250,
1081
1088
  description: "升级空间站关键系统,完成任务奖励+15%",
1082
- careerBonus: "完成任务奖励+30%,移除签到7日以下奖励区间"
1089
+ careerBonus: "完成任务奖励额外+15%,移除签到7日以下奖励区间"
1083
1090
  },
1084
1091
  {
1085
1092
  level: 4,
1086
1093
  cost: 2950,
1087
1094
  description: "升级空间站关键系统,完成任务奖励+20%",
1088
- careerBonus: "完成任务奖励+40%,移除签到14日以下奖励区间"
1095
+ careerBonus: "完成任务奖励额外+20%,移除签到14日以下奖励区间"
1089
1096
  },
1090
1097
  {
1091
1098
  level: 5,
1092
1099
  cost: 3550,
1093
1100
  description: "升级空间站关键系统,完成任务奖励+25%",
1094
- careerBonus: "完成任务奖励+50%,移除签到21日以下奖励区间"
1101
+ careerBonus: "完成任务奖励额外+25%,移除签到21日以下奖励区间"
1095
1102
  }
1096
1103
  ]
1097
1104
  }
@@ -3339,7 +3346,7 @@ var BattleEffectProcessor = {
3339
3346
  };
3340
3347
  }, "handleToxicAssault")
3341
3348
  };
3342
- function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate) {
3349
+ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData) {
3343
3350
  const messages = [];
3344
3351
  let immune = false;
3345
3352
  let totalBuffMultiplier = 0;
@@ -3608,10 +3615,16 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3608
3615
  let finalDamage = damage;
3609
3616
  let adjustedNerfMultiplier = totalNerfMultiplier * (1 - ignoreRate);
3610
3617
  const damageMultiplier = 1 + totalBuffMultiplier - adjustedNerfMultiplier;
3611
- finalDamage = Math.max(1, Math.round(damage * damageMultiplier));
3618
+ finalDamage = damage * damageMultiplier;
3612
3619
  if (hasCrit) {
3613
3620
  finalDamage *= 2;
3614
3621
  }
3622
+ let armorDamageReduction = weaponData.armorDamageReduction || 0;
3623
+ if (careerData?.career === "猩红杀手" && weaponName === "侦察步枪") {
3624
+ armorDamageReduction = 1;
3625
+ }
3626
+ const armorReduction = armorDamageReduction * getArmorByName(targetBoss.name);
3627
+ finalDamage = Math.max(Math.round(finalDamage - armorReduction), 1);
3615
3628
  const frostEvolutionResult = BattleEffectProcessor.handleFrostEvolution(
3616
3629
  targetBoss,
3617
3630
  weaponName,
@@ -3921,7 +3934,7 @@ var passiveConfig = {
3921
3934
  },
3922
3935
  "剧毒突袭": {
3923
3936
  type: "强化效果",
3924
- description: "「毒性唾液」≥20层时,受击消耗所有层数并使强化下5次触发的「酸蚀池」"
3937
+ description: "「毒性唾液」≥20层时,受击消耗所有层数并强化下5次触发的「酸蚀池」"
3925
3938
  }
3926
3939
  };
3927
3940
 
@@ -3939,7 +3952,7 @@ var wishConfig = {
3939
3952
  },
3940
3953
  {
3941
3954
  name: "王权增幅",
3942
- effect: "攻击伤害+10%"
3955
+ effect: "伤害+10%"
3943
3956
  },
3944
3957
  {
3945
3958
  name: "金柚赐福",
@@ -3954,7 +3967,7 @@ var wishConfig = {
3954
3967
  rare: [
3955
3968
  {
3956
3969
  name: "悲鸣之锋",
3957
- effect: "攻击伤害+10% (武器等级0),每级武器等级额外+10%"
3970
+ effect: "伤害+10% (武器等级0),每级武器等级额外+10%"
3958
3971
  },
3959
3972
  {
3960
3973
  name: "精灵双倍",
@@ -3966,7 +3979,7 @@ var wishConfig = {
3966
3979
  },
3967
3980
  {
3968
3981
  name: "暴击韵律",
3969
- effect: "攻击暴击率+20%"
3982
+ effect: "暴击率+20%"
3970
3983
  },
3971
3984
  {
3972
3985
  name: "酥手空空",
@@ -4645,26 +4658,18 @@ var legendaryDiscounts = {
4645
4658
  };
4646
4659
 
4647
4660
  // src/boss/damagecalculation.ts
4648
- async function calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss) {
4661
+ async function calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss, careerData) {
4649
4662
  let effectMessage = [];
4650
4663
  const finalTags = targetBoss.tags || [];
4651
- let armorDamageReduction = 0;
4652
4664
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
4653
4665
  const { regionId, realmId, profileId } = profile;
4654
4666
  const handle = `${regionId}-S2-${realmId}-${profileId}`;
4655
4667
  const weaponConfigEntry = Object.entries(weaponConfig).find(([_, c]) => c.id === equippedWeapon.weaponId);
4656
4668
  const [weaponName, weaponData] = weaponConfigEntry;
4657
- const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
4658
- armorDamageReduction = weaponData.armorDamageReduction || 0;
4659
- if (careerData?.career === "猩红杀手" && weaponName === "侦察步枪") {
4660
- armorDamageReduction = 0;
4661
- }
4662
- const armorReduction = armorDamageReduction * getArmorByName(targetBoss.name);
4663
- const initialDamage = Math.max(weaponData.damage - armorReduction, 1);
4664
4669
  const isLegendary = weaponData.category === "传奇武器";
4665
4670
  const levelBonusRate = isLegendary ? 0.05 : 0.1;
4666
- const baseDamage = initialDamage * (1 + levelBonusRate * equippedWeapon.level);
4667
- effectMessage.push(`🔫 ${weaponName} Lv.${equippedWeapon.level}:基础伤害${Math.round(baseDamage)}`);
4671
+ const baseDamage = weaponData.damage * (1 + levelBonusRate * equippedWeapon.level);
4672
+ effectMessage.push(`🔫 ${weaponName} Lv.${equippedWeapon.level}:基础伤害${baseDamage.toFixed(1)}`);
4668
4673
  const tagAdditive = await calculateTagMultiplier(weaponData, finalTags, equippedWeapon);
4669
4674
  const tagMultiplier = 1 + tagAdditive;
4670
4675
  if (tagAdditive !== 0) {
@@ -4688,7 +4693,8 @@ async function calculateTotalDamage(ctx, session, config, equippedWeapon, target
4688
4693
  effectMessage.push(...critSources);
4689
4694
  finalDamage = Math.max(finalDamage, 1);
4690
4695
  return {
4691
- damage: Math.round(finalDamage),
4696
+ damage: finalDamage,
4697
+ baseDamage,
4692
4698
  hasCrit,
4693
4699
  effectMessage
4694
4700
  };
@@ -4698,12 +4704,12 @@ async function calculateCrit(ctx, handle, equippedWeapon, weaponName) {
4698
4704
  let critRate = 0;
4699
4705
  const critSources = [];
4700
4706
  if (equippedWeapon.installedMods?.includes("棱镜水晶")) {
4701
- critRate += 20;
4702
- critSources.push("🔼 棱镜水晶:暴击率+20%");
4707
+ critRate += 10;
4708
+ critSources.push("🔼 棱镜水晶:暴击率+10%");
4703
4709
  }
4704
4710
  if (equippedWeapon.installedMods?.includes("棱镜超载核心") && modConfig["棱镜超载核心"]?.exclusiveTo === weaponName) {
4705
- critRate += 80;
4706
- critSources.push("🔼 棱镜超载核心:暴击率+80%");
4711
+ critRate += 20;
4712
+ critSources.push("🔼 棱镜超载核心:暴击率+20%");
4707
4713
  }
4708
4714
  const [critRhythm] = await ctx.database.get("ggcevo_wish", {
4709
4715
  handle,
@@ -4716,10 +4722,9 @@ async function calculateCrit(ctx, handle, equippedWeapon, weaponName) {
4716
4722
  critSources.push("🎵 暴击韵律祈愿:暴击率+20%");
4717
4723
  }
4718
4724
  if (weaponName === "MK-4激光步枪") {
4719
- critRate += 80;
4720
- critSources.push("🔫 MK-4激光步枪:暴击率+80%");
4725
+ critRate += 25;
4726
+ critSources.push("🔫 MK-4激光步枪:暴击率+25%");
4721
4727
  }
4722
- critSources.push(`📊 本次攻击总暴击率:${critRate}%`);
4723
4728
  return {
4724
4729
  hasCrit: Math.random() * 100 < critRate,
4725
4730
  critSources
@@ -4746,12 +4751,12 @@ function calculateModifiers(equippedWeapon, weaponName) {
4746
4751
  let totalModAdd = 0;
4747
4752
  const modMessages = [];
4748
4753
  if (equippedWeapon.installedMods?.includes("动能增幅")) {
4749
- totalModAdd += 0.2;
4750
- modMessages.push(`🛠️ 【动能增幅】:伤害加成+20%`);
4754
+ totalModAdd += 0.15;
4755
+ modMessages.push(`🛠️ 【动能增幅】:伤害+15%`);
4751
4756
  }
4752
4757
  if (equippedWeapon.installedMods?.includes("裂甲核心") && weaponName === modConfig["裂甲核心"]?.exclusiveTo) {
4753
4758
  totalModAdd += 0.4;
4754
- modMessages.push(`🛠️ 【裂甲核心】:伤害加成+40%`);
4759
+ modMessages.push(`🛠️ 【裂甲核心】:伤害+40%`);
4755
4760
  }
4756
4761
  if (equippedWeapon.installedMods?.includes("微型聚变核心")) {
4757
4762
  const currentCombo = equippedWeapon?.comboCount || 0;
@@ -4760,7 +4765,7 @@ function calculateModifiers(equippedWeapon, weaponName) {
4760
4765
  const effectiveStacks = Math.min(currentCombo, maxStacks);
4761
4766
  const bonusDamage = effectiveStacks * bonusPerCombo;
4762
4767
  totalModAdd += bonusDamage;
4763
- modMessages.push(`🛠️ 【微型聚变核心】:连击加成+${(bonusDamage * 100).toFixed(0)}%`);
4768
+ modMessages.push(`🛠️ 【微型聚变核心】:攻击伤害+${(bonusDamage * 100).toFixed(0)}%`);
4764
4769
  }
4765
4770
  return {
4766
4771
  totalModAdd,
@@ -4994,10 +4999,10 @@ async function handleBossDefeatRewards(ctx, targetBoss) {
4994
4999
  return { rewardMessages };
4995
5000
  }
4996
5001
  __name(handleBossDefeatRewards, "handleBossDefeatRewards");
4997
- async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon, targetBoss, activeBosses, weaponName) {
4998
- const damageResult = await calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss);
5002
+ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon, targetBoss, activeBosses, weaponName, careerData) {
5003
+ const damageResult = await calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss, careerData);
4999
5004
  const ignoreReduction = await handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss);
5000
- const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate);
5005
+ const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5001
5006
  const initialDamage = EffectProcessor.finalDamage;
5002
5007
  await saveAndClearStats(ctx);
5003
5008
  const [currentboss] = await ctx.database.get("ggcevo_boss", { name: targetBoss.name });
@@ -5019,7 +5024,7 @@ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon,
5019
5024
  };
5020
5025
  }
5021
5026
  __name(handlePrimaryAttack, "handlePrimaryAttack");
5022
- async function handleScatterAttack(ctx, session, handle, config, equippedWeapon, targetBoss, weaponName, activeBosses) {
5027
+ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon, targetBoss, weaponName, activeBosses, careerData) {
5023
5028
  const secondaryTargets = activeBosses.filter((boss) => boss.name !== targetBoss.name);
5024
5029
  const scatterEffectMessages = [];
5025
5030
  const extraDamages = [];
@@ -5028,10 +5033,10 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
5028
5033
  let scatterRatio = 0;
5029
5034
  if (weaponName === "碎骨步枪") {
5030
5035
  scatterEffectMessages.push("🔆 【光束曲射晶片】触发散射攻击!");
5031
- scatterRatio = 0.5;
5036
+ scatterRatio = 1;
5032
5037
  } else if (weaponName === "中子步枪") {
5033
5038
  scatterEffectMessages.push("🔆 【中子步枪】触发散射攻击!");
5034
- scatterRatio = 0.5;
5039
+ scatterRatio = 1.2;
5035
5040
  }
5036
5041
  for (const secondaryTarget of secondaryTargets) {
5037
5042
  const damageResult = await calculateTotalDamage(
@@ -5039,11 +5044,12 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
5039
5044
  session,
5040
5045
  config,
5041
5046
  equippedWeapon,
5042
- secondaryTarget
5047
+ secondaryTarget,
5048
+ careerData
5043
5049
  );
5044
- const secondaryDamage = Math.round(damageResult.damage * scatterRatio);
5050
+ const secondaryDamage = Math.round(damageResult.baseDamage * scatterRatio);
5045
5051
  const ignoreReduction = await handleIgnoreReductionEffects(ctx, handle, weaponName, secondaryTarget);
5046
- const EffectProcessor = applyPassiveEffects(secondaryTarget, activeBosses, weaponName, secondaryDamage, damageResult.hasCrit, ignoreReduction.ignoreRate);
5052
+ const EffectProcessor = applyPassiveEffects(secondaryTarget, activeBosses, weaponName, secondaryDamage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5047
5053
  const actualDamage = EffectProcessor.finalDamage;
5048
5054
  await saveAndClearStats(ctx);
5049
5055
  const [currentboss] = await ctx.database.get("ggcevo_boss", { name: secondaryTarget.name });
@@ -5397,10 +5403,10 @@ async function handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss)
5397
5403
  };
5398
5404
  }
5399
5405
  __name(handleIgnoreReductionEffects, "handleIgnoreReductionEffects");
5400
- async function testAttackFunction(ctx, session, handle, config, equippedWeapon, targetBoss, activeBosses, weaponName) {
5401
- const damageResult = await calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss);
5406
+ async function testAttackFunction(ctx, session, handle, config, equippedWeapon, targetBoss, activeBosses, weaponName, careerData) {
5407
+ const damageResult = await calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss, careerData);
5402
5408
  const ignoreReduction = await handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss);
5403
- const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate);
5409
+ const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5404
5410
  const initialDamage = EffectProcessor.finalDamage;
5405
5411
  return {
5406
5412
  initialDamage,
@@ -7988,6 +7994,7 @@ ${validTypes.join("、")}`;
7988
7994
  if (!weaponData.isantiair && (targetBoss.groupId === 5 || targetBoss.groupId === 10)) {
7989
7995
  return "您当前装备的武器无法攻击空中目标!";
7990
7996
  }
7997
+ const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
7991
7998
  const primaryAttackResult = await handlePrimaryAttack(
7992
7999
  ctx,
7993
8000
  session,
@@ -7996,7 +8003,8 @@ ${validTypes.join("、")}`;
7996
8003
  equippedWeapon,
7997
8004
  targetBoss,
7998
8005
  activeBosses,
7999
- weaponName
8006
+ weaponName,
8007
+ careerData
8000
8008
  );
8001
8009
  const allDeadTargets = [];
8002
8010
  if (primaryAttackResult.isDefeated) {
@@ -8014,7 +8022,8 @@ ${validTypes.join("、")}`;
8014
8022
  equippedWeapon,
8015
8023
  targetBoss,
8016
8024
  weaponName,
8017
- activeBosses
8025
+ activeBosses,
8026
+ careerData
8018
8027
  );
8019
8028
  scatterResult.actuallyDead.forEach((name2) => {
8020
8029
  const deadBoss = activeBosses.find((b) => b.name === name2);
@@ -8146,6 +8155,7 @@ ${validTypes.join("、")}`;
8146
8155
  const activeBosses = [dummyBoss];
8147
8156
  const weaponConfigEntry = Object.entries(weaponConfig).find(([_, c]) => c.id === equippedWeapon.weaponId);
8148
8157
  const [weaponName] = weaponConfigEntry;
8158
+ const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
8149
8159
  try {
8150
8160
  const testResult = await testAttackFunction(
8151
8161
  ctx,
@@ -8155,7 +8165,8 @@ ${validTypes.join("、")}`;
8155
8165
  equippedWeapon,
8156
8166
  dummyBoss,
8157
8167
  activeBosses,
8158
- weaponName
8168
+ weaponName,
8169
+ careerData
8159
8170
  );
8160
8171
  const layerInfo = [];
8161
8172
  if (skillStacks > 0) layerInfo.push(`技能层数: ${skillStacks}`);
package/lib/weapons.d.ts CHANGED
@@ -152,7 +152,6 @@ export declare const weaponConfig: {
152
152
  isantiair: boolean;
153
153
  tagEffects: {
154
154
  生物: number;
155
- 护盾: number;
156
155
  机械: number;
157
156
  };
158
157
  };
@@ -339,6 +338,7 @@ export declare const weaponConfig: {
339
338
  tagEffects: {
340
339
  惧热: number;
341
340
  轻甲: number;
341
+ 生物: number;
342
342
  };
343
343
  };
344
344
  'DSR-55\u53CD\u5668\u6750\u6B65\u67AA': {
package/lib/wish.d.ts CHANGED
@@ -7,7 +7,7 @@ export declare const wishConfig: {
7
7
  readonly effect: "下一次升级武器享有20%的折扣";
8
8
  }, {
9
9
  readonly name: "王权增幅";
10
- readonly effect: "攻击伤害+10%";
10
+ readonly effect: "伤害+10%";
11
11
  }, {
12
12
  readonly name: "金柚赐福";
13
13
  readonly effect: "立即获得250枚金币";
@@ -17,7 +17,7 @@ export declare const wishConfig: {
17
17
  }];
18
18
  readonly rare: readonly [{
19
19
  readonly name: "悲鸣之锋";
20
- readonly effect: "攻击伤害+10% (武器等级0),每级武器等级额外+10%";
20
+ readonly effect: "伤害+10% (武器等级0),每级武器等级额外+10%";
21
21
  }, {
22
22
  readonly name: "精灵双倍";
23
23
  readonly effect: "下一次击败主宰时可获得双倍的金币和咕咕币奖励";
@@ -26,7 +26,7 @@ export declare const wishConfig: {
26
26
  readonly effect: "签到获得双倍的金币和咕咕币";
27
27
  }, {
28
28
  readonly name: "暴击韵律";
29
- readonly effect: "攻击暴击率+20%";
29
+ readonly effect: "暴击率+20%";
30
30
  }, {
31
31
  readonly name: "酥手空空";
32
32
  readonly effect: "立即失去50枚金币";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-ggcevo-game",
3
3
  "description": "《星际争霸2》咕咕虫-evolved地图的专属游戏助手插件,集成天梯排行、抽奖系统、签到福利、兑换商城等丰富功能。",
4
- "version": "1.4.65",
4
+ "version": "1.4.67",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [