dfhack-remote-node 2.0.0
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/LICENSE.md +16 -0
- package/README.md +126 -0
- package/build/proto.json +4390 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.js +4762 -0
- package/dist/index.js.map +1 -0
- package/package.json +66 -0
- package/proto/AdventureControl.proto +109 -0
- package/proto/Basic.proto +207 -0
- package/proto/BasicApi.proto +109 -0
- package/proto/CoreProtocol.proto +92 -0
- package/proto/DwarfControl.proto +97 -0
- package/proto/ItemdefInstrument.proto +108 -0
- package/proto/RemoteFortressReader.proto +1131 -0
- package/proto/ui_sidebar_mode.proto +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/connection.ts","../src/errors.ts","../src/codec.ts","../src/methods.ts","../src/proto.ts","../build/proto.json","../src/client.ts"],"sourcesContent":["// Node net.Socket transport for DFHack Remote RPC.\n//\n// Replaces the original browser WebSocket + websockify proxy: DFHack speaks raw\n// TCP on localhost:5000, so in Node we talk to it directly. The wire framing is\n// unchanged (see codec.ts).\n//\n// DFHack processes one call at a time on the socket, so calls are serialized\n// through a queue. Each call resolves with { result, text } where `result` is\n// the RESULT frame body (Buffer) and `text` is the concatenated console output\n// from any interleaved TEXT frames — the piece the original client discarded.\n\nimport net from 'node:net';\nimport { REQUEST_MAGIC, RPC_REPLY, encodeMessage, readHandshake, readFrame } from './codec.ts';\nimport type { Frame } from './codec.ts';\nimport { ProtocolError, RpcError } from './errors.ts';\n\nconst DEFAULT_HOST = '127.0.0.1';\nconst DEFAULT_PORT = 5000;\n\n/** Turns a TEXT frame body into a string. */\nexport type TextDecoder = (body: Buffer) => string;\n\nexport interface DfConnectionOptions {\n host?: string;\n port?: number;\n textDecoder?: TextDecoder;\n}\n\n/** Result of one RPC call: the RESULT body plus captured console output. */\nexport interface CallResult {\n result: Buffer;\n text: string;\n}\n\ninterface PendingCall {\n id: number;\n body: Uint8Array;\n resolve: (value: CallResult) => void;\n reject: (err: Error) => void;\n}\n\nexport class DfConnection {\n readonly host: string;\n readonly port: number;\n\n private readonly decodeText: TextDecoder;\n private sock: net.Socket | null = null;\n private ready: Promise<void> | null = null;\n private buf: Buffer = Buffer.alloc(0);\n private shookHands = false;\n private queue: PendingCall[] = [];\n private active: PendingCall | null = null;\n private textFrames: Buffer[] = [];\n\n constructor({ host = DEFAULT_HOST, port = DEFAULT_PORT, textDecoder }: DfConnectionOptions = {}) {\n this.host = host;\n this.port = port;\n // Default: raw utf-8 of the frame body. The client swaps in a\n // CoreTextNotification decoder.\n this.decodeText = textDecoder ?? ((body) => body.toString('utf8'));\n }\n\n /** True once connected and past the handshake. */\n get connected(): boolean {\n return this.shookHands;\n }\n\n /** Connect and complete the handshake. Resolves once ready for calls. */\n connect(): Promise<void> {\n if (this.ready) return this.ready;\n this.ready = new Promise<void>((resolve, reject) => {\n const sock = net.createConnection({ host: this.host, port: this.port });\n this.sock = sock;\n sock.on('connect', () => sock.write(REQUEST_MAGIC));\n sock.on('data', (chunk: Buffer) => {\n try {\n this.onData(chunk, resolve);\n } catch (err) {\n this.fail(err as Error);\n reject(err as Error);\n }\n });\n sock.on('error', (err) => {\n this.fail(err);\n reject(err);\n });\n sock.on('close', () => this.fail(new Error('connection closed')));\n });\n return this.ready;\n }\n\n private onData(chunk: Buffer, onHandshake: () => void): void {\n this.buf = this.buf.length ? Buffer.concat([this.buf, chunk]) : chunk;\n\n if (!this.shookHands) {\n const consumed = readHandshake(this.buf);\n if (consumed === 0) return; // need more bytes\n this.buf = this.buf.subarray(consumed);\n this.shookHands = true;\n onHandshake();\n this.pump();\n }\n\n // Parse as many complete frames as the buffer holds.\n for (;;) {\n const parsed = readFrame(this.buf);\n if (!parsed) break;\n this.buf = this.buf.subarray(parsed.consumed);\n this.handleFrame(parsed.frame);\n }\n }\n\n private handleFrame(frame: Frame): void {\n if (frame.id === RPC_REPLY.TEXT) {\n if (frame.body) this.textFrames.push(frame.body);\n return;\n }\n\n const call = this.active;\n this.active = null;\n const text = this.textFrames.map((b) => this.decodeText(b)).join('');\n this.textFrames = [];\n\n if (!call) {\n // A reply with no waiting call: protocol desync — surface loudly.\n this.fail(new ProtocolError('reply frame with no pending call'));\n return;\n }\n\n if (frame.id === RPC_REPLY.FAIL) {\n const detail = text.trim();\n call.reject(\n new RpcError(\n `RPC call failed (${frame.size})${detail ? `: ${detail}` : ''}`,\n frame.size,\n text\n )\n );\n } else if (frame.id === RPC_REPLY.RESULT) {\n call.resolve({ result: frame.body ?? Buffer.alloc(0), text });\n } else {\n call.reject(new ProtocolError(`unexpected frame id ${frame.id}`));\n }\n this.pump();\n }\n\n /** Send the next queued call if the socket is idle. */\n private pump(): void {\n if (!this.shookHands || this.active || this.queue.length === 0 || !this.sock) return;\n const call = this.queue.shift()!;\n this.active = call;\n this.textFrames = [];\n this.sock.write(encodeMessage(call.id, call.body));\n }\n\n /**\n * Send one RPC call. `id` is the bound method id (0 for BindMethod).\n * Returns { result: Buffer, text: string }.\n */\n call(id: number, body: Uint8Array): Promise<CallResult> {\n return new Promise<CallResult>((resolve, reject) => {\n this.queue.push({ id, body, resolve, reject });\n this.pump();\n });\n }\n\n private fail(err: Error): void {\n const pending = this.active ? [this.active, ...this.queue] : [...this.queue];\n this.active = null;\n this.queue = [];\n for (const call of pending) call.reject(err);\n }\n\n close(): void {\n if (this.sock) {\n this.sock.end();\n this.sock = null;\n }\n this.shookHands = false;\n this.ready = null;\n }\n}\n","// Error types for the DFHack Remote RPC client.\n\n/** Thrown when the peer violates the wire protocol (bad magic, stray frame, …). */\nexport class ProtocolError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ProtocolError';\n }\n}\n\n/**\n * Thrown when an RPC call returns a FAIL frame.\n * `code` is DFHack's command_result (see {@link CR}); `text` is any console\n * (TEXT) output the call produced before failing.\n */\nexport class RpcError extends Error {\n readonly code: number;\n readonly text: string;\n\n constructor(message: string, code: number, text = '') {\n super(message);\n this.name = 'RpcError';\n this.code = code;\n this.text = text;\n }\n}\n","// Low-level wire codec for the DFHack Remote RPC protocol.\n//\n// Protocol (see DFHack library/RemoteServer.cpp, library/include/RemoteClient.h):\n// Handshake:\n// -> RPCHandshakeHeader { magic: \"DFHack?\\n\", version: i32 = 1 }\n// <- RPCHandshakeHeader { magic: \"DFHack!\\n\", version: i32 = 1 }\n// Per call:\n// -> RPCMessage { header { id: i16, pad: u16, size: i32 }, body[size] }\n// <- RPCReply = { {TEXT, CoreTextNotification}* , (RESULT | FAIL) }\n//\n// A single call's reply is zero or more TEXT frames (console output) followed\n// by exactly one RESULT frame (body = the reply protobuf) or one FAIL frame\n// (size field carries the errno; no body). This module parses individual\n// frames off a Buffer; call-level accumulation lives in connection.ts.\n\nimport { ProtocolError } from './errors.ts';\n\n/** 'DFHack?\\n' + i32(1) — the bytes the client sends to open the connection. */\nexport const REQUEST_MAGIC = Buffer.from([68, 70, 72, 97, 99, 107, 63, 10, 1, 0, 0, 0]);\n\n/** 'DFHack!\\n' — the 8 magic bytes of the server's handshake reply. */\nexport const RESPONSE_MAGIC = Buffer.from([68, 70, 72, 97, 99, 107, 33, 10]);\n\nexport const HANDSHAKE_LEN = 12; // 8 magic + 4 version\n\n/** Reserved reply ids (RPCMessageHeader.id) — real methods use non-negative ids. */\nexport const RPC_REPLY = { RESULT: -1, FAIL: -2, TEXT: -3 } as const;\nexport const RPC_REQUEST = { QUIT: -4 } as const;\n\n/** Error codes carried in a FAIL frame's size field (DFHack command_result). */\nexport const CR = {\n LINK_FAILURE: -3,\n NEEDS_CONSOLE: -2,\n NOT_IMPLEMENTED: -1,\n OK: 0,\n FAILURE: 1,\n WRONG_USAGE: 2,\n NOT_FOUND: 3,\n} as const;\n\nconst HEADER_LEN = 8;\nconst MAX_BODY = 64 * 1024 * 1024; // 64 MiB sanity cap, matches DFHack\n\n/** One parsed reply frame. `body` is null for FAIL frames (size holds the errno). */\nexport interface Frame {\n id: number;\n size: number;\n body: Buffer | null;\n}\n\n/** A frame plus how many bytes it consumed from the front of the buffer. */\nexport interface ParsedFrame {\n frame: Frame;\n consumed: number;\n}\n\n/** Encode one request message: 8-byte header (id, pad, size) + body. */\nexport function encodeMessage(id: number, body: Uint8Array): Buffer {\n const buf = Buffer.allocUnsafe(HEADER_LEN + body.length);\n buf.writeInt16LE(id, 0);\n buf.writeUInt16LE(0, 2); // padding\n buf.writeInt32LE(body.length, 4);\n Buffer.from(body).copy(buf, HEADER_LEN);\n return buf;\n}\n\n/**\n * Try to read the handshake reply from the front of `buf`.\n * Returns the number of bytes consumed (HANDSHAKE_LEN) once available, or 0 if\n * more data is needed. Throws ProtocolError if the magic doesn't match.\n */\nexport function readHandshake(buf: Buffer): number {\n if (buf.length < HANDSHAKE_LEN) return 0;\n if (!buf.subarray(0, 8).equals(RESPONSE_MAGIC)) {\n throw new ProtocolError('invalid DFHack handshake response');\n }\n return HANDSHAKE_LEN;\n}\n\n/**\n * Try to parse one frame off the front of `buf`.\n * Returns { frame, consumed }, or null if a complete frame isn't available yet.\n * For FAIL frames `size` is the errno and `body` is null; for RESULT/TEXT `body`\n * is a Buffer of length `size`.\n */\nexport function readFrame(buf: Buffer): ParsedFrame | null {\n if (buf.length < HEADER_LEN) return null;\n const id = buf.readInt16LE(0);\n const size = buf.readInt32LE(4);\n\n if (id === RPC_REPLY.FAIL) {\n // FAIL carries the errno in `size`; there is no body.\n return { frame: { id, size, body: null }, consumed: HEADER_LEN };\n }\n\n if (id === RPC_REPLY.RESULT || id === RPC_REPLY.TEXT) {\n if (size < 0 || size > MAX_BODY) {\n throw new ProtocolError(`invalid frame body size ${size}`);\n }\n if (buf.length < HEADER_LEN + size) return null; // wait for full body\n const body = Buffer.from(buf.subarray(HEADER_LEN, HEADER_LEN + size));\n return { frame: { id, size, body }, consumed: HEADER_LEN + size };\n }\n\n throw new ProtocolError(`unexpected reply id ${id}`);\n}\n","// The RPC method table.\n//\n// `input`/`output` are FULLY-QUALIFIED protobuf type names (with package),\n// because a method's input and output can live in different packages — e.g. RFR\n// methods take a dfproto.EmptyMessage but return a RemoteFortressReader.* message.\n// This is exactly the full name DFHack matches during BindMethod, so a mismatch\n// here surfaces as \"Requested wrong signature for RPC method\".\n// Ported from FUNC_DEFS in the original lib.js; extend as tools need methods.\n\n/** One RPC method definition. `plugin` is null for core (dfproto) methods. */\nexport interface MethodDef {\n plugin: string | null;\n input: string;\n output: string;\n}\n\nexport const METHODS = {\n // core (dfproto package)\n BindMethod: { plugin: null, input: 'dfproto.CoreBindRequest', output: 'dfproto.CoreBindReply' },\n RunCommand: {\n plugin: null,\n input: 'dfproto.CoreRunCommandRequest',\n output: 'dfproto.EmptyMessage',\n },\n RunLua: { plugin: null, input: 'dfproto.CoreRunLuaRequest', output: 'dfproto.StringListMessage' },\n GetVersion: { plugin: null, input: 'dfproto.EmptyMessage', output: 'dfproto.StringMessage' },\n GetDFVersion: { plugin: null, input: 'dfproto.EmptyMessage', output: 'dfproto.StringMessage' },\n GetWorldInfo: { plugin: null, input: 'dfproto.EmptyMessage', output: 'dfproto.GetWorldInfoOut' },\n ListUnits: { plugin: null, input: 'dfproto.ListUnitsIn', output: 'dfproto.ListUnitsOut' },\n ListSquads: { plugin: null, input: 'dfproto.ListSquadsIn', output: 'dfproto.ListSquadsOut' },\n\n // RemoteFortressReader plugin: dfproto.EmptyMessage in, RemoteFortressReader.* out.\n GetMapInfo: {\n plugin: 'RemoteFortressReader',\n input: 'dfproto.EmptyMessage',\n output: 'RemoteFortressReader.MapInfo',\n },\n GetUnitList: {\n plugin: 'RemoteFortressReader',\n input: 'dfproto.EmptyMessage',\n output: 'RemoteFortressReader.UnitList',\n },\n GetViewInfo: {\n plugin: 'RemoteFortressReader',\n input: 'dfproto.EmptyMessage',\n output: 'RemoteFortressReader.ViewInfo',\n },\n GetWorldMapCenter: {\n plugin: 'RemoteFortressReader',\n input: 'dfproto.EmptyMessage',\n output: 'RemoteFortressReader.WorldMap',\n },\n} as const satisfies Record<string, MethodDef>;\n\n/** Names of every method in {@link METHODS}. */\nexport type MethodName = keyof typeof METHODS;\n","// proto.json loading.\n//\n// The compiled protobuf bundle is imported as a JSON module (not read via\n// readFileSync) so the bundler inlines it into dist and there's no __dirname\n// fragility. `build/proto.json` is committed and regenerated with `gen-proto`.\n\nimport protobuf from 'protobufjs';\nimport protoJson from '../build/proto.json' with { type: 'json' };\n\n/**\n * Build the protobuf Root from the committed bundle, applying the runtime\n * fix-ups the DFHack wire data needs.\n */\nexport function loadRoot(): protobuf.Root {\n const root = protobuf.Root.fromJSON(protoJson as unknown as protobuf.INamespace);\n relaxMapBlock(root);\n return root;\n}\n\n/**\n * RFR sends MapBlock without the \"required\" x/y/z the old proto declared; relax\n * them so decode doesn't throw. Harmless if the fields are absent.\n */\nfunction relaxMapBlock(root: protobuf.Root): void {\n const mapBlock = root.lookup('RemoteFortressReader.MapBlock') as protobuf.Type | null;\n if (!mapBlock?.fields) return;\n for (const name of ['mapX', 'mapY', 'mapZ']) {\n // `rule` exists on the runtime Field (field.js) but isn't on its d.ts.\n const field = mapBlock.fields[name] as (protobuf.Field & { rule?: string }) | undefined;\n if (field && field.rule === 'required') field.rule = 'optional';\n }\n}\n","{\n \"nested\": {\n \"AdventureControl\": {\n \"options\": {\n \"optimize_for\": \"LITE_RUNTIME\"\n },\n \"nested\": {\n \"AdvmodeMenu\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"Default\": 0,\n \"Look\": 1,\n \"ConversationAddress\": 2,\n \"ConversationSelect\": 3,\n \"ConversationSpeak\": 4,\n \"Inventory\": 5,\n \"Drop\": 6,\n \"ThrowItem\": 7,\n \"Wear\": 8,\n \"Remove\": 9,\n \"Interact\": 10,\n \"Put\": 11,\n \"PutContainer\": 12,\n \"Eat\": 13,\n \"ThrowAim\": 14,\n \"Fire\": 15,\n \"Get\": 16,\n \"Unk17\": 17,\n \"CombatPrefs\": 18,\n \"Companions\": 19,\n \"MovementPrefs\": 20,\n \"SpeedPrefs\": 21,\n \"InteractAction\": 22,\n \"MoveCarefully\": 23,\n \"Announcements\": 24,\n \"UseBuilding\": 25,\n \"Travel\": 26,\n \"Unk27\": 27,\n \"Unk28\": 28,\n \"SleepConfirm\": 29,\n \"SelectInteractionTarget\": 30,\n \"Unk31\": 31,\n \"Unk32\": 32,\n \"FallAction\": 33,\n \"ViewTracks\": 34,\n \"Jump\": 35,\n \"Unk36\": 36,\n \"AttackConfirm\": 37,\n \"AttackType\": 38,\n \"AttackBodypart\": 39,\n \"AttackStrike\": 40,\n \"Unk41\": 41,\n \"Unk42\": 42,\n \"DodgeDirection\": 43,\n \"Unk44\": 44,\n \"Unk45\": 45,\n \"Build\": 46\n }\n },\n \"CarefulMovementType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"DEFAULT_MOVEMENT\": 0,\n \"RELEASE_ITEM_HOLD\": 1,\n \"RELEASE_TILE_HOLD\": 2,\n \"ATTACK_CREATURE\": 3,\n \"HOLD_TILE\": 4,\n \"MOVE\": 5,\n \"CLIMB\": 6,\n \"HOLD_ITEM\": 7,\n \"BUILDING_INTERACT\": 8,\n \"ITEM_INTERACT\": 9,\n \"ITEM_INTERACT_GUIDE\": 10,\n \"ITEM_INTERACT_RIDE\": 11,\n \"ITEM_INTERACT_PUSH\": 12\n }\n },\n \"MiscMoveType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"SET_CLIMB\": 0,\n \"SET_STAND\": 1,\n \"SET_CANCEL\": 2\n }\n },\n \"MoveCommandParams\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"direction\": {\n \"type\": \"RemoteFortressReader.Coord\",\n \"id\": 1\n }\n }\n },\n \"MovementOption\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"dest\": {\n \"type\": \"RemoteFortressReader.Coord\",\n \"id\": 1\n },\n \"source\": {\n \"type\": \"RemoteFortressReader.Coord\",\n \"id\": 2\n },\n \"grab\": {\n \"type\": \"RemoteFortressReader.Coord\",\n \"id\": 3\n },\n \"movementType\": {\n \"type\": \"CarefulMovementType\",\n \"id\": 4\n }\n }\n },\n \"MenuContents\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"currentMenu\": {\n \"type\": \"AdvmodeMenu\",\n \"id\": 1\n },\n \"movements\": {\n \"rule\": \"repeated\",\n \"type\": \"MovementOption\",\n \"id\": 2\n }\n }\n },\n \"MiscMoveParams\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"type\": \"MiscMoveType\",\n \"id\": 1\n }\n }\n }\n }\n },\n \"RemoteFortressReader\": {\n \"options\": {\n \"optimize_for\": \"LITE_RUNTIME\"\n },\n \"nested\": {\n \"TiletypeShape\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NO_SHAPE\": -1,\n \"EMPTY\": 0,\n \"FLOOR\": 1,\n \"BOULDER\": 2,\n \"PEBBLES\": 3,\n \"WALL\": 4,\n \"FORTIFICATION\": 5,\n \"STAIR_UP\": 6,\n \"STAIR_DOWN\": 7,\n \"STAIR_UPDOWN\": 8,\n \"RAMP\": 9,\n \"RAMP_TOP\": 10,\n \"BROOK_BED\": 11,\n \"BROOK_TOP\": 12,\n \"TREE_SHAPE\": 13,\n \"SAPLING\": 14,\n \"SHRUB\": 15,\n \"ENDLESS_PIT\": 16,\n \"BRANCH\": 17,\n \"TRUNK_BRANCH\": 18,\n \"TWIG\": 19\n }\n },\n \"TiletypeSpecial\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NO_SPECIAL\": -1,\n \"NORMAL\": 0,\n \"RIVER_SOURCE\": 1,\n \"WATERFALL\": 2,\n \"SMOOTH\": 3,\n \"FURROWED\": 4,\n \"WET\": 5,\n \"DEAD\": 6,\n \"WORN_1\": 7,\n \"WORN_2\": 8,\n \"WORN_3\": 9,\n \"TRACK\": 10,\n \"SMOOTH_DEAD\": 11\n }\n },\n \"TiletypeMaterial\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NO_MATERIAL\": -1,\n \"AIR\": 0,\n \"SOIL\": 1,\n \"STONE\": 2,\n \"FEATURE\": 3,\n \"LAVA_STONE\": 4,\n \"MINERAL\": 5,\n \"FROZEN_LIQUID\": 6,\n \"CONSTRUCTION\": 7,\n \"GRASS_LIGHT\": 8,\n \"GRASS_DARK\": 9,\n \"GRASS_DRY\": 10,\n \"GRASS_DEAD\": 11,\n \"PLANT\": 12,\n \"HFS\": 13,\n \"CAMPFIRE\": 14,\n \"FIRE\": 15,\n \"ASHES\": 16,\n \"MAGMA\": 17,\n \"DRIFTWOOD\": 18,\n \"POOL\": 19,\n \"BROOK\": 20,\n \"RIVER\": 21,\n \"ROOT\": 22,\n \"TREE_MATERIAL\": 23,\n \"MUSHROOM\": 24,\n \"UNDERWORLD_GATE\": 25\n }\n },\n \"TiletypeVariant\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NO_VARIANT\": -1,\n \"VAR_1\": 0,\n \"VAR_2\": 1,\n \"VAR_3\": 2,\n \"VAR_4\": 3\n }\n },\n \"WorldPoles\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NO_POLES\": 0,\n \"NORTH_POLE\": 1,\n \"SOUTH_POLE\": 2,\n \"BOTH_POLES\": 3\n }\n },\n \"BuildingDirection\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NORTH\": 0,\n \"EAST\": 1,\n \"SOUTH\": 2,\n \"WEST\": 3,\n \"NORTHEAST\": 4,\n \"SOUTHEAST\": 5,\n \"SOUTHWEST\": 6,\n \"NORTHWEST\": 7,\n \"NONE\": 8\n }\n },\n \"TileDigDesignation\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NO_DIG\": 0,\n \"DEFAULT_DIG\": 1,\n \"UP_DOWN_STAIR_DIG\": 2,\n \"CHANNEL_DIG\": 3,\n \"RAMP_DIG\": 4,\n \"DOWN_STAIR_DIG\": 5,\n \"UP_STAIR_DIG\": 6\n }\n },\n \"HairStyle\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"UNKEMPT\": -1,\n \"NEATLY_COMBED\": 0,\n \"BRAIDED\": 1,\n \"DOUBLE_BRAID\": 2,\n \"PONY_TAILS\": 3,\n \"CLEAN_SHAVEN\": 4\n }\n },\n \"InventoryMode\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"Hauled\": 0,\n \"Weapon\": 1,\n \"Worn\": 2,\n \"Piercing\": 3,\n \"Flask\": 4,\n \"WrappedAround\": 5,\n \"StuckIn\": 6,\n \"InMouth\": 7,\n \"Pet\": 8,\n \"SewnInto\": 9,\n \"Strapped\": 10\n }\n },\n \"ArmorLayer\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"LAYER_UNDER\": 0,\n \"LAYER_OVER\": 1,\n \"LAYER_ARMOR\": 2,\n \"LAYER_COVER\": 3\n }\n },\n \"Coord\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"x\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"y\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"z\": {\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"Tiletype\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"caption\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"shape\": {\n \"type\": \"TiletypeShape\",\n \"id\": 4\n },\n \"special\": {\n \"type\": \"TiletypeSpecial\",\n \"id\": 5\n },\n \"material\": {\n \"type\": \"TiletypeMaterial\",\n \"id\": 6\n },\n \"variant\": {\n \"type\": \"TiletypeVariant\",\n \"id\": 7\n },\n \"direction\": {\n \"type\": \"string\",\n \"id\": 8\n }\n }\n },\n \"TiletypeList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"tiletypeList\": {\n \"rule\": \"repeated\",\n \"type\": \"Tiletype\",\n \"id\": 1\n }\n }\n },\n \"BuildingExtents\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"posX\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"posY\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"width\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 3\n },\n \"height\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 4\n },\n \"extents\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 5\n }\n }\n },\n \"BuildingItem\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"item\": {\n \"type\": \"Item\",\n \"id\": 1\n },\n \"mode\": {\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n },\n \"BuildingInstance\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"index\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"posXMin\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"posYMin\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"posZMin\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"posXMax\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"posYMax\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"posZMax\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"buildingType\": {\n \"type\": \"BuildingType\",\n \"id\": 8\n },\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 9\n },\n \"buildingFlags\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"isRoom\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"room\": {\n \"type\": \"BuildingExtents\",\n \"id\": 12\n },\n \"direction\": {\n \"type\": \"BuildingDirection\",\n \"id\": 13\n },\n \"items\": {\n \"rule\": \"repeated\",\n \"type\": \"BuildingItem\",\n \"id\": 14\n },\n \"active\": {\n \"type\": \"int32\",\n \"id\": 15\n }\n }\n },\n \"RiverEdge\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"minPos\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"maxPos\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"active\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"elevation\": {\n \"type\": \"int32\",\n \"id\": 4\n }\n }\n },\n \"RiverTile\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"north\": {\n \"type\": \"RiverEdge\",\n \"id\": 1\n },\n \"south\": {\n \"type\": \"RiverEdge\",\n \"id\": 2\n },\n \"east\": {\n \"type\": \"RiverEdge\",\n \"id\": 3\n },\n \"west\": {\n \"type\": \"RiverEdge\",\n \"id\": 4\n }\n }\n },\n \"MatterState\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"Solid\": 0,\n \"Liquid\": 1,\n \"Gas\": 2,\n \"Powder\": 3,\n \"Paste\": 4,\n \"Pressed\": 5\n }\n },\n \"Spatter\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 1\n },\n \"amount\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"state\": {\n \"type\": \"MatterState\",\n \"id\": 3\n },\n \"item\": {\n \"type\": \"MatPair\",\n \"id\": 4\n }\n }\n },\n \"SpatterPile\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"spatters\": {\n \"rule\": \"repeated\",\n \"type\": \"Spatter\",\n \"id\": 1\n }\n }\n },\n \"Item\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"pos\": {\n \"type\": \"Coord\",\n \"id\": 2\n },\n \"flags1\": {\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"flags2\": {\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"type\": {\n \"type\": \"MatPair\",\n \"id\": 5\n },\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 6\n },\n \"dye\": {\n \"type\": \"ColorDefinition\",\n \"id\": 7\n },\n \"stackSize\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"subposX\": {\n \"type\": \"float\",\n \"id\": 9\n },\n \"subposY\": {\n \"type\": \"float\",\n \"id\": 10\n },\n \"subposZ\": {\n \"type\": \"float\",\n \"id\": 11\n },\n \"projectile\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"velocityX\": {\n \"type\": \"float\",\n \"id\": 13\n },\n \"velocityY\": {\n \"type\": \"float\",\n \"id\": 14\n },\n \"velocityZ\": {\n \"type\": \"float\",\n \"id\": 15\n },\n \"volume\": {\n \"type\": \"int32\",\n \"id\": 16\n },\n \"improvements\": {\n \"rule\": \"repeated\",\n \"type\": \"ItemImprovement\",\n \"id\": 17\n },\n \"image\": {\n \"type\": \"ArtImage\",\n \"id\": 18\n }\n }\n },\n \"PlantTile\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"trunk\": {\n \"type\": \"bool\",\n \"id\": 1\n },\n \"connectionEast\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"connectionSouth\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"connectionWest\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"connectionNorth\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"branches\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"twigs\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"tileType\": {\n \"type\": \"TiletypeSpecial\",\n \"id\": 8\n }\n }\n },\n \"TreeInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"size\": {\n \"type\": \"Coord\",\n \"id\": 1\n },\n \"tiles\": {\n \"rule\": \"repeated\",\n \"type\": \"PlantTile\",\n \"id\": 2\n }\n }\n },\n \"PlantInstance\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"plantType\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"pos\": {\n \"type\": \"Coord\",\n \"id\": 2\n },\n \"treeInfo\": {\n \"type\": \"TreeInfo\",\n \"id\": 3\n }\n }\n },\n \"MapBlock\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mapX\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"mapY\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"mapZ\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 3\n },\n \"tiles\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 4\n },\n \"materials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 5\n },\n \"layerMaterials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 6\n },\n \"veinMaterials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 7\n },\n \"baseMaterials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 8\n },\n \"magma\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 9\n },\n \"water\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 10\n },\n \"hidden\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 11\n },\n \"light\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 12\n },\n \"subterranean\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 13\n },\n \"outside\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 14\n },\n \"aquifer\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 15\n },\n \"waterStagnant\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 16\n },\n \"waterSalt\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 17\n },\n \"constructionItems\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 18\n },\n \"buildings\": {\n \"rule\": \"repeated\",\n \"type\": \"BuildingInstance\",\n \"id\": 19\n },\n \"treePercent\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 20\n },\n \"treeX\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 21\n },\n \"treeY\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 22\n },\n \"treeZ\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 23\n },\n \"tileDigDesignation\": {\n \"rule\": \"repeated\",\n \"type\": \"TileDigDesignation\",\n \"id\": 24\n },\n \"spatterPile\": {\n \"rule\": \"repeated\",\n \"type\": \"SpatterPile\",\n \"id\": 25\n },\n \"items\": {\n \"rule\": \"repeated\",\n \"type\": \"Item\",\n \"id\": 26\n },\n \"tileDigDesignationMarker\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 27\n },\n \"tileDigDesignationAuto\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 28\n },\n \"grassPercent\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 29\n },\n \"flows\": {\n \"rule\": \"repeated\",\n \"type\": \"FlowInfo\",\n \"id\": 30\n }\n }\n },\n \"MatPair\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"matType\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"matIndex\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n },\n \"ColorDefinition\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"red\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"green\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"blue\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"MaterialDefinition\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"matPair\": {\n \"rule\": \"required\",\n \"type\": \"MatPair\",\n \"id\": 1\n },\n \"id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"stateColor\": {\n \"type\": \"ColorDefinition\",\n \"id\": 4\n },\n \"instrument\": {\n \"type\": \"ItemdefInstrument.InstrumentDef\",\n \"id\": 5\n },\n \"upStep\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"downStep\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"layer\": {\n \"type\": \"ArmorLayer\",\n \"id\": 8\n }\n }\n },\n \"BuildingType\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"buildingType\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"buildingSubtype\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"buildingCustom\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"BuildingDefinition\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"buildingType\": {\n \"rule\": \"required\",\n \"type\": \"BuildingType\",\n \"id\": 1\n },\n \"id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"BuildingList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"buildingList\": {\n \"rule\": \"repeated\",\n \"type\": \"BuildingDefinition\",\n \"id\": 1\n }\n }\n },\n \"MaterialList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"materialList\": {\n \"rule\": \"repeated\",\n \"type\": \"MaterialDefinition\",\n \"id\": 1\n }\n }\n },\n \"Hair\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"length\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"style\": {\n \"type\": \"HairStyle\",\n \"id\": 2\n }\n }\n },\n \"BodySizeInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"sizeCur\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"sizeBase\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"areaCur\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"areaBase\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"lengthCur\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"lengthBase\": {\n \"type\": \"int32\",\n \"id\": 6\n }\n }\n },\n \"UnitAppearance\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"bodyModifiers\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"bpModifiers\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"sizeModifier\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"colors\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 4\n },\n \"hair\": {\n \"type\": \"Hair\",\n \"id\": 5\n },\n \"beard\": {\n \"type\": \"Hair\",\n \"id\": 6\n },\n \"moustache\": {\n \"type\": \"Hair\",\n \"id\": 7\n },\n \"sideburns\": {\n \"type\": \"Hair\",\n \"id\": 8\n },\n \"physicalDescription\": {\n \"type\": \"string\",\n \"id\": 9\n }\n }\n },\n \"InventoryItem\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mode\": {\n \"type\": \"InventoryMode\",\n \"id\": 1\n },\n \"item\": {\n \"type\": \"Item\",\n \"id\": 2\n },\n \"bodyPartId\": {\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"WoundPart\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"globalLayerIdx\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"bodyPartId\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"layerIdx\": {\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"UnitWound\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"parts\": {\n \"rule\": \"repeated\",\n \"type\": \"WoundPart\",\n \"id\": 1\n },\n \"severedPart\": {\n \"type\": \"bool\",\n \"id\": 2\n }\n }\n },\n \"UnitDefinition\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"isValid\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"posX\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"posY\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"posZ\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"race\": {\n \"type\": \"MatPair\",\n \"id\": 6\n },\n \"professionColor\": {\n \"type\": \"ColorDefinition\",\n \"id\": 7\n },\n \"flags1\": {\n \"type\": \"uint32\",\n \"id\": 8\n },\n \"flags2\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"flags3\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"isSoldier\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"sizeInfo\": {\n \"type\": \"BodySizeInfo\",\n \"id\": 12\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 13\n },\n \"bloodMax\": {\n \"type\": \"int32\",\n \"id\": 14\n },\n \"bloodCount\": {\n \"type\": \"int32\",\n \"id\": 15\n },\n \"appearance\": {\n \"type\": \"UnitAppearance\",\n \"id\": 16\n },\n \"professionId\": {\n \"type\": \"int32\",\n \"id\": 17\n },\n \"noblePositions\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 18\n },\n \"riderId\": {\n \"type\": \"int32\",\n \"id\": 19\n },\n \"inventory\": {\n \"rule\": \"repeated\",\n \"type\": \"InventoryItem\",\n \"id\": 20\n },\n \"subposX\": {\n \"type\": \"float\",\n \"id\": 21\n },\n \"subposY\": {\n \"type\": \"float\",\n \"id\": 22\n },\n \"subposZ\": {\n \"type\": \"float\",\n \"id\": 23\n },\n \"facing\": {\n \"type\": \"Coord\",\n \"id\": 24\n },\n \"age\": {\n \"type\": \"int32\",\n \"id\": 25\n },\n \"wounds\": {\n \"rule\": \"repeated\",\n \"type\": \"UnitWound\",\n \"id\": 26\n }\n }\n },\n \"UnitList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"creatureList\": {\n \"rule\": \"repeated\",\n \"type\": \"UnitDefinition\",\n \"id\": 1\n }\n }\n },\n \"BlockRequest\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"blocksNeeded\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"minX\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"maxX\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"minY\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"maxY\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"minZ\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"maxZ\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"forceReload\": {\n \"type\": \"bool\",\n \"id\": 8\n }\n }\n },\n \"BlockList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mapBlocks\": {\n \"rule\": \"repeated\",\n \"type\": \"MapBlock\",\n \"id\": 1\n },\n \"mapX\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"mapY\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"engravings\": {\n \"rule\": \"repeated\",\n \"type\": \"Engraving\",\n \"id\": 4\n },\n \"oceanWaves\": {\n \"rule\": \"repeated\",\n \"type\": \"Wave\",\n \"id\": 5\n }\n }\n },\n \"PlantDef\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"posX\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"posY\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"posZ\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 3\n },\n \"index\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 4\n }\n }\n },\n \"PlantList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"plantList\": {\n \"rule\": \"repeated\",\n \"type\": \"PlantDef\",\n \"id\": 1\n }\n }\n },\n \"ViewInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"viewPosX\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"viewPosY\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"viewPosZ\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"viewSizeX\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"viewSizeY\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"cursorPosX\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"cursorPosY\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"cursorPosZ\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"followUnitId\": {\n \"type\": \"int32\",\n \"id\": 9,\n \"options\": {\n \"default\": -1\n }\n },\n \"followItemId\": {\n \"type\": \"int32\",\n \"id\": 10,\n \"options\": {\n \"default\": -1\n }\n }\n }\n },\n \"MapInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"blockSizeX\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"blockSizeY\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"blockSizeZ\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"blockPosX\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"blockPosY\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"blockPosZ\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"worldName\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"worldNameEnglish\": {\n \"type\": \"string\",\n \"id\": 8\n },\n \"saveName\": {\n \"type\": \"string\",\n \"id\": 9\n }\n }\n },\n \"FrontType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"FRONT_NONE\": 0,\n \"FRONT_WARM\": 1,\n \"FRONT_COLD\": 2,\n \"FRONT_OCCLUDED\": 3\n }\n },\n \"CumulusType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"CUMULUS_NONE\": 0,\n \"CUMULUS_MEDIUM\": 1,\n \"CUMULUS_MULTI\": 2,\n \"CUMULUS_NIMBUS\": 3\n }\n },\n \"StratusType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"STRATUS_NONE\": 0,\n \"STRATUS_ALTO\": 1,\n \"STRATUS_PROPER\": 2,\n \"STRATUS_NIMBUS\": 3\n }\n },\n \"FogType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"FOG_NONE\": 0,\n \"FOG_MIST\": 1,\n \"FOG_NORMAL\": 2,\n \"F0G_THICK\": 3\n }\n },\n \"Cloud\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"front\": {\n \"type\": \"FrontType\",\n \"id\": 1\n },\n \"cumulus\": {\n \"type\": \"CumulusType\",\n \"id\": 2\n },\n \"cirrus\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"stratus\": {\n \"type\": \"StratusType\",\n \"id\": 4\n },\n \"fog\": {\n \"type\": \"FogType\",\n \"id\": 5\n }\n }\n },\n \"WorldMap\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"worldWidth\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"worldHeight\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"nameEnglish\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"elevation\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 5\n },\n \"rainfall\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 6\n },\n \"vegetation\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 7\n },\n \"temperature\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 8\n },\n \"evilness\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 9\n },\n \"drainage\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 10\n },\n \"volcanism\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 11\n },\n \"savagery\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 12\n },\n \"clouds\": {\n \"rule\": \"repeated\",\n \"type\": \"Cloud\",\n \"id\": 13\n },\n \"salinity\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 14\n },\n \"mapX\": {\n \"type\": \"int32\",\n \"id\": 15\n },\n \"mapY\": {\n \"type\": \"int32\",\n \"id\": 16\n },\n \"centerX\": {\n \"type\": \"int32\",\n \"id\": 17\n },\n \"centerY\": {\n \"type\": \"int32\",\n \"id\": 18\n },\n \"centerZ\": {\n \"type\": \"int32\",\n \"id\": 19\n },\n \"curYear\": {\n \"type\": \"int32\",\n \"id\": 20\n },\n \"curYearTick\": {\n \"type\": \"int32\",\n \"id\": 21\n },\n \"worldPoles\": {\n \"type\": \"WorldPoles\",\n \"id\": 22\n },\n \"riverTiles\": {\n \"rule\": \"repeated\",\n \"type\": \"RiverTile\",\n \"id\": 23\n },\n \"waterElevation\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 24\n },\n \"regionTiles\": {\n \"rule\": \"repeated\",\n \"type\": \"RegionTile\",\n \"id\": 25\n }\n }\n },\n \"SiteRealizationBuildingWall\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"startX\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"startY\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"startZ\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"endX\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"endY\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"endZ\": {\n \"type\": \"int32\",\n \"id\": 6\n }\n }\n },\n \"SiteRealizationBuildingTower\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"roofZ\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"round\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"goblin\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"TrenchSpoke\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"moundStart\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"trenchStart\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"trenchEnd\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"moundEnd\": {\n \"type\": \"int32\",\n \"id\": 4\n }\n }\n },\n \"SiteRealizationBuildingTrenches\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"spokes\": {\n \"rule\": \"repeated\",\n \"type\": \"TrenchSpoke\",\n \"id\": 1\n }\n }\n },\n \"SiteRealizationBuilding\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"minX\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"minY\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"maxX\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"maxY\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 7\n },\n \"wallInfo\": {\n \"type\": \"SiteRealizationBuildingWall\",\n \"id\": 8\n },\n \"towerInfo\": {\n \"type\": \"SiteRealizationBuildingTower\",\n \"id\": 9\n },\n \"trenchInfo\": {\n \"type\": \"SiteRealizationBuildingTrenches\",\n \"id\": 10\n },\n \"type\": {\n \"type\": \"int32\",\n \"id\": 11\n }\n }\n },\n \"RegionTile\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"elevation\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"rainfall\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"vegetation\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"temperature\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"evilness\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"drainage\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"volcanism\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"savagery\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"salinity\": {\n \"type\": \"int32\",\n \"id\": 9\n },\n \"riverTiles\": {\n \"type\": \"RiverTile\",\n \"id\": 10\n },\n \"waterElevation\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"surfaceMaterial\": {\n \"type\": \"MatPair\",\n \"id\": 12\n },\n \"plantMaterials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 13\n },\n \"buildings\": {\n \"rule\": \"repeated\",\n \"type\": \"SiteRealizationBuilding\",\n \"id\": 14\n },\n \"stoneMaterials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 15\n },\n \"treeMaterials\": {\n \"rule\": \"repeated\",\n \"type\": \"MatPair\",\n \"id\": 16\n },\n \"snow\": {\n \"type\": \"int32\",\n \"id\": 17\n }\n }\n },\n \"RegionMap\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mapX\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"mapY\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"nameEnglish\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"tiles\": {\n \"rule\": \"repeated\",\n \"type\": \"RegionTile\",\n \"id\": 5\n }\n }\n },\n \"RegionMaps\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"worldMaps\": {\n \"rule\": \"repeated\",\n \"type\": \"WorldMap\",\n \"id\": 1\n },\n \"regionMaps\": {\n \"rule\": \"repeated\",\n \"type\": \"RegionMap\",\n \"id\": 2\n }\n }\n },\n \"PatternType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"MONOTONE\": 0,\n \"STRIPES\": 1,\n \"IRIS_EYE\": 2,\n \"SPOTS\": 3,\n \"PUPIL_EYE\": 4,\n \"MOTTLED\": 5\n }\n },\n \"PatternDescriptor\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"colors\": {\n \"rule\": \"repeated\",\n \"type\": \"ColorDefinition\",\n \"id\": 2\n },\n \"pattern\": {\n \"type\": \"PatternType\",\n \"id\": 3\n }\n }\n },\n \"ColorModifierRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"patterns\": {\n \"rule\": \"repeated\",\n \"type\": \"PatternDescriptor\",\n \"id\": 1\n },\n \"bodyPartId\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"tissueLayerId\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 3\n },\n \"startDate\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"endDate\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"part\": {\n \"type\": \"string\",\n \"id\": 6\n }\n }\n },\n \"BodyPartLayerRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"layerName\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"tissueId\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"layerDepth\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"bpModifiers\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 4\n }\n }\n },\n \"BodyPartRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"token\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"category\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"parent\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"flags\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 4\n },\n \"layers\": {\n \"rule\": \"repeated\",\n \"type\": \"BodyPartLayerRaw\",\n \"id\": 5\n },\n \"relsize\": {\n \"type\": \"int32\",\n \"id\": 6\n }\n }\n },\n \"BpAppearanceModifier\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"modMin\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"modMax\": {\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"TissueRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 3\n },\n \"subordinateToTissue\": {\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"CasteRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"index\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"casteId\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"casteName\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"babyName\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"childName\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 5\n },\n \"gender\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"bodyParts\": {\n \"rule\": \"repeated\",\n \"type\": \"BodyPartRaw\",\n \"id\": 7\n },\n \"totalRelsize\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"modifiers\": {\n \"rule\": \"repeated\",\n \"type\": \"BpAppearanceModifier\",\n \"id\": 9\n },\n \"modifierIdx\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 10\n },\n \"partIdx\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 11\n },\n \"layerIdx\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 12\n },\n \"bodyAppearanceModifiers\": {\n \"rule\": \"repeated\",\n \"type\": \"BpAppearanceModifier\",\n \"id\": 13\n },\n \"colorModifiers\": {\n \"rule\": \"repeated\",\n \"type\": \"ColorModifierRaw\",\n \"id\": 14\n },\n \"description\": {\n \"type\": \"string\",\n \"id\": 15\n },\n \"adultSize\": {\n \"type\": \"int32\",\n \"id\": 16\n }\n }\n },\n \"CreatureRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"index\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"creatureId\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"generalBabyName\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"generalChildName\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 5\n },\n \"creatureTile\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"creatureSoldierTile\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"color\": {\n \"type\": \"ColorDefinition\",\n \"id\": 8\n },\n \"adultsize\": {\n \"type\": \"int32\",\n \"id\": 9\n },\n \"caste\": {\n \"rule\": \"repeated\",\n \"type\": \"CasteRaw\",\n \"id\": 10\n },\n \"tissues\": {\n \"rule\": \"repeated\",\n \"type\": \"TissueRaw\",\n \"id\": 11\n },\n \"flags\": {\n \"rule\": \"repeated\",\n \"type\": \"bool\",\n \"id\": 12\n }\n }\n },\n \"CreatureRawList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"creatureRaws\": {\n \"rule\": \"repeated\",\n \"type\": \"CreatureRaw\",\n \"id\": 1\n }\n }\n },\n \"Army\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"posX\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"posY\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"posZ\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"leader\": {\n \"type\": \"UnitDefinition\",\n \"id\": 5\n },\n \"members\": {\n \"rule\": \"repeated\",\n \"type\": \"UnitDefinition\",\n \"id\": 6\n },\n \"flags\": {\n \"type\": \"uint32\",\n \"id\": 7\n }\n }\n },\n \"ArmyList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"armies\": {\n \"rule\": \"repeated\",\n \"type\": \"Army\",\n \"id\": 1\n }\n }\n },\n \"GrowthPrint\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"priority\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"color\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"timingStart\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"timingEnd\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"tile\": {\n \"type\": \"int32\",\n \"id\": 5\n }\n }\n },\n \"TreeGrowth\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"index\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"mat\": {\n \"type\": \"MatPair\",\n \"id\": 4\n },\n \"prints\": {\n \"rule\": \"repeated\",\n \"type\": \"GrowthPrint\",\n \"id\": 5\n },\n \"timingStart\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"timingEnd\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"twigs\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"lightBranches\": {\n \"type\": \"bool\",\n \"id\": 9\n },\n \"heavyBranches\": {\n \"type\": \"bool\",\n \"id\": 10\n },\n \"trunk\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"roots\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"cap\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"sapling\": {\n \"type\": \"bool\",\n \"id\": 14\n },\n \"trunkHeightStart\": {\n \"type\": \"int32\",\n \"id\": 15\n },\n \"trunkHeightEnd\": {\n \"type\": \"int32\",\n \"id\": 16\n }\n }\n },\n \"PlantRaw\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"index\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"growths\": {\n \"rule\": \"repeated\",\n \"type\": \"TreeGrowth\",\n \"id\": 4\n },\n \"tile\": {\n \"type\": \"int32\",\n \"id\": 5\n }\n }\n },\n \"PlantRawList\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"plantRaws\": {\n \"rule\": \"repeated\",\n \"type\": \"PlantRaw\",\n \"id\": 1\n }\n }\n },\n \"ScreenTile\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"character\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"foreground\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"background\": {\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n },\n \"ScreenCapture\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"width\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"height\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"tiles\": {\n \"rule\": \"repeated\",\n \"type\": \"ScreenTile\",\n \"id\": 3\n }\n }\n },\n \"KeyboardEvent\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"which\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"state\": {\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"scancode\": {\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"sym\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"mod\": {\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"unicode\": {\n \"type\": \"uint32\",\n \"id\": 7\n }\n }\n },\n \"DigCommand\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"designation\": {\n \"type\": \"TileDigDesignation\",\n \"id\": 1\n },\n \"locations\": {\n \"rule\": \"repeated\",\n \"type\": \"Coord\",\n \"id\": 2\n }\n }\n },\n \"SingleBool\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"Value\": {\n \"type\": \"bool\",\n \"id\": 1\n }\n }\n },\n \"VersionInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"dwarfFortressVersion\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"dfhackVersion\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"remoteFortressReaderVersion\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"ListRequest\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"listStart\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"listEnd\": {\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n },\n \"Report\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"text\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"color\": {\n \"type\": \"ColorDefinition\",\n \"id\": 3\n },\n \"duration\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"continuation\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"unconscious\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"announcement\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"repeatCount\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"pos\": {\n \"type\": \"Coord\",\n \"id\": 9\n },\n \"id\": {\n \"type\": \"int32\",\n \"id\": 10\n },\n \"year\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"time\": {\n \"type\": \"int32\",\n \"id\": 12\n }\n }\n },\n \"Status\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"reports\": {\n \"rule\": \"repeated\",\n \"type\": \"Report\",\n \"id\": 1\n }\n }\n },\n \"ShapeDescriptior\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"tile\": {\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n },\n \"Language\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"shapes\": {\n \"rule\": \"repeated\",\n \"type\": \"ShapeDescriptior\",\n \"id\": 1\n }\n }\n },\n \"ItemImprovement\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 1\n },\n \"shape\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"specificType\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"image\": {\n \"type\": \"ArtImage\",\n \"id\": 5\n },\n \"type\": {\n \"type\": \"int32\",\n \"id\": 6\n }\n }\n },\n \"ArtImageElementType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"IMAGE_CREATURE\": 0,\n \"IMAGE_PLANT\": 1,\n \"IMAGE_TREE\": 2,\n \"IMAGE_SHAPE\": 3,\n \"IMAGE_ITEM\": 4\n }\n },\n \"ArtImageElement\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"count\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"type\": {\n \"type\": \"ArtImageElementType\",\n \"id\": 2\n },\n \"creatureItem\": {\n \"type\": \"MatPair\",\n \"id\": 3\n },\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 5\n },\n \"id\": {\n \"type\": \"int32\",\n \"id\": 6\n }\n }\n },\n \"ArtImagePropertyType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"TRANSITIVE_VERB\": 0,\n \"INTRANSITIVE_VERB\": 1\n }\n },\n \"ArtImageProperty\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"subject\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"object\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"verb\": {\n \"type\": \"ArtImageVerb\",\n \"id\": 3\n },\n \"type\": {\n \"type\": \"ArtImagePropertyType\",\n \"id\": 4\n }\n }\n },\n \"ArtImage\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"elements\": {\n \"rule\": \"repeated\",\n \"type\": \"ArtImageElement\",\n \"id\": 1\n },\n \"id\": {\n \"type\": \"MatPair\",\n \"id\": 2\n },\n \"properties\": {\n \"rule\": \"repeated\",\n \"type\": \"ArtImageProperty\",\n \"id\": 3\n }\n }\n },\n \"Engraving\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"pos\": {\n \"type\": \"Coord\",\n \"id\": 1\n },\n \"quality\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"tile\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"image\": {\n \"type\": \"ArtImage\",\n \"id\": 4\n },\n \"floor\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"west\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"east\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"north\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"south\": {\n \"type\": \"bool\",\n \"id\": 9\n },\n \"hidden\": {\n \"type\": \"bool\",\n \"id\": 10\n },\n \"northwest\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"northeast\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"southwest\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"southeast\": {\n \"type\": \"bool\",\n \"id\": 14\n }\n }\n },\n \"ArtImageVerb\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"VERB_WITHERING\": 0,\n \"VERB_SURROUNDEDBY\": 1,\n \"VERB_MASSACRING\": 2,\n \"VERB_FIGHTING\": 3,\n \"VERB_LABORING\": 4,\n \"VERB_GREETING\": 5,\n \"VERB_REFUSING\": 6,\n \"VERB_SPEAKING\": 7,\n \"VERB_EMBRACING\": 8,\n \"VERB_STRIKINGDOWN\": 9,\n \"VERB_MENACINGPOSE\": 10,\n \"VERB_TRAVELING\": 11,\n \"VERB_RAISING\": 12,\n \"VERB_HIDING\": 13,\n \"VERB_LOOKINGCONFUSED\": 14,\n \"VERB_LOOKINGTERRIFIED\": 15,\n \"VERB_DEVOURING\": 16,\n \"VERB_ADMIRING\": 17,\n \"VERB_BURNING\": 18,\n \"VERB_WEEPING\": 19,\n \"VERB_LOOKINGDEJECTED\": 20,\n \"VERB_CRINGING\": 21,\n \"VERB_SCREAMING\": 22,\n \"VERB_SUBMISSIVEGESTURE\": 23,\n \"VERB_FETALPOSITION\": 24,\n \"VERB_SMEAREDINTOSPIRAL\": 25,\n \"VERB_FALLING\": 26,\n \"VERB_DEAD\": 27,\n \"VERB_LAUGHING\": 28,\n \"VERB_LOOKINGOFFENDED\": 29,\n \"VERB_BEINGSHOT\": 30,\n \"VERB_PLAINTIVEGESTURE\": 31,\n \"VERB_MELTING\": 32,\n \"VERB_SHOOTING\": 33,\n \"VERB_TORTURING\": 34,\n \"VERB_COMMITTINGDEPRAVEDACT\": 35,\n \"VERB_PRAYING\": 36,\n \"VERB_CONTEMPLATING\": 37,\n \"VERB_COOKING\": 38,\n \"VERB_ENGRAVING\": 39,\n \"VERB_PROSTRATING\": 40,\n \"VERB_SUFFERING\": 41,\n \"VERB_BEINGIMPALED\": 42,\n \"VERB_BEINGCONTORTED\": 43,\n \"VERB_BEINGFLAYED\": 44,\n \"VERB_HANGINGFROM\": 45,\n \"VERB_BEINGMUTILATED\": 46,\n \"VERB_TRIUMPHANTPOSE\": 47\n }\n },\n \"FlowType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"Miasma\": 0,\n \"Steam\": 1,\n \"Mist\": 2,\n \"MaterialDust\": 3,\n \"MagmaMist\": 4,\n \"Smoke\": 5,\n \"Dragonfire\": 6,\n \"Fire\": 7,\n \"Web\": 8,\n \"MaterialGas\": 9,\n \"MaterialVapor\": 10,\n \"OceanWave\": 11,\n \"SeaFoam\": 12,\n \"ItemCloud\": 13,\n \"CampFire\": -1\n }\n },\n \"FlowInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"index\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"type\": {\n \"type\": \"FlowType\",\n \"id\": 2\n },\n \"density\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"pos\": {\n \"type\": \"Coord\",\n \"id\": 4\n },\n \"dest\": {\n \"type\": \"Coord\",\n \"id\": 5\n },\n \"expanding\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"reuse\": {\n \"type\": \"bool\",\n \"id\": 7,\n \"options\": {\n \"deprecated\": true\n }\n },\n \"guideId\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"material\": {\n \"type\": \"MatPair\",\n \"id\": 9\n },\n \"item\": {\n \"type\": \"MatPair\",\n \"id\": 10\n },\n \"dead\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"fast\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"creeping\": {\n \"type\": \"bool\",\n \"id\": 13\n }\n }\n },\n \"Wave\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"dest\": {\n \"type\": \"Coord\",\n \"id\": 1\n },\n \"pos\": {\n \"type\": \"Coord\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"ItemdefInstrument\": {\n \"options\": {\n \"optimize_for\": \"LITE_RUNTIME\"\n },\n \"nested\": {\n \"InstrumentFlags\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"indefinitePitch\": {\n \"type\": \"bool\",\n \"id\": 1\n },\n \"placedAsBuilding\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"metalMat\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"stoneMat\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"woodMat\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"glassMat\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"ceramicMat\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"shellMat\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"boneMat\": {\n \"type\": \"bool\",\n \"id\": 9\n }\n }\n },\n \"PitchChoiceType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"MEMBRANE_POSITION\": 0,\n \"SUBPART_CHOICE\": 1,\n \"KEYBOARD\": 2,\n \"STOPPING_FRET\": 3,\n \"STOPPING_AGAINST_BODY\": 4,\n \"STOPPING_HOLE\": 5,\n \"STOPPING_HOLE_KEY\": 6,\n \"SLIDE\": 7,\n \"HARMONIC_SERIES\": 8,\n \"VALVE_ROUTES_AIR\": 9,\n \"BP_IN_BELL\": 10,\n \"FOOT_PEDALS\": 11\n }\n },\n \"SoundProductionType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"PLUCKED_BY_BP\": 0,\n \"PLUCKED\": 1,\n \"BOWED\": 2,\n \"STRUCK_BY_BP\": 3,\n \"STRUCK\": 4,\n \"VIBRATE_BP_AGAINST_OPENING\": 5,\n \"BLOW_AGAINST_FIPPLE\": 6,\n \"BLOW_OVER_OPENING_SIDE\": 7,\n \"BLOW_OVER_OPENING_END\": 8,\n \"BLOW_OVER_SINGLE_REED\": 9,\n \"BLOW_OVER_DOUBLE_REED\": 10,\n \"BLOW_OVER_FREE_REED\": 11,\n \"STRUCK_TOGETHER\": 12,\n \"SHAKEN\": 13,\n \"SCRAPED\": 14,\n \"FRICTION\": 15,\n \"RESONATOR\": 16,\n \"BAG_OVER_REED\": 17,\n \"AIR_OVER_REED\": 18,\n \"AIR_OVER_FREE_REED\": 19,\n \"AIR_AGAINST_FIPPLE\": 20\n }\n },\n \"TuningType\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"PEGS\": 0,\n \"ADJUSTABLE_BRIDGES\": 1,\n \"CROOKS\": 2,\n \"TIGHTENING\": 3,\n \"LEVERS\": 4\n }\n },\n \"InstrumentPiece\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"id\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"namePlural\": {\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"InstrumentRegister\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"pitchRangeMin\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"pitchRangeMax\": {\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n },\n \"InstrumentDef\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"flags\": {\n \"type\": \"InstrumentFlags\",\n \"id\": 1\n },\n \"size\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"value\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"materialSize\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"pieces\": {\n \"rule\": \"repeated\",\n \"type\": \"InstrumentPiece\",\n \"id\": 5\n },\n \"pitchRangeMin\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"pitchRangeMax\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"volumeMbMin\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"volumeMbMax\": {\n \"type\": \"int32\",\n \"id\": 9\n },\n \"soundProduction\": {\n \"rule\": \"repeated\",\n \"type\": \"SoundProductionType\",\n \"id\": 10\n },\n \"soundProductionParm1\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 11\n },\n \"soundProductionParm2\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 12\n },\n \"pitchChoice\": {\n \"rule\": \"repeated\",\n \"type\": \"PitchChoiceType\",\n \"id\": 13\n },\n \"pitchChoiceParm1\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 14\n },\n \"pitchChoiceParm2\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 15\n },\n \"tuning\": {\n \"rule\": \"repeated\",\n \"type\": \"TuningType\",\n \"id\": 16\n },\n \"tuningParm\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 17\n },\n \"registers\": {\n \"rule\": \"repeated\",\n \"type\": \"InstrumentRegister\",\n \"id\": 18\n },\n \"description\": {\n \"type\": \"string\",\n \"id\": 19\n }\n }\n }\n }\n },\n \"dfproto\": {\n \"options\": {\n \"optimize_for\": \"LITE_RUNTIME\"\n },\n \"nested\": {\n \"EnumItemName\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"bitSize\": {\n \"type\": \"int32\",\n \"id\": 3,\n \"options\": {\n \"default\": 1\n }\n }\n }\n },\n \"BasicMaterialId\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"index\": {\n \"rule\": \"required\",\n \"type\": \"sint32\",\n \"id\": 2\n }\n }\n },\n \"BasicMaterialInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"index\": {\n \"rule\": \"required\",\n \"type\": \"sint32\",\n \"id\": 2\n },\n \"token\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"flags\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 4\n },\n \"subtype\": {\n \"type\": \"int32\",\n \"id\": 5,\n \"options\": {\n \"default\": -1\n }\n },\n \"creatureId\": {\n \"type\": \"int32\",\n \"id\": 6,\n \"options\": {\n \"default\": -1\n }\n },\n \"plantId\": {\n \"type\": \"int32\",\n \"id\": 7,\n \"options\": {\n \"default\": -1\n }\n },\n \"histfigId\": {\n \"type\": \"int32\",\n \"id\": 8,\n \"options\": {\n \"default\": -1\n }\n },\n \"namePrefix\": {\n \"type\": \"string\",\n \"id\": 9,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"stateColor\": {\n \"rule\": \"repeated\",\n \"type\": \"fixed32\",\n \"id\": 10\n },\n \"stateName\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 11\n },\n \"stateAdj\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 12\n },\n \"reactionClass\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 13\n },\n \"reactionProduct\": {\n \"rule\": \"repeated\",\n \"type\": \"Product\",\n \"id\": 14\n },\n \"inorganicFlags\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 15\n }\n },\n \"nested\": {\n \"Product\": {\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"index\": {\n \"rule\": \"required\",\n \"type\": \"sint32\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"BasicMaterialInfoMask\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"states\": {\n \"rule\": \"repeated\",\n \"type\": \"StateType\",\n \"id\": 1\n },\n \"temperature\": {\n \"type\": \"int32\",\n \"id\": 4,\n \"options\": {\n \"default\": 10015\n }\n },\n \"flags\": {\n \"type\": \"bool\",\n \"id\": 2,\n \"options\": {\n \"default\": false\n }\n },\n \"reaction\": {\n \"type\": \"bool\",\n \"id\": 3,\n \"options\": {\n \"default\": false\n }\n }\n },\n \"nested\": {\n \"StateType\": {\n \"values\": {\n \"Solid\": 0,\n \"Liquid\": 1,\n \"Gas\": 2,\n \"Powder\": 3,\n \"Paste\": 4,\n \"Pressed\": 5\n }\n }\n }\n },\n \"JobSkillAttr\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"caption\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"captionNoun\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"profession\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"labor\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"type\": {\n \"type\": \"string\",\n \"id\": 7\n }\n }\n },\n \"ProfessionAttr\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"caption\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"military\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"canAssignLabor\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"parent\": {\n \"type\": \"int32\",\n \"id\": 6\n }\n }\n },\n \"UnitLaborAttr\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"caption\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"NameInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"firstName\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"nickname\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"languageId\": {\n \"type\": \"int32\",\n \"id\": 3,\n \"options\": {\n \"default\": -1\n }\n },\n \"lastName\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"englishName\": {\n \"type\": \"string\",\n \"id\": 5\n }\n }\n },\n \"NameTriple\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"normal\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"plural\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"adjective\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"UnitCurseInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"addTags1\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 1\n },\n \"remTags1\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 2\n },\n \"addTags2\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 3\n },\n \"remTags2\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 4\n },\n \"name\": {\n \"type\": \"NameTriple\",\n \"id\": 5\n }\n }\n },\n \"SkillInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"level\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"experience\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 3\n }\n }\n },\n \"UnitMiscTrait\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"id\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n }\n }\n },\n \"BasicUnitInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"unitId\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"posX\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 13\n },\n \"posY\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 14\n },\n \"posZ\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 15\n },\n \"name\": {\n \"type\": \"NameInfo\",\n \"id\": 2\n },\n \"flags1\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 3\n },\n \"flags2\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 4\n },\n \"flags3\": {\n \"rule\": \"required\",\n \"type\": \"fixed32\",\n \"id\": 5\n },\n \"race\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 6\n },\n \"caste\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 7\n },\n \"gender\": {\n \"type\": \"int32\",\n \"id\": 8,\n \"options\": {\n \"default\": -1\n }\n },\n \"civId\": {\n \"type\": \"int32\",\n \"id\": 9,\n \"options\": {\n \"default\": -1\n }\n },\n \"histfigId\": {\n \"type\": \"int32\",\n \"id\": 10,\n \"options\": {\n \"default\": -1\n }\n },\n \"deathId\": {\n \"type\": \"int32\",\n \"id\": 17,\n \"options\": {\n \"default\": -1\n }\n },\n \"deathFlags\": {\n \"type\": \"uint32\",\n \"id\": 18\n },\n \"squadId\": {\n \"type\": \"int32\",\n \"id\": 19,\n \"options\": {\n \"default\": -1\n }\n },\n \"squadPosition\": {\n \"type\": \"int32\",\n \"id\": 20,\n \"options\": {\n \"default\": -1\n }\n },\n \"profession\": {\n \"type\": \"int32\",\n \"id\": 22,\n \"options\": {\n \"default\": -1\n }\n },\n \"customProfession\": {\n \"type\": \"string\",\n \"id\": 23\n },\n \"labors\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 11\n },\n \"skills\": {\n \"rule\": \"repeated\",\n \"type\": \"SkillInfo\",\n \"id\": 12\n },\n \"miscTraits\": {\n \"rule\": \"repeated\",\n \"type\": \"UnitMiscTrait\",\n \"id\": 24\n },\n \"curse\": {\n \"type\": \"UnitCurseInfo\",\n \"id\": 16\n },\n \"burrows\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 21\n }\n }\n },\n \"BasicUnitInfoMask\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"labors\": {\n \"type\": \"bool\",\n \"id\": 1,\n \"options\": {\n \"default\": false\n }\n },\n \"skills\": {\n \"type\": \"bool\",\n \"id\": 2,\n \"options\": {\n \"default\": false\n }\n },\n \"profession\": {\n \"type\": \"bool\",\n \"id\": 3,\n \"options\": {\n \"default\": false\n }\n },\n \"miscTraits\": {\n \"type\": \"bool\",\n \"id\": 4,\n \"options\": {\n \"default\": false\n }\n }\n }\n },\n \"BasicSquadInfo\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"squadId\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"name\": {\n \"type\": \"NameInfo\",\n \"id\": 2\n },\n \"alias\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"members\": {\n \"rule\": \"repeated\",\n \"type\": \"sint32\",\n \"id\": 4\n }\n }\n },\n \"UnitLaborState\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"unitId\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n },\n \"labor\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"GetWorldInfoOut\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mode\": {\n \"rule\": \"required\",\n \"type\": \"Mode\",\n \"id\": 1\n },\n \"saveDir\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"worldName\": {\n \"type\": \"NameInfo\",\n \"id\": 3\n },\n \"civId\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"siteId\": {\n \"type\": \"int32\",\n \"id\": 5\n },\n \"groupId\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"raceId\": {\n \"type\": \"int32\",\n \"id\": 7\n },\n \"playerUnitId\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"playerHistfigId\": {\n \"type\": \"int32\",\n \"id\": 9\n },\n \"companionHistfigIds\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 10\n }\n },\n \"nested\": {\n \"Mode\": {\n \"values\": {\n \"MODE_DWARF\": 1,\n \"MODE_ADVENTURE\": 2,\n \"MODE_LEGENDS\": 3\n }\n }\n }\n },\n \"ListEnumsOut\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"materialFlags\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 1\n },\n \"inorganicFlags\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 2\n },\n \"unitFlags1\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 3\n },\n \"unitFlags2\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 4\n },\n \"unitFlags3\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 5\n },\n \"unitLabor\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 6\n },\n \"jobSkill\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 7\n },\n \"cieAddTagMask1\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 8\n },\n \"cieAddTagMask2\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 9\n },\n \"deathInfoFlags\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 10\n },\n \"profession\": {\n \"rule\": \"repeated\",\n \"type\": \"EnumItemName\",\n \"id\": 11\n }\n }\n },\n \"ListJobSkillsOut\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"skill\": {\n \"rule\": \"repeated\",\n \"type\": \"JobSkillAttr\",\n \"id\": 1\n },\n \"profession\": {\n \"rule\": \"repeated\",\n \"type\": \"ProfessionAttr\",\n \"id\": 2\n },\n \"labor\": {\n \"rule\": \"repeated\",\n \"type\": \"UnitLaborAttr\",\n \"id\": 3\n }\n }\n },\n \"ListMaterialsIn\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mask\": {\n \"type\": \"BasicMaterialInfoMask\",\n \"id\": 1\n },\n \"idList\": {\n \"rule\": \"repeated\",\n \"type\": \"BasicMaterialId\",\n \"id\": 2\n },\n \"builtin\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"inorganic\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"creatures\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"plants\": {\n \"type\": \"bool\",\n \"id\": 6\n }\n }\n },\n \"ListMaterialsOut\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"repeated\",\n \"type\": \"BasicMaterialInfo\",\n \"id\": 1\n }\n }\n },\n \"ListUnitsIn\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mask\": {\n \"type\": \"BasicUnitInfoMask\",\n \"id\": 1\n },\n \"idList\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 2\n },\n \"scanAll\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"race\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"civId\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"dead\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"alive\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"sane\": {\n \"type\": \"bool\",\n \"id\": 8\n }\n }\n },\n \"ListUnitsOut\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"repeated\",\n \"type\": \"BasicUnitInfo\",\n \"id\": 1\n }\n }\n },\n \"ListSquadsIn\": {\n \"edition\": \"proto2\",\n \"fields\": {}\n },\n \"ListSquadsOut\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"repeated\",\n \"type\": \"BasicSquadInfo\",\n \"id\": 1\n }\n }\n },\n \"SetUnitLaborsIn\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"change\": {\n \"rule\": \"repeated\",\n \"type\": \"UnitLaborState\",\n \"id\": 1\n }\n }\n },\n \"CoreTextFragment\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"text\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"color\": {\n \"type\": \"Color\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"Color\": {\n \"values\": {\n \"COLOR_BLACK\": 0,\n \"COLOR_BLUE\": 1,\n \"COLOR_GREEN\": 2,\n \"COLOR_CYAN\": 3,\n \"COLOR_RED\": 4,\n \"COLOR_MAGENTA\": 5,\n \"COLOR_BROWN\": 6,\n \"COLOR_GREY\": 7,\n \"COLOR_DARKGREY\": 8,\n \"COLOR_LIGHTBLUE\": 9,\n \"COLOR_LIGHTGREEN\": 10,\n \"COLOR_LIGHTCYAN\": 11,\n \"COLOR_LIGHTRED\": 12,\n \"COLOR_LIGHTMAGENTA\": 13,\n \"COLOR_YELLOW\": 14,\n \"COLOR_WHITE\": 15\n }\n }\n }\n },\n \"CoreTextNotification\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"fragments\": {\n \"rule\": \"repeated\",\n \"type\": \"CoreTextFragment\",\n \"id\": 1\n }\n }\n },\n \"CoreErrorNotification\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"code\": {\n \"rule\": \"required\",\n \"type\": \"ErrorCode\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"ErrorCode\": {\n \"values\": {\n \"CR_LINK_FAILURE\": -3,\n \"CR_WOULD_BREAK\": -2,\n \"CR_NOT_IMPLEMENTED\": -1,\n \"CR_OK\": 0,\n \"CR_FAILURE\": 1,\n \"CR_WRONG_USAGE\": 2,\n \"CR_NOT_FOUND\": 3\n }\n }\n }\n },\n \"EmptyMessage\": {\n \"edition\": \"proto2\",\n \"fields\": {}\n },\n \"IntMessage\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n }\n }\n },\n \"IntListMessage\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 1\n }\n }\n },\n \"StringMessage\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"StringListMessage\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"value\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"CoreBindRequest\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"method\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"inputMsg\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"outputMsg\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"plugin\": {\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"CoreBindReply\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"assignedId\": {\n \"rule\": \"required\",\n \"type\": \"int32\",\n \"id\": 1\n }\n }\n },\n \"CoreRunCommandRequest\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"command\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"arguments\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 2\n }\n }\n },\n \"CoreRunLuaRequest\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"module\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"function\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"arguments\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"DwarfControl\": {\n \"options\": {\n \"optimize_for\": \"LITE_RUNTIME\"\n },\n \"nested\": {\n \"BuildCategory\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"NotCategory\": 0,\n \"SiegeEngines\": 1,\n \"Traps\": 2,\n \"Workshops\": 3,\n \"Furnaces\": 4,\n \"Constructions\": 5,\n \"MachineComponents\": 6,\n \"Track\": 7\n }\n },\n \"MenuAction\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"MenuNone\": 0,\n \"MenuSelect\": 1,\n \"MenuCancel\": 2,\n \"MenuSelectAll\": 3\n }\n },\n \"BuildSelectorStage\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"StageNoMat\": 0,\n \"StagePlace\": 1,\n \"StageItemSelect\": 2\n }\n },\n \"SidebarState\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mode\": {\n \"type\": \"proto.enums.ui_sidebar_mode.ui_sidebar_mode\",\n \"id\": 1\n },\n \"menuItems\": {\n \"rule\": \"repeated\",\n \"type\": \"MenuItem\",\n \"id\": 2\n },\n \"buildSelector\": {\n \"type\": \"BuildSelector\",\n \"id\": 3\n }\n }\n },\n \"MenuItem\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"buildingType\": {\n \"type\": \"RemoteFortressReader.BuildingType\",\n \"id\": 1\n },\n \"existingCount\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"buildCategory\": {\n \"type\": \"BuildCategory\",\n \"id\": 3\n }\n }\n },\n \"SidebarCommand\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"mode\": {\n \"type\": \"proto.enums.ui_sidebar_mode.ui_sidebar_mode\",\n \"id\": 1\n },\n \"menuIndex\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"action\": {\n \"type\": \"MenuAction\",\n \"id\": 3\n },\n \"selectionCoord\": {\n \"type\": \"RemoteFortressReader.Coord\",\n \"id\": 4\n }\n }\n },\n \"BuiildReqChoice\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"distance\": {\n \"type\": \"int32\",\n \"id\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"numCandidates\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"usedCount\": {\n \"type\": \"int32\",\n \"id\": 4\n }\n }\n },\n \"BuildItemReq\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"countRequired\": {\n \"type\": \"int32\",\n \"id\": 2\n },\n \"countMax\": {\n \"type\": \"int32\",\n \"id\": 3\n },\n \"countProvided\": {\n \"type\": \"int32\",\n \"id\": 4\n }\n }\n },\n \"BuildSelector\": {\n \"edition\": \"proto2\",\n \"fields\": {\n \"buildingType\": {\n \"type\": \"RemoteFortressReader.BuildingType\",\n \"id\": 1\n },\n \"stage\": {\n \"type\": \"BuildSelectorStage\",\n \"id\": 2\n },\n \"choices\": {\n \"rule\": \"repeated\",\n \"type\": \"BuiildReqChoice\",\n \"id\": 3\n },\n \"selIndex\": {\n \"type\": \"int32\",\n \"id\": 4\n },\n \"requirements\": {\n \"rule\": \"repeated\",\n \"type\": \"BuildItemReq\",\n \"id\": 5\n },\n \"reqIndex\": {\n \"type\": \"int32\",\n \"id\": 6\n },\n \"errors\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 7\n },\n \"radiusXLow\": {\n \"type\": \"int32\",\n \"id\": 8\n },\n \"radiusYLow\": {\n \"type\": \"int32\",\n \"id\": 9\n },\n \"radiusXHigh\": {\n \"type\": \"int32\",\n \"id\": 10\n },\n \"radiusYHigh\": {\n \"type\": \"int32\",\n \"id\": 11\n },\n \"cursor\": {\n \"type\": \"RemoteFortressReader.Coord\",\n \"id\": 12\n },\n \"tiles\": {\n \"rule\": \"repeated\",\n \"type\": \"int32\",\n \"id\": 13\n }\n }\n }\n }\n },\n \"proto\": {\n \"nested\": {\n \"enums\": {\n \"nested\": {\n \"ui_sidebar_mode\": {\n \"options\": {\n \"optimize_for\": \"LITE_RUNTIME\"\n },\n \"nested\": {\n \"ui_sidebar_mode\": {\n \"edition\": \"proto2\",\n \"values\": {\n \"Default\": 0,\n \"Squads\": 1,\n \"DesignateMine\": 2,\n \"DesignateRemoveRamps\": 3,\n \"DesignateUpStair\": 4,\n \"DesignateDownStair\": 5,\n \"DesignateUpDownStair\": 6,\n \"DesignateUpRamp\": 7,\n \"DesignateChannel\": 8,\n \"DesignateGatherPlants\": 9,\n \"DesignateRemoveDesignation\": 10,\n \"DesignateSmooth\": 11,\n \"DesignateCarveTrack\": 12,\n \"DesignateEngrave\": 13,\n \"DesignateCarveFortification\": 14,\n \"Stockpiles\": 15,\n \"Build\": 16,\n \"QueryBuilding\": 17,\n \"Orders\": 18,\n \"OrdersForbid\": 19,\n \"OrdersRefuse\": 20,\n \"OrdersWorkshop\": 21,\n \"OrdersZone\": 22,\n \"BuildingItems\": 23,\n \"ViewUnits\": 24,\n \"LookAround\": 25,\n \"DesignateItemsClaim\": 26,\n \"DesignateItemsForbid\": 27,\n \"DesignateItemsMelt\": 28,\n \"DesignateItemsUnmelt\": 29,\n \"DesignateItemsDump\": 30,\n \"DesignateItemsUndump\": 31,\n \"DesignateItemsHide\": 32,\n \"DesignateItemsUnhide\": 33,\n \"DesignateChopTrees\": 34,\n \"DesignateToggleEngravings\": 35,\n \"DesignateToggleMarker\": 36,\n \"Hotkeys\": 37,\n \"DesignateTrafficHigh\": 38,\n \"DesignateTrafficNormal\": 39,\n \"DesignateTrafficLow\": 40,\n \"DesignateTrafficRestricted\": 41,\n \"Zones\": 42,\n \"ZonesPenInfo\": 43,\n \"ZonesPitInfo\": 44,\n \"ZonesHospitalInfo\": 45,\n \"ZonesGatherInfo\": 46,\n \"DesignateRemoveConstruction\": 47,\n \"DepotAccess\": 48,\n \"NotesPoints\": 49,\n \"NotesRoutes\": 50,\n \"Burrows\": 51,\n \"Hauling\": 52,\n \"ArenaWeather\": 53,\n \"ArenaTrees\": 54\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}","// High-level DFHack client: protobuf (de)serialization + lazy method binding.\n//\n// Differences from the original browser lib.js:\n// * transport is Node TCP (see connection.ts), not WebSocket/websockify\n// * methods bind lazily on first call, not all ~50 eagerly at connect\n// * TEXT console output is surfaced (was discarded) — every call returns\n// { ...decodedReply, _text } and RunCommand returns the text directly\n\nimport type protobuf from 'protobufjs';\nimport { DfConnection } from './connection.ts';\nimport { METHODS } from './methods.ts';\nimport type { MethodName } from './methods.ts';\nimport { loadRoot } from './proto.ts';\n\n/** Any decoded reply carries the call's captured console output on `_text`. */\nexport interface DecodedReply {\n _text: string;\n [key: string]: unknown;\n}\n\n/** A DFHack translated-name sub-message (as decoded by protobufjs). */\nexport interface NameInfo {\n englishName?: string;\n [key: string]: unknown;\n}\n\n/** Decoded `dfproto.GetWorldInfoOut`. */\nexport interface GetWorldInfoReply extends DecodedReply {\n mode?: number;\n worldName?: NameInfo;\n saveDir?: string;\n}\n\nexport interface DwarfClientOptions {\n host?: string;\n port?: number;\n}\n\nexport class DwarfClient {\n private readonly root: protobuf.Root;\n private readonly conn: DfConnection;\n private readonly textNotification: protobuf.Type;\n private readonly boundIds = new Map<MethodName, number | null>();\n\n constructor({ host, port }: DwarfClientOptions = {}) {\n this.root = loadRoot();\n this.textNotification = this.root.lookupType('dfproto.CoreTextNotification');\n this.conn = new DfConnection({ host, port, textDecoder: (body) => this.decodeText(body) });\n }\n\n private decodeText(body: Buffer): string {\n try {\n const msg = this.textNotification.decode(body);\n const obj = this.textNotification.toObject(msg, { defaults: true }) as {\n fragments?: { text?: string }[];\n };\n return (obj.fragments ?? []).map((f) => f.text ?? '').join('');\n } catch {\n return body.toString('utf8');\n }\n }\n\n /** True once connected and past the handshake. */\n get connected(): boolean {\n return this.conn.connected;\n }\n\n async connect(): Promise<this> {\n await this.conn.connect();\n return this;\n }\n\n close(): void {\n this.conn.close();\n }\n\n /** Resolve (and cache) a method's runtime id via BindMethod. */\n private async bind(name: MethodName): Promise<number | null> {\n const cached = this.boundIds.get(name);\n if (cached !== undefined) return cached;\n const def = METHODS[name];\n\n const BindReq = this.root.lookupType('dfproto.CoreBindRequest');\n const BindReply = this.root.lookupType('dfproto.CoreBindReply');\n const reqBody = BindReq.encode(\n BindReq.create({\n method: name,\n inputMsg: def.input,\n outputMsg: def.output,\n plugin: def.plugin ?? undefined,\n })\n ).finish();\n\n // BindMethod itself is always method id 0.\n const { result } = await this.conn.call(0, reqBody);\n const reply = BindReply.toObject(BindReply.decode(result)) as { assignedId?: number };\n const id = reply.assignedId ?? null;\n this.boundIds.set(name, id);\n return id;\n }\n\n /** Call a bound method by name; returns the decoded reply with `_text` attached. */\n async call(name: MethodName, input: Record<string, unknown> = {}): Promise<DecodedReply> {\n const def = METHODS[name];\n const id = await this.bind(name);\n if (id == null) throw new Error(`method ${name} is not available on this DFHack`);\n\n const InputType = this.root.lookupType(def.input);\n const OutputType = this.root.lookupType(def.output);\n const body = InputType.encode(InputType.create(input)).finish();\n\n const { result, text } = await this.conn.call(id, body);\n const out = OutputType.toObject(OutputType.decode(result), {\n longs: Number,\n enums: String,\n defaults: false,\n }) as DecodedReply;\n out._text = text;\n return out;\n }\n\n // Convenience wrappers for common methods.\n async getVersion(): Promise<string> {\n return ((await this.call('GetVersion')).value as string | undefined) ?? '';\n }\n\n async getDFVersion(): Promise<string> {\n return ((await this.call('GetDFVersion')).value as string | undefined) ?? '';\n }\n\n async getWorldInfo(): Promise<GetWorldInfoReply> {\n return (await this.call('GetWorldInfo')) as GetWorldInfoReply;\n }\n\n /** Run a DFHack command; returns its console (TEXT) output as a string. */\n async runCommand(command: string, args: string[] = []): Promise<string> {\n const out = await this.call('RunCommand', { command, arguments: args });\n return out._text ?? '';\n }\n\n /**\n * Run an arbitrary Lua snippet and return whatever it prints.\n * The DFHack `lua` command joins its arguments and runs them as a chunk (the\n * console-only `-e` flag is NOT accepted over RPC — it gets parsed as code),\n * so the snippet is passed as the argument directly. Console output is captured\n * via TEXT frames. This is the workhorse for semantic tools: the snippet builds\n * JSON and prints it.\n */\n async runLuaSnippet(snippet: string): Promise<string> {\n return this.runCommand('lua', [snippet]);\n }\n\n /**\n * Invoke a named Lua function via the core RunLua RPC: `module.function(...args)`.\n * Returns the function's string-list result. (Distinct from runLuaSnippet: this\n * calls an existing function, not code.)\n */\n async callLua(module: string, fn: string, args: string[] = []): Promise<string[]> {\n const out = await this.call('RunLua', { module, function: fn, arguments: args });\n return (out.value as string[] | undefined) ?? [];\n }\n}\n"],"mappings":"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","names":[]}
|