koishi-plugin-smmcat-gensokyo 0.0.41 → 0.0.42
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/damage.d.ts +10 -1
- package/lib/data/PassiveFn.d.ts +2 -1
- package/lib/index.js +121 -19
- package/package.json +1 -1
package/lib/damage.d.ts
CHANGED
|
@@ -16,6 +16,11 @@ export type DamageConfig = {
|
|
|
16
16
|
self: BattleAttribute;
|
|
17
17
|
goal: BattleAttribute;
|
|
18
18
|
};
|
|
19
|
+
/** 浅拷贝数据 */
|
|
20
|
+
linkAgent: {
|
|
21
|
+
self: BattleAttribute;
|
|
22
|
+
goal: BattleAttribute;
|
|
23
|
+
};
|
|
19
24
|
/** 实际伤害数据 */
|
|
20
25
|
harm: number;
|
|
21
26
|
/** 原始伤害数据 */
|
|
@@ -30,6 +35,8 @@ export type DamageConfig = {
|
|
|
30
35
|
isBadDef: boolean;
|
|
31
36
|
/** 减免伤害 */
|
|
32
37
|
reductionVal: number;
|
|
38
|
+
/** 被动技能触发文本 */
|
|
39
|
+
passiveMsg: string[];
|
|
33
40
|
};
|
|
34
41
|
declare class Damage {
|
|
35
42
|
config: DamageConfig;
|
|
@@ -67,4 +74,6 @@ declare function giveCure(goal: BattleAttribute, val: number, fn?: (msg: string)
|
|
|
67
74
|
};
|
|
68
75
|
/** 伤害额外信息 */
|
|
69
76
|
declare function moreDamageInfo(damage: DamageConfig): string;
|
|
70
|
-
|
|
77
|
+
/** 更多的伤害提示信息 */
|
|
78
|
+
declare function baseMoreDamage(damageInfo: DamageConfig): string;
|
|
79
|
+
export { Damage, BuffDamage, giveDamage, giveCure, moreDamageInfo, baseMoreDamage };
|
package/lib/data/PassiveFn.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -331,7 +331,7 @@ var monsterData = {
|
|
|
331
331
|
speed: 8,
|
|
332
332
|
giveExp: 20,
|
|
333
333
|
giveMonetary: 8,
|
|
334
|
-
passiveList: [],
|
|
334
|
+
passiveList: ["反伤"],
|
|
335
335
|
giveProps: [
|
|
336
336
|
{ name: "大红药", val: 2, radomVal: 50 }
|
|
337
337
|
],
|
|
@@ -432,7 +432,7 @@ var Monster = {
|
|
|
432
432
|
},
|
|
433
433
|
/** 格式化怪物属性数据 */
|
|
434
434
|
monsterAttributeTextFormat(monster) {
|
|
435
|
-
const { name: name2, type, lv, hp, maxHp, mp, maxMp, atk, def, chr, evasion, hit, ghd, speed, info, pic, giveProps } = monster;
|
|
435
|
+
const { name: name2, type, lv, hp, maxHp, mp, maxMp, atk, def, chr, evasion, hit, ghd, speed, info, pic, giveProps, passiveList } = monster;
|
|
436
436
|
const propsList = giveProps.filter((item) => item.lv ? lv >= item.lv : true).map((item) => item.name);
|
|
437
437
|
const attributeText = (pic ? import_koishi.h.image(pic) + "\n" : "") + `Lv.${lv}【${name2}】
|
|
438
438
|
|
|
@@ -445,7 +445,8 @@ var Monster = {
|
|
|
445
445
|
【速度值】${speed}
|
|
446
446
|
【命中率】${(100 + (hit - 1e3) / 10).toFixed(1)}%
|
|
447
447
|
【暴击率】${(chr / 10).toFixed(1)}%
|
|
448
|
-
【爆伤倍率】${(ghd * 100).toFixed(0)}%` + (
|
|
448
|
+
【爆伤倍率】${(ghd * 100).toFixed(0)}%` + (passiveList.length ? `
|
|
449
|
+
【被动技能】${passiveList.join("、")}` : "") + (propsList?.length ? `
|
|
449
450
|
【概率掉落道具】` + propsList.join("、") : "") + (info ? "\n\n" + info : "");
|
|
450
451
|
return attributeText;
|
|
451
452
|
}
|
|
@@ -778,9 +779,80 @@ __name(settlementBuff, "settlementBuff");
|
|
|
778
779
|
var PassiveFn = {
|
|
779
780
|
"吸血": {
|
|
780
781
|
name: "吸血",
|
|
781
|
-
info: "造成伤害时,汲取10
|
|
782
|
+
info: "造成伤害时,汲取10%该次伤害的值治疗自己",
|
|
783
|
+
type: "atk",
|
|
782
784
|
damageFn: /* @__PURE__ */ __name(function(config) {
|
|
783
785
|
const val = Math.floor(config.harm * 0.1);
|
|
786
|
+
if (val) {
|
|
787
|
+
const res = giveCure(config.linkAgent.self, val);
|
|
788
|
+
return `‣ ${getLineupName(config.linkAgent.self)}:[${this.name}] HP+${res.val}`;
|
|
789
|
+
}
|
|
790
|
+
return ``;
|
|
791
|
+
}, "damageFn")
|
|
792
|
+
},
|
|
793
|
+
"反伤": {
|
|
794
|
+
name: "反伤",
|
|
795
|
+
info: "有40%概率直接反弹本次伤害的20%(真实伤害)",
|
|
796
|
+
type: "hit",
|
|
797
|
+
damageFn: /* @__PURE__ */ __name(function(config) {
|
|
798
|
+
const val = Math.floor(config.harm * 0.2);
|
|
799
|
+
if (val && random(0, 10) <= 4) {
|
|
800
|
+
const value = new BuffDamage(val, config.linkAgent.self, true).giveDamage();
|
|
801
|
+
console.log(config.linkAgent.self);
|
|
802
|
+
return `‣ ${getLineupName(config.linkAgent.self)}:[${this.name}] HP-${value}`;
|
|
803
|
+
}
|
|
804
|
+
return ``;
|
|
805
|
+
}, "damageFn")
|
|
806
|
+
},
|
|
807
|
+
"破势": {
|
|
808
|
+
name: "破势",
|
|
809
|
+
info: "敌方血量大于70%时,造成的伤害提高30%",
|
|
810
|
+
type: "atk",
|
|
811
|
+
damageFn: /* @__PURE__ */ __name(function(config) {
|
|
812
|
+
if (config.linkAgent.goal.hp / config.linkAgent.goal.maxHp > 0.7) {
|
|
813
|
+
const upVal = Math.floor(config.harm * 0.3);
|
|
814
|
+
if (upVal) {
|
|
815
|
+
config.harm += Math.floor(config.harm * 0.3);
|
|
816
|
+
return `‣ ${getLineupName(config.linkAgent.self)}:[${this.name}] 伤害+${upVal}`;
|
|
817
|
+
}
|
|
818
|
+
return ``;
|
|
819
|
+
}
|
|
820
|
+
return ``;
|
|
821
|
+
}, "damageFn")
|
|
822
|
+
},
|
|
823
|
+
"心眼": {
|
|
824
|
+
name: "心眼",
|
|
825
|
+
info: "敌方血量小于40%时,造成的伤害提高30%",
|
|
826
|
+
type: "atk",
|
|
827
|
+
damageFn: /* @__PURE__ */ __name(function(config) {
|
|
828
|
+
if (config.linkAgent.goal.hp / config.linkAgent.goal.maxHp < 0.4) {
|
|
829
|
+
const upVal = Math.floor(config.harm * 0.3);
|
|
830
|
+
if (upVal) {
|
|
831
|
+
config.harm += Math.floor(config.harm * 0.3);
|
|
832
|
+
return `‣ ${getLineupName(config.linkAgent.self)}:[${this.name}] 伤害+${upVal}`;
|
|
833
|
+
}
|
|
834
|
+
return ``;
|
|
835
|
+
}
|
|
836
|
+
return ``;
|
|
837
|
+
}, "damageFn")
|
|
838
|
+
},
|
|
839
|
+
"针女": {
|
|
840
|
+
name: "针女",
|
|
841
|
+
info: "攻击时有40%概率额外造成敌方5%血量真实伤害(伤害最大不超过使用者攻击力的120%)",
|
|
842
|
+
type: "atk",
|
|
843
|
+
damageFn: /* @__PURE__ */ __name(function(config) {
|
|
844
|
+
if (random(0, 10) <= 4) {
|
|
845
|
+
const upVal = Math.min(
|
|
846
|
+
config.linkAgent.self.atk + config.linkAgent.self.gain.atk,
|
|
847
|
+
Math.floor(config.linkAgent.goal.maxHp * 0.05)
|
|
848
|
+
);
|
|
849
|
+
if (upVal) {
|
|
850
|
+
const value = new BuffDamage(upVal, config.linkAgent.goal, true).giveDamage();
|
|
851
|
+
return `‣ ${getLineupName(config.linkAgent.goal)}:[${this.name}] HP-${value}`;
|
|
852
|
+
}
|
|
853
|
+
return ``;
|
|
854
|
+
}
|
|
855
|
+
return ``;
|
|
784
856
|
}, "damageFn")
|
|
785
857
|
}
|
|
786
858
|
};
|
|
@@ -794,13 +866,15 @@ var Damage = class {
|
|
|
794
866
|
constructor(agent, realHarm = false) {
|
|
795
867
|
this.config = {
|
|
796
868
|
agent: { self: { ...agent.self }, goal: { ...agent.goal } },
|
|
869
|
+
linkAgent: { self: agent.self, goal: agent.goal },
|
|
797
870
|
harm: 0,
|
|
798
871
|
default_harm: 0,
|
|
799
872
|
isRealHarm: realHarm,
|
|
800
873
|
isEvasion: false,
|
|
801
874
|
isCsp: false,
|
|
802
875
|
isBadDef: false,
|
|
803
|
-
reductionVal: 0
|
|
876
|
+
reductionVal: 0,
|
|
877
|
+
passiveMsg: []
|
|
804
878
|
};
|
|
805
879
|
}
|
|
806
880
|
/** 伤害判定前 */
|
|
@@ -872,9 +946,12 @@ var Damage = class {
|
|
|
872
946
|
}
|
|
873
947
|
}
|
|
874
948
|
fn && fn(this.config);
|
|
875
|
-
if (this.config.
|
|
876
|
-
this.config.
|
|
877
|
-
PassiveFn[passiveName].
|
|
949
|
+
if (this.config.linkAgent.self.passiveList?.length) {
|
|
950
|
+
this.config.linkAgent.self.passiveList.forEach((passiveName) => {
|
|
951
|
+
if (PassiveFn[passiveName].type == "atk") {
|
|
952
|
+
const msg = PassiveFn[passiveName].damageFn(this.config);
|
|
953
|
+
msg && this.config.passiveMsg.push(msg);
|
|
954
|
+
}
|
|
878
955
|
});
|
|
879
956
|
}
|
|
880
957
|
return this;
|
|
@@ -922,6 +999,14 @@ var BuffDamage = class {
|
|
|
922
999
|
}
|
|
923
1000
|
};
|
|
924
1001
|
function giveDamage(self, goal, damage) {
|
|
1002
|
+
if (damage.linkAgent.goal.passiveList?.length) {
|
|
1003
|
+
damage.linkAgent.goal.passiveList.forEach((passiveName) => {
|
|
1004
|
+
if (PassiveFn[passiveName].type == "hit") {
|
|
1005
|
+
const msg = PassiveFn[passiveName].damageFn(damage);
|
|
1006
|
+
msg && damage.passiveMsg.push(msg);
|
|
1007
|
+
}
|
|
1008
|
+
});
|
|
1009
|
+
}
|
|
925
1010
|
if (goal.hp - damage.harm > 0) {
|
|
926
1011
|
goal.hp -= damage.harm;
|
|
927
1012
|
return damage.harm;
|
|
@@ -955,9 +1040,13 @@ function giveCure(goal, val, fn) {
|
|
|
955
1040
|
}
|
|
956
1041
|
__name(giveCure, "giveCure");
|
|
957
1042
|
function moreDamageInfo(damage) {
|
|
958
|
-
return (damage.isCsp ? `(暴击!)` : "") + (damage.isEvasion ?
|
|
1043
|
+
return (damage.isCsp ? `(暴击!)` : "") + (damage.isEvasion ? `(闪避!)` : "") + (damage.isBadDef ? `(未破防!)` : "") + (damage.isRealHarm ? `(真实伤害)` : "");
|
|
959
1044
|
}
|
|
960
1045
|
__name(moreDamageInfo, "moreDamageInfo");
|
|
1046
|
+
function baseMoreDamage(damageInfo) {
|
|
1047
|
+
return moreDamageInfo(damageInfo) + (damageInfo.passiveMsg.length ? "\n" + damageInfo.passiveMsg.join("‣") : "");
|
|
1048
|
+
}
|
|
1049
|
+
__name(baseMoreDamage, "baseMoreDamage");
|
|
961
1050
|
|
|
962
1051
|
// src/data/skillFn.ts
|
|
963
1052
|
var skillFn = {
|
|
@@ -981,7 +1070,7 @@ var skillFn = {
|
|
|
981
1070
|
target: [agent.goal],
|
|
982
1071
|
isNext: false
|
|
983
1072
|
});
|
|
984
|
-
return `${getLineupName(agent.self)} 释放重砍,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` +
|
|
1073
|
+
return `${getLineupName(agent.self)} 释放重砍,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` + baseMoreDamage(damageData);
|
|
985
1074
|
}, "fn")
|
|
986
1075
|
},
|
|
987
1076
|
"突刺": {
|
|
@@ -1004,7 +1093,7 @@ var skillFn = {
|
|
|
1004
1093
|
target: [agent.goal],
|
|
1005
1094
|
isNext: false
|
|
1006
1095
|
});
|
|
1007
|
-
return `${getLineupName(agent.self)} 释放突刺,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` +
|
|
1096
|
+
return `${getLineupName(agent.self)} 释放突刺,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` + baseMoreDamage(damageData);
|
|
1008
1097
|
}, "fn")
|
|
1009
1098
|
},
|
|
1010
1099
|
"水炮": {
|
|
@@ -1026,7 +1115,7 @@ var skillFn = {
|
|
|
1026
1115
|
target: [agent.goal],
|
|
1027
1116
|
isNext: false
|
|
1028
1117
|
});
|
|
1029
|
-
return `${getLineupName(agent.self)} 释放水炮,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` +
|
|
1118
|
+
return `${getLineupName(agent.self)} 释放水炮,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` + baseMoreDamage(damageData);
|
|
1030
1119
|
}, "fn")
|
|
1031
1120
|
},
|
|
1032
1121
|
"濒死一击": {
|
|
@@ -1049,7 +1138,7 @@ var skillFn = {
|
|
|
1049
1138
|
target: [agent.goal],
|
|
1050
1139
|
isNext: false
|
|
1051
1140
|
});
|
|
1052
|
-
return `${getLineupName(agent.self)} 释放濒死一击,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` +
|
|
1141
|
+
return `${getLineupName(agent.self)} 释放濒死一击,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` + baseMoreDamage(damageData);
|
|
1053
1142
|
} else {
|
|
1054
1143
|
fn({
|
|
1055
1144
|
type: "释放失败" /* 释放失败 */,
|
|
@@ -1098,7 +1187,7 @@ var skillFn = {
|
|
|
1098
1187
|
target: [agent.goal],
|
|
1099
1188
|
isNext: false
|
|
1100
1189
|
});
|
|
1101
|
-
return `${getLineupName(agent.self)} 进行垂死挣扎,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` +
|
|
1190
|
+
return `${getLineupName(agent.self)} 进行垂死挣扎,对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。` + baseMoreDamage(damageData);
|
|
1102
1191
|
}, "fn")
|
|
1103
1192
|
},
|
|
1104
1193
|
"治愈之光": {
|
|
@@ -1144,7 +1233,7 @@ var skillFn = {
|
|
|
1144
1233
|
isNext: false,
|
|
1145
1234
|
target: [goal]
|
|
1146
1235
|
});
|
|
1147
|
-
msgList.push(`- 对 ${getLineupName(goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(中毒)" : ""}` +
|
|
1236
|
+
msgList.push(`- 对 ${getLineupName(goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(中毒)" : ""}` + baseMoreDamage(damageData));
|
|
1148
1237
|
});
|
|
1149
1238
|
return msgList.join("\n");
|
|
1150
1239
|
}, "fn")
|
|
@@ -1174,7 +1263,7 @@ var skillFn = {
|
|
|
1174
1263
|
isNext: false,
|
|
1175
1264
|
target: [agent.goal]
|
|
1176
1265
|
});
|
|
1177
|
-
return `${getLineupName(agent.self)} 发动恐怖催眠术!对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(晕眩)" : ""}` +
|
|
1266
|
+
return `${getLineupName(agent.self)} 发动恐怖催眠术!对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(晕眩)" : ""}` + baseMoreDamage(damageData);
|
|
1178
1267
|
}, "fn")
|
|
1179
1268
|
},
|
|
1180
1269
|
"恐怖的回忆": {
|
|
@@ -1287,7 +1376,7 @@ var skillFn = {
|
|
|
1287
1376
|
isNext: false,
|
|
1288
1377
|
target: [agent.goal]
|
|
1289
1378
|
});
|
|
1290
|
-
return `${getLineupName(agent.self)} 发动无意识行动!对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(沉默)" : ""}` +
|
|
1379
|
+
return `${getLineupName(agent.self)} 发动无意识行动!对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(沉默)" : ""}` + baseMoreDamage(damageData);
|
|
1291
1380
|
}, "fn")
|
|
1292
1381
|
}
|
|
1293
1382
|
};
|
|
@@ -1713,7 +1802,7 @@ MP:${item.mp}/${item.maxMp + item.gain.maxMp}`);
|
|
|
1713
1802
|
const damageInfo = new Damage({ self: agent, goal: selectGoal }).result();
|
|
1714
1803
|
giveDamage(agent, selectGoal, damageInfo);
|
|
1715
1804
|
msgList.push(
|
|
1716
|
-
`${getLineupName(agent)} 使用普攻攻击了 ${getLineupName(selectGoal)},造成了${damageInfo.harm}伤害。` +
|
|
1805
|
+
`${getLineupName(agent)} 使用普攻攻击了 ${getLineupName(selectGoal)},造成了${damageInfo.harm}伤害。` + baseMoreDamage(damageInfo)
|
|
1717
1806
|
);
|
|
1718
1807
|
}, "noralAtk");
|
|
1719
1808
|
if (funType == "普攻" || agent.gain.silence) {
|
|
@@ -3724,7 +3813,20 @@ function apply(ctx, config) {
|
|
|
3724
3813
|
if (!goal) return `请输入技能名,例如 /技能查询 重砍`;
|
|
3725
3814
|
if (!skillFn[goal]) return `没有存在 ${goal} 技能!`;
|
|
3726
3815
|
return `[${goal}]信息如下:
|
|
3727
|
-
` + skillFn[goal].info
|
|
3816
|
+
` + skillFn[goal].info + `
|
|
3817
|
+
消耗MP:${skillFn[goal].mp}`;
|
|
3818
|
+
});
|
|
3819
|
+
ctx.command("幻想乡/被动查询 <goal>").action(async ({ session }, goal) => {
|
|
3820
|
+
if (!goal) return `请输入被动名,例如 /被动查询 吸血`;
|
|
3821
|
+
if (!PassiveFn[goal]) return `没有存在 ${goal} 被动!`;
|
|
3822
|
+
return `[${goal}]信息如下:
|
|
3823
|
+
` + PassiveFn[goal].info;
|
|
3824
|
+
});
|
|
3825
|
+
ctx.command("幻想乡/状态查询 <goal>").action(async ({ session }, goal) => {
|
|
3826
|
+
if (!goal) return `请输入技能名,例如 /状态查询 治愈`;
|
|
3827
|
+
if (!BuffFn[goal]) return `没有存在 ${goal} 状态!`;
|
|
3828
|
+
return `[${goal}]信息如下:
|
|
3829
|
+
` + BuffFn[goal].info;
|
|
3728
3830
|
});
|
|
3729
3831
|
const temp = {};
|
|
3730
3832
|
ctx.command("幻想乡/补给").action(async ({ session }) => {
|