- Darts: native 500-point match against Max with sway/fatigue mouse aim, parabolic throw camera, raster arm animations, and 16 camera-relative flying dart views - AI Observer: autonomous spectator mode for Hold'em, Blackjack, Durak, and Billiards with profile isolation and playback controls - Fortune Session: raster sprite packs, mist/orb animations, tarot divination spreads, and pack tools - Hall Integration: wall dartboard in lounge, observer terminal dispatch, and bot turn hooks - Packaging & Verification: updated installer streaming hash, synchronized launcher, passing check suites and release smoke checks
58 lines
3.2 KiB
Markdown
58 lines
3.2 KiB
Markdown
# Seated Fortune Session
|
|
|
|
The room interaction opens a fixed first-person view across the table. No player
|
|
position, camera or bankroll state is modified. Escape or Exit returns to walking.
|
|
All runtime input, random card selection, state transitions and rendering are MASM
|
|
in `src_graphics/fortune_dialog.inc`; Python only compiles offline image assets.
|
|
|
|
## Tarot
|
|
|
|
Enter a question (up to 240 CP1251 characters), then Ask or Enter. The question
|
|
stays visible under the table for the entire reading and cannot change midway.
|
|
Three distinct major arcana are selected in assembly, each with an orientation.
|
|
The 22 symbolic illustrations have separately packed 180-degree reversed faces.
|
|
|
|
Sequence: shuffle 3.2 s; deal cards individually 1 s each; turn a card over 0.8 s;
|
|
show its name, orientation and honest unavailable explanation 3.6 s; repeat for
|
|
the next two cards; show the overall-answer placeholder; finish. Continue can
|
|
advance a completed speech, never skip a deal or a flip. Again clears the question
|
|
only after completion; Selection can return to the choice of scenes at any time.
|
|
|
|
Speech is composited beside the teller, not an OS window. Its border grows with
|
|
the visible text. Characters reveal every 28 ms with a short upward pop. Rendering
|
|
does not advance timers: the session updates from the game clock, with bounded
|
|
steps after stalls. No neural worker or algorithmic reading generator is called.
|
|
|
|
## Crystal Ball
|
|
|
|
The second selection raises a crystal ball and animates gloved hands with swirling
|
|
blue mist. It ends with an explicit unavailable-result line. There is no real
|
|
student grading, inference of merit, identity form or automated academic decision.
|
|
Again replays the visual sequence. This limitation is deliberate, not a hidden
|
|
random grade presented as a judgement.
|
|
|
|
## Assets
|
|
|
|
Generated source art and production prompts: `assets/sprites/fortune/`.
|
|
Offline packer: `tools/generators/pack_fortune_session.py`.
|
|
Runtime packs: `assets/animations/fortune/` (ANM1 format).
|
|
|
|
Forty authored poses are arranged on one shared anchored 8x5 sheet. Shared-canvas
|
|
in-betweens yield 64 shuffle, 32 deal, 32 gesture and 32 orb-hand frames. Sixteen
|
|
mist frames, 44 oriented card faces, a back and a 640x480 room complete the scene.
|
|
Art loads only when seated and all seven packs are freed on exit/shutdown. The
|
|
seated view is independent of the walking room's existing asset packs and map.
|
|
|
|
## Verification
|
|
|
|
Run `C:/Python314/python.exe tools/tests/check_hall_expansion.py` after packing.
|
|
The fresh native x86 harness exercises real WM_CHAR input, length/backspace,
|
|
empty/double submission, all stage transitions, card uniqueness, speech growth,
|
|
question persistence, crystal-ball stages, exit during animation, asset cleanup
|
|
and unchanged player position/bank. It writes actual framebuffer BMP/PNG captures
|
|
and a 64-frame shuffle GIF under `build/hall-expansion/`. Python additionally checks
|
|
native-frame differences, question pixels, pack integrity and reversed artwork.
|
|
`--parity` checks these tested procedures against the shipping game object.
|
|
|
|
The old multi-gigabyte neural ZIP is not rebuilt by this feature. Distributions
|
|
must include the new `assets/animations/fortune/` directory with the updated game.
|