koishi-plugin-textgame-war 0.65.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/LICENSE +661 -0
- package/lib/index.cjs +11762 -0
- package/lib/index.d.ts +301 -0
- package/lib/index.d.ts.map +1 -0
- package/package.json +89 -0
- package/readme.md +241 -0
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { Binary, Dict } from "cosmokit";
|
|
2
|
+
import { Context } from "koishi";
|
|
3
|
+
import "koishi-plugin-cron-fix";
|
|
4
|
+
import "koishi-plugin-am-i-alt";
|
|
5
|
+
//#endregion
|
|
6
|
+
//#region ../../node_modules/@standard-schema/spec/dist/index.d.ts
|
|
7
|
+
/** The Standard Typed interface. This is a base type extended by other specs. */
|
|
8
|
+
interface StandardTypedV1<Input = unknown, Output = Input> {
|
|
9
|
+
/** The Standard properties. */
|
|
10
|
+
readonly "~standard": StandardTypedV1.Props<Input, Output>;
|
|
11
|
+
}
|
|
12
|
+
declare namespace StandardTypedV1 {
|
|
13
|
+
/** The Standard Typed properties interface. */
|
|
14
|
+
interface Props<Input = unknown, Output = Input> {
|
|
15
|
+
/** The version number of the standard. */
|
|
16
|
+
readonly version: 1;
|
|
17
|
+
/** The vendor name of the schema library. */
|
|
18
|
+
readonly vendor: string;
|
|
19
|
+
/** Inferred types associated with the schema. */
|
|
20
|
+
readonly types?: Types<Input, Output> | undefined;
|
|
21
|
+
}
|
|
22
|
+
/** The Standard Typed types interface. */
|
|
23
|
+
interface Types<Input = unknown, Output = Input> {
|
|
24
|
+
/** The input type of the schema. */
|
|
25
|
+
readonly input: Input;
|
|
26
|
+
/** The output type of the schema. */
|
|
27
|
+
readonly output: Output;
|
|
28
|
+
}
|
|
29
|
+
/** Infers the input type of a Standard Typed. */
|
|
30
|
+
type InferInput<Schema extends StandardTypedV1> = NonNullable<Schema["~standard"]["types"]>["input"];
|
|
31
|
+
/** Infers the output type of a Standard Typed. */
|
|
32
|
+
type InferOutput<Schema extends StandardTypedV1> = NonNullable<Schema["~standard"]["types"]>["output"];
|
|
33
|
+
}
|
|
34
|
+
/** The Standard Schema interface. */
|
|
35
|
+
interface StandardSchemaV1<Input = unknown, Output = Input> {
|
|
36
|
+
/** The Standard Schema properties. */
|
|
37
|
+
readonly "~standard": StandardSchemaV1.Props<Input, Output>;
|
|
38
|
+
}
|
|
39
|
+
declare namespace StandardSchemaV1 {
|
|
40
|
+
/** The Standard Schema properties interface. */
|
|
41
|
+
interface Props<Input = unknown, Output = Input> extends StandardTypedV1.Props<Input, Output> {
|
|
42
|
+
/** Validates unknown input values. */
|
|
43
|
+
readonly validate: (value: unknown, options?: StandardSchemaV1.Options | undefined) => Result<Output> | Promise<Result<Output>>;
|
|
44
|
+
}
|
|
45
|
+
/** The result interface of the validate function. */
|
|
46
|
+
type Result<Output> = SuccessResult<Output> | FailureResult;
|
|
47
|
+
/** The result interface if validation succeeds. */
|
|
48
|
+
interface SuccessResult<Output> {
|
|
49
|
+
/** The typed output value. */
|
|
50
|
+
readonly value: Output;
|
|
51
|
+
/** A falsy value for `issues` indicates success. */
|
|
52
|
+
readonly issues?: undefined;
|
|
53
|
+
}
|
|
54
|
+
interface Options {
|
|
55
|
+
/** Explicit support for additional vendor-specific parameters, if needed. */
|
|
56
|
+
readonly libraryOptions?: Record<string, unknown> | undefined;
|
|
57
|
+
}
|
|
58
|
+
/** The result interface if validation fails. */
|
|
59
|
+
interface FailureResult {
|
|
60
|
+
/** The issues of failed validation. */
|
|
61
|
+
readonly issues: ReadonlyArray<Issue>;
|
|
62
|
+
}
|
|
63
|
+
/** The issue interface of the failure output. */
|
|
64
|
+
interface Issue {
|
|
65
|
+
/** The error message of the issue. */
|
|
66
|
+
readonly message: string;
|
|
67
|
+
/** The path of the issue, if any. */
|
|
68
|
+
readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
|
|
69
|
+
}
|
|
70
|
+
/** The path segment interface of the issue. */
|
|
71
|
+
interface PathSegment {
|
|
72
|
+
/** The key representing a path segment. */
|
|
73
|
+
readonly key: PropertyKey;
|
|
74
|
+
}
|
|
75
|
+
/** The Standard types interface. */
|
|
76
|
+
interface Types<Input = unknown, Output = Input> extends StandardTypedV1.Types<Input, Output> {}
|
|
77
|
+
/** Infers the input type of a Standard. */
|
|
78
|
+
type InferInput<Schema extends StandardTypedV1> = StandardTypedV1.InferInput<Schema>;
|
|
79
|
+
/** Infers the output type of a Standard. */
|
|
80
|
+
type InferOutput<Schema extends StandardTypedV1> = StandardTypedV1.InferOutput<Schema>;
|
|
81
|
+
}
|
|
82
|
+
declare namespace index_d_exports {
|
|
83
|
+
export { Schema as default };
|
|
84
|
+
}
|
|
85
|
+
declare const kSchema: unique symbol;
|
|
86
|
+
declare global {
|
|
87
|
+
namespace Schemastery {
|
|
88
|
+
type From<X> = X extends string | number | boolean ? Schema<X> : X extends Schema ? X : X extends typeof String ? Schema<string> : X extends typeof Number ? Schema<number> : X extends typeof Boolean ? Schema<boolean> : X extends typeof Function ? Schema<Function, (...args: any[]) => any> : X extends Constructor<infer S> ? Schema<S> : never;
|
|
89
|
+
type TypeS1<X> = X extends Schema<infer S, unknown> ? S : never;
|
|
90
|
+
type Inverse<X> = X extends Schema<any, infer Y> ? (arg: Y) => void : never;
|
|
91
|
+
type TypeS<X> = TypeS1<From<X>>;
|
|
92
|
+
type TypeT<X> = ReturnType<From<X>>;
|
|
93
|
+
type Resolve = (data: any, schema: Schema, options: Options, strict?: boolean) => [any, any?];
|
|
94
|
+
type IntersectS<X> = From<X> extends Schema<infer S, unknown> ? S : never;
|
|
95
|
+
type IntersectT<X> = Inverse<From<X>> extends ((arg: infer T) => void) ? T : never;
|
|
96
|
+
type TupleS<X extends readonly any[]> = X extends readonly [infer L, ...infer R] ? [TypeS<L>?, ...TupleS<R>] : any[];
|
|
97
|
+
type TupleT<X extends readonly any[]> = X extends readonly [infer L, ...infer R] ? [TypeT<L>?, ...TupleT<R>] : any[];
|
|
98
|
+
type ObjectS<X extends Dict> = { [K in keyof X]?: TypeS<X[K]> | null; } & Dict;
|
|
99
|
+
type ObjectT<X extends Dict> = { [K in keyof X]: TypeT<X[K]>; } & Dict;
|
|
100
|
+
type Constructor<T = any> = new (...args: any[]) => T;
|
|
101
|
+
interface Static {
|
|
102
|
+
<T = any>(options: Partial<Schema<T>>): Schema<T>;
|
|
103
|
+
new <T = any>(options: Partial<Schema<T>>): Schema<T>;
|
|
104
|
+
prototype: Schema;
|
|
105
|
+
resolve: Resolve;
|
|
106
|
+
from<X = any>(source?: X): From<X>;
|
|
107
|
+
extend(type: string, resolve: Resolve): void;
|
|
108
|
+
any<T = any>(): Schema<T>;
|
|
109
|
+
never(): Schema<never>;
|
|
110
|
+
const<const T>(value: T): Schema<T>;
|
|
111
|
+
string(): Schema<string>;
|
|
112
|
+
number(): Schema<number>;
|
|
113
|
+
natural(): Schema<number>;
|
|
114
|
+
percent(): Schema<number>;
|
|
115
|
+
boolean(): Schema<boolean>;
|
|
116
|
+
date(): Schema<string | Date, Date>;
|
|
117
|
+
regExp(flag?: string): Schema<string | RegExp, RegExp>;
|
|
118
|
+
arrayBuffer(): Schema<Binary.Source, ArrayBufferLike>;
|
|
119
|
+
arrayBuffer(encoding: 'hex' | 'base64'): Schema<Binary.Source | string, ArrayBufferLike>;
|
|
120
|
+
bitset<K extends string>(bits: Partial<Record<K, number>>): Schema<number | readonly K[], number>;
|
|
121
|
+
function(): Schema<Function, (...args: any[]) => any>;
|
|
122
|
+
is(constructor: string): Schema;
|
|
123
|
+
is<T>(constructor: Constructor<T>): Schema<T>;
|
|
124
|
+
array<X>(inner: X): Schema<TypeS<X>[], TypeT<X>[]>;
|
|
125
|
+
dict<X, Y extends Schema<any, string> = Schema<string>>(inner: X, sKey?: Y): Schema<Dict<TypeS<X>, TypeS<Y>>, Dict<TypeT<X>, TypeT<Y>>>;
|
|
126
|
+
tuple<const X extends readonly any[]>(list: X): Schema<TupleS<X>, TupleT<X>>;
|
|
127
|
+
object<X extends Dict>(dict: X): Schema<ObjectS<X>, ObjectT<X>>;
|
|
128
|
+
union<const X>(list: readonly X[]): Schema<TypeS<X>, TypeT<X>>;
|
|
129
|
+
intersect<const X>(list: readonly X[]): Schema<IntersectS<X>, IntersectT<X>>;
|
|
130
|
+
transform<X, T>(inner: X, callback: (value: TypeS<X>, options: Schemastery.Options) => T, preserve?: boolean): Schema<TypeS<X>, T>;
|
|
131
|
+
lazy<X extends Schema>(callback: () => X): X;
|
|
132
|
+
ValidationError: typeof ValidationError;
|
|
133
|
+
}
|
|
134
|
+
interface Options {
|
|
135
|
+
autofix?: boolean;
|
|
136
|
+
ignore?(data: any, schema: Schema): boolean;
|
|
137
|
+
path?: (keyof any)[];
|
|
138
|
+
}
|
|
139
|
+
interface Meta<T = any> {
|
|
140
|
+
default?: T extends {} ? Partial<T> : T;
|
|
141
|
+
required?: boolean;
|
|
142
|
+
disabled?: boolean;
|
|
143
|
+
collapse?: boolean;
|
|
144
|
+
badges?: {
|
|
145
|
+
text: string;
|
|
146
|
+
type: string;
|
|
147
|
+
}[];
|
|
148
|
+
hidden?: boolean;
|
|
149
|
+
loose?: boolean;
|
|
150
|
+
role?: string;
|
|
151
|
+
extra?: any;
|
|
152
|
+
link?: string;
|
|
153
|
+
description?: string | Dict<string>;
|
|
154
|
+
comment?: string;
|
|
155
|
+
pattern?: {
|
|
156
|
+
source: string;
|
|
157
|
+
flags?: string;
|
|
158
|
+
};
|
|
159
|
+
max?: number;
|
|
160
|
+
min?: number;
|
|
161
|
+
step?: number;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
interface Schemastery<S = any, T = S> {
|
|
165
|
+
(data?: S | null, options?: Schemastery.Options): T;
|
|
166
|
+
new (data?: S | null, options?: Schemastery.Options): T;
|
|
167
|
+
[kSchema]: true;
|
|
168
|
+
uid: number;
|
|
169
|
+
meta: Schemastery.Meta<T>;
|
|
170
|
+
type: string;
|
|
171
|
+
sKey?: Schema;
|
|
172
|
+
inner?: Schema;
|
|
173
|
+
list?: Schema[];
|
|
174
|
+
dict?: Dict<Schema>;
|
|
175
|
+
bits?: Dict<number>;
|
|
176
|
+
callback?: Function;
|
|
177
|
+
constructor?: string | Function;
|
|
178
|
+
builder?: Function;
|
|
179
|
+
value?: T;
|
|
180
|
+
refs?: Dict<Schema>;
|
|
181
|
+
preserve?: boolean;
|
|
182
|
+
'~standard': StandardSchemaV1.Props;
|
|
183
|
+
toString(inline?: boolean): string;
|
|
184
|
+
toJSON(): Schema<S, T>;
|
|
185
|
+
required(value?: boolean): Schema<S, T>;
|
|
186
|
+
hidden(value?: boolean): Schema<S, T>;
|
|
187
|
+
loose(value?: boolean): Schema<S, T>;
|
|
188
|
+
role(text: string, extra?: any): Schema<S, T>;
|
|
189
|
+
link(link: string): Schema<S, T>;
|
|
190
|
+
default(value: T): Schema<S, T>;
|
|
191
|
+
comment(text: string): Schema<S, T>;
|
|
192
|
+
description(text: string): Schema<S, T>;
|
|
193
|
+
disabled(value?: boolean): Schema<S, T>;
|
|
194
|
+
collapse(value?: boolean): Schema<S, T>;
|
|
195
|
+
deprecated(): Schema<S, T>;
|
|
196
|
+
experimental(): Schema<S, T>;
|
|
197
|
+
pattern(regexp: RegExp): Schema<S, T>;
|
|
198
|
+
max(value: number): Schema<S, T>;
|
|
199
|
+
min(value: number): Schema<S, T>;
|
|
200
|
+
step(value: number): Schema<S, T>;
|
|
201
|
+
set(key: string, value: Schema): Schema<S, T>;
|
|
202
|
+
push(value: Schema): Schema<S, T>;
|
|
203
|
+
simplify(value?: any): any;
|
|
204
|
+
i18n(messages: Dict): Schema<S, T>;
|
|
205
|
+
extra<K extends keyof Schemastery.Meta>(key: K, value: Schemastery.Meta[K]): Schema<S, T>;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
declare class ValidationError extends TypeError {
|
|
209
|
+
options: Schemastery.Options;
|
|
210
|
+
name: string;
|
|
211
|
+
constructor(message: string, options: Schemastery.Options);
|
|
212
|
+
static is(error: any): error is ValidationError;
|
|
213
|
+
}
|
|
214
|
+
type Schema<S = any, T = S> = Schemastery<S, T>;
|
|
215
|
+
declare const Schema: Schemastery.Static;
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region src/contexts/coalition/domain/types/联军权限类型.d.ts
|
|
218
|
+
type CoalitionPermissionLevel = 1 | 2 | 3 | 4;
|
|
219
|
+
//#endregion
|
|
220
|
+
//#region src/contexts/region/domain/types/数据类型.d.ts
|
|
221
|
+
declare const TerrainType: {
|
|
222
|
+
readonly 浅海: "浅海";
|
|
223
|
+
readonly 中海: "中海";
|
|
224
|
+
readonly 深海: "深海";
|
|
225
|
+
readonly 超深海: "超深海";
|
|
226
|
+
readonly 平原: "平原";
|
|
227
|
+
readonly 高原: "高原";
|
|
228
|
+
readonly 浅丘: "浅丘";
|
|
229
|
+
readonly 深丘: "深丘";
|
|
230
|
+
readonly 低山: "低山";
|
|
231
|
+
readonly 中山: "中山";
|
|
232
|
+
readonly 高山: "高山";
|
|
233
|
+
};
|
|
234
|
+
type TerrainType = (typeof TerrainType)[keyof typeof TerrainType];
|
|
235
|
+
//#endregion
|
|
236
|
+
//#region src/config/types.d.ts
|
|
237
|
+
interface 联军默认权限配置 {
|
|
238
|
+
成员列表: CoalitionPermissionLevel;
|
|
239
|
+
地区列表: CoalitionPermissionLevel;
|
|
240
|
+
贡献排行: CoalitionPermissionLevel;
|
|
241
|
+
邀请加入联军: CoalitionPermissionLevel;
|
|
242
|
+
设置联军权限: CoalitionPermissionLevel;
|
|
243
|
+
移出联军: CoalitionPermissionLevel;
|
|
244
|
+
我的联军权限: CoalitionPermissionLevel;
|
|
245
|
+
查看地区军事: CoalitionPermissionLevel;
|
|
246
|
+
查看地区生物实验室: CoalitionPermissionLevel;
|
|
247
|
+
查看地区核反应堆: CoalitionPermissionLevel;
|
|
248
|
+
查看地区离心机组: CoalitionPermissionLevel;
|
|
249
|
+
设置地区驻扎权限: CoalitionPermissionLevel;
|
|
250
|
+
分配生活资料: CoalitionPermissionLevel;
|
|
251
|
+
分配历史记录: CoalitionPermissionLevel;
|
|
252
|
+
设置税率: CoalitionPermissionLevel;
|
|
253
|
+
设置扩军计划: CoalitionPermissionLevel;
|
|
254
|
+
转入联军: CoalitionPermissionLevel;
|
|
255
|
+
分配军队: CoalitionPermissionLevel;
|
|
256
|
+
}
|
|
257
|
+
interface Sqids单项配置 {
|
|
258
|
+
alphabet: string;
|
|
259
|
+
minLength: number;
|
|
260
|
+
blocklist: string[];
|
|
261
|
+
}
|
|
262
|
+
interface Sqids配置 {
|
|
263
|
+
register: Sqids单项配置;
|
|
264
|
+
coalition: Sqids单项配置;
|
|
265
|
+
}
|
|
266
|
+
interface 信号塔频道配置 {
|
|
267
|
+
onebot: string[];
|
|
268
|
+
discord: string[];
|
|
269
|
+
telegram: string[];
|
|
270
|
+
}
|
|
271
|
+
interface 信号塔配置 {
|
|
272
|
+
新闻群: 信号塔频道配置;
|
|
273
|
+
后台群: 信号塔频道配置;
|
|
274
|
+
}
|
|
275
|
+
interface 土木工程配置 {
|
|
276
|
+
地形惩罚系数: Record<TerrainType, number>;
|
|
277
|
+
}
|
|
278
|
+
interface 地理配置 {
|
|
279
|
+
列车炮最大射程公里: number;
|
|
280
|
+
默认行军速度公里每天: number;
|
|
281
|
+
默认空运速度公里每天: number;
|
|
282
|
+
}
|
|
283
|
+
interface PluginConfig {
|
|
284
|
+
coalitionPermissionDefault: 联军默认权限配置;
|
|
285
|
+
sqids: Sqids配置;
|
|
286
|
+
信号塔: 信号塔配置;
|
|
287
|
+
土木工程: 土木工程配置;
|
|
288
|
+
地理: 地理配置;
|
|
289
|
+
}
|
|
290
|
+
//#endregion
|
|
291
|
+
//#region src/index.d.ts
|
|
292
|
+
declare const name = "malie-textgame";
|
|
293
|
+
declare const inject: {
|
|
294
|
+
required: string[];
|
|
295
|
+
};
|
|
296
|
+
type Config = PluginConfig;
|
|
297
|
+
declare const Config: index_d_exports<PluginConfig>;
|
|
298
|
+
declare function apply(ctx: Context, config: Config): void;
|
|
299
|
+
//#endregion
|
|
300
|
+
export { Config, apply, inject, name };
|
|
301
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/schemastery/lib/index.d.ts","../src/contexts/coalition/domain/types/联军权限类型.ts","../src/contexts/region/domain/types/数据类型.ts","../src/config/types.ts","../src/index.ts"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "koishi-plugin-textgame-war",
|
|
3
|
+
"version": "0.65.12",
|
|
4
|
+
"imports": {
|
|
5
|
+
"#/*": [
|
|
6
|
+
"./src/*.ts",
|
|
7
|
+
"./src/*/index.ts"
|
|
8
|
+
],
|
|
9
|
+
"#ctx/*": [
|
|
10
|
+
"./src/contexts/*.ts",
|
|
11
|
+
"./src/contexts/*/index.ts"
|
|
12
|
+
],
|
|
13
|
+
"#shared/*": [
|
|
14
|
+
"./src/shared/*.ts",
|
|
15
|
+
"./src/shared/*/index.ts"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"contributors": [
|
|
19
|
+
"Xiao-xiaochen <200345727+Xiao-xiaochen@users.noreply.github.com>",
|
|
20
|
+
"Oppenheymu <Oppenheymu@gmail.com>"
|
|
21
|
+
],
|
|
22
|
+
"main": "lib/index.cjs",
|
|
23
|
+
"types": "lib/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./lib/index.d.ts",
|
|
27
|
+
"default": "./lib/index.cjs"
|
|
28
|
+
},
|
|
29
|
+
"./package.json": "./package.json"
|
|
30
|
+
},
|
|
31
|
+
"type": "module",
|
|
32
|
+
"workspaces": [
|
|
33
|
+
"."
|
|
34
|
+
],
|
|
35
|
+
"files": [
|
|
36
|
+
"lib",
|
|
37
|
+
"dist"
|
|
38
|
+
],
|
|
39
|
+
"homepage": "https://github.com/Oppenheymu/koishi-plugin-textgame-war",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "git+https://github.com/Oppenheymu/koishi-plugin-textgame-war.git"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"chatbot",
|
|
46
|
+
"koishi",
|
|
47
|
+
"plugin"
|
|
48
|
+
],
|
|
49
|
+
"koishi": {
|
|
50
|
+
"description": {
|
|
51
|
+
"zh": "Koishi史上最强文游(未完成品)"
|
|
52
|
+
},
|
|
53
|
+
"service": {
|
|
54
|
+
"required": [
|
|
55
|
+
"database",
|
|
56
|
+
"cron",
|
|
57
|
+
"amIAlt"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"scripts": {
|
|
62
|
+
"build": "tsdown",
|
|
63
|
+
"ts7": "node ../../node_modules/@typescript/native/bin/tsc",
|
|
64
|
+
"typecheck": "yarn ts7 --noEmit",
|
|
65
|
+
"lint": "biome lint .",
|
|
66
|
+
"format": "biome format --write .",
|
|
67
|
+
"check": "biome check . && yarn typecheck",
|
|
68
|
+
"fix": "biome check --write . && yarn typecheck",
|
|
69
|
+
"changeset": "changeset",
|
|
70
|
+
"release": "changeset version && yarn build && npm publish --access public"
|
|
71
|
+
},
|
|
72
|
+
"peerDependencies": {
|
|
73
|
+
"koishi": "^4.17.4",
|
|
74
|
+
"koishi-plugin-am-i-alt": "*",
|
|
75
|
+
"koishi-plugin-cron-fix": "*"
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"canvas": "^3.2.3",
|
|
79
|
+
"dayjs": "^1.11.13",
|
|
80
|
+
"sqids": "^0.3.0"
|
|
81
|
+
},
|
|
82
|
+
"devDependencies": {
|
|
83
|
+
"@biomejs/biome": "2.5.9",
|
|
84
|
+
"@changesets/cli": "^2.31.1",
|
|
85
|
+
"@types/node": "^26.1.2",
|
|
86
|
+
"@typescript/native": "npm:typescript@7.0.2",
|
|
87
|
+
"tsdown": "^0.22.14"
|
|
88
|
+
}
|
|
89
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# koishi-plugin-textgame-war
|
|
2
|
+
|
|
3
|
+
**征战文游** —— Koishi 平台大型多人在线文本策略战争游戏。
|
|
4
|
+
|
|
5
|
+
玩家在聊天机器人(OneBot / Discord / Telegram)中通过文本指令管理自己的工业帝国:发展生产、攀爬科技、制造军备、建设地区、结成联军、争夺领土。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install koishi-plugin-textgame-war
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 前置依赖
|
|
16
|
+
|
|
17
|
+
本插件需要以下服务支持:
|
|
18
|
+
|
|
19
|
+
| 依赖 | 说明 |
|
|
20
|
+
|------|------|
|
|
21
|
+
| `database` | Koishi 数据库服务,存储所有游戏数据 |
|
|
22
|
+
| `cron` | 定时任务服务,驱动签到重置、生产恢复等 |
|
|
23
|
+
| `amIAlt`(`koishi-plugin-infra-am-i-alt`) | 身份验证插件,用于跨平台账号关联 |
|
|
24
|
+
|
|
25
|
+
请确保在 Koishi 配置中启用以上服务。
|
|
26
|
+
|
|
27
|
+
## 游戏玩法
|
|
28
|
+
|
|
29
|
+
### 入门流程
|
|
30
|
+
|
|
31
|
+
1. **注册** — 创建角色,随机获得初始资源(工人 4000-16000、生活资料 8000-90000、石油 50-800、钢铁 100-500)
|
|
32
|
+
2. **签到** — 每日签到获取随机补给
|
|
33
|
+
3. **生产** — 消耗工人与生产技术产出现金(每小时恢复 1 次生产次数,上限 8 次)
|
|
34
|
+
4. **开采资源** — 开采铁矿石、石油、铝土矿;土法炼钢
|
|
35
|
+
5. **提升科技** — 投入资源攀爬科技树,解锁高级建造与军备
|
|
36
|
+
6. **军事生产** — 制造陆军装备、空军飞机、弹药
|
|
37
|
+
7. **驻扎地区** — 驻扎后参与地区建设
|
|
38
|
+
8. **地区建设** — 修建基础设施、公路、机场、港口、居民区、仓库(受地形惩罚)
|
|
39
|
+
9. **加入联军** — 加入或创建联军,共享领土,协同发展
|
|
40
|
+
10. **争夺领土** — 控制地图地区,扩展势力范围
|
|
41
|
+
|
|
42
|
+
### 核心系统
|
|
43
|
+
|
|
44
|
+
#### 工业生产
|
|
45
|
+
|
|
46
|
+
- `生产` — 消耗工人产出金钱(扣除工资和联军税后入账)
|
|
47
|
+
- `扩建厂房` — 扩充工厂容量
|
|
48
|
+
- `改进生产技术到 <等级>` — 升级生产技术等级
|
|
49
|
+
|
|
50
|
+
#### 科技系统
|
|
51
|
+
|
|
52
|
+
- `提升科技` — 投入资源提升科技等级
|
|
53
|
+
- `提升科技到 <等级>` — 指定目标等级
|
|
54
|
+
- `使用科技蓝图` — 使用蓝图加速研发
|
|
55
|
+
|
|
56
|
+
#### 军事系统
|
|
57
|
+
|
|
58
|
+
可制造多种武器装备:
|
|
59
|
+
|
|
60
|
+
| 类型 | 装备 |
|
|
61
|
+
|------|------|
|
|
62
|
+
| 陆军基础(2 种) | 步兵装备、卡车 |
|
|
63
|
+
| 装甲单位(5 种) | 两栖坦克、轻型坦克、中型坦克、重型坦克、现代坦克 |
|
|
64
|
+
| 装甲运输(2 种) | 装甲运兵车、两栖装甲运兵车 |
|
|
65
|
+
| 自行支援(2 种) | 坦克歼击车、自行防空车 |
|
|
66
|
+
| 炮兵(4 种) | 野战炮、火炮、火箭炮、列车炮 |
|
|
67
|
+
| 空军(8 种) | 侦察机、战斗机、预警机、战术轰炸机、战略轰炸机、隐形轰炸机、大型运输机、小型运输机 |
|
|
68
|
+
| 弹药(4 种) | 火箭弹、防空弹药、轻型航弹、重型航弹 |
|
|
69
|
+
|
|
70
|
+
相关指令:
|
|
71
|
+
- `军事生产 <装备名> <数量>` — 制造武器装备
|
|
72
|
+
- `我的陆军装备` / `我的空军装备` / `我的弹药` — 查看库存
|
|
73
|
+
|
|
74
|
+
#### 地堡系统
|
|
75
|
+
|
|
76
|
+
修建地下设施存储装备和弹药,保护战略物资:
|
|
77
|
+
- `修建地堡` — 建造地下工厂 / 机库 / 弹药库
|
|
78
|
+
- `转移地堡物资` — 管理地下存储
|
|
79
|
+
|
|
80
|
+
#### 地区系统
|
|
81
|
+
|
|
82
|
+
- 11 种地形:浅海、中海、深海、超深海、平原、高原、浅丘、深丘、低山、中山、高山
|
|
83
|
+
- 6 种建筑:基础设施、公路、机场、港口、居民区、仓库
|
|
84
|
+
- 3 种特殊设施:生物实验室(制取生物武器)、高速离心级联(浓缩铀)、核反应堆(制取钚)
|
|
85
|
+
- 地区工业:炼钢厂、电解铝厂
|
|
86
|
+
|
|
87
|
+
#### 联军系统
|
|
88
|
+
|
|
89
|
+
- 3 种政体:民主制、威权制、极权制
|
|
90
|
+
- 4 级权限体系(1=普通成员, 4=元首),民主制/威权制下每小时动态调整
|
|
91
|
+
- 联军税收:0-100% 税率
|
|
92
|
+
- 扩军计划、生活资料分配、军队分配
|
|
93
|
+
- 贡献排行
|
|
94
|
+
|
|
95
|
+
#### 地图可视化
|
|
96
|
+
|
|
97
|
+
- `查看世界地图` — 生成 PNG 世界地图,按联军颜色显示领土控制
|
|
98
|
+
- `查看局部地图` — 以指定区域为中心的 10 格半径地图
|
|
99
|
+
- 全图每 10 分钟自动刷新缓存
|
|
100
|
+
|
|
101
|
+
#### 自动化服务
|
|
102
|
+
|
|
103
|
+
| 服务 | 频率 | 功能 |
|
|
104
|
+
|------|------|------|
|
|
105
|
+
| 签到重置 | 每日 | 重置签到状态、工人招募限额、联军扩军累计 |
|
|
106
|
+
| 生产恢复 | 每小时 | 恢复生产次数(上限 8 次) |
|
|
107
|
+
| 地区刷新 | 每小时 | 刷新地区工业设施空闲状态 |
|
|
108
|
+
| GDP 统计 | 每日 | 生成全球 GDP、平均工资、科技排行 |
|
|
109
|
+
| 联军统计 | 每日 | 联军资本增量 TOP10 排行榜 |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 完整指令参考
|
|
114
|
+
|
|
115
|
+
### 基础指令
|
|
116
|
+
|
|
117
|
+
| 指令 | 说明 |
|
|
118
|
+
|------|------|
|
|
119
|
+
| `注册` / `首次阅读报告` | 创建新角色,获得初始资源 |
|
|
120
|
+
| `签到` / `阅读报告` | 每日签到获取随机补给 |
|
|
121
|
+
| `我的资料` | 查看基础信息 |
|
|
122
|
+
| `我的全部资料` | 查看完整信息(GDP 贡献、地区所有权等) |
|
|
123
|
+
| `我的科技` | 查看科技等级 |
|
|
124
|
+
| `我的工人` | 查看工人数量与状态 |
|
|
125
|
+
| `我的生产次数` | 查看剩余生产次数 |
|
|
126
|
+
| `查看地图` / `查看世界地图` | 查看世界地图 |
|
|
127
|
+
| `查看局部地图 <地区编号>` | 查看局部地图 |
|
|
128
|
+
| `版本日志` | 查看游戏更新日志 |
|
|
129
|
+
|
|
130
|
+
### 工业生产
|
|
131
|
+
|
|
132
|
+
| 指令 | 说明 |
|
|
133
|
+
|------|------|
|
|
134
|
+
| `生产` | 消耗工人生产金钱 |
|
|
135
|
+
| `扩建厂房` | 扩充工厂容量 |
|
|
136
|
+
| `改进生产技术到 <等级>` | 升级生产技术 |
|
|
137
|
+
| `开采石油` | 采集石油资源 |
|
|
138
|
+
| `开采铁矿石` | 采集铁矿石 |
|
|
139
|
+
| `开采铝土矿` | 采集铝土矿 |
|
|
140
|
+
| `土法炼钢` | 将铁矿石炼成钢铁 |
|
|
141
|
+
|
|
142
|
+
### 科技
|
|
143
|
+
|
|
144
|
+
| 指令 | 说明 |
|
|
145
|
+
|------|------|
|
|
146
|
+
| `提升科技` | 提升 1 级科技 |
|
|
147
|
+
| `提升科技到 <等级>` | 提升到指定科技等级 |
|
|
148
|
+
| `使用科技蓝图` | 消耗蓝图提升科技 |
|
|
149
|
+
|
|
150
|
+
### 工人
|
|
151
|
+
|
|
152
|
+
| 指令 | 说明 |
|
|
153
|
+
|------|------|
|
|
154
|
+
| `招募工人` | 招募新工人 |
|
|
155
|
+
| `召回工人` | 召回闲置工人 |
|
|
156
|
+
| `工人休假` | 让工人休假 |
|
|
157
|
+
| `设置工资 <金额>` | 设定工人工资 |
|
|
158
|
+
| `查看全球劳动力市场` | 查看全球工人市场价格 |
|
|
159
|
+
|
|
160
|
+
### 军事
|
|
161
|
+
|
|
162
|
+
| 指令 | 说明 |
|
|
163
|
+
|------|------|
|
|
164
|
+
| `军事生产 <装备> <数量>` | 制造武器装备 |
|
|
165
|
+
| `我的陆军装备` | 查看陆军装备库存 |
|
|
166
|
+
| `我的空军装备` | 查看空军装备库存 |
|
|
167
|
+
| `我的弹药` | 查看弹药库存 |
|
|
168
|
+
| `修建地堡` | 修建地下设施 |
|
|
169
|
+
| `转移地堡物资` | 管理地下物资 |
|
|
170
|
+
|
|
171
|
+
### 地区
|
|
172
|
+
|
|
173
|
+
| 指令 | 说明 |
|
|
174
|
+
|------|------|
|
|
175
|
+
| `驻扎 <地区编号>` | 驻扎到指定地区 |
|
|
176
|
+
| `我的驻扎` | 查看驻扎状态 |
|
|
177
|
+
| `修建 <建筑类型>` / `建造 <建筑类型>` | 修建地区建筑 |
|
|
178
|
+
| `地区炼钢` / `地区电解铝` | 使用地区工业设施 |
|
|
179
|
+
| `查看地区 <编号>` | 查看地区详情 |
|
|
180
|
+
| `查看地区地形 <编号>` | 查看地形地貌 |
|
|
181
|
+
| `查看地区工业 <编号>` | 查看看工业设施 |
|
|
182
|
+
| `查看附近地区` | 查看周边地区 |
|
|
183
|
+
| `查看距离 <编号> <编号>` | 计算两地距离 |
|
|
184
|
+
| `设置总督 <@玩家>` / `设置司令 <@玩家>` | 管理地区权限 |
|
|
185
|
+
|
|
186
|
+
### 联军
|
|
187
|
+
|
|
188
|
+
| 指令 | 说明 |
|
|
189
|
+
|------|------|
|
|
190
|
+
| 创建联军相关 | 创建新联军 |
|
|
191
|
+
| 加入联军相关 | 加入已有联军 |
|
|
192
|
+
| 退出联军相关 | 退出当前联军 |
|
|
193
|
+
| 解散联军相关 | 解散联军 |
|
|
194
|
+
| 联军成员列表 | 查看成员 |
|
|
195
|
+
| 联军地区列表 | 查看控制的地区 |
|
|
196
|
+
| 联军贡献排行 | 查看贡献排名 |
|
|
197
|
+
| `设置税率 <税率>` | 设定联军税率 |
|
|
198
|
+
| 设置扩军计划 | 设定扩军目标 |
|
|
199
|
+
| 分配生活资料 | 向成员分配生活资料 |
|
|
200
|
+
| 分配军队 | 向成员分配武器装备 |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 地图生成
|
|
205
|
+
|
|
206
|
+
本插件使用 `node-canvas` 库在服务端渲染 PNG 地图:
|
|
207
|
+
|
|
208
|
+
- 不同地形和地貌以颜色区分
|
|
209
|
+
- 联军控制区域叠加半透明势力色
|
|
210
|
+
- 全量地图和局部地图均支持
|
|
211
|
+
- 全图每 10 分钟自动生成并缓存,局部地图缓存 30 分钟
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 常见问题
|
|
216
|
+
|
|
217
|
+
### 提示缺少 `database` 服务
|
|
218
|
+
|
|
219
|
+
需要安装并启用 Koishi 数据库插件(如 `koishi-plugin-database-sqlite`)。
|
|
220
|
+
|
|
221
|
+
### 提示缺少 `cron` 服务
|
|
222
|
+
|
|
223
|
+
需要安装并启用 `koishi-plugin-cron-fix`。
|
|
224
|
+
|
|
225
|
+
### 提示缺少 `amIAlt` 服务
|
|
226
|
+
|
|
227
|
+
需要安装并启用 `koishi-plugin-infra-am-i-alt`。
|
|
228
|
+
|
|
229
|
+
### 注册后无法生产
|
|
230
|
+
|
|
231
|
+
确保你的工人数量、生活资料(作为工资)和生产技术等级满足要求。使用 `我的资料` 查看当前状态。
|
|
232
|
+
|
|
233
|
+
### 地图生成失败
|
|
234
|
+
|
|
235
|
+
检查系统是否安装了 `canvas` 所需的系统依赖。Windows 用户通常无需额外配置;Linux 用户可能需要安装 `libcairo2-dev`、`libjpeg-dev`、`libpango1.0-dev` 等包。
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 许可证
|
|
240
|
+
|
|
241
|
+
查看 [LICENSE](./LICENSE) 文件。
|