@zhin.js/plugin-dungeon-expedition 1.1.15 → 1.1.17
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/commands/dungeon/[[action]]/index.js +4 -4
- package/commands/dungeon/[[action]]/index.ts +4 -4
- package/lib/dungeon-command.d.ts +1 -0
- package/lib/dungeon-command.js +22 -14
- package/lib/dungeon-command.js.map +1 -1
- package/lib/engine.d.ts +3 -2
- package/lib/engine.js +119 -70
- package/lib/engine.js.map +1 -1
- package/lib/game-flow.js +27 -13
- package/lib/game-flow.js.map +1 -1
- package/lib/models.d.ts +4 -1
- package/lib/models.js +2 -1
- package/lib/models.js.map +1 -1
- package/lib/session-service.js +3 -2
- package/lib/session-service.js.map +1 -1
- package/lib/view.d.ts +2 -1
- package/lib/view.js +65 -31
- package/lib/view.js.map +1 -1
- package/package.json +7 -7
- package/plugin.js +9 -1
- package/src/dungeon-command.ts +22 -18
- package/src/engine.ts +120 -59
- package/src/game-flow.ts +27 -14
- package/src/models.ts +4 -2
- package/src/session-service.ts +3 -1
- package/src/view.ts +67 -32
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
2
|
import { defineCommand } from 'zhin.js/command';
|
|
3
3
|
import { messageFromCommandInput } from '@zhin.js/game-kit';
|
|
4
|
-
import {
|
|
4
|
+
import { getDungeonHelp, normalizeDungeonAction, runDungeonCommand, } from "../../../lib/dungeon-command.js";
|
|
5
5
|
import { resolveGameServices } from "../../../lib/runtime-store.js";
|
|
6
6
|
export default defineCommand({
|
|
7
7
|
description: 'Multiplayer dungeon expedition',
|
|
8
8
|
params: { action: { type: 'string', default: '' } },
|
|
9
|
-
async execute({ params, input, use,
|
|
9
|
+
async execute({ params, input, use, locale, formatCommand }) {
|
|
10
10
|
const rawAction = String(params.action ?? '');
|
|
11
11
|
if (normalizeDungeonAction(rawAction) === 'help')
|
|
12
|
-
return
|
|
12
|
+
return getDungeonHelp({ locale, formatCommand });
|
|
13
13
|
const service = resolveGameServices({ use });
|
|
14
|
-
return runDungeonCommand(service, messageFromCommandInput(input), rawAction);
|
|
14
|
+
return runDungeonCommand(service, messageFromCommandInput(input, { locale, formatCommand }), rawAction);
|
|
15
15
|
},
|
|
16
16
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineCommand } from 'zhin.js/command';
|
|
2
2
|
import { messageFromCommandInput } from '@zhin.js/game-kit';
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
getDungeonHelp,
|
|
5
5
|
normalizeDungeonAction,
|
|
6
6
|
runDungeonCommand,
|
|
7
7
|
} from '../../../src/dungeon-command.js';
|
|
@@ -10,13 +10,13 @@ import { resolveGameServices } from '../../../src/runtime-store.js';
|
|
|
10
10
|
export default defineCommand({
|
|
11
11
|
description: 'Multiplayer dungeon expedition',
|
|
12
12
|
params: { action: { type: 'string', default: '' } },
|
|
13
|
-
async execute({ params, input, use,
|
|
13
|
+
async execute({ params, input, use, locale, formatCommand }) {
|
|
14
14
|
const rawAction = String(params.action ?? '');
|
|
15
|
-
if (normalizeDungeonAction(rawAction) === 'help') return
|
|
15
|
+
if (normalizeDungeonAction(rawAction) === 'help') return getDungeonHelp({ locale, formatCommand });
|
|
16
16
|
const service = resolveGameServices({ use });
|
|
17
17
|
return runDungeonCommand(
|
|
18
18
|
service,
|
|
19
|
-
messageFromCommandInput(input),
|
|
19
|
+
messageFromCommandInput(input, { locale, formatCommand }),
|
|
20
20
|
rawAction,
|
|
21
21
|
);
|
|
22
22
|
},
|
package/lib/dungeon-command.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type GameMessageLike, type GameReply } from '@zhin.js/game-kit';
|
|
2
2
|
import type { SessionService } from './session-service.js';
|
|
3
|
+
export declare function getDungeonHelp(message?: Pick<GameMessageLike, 'locale' | 'formatCommand'>): string;
|
|
3
4
|
export declare const DUNGEON_HELP: string;
|
|
4
5
|
export declare function normalizeDungeonAction(action: string): string | null;
|
|
5
6
|
export declare function runDungeonCommand(service: SessionService, message: GameMessageLike, rawAction: string): Promise<GameReply>;
|
package/lib/dungeon-command.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createMessages } from 'zhin.js/i18n';
|
|
2
|
+
import { gameCommandHint, channelKey } from '@zhin.js/game-kit';
|
|
2
3
|
import { continueDungeon, handleDungeonChoice, startDungeon, } from './game-flow.js';
|
|
3
4
|
import { dungeonSessionToken } from './view.js';
|
|
4
|
-
|
|
5
|
-
'地牢远征 · 1-4 人确定性回合冒险',
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
'
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
const messages = createMessages({
|
|
6
|
+
title: { 'zh-CN': '地牢远征 · 1-4 人确定性回合冒险', en: 'Dungeon Expedition · Turn-based adventure for 1–4 players' },
|
|
7
|
+
start: { 'zh-CN': '创建远征队', en: 'Create a party' },
|
|
8
|
+
join: { 'zh-CN': '加入当前频道的队伍', en: 'Join this channel’s party' },
|
|
9
|
+
ready: { 'zh-CN': '切换准备状态', en: 'Toggle readiness' },
|
|
10
|
+
go: { 'zh-CN': '队长开始远征', en: 'Leader starts the expedition' },
|
|
11
|
+
explore: { 'zh-CN': '探索下一房间', en: 'Explore the next room' },
|
|
12
|
+
attack: { 'zh-CN': '攻击', en: 'Attack' }, defend: { 'zh-CN': '防御', en: 'Defend' }, potion: { 'zh-CN': '使用药水', en: 'Use a potion' },
|
|
13
|
+
status: { 'zh-CN': '刷新当前界面', en: 'View current status' },
|
|
14
|
+
abort: { 'zh-CN': '队长结束远征', en: 'Leader ends the expedition' },
|
|
15
|
+
empty: { 'zh-CN': '当前频道没有远征队。', en: 'This channel has no expedition party.' },
|
|
16
|
+
});
|
|
17
|
+
export function getDungeonHelp(message = {}) {
|
|
18
|
+
const command = message.formatCommand?.('dungeon');
|
|
19
|
+
const actions = ['start', 'join', 'ready', 'go', 'explore', 'attack', 'defend', 'potion', 'status', 'abort'];
|
|
20
|
+
return [messages(message.locale, 'title'), ...(command === undefined ? [] : actions.map(action => `${command} ${action} — ${messages(message.locale, action)}`))].join('\n');
|
|
21
|
+
}
|
|
22
|
+
export const DUNGEON_HELP = getDungeonHelp();
|
|
15
23
|
const ACTION_ALIASES = {
|
|
16
24
|
'': 'status',
|
|
17
25
|
help: 'help',
|
|
@@ -49,14 +57,14 @@ export function normalizeDungeonAction(action) {
|
|
|
49
57
|
export async function runDungeonCommand(service, message, rawAction) {
|
|
50
58
|
const action = normalizeDungeonAction(rawAction);
|
|
51
59
|
if (!action || action === 'help')
|
|
52
|
-
return
|
|
60
|
+
return getDungeonHelp(message);
|
|
53
61
|
if (action === 'create')
|
|
54
62
|
return startDungeon(service, message);
|
|
55
63
|
if (action === 'status')
|
|
56
64
|
return continueDungeon(service, message);
|
|
57
65
|
const session = await service.getActiveByChannel(channelKey(message));
|
|
58
66
|
if (!session)
|
|
59
|
-
return '
|
|
67
|
+
return messages(message.locale, 'empty') + gameCommandHint(message, 'dungeon');
|
|
60
68
|
return handleDungeonChoice(service, message, dungeonSessionToken(session), action);
|
|
61
69
|
}
|
|
62
70
|
//# sourceMappingURL=dungeon-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dungeon-command.js","sourceRoot":"","sources":["../src/dungeon-command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"dungeon-command.js","sourceRoot":"","sources":["../src/dungeon-command.ts"],"names":[],"mappings":"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"}
|
package/lib/engine.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Locale } from 'zhin.js/i18n';
|
|
1
2
|
import { DeterministicRandom } from '@zhin.js/game-kit';
|
|
2
3
|
export declare const DUNGEON_SCHEMA_VERSION = 1;
|
|
3
4
|
export declare const MAX_PARTY_SIZE = 4;
|
|
@@ -57,7 +58,7 @@ export type DungeonAction = {
|
|
|
57
58
|
export declare class DungeonRuleError extends Error {
|
|
58
59
|
constructor(message: string);
|
|
59
60
|
}
|
|
60
|
-
export declare function createDungeonState(ownerId: string, ownerName: string): DungeonState;
|
|
61
|
-
export declare function applyDungeonAction(state: Readonly<DungeonState>, actorId: string, action: DungeonAction, random: DeterministicRandom): DungeonState;
|
|
61
|
+
export declare function createDungeonState(ownerId: string, ownerName: string, locale?: Locale): DungeonState;
|
|
62
|
+
export declare function applyDungeonAction(state: Readonly<DungeonState>, actorId: string, action: DungeonAction, random: DeterministicRandom, locale?: Locale): DungeonState;
|
|
62
63
|
export declare function activePlayer(state: Readonly<DungeonState>): DungeonPlayer | null;
|
|
63
64
|
export declare function decodeDungeonState(raw: string): DungeonState;
|
package/lib/engine.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createMessages } from 'zhin.js/i18n';
|
|
1
2
|
export const DUNGEON_SCHEMA_VERSION = 1;
|
|
2
3
|
export const MAX_PARTY_SIZE = 4;
|
|
3
4
|
export const MAX_FLOOR = 3;
|
|
@@ -8,7 +9,7 @@ export class DungeonRuleError extends Error {
|
|
|
8
9
|
this.name = 'DungeonRuleError';
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
|
-
export function createDungeonState(ownerId, ownerName) {
|
|
12
|
+
export function createDungeonState(ownerId, ownerName, locale) {
|
|
12
13
|
return {
|
|
13
14
|
schemaVersion: DUNGEON_SCHEMA_VERSION,
|
|
14
15
|
ownerId,
|
|
@@ -20,46 +21,46 @@ export function createDungeonState(ownerId, ownerName) {
|
|
|
20
21
|
turnIndex: 0,
|
|
21
22
|
players: [createPlayer(ownerId, ownerName, true)],
|
|
22
23
|
enemy: null,
|
|
23
|
-
log: [
|
|
24
|
+
log: [messages(locale, 'text1', { p0: ownerName })],
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
|
-
export function applyDungeonAction(state, actorId, action, random) {
|
|
27
|
+
export function applyDungeonAction(state, actorId, action, random, locale) {
|
|
27
28
|
if (state.phase === 'completed') {
|
|
28
|
-
throw new DungeonRuleError('
|
|
29
|
+
throw new DungeonRuleError(messages(locale, 'text2'));
|
|
29
30
|
}
|
|
30
31
|
if (action.type === 'join')
|
|
31
|
-
return joinParty(state, actorId, action.name);
|
|
32
|
+
return joinParty(state, actorId, action.name, locale);
|
|
32
33
|
const actorIndex = state.players.findIndex((player) => player.id === actorId);
|
|
33
34
|
if (actorIndex < 0)
|
|
34
|
-
throw new DungeonRuleError('
|
|
35
|
+
throw new DungeonRuleError(messages(locale, 'text3'));
|
|
35
36
|
if (action.type === 'abort') {
|
|
36
37
|
if (state.ownerId !== actorId) {
|
|
37
|
-
throw new DungeonRuleError('
|
|
38
|
+
throw new DungeonRuleError(messages(locale, 'text4'));
|
|
38
39
|
}
|
|
39
40
|
return appendLog({
|
|
40
41
|
...state,
|
|
41
42
|
phase: 'completed',
|
|
42
43
|
result: 'aborted',
|
|
43
44
|
enemy: null,
|
|
44
|
-
}, '
|
|
45
|
+
}, messages(locale, 'text5'));
|
|
45
46
|
}
|
|
46
47
|
if (action.type === 'ready') {
|
|
47
48
|
if (state.phase !== 'lobby') {
|
|
48
|
-
throw new DungeonRuleError('
|
|
49
|
+
throw new DungeonRuleError(messages(locale, 'text6'));
|
|
49
50
|
}
|
|
50
51
|
const players = state.players.map((player, index) => index === actorIndex ? { ...player, ready: !player.ready } : player);
|
|
51
|
-
return appendLog({ ...state, players }, `${players[actorIndex]?.name ?? actorId}${players[actorIndex]?.ready ? '
|
|
52
|
+
return appendLog({ ...state, players }, `${players[actorIndex]?.name ?? actorId}${players[actorIndex]?.ready ? messages(locale, 'text7') : messages(locale, 'text8')}。`);
|
|
52
53
|
}
|
|
53
54
|
if (action.type === 'start')
|
|
54
|
-
return startExpedition(state, actorId);
|
|
55
|
-
assertActorTurn(state, actorId);
|
|
55
|
+
return startExpedition(state, actorId, locale);
|
|
56
|
+
assertActorTurn(state, actorId, locale);
|
|
56
57
|
if (action.type === 'explore')
|
|
57
|
-
return explore(state, random);
|
|
58
|
+
return explore(state, random, locale);
|
|
58
59
|
if (action.type === 'attack')
|
|
59
|
-
return attack(state, actorIndex, random);
|
|
60
|
+
return attack(state, actorIndex, random, locale);
|
|
60
61
|
if (action.type === 'defend')
|
|
61
|
-
return defend(state, actorIndex, random);
|
|
62
|
-
return drinkPotion(state, actorIndex, random);
|
|
62
|
+
return defend(state, actorIndex, random, locale);
|
|
63
|
+
return drinkPotion(state, actorIndex, random, locale);
|
|
63
64
|
}
|
|
64
65
|
export function activePlayer(state) {
|
|
65
66
|
if (state.players.length === 0)
|
|
@@ -91,54 +92,54 @@ function createPlayer(id, name, ready) {
|
|
|
91
92
|
ready,
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
|
-
function joinParty(state, actorId, actorName) {
|
|
95
|
+
function joinParty(state, actorId, actorName, locale) {
|
|
95
96
|
if (state.phase !== 'lobby') {
|
|
96
|
-
throw new DungeonRuleError('
|
|
97
|
+
throw new DungeonRuleError(messages(locale, 'text9'));
|
|
97
98
|
}
|
|
98
99
|
if (state.players.some((player) => player.id === actorId)) {
|
|
99
|
-
throw new DungeonRuleError('
|
|
100
|
+
throw new DungeonRuleError(messages(locale, 'text10'));
|
|
100
101
|
}
|
|
101
102
|
if (state.players.length >= MAX_PARTY_SIZE) {
|
|
102
|
-
throw new DungeonRuleError(
|
|
103
|
+
throw new DungeonRuleError(messages(locale, 'text11'));
|
|
103
104
|
}
|
|
104
105
|
const player = createPlayer(actorId, actorName, false);
|
|
105
|
-
return appendLog({ ...state, players: [...state.players, player] },
|
|
106
|
+
return appendLog({ ...state, players: [...state.players, player] }, messages(locale, 'text12', { p0: player.name }));
|
|
106
107
|
}
|
|
107
|
-
function startExpedition(state, actorId) {
|
|
108
|
+
function startExpedition(state, actorId, locale) {
|
|
108
109
|
if (state.phase !== 'lobby') {
|
|
109
|
-
throw new DungeonRuleError('
|
|
110
|
+
throw new DungeonRuleError(messages(locale, 'text13'));
|
|
110
111
|
}
|
|
111
112
|
if (state.ownerId !== actorId) {
|
|
112
|
-
throw new DungeonRuleError('
|
|
113
|
+
throw new DungeonRuleError(messages(locale, 'text14'));
|
|
113
114
|
}
|
|
114
115
|
const waiting = state.players.filter((player) => !player.ready);
|
|
115
116
|
if (waiting.length > 0) {
|
|
116
|
-
throw new DungeonRuleError(
|
|
117
|
+
throw new DungeonRuleError(messages(locale, 'text15', { p0: waiting.map((player) => player.name).join('、') }));
|
|
117
118
|
}
|
|
118
|
-
return appendLog({ ...state, phase: 'exploring' }, '
|
|
119
|
+
return appendLog({ ...state, phase: 'exploring' }, messages(locale, 'text16'));
|
|
119
120
|
}
|
|
120
|
-
function assertActorTurn(state, actorId) {
|
|
121
|
+
function assertActorTurn(state, actorId, locale) {
|
|
121
122
|
if (state.phase === 'lobby') {
|
|
122
|
-
throw new DungeonRuleError('
|
|
123
|
+
throw new DungeonRuleError(messages(locale, 'text17'));
|
|
123
124
|
}
|
|
124
125
|
const current = activePlayer(state);
|
|
125
126
|
if (!current || current.id !== actorId) {
|
|
126
|
-
throw new DungeonRuleError(
|
|
127
|
+
throw new DungeonRuleError(messages(locale, 'text18', { p0: current?.name ?? messages(locale, 'otherPlayer') }));
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
|
-
function explore(state, random) {
|
|
130
|
+
function explore(state, random, locale) {
|
|
130
131
|
if (state.phase !== 'exploring') {
|
|
131
|
-
throw new DungeonRuleError('
|
|
132
|
+
throw new DungeonRuleError(messages(locale, 'text19'));
|
|
132
133
|
}
|
|
133
134
|
const room = state.room + 1;
|
|
134
135
|
if (room >= BOSS_ROOM) {
|
|
135
|
-
const enemy = createEnemy(state.floor, true, random);
|
|
136
|
-
return appendLog({ ...state, room, phase: 'combat', enemy },
|
|
136
|
+
const enemy = createEnemy(state.floor, true, random, locale);
|
|
137
|
+
return appendLog({ ...state, room, phase: 'combat', enemy }, messages(locale, 'text20', { p0: enemy.name }));
|
|
137
138
|
}
|
|
138
139
|
const roll = random.int(100);
|
|
139
140
|
if (roll < 58) {
|
|
140
|
-
const enemy = createEnemy(state.floor, false, random);
|
|
141
|
-
return appendLog({ ...state, room, phase: 'combat', enemy },
|
|
141
|
+
const enemy = createEnemy(state.floor, false, random, locale);
|
|
142
|
+
return appendLog({ ...state, room, phase: 'combat', enemy }, messages(locale, 'text21', { p0: enemy.name }));
|
|
142
143
|
}
|
|
143
144
|
if (roll < 78) {
|
|
144
145
|
const gold = random.intInclusive(8, 18);
|
|
@@ -149,7 +150,7 @@ function explore(state, random) {
|
|
|
149
150
|
...player,
|
|
150
151
|
gold: player.gold + gold,
|
|
151
152
|
})),
|
|
152
|
-
},
|
|
153
|
+
}, messages(locale, 'text22', { p0: gold }));
|
|
153
154
|
}
|
|
154
155
|
if (roll < 90) {
|
|
155
156
|
return advanceAfterRoom({
|
|
@@ -159,7 +160,7 @@ function explore(state, random) {
|
|
|
159
160
|
...player,
|
|
160
161
|
hp: Math.min(player.maxHp, player.hp + 18),
|
|
161
162
|
})),
|
|
162
|
-
}, '
|
|
163
|
+
}, messages(locale, 'text23'));
|
|
163
164
|
}
|
|
164
165
|
const damage = random.intInclusive(8, 16);
|
|
165
166
|
const targetIndex = nextLivingIndex(state.players, state.turnIndex);
|
|
@@ -167,48 +168,48 @@ function explore(state, random) {
|
|
|
167
168
|
const players = state.players.map((player, index) => index === targetIndex
|
|
168
169
|
? { ...player, hp: Math.max(0, player.hp - damage) }
|
|
169
170
|
: player);
|
|
170
|
-
const trapped = advanceAfterRoom({ ...state, room, players },
|
|
171
|
-
const resolved = finishIfDefeated(trapped);
|
|
171
|
+
const trapped = advanceAfterRoom({ ...state, room, players }, messages(locale, 'text24', { p0: target?.name ?? messages(locale, 'player'), p1: damage }));
|
|
172
|
+
const resolved = finishIfDefeated(trapped, locale);
|
|
172
173
|
if (resolved.phase === 'completed' || (players[targetIndex]?.hp ?? 0) > 0) {
|
|
173
174
|
return resolved;
|
|
174
175
|
}
|
|
175
176
|
return advanceTurn(resolved);
|
|
176
177
|
}
|
|
177
|
-
function attack(state, actorIndex, random) {
|
|
178
|
+
function attack(state, actorIndex, random, locale) {
|
|
178
179
|
if (state.phase !== 'combat' || !state.enemy) {
|
|
179
|
-
throw new DungeonRuleError('
|
|
180
|
+
throw new DungeonRuleError(messages(locale, 'text25'));
|
|
180
181
|
}
|
|
181
182
|
const actor = state.players[actorIndex];
|
|
182
183
|
if (!actor || actor.hp <= 0)
|
|
183
|
-
throw new DungeonRuleError('
|
|
184
|
+
throw new DungeonRuleError(messages(locale, 'text26'));
|
|
184
185
|
const damage = random.intInclusive(12, 22);
|
|
185
186
|
const enemy = { ...state.enemy, hp: Math.max(0, state.enemy.hp - damage) };
|
|
186
|
-
let next = appendLog({ ...state, enemy },
|
|
187
|
+
let next = appendLog({ ...state, enemy }, messages(locale, 'text27', { p0: actor.name, p1: enemy.name, p2: damage }));
|
|
187
188
|
if (enemy.hp <= 0)
|
|
188
|
-
return defeatEnemy(next, random);
|
|
189
|
-
next = enemyTurn(next, actorIndex, random);
|
|
190
|
-
return advanceTurn(finishIfDefeated(next));
|
|
189
|
+
return defeatEnemy(next, random, locale);
|
|
190
|
+
next = enemyTurn(next, actorIndex, random, locale);
|
|
191
|
+
return advanceTurn(finishIfDefeated(next, locale));
|
|
191
192
|
}
|
|
192
|
-
function defend(state, actorIndex, random) {
|
|
193
|
+
function defend(state, actorIndex, random, locale) {
|
|
193
194
|
if (state.phase !== 'combat' || !state.enemy) {
|
|
194
|
-
throw new DungeonRuleError('
|
|
195
|
+
throw new DungeonRuleError(messages(locale, 'text28'));
|
|
195
196
|
}
|
|
196
197
|
const actor = state.players[actorIndex];
|
|
197
198
|
if (!actor || actor.hp <= 0)
|
|
198
|
-
throw new DungeonRuleError('
|
|
199
|
+
throw new DungeonRuleError(messages(locale, 'text26'));
|
|
199
200
|
const players = state.players.map((player, index) => index === actorIndex ? { ...player, guard: 8 } : player);
|
|
200
|
-
let next = appendLog({ ...state, players },
|
|
201
|
-
next = enemyTurn(next, actorIndex, random);
|
|
202
|
-
return advanceTurn(finishIfDefeated(next));
|
|
201
|
+
let next = appendLog({ ...state, players }, messages(locale, 'text29', { p0: actor.name }));
|
|
202
|
+
next = enemyTurn(next, actorIndex, random, locale);
|
|
203
|
+
return advanceTurn(finishIfDefeated(next, locale));
|
|
203
204
|
}
|
|
204
|
-
function drinkPotion(state, actorIndex, random) {
|
|
205
|
+
function drinkPotion(state, actorIndex, random, locale) {
|
|
205
206
|
const actor = state.players[actorIndex];
|
|
206
207
|
if (!actor || actor.hp <= 0)
|
|
207
|
-
throw new DungeonRuleError('
|
|
208
|
+
throw new DungeonRuleError(messages(locale, 'text26'));
|
|
208
209
|
if (actor.potions <= 0)
|
|
209
|
-
throw new DungeonRuleError('
|
|
210
|
+
throw new DungeonRuleError(messages(locale, 'text30'));
|
|
210
211
|
if (actor.hp >= actor.maxHp)
|
|
211
|
-
throw new DungeonRuleError('
|
|
212
|
+
throw new DungeonRuleError(messages(locale, 'text31'));
|
|
212
213
|
const players = state.players.map((player, index) => index === actorIndex
|
|
213
214
|
? {
|
|
214
215
|
...player,
|
|
@@ -216,14 +217,14 @@ function drinkPotion(state, actorIndex, random) {
|
|
|
216
217
|
potions: player.potions - 1,
|
|
217
218
|
}
|
|
218
219
|
: player);
|
|
219
|
-
let next = appendLog({ ...state, players },
|
|
220
|
+
let next = appendLog({ ...state, players }, messages(locale, 'text32', { p0: actor.name }));
|
|
220
221
|
if (state.phase === 'combat') {
|
|
221
|
-
next = enemyTurn(next, actorIndex, random);
|
|
222
|
-
return advanceTurn(finishIfDefeated(next));
|
|
222
|
+
next = enemyTurn(next, actorIndex, random, locale);
|
|
223
|
+
return advanceTurn(finishIfDefeated(next, locale));
|
|
223
224
|
}
|
|
224
225
|
return next;
|
|
225
226
|
}
|
|
226
|
-
function enemyTurn(state, targetIndex, random) {
|
|
227
|
+
function enemyTurn(state, targetIndex, random, locale) {
|
|
227
228
|
const enemy = state.enemy;
|
|
228
229
|
const target = state.players[targetIndex];
|
|
229
230
|
if (!enemy || !target)
|
|
@@ -233,9 +234,9 @@ function enemyTurn(state, targetIndex, random) {
|
|
|
233
234
|
const players = state.players.map((player, index) => index === targetIndex
|
|
234
235
|
? { ...player, hp: Math.max(0, player.hp - damage), guard: 0 }
|
|
235
236
|
: player);
|
|
236
|
-
return appendLog({ ...state, players },
|
|
237
|
+
return appendLog({ ...state, players }, messages(locale, 'text33', { p0: enemy.name, p1: target.name, p2: damage }));
|
|
237
238
|
}
|
|
238
|
-
function defeatEnemy(state, random) {
|
|
239
|
+
function defeatEnemy(state, random, locale) {
|
|
239
240
|
const enemy = state.enemy;
|
|
240
241
|
if (!enemy)
|
|
241
242
|
return state;
|
|
@@ -254,7 +255,7 @@ function defeatEnemy(state, random) {
|
|
|
254
255
|
phase: 'completed',
|
|
255
256
|
result: 'victory',
|
|
256
257
|
roomsCleared: state.roomsCleared + 1,
|
|
257
|
-
},
|
|
258
|
+
}, messages(locale, 'text34', { p0: gold }));
|
|
258
259
|
}
|
|
259
260
|
if (enemy.boss) {
|
|
260
261
|
return appendLog({
|
|
@@ -263,14 +264,14 @@ function defeatEnemy(state, random) {
|
|
|
263
264
|
floor: state.floor + 1,
|
|
264
265
|
room: 0,
|
|
265
266
|
roomsCleared: state.roomsCleared + 1,
|
|
266
|
-
},
|
|
267
|
+
}, messages(locale, 'text35', { p0: gold }));
|
|
267
268
|
}
|
|
268
|
-
return advanceAfterRoom({ ...rewarded, phase: 'exploring' },
|
|
269
|
+
return advanceAfterRoom({ ...rewarded, phase: 'exploring' }, messages(locale, 'text36', { p0: enemy.name, p1: gold }));
|
|
269
270
|
}
|
|
270
|
-
function createEnemy(floor, boss, random) {
|
|
271
|
+
function createEnemy(floor, boss, random, locale) {
|
|
271
272
|
const names = boss
|
|
272
|
-
? ['
|
|
273
|
-
: ['
|
|
273
|
+
? [messages(locale, 'text37'), messages(locale, 'text38'), messages(locale, 'text39')]
|
|
274
|
+
: [messages(locale, 'text40'), messages(locale, 'text41'), messages(locale, 'text42'), messages(locale, 'text43')];
|
|
274
275
|
const name = boss
|
|
275
276
|
? names[Math.min(names.length - 1, floor - 1)]
|
|
276
277
|
: random.item(names);
|
|
@@ -306,7 +307,7 @@ function nextLivingIndex(players, start) {
|
|
|
306
307
|
}
|
|
307
308
|
return 0;
|
|
308
309
|
}
|
|
309
|
-
function finishIfDefeated(state) {
|
|
310
|
+
function finishIfDefeated(state, locale) {
|
|
310
311
|
if (state.players.some((player) => player.hp > 0))
|
|
311
312
|
return state;
|
|
312
313
|
return appendLog({
|
|
@@ -314,7 +315,7 @@ function finishIfDefeated(state) {
|
|
|
314
315
|
phase: 'completed',
|
|
315
316
|
result: 'defeat',
|
|
316
317
|
enemy: null,
|
|
317
|
-
}, '
|
|
318
|
+
}, messages(locale, 'text44'));
|
|
318
319
|
}
|
|
319
320
|
function appendLog(state, message) {
|
|
320
321
|
return {
|
|
@@ -322,4 +323,52 @@ function appendLog(state, message) {
|
|
|
322
323
|
log: [...state.log, message].slice(-8),
|
|
323
324
|
};
|
|
324
325
|
}
|
|
326
|
+
const messages = createMessages({
|
|
327
|
+
otherPlayer: { 'zh-CN': '其他队员', en: 'another player' },
|
|
328
|
+
player: { 'zh-CN': '队员', en: 'A player' },
|
|
329
|
+
text1: { 'zh-CN': "{p0} 创建了远征队。", en: "{p0} created the expedition party." },
|
|
330
|
+
text2: { 'zh-CN': "本次远征已经结束。", en: "This expedition has ended." },
|
|
331
|
+
text3: { 'zh-CN': "你还没有加入这支远征队。", en: "You have not joined this expedition." },
|
|
332
|
+
text4: { 'zh-CN': "只有队长可以结束整支远征。", en: "Only the leader may end the expedition." },
|
|
333
|
+
text5: { 'zh-CN': "队长结束了本次远征。", en: "The leader ended the expedition." },
|
|
334
|
+
text6: { 'zh-CN': "远征已经开始,无法修改准备状态。", en: "The expedition has started; readiness can no longer be changed." },
|
|
335
|
+
text7: { 'zh-CN': "已准备", en: " is ready" },
|
|
336
|
+
text8: { 'zh-CN': "取消准备", en: " is no longer ready" },
|
|
337
|
+
text9: { 'zh-CN': "远征已经出发,无法中途加入。", en: "The expedition has started; you cannot join mid-game." },
|
|
338
|
+
text10: { 'zh-CN': "你已经在远征队中。", en: "You are already in the party." },
|
|
339
|
+
text11: { 'zh-CN': "远征队已满,最多 4 人。", en: "The party is full (maximum four players)." },
|
|
340
|
+
text12: { 'zh-CN': "{p0} 加入了远征队。", en: "{p0} joined the party." },
|
|
341
|
+
text13: { 'zh-CN': "远征已经开始。", en: "The expedition has already started." },
|
|
342
|
+
text14: { 'zh-CN': "只有队长可以带队出发。", en: "Only the leader may start the expedition." },
|
|
343
|
+
text15: { 'zh-CN': "仍有队员未准备:{p0}", en: "Players not ready: {p0}" },
|
|
344
|
+
text16: { 'zh-CN': "远征队进入了第一层地牢。", en: "The party entered the first floor." },
|
|
345
|
+
text17: { 'zh-CN': "请先由队长开始远征。", en: "Ask the leader to start the expedition first." },
|
|
346
|
+
text18: { 'zh-CN': "现在轮到 {p0} 行动。", en: "It is {p0}’s turn." },
|
|
347
|
+
text19: { 'zh-CN': "战斗尚未结束,无法继续探索。", en: "Finish the battle before exploring further." },
|
|
348
|
+
text20: { 'zh-CN': "守层者 {p0} 挡住了去路!", en: "Floor guardian {p0} blocks the way!" },
|
|
349
|
+
text21: { 'zh-CN': "遭遇了 {p0}!", en: "Encountered {p0}!" },
|
|
350
|
+
text22: { 'zh-CN': "发现宝箱,每位队员获得 {p0} 金币。", en: "A treasure chest! Each player gains {p0} gold." },
|
|
351
|
+
text23: { 'zh-CN': "发现治愈泉,队伍恢复了生命。", en: "A healing spring restores the party’s health." },
|
|
352
|
+
text24: { 'zh-CN': "{p0} 触发陷阱,受到 {p1} 点伤害。", en: "{p0} triggered a trap and took {p1} damage." },
|
|
353
|
+
text25: { 'zh-CN': "当前没有可以攻击的敌人。", en: "There is no enemy to attack." },
|
|
354
|
+
text26: { 'zh-CN': "倒下的队员无法行动。", en: "Defeated players cannot act." },
|
|
355
|
+
text27: { 'zh-CN': "{p0} 对 {p1} 造成 {p2} 点伤害。", en: "{p0} dealt {p2} damage to {p1}." },
|
|
356
|
+
text28: { 'zh-CN': "当前不需要防御。", en: "There is no need to defend right now." },
|
|
357
|
+
text29: { 'zh-CN': "{p0} 架起了盾牌。", en: "{p0} raised a shield." },
|
|
358
|
+
text30: { 'zh-CN': "你的药水已经用完了。", en: "You have no potions left." },
|
|
359
|
+
text31: { 'zh-CN': "你的生命值已经满了。", en: "Your health is already full." },
|
|
360
|
+
text32: { 'zh-CN': "{p0} 使用药水恢复生命。", en: "{p0} used a potion to restore health." },
|
|
361
|
+
text33: { 'zh-CN': "{p0} 反击 {p1},造成 {p2} 点伤害。", en: "{p0} counterattacked {p1} for {p2} damage." },
|
|
362
|
+
text34: { 'zh-CN': "击败最终守层者,每人获得 {p0} 金币。远征胜利!", en: "The final guardian is defeated! Each player gains {p0} gold. Expedition victory!" },
|
|
363
|
+
text35: { 'zh-CN': "击败守层者,每人获得 {p0} 金币。队伍进入下一层。", en: "The floor guardian is defeated! Each player gains {p0} gold. The party advances to the next floor." },
|
|
364
|
+
text36: { 'zh-CN': "击败 {p0},每人获得 {p1} 金币。", en: "Defeated {p0}! Each player gains {p1} gold." },
|
|
365
|
+
text37: { 'zh-CN': "石像守卫", en: "Stone Guardian" },
|
|
366
|
+
text38: { 'zh-CN': "深渊术士", en: "Abyss Warlock" },
|
|
367
|
+
text39: { 'zh-CN': "远古龙影", en: "Ancient Dragon Shade" },
|
|
368
|
+
text40: { 'zh-CN': "洞穴史莱姆", en: "Cave Slime" },
|
|
369
|
+
text41: { 'zh-CN': "骷髅巡卫", en: "Skeleton Patrol" },
|
|
370
|
+
text42: { 'zh-CN': "暗影猎手", en: "Shadow Hunter" },
|
|
371
|
+
text43: { 'zh-CN': "失控魔像", en: "Rampaging Golem" },
|
|
372
|
+
text44: { 'zh-CN': "远征队全员倒下,本次远征失败。", en: "The entire party fell. The expedition failed." },
|
|
373
|
+
});
|
|
325
374
|
//# sourceMappingURL=engine.js.map
|
package/lib/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|