Implement 32x32 BFS visitor navigation and daily contracts system with companion .npc journals; add native assembly scenes for Clover slots, Pyramid cards, Blackjack Party and Russian Party; package animation and sprite packs; add comprehensive offline test suites and rebuild shipping binaries.
3.2 KiB
Native Visitors and Contracts
The graphical runtime remains MASM. The user's six personality records in
npc_mind_data.inc are retained. The visible people now read the positions of
those records instead of a separate, unrelated square-loop animation.
npc_life.inc owns bounded 32x32 BFS navigation, millisecond walking with
fractional carry, standing, seated lounge visits, entrance departures and
replacement visitors. All proposed steps check the existing body-clearance,
furniture/stage collision rules, the player and other visitors. A blocked person
stops animating their feet and chooses another destination after waiting.
The six active slots alternate between twelve identities. Standing/walking and
seated poses use the existing interior sprite pack; a full animated transition
into a chair and additional directional interior poses are not implemented yet.
Exterior people use outdoor sprites and long sidewalk routes, not courtyard
pacing or indoor guest sprites.
Press E when the conversation prompt appears. The owned graphical modal has accept, reward and close commands. Mouse, 1/2, Enter, 0 and Escape work without console input. The conversation holds the scene while it is open.
Twelve contract types cover played/won rounds of native coin, blackjack, poker, European roulette, 777 and Durak. The any-round contract also counts Russian roulette, Buckshot, dice, cups and skill checks. Only settled paid rounds count, with wins requiring a positive result rather than a push. Progress starts after acceptance; tasks remain associated with visitor identity even while that person is absent. Offers rotate with the local calendar and visitors. Rewards range from $150 to $700 and are capped by the game's existing billion-dollar balance limit.
Each local save has a companion .npc journal. It contains a date, bounded
accepted/claimed masks, capped progress and a checksum. Truncated, malformed,
wrong-date and cross-profile journals are not imported. Completed contracts
cannot be claimed twice after closing/reopening the dialog or restarting.
Journal write failures do not award repeatable money. The existing wallet save
and companion journal are separate writes; an abrupt power loss between them
can lose the reward credit, so this is not a transactional banking system.
The original save format and the legacy forty-task daily pool are unchanged.
Native tests exercise ten reachable destinations, equal-time movement at three
update rates, two minutes of body-clearance checks for all six visitors, capped
progress, early/double claims, persistence, profile isolation, day rollover,
mouse dialog commands and Escape. They use only journals inside build fixtures.
check_npc_life.py --parity checks three native framebuffer captures and
tested/shipping procedure parity.
Multiplayer Tables
The user's legacy four-seat poker/personality code is preserved. It is not called from the graphical casino because it uses console input/output. The existing native tables remain heads-up. Native three/four-seat poker needs proper repeated betting turns, ties, all-ins/side pots, exit settlement and seated opponent rendering before it can replace that loop. Russian roulette and Buckshot likewise still use their existing two-actor scenes.