koishi-plugin-smmcat-gensokyo 0.0.27 → 0.0.28
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/battle.d.ts +2 -0
- package/lib/damage.d.ts +3 -1
- package/lib/data/skillFn.d.ts +9 -1
- package/lib/index.js +107 -11
- package/lib/test.d.ts +1 -8
- package/package.json +1 -1
package/lib/battle.d.ts
CHANGED
package/lib/damage.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export type DamageConfig = {
|
|
|
28
28
|
isCsp: boolean;
|
|
29
29
|
/** 是否未破防 */
|
|
30
30
|
isBadDef: boolean;
|
|
31
|
+
/** 减免伤害 */
|
|
32
|
+
reductionVal: number;
|
|
31
33
|
};
|
|
32
34
|
declare class Damage {
|
|
33
35
|
config: DamageConfig;
|
|
@@ -45,7 +47,7 @@ declare class Damage {
|
|
|
45
47
|
csp(fn: (config: DamageConfig) => void): this;
|
|
46
48
|
/** 防御结算 */
|
|
47
49
|
beforDef(fn: (config: DamageConfig) => void): this;
|
|
48
|
-
/** 最终结算 */
|
|
50
|
+
/** 最终结算 伤害减免 */
|
|
49
51
|
beforEnd(fn: (config: DamageConfig) => void): this;
|
|
50
52
|
result(fn?: DamageCallback): DamageConfig;
|
|
51
53
|
}
|
package/lib/data/skillFn.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare enum SkillType {
|
|
|
4
4
|
释放失败 = "\u91CA\u653E\u5931\u8D25",
|
|
5
5
|
伤害技 = "\u4F24\u5BB3\u6280",
|
|
6
6
|
增益技 = "\u589E\u76CA\u6280",
|
|
7
|
+
减益技 = "\u51CF\u76CA\u6280",
|
|
7
8
|
治疗技 = "\u6CBB\u7597\u6280",
|
|
8
9
|
奥义 = "\u5965\u4E49"
|
|
9
10
|
}
|
|
@@ -37,6 +38,13 @@ interface BuffSkillParams {
|
|
|
37
38
|
/** 错误提示 */
|
|
38
39
|
err?: string;
|
|
39
40
|
}
|
|
41
|
+
interface DeBuffSkillParams {
|
|
42
|
+
type: SkillType.减益技;
|
|
43
|
+
/** 是否衔接普攻 */
|
|
44
|
+
isNext: boolean;
|
|
45
|
+
/** 错误提示 */
|
|
46
|
+
err?: string;
|
|
47
|
+
}
|
|
40
48
|
interface UltimateSkillParams {
|
|
41
49
|
type: SkillType.奥义;
|
|
42
50
|
/** 是否衔接普攻 */
|
|
@@ -49,7 +57,7 @@ interface ErrSkillParams {
|
|
|
49
57
|
/** 错误提示 */
|
|
50
58
|
err?: string;
|
|
51
59
|
}
|
|
52
|
-
type SkillParams = DamageSkillParams | BuffSkillParams | HealSkillParams | UltimateSkillParams | ErrSkillParams;
|
|
60
|
+
type SkillParams = DamageSkillParams | BuffSkillParams | HealSkillParams | UltimateSkillParams | ErrSkillParams | DeBuffSkillParams;
|
|
53
61
|
interface SkillConfig<T extends SkillType = SkillType> {
|
|
54
62
|
/** 技能名 */
|
|
55
63
|
name: string;
|
package/lib/index.js
CHANGED
|
@@ -55,13 +55,15 @@ var GensokyoMap = {
|
|
|
55
55
|
areaName: "地下墓穴",
|
|
56
56
|
type: "BOSS区" /* BOSS区 */,
|
|
57
57
|
needLv: 1,
|
|
58
|
-
down: "蜘蛛洞穴"
|
|
58
|
+
down: "蜘蛛洞穴",
|
|
59
|
+
monster: [{ name: "古明地觉", lv: 15 }]
|
|
59
60
|
},
|
|
60
61
|
"蜘蛛洞穴": {
|
|
61
62
|
floor: 1,
|
|
62
63
|
areaName: "蜘蛛洞穴",
|
|
63
64
|
type: "冒险区" /* 冒险区 */,
|
|
64
65
|
needLv: 1,
|
|
66
|
+
top: "地下墓穴",
|
|
65
67
|
down: "蜘蛛森林一"
|
|
66
68
|
},
|
|
67
69
|
"蜘蛛森林一": {
|
|
@@ -700,6 +702,30 @@ var monsterData = {
|
|
|
700
702
|
{ name: "初级复活卷轴", val: 1, radomVal: 50 }
|
|
701
703
|
],
|
|
702
704
|
fn: [{ name: "毒之牙", prob: 1 }]
|
|
705
|
+
},
|
|
706
|
+
"古明地觉": {
|
|
707
|
+
name: "古明地觉",
|
|
708
|
+
type: "BOSS" /* BOSS */,
|
|
709
|
+
info: "位于旧地狱中心地带的管理者,拥有读心的控制技能。",
|
|
710
|
+
pic: "http://smmcat.cn/run/gensokyo/古明地觉.png",
|
|
711
|
+
hp: 95,
|
|
712
|
+
maxHp: 95,
|
|
713
|
+
mp: 140,
|
|
714
|
+
maxMp: 140,
|
|
715
|
+
atk: 24,
|
|
716
|
+
def: 2,
|
|
717
|
+
chr: 150,
|
|
718
|
+
csr: 0,
|
|
719
|
+
evasion: 150,
|
|
720
|
+
hit: 30,
|
|
721
|
+
ghd: 1.6,
|
|
722
|
+
speed: 8,
|
|
723
|
+
giveExp: 20,
|
|
724
|
+
giveMonetary: 8,
|
|
725
|
+
giveProps: [
|
|
726
|
+
{ name: "初级复活卷轴", val: 1, radomVal: 50 }
|
|
727
|
+
],
|
|
728
|
+
fn: [{ name: "恐怖催眠术", prob: 1 }, { name: "恐怖的回忆", prob: 2 }]
|
|
703
729
|
}
|
|
704
730
|
};
|
|
705
731
|
|
|
@@ -833,7 +859,8 @@ var Damage = class {
|
|
|
833
859
|
isRealHarm: realHarm,
|
|
834
860
|
isEvasion: false,
|
|
835
861
|
isCsp: false,
|
|
836
|
-
isBadDef: false
|
|
862
|
+
isBadDef: false,
|
|
863
|
+
reductionVal: 0
|
|
837
864
|
};
|
|
838
865
|
}
|
|
839
866
|
/** 伤害判定前 */
|
|
@@ -895,8 +922,15 @@ var Damage = class {
|
|
|
895
922
|
}
|
|
896
923
|
return this;
|
|
897
924
|
}
|
|
898
|
-
/** 最终结算 */
|
|
925
|
+
/** 最终结算 伤害减免 */
|
|
899
926
|
beforEnd(fn) {
|
|
927
|
+
if (!this.config.isRealHarm) {
|
|
928
|
+
this.config.reductionVal = Math.floor(this.config.agent.goal.gain.reduction * this.config.harm);
|
|
929
|
+
this.config.harm -= this.config.reductionVal;
|
|
930
|
+
if (this.config.harm < 0) {
|
|
931
|
+
this.config.harm = 0;
|
|
932
|
+
}
|
|
933
|
+
}
|
|
900
934
|
fn && fn(this.config);
|
|
901
935
|
return this;
|
|
902
936
|
}
|
|
@@ -1048,6 +1082,19 @@ var BuffFn = {
|
|
|
1048
1082
|
}
|
|
1049
1083
|
});
|
|
1050
1084
|
}, "fn")
|
|
1085
|
+
},
|
|
1086
|
+
"破绽": {
|
|
1087
|
+
name: "破绽",
|
|
1088
|
+
type: "减益" /* 减益 */,
|
|
1089
|
+
info: "增加受到的 30% 伤害",
|
|
1090
|
+
fn: /* @__PURE__ */ __name(function(agent, fn) {
|
|
1091
|
+
fn && fn({
|
|
1092
|
+
type: "减益" /* 减益 */,
|
|
1093
|
+
down: {
|
|
1094
|
+
reduction: 0.3
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1097
|
+
}, "fn")
|
|
1051
1098
|
}
|
|
1052
1099
|
};
|
|
1053
1100
|
function giveBuff(agent, buff) {
|
|
@@ -1072,6 +1119,7 @@ function settlementBuff(agent) {
|
|
|
1072
1119
|
agent.gain.maxMp = 0;
|
|
1073
1120
|
agent.gain.maxMp = 0;
|
|
1074
1121
|
agent.gain.speed = 0;
|
|
1122
|
+
agent.gain.reduction = 0;
|
|
1075
1123
|
agent.gain.dizziness = false;
|
|
1076
1124
|
agent.gain.chaos = false;
|
|
1077
1125
|
const msgList = [];
|
|
@@ -1084,7 +1132,8 @@ function settlementBuff(agent) {
|
|
|
1084
1132
|
ghd: "暴击伤害",
|
|
1085
1133
|
evasion: "闪避值",
|
|
1086
1134
|
hit: "命中值",
|
|
1087
|
-
speed: "速度"
|
|
1135
|
+
speed: "速度",
|
|
1136
|
+
reduction: "伤害减免"
|
|
1088
1137
|
};
|
|
1089
1138
|
Object.keys(agent.buff).forEach((item) => {
|
|
1090
1139
|
const buffInfo = BuffFn[item] || null;
|
|
@@ -1106,7 +1155,7 @@ function settlementBuff(agent) {
|
|
|
1106
1155
|
const upMsg = [];
|
|
1107
1156
|
buffInfo.fn(agent, (val) => {
|
|
1108
1157
|
Object.keys(val.up).forEach((buffName) => {
|
|
1109
|
-
if (agent.gain[buffName]) {
|
|
1158
|
+
if (agent.gain[buffName] !== void 0) {
|
|
1110
1159
|
upMsg.push(
|
|
1111
1160
|
val.up[buffName] > 0 ? gainDict[buffName] + "↑" + val.up[buffName] : gainDict[buffName] + "↓" + Math.abs(val.up[buffName])
|
|
1112
1161
|
);
|
|
@@ -1120,14 +1169,14 @@ function settlementBuff(agent) {
|
|
|
1120
1169
|
const downMsg = [];
|
|
1121
1170
|
buffInfo.fn(agent, (val) => {
|
|
1122
1171
|
Object.keys(val.down).forEach((buffName) => {
|
|
1123
|
-
if (agent.gain[buffName]) {
|
|
1172
|
+
if (agent.gain[buffName] !== void 0) {
|
|
1124
1173
|
downMsg.push(
|
|
1125
1174
|
val.down[buffName] > 0 ? gainDict[buffName] + "↓" + val.down[buffName] : gainDict[buffName] + "↑" + Math.abs(val.down[buffName])
|
|
1126
1175
|
);
|
|
1127
1176
|
agent.gain[buffName] -= val.down[buffName];
|
|
1128
1177
|
}
|
|
1129
1178
|
});
|
|
1130
|
-
msgList.push(`${buffInfo.name}:${
|
|
1179
|
+
msgList.push(`${buffInfo.name}:${downMsg.join("、")}`);
|
|
1131
1180
|
});
|
|
1132
1181
|
break;
|
|
1133
1182
|
case "控制" /* 控制 */:
|
|
@@ -1144,7 +1193,7 @@ function settlementBuff(agent) {
|
|
|
1144
1193
|
--agent.buff[item].timer;
|
|
1145
1194
|
if (agent.buff[item].timer == 0) delete agent.buff[item];
|
|
1146
1195
|
});
|
|
1147
|
-
return msgList.length ? msgList.map((item) => `» ${getLineupName(agent)}:${item}
|
|
1196
|
+
return msgList.length ? msgList.map((item) => `» ${getLineupName(agent)}:${item}`).join("\n") : null;
|
|
1148
1197
|
}
|
|
1149
1198
|
__name(settlementBuff, "settlementBuff");
|
|
1150
1199
|
|
|
@@ -1337,6 +1386,49 @@ var skillFn = {
|
|
|
1337
1386
|
});
|
|
1338
1387
|
return msgList.join("\n");
|
|
1339
1388
|
}, "fn")
|
|
1389
|
+
},
|
|
1390
|
+
"恐怖催眠术": {
|
|
1391
|
+
name: "恐怖催眠术",
|
|
1392
|
+
type: "伤害技" /* 伤害技 */,
|
|
1393
|
+
info: "对单个目标造成(攻击1.5倍+自身命中值10%)伤害,造成伤害有60%概率使其晕眩2回合。",
|
|
1394
|
+
lv: 1,
|
|
1395
|
+
mp: 40,
|
|
1396
|
+
fn: /* @__PURE__ */ __name(function(agent, agentList, fn) {
|
|
1397
|
+
let useBuff = false;
|
|
1398
|
+
const damageData = new Damage(agent).result({
|
|
1399
|
+
before: /* @__PURE__ */ __name((val) => {
|
|
1400
|
+
val.default_harm += Math.floor(val.default_harm * 0.2) + Math.floor((val.agent.self.hit + val.agent.self.gain.hit) * 0.1);
|
|
1401
|
+
}, "before"),
|
|
1402
|
+
beforEnd: /* @__PURE__ */ __name((val) => {
|
|
1403
|
+
if (val.harm && random(0, 10) < 6) {
|
|
1404
|
+
useBuff = true;
|
|
1405
|
+
giveBuff(agent.goal, { name: "晕眩", timer: 3 });
|
|
1406
|
+
}
|
|
1407
|
+
}, "beforEnd")
|
|
1408
|
+
});
|
|
1409
|
+
fn({
|
|
1410
|
+
type: "伤害技" /* 伤害技 */,
|
|
1411
|
+
damage: damageData,
|
|
1412
|
+
isNext: false,
|
|
1413
|
+
target: [agent.goal]
|
|
1414
|
+
});
|
|
1415
|
+
return `${getLineupName(agent.self)} 发动恐怖催眠术!对 ${getLineupName(agent.goal)} 造成 ${damageData.harm} 伤害。${useBuff ? "(晕眩)" : ""}` + moreDamageInfo(damageData);
|
|
1416
|
+
}, "fn")
|
|
1417
|
+
},
|
|
1418
|
+
"恐怖的回忆": {
|
|
1419
|
+
name: "恐怖的回忆",
|
|
1420
|
+
type: "减益技" /* 减益技 */,
|
|
1421
|
+
info: "对单个目标附加破绽状态(额外受到30%伤害),持续2回合",
|
|
1422
|
+
lv: 1,
|
|
1423
|
+
mp: 30,
|
|
1424
|
+
fn: /* @__PURE__ */ __name(function(agent, agentList, fn) {
|
|
1425
|
+
giveBuff(agent.goal, { name: "破绽", timer: 2 });
|
|
1426
|
+
fn({
|
|
1427
|
+
type: "减益技" /* 减益技 */,
|
|
1428
|
+
isNext: false
|
|
1429
|
+
});
|
|
1430
|
+
return `${getLineupName(agent.self)} 发动恐怖的回忆!对 ${getLineupName(agent.goal)} 附加了2回合破绽状态。`;
|
|
1431
|
+
}, "fn")
|
|
1340
1432
|
}
|
|
1341
1433
|
};
|
|
1342
1434
|
|
|
@@ -1813,7 +1905,9 @@ MP:${item.mp}/${item.maxMp + item.gain.maxMp}`);
|
|
|
1813
1905
|
});
|
|
1814
1906
|
}
|
|
1815
1907
|
});
|
|
1816
|
-
|
|
1908
|
+
if (overInfo.win == "self") {
|
|
1909
|
+
await session.send(`小队获得${val}EXP、${monetary}货币!`);
|
|
1910
|
+
}
|
|
1817
1911
|
for (const agent of selfList) {
|
|
1818
1912
|
aynchronize(agent);
|
|
1819
1913
|
if (overInfo.win == "self") {
|
|
@@ -1885,7 +1979,8 @@ function initBattleAttribute(data) {
|
|
|
1885
1979
|
hit: 0,
|
|
1886
1980
|
speed: 0,
|
|
1887
1981
|
chaos: false,
|
|
1888
|
-
dizziness: false
|
|
1982
|
+
dizziness: false,
|
|
1983
|
+
reduction: 0
|
|
1889
1984
|
},
|
|
1890
1985
|
buff: {},
|
|
1891
1986
|
fn: [],
|
|
@@ -1923,7 +2018,8 @@ function initBattleAttribute(data) {
|
|
|
1923
2018
|
hit: 0,
|
|
1924
2019
|
speed: 0,
|
|
1925
2020
|
chaos: false,
|
|
1926
|
-
dizziness: false
|
|
2021
|
+
dizziness: false,
|
|
2022
|
+
reduction: 0
|
|
1927
2023
|
},
|
|
1928
2024
|
buff: {},
|
|
1929
2025
|
fn: monsterData2.fn ? JSON.parse(JSON.stringify(monsterData2.fn)) : [],
|
package/lib/test.d.ts
CHANGED