five-on-it / packages/sim/src/drag
packages/sim/src/drag
Dragging bodies (GAME_DESIGN §8): a player takes hold of a body (an NPC lying asleep, knocked out or dead: no player, no passer-by, no dog) by holding the interaction key at it a moment (holds.ts' drag; a tap of the key searches its pockets as ever), and drags it along behind on a rope's length (DRAG.gap): the body slides after the dragger wherever it walks, at a walk slower than a stroll, never a run, a jump nor a shot (both hands are busy). The key again lets go of it where it lies (letGo); at a mission's dumpster (devices.ts), held a moment, it hides the body inside (stash): out of the world for good (indoors, character.ts' setIndoors), where no guard ever finds it, its dumpster remembered (Character.hiddenIn) and a device event raised (stashed).
The dragger lets go by itself when it is laid down, gets in a car, climbs, swims, or the body gets up, goes or slides out of reach. The links both ways (Character.dragging, Character.draggedBy) are components, hashed with the rest; the act shows it (drag). A client's twin of a dragger takes hold from that act (setDragging); a twin of a body the snapshots move, a proxy never pulled.