@linxin666/dsh-pet 0.3.3 → 0.3.5
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/README.i18n.yaml +2 -2
- package/README.md +30 -13
- package/README.zh.md +30 -13
- package/assets/ouo-neko/pet.json +31 -0
- package/assets/ouo-neko/previews/failed.gif +0 -0
- package/assets/ouo-neko/previews/idle.gif +0 -0
- package/assets/ouo-neko/previews/jumping.gif +0 -0
- package/assets/ouo-neko/previews/review.gif +0 -0
- package/assets/ouo-neko/previews/running-left.gif +0 -0
- package/assets/ouo-neko/previews/running-right.gif +0 -0
- package/assets/ouo-neko/previews/running.gif +0 -0
- package/assets/ouo-neko/previews/waiting.gif +0 -0
- package/assets/ouo-neko/previews/waving.gif +0 -0
- package/assets/ouo-neko/spritesheet.webp +0 -0
- package/contracts/pet-manifest-v2.schema.json +102 -1
- package/contracts/voice-pack-v1.schema.json +23 -28
- package/lib/client.js +781 -40
- package/lib/client.js.map +1 -1
- package/lib/index.js +1567 -482
- package/lib/types/chatter.d.ts +68 -46
- package/lib/types/chatter.d.ts.map +1 -1
- package/lib/types/chatter.js +243 -301
- package/lib/types/client/PetDockEntry.d.ts +3 -0
- package/lib/types/client/PetDockEntry.d.ts.map +1 -1
- package/lib/types/client/PetDockEntry.js +18 -2
- package/lib/types/client/PetSprite.d.ts +23 -0
- package/lib/types/client/PetSprite.d.ts.map +1 -1
- package/lib/types/client/PetSprite.js +49 -45
- package/lib/types/client/PluginSettingsCard.d.ts +2 -0
- package/lib/types/client/PluginSettingsCard.d.ts.map +1 -1
- package/lib/types/client/PluginSettingsCard.js +2 -2
- package/lib/types/client/drag-stream.d.ts +19 -0
- package/lib/types/client/drag-stream.d.ts.map +1 -0
- package/lib/types/client/drag-stream.js +26 -0
- package/lib/types/client/gameplay-hud.d.ts +50 -0
- package/lib/types/client/gameplay-hud.d.ts.map +1 -0
- package/lib/types/client/gameplay-hud.js +274 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +38 -9
- package/lib/types/client/locales.d.ts +34 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/locales.js +36 -0
- package/lib/types/client/pet-store.d.ts +7 -1
- package/lib/types/client/pet-store.d.ts.map +1 -1
- package/lib/types/client/pet-store.js +4 -0
- package/lib/types/client/renderers/Frames2dVisualMount.d.ts +29 -0
- package/lib/types/client/renderers/Frames2dVisualMount.d.ts.map +1 -0
- package/lib/types/client/renderers/Frames2dVisualMount.js +83 -0
- package/lib/types/client/renderers/PetRendererSwitch.d.ts +6 -0
- package/lib/types/client/renderers/PetRendererSwitch.d.ts.map +1 -1
- package/lib/types/client/renderers/PetRendererSwitch.js +14 -1
- package/lib/types/client/renderers/frames2d.d.ts +36 -0
- package/lib/types/client/renderers/frames2d.d.ts.map +1 -0
- package/lib/types/client/renderers/frames2d.js +196 -0
- package/lib/types/defaults.d.ts +6 -0
- package/lib/types/defaults.d.ts.map +1 -0
- package/lib/types/defaults.js +5 -0
- package/lib/types/dsh-home.d.ts.map +1 -1
- package/lib/types/dsh-home.js +9 -3
- package/lib/types/event-projection.d.ts +9 -4
- package/lib/types/event-projection.d.ts.map +1 -1
- package/lib/types/event-projection.js +46 -14
- package/lib/types/gameplay.d.ts +182 -0
- package/lib/types/gameplay.d.ts.map +1 -0
- package/lib/types/gameplay.js +618 -0
- package/lib/types/ledger.d.ts +14 -0
- package/lib/types/ledger.d.ts.map +1 -1
- package/lib/types/ledger.js +30 -0
- package/lib/types/manifest-v2.d.ts +38 -1
- package/lib/types/manifest-v2.d.ts.map +1 -1
- package/lib/types/manifest-v2.js +182 -2
- package/lib/types/persist.d.ts +4 -4
- package/lib/types/persist.d.ts.map +1 -1
- package/lib/types/persist.js +41 -4
- package/lib/types/registry.d.ts +29 -0
- package/lib/types/registry.d.ts.map +1 -1
- package/lib/types/registry.js +170 -1
- package/lib/types/routes.d.ts.map +1 -1
- package/lib/types/routes.js +30 -3
- package/lib/types/service.d.ts +63 -11
- package/lib/types/service.d.ts.map +1 -1
- package/lib/types/service.js +208 -19
- package/lib/types/voice-pack.d.ts +6 -7
- package/lib/types/voice-pack.d.ts.map +1 -1
- package/lib/types/voice-pack.js +44 -47
- package/package.json +5 -2
- package/src/chatter.test.ts +68 -38
- package/src/chatter.ts +269 -316
- package/src/client/PetDockEntry.test.tsx +6 -0
- package/src/client/PetDockEntry.tsx +32 -1
- package/src/client/PetSprite.test.tsx +68 -21
- package/src/client/PetSprite.tsx +63 -45
- package/src/client/PluginSettingsCard.tsx +4 -2
- package/src/client/drag-stream.ts +35 -0
- package/src/client/gameplay-hud.test.tsx +338 -0
- package/src/client/gameplay-hud.tsx +403 -0
- package/src/client/index.test.tsx +10 -1
- package/src/client/index.ts +46 -11
- package/src/client/locales.ts +36 -0
- package/src/client/pet-store.ts +10 -1
- package/src/client/pet.module.css +192 -29
- package/src/client/renderers/Frames2dVisualMount.tsx +111 -0
- package/src/client/renderers/PetRendererSwitch.tsx +28 -1
- package/src/client/renderers/frames2d.test.ts +137 -0
- package/src/client/renderers/frames2d.ts +216 -0
- package/src/client/settings-card.module.css +5 -0
- package/src/defaults.ts +7 -0
- package/src/dsh-home.ts +9 -3
- package/src/event-projection.ts +57 -16
- package/src/gameplay.test.ts +239 -0
- package/src/gameplay.ts +692 -0
- package/src/ledger.test.ts +16 -0
- package/src/ledger.ts +31 -0
- package/src/manifest-v2.test.ts +130 -1
- package/src/manifest-v2.ts +181 -2
- package/src/persist.test.ts +3 -0
- package/src/persist.ts +43 -6
- package/src/registry.test.ts +168 -1
- package/src/registry.ts +199 -1
- package/src/routes.ts +28 -4
- package/src/service.ts +240 -29
- package/src/voice-pack.test.ts +48 -25
- package/src/voice-pack.ts +50 -47
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pet gameplay — the optional manifest 'gameplay' block and its host engine.
|
|
3
|
+
* The block layers an opt-in mini-game over any frames2d pet: decaying stat
|
|
4
|
+
* bars, currencies, a weighted idle director, touch zones, a work loop, a
|
|
5
|
+
* sleep loop, passive income and a shop (issue: miku-pet generalization).
|
|
6
|
+
*
|
|
7
|
+
* Discipline split matches manifest-v2: STRUCTURE is fail-closed (types,
|
|
8
|
+
* ranges, references into stats/tracks); the host engine is pure — every
|
|
9
|
+
* verb takes an explicit clock and rng so tests stay deterministic. Decay,
|
|
10
|
+
* passive income and sleep restore are lazy-settled on read (the treats.ts
|
|
11
|
+
* discipline): the host runs no timers for gameplay.
|
|
12
|
+
* @module @linxin666/dsh-pet/gameplay
|
|
13
|
+
*/
|
|
14
|
+
/** One gameplay effect: add amount to a declared stat or a currency. */
|
|
15
|
+
export interface PetGameplayEffect {
|
|
16
|
+
stat?: string;
|
|
17
|
+
currency?: string;
|
|
18
|
+
amount: number;
|
|
19
|
+
}
|
|
20
|
+
/** One roll branch inside a touch zone; uncovered roll mass is a no-op. */
|
|
21
|
+
export interface PetGameplayTouchBranch {
|
|
22
|
+
probability: number;
|
|
23
|
+
effects?: PetGameplayEffect[];
|
|
24
|
+
/** Track played on hit (held for stateMs, then the renderer settles). */
|
|
25
|
+
state?: string;
|
|
26
|
+
stateMs?: number;
|
|
27
|
+
/** Bubble phrase pool; one is picked on hit. */
|
|
28
|
+
phrases?: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface PetGameplayTouchZone {
|
|
31
|
+
name: string;
|
|
32
|
+
/** Vertical slice of the hit box (fractions, y0 < y1). */
|
|
33
|
+
y0: number;
|
|
34
|
+
y1: number;
|
|
35
|
+
branches: PetGameplayTouchBranch[];
|
|
36
|
+
}
|
|
37
|
+
export interface PetGameplayStatDef {
|
|
38
|
+
max: number;
|
|
39
|
+
initial?: number;
|
|
40
|
+
decayPerMinute?: number;
|
|
41
|
+
/** Decay rate while the work mode is active (defaults to decayPerMinute). */
|
|
42
|
+
workingDecayPerMinute?: number;
|
|
43
|
+
/** Extra decay rate while no session is active. */
|
|
44
|
+
idleDecayPerMinute?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface PetGameplayShopItem {
|
|
47
|
+
id: string;
|
|
48
|
+
label: string;
|
|
49
|
+
/** Optional frame path (manifest-relative) shown as the item icon. */
|
|
50
|
+
image?: string;
|
|
51
|
+
price: number;
|
|
52
|
+
currency: string;
|
|
53
|
+
effects?: PetGameplayEffect[];
|
|
54
|
+
lottery?: {
|
|
55
|
+
effects?: PetGameplayEffect[];
|
|
56
|
+
/** Default currency the prize is paid in (tiers may override). */
|
|
57
|
+
currency?: string;
|
|
58
|
+
tiers: {
|
|
59
|
+
probability: number;
|
|
60
|
+
prize: number;
|
|
61
|
+
currency?: string;
|
|
62
|
+
}[];
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** The validated manifest 'gameplay' block. */
|
|
66
|
+
export interface PetGameplayManifest {
|
|
67
|
+
idleDirector?: {
|
|
68
|
+
intervalMs: number;
|
|
69
|
+
maxMiss: number;
|
|
70
|
+
idleWeight: number;
|
|
71
|
+
acts: {
|
|
72
|
+
track: string;
|
|
73
|
+
weight: number;
|
|
74
|
+
phrases?: string[];
|
|
75
|
+
}[];
|
|
76
|
+
};
|
|
77
|
+
stats?: Record<string, PetGameplayStatDef>;
|
|
78
|
+
/** Click hit box inside the sprite box (fractions). */
|
|
79
|
+
hitBox?: {
|
|
80
|
+
x0: number;
|
|
81
|
+
y0: number;
|
|
82
|
+
x1: number;
|
|
83
|
+
y1: number;
|
|
84
|
+
};
|
|
85
|
+
touch?: {
|
|
86
|
+
zones: PetGameplayTouchZone[];
|
|
87
|
+
/** Plain-click effect while a touch animation holds (miku: mood +0..3). */
|
|
88
|
+
clickBoost?: {
|
|
89
|
+
stat: string;
|
|
90
|
+
min: number;
|
|
91
|
+
max: number;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
work?: {
|
|
95
|
+
state: string;
|
|
96
|
+
successState: string;
|
|
97
|
+
failState: string;
|
|
98
|
+
tickMs: number;
|
|
99
|
+
/** Hold time of the result track before the next round. */
|
|
100
|
+
resultMs?: {
|
|
101
|
+
success: number;
|
|
102
|
+
fail: number;
|
|
103
|
+
};
|
|
104
|
+
successProbability: number;
|
|
105
|
+
success?: {
|
|
106
|
+
effects: PetGameplayEffect[];
|
|
107
|
+
};
|
|
108
|
+
fail?: {
|
|
109
|
+
effects: PetGameplayEffect[];
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
sleep?: {
|
|
113
|
+
state: string;
|
|
114
|
+
wakeState?: string;
|
|
115
|
+
restore: {
|
|
116
|
+
stat: string;
|
|
117
|
+
amount: number;
|
|
118
|
+
intervalMs: number;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
passiveIncome?: {
|
|
122
|
+
currency: string;
|
|
123
|
+
amount: number;
|
|
124
|
+
intervalMs: number;
|
|
125
|
+
};
|
|
126
|
+
shop?: {
|
|
127
|
+
state?: string;
|
|
128
|
+
items: PetGameplayShopItem[];
|
|
129
|
+
};
|
|
130
|
+
/** Track played while the chrome reports dragging (default 'drag'). */
|
|
131
|
+
dragState?: string;
|
|
132
|
+
/** Track played once when a drag ends (miku: standup), before settling. */
|
|
133
|
+
dragEndState?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface GameplayParseHooks {
|
|
136
|
+
/** State names the renderer can play (frames2d track ids). */
|
|
137
|
+
stateNames: ReadonlySet<string>;
|
|
138
|
+
error: (message: string) => void;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Validate the manifest 'gameplay' block (fail-closed). Only frames2d pets
|
|
142
|
+
* may declare gameplay today: every state reference checks against the
|
|
143
|
+
* declared track names.
|
|
144
|
+
*/
|
|
145
|
+
export declare function parseGameplayManifest(raw: unknown, hooks: GameplayParseHooks): PetGameplayManifest | undefined;
|
|
146
|
+
/** Persisted per-pet gameplay state (pet.json 'gameplay' map values). */
|
|
147
|
+
export interface PetGameplayState {
|
|
148
|
+
stats: Record<string, number>;
|
|
149
|
+
currencies: Record<string, number>;
|
|
150
|
+
mode: 'work' | 'sleep' | null;
|
|
151
|
+
/** Epoch ms of the last lazy settle. */
|
|
152
|
+
settledAt: number;
|
|
153
|
+
}
|
|
154
|
+
/** Fresh state for one pet: stats at their initial (default max), no currency. */
|
|
155
|
+
export declare function initialGameplayState(manifest: PetGameplayManifest, now: number): PetGameplayState;
|
|
156
|
+
/** Clamp one stat value into [0, max]; currencies into [0, CURRENCY_MAX]. */
|
|
157
|
+
export declare function clampGameplay(state: PetGameplayState, manifest: PetGameplayManifest): void;
|
|
158
|
+
/**
|
|
159
|
+
* Lazy settle: apply stat decay, passive income and sleep restore for the
|
|
160
|
+
* elapsed wall time since the last settle. Mirrors the treats.ts discipline
|
|
161
|
+
* (no host timers; read paths settle). Returns whether anything changed.
|
|
162
|
+
*/
|
|
163
|
+
export declare function settleGameplay(state: PetGameplayState, manifest: PetGameplayManifest, now: number, options: {
|
|
164
|
+
sessionActive: boolean;
|
|
165
|
+
}): boolean;
|
|
166
|
+
/** Apply one effect vector (touch/work/shop), clamped. */
|
|
167
|
+
export declare function applyGameplayEffects(state: PetGameplayState, manifest: PetGameplayManifest, effects: readonly PetGameplayEffect[]): void;
|
|
168
|
+
/** Roll one touch zone branch; undefined when the roll lands in no-op mass. */
|
|
169
|
+
export declare function rollTouchBranch(zone: PetGameplayTouchZone, rng: () => number): PetGameplayTouchBranch | undefined;
|
|
170
|
+
/** Roll one work tick outcome. */
|
|
171
|
+
export declare function rollWorkOutcome(work: NonNullable<PetGameplayManifest['work']>, rng: () => number): 'success' | 'fail';
|
|
172
|
+
/** Draw one lottery prize tier; uncovered mass falls through to the last tier. */
|
|
173
|
+
export declare function drawLotteryTier(lottery: NonNullable<PetGameplayShopItem['lottery']>, rng: () => number): {
|
|
174
|
+
probability: number;
|
|
175
|
+
prize: number;
|
|
176
|
+
currency?: string;
|
|
177
|
+
};
|
|
178
|
+
/** The zone one normalized hit-box point lands in, if any. */
|
|
179
|
+
export declare function touchZoneAt(touch: {
|
|
180
|
+
zones: PetGameplayTouchZone[];
|
|
181
|
+
}, yFraction: number): PetGameplayTouchZone | undefined;
|
|
182
|
+
//# sourceMappingURL=gameplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gameplay.d.ts","sourceRoot":"","sources":["../../src/gameplay.ts"],"names":[],"mappings":"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"}
|