ygopro-msg-encode 1.1.21 → 1.1.22
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/dist/index.cjs +20 -5
- package/dist/index.cjs.map +2 -2
- package/dist/index.mjs +20 -5
- package/dist/index.mjs.map +2 -2
- package/dist/src/protos/msg/proto/chaining.d.ts +7 -2
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/metadata.ts", "../src/binary/binary-meta.ts", "../src/binary/fill-binary-fields.ts", "../src/protos/common/host-info.ts", "../src/proto-base/payload-base.ts", "../src/vendor/ocgcore-constants.ts", "../src/protos/common/card-data.ts", "../src/protos/common/card-query.ts", "../src/proto-base/ygopro-proto-base.ts", "../src/protos/ctos/base.ts", "../src/proto-base/registry-base.ts", "../src/proto-base/proto-registry-base.ts", "../src/protos/ctos/proto/response.ts", "../src/protos/ctos/proto/update-deck.ts", "../src/protos/ctos/proto/hand-result.ts", "../src/protos/ctos/proto/tp-result.ts", "../src/protos/ctos/proto/player-info.ts", "../src/protos/ctos/proto/create-game.ts", "../src/protos/ctos/proto/join-game.ts", "../src/protos/ctos/proto/leave-game.ts", "../src/protos/ctos/proto/surrender.ts", "../src/protos/ctos/proto/time-confirm.ts", "../src/protos/ctos/proto/chat.ts", "../src/protos/ctos/proto/external-address.ts", "../src/protos/ctos/proto/hs-toduelist.ts", "../src/protos/ctos/proto/hs-toobserver.ts", "../src/protos/ctos/proto/hs-ready.ts", "../src/protos/ctos/proto/hs-notready.ts", "../src/protos/ctos/proto/kick.ts", "../src/protos/ctos/proto/hs-start.ts", "../src/protos/ctos/proto/request-field.ts", "../src/protos/ctos/registry.ts", "../src/protos/stoc/base.ts", "../src/protos/network-enums.ts", "../src/protos/msg/base.ts", "../src/protos/msg/proto/add-counter.ts", "../src/protos/msg/with-response-base.ts", "../src/protos/msg/proto/announce-attrib.ts", "../src/protos/msg/proto/announce-card.ts", "../src/protos/msg/index-response.ts", "../src/protos/msg/proto/announce-number.ts", "../src/protos/msg/proto/announce-race.ts", "../src/protos/msg/proto/attack.ts", "../src/protos/msg/proto/attack-disabled.ts", "../src/protos/msg/proto/battle.ts", "../src/protos/msg/proto/become-target.ts", "../src/protos/msg/proto/cancel-target.ts", "../src/protos/msg/proto/card-hint.ts", "../src/protos/msg/proto/card-target.ts", "../src/protos/msg/proto/chain-disabled.ts", "../src/vendor/script-constants.ts", "../src/protos/msg/proto/chain-end.ts", "../src/protos/msg/proto/chain-negated.ts", "../src/protos/msg/proto/chain-solved.ts", "../src/protos/msg/proto/chain-solving.ts", "../src/protos/msg/proto/chained.ts", "../src/protos/msg/proto/chaining.ts", "../src/protos/msg/proto/confirm-cards.ts", "../src/protos/msg/proto/confirm-decktop.ts", "../src/protos/msg/proto/confirm-extratop.ts", "../src/protos/msg/proto/damage.ts", "../src/protos/msg/proto/damage-step-end.ts", "../src/protos/msg/proto/damage-step-start.ts", "../src/protos/msg/proto/deck-top.ts", "../src/protos/msg/proto/draw.ts", "../src/protos/msg/proto/equip.ts", "../src/protos/msg/proto/field-disabled.ts", "../src/protos/msg/proto/flipsummoned.ts", "../src/protos/msg/proto/flipsummoning.ts", "../src/protos/msg/proto/hand-res.ts", "../src/protos/msg/proto/hint.ts", "../src/protos/msg/proto/lpupdate.ts", "../src/protos/msg/proto/match-kill.ts", "../src/protos/msg/proto/missed-effect.ts", "../src/protos/msg/proto/move.ts", "../src/protos/msg/proto/new-phase.ts", "../src/protos/msg/proto/new-turn.ts", "../src/protos/msg/proto/pay-lpcost.ts", "../src/protos/msg/proto/player-hint.ts", "../src/protos/msg/proto/pos-change.ts", "../src/protos/msg/proto/random-selected.ts", "../src/protos/msg/proto/recover.ts", "../src/protos/msg/proto/reload-field.ts", "../src/protos/msg/proto/remove-counter.ts", "../src/protos/msg/proto/reset-time.ts", "../src/protos/msg/proto/retry.ts", "../src/protos/msg/proto/reverse-deck.ts", "../src/protos/msg/proto/rock-paper-scissors.ts", "../src/protos/msg/proto/select-battlecmd.ts", "../src/protos/msg/proto/select-card.ts", "../src/protos/msg/proto/select-chain.ts", "../src/protos/msg/proto/select-counter.ts", "../src/protos/msg/proto/select-place-common.ts", "../src/protos/msg/proto/select-disfield.ts", "../src/protos/msg/proto/select-effectyn.ts", "../src/protos/msg/proto/select-idlecmd.ts", "../src/protos/msg/proto/select-option.ts", "../src/protos/msg/proto/select-place.ts", "../src/protos/msg/proto/select-position.ts", "../src/protos/msg/proto/select-sum.ts", "../src/protos/msg/proto/select-tribute.ts", "../src/protos/msg/proto/select-unselect-card.ts", "../src/protos/msg/proto/select-yesno.ts", "../src/protos/msg/proto/set.ts", "../src/protos/msg/proto/shuffle-deck.ts", "../src/protos/msg/proto/shuffle-extra.ts", "../src/protos/msg/proto/shuffle-hand.ts", "../src/protos/msg/proto/shuffle-set-card.ts", "../src/protos/msg/proto/sort-card.ts", "../src/protos/msg/proto/spsummoned.ts", "../src/protos/msg/proto/spsummoning.ts", "../src/protos/msg/proto/start.ts", "../src/protos/msg/proto/summoned.ts", "../src/protos/msg/proto/summoning.ts", "../src/protos/msg/proto/swap.ts", "../src/protos/msg/proto/swap-grave-deck.ts", "../src/protos/msg/proto/tag-swap.ts", "../src/protos/msg/proto/toss-coin.ts", "../src/protos/msg/proto/toss-dice.ts", "../src/protos/msg/proto/update-card.ts", "../src/protos/msg/proto/update-data.ts", "../src/protos/msg/proto/waiting.ts", "../src/protos/msg/proto/win.ts", "../src/protos/msg/registry.ts", "../src/protos/stoc/proto/game-msg.ts", "../src/protos/stoc/proto/error-msg.ts", "../src/protos/stoc/proto/select-hand.ts", "../src/protos/stoc/proto/select-tp.ts", "../src/protos/stoc/proto/hand-result.ts", "../src/protos/stoc/proto/tp-result.ts", "../src/protos/stoc/proto/change-side.ts", "../src/protos/stoc/proto/waiting-side.ts", "../src/protos/stoc/proto/deck-count.ts", "../src/protos/stoc/proto/create-game.ts", "../src/protos/stoc/proto/join-game.ts", "../src/protos/stoc/proto/type-change.ts", "../src/protos/stoc/proto/leave-game.ts", "../src/protos/stoc/proto/duel-start.ts", "../src/protos/stoc/proto/duel-end.ts", "../src/protos/stoc/proto/replay.ts", "../src/protos/stoc/proto/time-limit.ts", "../src/protos/stoc/proto/chat.ts", "../src/protos/stoc/proto/hs-player-enter.ts", "../src/protos/stoc/proto/hs-player-change.ts", "../src/protos/stoc/proto/hs-watch-change.ts", "../src/protos/stoc/proto/teammate-surrender.ts", "../src/protos/stoc/proto/field-finish.ts", "../src/protos/stoc/proto/srvpro-roomlist.ts", "../src/protos/stoc/registry.ts"],
|
|
4
|
-
"sourcesContent": ["import { MetadataSetter, Reflector } from 'typed-reflector';\nimport { BinaryFieldInfo } from './binary/binary-meta';\n\nexport interface MetadataMap {\n binaryField: BinaryFieldInfo;\n}\n\nexport interface MetadataArrayMap {\n binaryFieldKeys: string;\n}\n\nexport const Metadata = new MetadataSetter<MetadataMap, MetadataArrayMap>();\nexport const reflector = new Reflector<MetadataMap, MetadataArrayMap>();\n", "import { Metadata } from '../metadata';\n\nexport interface BinaryTypes {\n i8: number;\n u8: number;\n i16: number;\n u16: number;\n i32: number;\n u32: number;\n utf8: string;\n utf16: string;\n}\n\nexport type BinaryType = keyof BinaryTypes | (() => new () => any);\nexport type Length = number | ((obj: any, key: string) => number);\n\nexport interface BinaryFieldInfo {\n type: BinaryType;\n offset: Length;\n length?: Length;\n}\n\nexport const BinaryField = (\n type: BinaryType,\n offset: Length,\n length?: Length,\n) => {\n // utf8/utf16 \u5FC5\u987B\u6307\u5B9A length\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF08\u6BCF\u4E2A\u5B57\u7B26\u5360 2 \u5B57\u8282\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u6570\n if ((type === 'utf8' || type === 'utf16') && length == null) {\n throw new Error(`String type ${type} requires length parameter`);\n }\n return Metadata.set(\n 'binaryField',\n { type, offset, length },\n 'binaryFieldKeys',\n );\n};\n", "import { BinaryFieldInfo } from './binary-meta';\nimport { reflector } from '../metadata';\n\n// \u5171\u4EAB\u7684\u8F85\u52A9\u51FD\u6570\nconst isStaticInfo = (info: BinaryFieldInfo) =>\n typeof info.offset === 'number' &&\n (info.length == null || typeof info.length === 'number');\n\nconst resolveLength = (\n obj: any,\n length: number | ((obj: any, key: string) => number),\n key: string,\n): number => {\n return typeof length === 'number' ? length : length(obj, key);\n};\n\nconst getTypeSize = (type: string): number => {\n switch (type) {\n case 'i8':\n case 'u8':\n return 1;\n case 'i16':\n case 'u16':\n return 2;\n case 'i32':\n case 'u32':\n return 4;\n default:\n return 0;\n }\n};\n\ninterface FieldInfo {\n key: string;\n info: BinaryFieldInfo;\n}\n\nconst getFieldInfos = (objOrClass: any) => {\n const fields = reflector\n .getArray('binaryFieldKeys', objOrClass)\n .map((key) => ({\n key,\n info: reflector.get('binaryField', objOrClass, key),\n }))\n .filter((s) => s.info) as FieldInfo[];\n\n const staticInfos = fields.filter((s) => isStaticInfo(s.info));\n const dynamicInfos = fields.filter((s) => !isStaticInfo(s.info));\n\n return { fields, staticInfos, dynamicInfos };\n};\n\nexport const fillBinaryFields = <T = any>(\n obj: T,\n data: Uint8Array,\n useClass?: new () => T,\n): number => {\n const { staticInfos, dynamicInfos } = getFieldInfos(useClass || obj);\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const utf8Decoder = new TextDecoder('utf-8');\n const utf16Decoder = new TextDecoder('utf-16le');\n\n let totalSize = 0;\n\n const readValue = (type: string, offset: number): any => {\n const typeSize = getTypeSize(type);\n if (offset + typeSize > data.length) {\n throw new Error(\n `Data too short: need ${offset + typeSize} bytes, got ${data.length} bytes`,\n );\n }\n switch (type) {\n case 'i8':\n return view.getInt8(offset);\n case 'u8':\n return view.getUint8(offset);\n case 'i16':\n return view.getInt16(offset, true);\n case 'u16':\n return view.getUint16(offset, true);\n case 'i32':\n return view.getInt32(offset, true);\n case 'u32':\n return view.getUint32(offset, true);\n default:\n throw new Error(`Unknown type: ${type}`);\n }\n };\n\n const readString = (\n type: string,\n offset: number,\n byteLength: number,\n ): string => {\n if (offset + byteLength > data.length) {\n throw new Error(\n `Data too short: need ${offset + byteLength} bytes, got ${data.length} bytes`,\n );\n }\n const bytes = data.slice(offset, offset + byteLength);\n\n // \u627E\u5230\u7B2C\u4E00\u4E2A \\0\uFF0C\u63D0\u524D\u622A\u65AD\n let nullIndex = -1;\n if (type === 'utf8') {\n nullIndex = bytes.indexOf(0);\n } else if (type === 'utf16') {\n // utf16 \u7684 \\0 \u662F\u4E24\u4E2A\u5B57\u8282\u90FD\u4E3A 0\n for (let i = 0; i < bytes.length - 1; i += 2) {\n if (bytes[i] === 0 && bytes[i + 1] === 0) {\n nullIndex = i;\n break;\n }\n }\n }\n\n const actualBytes = nullIndex >= 0 ? bytes.slice(0, nullIndex) : bytes;\n\n if (type === 'utf8') {\n return utf8Decoder.decode(actualBytes);\n } else if (type === 'utf16') {\n return utf16Decoder.decode(actualBytes);\n }\n throw new Error(`Unknown string type: ${type}`);\n };\n\n const parseField = (key: string, info: BinaryFieldInfo) => {\n const offset = resolveLength(obj, info.offset, key);\n const type = info.type;\n\n // \u5982\u679C type \u662F\u4E00\u4E2A\u7C7B\uFF08\u51FD\u6570\uFF09\n if (typeof type === 'function') {\n const Constructor = type();\n if (info.length != null) {\n // \u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n const array = [];\n let currentOffset = offset;\n for (let i = 0; i < length; i++) {\n if (currentOffset >= data.length) {\n throw new Error(\n `Data too short: need more bytes for object array at offset ${currentOffset}, got ${data.length} bytes`,\n );\n }\n const instance = new Constructor();\n const elementData = data.slice(currentOffset);\n const size = fillBinaryFields(instance, elementData, Constructor);\n array.push(instance);\n currentOffset += size;\n }\n (obj as any)[key] = array;\n totalSize = Math.max(totalSize, currentOffset);\n } else {\n // \u5355\u4E2A\u5BF9\u8C61\n if (offset >= data.length) {\n throw new Error(\n `Data too short: need more bytes for object at offset ${offset}, got ${data.length} bytes`,\n );\n }\n const instance = new Constructor();\n const elementData = data.slice(offset);\n const size = fillBinaryFields(instance, elementData, Constructor);\n (obj as any)[key] = instance;\n totalSize = Math.max(totalSize, offset + size);\n }\n return;\n }\n\n // \u5B57\u7B26\u4E32\u7C7B\u578B\n if (type === 'utf8' || type === 'utf16') {\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF0C\u9700\u8981\u8F6C\u6362\u4E3A\u5B57\u8282\u6570\uFF08\u5B57\u7B26\u6570 * 2\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u957F\u5EA6\n const lengthValue = resolveLength(obj, info.length!, key);\n const byteLength = type === 'utf16' ? lengthValue * 2 : lengthValue;\n (obj as any)[key] = readString(type, offset, byteLength);\n totalSize = Math.max(totalSize, offset + byteLength);\n return;\n }\n\n // \u6570\u503C\u7C7B\u578B\n const typeStr = type as string;\n const typeSize = getTypeSize(typeStr);\n if (info.length != null) {\n // \u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n const array = [];\n for (let i = 0; i < length; i++) {\n array.push(readValue(typeStr, offset + i * typeSize));\n }\n (obj as any)[key] = array;\n totalSize = Math.max(totalSize, offset + length * typeSize);\n } else {\n // \u5355\u4E2A\u503C\n (obj as any)[key] = readValue(typeStr, offset);\n totalSize = Math.max(totalSize, offset + typeSize);\n }\n };\n\n // \u5148\u89E3\u6790\u6240\u6709 static \u5B57\u6BB5\uFF0C\u518D\u6309\u987A\u5E8F\u89E3\u6790 dynamic \u5B57\u6BB5\n // \u8FD9\u6837 dynamic \u5B57\u6BB5\u53EF\u4EE5\u4F9D\u8D56\u6240\u6709 static \u5B57\u6BB5\u548C\u4E4B\u524D\u7684 dynamic \u5B57\u6BB5\n for (const { key, info } of staticInfos) {\n parseField(key, info);\n }\n\n for (const { key, info } of dynamicInfos) {\n parseField(key, info);\n }\n\n return totalSize;\n};\n\nexport const toBinaryFields = <T = any>(\n obj: T,\n useClass?: new () => T,\n): Uint8Array => {\n const { staticInfos, dynamicInfos } = getFieldInfos(useClass || obj);\n\n // \u5982\u679C\u6CA1\u6709\u4EFB\u4F55\u5B57\u6BB5\uFF0C\u8FD4\u56DE\u7A7A\u6570\u7EC4\n if (staticInfos.length === 0 && dynamicInfos.length === 0) {\n return new Uint8Array(0);\n }\n\n // \u5148\u8BA1\u7B97\u603B\u5927\u5C0F\n let totalSize = 0;\n for (const { key, info } of [...staticInfos, ...dynamicInfos]) {\n const offset = resolveLength(obj, info.offset, key);\n const type = info.type;\n\n if (typeof type === 'function') {\n const Constructor = type();\n const value = (obj as any)[key];\n if (info.length != null) {\n // \u5BF9\u8C61\u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n let currentOffset = offset;\n for (let i = 0; i < length; i++) {\n if (value && value[i]) {\n const itemData = toBinaryFields(value[i], Constructor);\n currentOffset += itemData.length;\n }\n }\n totalSize = Math.max(totalSize, currentOffset);\n } else {\n // \u5355\u4E2A\u5BF9\u8C61\n if (value) {\n const itemData = toBinaryFields(value, Constructor);\n totalSize = Math.max(totalSize, offset + itemData.length);\n }\n }\n } else if (type === 'utf8' || type === 'utf16') {\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF0C\u9700\u8981\u8F6C\u6362\u4E3A\u5B57\u8282\u6570\uFF08\u5B57\u7B26\u6570 * 2\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u957F\u5EA6\n const lengthValue = resolveLength(obj, info.length!, key);\n const byteLength = type === 'utf16' ? lengthValue * 2 : lengthValue;\n totalSize = Math.max(totalSize, offset + byteLength);\n } else {\n const typeSize = getTypeSize(type as string);\n if (info.length != null) {\n const length = resolveLength(obj, info.length, key);\n totalSize = Math.max(totalSize, offset + length * typeSize);\n } else {\n totalSize = Math.max(totalSize, offset + typeSize);\n }\n }\n }\n\n const data = new Uint8Array(totalSize);\n const view = new DataView(data.buffer);\n const utf8Encoder = new TextEncoder();\n\n const writeValue = (type: string, offset: number, value: number) => {\n switch (type) {\n case 'i8':\n view.setInt8(offset, value);\n break;\n case 'u8':\n view.setUint8(offset, value);\n break;\n case 'i16':\n view.setInt16(offset, value, true);\n break;\n case 'u16':\n view.setUint16(offset, value, true);\n break;\n case 'i32':\n view.setInt32(offset, value, true);\n break;\n case 'u32':\n view.setUint32(offset, value, true);\n break;\n }\n };\n\n const writeString = (\n type: string,\n offset: number,\n byteLength: number,\n value: string,\n ) => {\n if (type === 'utf8') {\n const encoded = utf8Encoder.encode(value);\n const len = Math.min(encoded.length, byteLength);\n data.set(encoded.slice(0, len), offset);\n // \u5269\u4F59\u90E8\u5206\u81EA\u52A8\u4E3A 0\uFF08Uint8Array \u9ED8\u8BA4\u521D\u59CB\u5316\u4E3A 0\uFF09\n } else if (type === 'utf16') {\n // utf16le \u7F16\u7801\n for (let i = 0; i < Math.min(value.length, byteLength / 2); i++) {\n view.setUint16(offset + i * 2, value.charCodeAt(i), true);\n }\n }\n };\n\n const writeField = (key: string, info: BinaryFieldInfo) => {\n const offset = resolveLength(obj, info.offset, key);\n const type = info.type;\n const value = (obj as any)[key];\n\n if (value === undefined || value === null) {\n return; // \u8DF3\u8FC7\u672A\u5B9A\u4E49\u7684\u5B57\u6BB5\n }\n\n // \u5982\u679C type \u662F\u4E00\u4E2A\u7C7B\uFF08\u51FD\u6570\uFF09\n if (typeof type === 'function') {\n const Constructor = type();\n if (info.length != null) {\n // \u5BF9\u8C61\u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n let currentOffset = offset;\n // \u786E\u4FDD\u904D\u5386\u5B8C\u6574\u7684 length\uFF0C\u5982\u679C\u6570\u7EC4\u5143\u7D20\u4E0D\u591F\uFF0C\u5269\u4F59\u90E8\u5206\u4F1A\u4FDD\u6301\u4E3A 0\uFF08zero fill\uFF09\n for (let i = 0; i < length; i++) {\n if (value && i < value.length && value[i]) {\n const itemData = toBinaryFields(value[i], Constructor);\n data.set(itemData, currentOffset);\n currentOffset += itemData.length;\n } else {\n // \u5982\u679C\u5143\u7D20\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u8BE5\u5BF9\u8C61\u7684\u5927\u5C0F\n const emptyInstance = new Constructor();\n const itemData = toBinaryFields(emptyInstance, Constructor);\n currentOffset += itemData.length;\n // \u8FD9\u90E8\u5206\u4F1A\u4FDD\u6301\u4E3A 0\uFF08\u5DF2\u7531 Uint8Array \u521D\u59CB\u5316\uFF09\n }\n }\n } else {\n // \u5355\u4E2A\u5BF9\u8C61\n const itemData = toBinaryFields(value, Constructor);\n data.set(itemData, offset);\n }\n return;\n }\n\n // \u5B57\u7B26\u4E32\u7C7B\u578B\n if (type === 'utf8' || type === 'utf16') {\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF0C\u9700\u8981\u8F6C\u6362\u4E3A\u5B57\u8282\u6570\uFF08\u5B57\u7B26\u6570 * 2\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u957F\u5EA6\n const lengthValue = resolveLength(obj, info.length!, key);\n const byteLength = type === 'utf16' ? lengthValue * 2 : lengthValue;\n writeString(type, offset, byteLength, value);\n return;\n }\n\n // \u6570\u503C\u7C7B\u578B\n const typeStr = type as string;\n const typeSize = getTypeSize(typeStr);\n if (info.length != null) {\n // \u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n // \u786E\u4FDD\u904D\u5386\u5B8C\u6574\u7684 length\uFF0C\u5982\u679C\u6570\u7EC4\u5143\u7D20\u4E0D\u591F\uFF0C\u5269\u4F59\u90E8\u5206\u4F1A\u4FDD\u6301\u4E3A 0\uFF08zero fill\uFF09\n for (let i = 0; i < length; i++) {\n if (\n value &&\n i < value.length &&\n value[i] !== undefined &&\n value[i] !== null\n ) {\n writeValue(typeStr, offset + i * typeSize, value[i]);\n }\n // \u5982\u679C value \u4E0D\u5B58\u5728\u3001\u7D22\u5F15\u8D85\u51FA\u8303\u56F4\u6216\u503C\u4E3A undefined/null\uFF0C\u5219\u4FDD\u6301\u4E3A 0\uFF08\u5DF2\u7531 Uint8Array \u521D\u59CB\u5316\uFF09\n }\n } else {\n // \u5355\u4E2A\u503C\n writeValue(typeStr, offset, value);\n }\n };\n\n // \u5148\u5199\u5165\u6240\u6709 static \u5B57\u6BB5\uFF0C\u518D\u6309\u987A\u5E8F\u5199\u5165 dynamic \u5B57\u6BB5\n for (const { key, info } of staticInfos) {\n writeField(key, info);\n }\n\n for (const { key, info } of dynamicInfos) {\n writeField(key, info);\n }\n\n return data;\n};\n", "import { BinaryField } from '../../binary/binary-meta';\nimport { GameMode } from '../network-enums';\n\n// HostInfo structure from network.h\n// Size: 20 bytes (with padding)\nexport class HostInfo {\n @BinaryField('u32', 0)\n lflist: number;\n\n @BinaryField('u8', 4)\n rule: number; // Rule index (0-5), maps to OT values in UI\n\n @BinaryField('u8', 5)\n mode: GameMode;\n\n @BinaryField('u8', 6)\n duel_rule: number;\n\n @BinaryField('u8', 7)\n no_check_deck: number;\n\n @BinaryField('u8', 8)\n no_shuffle_deck: number;\n\n // 3 bytes padding (bytes 9-11)\n\n @BinaryField('i32', 12)\n start_lp: number;\n\n @BinaryField('u8', 16)\n start_hand: number;\n\n @BinaryField('u8', 17)\n draw_count: number;\n\n @BinaryField('u16', 18)\n time_limit: number;\n}\n", "import { fillBinaryFields, toBinaryFields } from '../binary/fill-binary-fields';\n\nexport class PayloadBase {\n static identifier = 0;\n\n get identifier(): number {\n return (this.constructor as typeof PayloadBase).identifier;\n }\n\n fromPartial(data: Partial<this>): this {\n const safeData =\n typeof globalThis.structuredClone === 'function'\n ? globalThis.structuredClone(data)\n : JSON.parse(JSON.stringify(data));\n\n Object.assign(this, safeData);\n return this;\n }\n\n fromPayload(data: Uint8Array): this {\n fillBinaryFields(this, data);\n return this;\n }\n\n toPayload() {\n return toBinaryFields(this);\n }\n\n copy() {\n const Constructor = this.constructor as new () => this;\n const copied = new Constructor();\n return copied.fromPartial(this);\n }\n}\n", "// Generated from /home/nanahira/ygo/ygopro/ocgcore/common.h\nexport const OcgcoreCommonConstants = {\n ACTIVITY_ATTACK: 5,\n ACTIVITY_BATTLE_PHASE: 6,\n ACTIVITY_CHAIN: 7,\n ACTIVITY_FLIPSUMMON: 4,\n ACTIVITY_NORMALSUMMON: 2,\n ACTIVITY_SPSUMMON: 3,\n ACTIVITY_SUMMON: 1,\n ATTRIBUTES_COUNT: 7,\n ATTRIBUTE_ALL: 127,\n ATTRIBUTE_DARK: 32,\n ATTRIBUTE_DEVINE: 64,\n ATTRIBUTE_EARTH: 1,\n ATTRIBUTE_FIRE: 4,\n ATTRIBUTE_LIGHT: 16,\n ATTRIBUTE_WATER: 2,\n ATTRIBUTE_WIND: 8,\n CARDDATA_ALIAS: 2,\n CARDDATA_ATTACK: 8,\n CARDDATA_ATTRIBUTE: 6,\n CARDDATA_CODE: 1,\n CARDDATA_DEFENSE: 9,\n CARDDATA_LEVEL: 5,\n CARDDATA_LINK_MARKER: 12,\n CARDDATA_LSCALE: 10,\n CARDDATA_RACE: 7,\n CARDDATA_RSCALE: 11,\n CARDDATA_SETCODE: 3,\n CARDDATA_TYPE: 4,\n CHINT_ATTRIBUTE: 4,\n CHINT_CARD: 2,\n CHINT_DESC_ADD: 6,\n CHINT_DESC_REMOVE: 7,\n CHINT_NUMBER: 5,\n CHINT_RACE: 3,\n CHINT_TURN: 1,\n CURRENT_RULE: 5,\n DUEL_ATTACK_FIRST_TURN: 2,\n DUEL_OBSOLETE_RULING: 8,\n DUEL_PSEUDO_SHUFFLE: 16,\n DUEL_RETURN_DECK_TOP: 128,\n DUEL_REVEAL_DECK_SEQ: 256,\n DUEL_SIMPLE_AI: 64,\n DUEL_TAG_MODE: 32,\n DUEL_TEST_MODE: 1,\n EDESC_OPERATION: 1,\n EDESC_RESET: 2,\n FALSE: 0,\n GETEFFECT_ALL: 15,\n GETEFFECT_COPY: 4,\n GETEFFECT_GAIN: 2,\n GETEFFECT_GRANT: 8,\n GETEFFECT_INITIAL: 1,\n HINT_ATTRIB: 7,\n HINT_CARD: 10,\n HINT_CODE: 8,\n HINT_EFFECT: 5,\n HINT_EVENT: 1,\n HINT_MESSAGE: 2,\n HINT_MUSIC: 21,\n HINT_MUSIC_OGG: 23,\n HINT_NUMBER: 9,\n HINT_OPSELECTED: 4,\n HINT_RACE: 6,\n HINT_SELECTMSG: 3,\n HINT_SOUND: 22,\n HINT_ZONE: 11,\n LINK_MARKER_BOTTOM: 2,\n LINK_MARKER_BOTTOM_LEFT: 1,\n LINK_MARKER_BOTTOM_RIGHT: 4,\n LINK_MARKER_LEFT: 8,\n LINK_MARKER_RIGHT: 32,\n LINK_MARKER_TOP: 128,\n LINK_MARKER_TOP_LEFT: 64,\n LINK_MARKER_TOP_RIGHT: 256,\n LOCATION_DECKBOT: 65537,\n LOCATION_DECKSHF: 131073,\n MASTER_RULE3: 3,\n MASTER_RULE_2020: 5,\n MSG_ADD_COUNTER: 101,\n MSG_AI_NAME: 163,\n MSG_ANNOUNCE_ATTRIB: 141,\n MSG_ANNOUNCE_CARD: 142,\n MSG_ANNOUNCE_NUMBER: 143,\n MSG_ANNOUNCE_RACE: 140,\n MSG_ATTACK: 110,\n MSG_ATTACK_DISABLED: 112,\n MSG_BATTLE: 111,\n MSG_BECOME_TARGET: 83,\n MSG_CANCEL_TARGET: 97,\n MSG_CARD_HINT: 160,\n MSG_CARD_TARGET: 96,\n MSG_CHAINED: 71,\n MSG_CHAINING: 70,\n MSG_CHAIN_DISABLED: 76,\n MSG_CHAIN_END: 74,\n MSG_CHAIN_NEGATED: 75,\n MSG_CHAIN_SOLVED: 73,\n MSG_CHAIN_SOLVING: 72,\n MSG_CONFIRM_CARDS: 31,\n MSG_CONFIRM_DECKTOP: 30,\n MSG_CONFIRM_EXTRATOP: 42,\n MSG_CUSTOM_MSG: 180,\n MSG_DAMAGE: 91,\n MSG_DAMAGE_STEP_END: 114,\n MSG_DAMAGE_STEP_START: 113,\n MSG_DECK_TOP: 38,\n MSG_DRAW: 90,\n MSG_EQUIP: 93,\n MSG_FIELD_DISABLED: 56,\n MSG_FLIPSUMMONED: 65,\n MSG_FLIPSUMMONING: 64,\n MSG_HAND_RES: 133,\n MSG_HINT: 2,\n MSG_LPUPDATE: 94,\n MSG_MATCH_KILL: 170,\n MSG_MISSED_EFFECT: 120,\n MSG_MOVE: 50,\n MSG_NEW_PHASE: 41,\n MSG_NEW_TURN: 40,\n MSG_PAY_LPCOST: 100,\n MSG_PLAYER_HINT: 165,\n MSG_POS_CHANGE: 53,\n MSG_RANDOM_SELECTED: 81,\n MSG_RECOVER: 92,\n MSG_RELOAD_FIELD: 162,\n MSG_REMOVE_COUNTER: 102,\n MSG_RESET_TIME: 221,\n MSG_RETRY: 1,\n MSG_REVERSE_DECK: 37,\n MSG_ROCK_PAPER_SCISSORS: 132,\n MSG_SELECT_BATTLECMD: 10,\n MSG_SELECT_CARD: 15,\n MSG_SELECT_CHAIN: 16,\n MSG_SELECT_COUNTER: 22,\n MSG_SELECT_DISFIELD: 24,\n MSG_SELECT_EFFECTYN: 12,\n MSG_SELECT_IDLECMD: 11,\n MSG_SELECT_OPTION: 14,\n MSG_SELECT_PLACE: 18,\n MSG_SELECT_POSITION: 19,\n MSG_SELECT_SUM: 23,\n MSG_SELECT_TRIBUTE: 20,\n MSG_SELECT_UNSELECT_CARD: 26,\n MSG_SELECT_YESNO: 13,\n MSG_SET: 54,\n MSG_SHOW_HINT: 164,\n MSG_SHUFFLE_DECK: 32,\n MSG_SHUFFLE_EXTRA: 39,\n MSG_SHUFFLE_HAND: 33,\n MSG_SHUFFLE_SET_CARD: 36,\n MSG_SORT_CARD: 25,\n MSG_SPSUMMONED: 63,\n MSG_SPSUMMONING: 62,\n MSG_SUMMONED: 61,\n MSG_SUMMONING: 60,\n MSG_SWAP: 55,\n MSG_SWAP_GRAVE_DECK: 35,\n MSG_TAG_SWAP: 161,\n MSG_TOSS_COIN: 130,\n MSG_TOSS_DICE: 131,\n MSG_UPDATE_CARD: 7,\n MSG_WIN: 5,\n NEW_MASTER_RULE: 4,\n NO_FLIP_EFFECT: 65536,\n OPCODE_ADD: 1073741824,\n OPCODE_AND: 1073741828,\n OPCODE_DIV: 1073741827,\n OPCODE_ISATTRIBUTE: 1073742084,\n OPCODE_ISCODE: 1073742080,\n OPCODE_ISRACE: 1073742083,\n OPCODE_ISSETCARD: 1073742081,\n OPCODE_ISTYPE: 1073742082,\n OPCODE_MUL: 1073741826,\n OPCODE_NEG: 1073741830,\n OPCODE_NOT: 1073741831,\n OPCODE_OR: 1073741829,\n OPCODE_SUB: 1073741825,\n OPERATION_CANCELED: -1,\n OPERATION_FAIL: 0,\n OPERATION_SUCCESS: 1,\n PHASE_BATTLE: 128,\n PHASE_BATTLE_START: 8,\n PHASE_BATTLE_STEP: 16,\n PHASE_DAMAGE: 32,\n PHASE_DAMAGE_CAL: 64,\n PHASE_DRAW: 1,\n PHASE_END: 512,\n PHASE_MAIN1: 4,\n PHASE_MAIN2: 256,\n PHASE_STANDBY: 2,\n PHINT_DESC_ADD: 6,\n PHINT_DESC_REMOVE: 7,\n PLAYER_ALL: 3,\n PLAYER_NONE: 2,\n PLAYER_SELFDES: 5,\n POS_ATTACK: 3,\n POS_DEFENSE: 12,\n POS_FACEDOWN: 10,\n POS_FACEDOWN_ATTACK: 2,\n POS_FACEDOWN_DEFENSE: 8,\n POS_FACEUP: 5,\n POS_FACEUP_ATTACK: 1,\n POS_FACEUP_DEFENSE: 4,\n PROCESSOR_BUFFER_LEN: 268435455,\n PROCESSOR_END: 536870912,\n PROCESSOR_FLAG: 4026531840,\n PROCESSOR_NONE: 0,\n PROCESSOR_WAITING: 268435456,\n QUERY_ALIAS: 4,\n QUERY_ATTACK: 256,\n QUERY_ATTRIBUTE: 64,\n QUERY_BASE_ATTACK: 1024,\n QUERY_BASE_DEFENSE: 2048,\n QUERY_CODE: 1,\n QUERY_COUNTERS: 131072,\n QUERY_DEFENSE: 512,\n QUERY_EQUIP_CARD: 16384,\n QUERY_LEVEL: 16,\n QUERY_LINK: 8388608,\n QUERY_LSCALE: 2097152,\n QUERY_OVERLAY_CARD: 65536,\n QUERY_OWNER: 262144,\n QUERY_POSITION: 2,\n QUERY_RACE: 128,\n QUERY_RANK: 32,\n QUERY_REASON: 4096,\n QUERY_REASON_CARD: 8192,\n QUERY_RSCALE: 4194304,\n QUERY_STATUS: 524288,\n QUERY_TARGET_CARD: 32768,\n QUERY_TYPE: 8,\n RACES_COUNT: 26,\n RACE_ALL: 67108863,\n RACE_AQUA: 64,\n RACE_BEAST: 16384,\n RACE_BEASTWARRIOR: 32768,\n RACE_CREATORGOD: 4194304,\n RACE_CYBERSE: 16777216,\n RACE_DEVINE: 2097152,\n RACE_DINOSAUR: 65536,\n RACE_DRAGON: 8192,\n RACE_FAIRY: 4,\n RACE_FIEND: 8,\n RACE_FISH: 131072,\n RACE_ILLUSION: 33554432,\n RACE_INSECT: 2048,\n RACE_MACHINE: 32,\n RACE_PLANT: 1024,\n RACE_PSYCHO: 1048576,\n RACE_PYRO: 128,\n RACE_REPTILE: 524288,\n RACE_ROCK: 256,\n RACE_SEASERPENT: 262144,\n RACE_SPELLCASTER: 2,\n RACE_THUNDER: 4096,\n RACE_WARRIOR: 1,\n RACE_WINDBEAST: 512,\n RACE_WYRM: 8388608,\n RACE_ZOMBIE: 16,\n REASONS_PROCEDURE: 271056896,\n REASON_ACTION: 2147483648,\n REASON_ADJUST: 256,\n REASON_BATTLE: 32,\n REASON_COST: 128,\n REASON_DESTROY: 1,\n REASON_DISCARD: 16384,\n REASON_DISSUMMON: 4096,\n REASON_DRAW: 33554432,\n REASON_EFFECT: 64,\n REASON_FLIP: 8192,\n REASON_FUSION: 262144,\n REASON_LINK: 268435456,\n REASON_LOST_OVERLAY: 536870912,\n REASON_LOST_TARGET: 512,\n REASON_MAINTENANCE: 1073741824,\n REASON_MATERIAL: 8,\n REASON_RDAMAGE: 32768,\n REASON_REDIRECT: 67108864,\n REASON_RELEASE: 2,\n REASON_REPLACE: 16777216,\n REASON_RETURN: 131072,\n REASON_REVEAL: 134217728,\n REASON_RITUAL: 1048576,\n REASON_RRECOVER: 65536,\n REASON_RULE: 1024,\n REASON_SPSUMMON: 2048,\n REASON_SUMMON: 16,\n REASON_SYNCHRO: 524288,\n REASON_TEMPORARY: 4,\n REASON_XYZ: 2097152,\n RETURN_TEMP_REMOVE_TO_FIELD: 1,\n RETURN_TRAP_MONSTER_TO_SZONE: 2,\n SEQ_DECKBOTTOM: 1,\n SEQ_DECKSHUFFLE: 2,\n SEQ_DECKTOP: 0,\n SIZE_AI_NAME: 128,\n SIZE_HINT_MSG: 1024,\n SIZE_MESSAGE_BUFFER: 8192,\n SIZE_RETURN_VALUE: 512,\n STATUS_ACTIVATE_DISABLED: 262144,\n STATUS_ACT_FROM_HAND: 134217728,\n STATUS_ATTACK_CANCELED: 2097152,\n STATUS_BATTLE_DESTROYED: 16384,\n STATUS_BATTLE_RESULT: 64,\n STATUS_CANNOT_CHANGE_FORM: 256,\n STATUS_CHAINING: 65536,\n STATUS_CONTINUOUS_POS: 33554432,\n STATUS_COPYING_EFFECT: 32768,\n STATUS_DESTROY_CONFIRMED: 4096,\n STATUS_DISABLED: 1,\n STATUS_EFFECT_ENABLED: 1024,\n STATUS_EFFECT_REPLACED: 524288,\n STATUS_FLIP_SUMMONING: 1048576,\n STATUS_FLIP_SUMMON_DISABLED: 2147483648,\n STATUS_FLIP_SUMMON_TURN: 536870912,\n STATUS_FORBIDDEN: 67108864,\n STATUS_INITIALIZING: 4194304,\n STATUS_JUST_POS: 16777216,\n STATUS_LEAVE_CONFIRMED: 8192,\n STATUS_NO_LEVEL: 32,\n STATUS_OPPO_BATTLE: 268435456,\n STATUS_PROC_COMPLETE: 8,\n STATUS_SET_TURN: 16,\n STATUS_SPSUMMON_STEP: 128,\n STATUS_SPSUMMON_TURN: 1073741824,\n STATUS_SUMMONING: 512,\n STATUS_SUMMON_DISABLED: 131072,\n STATUS_SUMMON_TURN: 2048,\n STATUS_TO_DISABLE: 4,\n STATUS_TO_ENABLE: 2,\n STATUS_TO_HAND_WITHOUT_CONFIRM: 8388608,\n TRUE: 1,\n TYPES_EXTRA_DECK: 75505728,\n TYPE_CONTINUOUS: 131072,\n TYPE_COUNTER: 1048576,\n TYPE_DUAL: 2048,\n TYPE_EFFECT: 32,\n TYPE_EQUIP: 262144,\n TYPE_FIELD: 524288,\n TYPE_FLIP: 2097152,\n TYPE_FUSION: 64,\n TYPE_LINK: 67108864,\n TYPE_MONSTER: 1,\n TYPE_NORMAL: 16,\n TYPE_PENDULUM: 16777216,\n TYPE_QUICKPLAY: 65536,\n TYPE_RITUAL: 128,\n TYPE_SPELL: 2,\n TYPE_SPIRIT: 512,\n TYPE_SPSUMMON: 33554432,\n TYPE_SYNCHRO: 8192,\n TYPE_TOKEN: 16384,\n TYPE_TOON: 4194304,\n TYPE_TRAP: 4,\n TYPE_TRAPMONSTER: 256,\n TYPE_TUNER: 4096,\n TYPE_UNION: 1024,\n TYPE_XYZ: 8388608,\n} as const;\n", "import { BinaryField } from '../../binary/binary-meta';\nimport { PayloadBase } from '../../proto-base/payload-base';\nimport { OcgcoreCommonConstants } from '../../vendor/ocgcore-constants';\n\n// Constants from card_data.h\nconst CARD_ARTWORK_VERSIONS_OFFSET = 20;\nconst CARD_BLACK_LUSTER_SOLDIER2 = 5405695;\n\n// Double name cards\nconst CARD_MARINE_DOLPHIN = 78734254;\nconst CARD_TWINKLE_MOSS = 13857930;\n\n// Helper functions\nfunction checkSetcode(setcode: number, value: number): boolean {\n const settype = value & 0x0fff;\n const setsubtype = value & 0xf000;\n return (\n setcode &&\n (setcode & 0x0fff) === settype &&\n (setcode & setsubtype) === setsubtype\n );\n}\n\nfunction isAlternative(code: number, alias: number): boolean {\n if (code === CARD_BLACK_LUSTER_SOLDIER2) {\n return false;\n }\n return (\n alias &&\n alias < code + CARD_ARTWORK_VERSIONS_OFFSET &&\n code < alias + CARD_ARTWORK_VERSIONS_OFFSET\n );\n}\n\nexport class CardData extends PayloadBase {\n @BinaryField('u32', 0)\n code: number;\n\n @BinaryField('u32', 4)\n alias: number;\n\n @BinaryField('u16', 8, 16)\n setcode: number[];\n\n @BinaryField('u32', 40)\n type: number;\n\n @BinaryField('u32', 44)\n level: number;\n\n @BinaryField('u32', 48)\n attribute: number;\n\n @BinaryField('u32', 52)\n race: number;\n\n @BinaryField('i32', 56)\n attack: number;\n\n @BinaryField('i32', 60)\n defense: number;\n\n @BinaryField('u32', 64)\n lscale: number;\n\n @BinaryField('u32', 68)\n rscale: number;\n\n @BinaryField('u32', 72)\n linkMarker: number;\n\n /**\n * Check if this card belongs to a specific setcode\n * @param value The setcode value to check against\n * @returns true if the card belongs to the setcode\n */\n isSetCard(value: number): boolean {\n for (const x of this.setcode) {\n if (!x) {\n return false;\n }\n if (checkSetcode(x, value)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the original code of this card (handles alternate artworks)\n * @returns The original card code\n */\n getOriginalCode(): number {\n return isAlternative(this.code, this.alias) ? this.alias : this.code;\n }\n\n /**\n * Check if this card can be declared with the given opcode filter\n * @param opcode Array of opcodes that define the filter expression\n * @returns true if the card can be declared\n */\n isDeclarable(opcode: number[]): boolean {\n const stack: number[] = [];\n\n for (const it of opcode) {\n switch (it) {\n case OcgcoreCommonConstants.OPCODE_ADD: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs + rhs);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_SUB: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs - rhs);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_MUL: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs * rhs);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_DIV: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(Math.floor(lhs / rhs));\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_AND: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs && rhs ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_OR: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs || rhs ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_NEG: {\n if (stack.length >= 1) {\n const val = stack.pop()!;\n stack.push(-val);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_NOT: {\n if (stack.length >= 1) {\n const val = stack.pop()!;\n stack.push(!val ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISCODE: {\n if (stack.length >= 1) {\n const code = stack.pop()!;\n stack.push(this.code === code ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISSETCARD: {\n if (stack.length >= 1) {\n const setCode = stack.pop()!;\n const res = this.isSetCard(setCode);\n stack.push(res ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISTYPE: {\n if (stack.length >= 1) {\n const val = stack.pop()!;\n stack.push(this.type & val ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISRACE: {\n if (stack.length >= 1) {\n const raceVal = stack.pop()!;\n stack.push(this.race & raceVal ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISATTRIBUTE: {\n if (stack.length >= 1) {\n const attributeVal = stack.pop()!;\n stack.push(this.attribute & attributeVal ? 1 : 0);\n }\n break;\n }\n default: {\n // Push literal value\n stack.push(it);\n break;\n }\n }\n }\n\n if (stack.length !== 1 || stack[0] === 0) {\n return false;\n }\n\n // Additional checks from the original C++ code\n return (\n this.code === CARD_MARINE_DOLPHIN ||\n this.code === CARD_TWINKLE_MOSS ||\n (!this.alias &&\n (this.type &\n (OcgcoreCommonConstants.TYPE_MONSTER |\n OcgcoreCommonConstants.TYPE_TOKEN)) !==\n (OcgcoreCommonConstants.TYPE_MONSTER |\n OcgcoreCommonConstants.TYPE_TOKEN))\n );\n }\n}\n", "import { OcgcoreCommonConstants } from '../../vendor/ocgcore-constants';\n\nexport class CardQuery_CardLocation {\n controller: number;\n location: number;\n sequence: number;\n}\n\nexport class CardQuery_Counter {\n type: number;\n count: number;\n}\n\nexport class CardQuery {\n flags: number = 0;\n empty?: boolean;\n\n // QUERY_CODE (1)\n code?: number;\n\n // QUERY_POSITION (2)\n position?: number;\n\n // QUERY_ALIAS (4)\n alias?: number;\n\n // QUERY_TYPE (8)\n type?: number;\n\n // QUERY_LEVEL (16)\n level?: number;\n\n // QUERY_RANK (32)\n rank?: number;\n\n // QUERY_ATTRIBUTE (64)\n attribute?: number;\n\n // QUERY_RACE (128)\n race?: number;\n\n // QUERY_ATTACK (256)\n attack?: number;\n\n // QUERY_DEFENSE (512)\n defense?: number;\n\n // QUERY_BASE_ATTACK (1024)\n baseAttack?: number;\n\n // QUERY_BASE_DEFENSE (2048)\n baseDefense?: number;\n\n // QUERY_REASON (4096)\n reason?: number;\n\n // QUERY_EQUIP_CARD (16384)\n equipCard?: CardQuery_CardLocation;\n\n // QUERY_TARGET_CARD (32768)\n targetCards?: CardQuery_CardLocation[];\n\n // QUERY_OVERLAY_CARD (65536)\n overlayCards?: number[];\n\n // QUERY_COUNTERS (131072)\n counters?: CardQuery_Counter[];\n\n // QUERY_OWNER (262144)\n owner?: number;\n\n // QUERY_STATUS (524288)\n status?: number;\n\n // QUERY_LSCALE (2097152)\n lscale?: number;\n\n // QUERY_RSCALE (4194304)\n rscale?: number;\n\n // QUERY_LINK (8388608)\n link?: number;\n linkMarker?: number;\n\n fromPayload(data: Uint8Array): this {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n let offset = 0;\n\n // \u8BFB\u53D6 flags\n this.flags = view.getInt32(offset, true) >>> 0;\n offset += 4;\n\n if (this.flags === 0) {\n this.empty = true;\n return this;\n }\n\n this.empty = false;\n\n // \u6309\u987A\u5E8F\u68C0\u67E5\u6BCF\u4E2A\u67E5\u8BE2\u6807\u5FD7\n if (this.flags & OcgcoreCommonConstants.QUERY_CODE) {\n this.code = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_POSITION) {\n const pdata = view.getInt32(offset, true);\n this.position = ((pdata >>> 24) & 0xff) >>> 0;\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_ALIAS) {\n this.alias = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_TYPE) {\n this.type = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_LEVEL) {\n this.level = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_RANK) {\n this.rank = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_ATTRIBUTE) {\n this.attribute = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_RACE) {\n this.race = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_ATTACK) {\n this.attack = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_DEFENSE) {\n this.defense = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_BASE_ATTACK) {\n this.baseAttack = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_BASE_DEFENSE) {\n this.baseDefense = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_REASON) {\n this.reason = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_REASON_CARD) {\n // \u8DF3\u8FC7 4 \u5B57\u8282\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_EQUIP_CARD) {\n this.equipCard = {\n controller: view.getUint8(offset),\n location: view.getUint8(offset + 1),\n sequence: view.getUint8(offset + 2),\n };\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_TARGET_CARD) {\n const count = view.getInt32(offset, true);\n offset += 4;\n this.targetCards = [];\n for (let i = 0; i < count; i++) {\n this.targetCards.push({\n controller: view.getUint8(offset),\n location: view.getUint8(offset + 1),\n sequence: view.getUint8(offset + 2),\n });\n offset += 4;\n }\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_OVERLAY_CARD) {\n const count = view.getInt32(offset, true);\n offset += 4;\n this.overlayCards = [];\n for (let i = 0; i < count; i++) {\n this.overlayCards.push(view.getInt32(offset, true));\n offset += 4;\n }\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_COUNTERS) {\n const count = view.getInt32(offset, true);\n offset += 4;\n this.counters = [];\n for (let i = 0; i < count; i++) {\n this.counters.push({\n type: view.getUint16(offset, true),\n count: view.getUint16(offset + 2, true),\n });\n offset += 4;\n }\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_OWNER) {\n this.owner = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_STATUS) {\n this.status = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_LSCALE) {\n this.lscale = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_RSCALE) {\n this.rscale = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_LINK) {\n this.link = view.getInt32(offset, true);\n offset += 4;\n this.linkMarker = view.getInt32(offset, true);\n offset += 4;\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n return serializeCardQuery(this);\n }\n}\n\nexport function serializeCardQuery(card?: Partial<CardQuery>): Uint8Array {\n const source = card || {};\n const flags = source.flags || 0;\n\n // \u8BA1\u7B97\u603B\u5927\u5C0F\n let size = 4; // flags\n\n if (flags & OcgcoreCommonConstants.QUERY_CODE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_POSITION) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_ALIAS) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_TYPE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_LEVEL) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_RANK) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_ATTRIBUTE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_RACE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_ATTACK) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_DEFENSE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_BASE_ATTACK) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_BASE_DEFENSE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_REASON) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_REASON_CARD) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_EQUIP_CARD) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_TARGET_CARD) {\n size += 4 + (source.targetCards?.length || 0) * 4;\n }\n if (flags & OcgcoreCommonConstants.QUERY_OVERLAY_CARD) {\n size += 4 + (source.overlayCards?.length || 0) * 4;\n }\n if (flags & OcgcoreCommonConstants.QUERY_COUNTERS) {\n size += 4 + (source.counters?.length || 0) * 4;\n }\n if (flags & OcgcoreCommonConstants.QUERY_OWNER) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_STATUS) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_LSCALE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_RSCALE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_LINK) size += 8;\n\n const result = new Uint8Array(size);\n const view = new DataView(result.buffer);\n let offset = 0;\n\n // \u5199\u5165 flags\n view.setInt32(offset, flags, true);\n offset += 4;\n\n if (source.empty || flags === 0) {\n return result;\n }\n\n // \u6309\u987A\u5E8F\u5199\u5165\u5B57\u6BB5\n if (flags & OcgcoreCommonConstants.QUERY_CODE) {\n view.setInt32(offset, source.code || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_POSITION) {\n // \u4F4D\u7F6E\u7F16\u7801\u5728\u9AD8\u5B57\u8282\n const pdata = ((source.position || 0) << 24) >>> 0;\n view.setInt32(offset, pdata, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_ALIAS) {\n view.setInt32(offset, source.alias || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_TYPE) {\n view.setInt32(offset, source.type || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_LEVEL) {\n view.setInt32(offset, source.level || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_RANK) {\n view.setInt32(offset, source.rank || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_ATTRIBUTE) {\n view.setInt32(offset, source.attribute || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_RACE) {\n view.setInt32(offset, source.race || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_ATTACK) {\n view.setInt32(offset, source.attack || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_DEFENSE) {\n view.setInt32(offset, source.defense || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_BASE_ATTACK) {\n view.setInt32(offset, source.baseAttack || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_BASE_DEFENSE) {\n view.setInt32(offset, source.baseDefense || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_REASON) {\n view.setInt32(offset, source.reason || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_REASON_CARD) {\n // QUERY_REASON_CARD \u5199\u5165 0\n view.setInt32(offset, 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_EQUIP_CARD) {\n const equipCard = source.equipCard || {\n controller: 0,\n location: 0,\n sequence: 0,\n };\n view.setUint8(offset, equipCard.controller);\n view.setUint8(offset + 1, equipCard.location);\n view.setUint8(offset + 2, equipCard.sequence);\n view.setUint8(offset + 3, 0);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_TARGET_CARD) {\n const targets = source.targetCards || [];\n view.setInt32(offset, targets.length, true);\n offset += 4;\n for (const target of targets) {\n view.setUint8(offset, target.controller);\n view.setUint8(offset + 1, target.location);\n view.setUint8(offset + 2, target.sequence);\n view.setUint8(offset + 3, 0);\n offset += 4;\n }\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_OVERLAY_CARD) {\n const overlays = source.overlayCards || [];\n view.setInt32(offset, overlays.length, true);\n offset += 4;\n for (const card of overlays) {\n view.setInt32(offset, card, true);\n offset += 4;\n }\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_COUNTERS) {\n const counters = source.counters || [];\n view.setInt32(offset, counters.length, true);\n offset += 4;\n for (const counter of counters) {\n view.setUint16(offset, counter.type, true);\n view.setUint16(offset + 2, counter.count, true);\n offset += 4;\n }\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_OWNER) {\n view.setInt32(offset, source.owner || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_STATUS) {\n view.setInt32(offset, source.status || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_LSCALE) {\n view.setInt32(offset, source.lscale || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_RSCALE) {\n view.setInt32(offset, source.rscale || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_LINK) {\n view.setInt32(offset, source.link || 0, true);\n offset += 4;\n view.setInt32(offset, source.linkMarker || 0, true);\n offset += 4;\n }\n\n return new Uint8Array(view.buffer, view.byteOffset, offset);\n}\n", "import { PayloadBase } from './payload-base';\n\nexport class YGOProProtoBase extends PayloadBase {\n static messageDirection = '';\n\n get messageDirection() {\n return (this.constructor as typeof YGOProProtoBase).messageDirection;\n }\n\n /**\n * Serialize to full payload including header (length + identifier + body)\n * Format: [length 2 bytes LE][identifier 1 byte][body]\n * Length = 1 (identifier) + body.length\n */\n toFullPayload(): Uint8Array {\n const body = this.toPayload();\n const length = 1 + body.length;\n const fullPayload = new Uint8Array(3 + body.length);\n\n // Write length (2 bytes, little endian)\n fullPayload[0] = length & 0xff;\n fullPayload[1] = (length >> 8) & 0xff;\n\n // Write identifier (1 byte)\n fullPayload[2] = this.identifier;\n\n // Write body\n fullPayload.set(body, 3);\n\n return fullPayload;\n }\n\n /**\n * Deserialize from full payload including header (length + identifier + body)\n * Format: [length 2 bytes LE][identifier 1 byte][body]\n * @param data - Full payload data\n * @returns this instance\n * @throws Error if data is too short or identifier mismatch\n */\n fromFullPayload(data: Uint8Array): this {\n if (data.length < 3) {\n throw new Error(\n `${this.messageDirection} payload too short: expected at least 3 bytes, got ${data.length}`,\n );\n }\n\n // Read length (2 bytes, little endian)\n const declaredLength = data[0] | (data[1] << 8);\n\n // Read identifier (1 byte)\n const identifier = data[2];\n\n // Verify identifier matches\n if (identifier !== this.identifier) {\n throw new Error(\n `${this.messageDirection} identifier mismatch: expected 0x${this.identifier.toString(16)}, got 0x${identifier.toString(16)}`,\n );\n }\n\n // Calculate expected total length (3 bytes header + body)\n const expectedTotalLength = 3 + declaredLength - 1; // -1 because length includes identifier\n\n // Check if data length is less than declared\n if (data.length < expectedTotalLength) {\n throw new Error(\n `${this.messageDirection} payload too short: declared length ${declaredLength} requires ${expectedTotalLength} bytes total, got ${data.length}`,\n );\n }\n\n // Truncate if data is longer than declared\n const bodyData =\n data.length > expectedTotalLength\n ? data.slice(3, expectedTotalLength)\n : data.slice(3);\n\n // Parse body\n return this.fromPayload(bodyData);\n }\n}\n", "import { YGOProProtoBase } from '../../proto-base/ygopro-proto-base';\n\n// CTOS base class only handles the body part\n// Format: [length 2 bytes][identifier 1 byte][body]\n// This class only deals with [body]\nexport class YGOProCtosBase extends YGOProProtoBase {\n static messageDirection = 'CTOS';\n}\n", "import { PayloadBase } from './payload-base';\n\nexport class RegistryBase<C extends typeof PayloadBase> {\n constructor(\n public payloadClass: C,\n private options: {\n identifierOffset?: number;\n dataOffset?: number;\n } = {},\n ) {}\n\n protos = new Map<number, C>();\n\n register(proto: C) {\n const identifier = proto.identifier;\n this.protos.set(identifier, proto);\n }\n\n get(identifier: number): C | undefined {\n return this.protos.get(identifier);\n }\n\n getInstanceFromPayload(data: Uint8Array): InstanceType<C> | undefined {\n const identifier = data[this.options.identifierOffset ?? 0];\n const proto = this.get(identifier);\n if (!proto) {\n return undefined;\n }\n return new proto().fromPayload(\n data.slice(this.options.dataOffset ?? 0),\n ) as InstanceType<C>;\n }\n\n getInstancesFromPayload(data: Uint8Array): InstanceType<C>[] {\n const instances: InstanceType<C>[] = [];\n const identifierOffset = this.options.identifierOffset ?? 0;\n const dataOffset = this.options.dataOffset ?? 0;\n const minLength = Math.max(identifierOffset + 1, dataOffset);\n let remaining = data;\n\n while (remaining.length > 0) {\n // \u5269\u4F59\u6570\u636E\u4E0D\u8DB3\u4EE5\u8BFB\u53D6 identifier/body \u8D77\u59CB\u504F\u79FB\u65F6\u505C\u6B62\n if (remaining.length < minLength) {\n break;\n }\n\n try {\n const instance = this.getInstanceFromPayload(remaining);\n if (!instance) {\n break;\n }\n\n const consumed = dataOffset + instance.toPayload().length;\n if (consumed <= 0 || consumed > remaining.length) {\n break;\n }\n\n instances.push(instance);\n remaining = remaining.slice(consumed);\n } catch {\n break;\n }\n }\n\n return instances;\n }\n}\n", "import { RegistryBase } from './registry-base';\nimport { YGOProProtoBase } from './ygopro-proto-base';\n\n/**\n * Registry for CTOS/STOC style full payloads:\n * [length 2 bytes LE][identifier 1 byte][body]\n */\nexport class ProtoRegistryBase<C extends typeof YGOProProtoBase> extends RegistryBase<C> {\n constructor(payloadClass: C) {\n super(payloadClass, {\n identifierOffset: 2,\n dataOffset: 3,\n });\n }\n\n getInstancesFromPayload(data: Uint8Array): InstanceType<C>[] {\n const instances: InstanceType<C>[] = [];\n let offset = 0;\n\n while (offset + 2 <= data.length) {\n const declaredLength = data[offset] | (data[offset + 1] << 8);\n if (declaredLength <= 0) {\n break;\n }\n\n // declaredLength includes identifier byte, so total = 2-byte length + declaredLength\n const packetLength = 2 + declaredLength;\n if (offset + packetLength > data.length) {\n break;\n }\n\n const chunk = data.slice(offset, offset + packetLength);\n const identifier = chunk[2];\n const proto = this.get(identifier);\n if (!proto) {\n break;\n }\n\n try {\n const instance = new proto().fromFullPayload(chunk) as InstanceType<C>;\n instances.push(instance);\n } catch {\n break;\n }\n\n offset += packetLength;\n }\n\n return instances;\n }\n}\n\n", "import { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosResponse extends YGOProCtosBase {\n static identifier = 0x1;\n\n // byte array - variable length, entire payload\n response: Uint8Array;\n\n fromPayload(data: Uint8Array): this {\n this.response = data;\n return this;\n }\n\n toPayload(): Uint8Array {\n return this.response || new Uint8Array(0);\n }\n}\n", "import YGOProDeck from 'ygopro-deck-encode';\nimport { YGOProCtosBase } from '../base';\n\n// CTOS_UPDATE_DECK uses ygopro-deck-encode\nexport class YGOProCtosUpdateDeck extends YGOProCtosBase {\n static identifier = 0x2;\n\n deck: YGOProDeck;\n\n constructor() {\n super();\n this.deck = new YGOProDeck();\n }\n\n fromPayload(data: Uint8Array): this {\n this.deck = YGOProDeck.fromUpdateDeckPayload(data);\n return this;\n }\n\n toPayload(): Uint8Array {\n return this.deck.toUpdateDeckPayload();\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.deck) {\n // Pass deck data to constructor\n this.deck = new YGOProDeck(data.deck);\n }\n return this;\n }\n\n copy(): this {\n const copied = new (this.constructor as any)();\n copied.deck = new YGOProDeck(this.deck);\n return copied;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\nimport { HandResult } from '../../network-enums';\n\nexport class YGOProCtosHandResult extends YGOProCtosBase {\n static identifier = 0x3;\n\n @BinaryField('u8', 0)\n res: HandResult;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\nimport { TurnPlayerResult } from '../../network-enums';\n\nexport class YGOProCtosTpResult extends YGOProCtosBase {\n static identifier = 0x4;\n\n @BinaryField('u8', 0)\n res: TurnPlayerResult;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosPlayerInfo extends YGOProCtosBase {\n static identifier = 0x10;\n\n @BinaryField('utf16', 0, 20)\n name: string;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { HostInfo } from '../../common';\nimport { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosCreateGame extends YGOProCtosBase {\n static identifier = 0x11;\n\n @BinaryField(() => HostInfo, 0)\n info: HostInfo;\n\n @BinaryField('utf16', 20, 20)\n name: string;\n\n @BinaryField('utf16', 60, 20)\n pass: string;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosJoinGame extends YGOProCtosBase {\n static identifier = 0x12;\n\n @BinaryField('u16', 0)\n version: number;\n\n // 2 bytes padding\n\n @BinaryField('u32', 4)\n gameid: number;\n\n @BinaryField('utf16', 8, 20)\n pass: string;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_LEAVE_GAME has no data (no body)\nexport class YGOProCtosLeaveGame extends YGOProCtosBase {\n static identifier = 0x13;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_SURRENDER has no data (no body)\nexport class YGOProCtosSurrender extends YGOProCtosBase {\n static identifier = 0x14;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_TIME_CONFIRM has no data (no body)\nexport class YGOProCtosTimeConfirm extends YGOProCtosBase {\n static identifier = 0x15;\n}\n", "import { YGOProCtosBase } from '../base';\n\nconst CTOS_CHAT_MAX_LENGTH = 256;\n\n// CTOS_CHAT: uint16_t array (UTF-16 string)\n// Variable length: sends actual content + null terminator if not full\n// Maximum length: 256 characters (LEN_CHAT_MSG in YGOPro)\n// Client typically limits to 255 characters (setMax(LEN_CHAT_MSG - 1))\nexport class YGOProCtosChat extends YGOProCtosBase {\n static identifier = 0x16;\n static readonly MAX_LENGTH = CTOS_CHAT_MAX_LENGTH;\n\n msg: string;\n\n constructor() {\n super();\n this.msg = '';\n }\n\n fromPayload(data: Uint8Array): this {\n // Decode UTF-16LE from all available bytes\n const decoder = new TextDecoder('utf-16le');\n this.msg = decoder.decode(data).replace(/\\0+$/, ''); // Remove trailing nulls\n return this;\n }\n\n toPayload(): Uint8Array {\n // Truncate message to maximum length (256 characters)\n const text =\n this.msg.length > CTOS_CHAT_MAX_LENGTH\n ? this.msg.substring(0, CTOS_CHAT_MAX_LENGTH)\n : this.msg;\n\n // Convert to UTF-16LE manually\n const utf16 = new Uint16Array(text.length + 1); // +1 for null terminator\n for (let i = 0; i < text.length; i++) {\n utf16[i] = text.charCodeAt(i);\n }\n utf16[text.length] = 0; // Null terminator\n\n // Convert to bytes (little endian)\n const result = new Uint8Array(utf16.buffer);\n return result;\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.msg !== undefined) {\n this.msg = data.msg;\n }\n return this;\n }\n}\n", "import { YGOProCtosBase } from '../base';\n\nconst CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH = 256;\n\n// CTOS_EXTERNAL_ADDRESS\n// uint32_t real_ip; (IPv4 address, BE, always 0 in normal client)\n// uint16_t hostname[256]; (UTF-16 string, variable length)\n// Maximum hostname length: 256 characters (LEN_HOSTNAME in YGOPro)\nexport class YGOProCtosExternalAddress extends YGOProCtosBase {\n static identifier = 0x17;\n static readonly MAX_LENGTH = CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH;\n static readonly MAX_HOSTNAME_LENGTH =\n CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH;\n\n real_ip: string; // IPv4 address as string (e.g., \"127.0.0.1\" or \"::ffff:127.0.0.1\")\n hostname: string;\n\n constructor() {\n super();\n this.real_ip = '0.0.0.0';\n this.hostname = '';\n }\n\n // Convert IPv4 string to uint32 (network byte order / big endian)\n private ipToUint32(ip: string): number {\n // Handle IPv6-mapped IPv4 addresses (::ffff:x.x.x.x)\n let ipv4 = ip;\n if (ip.startsWith('::ffff:')) {\n ipv4 = ip.substring(7);\n }\n\n const parts = ipv4.split('.');\n if (parts.length !== 4) {\n return 0; // Invalid IP, return 0\n }\n\n const bytes = parts.map((p) => parseInt(p, 10));\n if (bytes.some((b) => isNaN(b) || b < 0 || b > 255)) {\n return 0; // Invalid IP, return 0\n }\n\n // Network byte order (big endian)\n return (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];\n }\n\n // Convert uint32 (network byte order / big endian) to IPv4 string\n private uint32ToIp(value: number): string {\n const byte1 = (value >>> 24) & 0xff;\n const byte2 = (value >>> 16) & 0xff;\n const byte3 = (value >>> 8) & 0xff;\n const byte4 = value & 0xff;\n return `${byte1}.${byte2}.${byte3}.${byte4}`;\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 4) {\n throw new Error('CTOS_EXTERNAL_ADDRESS data too short');\n }\n\n // Read real_ip (4 bytes, big endian / network byte order)\n const ipUint32 =\n (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];\n this.real_ip = this.uint32ToIp(ipUint32);\n\n // Decode remaining bytes as UTF-16LE\n if (data.length > 4) {\n const decoder = new TextDecoder('utf-16le');\n this.hostname = decoder.decode(data.slice(4)).replace(/\\0+$/, ''); // Remove trailing nulls\n } else {\n this.hostname = '';\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // Truncate hostname to maximum length (256 characters)\n const text =\n this.hostname.length > CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH\n ? this.hostname.substring(0, CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH)\n : this.hostname;\n\n // Convert to UTF-16LE manually\n const utf16 = new Uint16Array(text.length + 1); // +1 for null terminator\n for (let i = 0; i < text.length; i++) {\n utf16[i] = text.charCodeAt(i);\n }\n utf16[text.length] = 0; // Null terminator\n\n // Create result buffer: real_ip (4 bytes) + UTF-16LE string\n const result = new Uint8Array(4 + utf16.byteLength);\n\n // Convert real_ip string to uint32 and write (big endian / network byte order)\n const ipUint32 = this.ipToUint32(this.real_ip);\n result[0] = (ipUint32 >>> 24) & 0xff;\n result[1] = (ipUint32 >>> 16) & 0xff;\n result[2] = (ipUint32 >>> 8) & 0xff;\n result[3] = ipUint32 & 0xff;\n\n // Write UTF-16LE string\n result.set(new Uint8Array(utf16.buffer), 4);\n\n return result;\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.real_ip !== undefined) {\n this.real_ip = data.real_ip;\n }\n if (data.hostname !== undefined) {\n this.hostname = data.hostname;\n }\n return this;\n }\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_TODUELIST has no data (no body)\nexport class YGOProCtosHsToDuelist extends YGOProCtosBase {\n static identifier = 0x20;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_TOOBSERVER has no data (no body)\nexport class YGOProCtosHsToObserver extends YGOProCtosBase {\n static identifier = 0x21;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_READY has no data (no body)\nexport class YGOProCtosHsReady extends YGOProCtosBase {\n static identifier = 0x22;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_NOTREADY has no data (no body)\nexport class YGOProCtosHsNotReady extends YGOProCtosBase {\n static identifier = 0x23;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\nimport { NetPlayerType } from '../../network-enums';\n\nexport class YGOProCtosKick extends YGOProCtosBase {\n static identifier = 0x24;\n\n @BinaryField('u8', 0)\n pos: NetPlayerType;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_START has no data (no body)\nexport class YGOProCtosHsStart extends YGOProCtosBase {\n static identifier = 0x25;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_REQUEST_FIELD has no data (no body)\nexport class YGOProCtosRequestField extends YGOProCtosBase {\n static identifier = 0x30;\n}\n", "import { ProtoRegistryBase } from '../../proto-base/proto-registry-base';\nimport { YGOProCtosBase } from './base';\nimport {\n YGOProCtosResponse,\n YGOProCtosUpdateDeck,\n YGOProCtosHandResult,\n YGOProCtosTpResult,\n YGOProCtosPlayerInfo,\n YGOProCtosCreateGame,\n YGOProCtosJoinGame,\n YGOProCtosLeaveGame,\n YGOProCtosSurrender,\n YGOProCtosTimeConfirm,\n YGOProCtosChat,\n YGOProCtosExternalAddress,\n YGOProCtosHsToDuelist,\n YGOProCtosHsToObserver,\n YGOProCtosHsReady,\n YGOProCtosHsNotReady,\n YGOProCtosKick,\n YGOProCtosHsStart,\n YGOProCtosRequestField,\n} from './proto';\n\nexport const YGOProCtos = new ProtoRegistryBase(YGOProCtosBase);\n\nYGOProCtos.register(YGOProCtosResponse);\nYGOProCtos.register(YGOProCtosUpdateDeck);\nYGOProCtos.register(YGOProCtosHandResult);\nYGOProCtos.register(YGOProCtosTpResult);\nYGOProCtos.register(YGOProCtosPlayerInfo);\nYGOProCtos.register(YGOProCtosCreateGame);\nYGOProCtos.register(YGOProCtosJoinGame);\nYGOProCtos.register(YGOProCtosLeaveGame);\nYGOProCtos.register(YGOProCtosSurrender);\nYGOProCtos.register(YGOProCtosTimeConfirm);\nYGOProCtos.register(YGOProCtosChat);\nYGOProCtos.register(YGOProCtosExternalAddress);\nYGOProCtos.register(YGOProCtosHsToDuelist);\nYGOProCtos.register(YGOProCtosHsToObserver);\nYGOProCtos.register(YGOProCtosHsReady);\nYGOProCtos.register(YGOProCtosHsNotReady);\nYGOProCtos.register(YGOProCtosKick);\nYGOProCtos.register(YGOProCtosHsStart);\nYGOProCtos.register(YGOProCtosRequestField);\n", "import { YGOProProtoBase } from '../../proto-base/ygopro-proto-base';\n\n// STOC base class only handles the body part\n// Format: [length 2 bytes][identifier 1 byte][body]\n// This class only deals with [body]\nexport class YGOProStocBase extends YGOProProtoBase {\n static messageDirection = 'STOC';\n}\n", "/**\n * Network protocol enums\n * These enums are derived from gframe/network.h\n */\n\n/**\n * Hand result (rock-paper-scissors)\n */\nexport enum HandResult {\n ROCK = 1,\n SCISSORS = 2,\n PAPER = 3,\n}\n\n/**\n * Turn player result (first/second)\n */\nexport enum TurnPlayerResult {\n SECOND = 0,\n FIRST = 1,\n}\n\n/**\n * Player type / position\n */\nexport enum NetPlayerType {\n PLAYER1 = 0,\n PLAYER2 = 1,\n PLAYER3 = 2,\n PLAYER4 = 3,\n PLAYER5 = 4,\n PLAYER6 = 5,\n OBSERVER = 7,\n}\n\n/**\n * Chat message colors (used in STOC_Chat.player_type)\n */\nexport enum ChatColor {\n LIGHTBLUE = 8,\n RED = 11,\n GREEN = 12,\n BLUE = 13,\n BABYBLUE = 14,\n PINK = 15,\n YELLOW = 16,\n WHITE = 17,\n GRAY = 18,\n DARKGRAY = 19,\n}\n\n/**\n * Game mode\n */\nexport enum GameMode {\n SINGLE = 0,\n MATCH = 1,\n TAG = 2,\n}\n\n/**\n * Error message type\n */\nexport enum ErrorMessageType {\n JOINERROR = 1,\n DECKERROR = 2,\n SIDEERROR = 3,\n VERERROR = 4,\n}\n\n/**\n * Deck error type (used in high 4 bits of error code)\n */\nexport enum DeckErrorType {\n LFLIST = 1,\n OCGONLY = 2,\n TCGONLY = 3,\n UNKNOWNCARD = 4,\n CARDCOUNT = 5,\n MAINCOUNT = 6,\n EXTRACOUNT = 7,\n SIDECOUNT = 8,\n NOTAVAIL = 9,\n}\n\n/**\n * Player change state\n */\nexport enum PlayerChangeState {\n OBSERVE = 8,\n READY = 9,\n NOTREADY = 10,\n LEAVE = 11,\n}\n\n/**\n * Room status (SRVPro)\n */\nexport enum RoomStatus {\n WAITING = 0,\n DUELING = 1,\n SIDING = 2,\n}\n", "import { PayloadBase } from '../../proto-base/payload-base';\nimport { NetPlayerType } from '../network-enums';\nimport {\n RequireQueryCardLocation,\n RequireQueryLocation,\n} from './query-location';\n\n// \u5E38\u7528\u7684\u53D1\u9001\u76EE\u6807\u5E38\u91CF\nexport const SEND_TO_PLAYERS: number[] = [0, 1];\nexport const SEND_TO_ALL: number[] = [0, 1, NetPlayerType.OBSERVER];\n\nexport class YGOProMsgBase extends PayloadBase {\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n // \u4ECE\u7B2C\u4E8C\u4E2A\u5B57\u8282\u5F00\u59CB\u89E3\u6790\n return super.fromPayload(data.slice(1));\n }\n\n toPayload(): Uint8Array {\n const payload = super.toPayload();\n const result = new Uint8Array(1 + payload.length);\n result[0] = this.identifier;\n result.set(payload, 1);\n return result;\n }\n\n opponentView(): this {\n return this.copy();\n }\n\n teammateView(): this {\n return this.copy();\n }\n\n observerView(): this {\n return this.opponentView();\n }\n\n playerView(playerId: number): this {\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (typeof this['player'] === 'number') {\n const selfPlayerId = this['player'];\n if (selfPlayerId === playerId) {\n return this.copy();\n }\n return this.opponentView();\n }\n return this.copy();\n }\n\n getSendTargets(): number[] {\n return SEND_TO_ALL;\n }\n\n getRequireRefreshZones(): RequireQueryLocation[] {\n return [];\n }\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgAddCounter extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_ADD_COUNTER;\n\n @BinaryField('u16', 0)\n counterType: number;\n\n @BinaryField('u8', 2)\n controller: number;\n\n @BinaryField('u8', 3)\n location: number;\n\n @BinaryField('u8', 4)\n sequence: number;\n\n @BinaryField('u16', 5)\n count: number;\n}\n", "import { YGOProMsgBase } from './base';\n\nexport class YGOProMsgResponseBase extends YGOProMsgBase {\n defaultResponse(): Uint8Array | undefined {\n return undefined;\n }\n\n responsePlayer(): number {\n return 0;\n }\n\n getSendTargets(): number[] {\n return [this.responsePlayer()];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgAnnounceAttrib extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_ATTRIB;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u32', 2)\n availableAttributes: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(attributes: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, attributes, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgAnnounceCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n opcodes: number[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(cardCode: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, cardCode, true);\n return buffer;\n }\n}\n", "const INDEX_RESPONSE_SYMBOL = Symbol('IndexResponse');\n\nexport interface IndexResponseObject {\n [INDEX_RESPONSE_SYMBOL]: true;\n index: number;\n}\n\nexport const IndexResponse = (index: number): IndexResponseObject => ({\n [INDEX_RESPONSE_SYMBOL]: true,\n index,\n});\n\nexport const isIndexResponse = (obj: any): obj is IndexResponseObject => {\n return obj != null && obj[INDEX_RESPONSE_SYMBOL] === true;\n};\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgAnnounceNumber extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_NUMBER;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n numbers: number[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(option: IndexResponseObject | number) {\n let index: number;\n\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.numbers.indexOf(option);\n if (index === -1) {\n throw new TypeError(`Number not found: ${option}`);\n }\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, index, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgAnnounceRace extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_RACE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u32', 2)\n availableRaces: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(races: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, races, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgAttack_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgAttack extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_ATTACK;\n\n @BinaryField(() => YGOProMsgAttack_CardLocation, 0)\n attacker: YGOProMsgAttack_CardLocation;\n\n @BinaryField(() => YGOProMsgAttack_CardLocation, 4)\n defender: YGOProMsgAttack_CardLocation;\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgAttackDisabled extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_ATTACK_DISABLED;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgBattle_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgBattle_CardStats {\n @BinaryField(() => YGOProMsgBattle_CardLocation, 0)\n location: YGOProMsgBattle_CardLocation;\n\n @BinaryField('i32', 4)\n atk: number;\n\n @BinaryField('i32', 8)\n def: number;\n}\n\nexport class YGOProMsgBattle extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_BATTLE;\n\n @BinaryField(() => YGOProMsgBattle_CardStats, 0)\n attacker: YGOProMsgBattle_CardStats;\n\n @BinaryField(() => YGOProMsgBattle_CardStats, 12)\n defender: YGOProMsgBattle_CardStats;\n\n @BinaryField('u8', 24)\n battleDamageCalc: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgBecomeTarget extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_BECOME_TARGET;\n\n @BinaryField('u8', 0)\n count: number;\n\n @BinaryField('i32', 1, (obj) => obj.count)\n targets: number[];\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgCancelTarget_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgCancelTarget extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CANCEL_TARGET;\n\n @BinaryField(() => YGOProMsgCancelTarget_CardLocation, 0)\n card1: YGOProMsgCancelTarget_CardLocation;\n\n @BinaryField(() => YGOProMsgCancelTarget_CardLocation, 3)\n card2: YGOProMsgCancelTarget_CardLocation;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgCardHint extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CARD_HINT;\n\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n subsequence: number;\n\n @BinaryField('u8', 4)\n type: number;\n\n @BinaryField('i32', 5)\n value: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgCardTarget_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgCardTarget extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CARD_TARGET;\n\n @BinaryField(() => YGOProMsgCardTarget_CardLocation, 0)\n card1: YGOProMsgCardTarget_CardLocation;\n\n @BinaryField(() => YGOProMsgCardTarget_CardLocation, 3)\n card2: YGOProMsgCardTarget_CardLocation;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainDisabled extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_DISABLED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n}\n", "// Generated from /home/nanahira/ygo/ygopro/script/constant.lua\nexport const OcgcoreScriptConstants = {\n ACTIVITY_ATTACK: 5,\n ACTIVITY_BATTLE_PHASE: 6,\n ACTIVITY_CHAIN: 7,\n ACTIVITY_FLIPSUMMON: 4,\n ACTIVITY_NORMALSUMMON: 2,\n ACTIVITY_SPSUMMON: 3,\n ACTIVITY_SUMMON: 1,\n ASSUME_ATTACK: 7,\n ASSUME_ATTRIBUTE: 5,\n ASSUME_CODE: 1,\n ASSUME_DEFENSE: 8,\n ASSUME_LEVEL: 3,\n ASSUME_RACE: 6,\n ASSUME_RANK: 4,\n ASSUME_TYPE: 2,\n ATTRIBUTE_ALL: 127,\n ATTRIBUTE_DARK: 32,\n ATTRIBUTE_DIVINE: 64,\n ATTRIBUTE_EARTH: 1,\n ATTRIBUTE_FIRE: 4,\n ATTRIBUTE_LIGHT: 16,\n ATTRIBUTE_WATER: 2,\n ATTRIBUTE_WIND: 8,\n CARD_MARINE_DOLPHIN: 78734254,\n CARD_QUESTION: 38723936,\n CARD_TWINKLE_MOSS: 13857930,\n CATEGORY_ANNOUNCE: 536870912,\n CATEGORY_ATKCHANGE: 2097152,\n CATEGORY_COIN: 16777216,\n CATEGORY_CONTROL: 8192,\n CATEGORY_COUNTER: 8388608,\n CATEGORY_DAMAGE: 524288,\n CATEGORY_DECKDES: 64,\n CATEGORY_DEFCHANGE: 4194304,\n CATEGORY_DESTROY: 1,\n CATEGORY_DICE: 33554432,\n CATEGORY_DISABLE: 16384,\n CATEGORY_DISABLE_SUMMON: 32768,\n CATEGORY_DRAW: 65536,\n CATEGORY_EQUIP: 262144,\n CATEGORY_FUSION_SUMMON: 1073741824,\n CATEGORY_GRAVE_ACTION: 2048,\n CATEGORY_GRAVE_SPSUMMON: 134217728,\n CATEGORY_HANDES: 128,\n CATEGORY_LEAVE_GRAVE: 67108864,\n CATEGORY_NEGATE: 268435456,\n CATEGORY_POSITION: 4096,\n CATEGORY_RECOVER: 1048576,\n CATEGORY_RELEASE: 2,\n CATEGORY_REMOVE: 4,\n CATEGORY_SEARCH: 131072,\n CATEGORY_SPECIAL_SUMMON: 512,\n CATEGORY_SUMMON: 256,\n CATEGORY_TODECK: 16,\n CATEGORY_TOEXTRA: 2147483648,\n CATEGORY_TOGRAVE: 32,\n CATEGORY_TOHAND: 8,\n CATEGORY_TOKEN: 1024,\n CHAININFO_CHAIN_COUNT: 1,\n CHAININFO_CHAIN_ID: 2048,\n CHAININFO_DISABLE_PLAYER: 1024,\n CHAININFO_DISABLE_REASON: 512,\n CHAININFO_EXTTYPE: 8192,\n CHAININFO_TARGET_CARDS: 64,\n CHAININFO_TARGET_PARAM: 256,\n CHAININFO_TARGET_PLAYER: 128,\n CHAININFO_TRIGGERING_ATTACK: 4194304,\n CHAININFO_TRIGGERING_ATTRIBUTE: 1048576,\n CHAININFO_TRIGGERING_CODE: 32768,\n CHAININFO_TRIGGERING_CODE2: 65536,\n CHAININFO_TRIGGERING_CONTROLER: 8,\n CHAININFO_TRIGGERING_DEFENSE: 8388608,\n CHAININFO_TRIGGERING_EFFECT: 2,\n CHAININFO_TRIGGERING_LEVEL: 262144,\n CHAININFO_TRIGGERING_LOCATION: 16,\n CHAININFO_TRIGGERING_PLAYER: 4,\n CHAININFO_TRIGGERING_POSITION: 16384,\n CHAININFO_TRIGGERING_RACE: 2097152,\n CHAININFO_TRIGGERING_RANK: 524288,\n CHAININFO_TRIGGERING_SEQUENCE: 32,\n CHAININFO_TYPE: 4096,\n CHINT_ATTRIBUTE: 4,\n CHINT_CARD: 2,\n CHINT_DESC: 6,\n CHINT_NUMBER: 5,\n CHINT_RACE: 3,\n CHINT_TURN: 1,\n COUNTER_NEED_ENABLE: 8192,\n COUNTER_WITHOUT_PERMIT: 4096,\n DUEL_ATTACK_FIRST_TURN: 2,\n DUEL_OBSOLETE_RULING: 8,\n DUEL_OLD_REPLAY: 4,\n DUEL_PSEUDO_SHUFFLE: 16,\n DUEL_RETURN_DECK_TOP: 128,\n DUEL_REVEAL_DECK_SEQ: 256,\n DUEL_SIMPLE_AI: 64,\n DUEL_TAG_MODE: 32,\n DUEL_TEST_MODE: 1,\n EFFECT_ACTIVATE_COST: 90,\n EFFECT_ACTIVATION_COUNT_LIMIT: 367,\n EFFECT_ADD_ATTRIBUTE: 125,\n EFFECT_ADD_CODE: 113,\n EFFECT_ADD_EXTRA_TRIBUTE: 157,\n EFFECT_ADD_FUSION_ATTRIBUTE: 349,\n EFFECT_ADD_FUSION_CODE: 340,\n EFFECT_ADD_FUSION_SETCODE: 341,\n EFFECT_ADD_LINK_ATTRIBUTE: 356,\n EFFECT_ADD_LINK_CODE: 354,\n EFFECT_ADD_LINK_RACE: 357,\n EFFECT_ADD_LINK_SETCODE: 355,\n EFFECT_ADD_RACE: 120,\n EFFECT_ADD_SETCODE: 334,\n EFFECT_ADD_TYPE: 115,\n EFFECT_ALSO_BATTLE_DAMAGE: 207,\n EFFECT_ATTACK_ALL: 193,\n EFFECT_ATTACK_COST: 96,\n EFFECT_ATTACK_DISABLED: 197,\n EFFECT_AVOID_BATTLE_DAMAGE: 201,\n EFFECT_BATTLE_DAMAGE_TO_EFFECT: 205,\n EFFECT_BATTLE_DESTROY_REDIRECT: 204,\n EFFECT_BOTH_BATTLE_DAMAGE: 206,\n EFFECT_BP_TWICE: 296,\n EFFECT_CANNOT_ACTIVATE: 6,\n EFFECT_CANNOT_ATTACK: 85,\n EFFECT_CANNOT_ATTACK_ANNOUNCE: 86,\n EFFECT_CANNOT_BE_BATTLE_TARGET: 70,\n EFFECT_CANNOT_BE_EFFECT_TARGET: 71,\n EFFECT_CANNOT_BP: 185,\n EFFECT_CANNOT_CHANGE_CONTROL: 5,\n EFFECT_CANNOT_CHANGE_POSITION: 14,\n EFFECT_CANNOT_CHANGE_POS_E: 87,\n EFFECT_CANNOT_DIRECT_ATTACK: 73,\n EFFECT_CANNOT_DISABLE: 3,\n EFFECT_CANNOT_DISABLE_FLIP_SUMMON: 39,\n EFFECT_CANNOT_DISABLE_SPSUMMON: 27,\n EFFECT_CANNOT_DISABLE_SUMMON: 26,\n EFFECT_CANNOT_DISCARD_DECK: 56,\n EFFECT_CANNOT_DISCARD_HAND: 55,\n EFFECT_CANNOT_DISEFFECT: 13,\n EFFECT_CANNOT_DRAW: 25,\n EFFECT_CANNOT_EP: 187,\n EFFECT_CANNOT_FLIP_SUMMON: 21,\n EFFECT_CANNOT_INACTIVATE: 12,\n EFFECT_CANNOT_M2: 186,\n EFFECT_CANNOT_MSET: 23,\n EFFECT_CANNOT_PLACE_COUNTER: 58,\n EFFECT_CANNOT_RELEASE: 46,\n EFFECT_CANNOT_REMOVE: 67,\n EFFECT_CANNOT_SELECT_BATTLE_TARGET: 332,\n EFFECT_CANNOT_SELECT_EFFECT_TARGET: 333,\n EFFECT_CANNOT_SPECIAL_SUMMON: 22,\n EFFECT_CANNOT_SSET: 24,\n EFFECT_CANNOT_SUMMON: 20,\n EFFECT_CANNOT_TO_DECK: 66,\n EFFECT_CANNOT_TO_GRAVE: 68,\n EFFECT_CANNOT_TO_GRAVE_AS_COST: 59,\n EFFECT_CANNOT_TO_HAND: 65,\n EFFECT_CANNOT_TRIGGER: 7,\n EFFECT_CANNOT_TURN_SET: 69,\n EFFECT_CANNOT_USE_AS_COST: 57,\n EFFECT_CHAIN_MATERIAL: 231,\n EFFECT_CHANGE_ATTRIBUTE: 127,\n EFFECT_CHANGE_BATTLE_DAMAGE: 208,\n EFFECT_CHANGE_CODE: 114,\n EFFECT_CHANGE_DAMAGE: 82,\n EFFECT_CHANGE_ENVIRONMENT: 290,\n EFFECT_CHANGE_FUSION_ATTRIBUTE: 351,\n EFFECT_CHANGE_GRAVE_ATTRIBUTE: 365,\n EFFECT_CHANGE_GRAVE_RACE: 366,\n EFFECT_CHANGE_INVOLVING_BATTLE_DAMAGE: 314,\n EFFECT_CHANGE_LEVEL: 131,\n EFFECT_CHANGE_LSCALE: 135,\n EFFECT_CHANGE_RACE: 122,\n EFFECT_CHANGE_RANK: 133,\n EFFECT_CHANGE_RANK_FINAL: 315,\n EFFECT_CHANGE_RSCALE: 137,\n EFFECT_CHANGE_TYPE: 117,\n EFFECT_COUNT_CODE_CHAIN: 1073741824,\n EFFECT_COUNT_CODE_DUEL: 536870912,\n EFFECT_COUNT_CODE_OATH: 268435456,\n EFFECT_COUNT_CODE_SINGLE: 1,\n EFFECT_DECREASE_TRIBUTE: 151,\n EFFECT_DECREASE_TRIBUTE_SET: 152,\n EFFECT_DEFENSE_ATTACK: 190,\n EFFECT_DESTROY_REPLACE: 50,\n EFFECT_DESTROY_SUBSTITUTE: 45,\n EFFECT_DIRECT_ATTACK: 74,\n EFFECT_DISABLE: 2,\n EFFECT_DISABLE_CHAIN: 9,\n EFFECT_DISABLE_CHAIN_FIELD: 337,\n EFFECT_DISABLE_EFFECT: 8,\n EFFECT_DISABLE_FIELD: 260,\n EFFECT_DISABLE_TRAPMONSTER: 10,\n EFFECT_DISCARD_COST_CHANGE: 338,\n EFFECT_DIVINE_LIGHT: 38,\n EFFECT_DOUBLE_TRIBUTE: 150,\n EFFECT_DOUBLE_XMATERIAL: 375,\n EFFECT_DRAW_COUNT: 271,\n EFFECT_DUAL_STATUS: 75,\n EFFECT_DUAL_SUMMONABLE: 77,\n EFFECT_EQUIP_LIMIT: 76,\n EFFECT_EXTRA_ATTACK: 194,\n EFFECT_EXTRA_ATTACK_MONSTER: 346,\n EFFECT_EXTRA_FUSION_MATERIAL: 352,\n EFFECT_EXTRA_LINK_MATERIAL: 358,\n EFFECT_EXTRA_PENDULUM_SUMMON: 360,\n EFFECT_EXTRA_RELEASE: 153,\n EFFECT_EXTRA_RELEASE_NONSUM: 158,\n EFFECT_EXTRA_RELEASE_SUM: 155,\n EFFECT_EXTRA_SET_COUNT: 35,\n EFFECT_EXTRA_SUMMON_COUNT: 29,\n EFFECT_EXTRA_SYNCHRO_MATERIAL: 232,\n EFFECT_FIRST_ATTACK: 192,\n EFFECT_FLAG2_COF: 2,\n EFFECT_FLAG2_OPTION: 8,\n EFFECT_FLAG2_REPEAT_UPDATE: 1,\n EFFECT_FLAG2_WICKED: 4,\n EFFECT_FLAG_ABSOLUTE_TARGET: 64,\n EFFECT_FLAG_ACTIVATE_CONDITION: 536870912,\n EFFECT_FLAG_BOTH_SIDE: 4096,\n EFFECT_FLAG_CANNOT_DISABLE: 1024,\n EFFECT_FLAG_CANNOT_INACTIVATE: 33554432,\n EFFECT_FLAG_CAN_FORBIDDEN: 512,\n EFFECT_FLAG_CARD_TARGET: 16,\n EFFECT_FLAG_CLIENT_HINT: 67108864,\n EFFECT_FLAG_COIN: 4294967296,\n EFFECT_FLAG_CONTINUOUS_TARGET: 134217728,\n EFFECT_FLAG_COPY: 8192,\n EFFECT_FLAG_COUNT_LIMIT: 4,\n EFFECT_FLAG_CVAL_CHECK: 1073741824,\n EFFECT_FLAG_DAMAGE_CAL: 32768,\n EFFECT_FLAG_DAMAGE_STEP: 16384,\n EFFECT_FLAG_DELAY: 65536,\n EFFECT_FLAG_DICE: 8589934592,\n EFFECT_FLAG_EFFECT: 536870912,\n EFFECT_FLAG_EVENT_PLAYER: 8388608,\n EFFECT_FLAG_FIELD_ONLY: 8,\n EFFECT_FLAG_FUNC_VALUE: 2,\n EFFECT_FLAG_FUSION_SUMMON: 17179869184,\n EFFECT_FLAG_IGNORE_IMMUNE: 128,\n EFFECT_FLAG_IGNORE_RANGE: 32,\n EFFECT_FLAG_IMMEDIATELY_APPLY: 2147483648,\n EFFECT_FLAG_INITIAL: 1,\n EFFECT_FLAG_LIMIT_ZONE: 268435456,\n EFFECT_FLAG_NO_TURN_RESET: 4194304,\n EFFECT_FLAG_OATH: 524288,\n EFFECT_FLAG_OWNER_RELATE: 16777216,\n EFFECT_FLAG_PLAYER_TARGET: 2048,\n EFFECT_FLAG_REPEAT: 2097152,\n EFFECT_FLAG_SET_AVAILABLE: 256,\n EFFECT_FLAG_SINGLE_RANGE: 131072,\n EFFECT_FLAG_SPSUM_PARAM: 1048576,\n EFFECT_FLAG_UNCOPYABLE: 262144,\n EFFECT_FLIPSUMMON_COST: 93,\n EFFECT_FORBIDDEN: 292,\n EFFECT_FUSION_MATERIAL: 230,\n EFFECT_FUSION_SUBSTITUTE: 234,\n EFFECT_HAND_LIMIT: 270,\n EFFECT_HAND_SYNCHRO: 339,\n EFFECT_IGNORE_BATTLE_TARGET: 72,\n EFFECT_IMMUNE_EFFECT: 1,\n EFFECT_INDESTRUCTABLE: 40,\n EFFECT_INDESTRUCTABLE_BATTLE: 42,\n EFFECT_INDESTRUCTABLE_COUNT: 47,\n EFFECT_INDESTRUCTABLE_EFFECT: 41,\n EFFECT_KAISER_COLOSSEUM: 370,\n EFFECT_LEAVE_FIELD_REDIRECT: 60,\n EFFECT_LEFT_SPSUMMON_COUNT: 331,\n EFFECT_LIMIT_SET_PROC: 37,\n EFFECT_LIMIT_SPECIAL_SUMMON_POSITION: 368,\n EFFECT_LIMIT_SUMMON_PROC: 33,\n EFFECT_LPCOST_CHANGE: 170,\n EFFECT_LPCOST_REPLACE: 171,\n EFFECT_MATCH_KILL: 300,\n EFFECT_MATERIAL_CHECK: 251,\n EFFECT_MATERIAL_LIMIT: 361,\n EFFECT_MAX_MZONE: 263,\n EFFECT_MAX_SZONE: 264,\n EFFECT_MONSTER_SSET: 18,\n EFFECT_MSET_COST: 94,\n EFFECT_MUST_ATTACK: 191,\n EFFECT_MUST_ATTACK_MONSTER: 344,\n EFFECT_MUST_BE_ATTACKED: 195,\n EFFECT_MUST_BE_FMATERIAL: 316,\n EFFECT_MUST_BE_LMATERIAL: 318,\n EFFECT_MUST_BE_SMATERIAL: 312,\n EFFECT_MUST_BE_XMATERIAL: 317,\n EFFECT_MUST_USE_MZONE: 265,\n EFFECT_NECRO_VALLEY: 291,\n EFFECT_NECRO_VALLEY_IM: 293,\n EFFECT_NO_BATTLE_DAMAGE: 200,\n EFFECT_NO_EFFECT_DAMAGE: 335,\n EFFECT_OLDUNION_STATUS: 348,\n EFFECT_ONLY_ATTACK_MONSTER: 343,\n EFFECT_ONLY_BE_ATTACKED: 196,\n EFFECT_OVERLAY_RITUAL_MATERIAL: 364,\n EFFECT_PATRICIAN_OF_DARKNESS: 345,\n EFFECT_PIERCE: 203,\n EFFECT_PRE_MONSTER: 250,\n EFFECT_PUBLIC: 160,\n EFFECT_QP_ACT_IN_NTPHAND: 311,\n EFFECT_QP_ACT_IN_SET_TURN: 359,\n EFFECT_REFLECT_BATTLE_DAMAGE: 202,\n EFFECT_REFLECT_DAMAGE: 83,\n EFFECT_RELEASE_REPLACE: 51,\n EFFECT_REMAIN_FIELD: 17,\n EFFECT_REMOVE_ATTRIBUTE: 126,\n EFFECT_REMOVE_BRAINWASHING: 295,\n EFFECT_REMOVE_FUSION_ATTRIBUTE: 350,\n EFFECT_REMOVE_RACE: 121,\n EFFECT_REMOVE_REDIRECT: 64,\n EFFECT_REMOVE_TYPE: 116,\n EFFECT_REPLACE_DAMAGE: 371,\n EFFECT_REVERSE_DAMAGE: 80,\n EFFECT_REVERSE_DECK: 294,\n EFFECT_REVERSE_RECOVER: 81,\n EFFECT_REVERSE_UPDATE: 108,\n EFFECT_REVIVE_LIMIT: 31,\n EFFECT_RISE_TO_FULL_HEIGHT: 342,\n EFFECT_RITUAL_LEVEL_EX: 374,\n EFFECT_SELF_DESTROY: 141,\n EFFECT_SELF_TOGRAVE: 142,\n EFFECT_SEND_REPLACE: 52,\n EFFECT_SET_ATTACK: 101,\n EFFECT_SET_ATTACK_FINAL: 102,\n EFFECT_SET_BASE_ATTACK: 103,\n EFFECT_SET_BASE_ATTACK_FINAL: 111,\n EFFECT_SET_BASE_DEFENSE: 107,\n EFFECT_SET_BASE_DEFENSE_FINAL: 112,\n EFFECT_SET_BATTLE_ATTACK: 362,\n EFFECT_SET_BATTLE_DEFENSE: 363,\n EFFECT_SET_CONTROL: 4,\n EFFECT_SET_DEFENSE: 105,\n EFFECT_SET_DEFENSE_FINAL: 106,\n EFFECT_SET_POSITION: 140,\n EFFECT_SET_PROC: 36,\n EFFECT_SET_SUMMON_COUNT_LIMIT: 28,\n EFFECT_SKIP_BP: 183,\n EFFECT_SKIP_DP: 180,\n EFFECT_SKIP_M1: 182,\n EFFECT_SKIP_M2: 184,\n EFFECT_SKIP_SP: 181,\n EFFECT_SKIP_TURN: 188,\n EFFECT_SPIRIT_DONOT_RETURN: 280,\n EFFECT_SPIRIT_MAYNOT_RETURN: 281,\n EFFECT_SPSUMMON_CONDITION: 30,\n EFFECT_SPSUMMON_COST: 92,\n EFFECT_SPSUMMON_COUNT_LIMIT: 330,\n EFFECT_SPSUMMON_PROC: 34,\n EFFECT_SPSUMMON_PROC_G: 320,\n EFFECT_SSET_COST: 95,\n EFFECT_SUMMON_COST: 91,\n EFFECT_SUMMON_PROC: 32,\n EFFECT_SWAP_AD: 109,\n EFFECT_SWAP_BASE_AD: 110,\n EFFECT_SYNCHRO_CHECK: 310,\n EFFECT_SYNCHRO_LEVEL_EX: 373,\n EFFECT_TOSS_COIN_REPLACE: 220,\n EFFECT_TOSS_DICE_REPLACE: 221,\n EFFECT_TO_DECK_REDIRECT: 62,\n EFFECT_TO_GRAVE_REDIRECT: 63,\n EFFECT_TO_GRAVE_REDIRECT_CB: 313,\n EFFECT_TO_HAND_REDIRECT: 61,\n EFFECT_TRAP_ACT_IN_HAND: 15,\n EFFECT_TRAP_ACT_IN_SET_TURN: 16,\n EFFECT_TRIBUTE_LIMIT: 154,\n EFFECT_TRIPLE_TRIBUTE: 156,\n EFFECT_TUNER: 369,\n EFFECT_TUNER_MATERIAL_LIMIT: 353,\n EFFECT_TYPE_ACTIONS: 8,\n EFFECT_TYPE_ACTIVATE: 16,\n EFFECT_TYPE_CONTINUOUS: 2048,\n EFFECT_TYPE_EQUIP: 4,\n EFFECT_TYPE_FIELD: 2,\n EFFECT_TYPE_FLIP: 32,\n EFFECT_TYPE_GRANT: 8192,\n EFFECT_TYPE_IGNITION: 64,\n EFFECT_TYPE_QUICK_F: 1024,\n EFFECT_TYPE_QUICK_O: 256,\n EFFECT_TYPE_SINGLE: 1,\n EFFECT_TYPE_TARGET: 16384,\n EFFECT_TYPE_TRIGGER_F: 512,\n EFFECT_TYPE_TRIGGER_O: 128,\n EFFECT_TYPE_XMATERIAL: 4096,\n EFFECT_UNION_LIMIT: 78,\n EFFECT_UNION_STATUS: 347,\n EFFECT_UNIQUE_CHECK: 297,\n EFFECT_UNRELEASABLE_EFFECT: 48,\n EFFECT_UNRELEASABLE_NONSUM: 44,\n EFFECT_UNRELEASABLE_SUM: 43,\n EFFECT_UNSUMMONABLE_CARD: 336,\n EFFECT_UPDATE_ATTACK: 100,\n EFFECT_UPDATE_DEFENSE: 104,\n EFFECT_UPDATE_LEVEL: 130,\n EFFECT_UPDATE_LSCALE: 134,\n EFFECT_UPDATE_RANK: 132,\n EFFECT_UPDATE_RSCALE: 136,\n EFFECT_USE_EXTRA_MZONE: 261,\n EFFECT_USE_EXTRA_SZONE: 262,\n EFFECT_XYZ_MATERIAL: 233,\n EFFECT_XYZ_MIN_COUNT: 372,\n EVENT_ADD_COUNTER: 65536,\n EVENT_ADJUST: 1040,\n EVENT_ATTACK_ANNOUNCE: 1130,\n EVENT_ATTACK_DISABLED: 1142,\n EVENT_BATTLED: 1138,\n EVENT_BATTLE_CONFIRM: 1133,\n EVENT_BATTLE_DAMAGE: 1143,\n EVENT_BATTLE_DESTROYED: 1140,\n EVENT_BATTLE_DESTROYING: 1139,\n EVENT_BATTLE_END: 1137,\n EVENT_BATTLE_START: 1132,\n EVENT_BECOME_TARGET: 1028,\n EVENT_BE_BATTLE_TARGET: 1131,\n EVENT_BE_MATERIAL: 1108,\n EVENT_BE_PRE_MATERIAL: 1109,\n EVENT_BREAK_EFFECT: 1050,\n EVENT_CHAINING: 1027,\n EVENT_CHAIN_ACTIVATED: 1023,\n EVENT_CHAIN_ACTIVATING: 1021,\n EVENT_CHAIN_DISABLED: 1025,\n EVENT_CHAIN_END: 1026,\n EVENT_CHAIN_NEGATED: 1024,\n EVENT_CHAIN_SOLVED: 1022,\n EVENT_CHAIN_SOLVING: 1020,\n EVENT_CHANGE_POS: 1016,\n EVENT_CONTROL_CHANGED: 1120,\n EVENT_CUSTOM: 268435456,\n EVENT_DAMAGE: 1111,\n EVENT_DAMAGE_CALCULATING: 1135,\n EVENT_DAMAGE_STEP_END: 1141,\n EVENT_DESTROY: 1010,\n EVENT_DESTROYED: 1029,\n EVENT_DETACH_MATERIAL: 1202,\n EVENT_DISCARD: 1018,\n EVENT_DRAW: 1110,\n EVENT_EQUIP: 1121,\n EVENT_FLIP: 1001,\n EVENT_FLIP_SUMMON: 1104,\n EVENT_FLIP_SUMMON_NEGATED: 1115,\n EVENT_FLIP_SUMMON_SUCCESS: 1101,\n EVENT_FREE_CHAIN: 1002,\n EVENT_LEAVE_DECK: 1032,\n EVENT_LEAVE_FIELD: 1015,\n EVENT_LEAVE_FIELD_P: 1019,\n EVENT_LEAVE_GRAVE: 1031,\n EVENT_LEVEL_UP: 1200,\n EVENT_MOVE: 1030,\n EVENT_MSET: 1106,\n EVENT_PAY_LPCOST: 1201,\n EVENT_PHASE: 4096,\n EVENT_PHASE_START: 8192,\n EVENT_PREDRAW: 1113,\n EVENT_PRE_BATTLE_DAMAGE: 1136,\n EVENT_PRE_DAMAGE_CALCULATE: 1134,\n EVENT_RECOVER: 1112,\n EVENT_RELEASE: 1017,\n EVENT_REMOVE: 1011,\n EVENT_REMOVE_COUNTER: 131072,\n EVENT_RETURN_TO_GRAVE: 1203,\n EVENT_SPSUMMON: 1105,\n EVENT_SPSUMMON_NEGATED: 1116,\n EVENT_SPSUMMON_SUCCESS: 1102,\n EVENT_SPSUMMON_SUCCESS_G_P: 1117,\n EVENT_SSET: 1107,\n EVENT_STARTUP: 1000,\n EVENT_SUMMON: 1103,\n EVENT_SUMMON_NEGATED: 1114,\n EVENT_SUMMON_SUCCESS: 1100,\n EVENT_TOSS_COIN: 1151,\n EVENT_TOSS_COIN_NEGATE: 1152,\n EVENT_TOSS_DICE: 1150,\n EVENT_TOSS_DICE_NEGATE: 1153,\n EVENT_TO_DECK: 1013,\n EVENT_TO_GRAVE: 1014,\n EVENT_TO_HAND: 1012,\n EVENT_TURN_END: 1210,\n FLAG_ID_ALLURE_QUEEN: 4,\n FLAG_ID_ARCANA_COIN: 5,\n FLAG_ID_CHAINING: 1,\n FLAG_ID_NO_NORMAL_DRAW: 3,\n FLAG_ID_REVERSAL_OF_FATE: 36690018,\n FLAG_ID_UNION: 2,\n GLOBALFLAG_BRAINWASHING_CHECK: 2,\n GLOBALFLAG_DECK_REVERSE_CHECK: 1,\n GLOBALFLAG_DELAYED_QUICKEFFECT: 8,\n GLOBALFLAG_DETACH_EVENT: 16,\n GLOBALFLAG_MUST_BE_SMATERIAL: 32,\n GLOBALFLAG_SCRAP_CHIMERA: 4,\n GLOBALFLAG_SELF_TOGRAVE: 256,\n GLOBALFLAG_SPSUMMON_COUNT: 64,\n GLOBALFLAG_SPSUMMON_ONCE: 512,\n GLOBALFLAG_TUNE_MAGICIAN: 1024,\n GLOBALFLAG_XMAT_COUNT_LIMIT: 128,\n HINGMSG_LVRANK: 567,\n HINGMSG_NUMBER: 565,\n HINTMSG_ATOHAND: 506,\n HINTMSG_ATTACK: 516,\n HINTMSG_ATTACKTARGET: 549,\n HINTMSG_ATTRIBUTE: 562,\n HINTMSG_CARDTYPE: 554,\n HINTMSG_CODE: 564,\n HINTMSG_COIN: 552,\n HINTMSG_CONFIRM: 526,\n HINTMSG_CONTROL: 520,\n HINTMSG_COUNTER: 572,\n HINTMSG_DEATTACHFROM: 532,\n HINTMSG_DEFENSE: 517,\n HINTMSG_DESREPLACE: 521,\n HINTMSG_DESTROY: 502,\n HINTMSG_DICE: 553,\n HINTMSG_DISABLE: 573,\n HINTMSG_DISABLEZONE: 570,\n HINTMSG_DISCARD: 501,\n HINTMSG_EFFECT: 550,\n HINTMSG_EQUIP: 518,\n HINTMSG_FACEDOWN: 515,\n HINTMSG_FACEDOWNATTACK: 524,\n HINTMSG_FACEDOWNDEFENSE: 525,\n HINTMSG_FACEUP: 514,\n HINTMSG_FACEUPATTACK: 522,\n HINTMSG_FACEUPDEFENSE: 523,\n HINTMSG_FIELD_FIRST: 575,\n HINTMSG_FMATERIAL: 511,\n HINTMSG_LMATERIAL: 533,\n HINTMSG_OPERATECARD: 574,\n HINTMSG_OPPO: 530,\n HINTMSG_OPTION: 555,\n HINTMSG_POSCHANGE: 528,\n HINTMSG_POSITION: 561,\n HINTMSG_RACE: 563,\n HINTMSG_RELEASE: 500,\n HINTMSG_REMOVE: 503,\n HINTMSG_REMOVEXYZ: 519,\n HINTMSG_RESOLVECARD: 568,\n HINTMSG_RESOLVEEFFECT: 556,\n HINTMSG_RTOHAND: 505,\n HINTMSG_SELECT: 560,\n HINTMSG_SELF: 529,\n HINTMSG_SET: 510,\n HINTMSG_SMATERIAL: 512,\n HINTMSG_SPSUMMON: 509,\n HINTMSG_SUMMON: 508,\n HINTMSG_TARGET: 551,\n HINTMSG_TODECK: 507,\n HINTMSG_TOFIELD: 527,\n HINTMSG_TOGRAVE: 504,\n HINTMSG_TOZONE: 571,\n HINTMSG_TRIBUTE: 531,\n HINTMSG_XMATERIAL: 513,\n HINTMSG_ZONE: 569,\n HINT_ATTRIB: 7,\n HINT_CARD: 10,\n HINT_CODE: 8,\n HINT_EFFECT: 5,\n HINT_EVENT: 1,\n HINT_MESSAGE: 2,\n HINT_NUMBER: 9,\n HINT_OPSELECTED: 4,\n HINT_RACE: 6,\n HINT_SELECTMSG: 3,\n HINT_ZONE: 11,\n LINK_MARKER_BOTTOM: 2,\n LINK_MARKER_BOTTOM_LEFT: 1,\n LINK_MARKER_BOTTOM_RIGHT: 4,\n LINK_MARKER_LEFT: 8,\n LINK_MARKER_RIGHT: 32,\n LINK_MARKER_TOP: 128,\n LINK_MARKER_TOP_LEFT: 64,\n LINK_MARKER_TOP_RIGHT: 256,\n LOCATION_DECK: 1,\n LOCATION_DECKBOT: 65537,\n LOCATION_DECKSHF: 131073,\n LOCATION_EXTRA: 64,\n LOCATION_FZONE: 256,\n LOCATION_GRAVE: 16,\n LOCATION_HAND: 2,\n LOCATION_MZONE: 4,\n LOCATION_ONFIELD: 12,\n LOCATION_OVERLAY: 128,\n LOCATION_PZONE: 512,\n LOCATION_REASON_CONTROL: 2,\n LOCATION_REASON_TOFIELD: 1,\n LOCATION_REMOVED: 32,\n LOCATION_SZONE: 8,\n MASTER_RULE3: 3,\n MASTER_RULE_2020: 5,\n MAX_COUNTER: 65535,\n MAX_ID: 268435455,\n MAX_PARAMETER: 65535,\n MAX_XYZ_LEVEL: 4095,\n MIN_ID: 128,\n NEW_MASTER_RULE: 4,\n OPCODE_ADD: 1073741824,\n OPCODE_AND: 1073741828,\n OPCODE_DIV: 1073741827,\n OPCODE_ISATTRIBUTE: 1073742084,\n OPCODE_ISCODE: 1073742080,\n OPCODE_ISRACE: 1073742083,\n OPCODE_ISSETCARD: 1073742081,\n OPCODE_ISTYPE: 1073742082,\n OPCODE_MUL: 1073741826,\n OPCODE_NEG: 1073741830,\n OPCODE_NOT: 1073741831,\n OPCODE_OR: 1073741829,\n OPCODE_SUB: 1073741825,\n PHASE_BATTLE: 128,\n PHASE_BATTLE_START: 8,\n PHASE_BATTLE_STEP: 16,\n PHASE_DAMAGE: 32,\n PHASE_DAMAGE_CAL: 64,\n PHASE_DRAW: 1,\n PHASE_END: 512,\n PHASE_MAIN1: 4,\n PHASE_MAIN2: 256,\n PHASE_STANDBY: 2,\n PLAYER_ALL: 3,\n PLAYER_NONE: 2,\n POS_ATTACK: 3,\n POS_DEFENSE: 12,\n POS_FACEDOWN: 10,\n POS_FACEDOWN_ATTACK: 2,\n POS_FACEDOWN_DEFENSE: 8,\n POS_FACEUP: 5,\n POS_FACEUP_ATTACK: 1,\n POS_FACEUP_DEFENSE: 4,\n RACE_ALL: 67108863,\n RACE_AQUA: 64,\n RACE_BEAST: 16384,\n RACE_BEASTWARRIOR: 32768,\n RACE_CREATORGOD: 4194304,\n RACE_CYBERSE: 16777216,\n RACE_DINOSAUR: 65536,\n RACE_DIVINE: 2097152,\n RACE_DRAGON: 8192,\n RACE_FAIRY: 4,\n RACE_FIEND: 8,\n RACE_FISH: 131072,\n RACE_ILLUSION: 33554432,\n RACE_INSECT: 2048,\n RACE_MACHINE: 32,\n RACE_PLANT: 1024,\n RACE_PSYCHO: 1048576,\n RACE_PYRO: 128,\n RACE_REPTILE: 524288,\n RACE_ROCK: 256,\n RACE_SEASERPENT: 262144,\n RACE_SPELLCASTER: 2,\n RACE_THUNDER: 4096,\n RACE_WARRIOR: 1,\n RACE_WINDBEAST: 512,\n RACE_WYRM: 8388608,\n RACE_ZOMBIE: 16,\n REASON_ACTION: 2147483648,\n REASON_ADJUST: 256,\n REASON_BATTLE: 32,\n REASON_COST: 128,\n REASON_DESTROY: 1,\n REASON_DISCARD: 16384,\n REASON_DISSUMMON: 4096,\n REASON_DRAW: 33554432,\n REASON_EFFECT: 64,\n REASON_FLIP: 8192,\n REASON_FUSION: 262144,\n REASON_LINK: 268435456,\n REASON_LOST_OVERLAY: 536870912,\n REASON_LOST_TARGET: 512,\n REASON_MAINTENANCE: 1073741824,\n REASON_MATERIAL: 8,\n REASON_RDAMAGE: 32768,\n REASON_REDIRECT: 67108864,\n REASON_RELEASE: 2,\n REASON_REPLACE: 16777216,\n REASON_RETURN: 131072,\n REASON_REVEAL: 134217728,\n REASON_RITUAL: 1048576,\n REASON_RRECOVER: 65536,\n REASON_RULE: 1024,\n REASON_SPSUMMON: 2048,\n REASON_SUMMON: 16,\n REASON_SYNCHRO: 524288,\n REASON_TEMPORARY: 4,\n REASON_XYZ: 2097152,\n RESETS_REDIRECT: 209584128,\n RESETS_STANDARD: 33423360,\n RESETS_WITHOUT_TEMP_REMOVE: 91095040,\n RESET_CARD: 8192,\n RESET_CHAIN: 2147483648,\n RESET_CODE: 16384,\n RESET_CONTROL: 33554432,\n RESET_COPY: 32768,\n RESET_DISABLE: 65536,\n RESET_EVENT: 4096,\n RESET_LEAVE: 8388608,\n RESET_MSCHANGE: 134217728,\n RESET_OPPO_TURN: 536870912,\n RESET_OVERLAY: 67108864,\n RESET_PHASE: 1073741824,\n RESET_REMOVE: 524288,\n RESET_SELF_TURN: 268435456,\n RESET_TEMP_REMOVE: 1048576,\n RESET_TODECK: 4194304,\n RESET_TOFIELD: 16777216,\n RESET_TOGRAVE: 262144,\n RESET_TOHAND: 2097152,\n RESET_TURN_SET: 131072,\n SELECT_HEADS: 60,\n SELECT_TAILS: 61,\n SEQ_DECKBOTTOM: 1,\n SEQ_DECKSHUFFLE: 2,\n SEQ_DECKTOP: 0,\n STATUS_ACTIVATE_DISABLED: 262144,\n STATUS_ACT_FROM_HAND: 134217728,\n STATUS_ATTACK_CANCELED: 2097152,\n STATUS_BATTLE_DESTROYED: 16384,\n STATUS_BATTLE_RESULT: 64,\n STATUS_CANNOT_CHANGE_FORM: 256,\n STATUS_CHAINING: 65536,\n STATUS_CONTINUOUS_POS: 33554432,\n STATUS_COPYING_EFFECT: 32768,\n STATUS_DESTROY_CONFIRMED: 4096,\n STATUS_DISABLED: 1,\n STATUS_EFFECT_ENABLED: 1024,\n STATUS_EFFECT_REPLACED: 524288,\n STATUS_FLIP_SUMMONING: 1048576,\n STATUS_FLIP_SUMMON_DISABLED: 2147483648,\n STATUS_FLIP_SUMMON_TURN: 536870912,\n STATUS_FORBIDDEN: 67108864,\n STATUS_INITIALIZING: 4194304,\n STATUS_JUST_POS: 16777216,\n STATUS_LEAVE_CONFIRMED: 8192,\n STATUS_NO_LEVEL: 32,\n STATUS_OPPO_BATTLE: 268435456,\n STATUS_PROC_COMPLETE: 8,\n STATUS_SET_TURN: 16,\n STATUS_SPSUMMON_STEP: 128,\n STATUS_SPSUMMON_TURN: 1073741824,\n STATUS_SUMMONING: 512,\n STATUS_SUMMON_DISABLED: 131072,\n STATUS_SUMMON_TURN: 2048,\n STATUS_TO_DISABLE: 4,\n STATUS_TO_ENABLE: 2,\n STATUS_TO_HAND_WITHOUT_CONFIRM: 8388608,\n SUMMON_INFO_ATTACK: 128,\n SUMMON_INFO_ATTRIBUTE: 32,\n SUMMON_INFO_CODE: 1,\n SUMMON_INFO_CODE2: 2,\n SUMMON_INFO_DEFENSE: 256,\n SUMMON_INFO_LEVEL: 8,\n SUMMON_INFO_RACE: 64,\n SUMMON_INFO_RANK: 16,\n SUMMON_INFO_REASON_EFFECT: 512,\n SUMMON_INFO_REASON_PLAYER: 1024,\n SUMMON_INFO_TYPE: 4,\n SUMMON_TYPE_ADVANCE: 285212672,\n SUMMON_TYPE_DUAL: 301989888,\n SUMMON_TYPE_FLIP: 536870912,\n SUMMON_TYPE_FUSION: 1124073472,\n SUMMON_TYPE_LINK: 1275068416,\n SUMMON_TYPE_NORMAL: 268435456,\n SUMMON_TYPE_PENDULUM: 1241513984,\n SUMMON_TYPE_RITUAL: 1157627904,\n SUMMON_TYPE_SPECIAL: 1073741824,\n SUMMON_TYPE_SYNCHRO: 1174405120,\n SUMMON_TYPE_XYZ: 1224736768,\n SUMMON_VALUE_ASSAULT_MODE: 21,\n SUMMON_VALUE_DARK_FUSION: 1124073494,\n SUMMON_VALUE_DARK_SANCTUARY: 18,\n SUMMON_VALUE_EVOLTILE: 16384,\n SUMMON_VALUE_FOSSIL_FUSION: 1124073495,\n SUMMON_VALUE_FUTURE_FUSION: 1124073496,\n SUMMON_VALUE_GLADIATOR: 8192,\n SUMMON_VALUE_LV: 4096,\n SUMMON_VALUE_MASK_CHANGE: 20,\n SUMMON_VALUE_MONSTER_REBORN: 19,\n SUMMON_VALUE_SELF: 1,\n SUMMON_VALUE_SYNCHRO_MATERIAL: 17,\n TIMINGS_CHECK_MONSTER: 448,\n TIMING_ATTACK: 4096,\n TIMING_BATTLED: 134217728,\n TIMING_BATTLE_END: 16,\n TIMING_BATTLE_PHASE: 16777216,\n TIMING_BATTLE_START: 8,\n TIMING_BATTLE_STEP_END: 67108864,\n TIMING_CHAIN_END: 32768,\n TIMING_DAMAGE: 131072,\n TIMING_DAMAGE_CAL: 16384,\n TIMING_DAMAGE_STEP: 8192,\n TIMING_DESTROY: 524288,\n TIMING_DRAW: 65536,\n TIMING_DRAW_PHASE: 1,\n TIMING_END_PHASE: 32,\n TIMING_EQUIP: 33554432,\n TIMING_FLIPSUMMON: 256,\n TIMING_MAIN_END: 4,\n TIMING_MSET: 512,\n TIMING_POS_CHANGE: 2048,\n TIMING_RECOVER: 262144,\n TIMING_REMOVE: 1048576,\n TIMING_SPSUMMON: 128,\n TIMING_SSET: 1024,\n TIMING_STANDBY_PHASE: 2,\n TIMING_SUMMON: 64,\n TIMING_TODECK: 4194304,\n TIMING_TOGRAVE: 8388608,\n TIMING_TOHAND: 2097152,\n TYPES_EFFECT_TRAP_MONSTER: 289,\n TYPES_NORMAL_TRAP_MONSTER: 273,\n TYPES_TOKEN_MONSTER: 16401,\n TYPE_CONTINUOUS: 131072,\n TYPE_COUNTER: 1048576,\n TYPE_DUAL: 2048,\n TYPE_EFFECT: 32,\n TYPE_EQUIP: 262144,\n TYPE_FIELD: 524288,\n TYPE_FLIP: 2097152,\n TYPE_FUSION: 64,\n TYPE_LINK: 67108864,\n TYPE_MONSTER: 1,\n TYPE_NORMAL: 16,\n TYPE_PENDULUM: 16777216,\n TYPE_QUICKPLAY: 65536,\n TYPE_RITUAL: 128,\n TYPE_SPELL: 2,\n TYPE_SPIRIT: 512,\n TYPE_SPSUMMON: 33554432,\n TYPE_SYNCHRO: 8192,\n TYPE_TOKEN: 16384,\n TYPE_TOON: 4194304,\n TYPE_TRAP: 4,\n TYPE_TRAPMONSTER: 256,\n TYPE_TUNER: 4096,\n TYPE_UNION: 1024,\n TYPE_XYZ: 8388608,\n} as const;\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainEnd extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_END;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainNegated extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_NEGATED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainSolved extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_SOLVED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainSolving extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_SOLVING;\n\n @BinaryField('u8', 0)\n chainCount: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChained extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAINED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChaining extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAINING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n subsequence: number;\n\n @BinaryField('u8', 8)\n chainCount: number;\n\n @BinaryField('i32', 9)\n desc: number;\n\n @BinaryField('u8', 13)\n chainPlayer: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { SEND_TO_ALL, YGOProMsgBase } from '../base';\n\nexport class YGOProMsgConfirmCards_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgConfirmCards extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CONFIRM_CARDS;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n skipPanel: number;\n\n @BinaryField('u8', 2)\n count: number;\n\n @BinaryField(() => YGOProMsgConfirmCards_CardInfo, 3, (obj) => obj.count)\n cards: YGOProMsgConfirmCards_CardInfo[];\n\n getSendTargets(): number[] {\n // \u5982\u679C\u5361\u7247\u5728 DECK \u4F4D\u7F6E\uFF0C\u53EA\u53D1\u7ED9 player\n if (this.cards.length > 0 && this.cards[0].location === 0x01) {\n // LOCATION_DECK\n return [this.player];\n }\n // \u5426\u5219\u53D1\u7ED9\u6240\u6709\u4EBA\n return SEND_TO_ALL;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgConfirmDeckTop_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgConfirmDeckTop extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CONFIRM_DECKTOP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgConfirmDeckTop_CardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgConfirmDeckTop_CardInfo[];\n\n // MSG_CONFIRM_DECKTOP \u5728 single_duel.cpp \u4E2D\u4E0D\u505A\u906E\u63A9\uFF0C\u76F4\u63A5\u53D1\u7ED9\u6240\u6709\u4EBA\n // ocgcore \u901A\u8FC7 0x80000000 \u6807\u8BB0\u63A7\u5236\u516C\u5F00\u72B6\u6001\n // \u56E0\u6B64\u4F7F\u7528\u57FA\u7C7B\u7684\u9ED8\u8BA4\u5B9E\u73B0\uFF08\u4E0D\u906E\u63A9\uFF09\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgConfirmExtraTop_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgConfirmExtraTop extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CONFIRM_EXTRATOP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgConfirmExtraTop_CardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgConfirmExtraTop_CardInfo[];\n\n // MSG_CONFIRM_EXTRATOP \u5728 single_duel.cpp \u4E2D\u4E0D\u505A\u906E\u63A9\uFF0C\u76F4\u63A5\u53D1\u7ED9\u6240\u6709\u4EBA\n // ocgcore \u901A\u8FC7 0x80000000 \u6807\u8BB0\u63A7\u5236\u516C\u5F00\u72B6\u6001\n // \u56E0\u6B64\u4F7F\u7528\u57FA\u7C7B\u7684\u9ED8\u8BA4\u5B9E\u73B0\uFF08\u4E0D\u906E\u63A9\uFF09\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDamage extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DAMAGE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n value: number;\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDamageStepEnd extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DAMAGE_STEP_END;\n\n getRequireRefreshZones() {\n return [\n { player: 0, location: OcgcoreScriptConstants.LOCATION_MZONE },\n { player: 1, location: OcgcoreScriptConstants.LOCATION_MZONE },\n ];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDamageStepStart extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DAMAGE_STEP_START;\n\n getRequireRefreshZones() {\n return [\n { player: 0, location: OcgcoreScriptConstants.LOCATION_MZONE },\n { player: 1, location: OcgcoreScriptConstants.LOCATION_MZONE },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDeckTop extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DECK_TOP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n sequence: number;\n\n @BinaryField('i32', 2)\n code: number;\n\n // MSG_DECK_TOP \u5728 single_duel.cpp \u4E2D\u4E0D\u505A\u906E\u63A9\uFF0C\u76F4\u63A5\u53D1\u7ED9\u6240\u6709\u4EBA\n // ocgcore \u901A\u8FC7 0x80000000 \u6807\u8BB0\u63A7\u5236\u516C\u5F00\u72B6\u6001\n // \u56E0\u6B64\u4F7F\u7528\u57FA\u7C7B\u7684\u9ED8\u8BA4\u5B9E\u73B0\uFF08\u4E0D\u906E\u63A9\uFF09\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDraw extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DRAW;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n\n // \u5BF9\u65B9\u89C6\u89D2\u9700\u8981\u9690\u85CF\u62BD\u5230\u7684\u5361\uFF08\u5982\u679C\u5361\u7247\u6807\u5FD7\u4F4D 0x80 \u672A\u8BBE\u7F6E\uFF09\n opponentView(): this {\n const view = this.copy();\n view.cards = view.cards.map((card) => {\n // \u5982\u679C\u5361\u7247\u7684\u9AD8\u4F4D\uFF080x80000000\uFF09\u672A\u8BBE\u7F6E\uFF0C\u5BF9\u65B9\u770B\u4E0D\u5230\uFF0C\u8FD4\u56DE 0\n if (!(card & 0x80000000)) {\n return 0;\n }\n return card;\n });\n return view;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u961F\u53CB\u4E0E\u5BF9\u624B\u5BF9\u62BD\u5361\u4FE1\u606F\u4F7F\u7528\u540C\u6837\u7684\u906E\u853D\u89C4\u5219\n return this.opponentView();\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgEquip_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgEquip extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_EQUIP;\n\n @BinaryField(() => YGOProMsgEquip_CardLocation, 0)\n equip: YGOProMsgEquip_CardLocation;\n\n @BinaryField(() => YGOProMsgEquip_CardLocation, 3)\n target: YGOProMsgEquip_CardLocation;\n\n @BinaryField('u8', 6)\n position: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgFieldDisabled extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_FIELD_DISABLED;\n\n @BinaryField('u32', 0)\n disabledField: number;\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgFlipSummoned extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_FLIPSUMMONED;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgFlipSummoning extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_FLIPSUMMONING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n position: number;\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [\n {\n player: this.controller,\n location: this.location,\n sequence: this.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgHandRes extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_HAND_RES;\n\n @BinaryField('u8', 0)\n result: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { SEND_TO_ALL, YGOProMsgBase } from '../base';\n\n// MSG_HINT \u7C7B\u578B\uFF1A\u53EA\u53D1\u7ED9 player\nconst HINT_TYPES_SEND_TO_SELF = new Set([1, 2, 3, 5]);\n\n// MSG_HINT \u7C7B\u578B\uFF1A\u53D1\u7ED9\u5BF9\u624B\u548C\u89C2\u6218\u8005\nconst HINT_TYPES_SEND_TO_OPPONENT = new Set([4, 6, 7, 8, 9, 11]);\n\nexport class YGOProMsgHint extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_HINT;\n\n @BinaryField('u8', 0)\n type: number;\n\n @BinaryField('u8', 1)\n player: number;\n\n @BinaryField('i32', 2)\n desc: number;\n\n getSendTargets(): number[] {\n if (HINT_TYPES_SEND_TO_SELF.has(this.type)) {\n return [this.player];\n }\n if (HINT_TYPES_SEND_TO_OPPONENT.has(this.type)) {\n return [1 - this.player, NetPlayerType.OBSERVER];\n }\n // case 10, 21, 22, 23, 24: send to all\n return SEND_TO_ALL;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgLpUpdate extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_LPUPDATE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n lp: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgMatchKill extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_MATCH_KILL;\n\n @BinaryField('i32', 0)\n code: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgMissedEffect extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_MISSED_EFFECT;\n\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n\n @BinaryField('i32', 4)\n code: number;\n\n getSendTargets(): number[] {\n // single_duel.cpp: player = pbuf[0], then only send to players[player].\n // pbuf[0] is the low byte of get_info_location(), i.e. controller.\n return [this.controller];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgMove_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgMove extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_MOVE;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField(() => YGOProMsgMove_CardLocation, 4)\n previous: YGOProMsgMove_CardLocation;\n\n @BinaryField(() => YGOProMsgMove_CardLocation, 8)\n current: YGOProMsgMove_CardLocation;\n\n @BinaryField('i32', 12)\n reason: number;\n\n opponentView(): this {\n const view = this.copy();\n const cl = view.current.location;\n const cp = view.current.position;\n\n // \u79FB\u52A8\u5230\u5893\u5730\u6216\u53E0\u653E\u4E0D\u9690\u85CF\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_GRAVE |\n OcgcoreScriptConstants.LOCATION_OVERLAY)\n ) {\n return view;\n }\n\n // \u79FB\u52A8\u5230\u5361\u7EC4\u3001\u624B\u724C\u6216\u80CC\u9762\u4F4D\u7F6E\u65F6\u9690\u85CF code\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_DECK |\n OcgcoreScriptConstants.LOCATION_HAND) ||\n cp & OcgcoreCommonConstants.POS_FACEDOWN\n ) {\n view.code = 0;\n }\n\n return view;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u961F\u53CB\u80FD\u770B\u5230\u573A\u4E0A\u7684\u80CC\u9762\u5361\uFF0C\u4F46\u770B\u4E0D\u5230\u624B\u724C\u548C\u5361\u7EC4\n const view = this.copy();\n const cl = view.current.location;\n const cp = view.current.position;\n\n // \u79FB\u52A8\u5230\u5893\u5730\u6216\u53E0\u653E\u4E0D\u9690\u85CF\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_GRAVE |\n OcgcoreScriptConstants.LOCATION_OVERLAY)\n ) {\n return view;\n }\n\n // \u79FB\u52A8\u5230\u5361\u7EC4\u3001\u624B\u724C\u65F6\u9690\u85CF code\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_DECK |\n OcgcoreScriptConstants.LOCATION_HAND)\n ) {\n view.code = 0;\n }\n\n // \u573A\u4E0A\u7684\u80CC\u9762\u5361\u961F\u53CB\u53EF\u4EE5\u770B\u5230\n return view;\n }\n\n playerView(playerId: number): this {\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (playerId === this.current.controller) {\n return this.copy();\n }\n return this.opponentView();\n }\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n const current = this.current;\n const previous = this.previous;\n const shouldRefresh =\n current.location !== 0 &&\n (current.location & OcgcoreScriptConstants.LOCATION_OVERLAY) === 0 &&\n (current.location !== previous.location ||\n current.controller !== previous.controller);\n if (!shouldRefresh) {\n return [];\n }\n return [\n {\n player: current.controller,\n location: current.location,\n sequence: current.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgNewPhase extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_NEW_PHASE;\n\n @BinaryField('u16', 0)\n phase: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgNewTurn extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_NEW_TURN;\n\n @BinaryField('u8', 0)\n player: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgPayLpCost extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_PAY_LPCOST;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n cost: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgPlayerHint extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_PLAYER_HINT;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n type: number;\n\n @BinaryField('i32', 2)\n value: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgPosChange_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgPosChange extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_POS_CHANGE;\n\n @BinaryField(() => YGOProMsgPosChange_CardLocation, 0)\n card: YGOProMsgPosChange_CardLocation;\n\n @BinaryField('u8', 3)\n previousPosition: number;\n\n @BinaryField('u8', 4)\n currentPosition: number;\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n const shouldRefresh =\n (this.previousPosition & OcgcoreCommonConstants.POS_FACEDOWN) !== 0 &&\n (this.currentPosition & OcgcoreCommonConstants.POS_FACEUP) !== 0;\n if (!shouldRefresh) {\n return [];\n }\n return [\n {\n player: this.card.controller,\n location: this.card.location,\n sequence: this.card.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRandomSelected extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RANDOM_SELECTED;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRecover extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RECOVER;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n value: number;\n}\n", "import { YGOProMsgBase } from '../base';\n\n// MSG_RELOAD_FIELD \u7684\u7ED3\u6784\u975E\u5E38\u590D\u6742\uFF0C\u5305\u542B\u5B8C\u6574\u7684\u573A\u5730\u4FE1\u606F\n// \u9700\u8981\u624B\u52A8\u5904\u7406\uFF0C\u56E0\u4E3A\u5B83\u5305\u542B\u53EF\u53D8\u957F\u5EA6\u7684\u6570\u636E\u548C\u590D\u6742\u7684\u5D4C\u5957\u7ED3\u6784\nexport class YGOProMsgReloadField_ZoneCard {\n occupied: number;\n position?: number;\n xyzCount?: number;\n}\n\nexport class YGOProMsgReloadField_PlayerInfo {\n lp: number;\n mzone: YGOProMsgReloadField_ZoneCard[];\n szone: YGOProMsgReloadField_ZoneCard[];\n deckCount: number;\n handCount: number;\n graveCount: number;\n removedCount: number;\n extraCount: number;\n extraPCount: number;\n}\n\nexport class YGOProMsgReloadField_ChainInfo {\n code: number;\n chainCardController: number;\n chainCardLocation: number;\n chainCardSequence: number;\n chainCardSubsequence: number;\n triggerController: number;\n triggerLocation: number;\n triggerSequence: number;\n desc: number;\n}\n\nexport class YGOProMsgReloadField extends YGOProMsgBase {\n static identifier = 162; // MSG_RELOAD_FIELD\n\n duelRule: number;\n players: YGOProMsgReloadField_PlayerInfo[];\n chains: YGOProMsgReloadField_ChainInfo[];\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n let offset = 1;\n\n this.duelRule = view.getUint8(offset++);\n this.players = [];\n\n // \u8BFB\u53D6\u4E24\u4E2A\u73A9\u5BB6\u7684\u6570\u636E\n for (let i = 0; i < 2; i++) {\n const player: YGOProMsgReloadField_PlayerInfo = {\n lp: view.getInt32(offset, true),\n mzone: [],\n szone: [],\n deckCount: 0,\n handCount: 0,\n graveCount: 0,\n removedCount: 0,\n extraCount: 0,\n extraPCount: 0,\n };\n offset += 4;\n\n // \u8BFB\u53D6 mzone[7]\n for (let seq = 0; seq < 7; seq++) {\n const occupied = view.getUint8(offset++);\n const card: YGOProMsgReloadField_ZoneCard = { occupied };\n if (occupied) {\n card.position = view.getUint8(offset++);\n card.xyzCount = view.getUint8(offset++);\n }\n player.mzone.push(card);\n }\n\n // \u8BFB\u53D6 szone[8]\n for (let seq = 0; seq < 8; seq++) {\n const occupied = view.getUint8(offset++);\n const card: YGOProMsgReloadField_ZoneCard = { occupied };\n if (occupied) {\n card.position = view.getUint8(offset++);\n }\n player.szone.push(card);\n }\n\n // \u8BFB\u53D6\u5404\u533A\u57DF\u8BA1\u6570\n player.deckCount = view.getUint8(offset++);\n player.handCount = view.getUint8(offset++);\n player.graveCount = view.getUint8(offset++);\n player.removedCount = view.getUint8(offset++);\n player.extraCount = view.getUint8(offset++);\n player.extraPCount = view.getUint8(offset++);\n\n this.players.push(player);\n }\n\n // \u8BFB\u53D6\u8FDE\u9501\u4FE1\u606F\n const chainCount = view.getUint8(offset++);\n this.chains = [];\n for (let i = 0; i < chainCount; i++) {\n const chain: YGOProMsgReloadField_ChainInfo = {\n code: view.getInt32(offset, true),\n chainCardController: view.getUint8(offset + 4),\n chainCardLocation: view.getUint8(offset + 5),\n chainCardSequence: view.getUint8(offset + 6),\n chainCardSubsequence: view.getUint8(offset + 7),\n triggerController: view.getUint8(offset + 8),\n triggerLocation: view.getUint8(offset + 9),\n triggerSequence: view.getUint8(offset + 10),\n desc: view.getInt32(offset + 11, true),\n };\n offset += 15;\n this.chains.push(chain);\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // \u8BA1\u7B97\u603B\u5927\u5C0F\n let size = 1 + 1; // identifier + duelRule\n\n for (const player of this.players) {\n size += 4; // lp\n for (const card of player.mzone) {\n size += 1; // occupied\n if (card.occupied) {\n size += 2; // position + xyzCount\n }\n }\n for (const card of player.szone) {\n size += 1; // occupied\n if (card.occupied) {\n size += 1; // position\n }\n }\n size += 6; // deckCount, handCount, graveCount, removedCount, extraCount, extraPCount\n }\n\n size += 1; // chainCount\n size += this.chains.length * 15; // \u6BCF\u4E2A\u8FDE\u9501 15 \u5B57\u8282\n\n const result = new Uint8Array(size);\n const view = new DataView(result.buffer);\n let offset = 0;\n\n result[offset++] = this.identifier;\n result[offset++] = this.duelRule;\n\n // \u5199\u5165\u73A9\u5BB6\u6570\u636E\n for (const player of this.players) {\n view.setInt32(offset, player.lp, true);\n offset += 4;\n\n // \u5199\u5165 mzone\n for (const card of player.mzone) {\n result[offset++] = card.occupied;\n if (card.occupied) {\n result[offset++] = card.position || 0;\n result[offset++] = card.xyzCount || 0;\n }\n }\n\n // \u5199\u5165 szone\n for (const card of player.szone) {\n result[offset++] = card.occupied;\n if (card.occupied) {\n result[offset++] = card.position || 0;\n }\n }\n\n // \u5199\u5165\u5404\u533A\u57DF\u8BA1\u6570\n result[offset++] = player.deckCount;\n result[offset++] = player.handCount;\n result[offset++] = player.graveCount;\n result[offset++] = player.removedCount;\n result[offset++] = player.extraCount;\n result[offset++] = player.extraPCount;\n }\n\n // \u5199\u5165\u8FDE\u9501\u4FE1\u606F\n result[offset++] = this.chains.length;\n for (const chain of this.chains) {\n view.setInt32(offset, chain.code, true);\n result[offset + 4] = chain.chainCardController;\n result[offset + 5] = chain.chainCardLocation;\n result[offset + 6] = chain.chainCardSequence;\n result[offset + 7] = chain.chainCardSubsequence;\n result[offset + 8] = chain.triggerController;\n result[offset + 9] = chain.triggerLocation;\n result[offset + 10] = chain.triggerSequence;\n view.setInt32(offset + 11, chain.desc, true);\n offset += 15;\n }\n\n return result;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRemoveCounter extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_REMOVE_COUNTER;\n\n @BinaryField('u16', 0)\n counterType: number;\n\n @BinaryField('u8', 2)\n controller: number;\n\n @BinaryField('u8', 3)\n location: number;\n\n @BinaryField('u8', 4)\n sequence: number;\n\n @BinaryField('u16', 5)\n count: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgResetTime extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RESET_TIME;\n\n @BinaryField('i8', 0)\n player: number;\n\n @BinaryField('i16', 1)\n time: number;\n\n getSendTargets(): number[] {\n return [];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRetry extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RETRY;\n\n getSendTargets(): number[] {\n return [];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgReverseDeck extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_REVERSE_DECK;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { HandResult } from '../../network-enums';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgRockPaperScissors extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ROCK_PAPER_SCISSORS;\n\n @BinaryField('u8', 0)\n player: number;\n\n responsePlayer(): number {\n return this.player;\n }\n\n prepareResponse(choice: HandResult) {\n if (choice < HandResult.ROCK || choice > HandResult.PAPER) {\n throw new TypeError(\n `Invalid choice: ${choice}. Must be 1 (ROCK), 2 (SCISSORS), or 3 (PAPER)`,\n );\n }\n const buffer = new Uint8Array(1);\n buffer[0] = choice;\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport enum BattleCmdType {\n ACTIVATE = 0,\n ATTACK = 1,\n TO_M2 = 2,\n TO_EP = 3,\n}\n\nexport class YGOProMsgSelectBattleCmd_ActivatableInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('i32', 7)\n desc: number;\n}\n\nexport class YGOProMsgSelectBattleCmd_AttackableInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n directAttack: number;\n}\n\nexport class YGOProMsgSelectBattleCmd extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_BATTLECMD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n activatableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectBattleCmd_ActivatableInfo,\n 2,\n (obj) => obj.activatableCount,\n )\n activatableCards: YGOProMsgSelectBattleCmd_ActivatableInfo[];\n\n @BinaryField('u8', (obj) => {\n return 2 + obj.activatableCount * 11;\n })\n attackableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectBattleCmd_AttackableInfo,\n (obj) => {\n return 3 + obj.activatableCount * 11;\n },\n (obj) => obj.attackableCount,\n )\n attackableCards: YGOProMsgSelectBattleCmd_AttackableInfo[];\n\n @BinaryField('u8', (obj) => {\n return 3 + obj.activatableCount * 11 + obj.attackableCount * 8;\n })\n canM2: number;\n\n @BinaryField('u8', (obj) => {\n return 4 + obj.activatableCount * 11 + obj.attackableCount * 8;\n })\n canEp: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n type: BattleCmdType,\n option?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n desc?: number;\n },\n ) {\n let sequence: number;\n\n if (type === BattleCmdType.ACTIVATE) {\n if (option == null) {\n throw new TypeError('Option required for ACTIVATE');\n }\n if (isIndexResponse(option)) {\n sequence = option.index;\n if (sequence < 0 || sequence >= this.activatableCount) {\n throw new TypeError(`Index out of range: ${sequence}`);\n }\n } else {\n const idx = this.activatableCards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence) &&\n (option.desc == null || card.desc === option.desc),\n );\n if (idx === -1) {\n throw new TypeError('Activatable card not found');\n }\n sequence = idx;\n }\n } else if (type === BattleCmdType.ATTACK) {\n if (option == null) {\n throw new TypeError('Option required for ATTACK');\n }\n if (isIndexResponse(option)) {\n sequence = option.index;\n if (sequence < 0 || sequence >= this.attackableCount) {\n throw new TypeError(`Index out of range: ${sequence}`);\n }\n } else {\n const idx = this.attackableCards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (idx === -1) {\n throw new TypeError('Attackable card not found');\n }\n sequence = idx;\n }\n } else if (type === BattleCmdType.TO_M2) {\n if (this.canM2 === 0) {\n throw new TypeError('Cannot go to M2');\n }\n sequence = 0;\n } else if (type === BattleCmdType.TO_EP) {\n if (this.canEp === 0) {\n throw new TypeError('Cannot go to EP');\n }\n sequence = 0;\n } else {\n throw new TypeError(`Unknown type: ${type}`);\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, (sequence << 16) | type, true);\n return buffer;\n }\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectCard_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n subsequence: number;\n}\n\nexport class YGOProMsgSelectCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n cancelable: number;\n\n @BinaryField('u8', 2)\n min: number;\n\n @BinaryField('u8', 3)\n max: number;\n\n @BinaryField('u8', 4)\n count: number;\n\n @BinaryField(() => YGOProMsgSelectCard_CardInfo, 5, (obj) => obj.count)\n cards: YGOProMsgSelectCard_CardInfo[];\n\n private maskedView(playerId: number): this {\n // \u53C2\u8003 single_duel.cpp/tag_duel.cpp\uFF1A\u5BF9\u975E\u5F53\u524D\u89C6\u89D2\u73A9\u5BB6\u63A7\u5236\u7684\u5019\u9009\u5361\uFF0Ccode \u7F6E 0\n const view = this.copy();\n for (const card of view.cards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n return view;\n }\n\n playerView(playerId: number): this {\n return this.maskedView(playerId);\n }\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u53EF\u4EE5\u53D6\u6D88\u65F6\u624D\u80FD\u4E0D\u9009\u62E9\n if (this.cancelable === 0) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n cardOptions?: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n > | null,\n ) {\n if (cardOptions == null) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, -1, true);\n return buffer;\n }\n\n const indices: number[] = [];\n const usedIndices = new Set<number>();\n for (const option of cardOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card, idx) =>\n !usedIndices.has(idx) &&\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n usedIndices.add(index);\n }\n\n const buffer = new Uint8Array(1 + indices.length);\n buffer[0] = indices.length;\n indices.forEach((idx, i) => {\n buffer[1 + i] = idx;\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectChain_ChainInfo {\n @BinaryField('u8', 0)\n edesc: number;\n\n @BinaryField('u8', 1)\n forced: number;\n\n @BinaryField('i32', 2)\n code: number;\n\n @BinaryField('u8', 6)\n controller: number;\n\n @BinaryField('u8', 7)\n location: number;\n\n @BinaryField('u8', 8)\n sequence: number;\n\n @BinaryField('u8', 9)\n subsequence: number;\n\n @BinaryField('i32', 10)\n desc: number;\n}\n\nexport class YGOProMsgSelectChain extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_CHAIN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u8', 2)\n specialCount: number;\n\n @BinaryField('i32', 3)\n hint0: number;\n\n @BinaryField('i32', 7)\n hint1: number;\n\n @BinaryField(() => YGOProMsgSelectChain_ChainInfo, 11, (obj) => obj.count)\n chains: YGOProMsgSelectChain_ChainInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u6CA1\u6709\u5F3A\u5236\u8FDE\u9501\u65F6\u624D\u80FD\u4E0D\u6FC0\u6D3B\n const hasForced = this.chains.some((chain) => chain.forced !== 0);\n if (hasForced) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n option?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n desc?: number;\n }\n | null,\n ) {\n let index: number;\n\n if (option == null) {\n index = -1;\n } else if (isIndexResponse(option)) {\n index = option.index;\n if (index < -1 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.chains.findIndex(\n (chain) =>\n (option.code == null || chain.code === option.code) &&\n (option.controller == null ||\n chain.controller === option.controller) &&\n (option.location == null || chain.location === option.location) &&\n (option.sequence == null || chain.sequence === option.sequence) &&\n (option.desc == null || chain.desc === option.desc),\n );\n if (index === -1) {\n throw new TypeError('Chain not found');\n }\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, index, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectCounter_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u16', 7)\n counterCount: number;\n}\n\nexport class YGOProMsgSelectCounter extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_COUNTER;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u16', 1)\n counterType: number;\n\n @BinaryField('u16', 3)\n counterCount: number;\n\n @BinaryField('u8', 5)\n count: number;\n\n @BinaryField(() => YGOProMsgSelectCounter_CardInfo, 6, (obj) => obj.count)\n cards: YGOProMsgSelectCounter_CardInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n counterOptions: Array<{\n card:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n };\n count: number;\n }>,\n ) {\n // \u521B\u5EFA\u4E00\u4E2A\u6570\u7EC4\uFF0C\u521D\u59CB\u5316\u4E3A0\n const counterCounts = new Array(this.count).fill(0);\n\n for (const option of counterOptions) {\n let index: number;\n if (isIndexResponse(option.card)) {\n index = option.card.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n const card = option.card as {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n };\n index = this.cards.findIndex(\n (card) =>\n (card.code == null || card.code === card.code) &&\n (card.controller == null || card.controller === card.controller) &&\n (card.location == null || card.location === card.location) &&\n (card.sequence == null || card.sequence === card.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n counterCounts[index] = option.count;\n }\n\n const buffer = new Uint8Array(counterCounts.length * 2);\n const view = new DataView(buffer.buffer);\n counterCounts.forEach((count, i) => {\n view.setUint16(i * 2, count, true);\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport interface SelectablePlace {\n player: number;\n location: number;\n sequence: number;\n}\n\nexport class YGOProMsgSelectPlaceCommon extends YGOProMsgResponseBase {\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u32', 2)\n flag: number;\n\n getSelectablePlaces() {\n const places: SelectablePlace[] = [];\n const mask = this.flag >>> 0;\n let pos = 0;\n for (const player of [this.player, 1 - this.player]) {\n for (const location of [\n OcgcoreScriptConstants.LOCATION_MZONE,\n OcgcoreScriptConstants.LOCATION_SZONE,\n ]) {\n for (let sequence = 0; sequence < 8; sequence++) {\n if (!(mask & ((1 << pos) >>> 0))) {\n places.push({ player, location, sequence });\n }\n ++pos;\n }\n }\n }\n return places;\n }\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n places: Array<{ player: number; location: number; sequence: number }>,\n ) {\n const buffer = new Uint8Array(places.length * 3);\n places.forEach((place, i) => {\n if (\n (this.flag >>> 0) &\n ((1 <<\n ((place.player === this.player ? 0 : 16) +\n (place.location === OcgcoreScriptConstants.LOCATION_MZONE ? 0 : 8) +\n place.sequence)) >>>\n 0)\n ) {\n throw new Error('Selected place is not available');\n }\n buffer[i * 3] = place.player;\n buffer[i * 3 + 1] = place.location;\n buffer[i * 3 + 2] = place.sequence;\n });\n return buffer;\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgSelectPlaceCommon } from './select-place-common';\n\nexport class YGOProMsgSelectDisField extends YGOProMsgSelectPlaceCommon {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_DISFIELD;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgSelectEffectYn extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_EFFECTYN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n code: number;\n\n @BinaryField('u8', 5)\n controller: number;\n\n @BinaryField('u8', 6)\n location: number;\n\n @BinaryField('u8', 7)\n sequence: number;\n\n @BinaryField('u8', 8)\n position: number;\n\n @BinaryField('i32', 9)\n desc: number;\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n return this.prepareResponse(false);\n }\n\n prepareResponse(yes: boolean) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, yes ? 1 : 0, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport enum IdleCmdType {\n SUMMON = 0,\n SPSUMMON = 1,\n REPOS = 2,\n MSET = 3,\n SSET = 4,\n ACTIVATE = 5,\n TO_BP = 6,\n TO_EP = 7,\n SHUFFLE = 8,\n}\n\nexport class YGOProMsgSelectIdleCmd_SimpleCardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgSelectIdleCmd_ActivatableInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('i32', 7)\n desc: number;\n}\n\nexport class YGOProMsgSelectIdleCmd extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_IDLECMD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n summonableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n 2,\n (obj) => obj.summonableCount,\n )\n summonableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField('u8', (obj) => 2 + obj.summonableCount * 7)\n spSummonableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) => 3 + obj.summonableCount * 7,\n (obj) => obj.spSummonableCount,\n )\n spSummonableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) => 3 + obj.summonableCount * 7 + obj.spSummonableCount * 7,\n )\n reposableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) => 4 + obj.summonableCount * 7 + obj.spSummonableCount * 7,\n (obj) => obj.reposableCount,\n )\n reposableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 4 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7,\n )\n msetableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) =>\n 5 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7,\n (obj) => obj.msetableCount,\n )\n msetableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 5 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7,\n )\n ssetableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) =>\n 6 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7,\n (obj) => obj.ssetableCount,\n )\n ssetableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 6 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7,\n )\n activatableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_ActivatableInfo,\n (obj) =>\n 7 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7,\n (obj) => obj.activatableCount,\n )\n activatableCards: YGOProMsgSelectIdleCmd_ActivatableInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 7 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7 +\n obj.activatableCount * 11,\n )\n canBp: number;\n\n @BinaryField(\n 'u8',\n (obj) =>\n 8 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7 +\n obj.activatableCount * 11,\n )\n canEp: number;\n\n @BinaryField(\n 'u8',\n (obj) =>\n 9 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7 +\n obj.activatableCount * 11,\n )\n canShuffle: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n type: IdleCmdType,\n option?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n desc?: number;\n },\n ) {\n let sequence: number;\n\n if (\n type === IdleCmdType.SUMMON ||\n type === IdleCmdType.SPSUMMON ||\n type === IdleCmdType.REPOS ||\n type === IdleCmdType.MSET ||\n type === IdleCmdType.SSET ||\n type === IdleCmdType.ACTIVATE\n ) {\n if (option == null) {\n throw new TypeError(`Option required for ${IdleCmdType[type]}`);\n }\n\n let cards: any[];\n let maxCount: number;\n let typeName: string;\n\n if (type === IdleCmdType.SUMMON) {\n cards = this.summonableCards;\n maxCount = this.summonableCount;\n typeName = 'Summonable';\n } else if (type === IdleCmdType.SPSUMMON) {\n cards = this.spSummonableCards;\n maxCount = this.spSummonableCount;\n typeName = 'Special summonable';\n } else if (type === IdleCmdType.REPOS) {\n cards = this.reposableCards;\n maxCount = this.reposableCount;\n typeName = 'Repositionable';\n } else if (type === IdleCmdType.MSET) {\n cards = this.msetableCards;\n maxCount = this.msetableCount;\n typeName = 'Monster settable';\n } else if (type === IdleCmdType.SSET) {\n cards = this.ssetableCards;\n maxCount = this.ssetableCount;\n typeName = 'Spell/Trap settable';\n } else {\n // IdleCmdType.ACTIVATE\n cards = this.activatableCards;\n maxCount = this.activatableCount;\n typeName = 'Activatable';\n }\n\n if (isIndexResponse(option)) {\n sequence = option.index;\n if (sequence < 0 || sequence >= maxCount) {\n throw new TypeError(`Index out of range: ${sequence}`);\n }\n } else {\n const idx = cards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence) &&\n (option.desc == null || card.desc === option.desc),\n );\n if (idx === -1) {\n throw new TypeError(`${typeName} card not found`);\n }\n sequence = idx;\n }\n } else if (type === IdleCmdType.TO_BP) {\n if (this.canBp === 0) {\n throw new TypeError('Cannot go to BP');\n }\n sequence = 0;\n } else if (type === IdleCmdType.TO_EP) {\n if (this.canEp === 0) {\n throw new TypeError('Cannot go to EP');\n }\n sequence = 0;\n } else if (type === IdleCmdType.SHUFFLE) {\n if (this.canShuffle === 0) {\n throw new TypeError('Cannot shuffle');\n }\n sequence = 0;\n } else {\n throw new TypeError(`Unknown type: ${type}`);\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, (sequence << 16) | type, true);\n return buffer;\n }\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectOption extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_OPTION;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n options: number[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(option: IndexResponseObject | number) {\n let index: number;\n\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.options.indexOf(option);\n if (index === -1) {\n throw new TypeError(`Option not found: ${option}`);\n }\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, index, true);\n return buffer;\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgSelectPlaceCommon } from './select-place-common';\n\nexport class YGOProMsgSelectPlace extends YGOProMsgSelectPlaceCommon {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_PLACE;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgSelectPosition extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_POSITION;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n code: number;\n\n @BinaryField('u8', 5)\n positions: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(position: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, position, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectSum_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('i32', 7)\n opParam: number;\n}\n\nexport class YGOProMsgSelectSum extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_SUM;\n\n @BinaryField('u8', 0)\n mode: number;\n\n @BinaryField('u8', 1)\n player: number;\n\n @BinaryField('i32', 2)\n sumVal: number;\n\n @BinaryField('u8', 6)\n min: number;\n\n @BinaryField('u8', 7)\n max: number;\n\n @BinaryField('u8', 8)\n mustSelectCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectSum_CardInfo,\n 9,\n (obj) => obj.mustSelectCount,\n )\n mustSelectCards: YGOProMsgSelectSum_CardInfo[];\n\n @BinaryField('u8', (obj) => {\n return 9 + obj.mustSelectCount * 11;\n })\n count: number;\n\n @BinaryField(\n () => YGOProMsgSelectSum_CardInfo,\n (obj) => {\n return 10 + obj.mustSelectCount * 11;\n },\n (obj) => obj.count,\n )\n cards: YGOProMsgSelectSum_CardInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n cardOptions: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n >,\n ) {\n const indices: number[] = [];\n for (const option of cardOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n }\n\n const buffer = new Uint8Array(1 + indices.length);\n buffer[0] = this.mustSelectCount + indices.length;\n indices.forEach((idx, i) => {\n buffer[1 + i] = idx;\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectTribute_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n releaseParam: number;\n}\n\nexport class YGOProMsgSelectTribute extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_TRIBUTE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n cancelable: number;\n\n @BinaryField('u8', 2)\n min: number;\n\n @BinaryField('u8', 3)\n max: number;\n\n @BinaryField('u8', 4)\n count: number;\n\n @BinaryField(() => YGOProMsgSelectTribute_CardInfo, 5, (obj) => obj.count)\n cards: YGOProMsgSelectTribute_CardInfo[];\n\n private maskedView(playerId: number): this {\n // \u53C2\u8003 single_duel.cpp/tag_duel.cpp\uFF1A\u5BF9\u975E\u5F53\u524D\u89C6\u89D2\u73A9\u5BB6\u63A7\u5236\u7684\u5019\u9009\u5361\uFF0Ccode \u7F6E 0\n const view = this.copy();\n for (const card of view.cards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n return view;\n }\n\n playerView(playerId: number): this {\n return this.maskedView(playerId);\n }\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u53EF\u4EE5\u53D6\u6D88\u65F6\u624D\u80FD\u4E0D\u9009\u62E9\n if (this.cancelable === 0) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n cardOptions?: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n > | null,\n ) {\n if (cardOptions == null) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, -1, true);\n return buffer;\n }\n\n const indices: number[] = [];\n const usedIndices = new Set<number>();\n for (const option of cardOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card, idx) =>\n !usedIndices.has(idx) &&\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n usedIndices.add(index);\n }\n\n const buffer = new Uint8Array(1 + indices.length);\n buffer[0] = indices.length;\n indices.forEach((idx, i) => {\n buffer[1 + i] = idx;\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectUnselectCard_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n subsequence: number;\n}\n\nexport class YGOProMsgSelectUnselectCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_UNSELECT_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n finishable: number;\n\n @BinaryField('u8', 2)\n cancelable: number;\n\n @BinaryField('u8', 3)\n min: number;\n\n @BinaryField('u8', 4)\n max: number;\n\n @BinaryField('u8', 5)\n selectableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectUnselectCard_CardInfo,\n 6,\n (obj) => obj.selectableCount,\n )\n selectableCards: YGOProMsgSelectUnselectCard_CardInfo[];\n\n @BinaryField('u8', (obj) => {\n return 6 + obj.selectableCount * 8;\n })\n unselectableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectUnselectCard_CardInfo,\n (obj) => {\n return 7 + obj.selectableCount * 8;\n },\n (obj) => obj.unselectableCount,\n )\n unselectableCards: YGOProMsgSelectUnselectCard_CardInfo[];\n\n private maskedView(playerId: number): this {\n // \u53C2\u8003 single_duel.cpp/tag_duel.cpp\uFF1A\u5BF9\u975E\u5F53\u524D\u89C6\u89D2\u73A9\u5BB6\u63A7\u5236\u7684\u5019\u9009\u5361\uFF0Ccode \u7F6E 0\n const view = this.copy();\n for (const card of view.selectableCards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n for (const card of view.unselectableCards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n return view;\n }\n\n playerView(playerId: number): this {\n return this.maskedView(playerId);\n }\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u53EF\u4EE5\u53D6\u6D88\u6216\u5B8C\u6210\u65F6\u624D\u80FD\u4E0D\u9009\u62E9\n if (this.cancelable === 0 && this.finishable === 0) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n cardOption?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n | null,\n ) {\n if (cardOption == null) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, -1, true);\n return buffer;\n }\n\n let index: number;\n if (isIndexResponse(cardOption)) {\n index = cardOption.index;\n const totalCount = this.selectableCount + this.unselectableCount;\n if (index < 0 || index >= totalCount) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n // \u5148\u5728 selectable \u4E2D\u67E5\u627E\n index = this.selectableCards.findIndex(\n (card) =>\n (cardOption.code == null || card.code === cardOption.code) &&\n (cardOption.controller == null ||\n card.controller === cardOption.controller) &&\n (cardOption.location == null ||\n card.location === cardOption.location) &&\n (cardOption.sequence == null ||\n card.sequence === cardOption.sequence),\n );\n // \u5982\u679C\u6CA1\u627E\u5230\uFF0C\u5728 unselectable \u4E2D\u67E5\u627E\n if (index === -1) {\n const unselectIndex = this.unselectableCards.findIndex(\n (card) =>\n (cardOption.code == null || card.code === cardOption.code) &&\n (cardOption.controller == null ||\n card.controller === cardOption.controller) &&\n (cardOption.location == null ||\n card.location === cardOption.location) &&\n (cardOption.sequence == null ||\n card.sequence === cardOption.sequence),\n );\n if (unselectIndex === -1) {\n throw new TypeError('Card not found');\n }\n index = this.selectableCount + unselectIndex;\n }\n }\n\n const buffer = new Uint8Array(2);\n buffer[0] = 1;\n buffer[1] = index;\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgSelectYesNo extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_YESNO;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n desc: number;\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n return this.prepareResponse(false);\n }\n\n prepareResponse(yes: boolean) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, yes ? 1 : 0, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSet extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SET;\n\n @BinaryField('i32', 0)\n code: number;\n\n // MSG_SET \u662F\u76D6\u653E\u5361\u7247\uFF0C\u6240\u6709\u4EBA\u90FD\u770B\u4E0D\u5230 code\uFF08\u5305\u62EC\u73A9\u5BB6\u81EA\u5DF1\uFF09\n // \u670D\u52A1\u5668\u5728\u53D1\u9001\u524D\u4F1A\u5C06 code \u6E05\u96F6\n opponentView(): this {\n const view = this.copy();\n view.code = 0;\n return view;\n }\n\n teammateView(): this {\n const view = this.copy();\n view.code = 0;\n return view;\n }\n\n observerView(): this {\n const view = this.copy();\n view.code = 0;\n return view;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n playerView(playerId: number): this {\n // \u76D6\u653E\u5361\u7247\uFF0C\u5373\u4F7F\u662F\u73A9\u5BB6\u81EA\u5DF1\u4E5F\u770B\u4E0D\u5230\n const view = this.copy();\n view.code = 0;\n return view;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleDeck extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_DECK;\n\n @BinaryField('u8', 0)\n player: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleExtra extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_EXTRA;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n\n // \u5BF9\u65B9\u89C6\u89D2\u9700\u8981\u9690\u85CF\u989D\u5916\u5361\u7EC4\u4FE1\u606F\n opponentView(): this {\n const view = this.copy();\n // \u6839\u636E single_duel.cpp\uFF0C\u5BF9\u624B\u89C6\u89D2\u4E0B\u5E94\u8BE5\u5168\u90E8\u906E\u63A9\n view.cards = view.cards.map(() => 0);\n return view;\n }\n\n teammateView(): this {\n return this.opponentView();\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleHand extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_HAND;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n\n // \u5BF9\u65B9\u89C6\u89D2\u9700\u8981\u9690\u85CF\u624B\u724C\u4FE1\u606F\n opponentView(): this {\n const view = this.copy();\n view.cards = view.cards.map(() => 0);\n return view;\n }\n\n teammateView(): this {\n return this.opponentView();\n }\n\n getRequireRefreshZones() {\n return [\n {\n player: this.player,\n location: OcgcoreScriptConstants.LOCATION_HAND,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleSetCard_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgShuffleSetCard_SetCardInfo {\n @BinaryField(() => YGOProMsgShuffleSetCard_CardLocation, 0)\n oldLocation: YGOProMsgShuffleSetCard_CardLocation;\n\n @BinaryField(() => YGOProMsgShuffleSetCard_CardLocation, 4)\n newLocation: YGOProMsgShuffleSetCard_CardLocation;\n}\n\nexport class YGOProMsgShuffleSetCard extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_SET_CARD;\n\n @BinaryField('u8', 0)\n location: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgShuffleSetCard_SetCardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgShuffleSetCard_SetCardInfo[];\n\n getRequireRefreshZones() {\n let location = 0;\n if (this.location === OcgcoreScriptConstants.LOCATION_MZONE) {\n location = OcgcoreScriptConstants.LOCATION_MZONE;\n }\n if (this.location === OcgcoreScriptConstants.LOCATION_SZONE) {\n location = OcgcoreScriptConstants.LOCATION_SZONE;\n }\n if (location === 0) {\n return [];\n }\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSortCard_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgSortCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SORT_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgSortCard_CardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgSortCard_CardInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n sortedOptions?: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n > | null,\n ) {\n if (sortedOptions == null) {\n return new Uint8Array([0xff]);\n }\n\n const indices: number[] = [];\n const usedIndices = new Set<number>();\n for (const option of sortedOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card, idx) =>\n !usedIndices.has(idx) &&\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n usedIndices.add(index);\n }\n\n const buffer = new Uint8Array(indices.length);\n indices.forEach((idx, i) => {\n buffer[i] = idx;\n });\n return buffer;\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSpSummoned extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SPSUMMONED;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSpSummoning extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SPSUMMONING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n position: number;\n\n opponentView(): this {\n const view = this.copy();\n // \u5982\u679C\u662F\u80CC\u9762\u7279\u53EC (POS_FACEDOWN)\uFF0C\u9690\u85CF code\n if (view.position & OcgcoreCommonConstants.POS_FACEDOWN) {\n view.code = 0;\n }\n return view;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u5DF1\u65B9\u961F\u53CB\u53EF\u4EE5\u770B\u5230\u5B8C\u6574\u4FE1\u606F\uFF08\u5305\u62EC\u80CC\u9762\u7279\u53EC\u7684\u5361\uFF09\n return this.copy();\n }\n\n playerView(playerId: number): this {\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (playerId === this.controller) {\n return this.copy();\n }\n return this.opponentView();\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgStart_PlayerInfo {\n @BinaryField('u16', 0)\n deckCount: number;\n\n @BinaryField('u16', 2)\n extraCount: number;\n}\n\nexport class YGOProMsgStart extends YGOProMsgBase {\n static identifier = 4; // MSG_START\n\n /**\n * Player type / position (composite field):\n * - Low 4 bits (0x0F): Player number (0=first, 1=second, 2-3 in tag mode)\n * - High 4 bits (0xF0): Observer flag (0x10 = observer)\n *\n * Use `playerNumber` and `observerFlag` getters/setters to access individual components.\n */\n @BinaryField('u8', 0)\n playerType: number;\n\n @BinaryField('u8', 1)\n duelRule: number;\n\n @BinaryField('i32', 2)\n startLp0: number;\n\n @BinaryField('i32', 6)\n startLp1: number;\n\n @BinaryField(() => YGOProMsgStart_PlayerInfo, 10)\n player0: YGOProMsgStart_PlayerInfo;\n\n @BinaryField(() => YGOProMsgStart_PlayerInfo, 14)\n player1: YGOProMsgStart_PlayerInfo;\n\n /**\n * Get/Set player number (low 4 bits, 0-3)\n */\n get playerNumber(): number {\n return this.playerType & 0x0f;\n }\n\n set playerNumber(value: number) {\n this.playerType = (this.playerType & 0xf0) | (value & 0x0f);\n }\n\n /**\n * Get/Set observer flag (high 4 bits, 0x00 or 0x10)\n */\n get observerFlag(): number {\n return this.playerType & 0xf0;\n }\n\n set observerFlag(value: number) {\n this.playerType = (this.playerType & 0x0f) | (value & 0xf0);\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSummoned extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SUMMONED;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSummoning extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SUMMONING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n position: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgSwap_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgSwap extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SWAP;\n\n @BinaryField(() => YGOProMsgSwap_CardLocation, 0)\n card1: YGOProMsgSwap_CardLocation;\n\n @BinaryField(() => YGOProMsgSwap_CardLocation, 4)\n card2: YGOProMsgSwap_CardLocation;\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [\n {\n player: this.card1.controller,\n location: this.card1.location,\n sequence: this.card1.sequence,\n },\n {\n player: this.card2.controller,\n location: this.card2.location,\n sequence: this.card2.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSwapGraveDeck extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SWAP_GRAVE_DECK;\n\n @BinaryField('u8', 0)\n player: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgTagSwap extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_TAG_SWAP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n mzoneCount: number;\n\n @BinaryField('u8', 2)\n extraCount: number;\n\n @BinaryField('u8', 3)\n pzoneCount: number;\n\n @BinaryField('u8', 4)\n handCount: number;\n\n // \u5BF9\u5E94 ocgcore::field::tag_swap \u5199\u5165\u7684 topcode\uFF08\u5728 deck_reversed \u65F6\u53EF\u80FD\u975E 0\uFF09\n @BinaryField('i32', 5)\n topCode: number;\n\n @BinaryField('i32', 9, (obj) => obj.handCount)\n handCards: number[];\n\n @BinaryField('i32', (obj) => 9 + obj.handCount * 4, (obj) => obj.extraCount)\n extraCards: number[];\n\n // \u5BF9\u65B9\u548C\u961F\u53CB\u89C6\u89D2\u9700\u8981\u9690\u85CF\u624B\u724C\u548C\u989D\u5916\u5361\u7EC4\u4FE1\u606F\n opponentView(): this {\n const view = this.copy();\n // \u6839\u636E tag_duel.cpp\uFF0C\u624B\u724C\u548C\u989D\u5916\u5361\u7EC4\u90FD\u53EA\u906E\u63A9\u975E\u516C\u5F00\u7684\uFF08\u6CA1\u6709 0x80000000 \u6807\u8BB0\u7684\uFF09\n view.handCards = view.handCards.map((card) => {\n if (!(card & 0x80000000)) {\n return 0;\n }\n return card;\n });\n view.extraCards = view.extraCards.map((card) => {\n if (!(card & 0x80000000)) {\n return 0;\n }\n return card;\n });\n return view;\n }\n\n teammateView(): this {\n return this.opponentView();\n }\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgTossCoin extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_TOSS_COIN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u8', 2, (obj) => obj.count)\n results: number[];\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgTossDice extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_TOSS_DICE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u8', 2, (obj) => obj.count)\n results: number[];\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\nimport { CardQuery, serializeCardQuery } from '../../common/card-query';\nimport { RequireQueryCardLocation } from '../query-location';\n\n// MSG_UPDATE_CARD \u7684\u7ED3\u6784\uFF1A\u66F4\u65B0\u5355\u5F20\u5361\u7247\u7684\u4FE1\u606F\nexport class YGOProMsgUpdateCard extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_UPDATE_CARD;\n\n controller: number;\n location: number;\n sequence: number;\n card: CardQuery;\n\n opponentView(): this {\n const copy = this.copy();\n // \u5982\u679C\u5361\u7247\u662F\u76D6\u653E\u7684\uFF0C\u6E05\u9664\u67E5\u8BE2\u6570\u636E\uFF08\u53EA\u4FDD\u7559 flags = QUERY_CODE\uFF0Ccode = 0\uFF09\n if (\n copy.card?.position &&\n copy.card.position & OcgcoreCommonConstants.POS_FACEDOWN\n ) {\n const clearedCard = new CardQuery();\n clearedCard.flags = OcgcoreCommonConstants.QUERY_CODE;\n clearedCard.code = 0;\n clearedCard.empty = false;\n copy.card = clearedCard;\n }\n return copy;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0CRefreshSingle \u603B\u662F\u5148\u628A\u5B8C\u6574 UPDATE_CARD \u53D1\u7ED9\u540C\u961F\u73A9\u5BB6\n // \uFF08\u5305\u62EC\u573A\u4E0A\u80CC\u9762\u3001\u624B\u724C/\u5361\u7EC4\u7B49\u975E\u516C\u5F00\u533A\u57DF\uFF09\n return this.copy();\n }\n\n playerView(playerId: number): this {\n // MSG_UPDATE_CARD \u7684\u5B57\u6BB5\u540D\u662F controller\uFF0C\u4E0D\u662F player\n // \u6240\u4EE5\u9700\u8981\u91CD\u5199 playerView \u65B9\u6CD5\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (this.controller === playerId) {\n return this.copy();\n }\n return this.opponentView();\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n if (data.length < 4) {\n throw new Error('MSG_UPDATE_CARD data too short');\n }\n\n this.controller = data[1];\n this.location = data[2];\n this.sequence = data[3];\n\n // \u89E3\u6790\u67E5\u8BE2\u6570\u636E\uFF0C\u524D 4 \u5B57\u8282\u662F\u957F\u5EA6\n const queryDataWithLength = data.slice(4);\n if (queryDataWithLength.length < 8) {\n throw new Error('Query data too short');\n }\n\n const view = new DataView(\n queryDataWithLength.buffer,\n queryDataWithLength.byteOffset,\n queryDataWithLength.byteLength,\n );\n const length = view.getInt32(0, true);\n\n // \u8DF3\u8FC7\u957F\u5EA6\u5B57\u6BB5\uFF0C\u4ECE flags \u5F00\u59CB\u89E3\u6790\n const cardQueryData = queryDataWithLength.slice(4, length);\n this.card = new CardQuery();\n this.card.fromPayload(cardQueryData);\n\n return this;\n }\n\n toPayload(): Uint8Array {\n const cardPayload = serializeCardQuery(this.card); // \u81F3\u5C11\u5305\u542B flags\n const length = 4 + cardPayload.length; // \u957F\u5EA6\u5B57\u6BB5\u672C\u8EAB + \u67E5\u8BE2\u6570\u636E\n\n const result = new Uint8Array(4 + length);\n const view = new DataView(result.buffer);\n\n result[0] = this.identifier;\n result[1] = this.controller;\n result[2] = this.location;\n result[3] = this.sequence;\n\n // \u5199\u5165\u957F\u5EA6\n view.setInt32(4, length, true);\n\n // \u5199\u5165\u67E5\u8BE2\u6570\u636E\n result.set(cardPayload, 8);\n\n return result;\n }\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [\n {\n player: this.controller,\n location: this.location,\n sequence: this.sequence,\n },\n ];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\nimport { CardQuery, serializeCardQuery } from '../../common/card-query';\n\n// MSG_UPDATE_DATA \u7684\u7ED3\u6784\uFF1A\u66F4\u65B0\u67D0\u4E2A\u4F4D\u7F6E\u6240\u6709\u5361\u7247\u7684\u4FE1\u606F\nexport class YGOProMsgUpdateData extends YGOProMsgBase {\n static identifier = 6; // MSG_UPDATE_DATA\n\n player: number;\n location: number;\n cards: CardQuery[];\n\n opponentView(): this {\n const copy = this.copy();\n // \u5BF9\u4E8E\u6BCF\u5F20\u76D6\u653E\u7684\u5361\u7247\uFF0C\u6E05\u9664\u67E5\u8BE2\u6570\u636E\uFF08\u53EA\u4FDD\u7559\u957F\u5EA6\u5B57\u6BB5\uFF0C\u6240\u6709\u6570\u636E\u6E05\u96F6\uFF09\n if (copy.cards) {\n copy.cards = copy.cards.map((card) => {\n if (\n card.position &&\n card.position & OcgcoreCommonConstants.POS_FACEDOWN\n ) {\n // \u76D6\u653E\u7684\u5361\u7247\uFF0C\u6E05\u9664\u6240\u6709\u67E5\u8BE2\u6570\u636E\n const clearedCard = new CardQuery();\n clearedCard.flags = 0;\n clearedCard.empty = true;\n return clearedCard;\n }\n return card;\n });\n }\n return copy;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u961F\u53CB\u7684\u89C6\u89D2\u89C4\u5219\uFF08\u53C2\u8003 tag_duel.cpp\uFF09\uFF1A\n // - MZONE/SZONE\uFF1A\u961F\u53CB\u53EF\u4EE5\u770B\u5230\u5DF1\u65B9\u76D6\u653E\u7684\u5361\u7247\uFF08RefreshMzone/RefreshSzone \u53D1\u7ED9\u540C\u961F\u4E24\u4E2A\u73A9\u5BB6\uFF09\n // - HAND\uFF1A\u961F\u53CB\u4E5F\u770B\u4E0D\u5230\u975E\u516C\u5F00\u7684\u624B\u724C\uFF08RefreshHand \u53EA\u53D1\u7ED9\u5F53\u524D\u64CD\u4F5C\u73A9\u5BB6\u5B8C\u6574\u6570\u636E\uFF09\n // - \u5176\u4ED6\u516C\u5F00\u533A\u57DF\uFF08GRAVE \u7B49\uFF09\uFF1A\u6240\u6709\u4EBA\u90FD\u80FD\u770B\u5230\n\n if (\n this.location === OcgcoreScriptConstants.LOCATION_MZONE ||\n this.location === OcgcoreScriptConstants.LOCATION_SZONE\n ) {\n // \u573A\u4E0A\u533A\u57DF\uFF0C\u961F\u53CB\u53EF\u4EE5\u770B\u5230\u5B8C\u6574\u6570\u636E\uFF08\u5305\u62EC\u76D6\u653E\uFF09\n return this.copy();\n } else if (this.location === OcgcoreScriptConstants.LOCATION_HAND) {\n // \u624B\u724C\u533A\u57DF\uFF0C\u961F\u53CB\u4E5F\u770B\u4E0D\u5230\u975E\u516C\u5F00\u7684\u5361\u7247\n const copy = this.copy();\n if (copy.cards) {\n copy.cards = copy.cards.map((card) => {\n // \u53EA\u6709\u8868\u4FA7\uFF08\u516C\u5F00\uFF09\u7684\u624B\u724C\u624D\u80FD\u88AB\u770B\u5230\n if (\n !card.position ||\n !(card.position & OcgcoreCommonConstants.POS_FACEUP)\n ) {\n const clearedCard = new CardQuery();\n clearedCard.flags = 0;\n clearedCard.empty = true;\n return clearedCard;\n }\n return card;\n });\n }\n return copy;\n } else {\n // \u5176\u4ED6\u533A\u57DF\uFF08\u5893\u5730\u3001\u9664\u5916\u7B49\uFF09\uFF0C\u901A\u5E38\u662F\u516C\u5F00\u7684\n return this.copy();\n }\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n if (data.length < 3) {\n throw new Error('MSG_UPDATE_DATA data too short');\n }\n\n this.player = data[1];\n this.location = data[2];\n\n // \u89E3\u6790\u591A\u4E2A\u5361\u7247\u7684\u67E5\u8BE2\u6570\u636E\n this.cards = [];\n let offset = 3;\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n while (offset + 4 <= data.length) {\n const chunkLen = view.getInt32(offset, true);\n if (chunkLen <= 0) {\n break;\n }\n\n const end = Math.min(data.length, offset + chunkLen);\n\n if (chunkLen <= 4) {\n // \u7A7A\u5361\u7247\n const card = new CardQuery();\n card.flags = 0;\n card.empty = true;\n this.cards.push(card);\n } else {\n // \u8DF3\u8FC7\u957F\u5EA6\u5B57\u6BB5\uFF0C\u4ECE flags \u5F00\u59CB\u89E3\u6790\n const cardQueryData = data.slice(offset + 4, end);\n const card = new CardQuery();\n card.fromPayload(cardQueryData);\n this.cards.push(card);\n }\n\n offset += chunkLen;\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // \u8BA1\u7B97\u603B\u5927\u5C0F\n let totalSize = 3; // identifier + player + location\n\n const cardPayloads: Uint8Array[] = [];\n for (const card of this.cards || []) {\n const payload = serializeCardQuery(card);\n cardPayloads.push(payload);\n totalSize += 4 + payload.length; // \u957F\u5EA6\u5B57\u6BB5 + \u6570\u636E\n }\n\n const result = new Uint8Array(totalSize);\n const view = new DataView(result.buffer);\n let offset = 0;\n\n result[offset++] = this.identifier;\n result[offset++] = this.player;\n result[offset++] = this.location;\n\n // \u5199\u5165\u6BCF\u4E2A\u5361\u7247\u7684\u6570\u636E\n for (const payload of cardPayloads) {\n const length = 4 + payload.length;\n view.setInt32(offset, length, true);\n offset += 4;\n result.set(payload, offset);\n offset += payload.length;\n }\n\n return result;\n }\n}\n", "import { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgWaiting extends YGOProMsgBase {\n static identifier = 3; // MSG_WAITING\n\n getSendTargets(): number[] {\n return [];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgWin extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_WIN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n type: number;\n}\n", "import { RegistryBase } from '../../proto-base/registry-base';\nimport { YGOProMsgBase } from './base';\nimport {\n YGOProMsgAddCounter,\n YGOProMsgAnnounceAttrib,\n YGOProMsgAnnounceCard,\n YGOProMsgAnnounceNumber,\n YGOProMsgAnnounceRace,\n YGOProMsgAttack,\n YGOProMsgAttackDisabled,\n YGOProMsgBattle,\n YGOProMsgBecomeTarget,\n YGOProMsgCancelTarget,\n YGOProMsgCardHint,\n YGOProMsgCardTarget,\n YGOProMsgChainDisabled,\n YGOProMsgChainEnd,\n YGOProMsgChainNegated,\n YGOProMsgChainSolved,\n YGOProMsgChainSolving,\n YGOProMsgChained,\n YGOProMsgChaining,\n YGOProMsgConfirmCards,\n YGOProMsgConfirmDeckTop,\n YGOProMsgConfirmExtraTop,\n YGOProMsgDamage,\n YGOProMsgDamageStepEnd,\n YGOProMsgDamageStepStart,\n YGOProMsgDeckTop,\n YGOProMsgDraw,\n YGOProMsgEquip,\n YGOProMsgFieldDisabled,\n YGOProMsgFlipSummoned,\n YGOProMsgFlipSummoning,\n YGOProMsgHandRes,\n YGOProMsgHint,\n YGOProMsgLpUpdate,\n YGOProMsgMatchKill,\n YGOProMsgMissedEffect,\n YGOProMsgMove,\n YGOProMsgNewPhase,\n YGOProMsgNewTurn,\n YGOProMsgPayLpCost,\n YGOProMsgPlayerHint,\n YGOProMsgPosChange,\n YGOProMsgRandomSelected,\n YGOProMsgRecover,\n YGOProMsgReloadField,\n YGOProMsgRemoveCounter,\n YGOProMsgResetTime,\n YGOProMsgRetry,\n YGOProMsgReverseDeck,\n YGOProMsgRockPaperScissors,\n YGOProMsgSelectBattleCmd,\n YGOProMsgSelectCard,\n YGOProMsgSelectChain,\n YGOProMsgSelectCounter,\n YGOProMsgSelectDisField,\n YGOProMsgSelectEffectYn,\n YGOProMsgSelectIdleCmd,\n YGOProMsgSelectOption,\n YGOProMsgSelectPlace,\n YGOProMsgSelectPosition,\n YGOProMsgSelectSum,\n YGOProMsgSelectTribute,\n YGOProMsgSelectUnselectCard,\n YGOProMsgSelectYesNo,\n YGOProMsgSet,\n YGOProMsgShuffleDeck,\n YGOProMsgShuffleExtra,\n YGOProMsgShuffleHand,\n YGOProMsgShuffleSetCard,\n YGOProMsgSortCard,\n YGOProMsgSpSummoned,\n YGOProMsgSpSummoning,\n YGOProMsgStart,\n YGOProMsgSummoned,\n YGOProMsgSummoning,\n YGOProMsgSwap,\n YGOProMsgSwapGraveDeck,\n YGOProMsgTagSwap,\n YGOProMsgTossCoin,\n YGOProMsgTossDice,\n YGOProMsgUpdateCard,\n YGOProMsgUpdateData,\n YGOProMsgWaiting,\n YGOProMsgWin,\n} from './proto';\n\nexport const YGOProMessages = new RegistryBase(YGOProMsgBase);\n\nYGOProMessages.register(YGOProMsgRetry);\nYGOProMessages.register(YGOProMsgHint);\nYGOProMessages.register(YGOProMsgWin);\nYGOProMessages.register(YGOProMsgSelectBattleCmd);\nYGOProMessages.register(YGOProMsgSelectIdleCmd);\nYGOProMessages.register(YGOProMsgSelectEffectYn);\nYGOProMessages.register(YGOProMsgSelectYesNo);\nYGOProMessages.register(YGOProMsgSelectOption);\nYGOProMessages.register(YGOProMsgSelectCard);\nYGOProMessages.register(YGOProMsgSelectChain);\nYGOProMessages.register(YGOProMsgSelectPlace);\nYGOProMessages.register(YGOProMsgSelectPosition);\nYGOProMessages.register(YGOProMsgSelectTribute);\nYGOProMessages.register(YGOProMsgSelectCounter);\nYGOProMessages.register(YGOProMsgSelectSum);\nYGOProMessages.register(YGOProMsgSelectDisField);\nYGOProMessages.register(YGOProMsgSortCard);\nYGOProMessages.register(YGOProMsgSelectUnselectCard);\nYGOProMessages.register(YGOProMsgConfirmDeckTop);\nYGOProMessages.register(YGOProMsgConfirmCards);\nYGOProMessages.register(YGOProMsgShuffleDeck);\nYGOProMessages.register(YGOProMsgShuffleHand);\nYGOProMessages.register(YGOProMsgSwapGraveDeck);\nYGOProMessages.register(YGOProMsgShuffleExtra);\nYGOProMessages.register(YGOProMsgShuffleSetCard);\nYGOProMessages.register(YGOProMsgReverseDeck);\nYGOProMessages.register(YGOProMsgDeckTop);\nYGOProMessages.register(YGOProMsgNewTurn);\nYGOProMessages.register(YGOProMsgNewPhase);\nYGOProMessages.register(YGOProMsgConfirmExtraTop);\nYGOProMessages.register(YGOProMsgMove);\nYGOProMessages.register(YGOProMsgPosChange);\nYGOProMessages.register(YGOProMsgSet);\nYGOProMessages.register(YGOProMsgSwap);\nYGOProMessages.register(YGOProMsgFieldDisabled);\nYGOProMessages.register(YGOProMsgSummoning);\nYGOProMessages.register(YGOProMsgSummoned);\nYGOProMessages.register(YGOProMsgSpSummoning);\nYGOProMessages.register(YGOProMsgSpSummoned);\nYGOProMessages.register(YGOProMsgFlipSummoning);\nYGOProMessages.register(YGOProMsgFlipSummoned);\nYGOProMessages.register(YGOProMsgChaining);\nYGOProMessages.register(YGOProMsgChained);\nYGOProMessages.register(YGOProMsgChainSolving);\nYGOProMessages.register(YGOProMsgChainSolved);\nYGOProMessages.register(YGOProMsgChainEnd);\nYGOProMessages.register(YGOProMsgChainNegated);\nYGOProMessages.register(YGOProMsgChainDisabled);\nYGOProMessages.register(YGOProMsgRandomSelected);\nYGOProMessages.register(YGOProMsgBecomeTarget);\nYGOProMessages.register(YGOProMsgDraw);\nYGOProMessages.register(YGOProMsgDamage);\nYGOProMessages.register(YGOProMsgRecover);\nYGOProMessages.register(YGOProMsgEquip);\nYGOProMessages.register(YGOProMsgLpUpdate);\nYGOProMessages.register(YGOProMsgCardTarget);\nYGOProMessages.register(YGOProMsgCancelTarget);\nYGOProMessages.register(YGOProMsgPayLpCost);\nYGOProMessages.register(YGOProMsgAddCounter);\nYGOProMessages.register(YGOProMsgRemoveCounter);\nYGOProMessages.register(YGOProMsgAttack);\nYGOProMessages.register(YGOProMsgBattle);\nYGOProMessages.register(YGOProMsgAttackDisabled);\nYGOProMessages.register(YGOProMsgDamageStepStart);\nYGOProMessages.register(YGOProMsgDamageStepEnd);\nYGOProMessages.register(YGOProMsgMissedEffect);\nYGOProMessages.register(YGOProMsgTossCoin);\nYGOProMessages.register(YGOProMsgTossDice);\nYGOProMessages.register(YGOProMsgRockPaperScissors);\nYGOProMessages.register(YGOProMsgHandRes);\nYGOProMessages.register(YGOProMsgAnnounceRace);\nYGOProMessages.register(YGOProMsgAnnounceAttrib);\nYGOProMessages.register(YGOProMsgAnnounceCard);\nYGOProMessages.register(YGOProMsgAnnounceNumber);\nYGOProMessages.register(YGOProMsgCardHint);\nYGOProMessages.register(YGOProMsgTagSwap);\nYGOProMessages.register(YGOProMsgPlayerHint);\nYGOProMessages.register(YGOProMsgMatchKill);\nYGOProMessages.register(YGOProMsgResetTime);\nYGOProMessages.register(YGOProMsgUpdateCard);\nYGOProMessages.register(YGOProMsgWaiting);\nYGOProMessages.register(YGOProMsgStart);\nYGOProMessages.register(YGOProMsgUpdateData);\nYGOProMessages.register(YGOProMsgReloadField);\n", "import { YGOProMessages } from '../../msg/registry';\nimport { YGOProMsgBase } from '../../msg/base';\nimport { YGOProStocBase } from '../base';\n\n// STOC_GAME_MSG: byte array (MSG protocol)\n// Uses YGOProMessages registry to parse MSG protocol\nexport class YGOProStocGameMsg extends YGOProStocBase {\n static identifier = 0x1;\n\n // Parsed MSG protocol message\n msg: YGOProMsgBase | undefined;\n\n fromPayload(data: Uint8Array): this {\n this.msg = YGOProMessages.getInstanceFromPayload(data);\n return this;\n }\n\n toPayload(): Uint8Array {\n if (!this.msg) {\n return new Uint8Array(0);\n }\n return this.msg.toPayload();\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.msg) {\n // Copy the msg object\n this.msg = data.msg.copy();\n }\n return this;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\nimport { ErrorMessageType } from '../../network-enums';\n\nexport class YGOProStocErrorMsg extends YGOProStocBase {\n static identifier = 0x2;\n\n @BinaryField('u8', 0)\n msg: ErrorMessageType;\n\n // 3 bytes padding\n\n @BinaryField('u32', 4)\n code: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_SELECT_HAND has no data (no body)\nexport class YGOProStocSelectHand extends YGOProStocBase {\n static identifier = 0x3;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_SELECT_TP has no data (no body)\nexport class YGOProStocSelectTp extends YGOProStocBase {\n static identifier = 0x4;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocHandResult extends YGOProStocBase {\n static identifier = 0x5;\n\n @BinaryField('u8', 0)\n res1: number;\n\n @BinaryField('u8', 1)\n res2: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_TP_RESULT is reserved (no data)\nexport class YGOProStocTpResult extends YGOProStocBase {\n static identifier = 0x6;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_CHANGE_SIDE has no data (no body)\nexport class YGOProStocChangeSide extends YGOProStocBase {\n static identifier = 0x7;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_WAITING_SIDE has no data (no body)\nexport class YGOProStocWaitingSide extends YGOProStocBase {\n static identifier = 0x8;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n/**\n * Deck count information for a single player\n */\nexport class YGOProStocDeckCount_DeckInfo {\n @BinaryField('i16', 0)\n main: number;\n\n @BinaryField('i16', 2)\n extra: number;\n\n @BinaryField('i16', 4)\n side: number;\n}\n\n/**\n * STOC_DECK_COUNT: int16_t[6]\n *\n * Sent during side deck phase to inform clients of deck counts.\n */\nexport class YGOProStocDeckCount extends YGOProStocBase {\n static identifier = 0x9;\n\n @BinaryField(() => YGOProStocDeckCount_DeckInfo, 0)\n player0DeckCount: YGOProStocDeckCount_DeckInfo;\n\n @BinaryField(() => YGOProStocDeckCount_DeckInfo, 6)\n player1DeckCount: YGOProStocDeckCount_DeckInfo;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n// STOC_CREATE_GAME is reserved\nexport class YGOProStocCreateGame extends YGOProStocBase {\n static identifier = 0x11;\n\n @BinaryField('u32', 0)\n gameid: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { HostInfo } from '../../common';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocJoinGame extends YGOProStocBase {\n static identifier = 0x12;\n\n @BinaryField(() => HostInfo, 0)\n info: HostInfo;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n/**\n * STOC_TYPE_CHANGE\n *\n * Informs the client of their player type and host status in the room.\n */\nexport class YGOProStocTypeChange extends YGOProStocBase {\n static identifier = 0x13;\n\n /**\n * Composite field:\n * - Low 4 bits (0x0F): Player position (0-7)\n * - High 4 bits (0xF0): Host flag (0x10 = host, 0x00 = not host)\n *\n * Use `playerPosition` and `isHost` getters/setters to access individual components.\n */\n @BinaryField('u8', 0)\n type: number;\n\n /**\n * Get/Set player position (low 4 bits, 0-7)\n */\n get playerPosition(): number {\n return this.type & 0x0f;\n }\n\n set playerPosition(value: number) {\n this.type = (this.type & 0xf0) | (value & 0x0f);\n }\n\n /**\n * Get/Set host flag (high 4 bits)\n * Returns true if this player is the host\n */\n get isHost(): boolean {\n return ((this.type >> 4) & 0x0f) !== 0;\n }\n\n set isHost(value: boolean) {\n if (value) {\n this.type = (this.type & 0x0f) | 0x10;\n } else {\n this.type = this.type & 0x0f;\n }\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n// STOC_LEAVE_GAME is reserved\nexport class YGOProStocLeaveGame extends YGOProStocBase {\n static identifier = 0x14;\n\n @BinaryField('u8', 0)\n pos: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_DUEL_START has no data (no body)\nexport class YGOProStocDuelStart extends YGOProStocBase {\n static identifier = 0x15;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_DUEL_END has no data (no body)\nexport class YGOProStocDuelEnd extends YGOProStocBase {\n static identifier = 0x16;\n}\n", "import { YGOProYrp } from 'ygopro-yrp-encode';\nimport { YGOProStocBase } from '../base';\n\n// STOC_REPLAY: ExtendedReplayHeader + byte array\n// Uses ygopro-yrp-encode\nexport class YGOProStocReplay extends YGOProStocBase {\n static identifier = 0x17;\n\n replay: YGOProYrp;\n\n constructor() {\n super();\n this.replay = new YGOProYrp();\n }\n\n fromPayload(data: Uint8Array): this {\n this.replay = new YGOProYrp().fromYrp(data);\n return this;\n }\n\n toPayload(): Uint8Array {\n return this.replay.toYrp();\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.replay) {\n // Pass replay data to constructor\n this.replay = new YGOProYrp(data.replay);\n }\n return this;\n }\n\n copy(): this {\n const copied = new (this.constructor as any)();\n copied.replay = new YGOProYrp(this.replay);\n return copied;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocTimeLimit extends YGOProStocBase {\n static identifier = 0x18;\n\n @BinaryField('u8', 0)\n player: number;\n\n // 1 byte padding\n\n @BinaryField('u16', 2)\n left_time: number;\n}\n", "import { YGOProStocBase } from '../base';\n\nconst STOC_CHAT_MAX_LENGTH = 256;\n\n// STOC_CHAT: uint16_t + uint16_t array\n// uint16_t player_type; (can be NetPlayerType 0-7 or ChatColor 8-19)\n// uint16_t msg[256]; (UTF-16 string, variable length)\n// Maximum length: 256 characters (LEN_CHAT_MSG in YGOPro)\n// Maximum total size: (1 + 256) * 2 = 514 bytes (SIZE_STOC_CHAT)\nexport class YGOProStocChat extends YGOProStocBase {\n static identifier = 0x19;\n static readonly MAX_LENGTH = STOC_CHAT_MAX_LENGTH;\n\n player_type: number; // NetPlayerType (0-7) or ChatColor (8-19)\n msg: string;\n\n constructor() {\n super();\n this.player_type = 0;\n this.msg = '';\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 2) {\n throw new Error('STOC_CHAT data too short');\n }\n\n // Read player_type (2 bytes, little endian)\n this.player_type = data[0] | (data[1] << 8);\n\n // Decode remaining bytes as UTF-16LE\n if (data.length > 2) {\n const decoder = new TextDecoder('utf-16le');\n this.msg = decoder.decode(data.slice(2)).replace(/\\0+$/, ''); // Remove trailing nulls\n } else {\n this.msg = '';\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // Truncate message to maximum length (256 characters)\n const text =\n this.msg.length > STOC_CHAT_MAX_LENGTH\n ? this.msg.substring(0, STOC_CHAT_MAX_LENGTH)\n : this.msg;\n\n // Convert to UTF-16LE manually\n const utf16 = new Uint16Array(text.length + 1); // +1 for null terminator\n for (let i = 0; i < text.length; i++) {\n utf16[i] = text.charCodeAt(i);\n }\n utf16[text.length] = 0; // Null terminator\n\n // Create result buffer: player_type (2 bytes) + UTF-16LE string\n const result = new Uint8Array(2 + utf16.byteLength);\n\n // Write player_type (little endian)\n result[0] = this.player_type & 0xff;\n result[1] = (this.player_type >> 8) & 0xff;\n\n // Write UTF-16LE string\n result.set(new Uint8Array(utf16.buffer), 2);\n\n return result;\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.player_type !== undefined) {\n this.player_type = data.player_type;\n }\n if (data.msg !== undefined) {\n this.msg = data.msg;\n }\n return this;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocHsPlayerEnter extends YGOProStocBase {\n static identifier = 0x20;\n\n @BinaryField('utf16', 0, 20)\n name: string;\n\n @BinaryField('u8', 40)\n pos: number;\n\n // 1 byte padding (note: actual size is 41 bytes, not 42 - workaround in original code)\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { PlayerChangeState } from '../../network-enums';\nimport { YGOProStocBase } from '../base';\n\n/**\n * STOC_HS_PLAYER_CHANGE\n *\n * Notifies clients of player state changes in the host screen (pre-game lobby).\n */\nexport class YGOProStocHsPlayerChange extends YGOProStocBase {\n static identifier = 0x21;\n\n /**\n * Composite field: pos<<4 | state\n * - Low 4 bits (0x0F): Player state (PlayerChangeState)\n * - High 4 bits (0xF0): Player position (0-3)\n *\n * Use `playerState` and `playerPosition` getters/setters to access individual components.\n */\n @BinaryField('u8', 0)\n status: number;\n\n /**\n * Get/Set player state (low 4 bits)\n * Can be a PlayerChangeState enum value or a player position (0-7) for position changes\n */\n get playerState(): number {\n return this.status & 0x0f;\n }\n\n set playerState(value: number) {\n this.status = (this.status & 0xf0) | (value & 0x0f);\n }\n\n /**\n * Get/Set player position (high 4 bits, 0-3)\n */\n get playerPosition(): number {\n return (this.status >> 4) & 0x0f;\n }\n\n set playerPosition(value: number) {\n this.status = (this.status & 0x0f) | ((value & 0x0f) << 4);\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocHsWatchChange extends YGOProStocBase {\n static identifier = 0x22;\n\n @BinaryField('u16', 0)\n watch_count: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_TEAMMATE_SURRENDER has no data (no body)\nexport class YGOProStocTeammateSurrender extends YGOProStocBase {\n static identifier = 0x23;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_FIELD_FINISH has no data (no body)\nexport class YGOProStocFieldFinish extends YGOProStocBase {\n static identifier = 0x30;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\nimport { RoomStatus } from '../../network-enums';\n\n// STOC_SRVPRO_ROOMLIST - SRVPro room list protocol\n// Structure for each room entry\nexport class SrvproRoomInfo {\n @BinaryField('utf8', 0, 64)\n roomname: string;\n\n @BinaryField('u8', 64)\n room_status: RoomStatus;\n\n @BinaryField('i8', 65)\n room_duel_count: number;\n\n @BinaryField('i8', 66)\n room_turn_count: number;\n\n @BinaryField('utf8', 67, 128)\n player1: string;\n\n @BinaryField('i8', 195)\n player1_score: number;\n\n @BinaryField('i32', 196)\n player1_lp: number;\n\n @BinaryField('utf8', 200, 128)\n player2: string;\n\n @BinaryField('i8', 328)\n player2_score: number;\n\n @BinaryField('i32', 329)\n player2_lp: number;\n}\n\nexport class YGOProStocSrvproRoomlist extends YGOProStocBase {\n static identifier = 0x31;\n\n @BinaryField('u16', 0)\n count: number;\n\n @BinaryField(() => SrvproRoomInfo, 2, (obj) => obj.count)\n rooms: SrvproRoomInfo[];\n}\n", "import { ProtoRegistryBase } from '../../proto-base/proto-registry-base';\nimport { YGOProStocBase } from './base';\nimport {\n YGOProStocGameMsg,\n YGOProStocErrorMsg,\n YGOProStocSelectHand,\n YGOProStocSelectTp,\n YGOProStocHandResult,\n YGOProStocTpResult,\n YGOProStocChangeSide,\n YGOProStocWaitingSide,\n YGOProStocDeckCount,\n YGOProStocCreateGame,\n YGOProStocJoinGame,\n YGOProStocTypeChange,\n YGOProStocLeaveGame,\n YGOProStocDuelStart,\n YGOProStocDuelEnd,\n YGOProStocReplay,\n YGOProStocTimeLimit,\n YGOProStocChat,\n YGOProStocHsPlayerEnter,\n YGOProStocHsPlayerChange,\n YGOProStocHsWatchChange,\n YGOProStocTeammateSurrender,\n YGOProStocFieldFinish,\n YGOProStocSrvproRoomlist,\n} from './proto';\n\nexport const YGOProStoc = new ProtoRegistryBase(YGOProStocBase);\n\nYGOProStoc.register(YGOProStocGameMsg);\nYGOProStoc.register(YGOProStocErrorMsg);\nYGOProStoc.register(YGOProStocSelectHand);\nYGOProStoc.register(YGOProStocSelectTp);\nYGOProStoc.register(YGOProStocHandResult);\nYGOProStoc.register(YGOProStocTpResult);\nYGOProStoc.register(YGOProStocChangeSide);\nYGOProStoc.register(YGOProStocWaitingSide);\nYGOProStoc.register(YGOProStocDeckCount);\nYGOProStoc.register(YGOProStocCreateGame);\nYGOProStoc.register(YGOProStocJoinGame);\nYGOProStoc.register(YGOProStocTypeChange);\nYGOProStoc.register(YGOProStocLeaveGame);\nYGOProStoc.register(YGOProStocDuelStart);\nYGOProStoc.register(YGOProStocDuelEnd);\nYGOProStoc.register(YGOProStocReplay);\nYGOProStoc.register(YGOProStocTimeLimit);\nYGOProStoc.register(YGOProStocChat);\nYGOProStoc.register(YGOProStocHsPlayerEnter);\nYGOProStoc.register(YGOProStocHsPlayerChange);\nYGOProStoc.register(YGOProStocHsWatchChange);\nYGOProStoc.register(YGOProStocTeammateSurrender);\nYGOProStoc.register(YGOProStocFieldFinish);\nYGOProStoc.register(YGOProStocSrvproRoomlist);\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { MetadataSetter, Reflector } from 'typed-reflector';\nimport { BinaryFieldInfo } from './binary/binary-meta';\n\nexport interface MetadataMap {\n binaryField: BinaryFieldInfo;\n}\n\nexport interface MetadataArrayMap {\n binaryFieldKeys: string;\n}\n\nexport const Metadata = new MetadataSetter<MetadataMap, MetadataArrayMap>();\nexport const reflector = new Reflector<MetadataMap, MetadataArrayMap>();\n", "import { Metadata } from '../metadata';\n\nexport interface BinaryTypes {\n i8: number;\n u8: number;\n i16: number;\n u16: number;\n i32: number;\n u32: number;\n utf8: string;\n utf16: string;\n}\n\nexport type BinaryType = keyof BinaryTypes | (() => new () => any);\nexport type Length = number | ((obj: any, key: string) => number);\n\nexport interface BinaryFieldInfo {\n type: BinaryType;\n offset: Length;\n length?: Length;\n}\n\nexport const BinaryField = (\n type: BinaryType,\n offset: Length,\n length?: Length,\n) => {\n // utf8/utf16 \u5FC5\u987B\u6307\u5B9A length\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF08\u6BCF\u4E2A\u5B57\u7B26\u5360 2 \u5B57\u8282\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u6570\n if ((type === 'utf8' || type === 'utf16') && length == null) {\n throw new Error(`String type ${type} requires length parameter`);\n }\n return Metadata.set(\n 'binaryField',\n { type, offset, length },\n 'binaryFieldKeys',\n );\n};\n", "import { BinaryFieldInfo } from './binary-meta';\nimport { reflector } from '../metadata';\n\n// \u5171\u4EAB\u7684\u8F85\u52A9\u51FD\u6570\nconst isStaticInfo = (info: BinaryFieldInfo) =>\n typeof info.offset === 'number' &&\n (info.length == null || typeof info.length === 'number');\n\nconst resolveLength = (\n obj: any,\n length: number | ((obj: any, key: string) => number),\n key: string,\n): number => {\n return typeof length === 'number' ? length : length(obj, key);\n};\n\nconst getTypeSize = (type: string): number => {\n switch (type) {\n case 'i8':\n case 'u8':\n return 1;\n case 'i16':\n case 'u16':\n return 2;\n case 'i32':\n case 'u32':\n return 4;\n default:\n return 0;\n }\n};\n\ninterface FieldInfo {\n key: string;\n info: BinaryFieldInfo;\n}\n\nconst getFieldInfos = (objOrClass: any) => {\n const fields = reflector\n .getArray('binaryFieldKeys', objOrClass)\n .map((key) => ({\n key,\n info: reflector.get('binaryField', objOrClass, key),\n }))\n .filter((s) => s.info) as FieldInfo[];\n\n const staticInfos = fields.filter((s) => isStaticInfo(s.info));\n const dynamicInfos = fields.filter((s) => !isStaticInfo(s.info));\n\n return { fields, staticInfos, dynamicInfos };\n};\n\nexport const fillBinaryFields = <T = any>(\n obj: T,\n data: Uint8Array,\n useClass?: new () => T,\n): number => {\n const { staticInfos, dynamicInfos } = getFieldInfos(useClass || obj);\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const utf8Decoder = new TextDecoder('utf-8');\n const utf16Decoder = new TextDecoder('utf-16le');\n\n let totalSize = 0;\n\n const readValue = (type: string, offset: number): any => {\n const typeSize = getTypeSize(type);\n if (offset + typeSize > data.length) {\n throw new Error(\n `Data too short: need ${offset + typeSize} bytes, got ${data.length} bytes`,\n );\n }\n switch (type) {\n case 'i8':\n return view.getInt8(offset);\n case 'u8':\n return view.getUint8(offset);\n case 'i16':\n return view.getInt16(offset, true);\n case 'u16':\n return view.getUint16(offset, true);\n case 'i32':\n return view.getInt32(offset, true);\n case 'u32':\n return view.getUint32(offset, true);\n default:\n throw new Error(`Unknown type: ${type}`);\n }\n };\n\n const readString = (\n type: string,\n offset: number,\n byteLength: number,\n ): string => {\n if (offset + byteLength > data.length) {\n throw new Error(\n `Data too short: need ${offset + byteLength} bytes, got ${data.length} bytes`,\n );\n }\n const bytes = data.slice(offset, offset + byteLength);\n\n // \u627E\u5230\u7B2C\u4E00\u4E2A \\0\uFF0C\u63D0\u524D\u622A\u65AD\n let nullIndex = -1;\n if (type === 'utf8') {\n nullIndex = bytes.indexOf(0);\n } else if (type === 'utf16') {\n // utf16 \u7684 \\0 \u662F\u4E24\u4E2A\u5B57\u8282\u90FD\u4E3A 0\n for (let i = 0; i < bytes.length - 1; i += 2) {\n if (bytes[i] === 0 && bytes[i + 1] === 0) {\n nullIndex = i;\n break;\n }\n }\n }\n\n const actualBytes = nullIndex >= 0 ? bytes.slice(0, nullIndex) : bytes;\n\n if (type === 'utf8') {\n return utf8Decoder.decode(actualBytes);\n } else if (type === 'utf16') {\n return utf16Decoder.decode(actualBytes);\n }\n throw new Error(`Unknown string type: ${type}`);\n };\n\n const parseField = (key: string, info: BinaryFieldInfo) => {\n const offset = resolveLength(obj, info.offset, key);\n const type = info.type;\n\n // \u5982\u679C type \u662F\u4E00\u4E2A\u7C7B\uFF08\u51FD\u6570\uFF09\n if (typeof type === 'function') {\n const Constructor = type();\n if (info.length != null) {\n // \u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n const array = [];\n let currentOffset = offset;\n for (let i = 0; i < length; i++) {\n if (currentOffset >= data.length) {\n throw new Error(\n `Data too short: need more bytes for object array at offset ${currentOffset}, got ${data.length} bytes`,\n );\n }\n const instance = new Constructor();\n const elementData = data.slice(currentOffset);\n const size = fillBinaryFields(instance, elementData, Constructor);\n array.push(instance);\n currentOffset += size;\n }\n (obj as any)[key] = array;\n totalSize = Math.max(totalSize, currentOffset);\n } else {\n // \u5355\u4E2A\u5BF9\u8C61\n if (offset >= data.length) {\n throw new Error(\n `Data too short: need more bytes for object at offset ${offset}, got ${data.length} bytes`,\n );\n }\n const instance = new Constructor();\n const elementData = data.slice(offset);\n const size = fillBinaryFields(instance, elementData, Constructor);\n (obj as any)[key] = instance;\n totalSize = Math.max(totalSize, offset + size);\n }\n return;\n }\n\n // \u5B57\u7B26\u4E32\u7C7B\u578B\n if (type === 'utf8' || type === 'utf16') {\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF0C\u9700\u8981\u8F6C\u6362\u4E3A\u5B57\u8282\u6570\uFF08\u5B57\u7B26\u6570 * 2\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u957F\u5EA6\n const lengthValue = resolveLength(obj, info.length!, key);\n const byteLength = type === 'utf16' ? lengthValue * 2 : lengthValue;\n (obj as any)[key] = readString(type, offset, byteLength);\n totalSize = Math.max(totalSize, offset + byteLength);\n return;\n }\n\n // \u6570\u503C\u7C7B\u578B\n const typeStr = type as string;\n const typeSize = getTypeSize(typeStr);\n if (info.length != null) {\n // \u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n const array = [];\n for (let i = 0; i < length; i++) {\n array.push(readValue(typeStr, offset + i * typeSize));\n }\n (obj as any)[key] = array;\n totalSize = Math.max(totalSize, offset + length * typeSize);\n } else {\n // \u5355\u4E2A\u503C\n (obj as any)[key] = readValue(typeStr, offset);\n totalSize = Math.max(totalSize, offset + typeSize);\n }\n };\n\n // \u5148\u89E3\u6790\u6240\u6709 static \u5B57\u6BB5\uFF0C\u518D\u6309\u987A\u5E8F\u89E3\u6790 dynamic \u5B57\u6BB5\n // \u8FD9\u6837 dynamic \u5B57\u6BB5\u53EF\u4EE5\u4F9D\u8D56\u6240\u6709 static \u5B57\u6BB5\u548C\u4E4B\u524D\u7684 dynamic \u5B57\u6BB5\n for (const { key, info } of staticInfos) {\n parseField(key, info);\n }\n\n for (const { key, info } of dynamicInfos) {\n parseField(key, info);\n }\n\n return totalSize;\n};\n\nexport const toBinaryFields = <T = any>(\n obj: T,\n useClass?: new () => T,\n): Uint8Array => {\n const { staticInfos, dynamicInfos } = getFieldInfos(useClass || obj);\n\n // \u5982\u679C\u6CA1\u6709\u4EFB\u4F55\u5B57\u6BB5\uFF0C\u8FD4\u56DE\u7A7A\u6570\u7EC4\n if (staticInfos.length === 0 && dynamicInfos.length === 0) {\n return new Uint8Array(0);\n }\n\n // \u5148\u8BA1\u7B97\u603B\u5927\u5C0F\n let totalSize = 0;\n for (const { key, info } of [...staticInfos, ...dynamicInfos]) {\n const offset = resolveLength(obj, info.offset, key);\n const type = info.type;\n\n if (typeof type === 'function') {\n const Constructor = type();\n const value = (obj as any)[key];\n if (info.length != null) {\n // \u5BF9\u8C61\u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n let currentOffset = offset;\n for (let i = 0; i < length; i++) {\n if (value && value[i]) {\n const itemData = toBinaryFields(value[i], Constructor);\n currentOffset += itemData.length;\n }\n }\n totalSize = Math.max(totalSize, currentOffset);\n } else {\n // \u5355\u4E2A\u5BF9\u8C61\n if (value) {\n const itemData = toBinaryFields(value, Constructor);\n totalSize = Math.max(totalSize, offset + itemData.length);\n }\n }\n } else if (type === 'utf8' || type === 'utf16') {\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF0C\u9700\u8981\u8F6C\u6362\u4E3A\u5B57\u8282\u6570\uFF08\u5B57\u7B26\u6570 * 2\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u957F\u5EA6\n const lengthValue = resolveLength(obj, info.length!, key);\n const byteLength = type === 'utf16' ? lengthValue * 2 : lengthValue;\n totalSize = Math.max(totalSize, offset + byteLength);\n } else {\n const typeSize = getTypeSize(type as string);\n if (info.length != null) {\n const length = resolveLength(obj, info.length, key);\n totalSize = Math.max(totalSize, offset + length * typeSize);\n } else {\n totalSize = Math.max(totalSize, offset + typeSize);\n }\n }\n }\n\n const data = new Uint8Array(totalSize);\n const view = new DataView(data.buffer);\n const utf8Encoder = new TextEncoder();\n\n const writeValue = (type: string, offset: number, value: number) => {\n switch (type) {\n case 'i8':\n view.setInt8(offset, value);\n break;\n case 'u8':\n view.setUint8(offset, value);\n break;\n case 'i16':\n view.setInt16(offset, value, true);\n break;\n case 'u16':\n view.setUint16(offset, value, true);\n break;\n case 'i32':\n view.setInt32(offset, value, true);\n break;\n case 'u32':\n view.setUint32(offset, value, true);\n break;\n }\n };\n\n const writeString = (\n type: string,\n offset: number,\n byteLength: number,\n value: string,\n ) => {\n if (type === 'utf8') {\n const encoded = utf8Encoder.encode(value);\n const len = Math.min(encoded.length, byteLength);\n data.set(encoded.slice(0, len), offset);\n // \u5269\u4F59\u90E8\u5206\u81EA\u52A8\u4E3A 0\uFF08Uint8Array \u9ED8\u8BA4\u521D\u59CB\u5316\u4E3A 0\uFF09\n } else if (type === 'utf16') {\n // utf16le \u7F16\u7801\n for (let i = 0; i < Math.min(value.length, byteLength / 2); i++) {\n view.setUint16(offset + i * 2, value.charCodeAt(i), true);\n }\n }\n };\n\n const writeField = (key: string, info: BinaryFieldInfo) => {\n const offset = resolveLength(obj, info.offset, key);\n const type = info.type;\n const value = (obj as any)[key];\n\n if (value === undefined || value === null) {\n return; // \u8DF3\u8FC7\u672A\u5B9A\u4E49\u7684\u5B57\u6BB5\n }\n\n // \u5982\u679C type \u662F\u4E00\u4E2A\u7C7B\uFF08\u51FD\u6570\uFF09\n if (typeof type === 'function') {\n const Constructor = type();\n if (info.length != null) {\n // \u5BF9\u8C61\u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n let currentOffset = offset;\n // \u786E\u4FDD\u904D\u5386\u5B8C\u6574\u7684 length\uFF0C\u5982\u679C\u6570\u7EC4\u5143\u7D20\u4E0D\u591F\uFF0C\u5269\u4F59\u90E8\u5206\u4F1A\u4FDD\u6301\u4E3A 0\uFF08zero fill\uFF09\n for (let i = 0; i < length; i++) {\n if (value && i < value.length && value[i]) {\n const itemData = toBinaryFields(value[i], Constructor);\n data.set(itemData, currentOffset);\n currentOffset += itemData.length;\n } else {\n // \u5982\u679C\u5143\u7D20\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u8BE5\u5BF9\u8C61\u7684\u5927\u5C0F\n const emptyInstance = new Constructor();\n const itemData = toBinaryFields(emptyInstance, Constructor);\n currentOffset += itemData.length;\n // \u8FD9\u90E8\u5206\u4F1A\u4FDD\u6301\u4E3A 0\uFF08\u5DF2\u7531 Uint8Array \u521D\u59CB\u5316\uFF09\n }\n }\n } else {\n // \u5355\u4E2A\u5BF9\u8C61\n const itemData = toBinaryFields(value, Constructor);\n data.set(itemData, offset);\n }\n return;\n }\n\n // \u5B57\u7B26\u4E32\u7C7B\u578B\n if (type === 'utf8' || type === 'utf16') {\n // utf16: length \u8868\u793A\u5B57\u7B26\u6570\uFF0C\u9700\u8981\u8F6C\u6362\u4E3A\u5B57\u8282\u6570\uFF08\u5B57\u7B26\u6570 * 2\uFF09\n // utf8: length \u8868\u793A\u5B57\u8282\u957F\u5EA6\n const lengthValue = resolveLength(obj, info.length!, key);\n const byteLength = type === 'utf16' ? lengthValue * 2 : lengthValue;\n writeString(type, offset, byteLength, value);\n return;\n }\n\n // \u6570\u503C\u7C7B\u578B\n const typeStr = type as string;\n const typeSize = getTypeSize(typeStr);\n if (info.length != null) {\n // \u6570\u7EC4\n const length = resolveLength(obj, info.length, key);\n // \u786E\u4FDD\u904D\u5386\u5B8C\u6574\u7684 length\uFF0C\u5982\u679C\u6570\u7EC4\u5143\u7D20\u4E0D\u591F\uFF0C\u5269\u4F59\u90E8\u5206\u4F1A\u4FDD\u6301\u4E3A 0\uFF08zero fill\uFF09\n for (let i = 0; i < length; i++) {\n if (\n value &&\n i < value.length &&\n value[i] !== undefined &&\n value[i] !== null\n ) {\n writeValue(typeStr, offset + i * typeSize, value[i]);\n }\n // \u5982\u679C value \u4E0D\u5B58\u5728\u3001\u7D22\u5F15\u8D85\u51FA\u8303\u56F4\u6216\u503C\u4E3A undefined/null\uFF0C\u5219\u4FDD\u6301\u4E3A 0\uFF08\u5DF2\u7531 Uint8Array \u521D\u59CB\u5316\uFF09\n }\n } else {\n // \u5355\u4E2A\u503C\n writeValue(typeStr, offset, value);\n }\n };\n\n // \u5148\u5199\u5165\u6240\u6709 static \u5B57\u6BB5\uFF0C\u518D\u6309\u987A\u5E8F\u5199\u5165 dynamic \u5B57\u6BB5\n for (const { key, info } of staticInfos) {\n writeField(key, info);\n }\n\n for (const { key, info } of dynamicInfos) {\n writeField(key, info);\n }\n\n return data;\n};\n", "import { BinaryField } from '../../binary/binary-meta';\nimport { GameMode } from '../network-enums';\n\n// HostInfo structure from network.h\n// Size: 20 bytes (with padding)\nexport class HostInfo {\n @BinaryField('u32', 0)\n lflist: number;\n\n @BinaryField('u8', 4)\n rule: number; // Rule index (0-5), maps to OT values in UI\n\n @BinaryField('u8', 5)\n mode: GameMode;\n\n @BinaryField('u8', 6)\n duel_rule: number;\n\n @BinaryField('u8', 7)\n no_check_deck: number;\n\n @BinaryField('u8', 8)\n no_shuffle_deck: number;\n\n // 3 bytes padding (bytes 9-11)\n\n @BinaryField('i32', 12)\n start_lp: number;\n\n @BinaryField('u8', 16)\n start_hand: number;\n\n @BinaryField('u8', 17)\n draw_count: number;\n\n @BinaryField('u16', 18)\n time_limit: number;\n}\n", "import { fillBinaryFields, toBinaryFields } from '../binary/fill-binary-fields';\n\nexport class PayloadBase {\n static identifier = 0;\n\n get identifier(): number {\n return (this.constructor as typeof PayloadBase).identifier;\n }\n\n fromPartial(data: Partial<this>): this {\n const safeData =\n typeof globalThis.structuredClone === 'function'\n ? globalThis.structuredClone(data)\n : JSON.parse(JSON.stringify(data));\n\n Object.assign(this, safeData);\n return this;\n }\n\n fromPayload(data: Uint8Array): this {\n fillBinaryFields(this, data);\n return this;\n }\n\n toPayload() {\n return toBinaryFields(this);\n }\n\n copy() {\n const Constructor = this.constructor as new () => this;\n const copied = new Constructor();\n return copied.fromPartial(this);\n }\n}\n", "// Generated from /home/nanahira/ygo/ygopro/ocgcore/common.h\nexport const OcgcoreCommonConstants = {\n ACTIVITY_ATTACK: 5,\n ACTIVITY_BATTLE_PHASE: 6,\n ACTIVITY_CHAIN: 7,\n ACTIVITY_FLIPSUMMON: 4,\n ACTIVITY_NORMALSUMMON: 2,\n ACTIVITY_SPSUMMON: 3,\n ACTIVITY_SUMMON: 1,\n ATTRIBUTES_COUNT: 7,\n ATTRIBUTE_ALL: 127,\n ATTRIBUTE_DARK: 32,\n ATTRIBUTE_DEVINE: 64,\n ATTRIBUTE_EARTH: 1,\n ATTRIBUTE_FIRE: 4,\n ATTRIBUTE_LIGHT: 16,\n ATTRIBUTE_WATER: 2,\n ATTRIBUTE_WIND: 8,\n CARDDATA_ALIAS: 2,\n CARDDATA_ATTACK: 8,\n CARDDATA_ATTRIBUTE: 6,\n CARDDATA_CODE: 1,\n CARDDATA_DEFENSE: 9,\n CARDDATA_LEVEL: 5,\n CARDDATA_LINK_MARKER: 12,\n CARDDATA_LSCALE: 10,\n CARDDATA_RACE: 7,\n CARDDATA_RSCALE: 11,\n CARDDATA_SETCODE: 3,\n CARDDATA_TYPE: 4,\n CHINT_ATTRIBUTE: 4,\n CHINT_CARD: 2,\n CHINT_DESC_ADD: 6,\n CHINT_DESC_REMOVE: 7,\n CHINT_NUMBER: 5,\n CHINT_RACE: 3,\n CHINT_TURN: 1,\n CURRENT_RULE: 5,\n DUEL_ATTACK_FIRST_TURN: 2,\n DUEL_OBSOLETE_RULING: 8,\n DUEL_PSEUDO_SHUFFLE: 16,\n DUEL_RETURN_DECK_TOP: 128,\n DUEL_REVEAL_DECK_SEQ: 256,\n DUEL_SIMPLE_AI: 64,\n DUEL_TAG_MODE: 32,\n DUEL_TEST_MODE: 1,\n EDESC_OPERATION: 1,\n EDESC_RESET: 2,\n FALSE: 0,\n GETEFFECT_ALL: 15,\n GETEFFECT_COPY: 4,\n GETEFFECT_GAIN: 2,\n GETEFFECT_GRANT: 8,\n GETEFFECT_INITIAL: 1,\n HINT_ATTRIB: 7,\n HINT_CARD: 10,\n HINT_CODE: 8,\n HINT_EFFECT: 5,\n HINT_EVENT: 1,\n HINT_MESSAGE: 2,\n HINT_MUSIC: 21,\n HINT_MUSIC_OGG: 23,\n HINT_NUMBER: 9,\n HINT_OPSELECTED: 4,\n HINT_RACE: 6,\n HINT_SELECTMSG: 3,\n HINT_SOUND: 22,\n HINT_ZONE: 11,\n LINK_MARKER_BOTTOM: 2,\n LINK_MARKER_BOTTOM_LEFT: 1,\n LINK_MARKER_BOTTOM_RIGHT: 4,\n LINK_MARKER_LEFT: 8,\n LINK_MARKER_RIGHT: 32,\n LINK_MARKER_TOP: 128,\n LINK_MARKER_TOP_LEFT: 64,\n LINK_MARKER_TOP_RIGHT: 256,\n LOCATION_DECKBOT: 65537,\n LOCATION_DECKSHF: 131073,\n MASTER_RULE3: 3,\n MASTER_RULE_2020: 5,\n MSG_ADD_COUNTER: 101,\n MSG_AI_NAME: 163,\n MSG_ANNOUNCE_ATTRIB: 141,\n MSG_ANNOUNCE_CARD: 142,\n MSG_ANNOUNCE_NUMBER: 143,\n MSG_ANNOUNCE_RACE: 140,\n MSG_ATTACK: 110,\n MSG_ATTACK_DISABLED: 112,\n MSG_BATTLE: 111,\n MSG_BECOME_TARGET: 83,\n MSG_CANCEL_TARGET: 97,\n MSG_CARD_HINT: 160,\n MSG_CARD_TARGET: 96,\n MSG_CHAINED: 71,\n MSG_CHAINING: 70,\n MSG_CHAIN_DISABLED: 76,\n MSG_CHAIN_END: 74,\n MSG_CHAIN_NEGATED: 75,\n MSG_CHAIN_SOLVED: 73,\n MSG_CHAIN_SOLVING: 72,\n MSG_CONFIRM_CARDS: 31,\n MSG_CONFIRM_DECKTOP: 30,\n MSG_CONFIRM_EXTRATOP: 42,\n MSG_CUSTOM_MSG: 180,\n MSG_DAMAGE: 91,\n MSG_DAMAGE_STEP_END: 114,\n MSG_DAMAGE_STEP_START: 113,\n MSG_DECK_TOP: 38,\n MSG_DRAW: 90,\n MSG_EQUIP: 93,\n MSG_FIELD_DISABLED: 56,\n MSG_FLIPSUMMONED: 65,\n MSG_FLIPSUMMONING: 64,\n MSG_HAND_RES: 133,\n MSG_HINT: 2,\n MSG_LPUPDATE: 94,\n MSG_MATCH_KILL: 170,\n MSG_MISSED_EFFECT: 120,\n MSG_MOVE: 50,\n MSG_NEW_PHASE: 41,\n MSG_NEW_TURN: 40,\n MSG_PAY_LPCOST: 100,\n MSG_PLAYER_HINT: 165,\n MSG_POS_CHANGE: 53,\n MSG_RANDOM_SELECTED: 81,\n MSG_RECOVER: 92,\n MSG_RELOAD_FIELD: 162,\n MSG_REMOVE_COUNTER: 102,\n MSG_RESET_TIME: 221,\n MSG_RETRY: 1,\n MSG_REVERSE_DECK: 37,\n MSG_ROCK_PAPER_SCISSORS: 132,\n MSG_SELECT_BATTLECMD: 10,\n MSG_SELECT_CARD: 15,\n MSG_SELECT_CHAIN: 16,\n MSG_SELECT_COUNTER: 22,\n MSG_SELECT_DISFIELD: 24,\n MSG_SELECT_EFFECTYN: 12,\n MSG_SELECT_IDLECMD: 11,\n MSG_SELECT_OPTION: 14,\n MSG_SELECT_PLACE: 18,\n MSG_SELECT_POSITION: 19,\n MSG_SELECT_SUM: 23,\n MSG_SELECT_TRIBUTE: 20,\n MSG_SELECT_UNSELECT_CARD: 26,\n MSG_SELECT_YESNO: 13,\n MSG_SET: 54,\n MSG_SHOW_HINT: 164,\n MSG_SHUFFLE_DECK: 32,\n MSG_SHUFFLE_EXTRA: 39,\n MSG_SHUFFLE_HAND: 33,\n MSG_SHUFFLE_SET_CARD: 36,\n MSG_SORT_CARD: 25,\n MSG_SPSUMMONED: 63,\n MSG_SPSUMMONING: 62,\n MSG_SUMMONED: 61,\n MSG_SUMMONING: 60,\n MSG_SWAP: 55,\n MSG_SWAP_GRAVE_DECK: 35,\n MSG_TAG_SWAP: 161,\n MSG_TOSS_COIN: 130,\n MSG_TOSS_DICE: 131,\n MSG_UPDATE_CARD: 7,\n MSG_WIN: 5,\n NEW_MASTER_RULE: 4,\n NO_FLIP_EFFECT: 65536,\n OPCODE_ADD: 1073741824,\n OPCODE_AND: 1073741828,\n OPCODE_DIV: 1073741827,\n OPCODE_ISATTRIBUTE: 1073742084,\n OPCODE_ISCODE: 1073742080,\n OPCODE_ISRACE: 1073742083,\n OPCODE_ISSETCARD: 1073742081,\n OPCODE_ISTYPE: 1073742082,\n OPCODE_MUL: 1073741826,\n OPCODE_NEG: 1073741830,\n OPCODE_NOT: 1073741831,\n OPCODE_OR: 1073741829,\n OPCODE_SUB: 1073741825,\n OPERATION_CANCELED: -1,\n OPERATION_FAIL: 0,\n OPERATION_SUCCESS: 1,\n PHASE_BATTLE: 128,\n PHASE_BATTLE_START: 8,\n PHASE_BATTLE_STEP: 16,\n PHASE_DAMAGE: 32,\n PHASE_DAMAGE_CAL: 64,\n PHASE_DRAW: 1,\n PHASE_END: 512,\n PHASE_MAIN1: 4,\n PHASE_MAIN2: 256,\n PHASE_STANDBY: 2,\n PHINT_DESC_ADD: 6,\n PHINT_DESC_REMOVE: 7,\n PLAYER_ALL: 3,\n PLAYER_NONE: 2,\n PLAYER_SELFDES: 5,\n POS_ATTACK: 3,\n POS_DEFENSE: 12,\n POS_FACEDOWN: 10,\n POS_FACEDOWN_ATTACK: 2,\n POS_FACEDOWN_DEFENSE: 8,\n POS_FACEUP: 5,\n POS_FACEUP_ATTACK: 1,\n POS_FACEUP_DEFENSE: 4,\n PROCESSOR_BUFFER_LEN: 268435455,\n PROCESSOR_END: 536870912,\n PROCESSOR_FLAG: 4026531840,\n PROCESSOR_NONE: 0,\n PROCESSOR_WAITING: 268435456,\n QUERY_ALIAS: 4,\n QUERY_ATTACK: 256,\n QUERY_ATTRIBUTE: 64,\n QUERY_BASE_ATTACK: 1024,\n QUERY_BASE_DEFENSE: 2048,\n QUERY_CODE: 1,\n QUERY_COUNTERS: 131072,\n QUERY_DEFENSE: 512,\n QUERY_EQUIP_CARD: 16384,\n QUERY_LEVEL: 16,\n QUERY_LINK: 8388608,\n QUERY_LSCALE: 2097152,\n QUERY_OVERLAY_CARD: 65536,\n QUERY_OWNER: 262144,\n QUERY_POSITION: 2,\n QUERY_RACE: 128,\n QUERY_RANK: 32,\n QUERY_REASON: 4096,\n QUERY_REASON_CARD: 8192,\n QUERY_RSCALE: 4194304,\n QUERY_STATUS: 524288,\n QUERY_TARGET_CARD: 32768,\n QUERY_TYPE: 8,\n RACES_COUNT: 26,\n RACE_ALL: 67108863,\n RACE_AQUA: 64,\n RACE_BEAST: 16384,\n RACE_BEASTWARRIOR: 32768,\n RACE_CREATORGOD: 4194304,\n RACE_CYBERSE: 16777216,\n RACE_DEVINE: 2097152,\n RACE_DINOSAUR: 65536,\n RACE_DRAGON: 8192,\n RACE_FAIRY: 4,\n RACE_FIEND: 8,\n RACE_FISH: 131072,\n RACE_ILLUSION: 33554432,\n RACE_INSECT: 2048,\n RACE_MACHINE: 32,\n RACE_PLANT: 1024,\n RACE_PSYCHO: 1048576,\n RACE_PYRO: 128,\n RACE_REPTILE: 524288,\n RACE_ROCK: 256,\n RACE_SEASERPENT: 262144,\n RACE_SPELLCASTER: 2,\n RACE_THUNDER: 4096,\n RACE_WARRIOR: 1,\n RACE_WINDBEAST: 512,\n RACE_WYRM: 8388608,\n RACE_ZOMBIE: 16,\n REASONS_PROCEDURE: 271056896,\n REASON_ACTION: 2147483648,\n REASON_ADJUST: 256,\n REASON_BATTLE: 32,\n REASON_COST: 128,\n REASON_DESTROY: 1,\n REASON_DISCARD: 16384,\n REASON_DISSUMMON: 4096,\n REASON_DRAW: 33554432,\n REASON_EFFECT: 64,\n REASON_FLIP: 8192,\n REASON_FUSION: 262144,\n REASON_LINK: 268435456,\n REASON_LOST_OVERLAY: 536870912,\n REASON_LOST_TARGET: 512,\n REASON_MAINTENANCE: 1073741824,\n REASON_MATERIAL: 8,\n REASON_RDAMAGE: 32768,\n REASON_REDIRECT: 67108864,\n REASON_RELEASE: 2,\n REASON_REPLACE: 16777216,\n REASON_RETURN: 131072,\n REASON_REVEAL: 134217728,\n REASON_RITUAL: 1048576,\n REASON_RRECOVER: 65536,\n REASON_RULE: 1024,\n REASON_SPSUMMON: 2048,\n REASON_SUMMON: 16,\n REASON_SYNCHRO: 524288,\n REASON_TEMPORARY: 4,\n REASON_XYZ: 2097152,\n RETURN_TEMP_REMOVE_TO_FIELD: 1,\n RETURN_TRAP_MONSTER_TO_SZONE: 2,\n SEQ_DECKBOTTOM: 1,\n SEQ_DECKSHUFFLE: 2,\n SEQ_DECKTOP: 0,\n SIZE_AI_NAME: 128,\n SIZE_HINT_MSG: 1024,\n SIZE_MESSAGE_BUFFER: 8192,\n SIZE_RETURN_VALUE: 512,\n STATUS_ACTIVATE_DISABLED: 262144,\n STATUS_ACT_FROM_HAND: 134217728,\n STATUS_ATTACK_CANCELED: 2097152,\n STATUS_BATTLE_DESTROYED: 16384,\n STATUS_BATTLE_RESULT: 64,\n STATUS_CANNOT_CHANGE_FORM: 256,\n STATUS_CHAINING: 65536,\n STATUS_CONTINUOUS_POS: 33554432,\n STATUS_COPYING_EFFECT: 32768,\n STATUS_DESTROY_CONFIRMED: 4096,\n STATUS_DISABLED: 1,\n STATUS_EFFECT_ENABLED: 1024,\n STATUS_EFFECT_REPLACED: 524288,\n STATUS_FLIP_SUMMONING: 1048576,\n STATUS_FLIP_SUMMON_DISABLED: 2147483648,\n STATUS_FLIP_SUMMON_TURN: 536870912,\n STATUS_FORBIDDEN: 67108864,\n STATUS_INITIALIZING: 4194304,\n STATUS_JUST_POS: 16777216,\n STATUS_LEAVE_CONFIRMED: 8192,\n STATUS_NO_LEVEL: 32,\n STATUS_OPPO_BATTLE: 268435456,\n STATUS_PROC_COMPLETE: 8,\n STATUS_SET_TURN: 16,\n STATUS_SPSUMMON_STEP: 128,\n STATUS_SPSUMMON_TURN: 1073741824,\n STATUS_SUMMONING: 512,\n STATUS_SUMMON_DISABLED: 131072,\n STATUS_SUMMON_TURN: 2048,\n STATUS_TO_DISABLE: 4,\n STATUS_TO_ENABLE: 2,\n STATUS_TO_HAND_WITHOUT_CONFIRM: 8388608,\n TRUE: 1,\n TYPES_EXTRA_DECK: 75505728,\n TYPE_CONTINUOUS: 131072,\n TYPE_COUNTER: 1048576,\n TYPE_DUAL: 2048,\n TYPE_EFFECT: 32,\n TYPE_EQUIP: 262144,\n TYPE_FIELD: 524288,\n TYPE_FLIP: 2097152,\n TYPE_FUSION: 64,\n TYPE_LINK: 67108864,\n TYPE_MONSTER: 1,\n TYPE_NORMAL: 16,\n TYPE_PENDULUM: 16777216,\n TYPE_QUICKPLAY: 65536,\n TYPE_RITUAL: 128,\n TYPE_SPELL: 2,\n TYPE_SPIRIT: 512,\n TYPE_SPSUMMON: 33554432,\n TYPE_SYNCHRO: 8192,\n TYPE_TOKEN: 16384,\n TYPE_TOON: 4194304,\n TYPE_TRAP: 4,\n TYPE_TRAPMONSTER: 256,\n TYPE_TUNER: 4096,\n TYPE_UNION: 1024,\n TYPE_XYZ: 8388608,\n} as const;\n", "import { BinaryField } from '../../binary/binary-meta';\nimport { PayloadBase } from '../../proto-base/payload-base';\nimport { OcgcoreCommonConstants } from '../../vendor/ocgcore-constants';\n\n// Constants from card_data.h\nconst CARD_ARTWORK_VERSIONS_OFFSET = 20;\nconst CARD_BLACK_LUSTER_SOLDIER2 = 5405695;\n\n// Double name cards\nconst CARD_MARINE_DOLPHIN = 78734254;\nconst CARD_TWINKLE_MOSS = 13857930;\n\n// Helper functions\nfunction checkSetcode(setcode: number, value: number): boolean {\n const settype = value & 0x0fff;\n const setsubtype = value & 0xf000;\n return (\n setcode &&\n (setcode & 0x0fff) === settype &&\n (setcode & setsubtype) === setsubtype\n );\n}\n\nfunction isAlternative(code: number, alias: number): boolean {\n if (code === CARD_BLACK_LUSTER_SOLDIER2) {\n return false;\n }\n return (\n alias &&\n alias < code + CARD_ARTWORK_VERSIONS_OFFSET &&\n code < alias + CARD_ARTWORK_VERSIONS_OFFSET\n );\n}\n\nexport class CardData extends PayloadBase {\n @BinaryField('u32', 0)\n code: number;\n\n @BinaryField('u32', 4)\n alias: number;\n\n @BinaryField('u16', 8, 16)\n setcode: number[];\n\n @BinaryField('u32', 40)\n type: number;\n\n @BinaryField('u32', 44)\n level: number;\n\n @BinaryField('u32', 48)\n attribute: number;\n\n @BinaryField('u32', 52)\n race: number;\n\n @BinaryField('i32', 56)\n attack: number;\n\n @BinaryField('i32', 60)\n defense: number;\n\n @BinaryField('u32', 64)\n lscale: number;\n\n @BinaryField('u32', 68)\n rscale: number;\n\n @BinaryField('u32', 72)\n linkMarker: number;\n\n /**\n * Check if this card belongs to a specific setcode\n * @param value The setcode value to check against\n * @returns true if the card belongs to the setcode\n */\n isSetCard(value: number): boolean {\n for (const x of this.setcode) {\n if (!x) {\n return false;\n }\n if (checkSetcode(x, value)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the original code of this card (handles alternate artworks)\n * @returns The original card code\n */\n getOriginalCode(): number {\n return isAlternative(this.code, this.alias) ? this.alias : this.code;\n }\n\n /**\n * Check if this card can be declared with the given opcode filter\n * @param opcode Array of opcodes that define the filter expression\n * @returns true if the card can be declared\n */\n isDeclarable(opcode: number[]): boolean {\n const stack: number[] = [];\n\n for (const it of opcode) {\n switch (it) {\n case OcgcoreCommonConstants.OPCODE_ADD: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs + rhs);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_SUB: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs - rhs);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_MUL: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs * rhs);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_DIV: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(Math.floor(lhs / rhs));\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_AND: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs && rhs ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_OR: {\n if (stack.length >= 2) {\n const rhs = stack.pop()!;\n const lhs = stack.pop()!;\n stack.push(lhs || rhs ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_NEG: {\n if (stack.length >= 1) {\n const val = stack.pop()!;\n stack.push(-val);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_NOT: {\n if (stack.length >= 1) {\n const val = stack.pop()!;\n stack.push(!val ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISCODE: {\n if (stack.length >= 1) {\n const code = stack.pop()!;\n stack.push(this.code === code ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISSETCARD: {\n if (stack.length >= 1) {\n const setCode = stack.pop()!;\n const res = this.isSetCard(setCode);\n stack.push(res ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISTYPE: {\n if (stack.length >= 1) {\n const val = stack.pop()!;\n stack.push(this.type & val ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISRACE: {\n if (stack.length >= 1) {\n const raceVal = stack.pop()!;\n stack.push(this.race & raceVal ? 1 : 0);\n }\n break;\n }\n case OcgcoreCommonConstants.OPCODE_ISATTRIBUTE: {\n if (stack.length >= 1) {\n const attributeVal = stack.pop()!;\n stack.push(this.attribute & attributeVal ? 1 : 0);\n }\n break;\n }\n default: {\n // Push literal value\n stack.push(it);\n break;\n }\n }\n }\n\n if (stack.length !== 1 || stack[0] === 0) {\n return false;\n }\n\n // Additional checks from the original C++ code\n return (\n this.code === CARD_MARINE_DOLPHIN ||\n this.code === CARD_TWINKLE_MOSS ||\n (!this.alias &&\n (this.type &\n (OcgcoreCommonConstants.TYPE_MONSTER |\n OcgcoreCommonConstants.TYPE_TOKEN)) !==\n (OcgcoreCommonConstants.TYPE_MONSTER |\n OcgcoreCommonConstants.TYPE_TOKEN))\n );\n }\n}\n", "import { OcgcoreCommonConstants } from '../../vendor/ocgcore-constants';\n\nexport class CardQuery_CardLocation {\n controller: number;\n location: number;\n sequence: number;\n}\n\nexport class CardQuery_Counter {\n type: number;\n count: number;\n}\n\nexport class CardQuery {\n flags: number = 0;\n empty?: boolean;\n\n // QUERY_CODE (1)\n code?: number;\n\n // QUERY_POSITION (2)\n position?: number;\n\n // QUERY_ALIAS (4)\n alias?: number;\n\n // QUERY_TYPE (8)\n type?: number;\n\n // QUERY_LEVEL (16)\n level?: number;\n\n // QUERY_RANK (32)\n rank?: number;\n\n // QUERY_ATTRIBUTE (64)\n attribute?: number;\n\n // QUERY_RACE (128)\n race?: number;\n\n // QUERY_ATTACK (256)\n attack?: number;\n\n // QUERY_DEFENSE (512)\n defense?: number;\n\n // QUERY_BASE_ATTACK (1024)\n baseAttack?: number;\n\n // QUERY_BASE_DEFENSE (2048)\n baseDefense?: number;\n\n // QUERY_REASON (4096)\n reason?: number;\n\n // QUERY_EQUIP_CARD (16384)\n equipCard?: CardQuery_CardLocation;\n\n // QUERY_TARGET_CARD (32768)\n targetCards?: CardQuery_CardLocation[];\n\n // QUERY_OVERLAY_CARD (65536)\n overlayCards?: number[];\n\n // QUERY_COUNTERS (131072)\n counters?: CardQuery_Counter[];\n\n // QUERY_OWNER (262144)\n owner?: number;\n\n // QUERY_STATUS (524288)\n status?: number;\n\n // QUERY_LSCALE (2097152)\n lscale?: number;\n\n // QUERY_RSCALE (4194304)\n rscale?: number;\n\n // QUERY_LINK (8388608)\n link?: number;\n linkMarker?: number;\n\n fromPayload(data: Uint8Array): this {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n let offset = 0;\n\n // \u8BFB\u53D6 flags\n this.flags = view.getInt32(offset, true) >>> 0;\n offset += 4;\n\n if (this.flags === 0) {\n this.empty = true;\n return this;\n }\n\n this.empty = false;\n\n // \u6309\u987A\u5E8F\u68C0\u67E5\u6BCF\u4E2A\u67E5\u8BE2\u6807\u5FD7\n if (this.flags & OcgcoreCommonConstants.QUERY_CODE) {\n this.code = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_POSITION) {\n const pdata = view.getInt32(offset, true);\n this.position = ((pdata >>> 24) & 0xff) >>> 0;\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_ALIAS) {\n this.alias = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_TYPE) {\n this.type = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_LEVEL) {\n this.level = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_RANK) {\n this.rank = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_ATTRIBUTE) {\n this.attribute = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_RACE) {\n this.race = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_ATTACK) {\n this.attack = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_DEFENSE) {\n this.defense = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_BASE_ATTACK) {\n this.baseAttack = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_BASE_DEFENSE) {\n this.baseDefense = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_REASON) {\n this.reason = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_REASON_CARD) {\n // \u8DF3\u8FC7 4 \u5B57\u8282\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_EQUIP_CARD) {\n this.equipCard = {\n controller: view.getUint8(offset),\n location: view.getUint8(offset + 1),\n sequence: view.getUint8(offset + 2),\n };\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_TARGET_CARD) {\n const count = view.getInt32(offset, true);\n offset += 4;\n this.targetCards = [];\n for (let i = 0; i < count; i++) {\n this.targetCards.push({\n controller: view.getUint8(offset),\n location: view.getUint8(offset + 1),\n sequence: view.getUint8(offset + 2),\n });\n offset += 4;\n }\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_OVERLAY_CARD) {\n const count = view.getInt32(offset, true);\n offset += 4;\n this.overlayCards = [];\n for (let i = 0; i < count; i++) {\n this.overlayCards.push(view.getInt32(offset, true));\n offset += 4;\n }\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_COUNTERS) {\n const count = view.getInt32(offset, true);\n offset += 4;\n this.counters = [];\n for (let i = 0; i < count; i++) {\n this.counters.push({\n type: view.getUint16(offset, true),\n count: view.getUint16(offset + 2, true),\n });\n offset += 4;\n }\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_OWNER) {\n this.owner = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_STATUS) {\n this.status = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_LSCALE) {\n this.lscale = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_RSCALE) {\n this.rscale = view.getInt32(offset, true);\n offset += 4;\n }\n\n if (this.flags & OcgcoreCommonConstants.QUERY_LINK) {\n this.link = view.getInt32(offset, true);\n offset += 4;\n this.linkMarker = view.getInt32(offset, true);\n offset += 4;\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n return serializeCardQuery(this);\n }\n}\n\nexport function serializeCardQuery(card?: Partial<CardQuery>): Uint8Array {\n const source = card || {};\n const flags = source.flags || 0;\n\n // \u8BA1\u7B97\u603B\u5927\u5C0F\n let size = 4; // flags\n\n if (flags & OcgcoreCommonConstants.QUERY_CODE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_POSITION) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_ALIAS) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_TYPE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_LEVEL) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_RANK) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_ATTRIBUTE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_RACE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_ATTACK) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_DEFENSE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_BASE_ATTACK) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_BASE_DEFENSE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_REASON) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_REASON_CARD) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_EQUIP_CARD) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_TARGET_CARD) {\n size += 4 + (source.targetCards?.length || 0) * 4;\n }\n if (flags & OcgcoreCommonConstants.QUERY_OVERLAY_CARD) {\n size += 4 + (source.overlayCards?.length || 0) * 4;\n }\n if (flags & OcgcoreCommonConstants.QUERY_COUNTERS) {\n size += 4 + (source.counters?.length || 0) * 4;\n }\n if (flags & OcgcoreCommonConstants.QUERY_OWNER) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_STATUS) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_LSCALE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_RSCALE) size += 4;\n if (flags & OcgcoreCommonConstants.QUERY_LINK) size += 8;\n\n const result = new Uint8Array(size);\n const view = new DataView(result.buffer);\n let offset = 0;\n\n // \u5199\u5165 flags\n view.setInt32(offset, flags, true);\n offset += 4;\n\n if (source.empty || flags === 0) {\n return result;\n }\n\n // \u6309\u987A\u5E8F\u5199\u5165\u5B57\u6BB5\n if (flags & OcgcoreCommonConstants.QUERY_CODE) {\n view.setInt32(offset, source.code || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_POSITION) {\n // \u4F4D\u7F6E\u7F16\u7801\u5728\u9AD8\u5B57\u8282\n const pdata = ((source.position || 0) << 24) >>> 0;\n view.setInt32(offset, pdata, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_ALIAS) {\n view.setInt32(offset, source.alias || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_TYPE) {\n view.setInt32(offset, source.type || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_LEVEL) {\n view.setInt32(offset, source.level || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_RANK) {\n view.setInt32(offset, source.rank || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_ATTRIBUTE) {\n view.setInt32(offset, source.attribute || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_RACE) {\n view.setInt32(offset, source.race || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_ATTACK) {\n view.setInt32(offset, source.attack || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_DEFENSE) {\n view.setInt32(offset, source.defense || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_BASE_ATTACK) {\n view.setInt32(offset, source.baseAttack || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_BASE_DEFENSE) {\n view.setInt32(offset, source.baseDefense || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_REASON) {\n view.setInt32(offset, source.reason || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_REASON_CARD) {\n // QUERY_REASON_CARD \u5199\u5165 0\n view.setInt32(offset, 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_EQUIP_CARD) {\n const equipCard = source.equipCard || {\n controller: 0,\n location: 0,\n sequence: 0,\n };\n view.setUint8(offset, equipCard.controller);\n view.setUint8(offset + 1, equipCard.location);\n view.setUint8(offset + 2, equipCard.sequence);\n view.setUint8(offset + 3, 0);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_TARGET_CARD) {\n const targets = source.targetCards || [];\n view.setInt32(offset, targets.length, true);\n offset += 4;\n for (const target of targets) {\n view.setUint8(offset, target.controller);\n view.setUint8(offset + 1, target.location);\n view.setUint8(offset + 2, target.sequence);\n view.setUint8(offset + 3, 0);\n offset += 4;\n }\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_OVERLAY_CARD) {\n const overlays = source.overlayCards || [];\n view.setInt32(offset, overlays.length, true);\n offset += 4;\n for (const card of overlays) {\n view.setInt32(offset, card, true);\n offset += 4;\n }\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_COUNTERS) {\n const counters = source.counters || [];\n view.setInt32(offset, counters.length, true);\n offset += 4;\n for (const counter of counters) {\n view.setUint16(offset, counter.type, true);\n view.setUint16(offset + 2, counter.count, true);\n offset += 4;\n }\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_OWNER) {\n view.setInt32(offset, source.owner || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_STATUS) {\n view.setInt32(offset, source.status || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_LSCALE) {\n view.setInt32(offset, source.lscale || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_RSCALE) {\n view.setInt32(offset, source.rscale || 0, true);\n offset += 4;\n }\n\n if (flags & OcgcoreCommonConstants.QUERY_LINK) {\n view.setInt32(offset, source.link || 0, true);\n offset += 4;\n view.setInt32(offset, source.linkMarker || 0, true);\n offset += 4;\n }\n\n return new Uint8Array(view.buffer, view.byteOffset, offset);\n}\n", "import { PayloadBase } from './payload-base';\n\nexport class YGOProProtoBase extends PayloadBase {\n static messageDirection = '';\n\n get messageDirection() {\n return (this.constructor as typeof YGOProProtoBase).messageDirection;\n }\n\n /**\n * Serialize to full payload including header (length + identifier + body)\n * Format: [length 2 bytes LE][identifier 1 byte][body]\n * Length = 1 (identifier) + body.length\n */\n toFullPayload(): Uint8Array {\n const body = this.toPayload();\n const length = 1 + body.length;\n const fullPayload = new Uint8Array(3 + body.length);\n\n // Write length (2 bytes, little endian)\n fullPayload[0] = length & 0xff;\n fullPayload[1] = (length >> 8) & 0xff;\n\n // Write identifier (1 byte)\n fullPayload[2] = this.identifier;\n\n // Write body\n fullPayload.set(body, 3);\n\n return fullPayload;\n }\n\n /**\n * Deserialize from full payload including header (length + identifier + body)\n * Format: [length 2 bytes LE][identifier 1 byte][body]\n * @param data - Full payload data\n * @returns this instance\n * @throws Error if data is too short or identifier mismatch\n */\n fromFullPayload(data: Uint8Array): this {\n if (data.length < 3) {\n throw new Error(\n `${this.messageDirection} payload too short: expected at least 3 bytes, got ${data.length}`,\n );\n }\n\n // Read length (2 bytes, little endian)\n const declaredLength = data[0] | (data[1] << 8);\n\n // Read identifier (1 byte)\n const identifier = data[2];\n\n // Verify identifier matches\n if (identifier !== this.identifier) {\n throw new Error(\n `${this.messageDirection} identifier mismatch: expected 0x${this.identifier.toString(16)}, got 0x${identifier.toString(16)}`,\n );\n }\n\n // Calculate expected total length (3 bytes header + body)\n const expectedTotalLength = 3 + declaredLength - 1; // -1 because length includes identifier\n\n // Check if data length is less than declared\n if (data.length < expectedTotalLength) {\n throw new Error(\n `${this.messageDirection} payload too short: declared length ${declaredLength} requires ${expectedTotalLength} bytes total, got ${data.length}`,\n );\n }\n\n // Truncate if data is longer than declared\n const bodyData =\n data.length > expectedTotalLength\n ? data.slice(3, expectedTotalLength)\n : data.slice(3);\n\n // Parse body\n return this.fromPayload(bodyData);\n }\n}\n", "import { YGOProProtoBase } from '../../proto-base/ygopro-proto-base';\n\n// CTOS base class only handles the body part\n// Format: [length 2 bytes][identifier 1 byte][body]\n// This class only deals with [body]\nexport class YGOProCtosBase extends YGOProProtoBase {\n static messageDirection = 'CTOS';\n}\n", "import { PayloadBase } from './payload-base';\n\nexport class RegistryBase<C extends typeof PayloadBase> {\n constructor(\n public payloadClass: C,\n private options: {\n identifierOffset?: number;\n dataOffset?: number;\n } = {},\n ) {}\n\n protos = new Map<number, C>();\n\n register(proto: C) {\n const identifier = proto.identifier;\n this.protos.set(identifier, proto);\n }\n\n get(identifier: number): C | undefined {\n return this.protos.get(identifier);\n }\n\n getInstanceFromPayload(data: Uint8Array): InstanceType<C> | undefined {\n const identifier = data[this.options.identifierOffset ?? 0];\n const proto = this.get(identifier);\n if (!proto) {\n return undefined;\n }\n return new proto().fromPayload(\n data.slice(this.options.dataOffset ?? 0),\n ) as InstanceType<C>;\n }\n\n getInstancesFromPayload(data: Uint8Array): InstanceType<C>[] {\n const instances: InstanceType<C>[] = [];\n const identifierOffset = this.options.identifierOffset ?? 0;\n const dataOffset = this.options.dataOffset ?? 0;\n const minLength = Math.max(identifierOffset + 1, dataOffset);\n let remaining = data;\n\n while (remaining.length > 0) {\n // \u5269\u4F59\u6570\u636E\u4E0D\u8DB3\u4EE5\u8BFB\u53D6 identifier/body \u8D77\u59CB\u504F\u79FB\u65F6\u505C\u6B62\n if (remaining.length < minLength) {\n break;\n }\n\n try {\n const instance = this.getInstanceFromPayload(remaining);\n if (!instance) {\n break;\n }\n\n const consumed = dataOffset + instance.toPayload().length;\n if (consumed <= 0 || consumed > remaining.length) {\n break;\n }\n\n instances.push(instance);\n remaining = remaining.slice(consumed);\n } catch {\n break;\n }\n }\n\n return instances;\n }\n}\n", "import { RegistryBase } from './registry-base';\nimport { YGOProProtoBase } from './ygopro-proto-base';\n\n/**\n * Registry for CTOS/STOC style full payloads:\n * [length 2 bytes LE][identifier 1 byte][body]\n */\nexport class ProtoRegistryBase<C extends typeof YGOProProtoBase> extends RegistryBase<C> {\n constructor(payloadClass: C) {\n super(payloadClass, {\n identifierOffset: 2,\n dataOffset: 3,\n });\n }\n\n getInstancesFromPayload(data: Uint8Array): InstanceType<C>[] {\n const instances: InstanceType<C>[] = [];\n let offset = 0;\n\n while (offset + 2 <= data.length) {\n const declaredLength = data[offset] | (data[offset + 1] << 8);\n if (declaredLength <= 0) {\n break;\n }\n\n // declaredLength includes identifier byte, so total = 2-byte length + declaredLength\n const packetLength = 2 + declaredLength;\n if (offset + packetLength > data.length) {\n break;\n }\n\n const chunk = data.slice(offset, offset + packetLength);\n const identifier = chunk[2];\n const proto = this.get(identifier);\n if (!proto) {\n break;\n }\n\n try {\n const instance = new proto().fromFullPayload(chunk) as InstanceType<C>;\n instances.push(instance);\n } catch {\n break;\n }\n\n offset += packetLength;\n }\n\n return instances;\n }\n}\n\n", "import { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosResponse extends YGOProCtosBase {\n static identifier = 0x1;\n\n // byte array - variable length, entire payload\n response: Uint8Array;\n\n fromPayload(data: Uint8Array): this {\n this.response = data;\n return this;\n }\n\n toPayload(): Uint8Array {\n return this.response || new Uint8Array(0);\n }\n}\n", "import YGOProDeck from 'ygopro-deck-encode';\nimport { YGOProCtosBase } from '../base';\n\n// CTOS_UPDATE_DECK uses ygopro-deck-encode\nexport class YGOProCtosUpdateDeck extends YGOProCtosBase {\n static identifier = 0x2;\n\n deck: YGOProDeck;\n\n constructor() {\n super();\n this.deck = new YGOProDeck();\n }\n\n fromPayload(data: Uint8Array): this {\n this.deck = YGOProDeck.fromUpdateDeckPayload(data);\n return this;\n }\n\n toPayload(): Uint8Array {\n return this.deck.toUpdateDeckPayload();\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.deck) {\n // Pass deck data to constructor\n this.deck = new YGOProDeck(data.deck);\n }\n return this;\n }\n\n copy(): this {\n const copied = new (this.constructor as any)();\n copied.deck = new YGOProDeck(this.deck);\n return copied;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\nimport { HandResult } from '../../network-enums';\n\nexport class YGOProCtosHandResult extends YGOProCtosBase {\n static identifier = 0x3;\n\n @BinaryField('u8', 0)\n res: HandResult;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\nimport { TurnPlayerResult } from '../../network-enums';\n\nexport class YGOProCtosTpResult extends YGOProCtosBase {\n static identifier = 0x4;\n\n @BinaryField('u8', 0)\n res: TurnPlayerResult;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosPlayerInfo extends YGOProCtosBase {\n static identifier = 0x10;\n\n @BinaryField('utf16', 0, 20)\n name: string;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { HostInfo } from '../../common';\nimport { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosCreateGame extends YGOProCtosBase {\n static identifier = 0x11;\n\n @BinaryField(() => HostInfo, 0)\n info: HostInfo;\n\n @BinaryField('utf16', 20, 20)\n name: string;\n\n @BinaryField('utf16', 60, 20)\n pass: string;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\n\nexport class YGOProCtosJoinGame extends YGOProCtosBase {\n static identifier = 0x12;\n\n @BinaryField('u16', 0)\n version: number;\n\n // 2 bytes padding\n\n @BinaryField('u32', 4)\n gameid: number;\n\n @BinaryField('utf16', 8, 20)\n pass: string;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_LEAVE_GAME has no data (no body)\nexport class YGOProCtosLeaveGame extends YGOProCtosBase {\n static identifier = 0x13;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_SURRENDER has no data (no body)\nexport class YGOProCtosSurrender extends YGOProCtosBase {\n static identifier = 0x14;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_TIME_CONFIRM has no data (no body)\nexport class YGOProCtosTimeConfirm extends YGOProCtosBase {\n static identifier = 0x15;\n}\n", "import { YGOProCtosBase } from '../base';\n\nconst CTOS_CHAT_MAX_LENGTH = 256;\n\n// CTOS_CHAT: uint16_t array (UTF-16 string)\n// Variable length: sends actual content + null terminator if not full\n// Maximum length: 256 characters (LEN_CHAT_MSG in YGOPro)\n// Client typically limits to 255 characters (setMax(LEN_CHAT_MSG - 1))\nexport class YGOProCtosChat extends YGOProCtosBase {\n static identifier = 0x16;\n static readonly MAX_LENGTH = CTOS_CHAT_MAX_LENGTH;\n\n msg: string;\n\n constructor() {\n super();\n this.msg = '';\n }\n\n fromPayload(data: Uint8Array): this {\n // Decode UTF-16LE from all available bytes\n const decoder = new TextDecoder('utf-16le');\n this.msg = decoder.decode(data).replace(/\\0+$/, ''); // Remove trailing nulls\n return this;\n }\n\n toPayload(): Uint8Array {\n // Truncate message to maximum length (256 characters)\n const text =\n this.msg.length > CTOS_CHAT_MAX_LENGTH\n ? this.msg.substring(0, CTOS_CHAT_MAX_LENGTH)\n : this.msg;\n\n // Convert to UTF-16LE manually\n const utf16 = new Uint16Array(text.length + 1); // +1 for null terminator\n for (let i = 0; i < text.length; i++) {\n utf16[i] = text.charCodeAt(i);\n }\n utf16[text.length] = 0; // Null terminator\n\n // Convert to bytes (little endian)\n const result = new Uint8Array(utf16.buffer);\n return result;\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.msg !== undefined) {\n this.msg = data.msg;\n }\n return this;\n }\n}\n", "import { YGOProCtosBase } from '../base';\n\nconst CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH = 256;\n\n// CTOS_EXTERNAL_ADDRESS\n// uint32_t real_ip; (IPv4 address, BE, always 0 in normal client)\n// uint16_t hostname[256]; (UTF-16 string, variable length)\n// Maximum hostname length: 256 characters (LEN_HOSTNAME in YGOPro)\nexport class YGOProCtosExternalAddress extends YGOProCtosBase {\n static identifier = 0x17;\n static readonly MAX_LENGTH = CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH;\n static readonly MAX_HOSTNAME_LENGTH =\n CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH;\n\n real_ip: string; // IPv4 address as string (e.g., \"127.0.0.1\" or \"::ffff:127.0.0.1\")\n hostname: string;\n\n constructor() {\n super();\n this.real_ip = '0.0.0.0';\n this.hostname = '';\n }\n\n // Convert IPv4 string to uint32 (network byte order / big endian)\n private ipToUint32(ip: string): number {\n // Handle IPv6-mapped IPv4 addresses (::ffff:x.x.x.x)\n let ipv4 = ip;\n if (ip.startsWith('::ffff:')) {\n ipv4 = ip.substring(7);\n }\n\n const parts = ipv4.split('.');\n if (parts.length !== 4) {\n return 0; // Invalid IP, return 0\n }\n\n const bytes = parts.map((p) => parseInt(p, 10));\n if (bytes.some((b) => isNaN(b) || b < 0 || b > 255)) {\n return 0; // Invalid IP, return 0\n }\n\n // Network byte order (big endian)\n return (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];\n }\n\n // Convert uint32 (network byte order / big endian) to IPv4 string\n private uint32ToIp(value: number): string {\n const byte1 = (value >>> 24) & 0xff;\n const byte2 = (value >>> 16) & 0xff;\n const byte3 = (value >>> 8) & 0xff;\n const byte4 = value & 0xff;\n return `${byte1}.${byte2}.${byte3}.${byte4}`;\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 4) {\n throw new Error('CTOS_EXTERNAL_ADDRESS data too short');\n }\n\n // Read real_ip (4 bytes, big endian / network byte order)\n const ipUint32 =\n (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];\n this.real_ip = this.uint32ToIp(ipUint32);\n\n // Decode remaining bytes as UTF-16LE\n if (data.length > 4) {\n const decoder = new TextDecoder('utf-16le');\n this.hostname = decoder.decode(data.slice(4)).replace(/\\0+$/, ''); // Remove trailing nulls\n } else {\n this.hostname = '';\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // Truncate hostname to maximum length (256 characters)\n const text =\n this.hostname.length > CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH\n ? this.hostname.substring(0, CTOS_EXTERNAL_ADDRESS_MAX_HOSTNAME_LENGTH)\n : this.hostname;\n\n // Convert to UTF-16LE manually\n const utf16 = new Uint16Array(text.length + 1); // +1 for null terminator\n for (let i = 0; i < text.length; i++) {\n utf16[i] = text.charCodeAt(i);\n }\n utf16[text.length] = 0; // Null terminator\n\n // Create result buffer: real_ip (4 bytes) + UTF-16LE string\n const result = new Uint8Array(4 + utf16.byteLength);\n\n // Convert real_ip string to uint32 and write (big endian / network byte order)\n const ipUint32 = this.ipToUint32(this.real_ip);\n result[0] = (ipUint32 >>> 24) & 0xff;\n result[1] = (ipUint32 >>> 16) & 0xff;\n result[2] = (ipUint32 >>> 8) & 0xff;\n result[3] = ipUint32 & 0xff;\n\n // Write UTF-16LE string\n result.set(new Uint8Array(utf16.buffer), 4);\n\n return result;\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.real_ip !== undefined) {\n this.real_ip = data.real_ip;\n }\n if (data.hostname !== undefined) {\n this.hostname = data.hostname;\n }\n return this;\n }\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_TODUELIST has no data (no body)\nexport class YGOProCtosHsToDuelist extends YGOProCtosBase {\n static identifier = 0x20;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_TOOBSERVER has no data (no body)\nexport class YGOProCtosHsToObserver extends YGOProCtosBase {\n static identifier = 0x21;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_READY has no data (no body)\nexport class YGOProCtosHsReady extends YGOProCtosBase {\n static identifier = 0x22;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_NOTREADY has no data (no body)\nexport class YGOProCtosHsNotReady extends YGOProCtosBase {\n static identifier = 0x23;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProCtosBase } from '../base';\nimport { NetPlayerType } from '../../network-enums';\n\nexport class YGOProCtosKick extends YGOProCtosBase {\n static identifier = 0x24;\n\n @BinaryField('u8', 0)\n pos: NetPlayerType;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_HS_START has no data (no body)\nexport class YGOProCtosHsStart extends YGOProCtosBase {\n static identifier = 0x25;\n}\n", "import { YGOProCtosBase } from '../base';\n\n// CTOS_REQUEST_FIELD has no data (no body)\nexport class YGOProCtosRequestField extends YGOProCtosBase {\n static identifier = 0x30;\n}\n", "import { ProtoRegistryBase } from '../../proto-base/proto-registry-base';\nimport { YGOProCtosBase } from './base';\nimport {\n YGOProCtosResponse,\n YGOProCtosUpdateDeck,\n YGOProCtosHandResult,\n YGOProCtosTpResult,\n YGOProCtosPlayerInfo,\n YGOProCtosCreateGame,\n YGOProCtosJoinGame,\n YGOProCtosLeaveGame,\n YGOProCtosSurrender,\n YGOProCtosTimeConfirm,\n YGOProCtosChat,\n YGOProCtosExternalAddress,\n YGOProCtosHsToDuelist,\n YGOProCtosHsToObserver,\n YGOProCtosHsReady,\n YGOProCtosHsNotReady,\n YGOProCtosKick,\n YGOProCtosHsStart,\n YGOProCtosRequestField,\n} from './proto';\n\nexport const YGOProCtos = new ProtoRegistryBase(YGOProCtosBase);\n\nYGOProCtos.register(YGOProCtosResponse);\nYGOProCtos.register(YGOProCtosUpdateDeck);\nYGOProCtos.register(YGOProCtosHandResult);\nYGOProCtos.register(YGOProCtosTpResult);\nYGOProCtos.register(YGOProCtosPlayerInfo);\nYGOProCtos.register(YGOProCtosCreateGame);\nYGOProCtos.register(YGOProCtosJoinGame);\nYGOProCtos.register(YGOProCtosLeaveGame);\nYGOProCtos.register(YGOProCtosSurrender);\nYGOProCtos.register(YGOProCtosTimeConfirm);\nYGOProCtos.register(YGOProCtosChat);\nYGOProCtos.register(YGOProCtosExternalAddress);\nYGOProCtos.register(YGOProCtosHsToDuelist);\nYGOProCtos.register(YGOProCtosHsToObserver);\nYGOProCtos.register(YGOProCtosHsReady);\nYGOProCtos.register(YGOProCtosHsNotReady);\nYGOProCtos.register(YGOProCtosKick);\nYGOProCtos.register(YGOProCtosHsStart);\nYGOProCtos.register(YGOProCtosRequestField);\n", "import { YGOProProtoBase } from '../../proto-base/ygopro-proto-base';\n\n// STOC base class only handles the body part\n// Format: [length 2 bytes][identifier 1 byte][body]\n// This class only deals with [body]\nexport class YGOProStocBase extends YGOProProtoBase {\n static messageDirection = 'STOC';\n}\n", "/**\n * Network protocol enums\n * These enums are derived from gframe/network.h\n */\n\n/**\n * Hand result (rock-paper-scissors)\n */\nexport enum HandResult {\n ROCK = 1,\n SCISSORS = 2,\n PAPER = 3,\n}\n\n/**\n * Turn player result (first/second)\n */\nexport enum TurnPlayerResult {\n SECOND = 0,\n FIRST = 1,\n}\n\n/**\n * Player type / position\n */\nexport enum NetPlayerType {\n PLAYER1 = 0,\n PLAYER2 = 1,\n PLAYER3 = 2,\n PLAYER4 = 3,\n PLAYER5 = 4,\n PLAYER6 = 5,\n OBSERVER = 7,\n}\n\n/**\n * Chat message colors (used in STOC_Chat.player_type)\n */\nexport enum ChatColor {\n LIGHTBLUE = 8,\n RED = 11,\n GREEN = 12,\n BLUE = 13,\n BABYBLUE = 14,\n PINK = 15,\n YELLOW = 16,\n WHITE = 17,\n GRAY = 18,\n DARKGRAY = 19,\n}\n\n/**\n * Game mode\n */\nexport enum GameMode {\n SINGLE = 0,\n MATCH = 1,\n TAG = 2,\n}\n\n/**\n * Error message type\n */\nexport enum ErrorMessageType {\n JOINERROR = 1,\n DECKERROR = 2,\n SIDEERROR = 3,\n VERERROR = 4,\n}\n\n/**\n * Deck error type (used in high 4 bits of error code)\n */\nexport enum DeckErrorType {\n LFLIST = 1,\n OCGONLY = 2,\n TCGONLY = 3,\n UNKNOWNCARD = 4,\n CARDCOUNT = 5,\n MAINCOUNT = 6,\n EXTRACOUNT = 7,\n SIDECOUNT = 8,\n NOTAVAIL = 9,\n}\n\n/**\n * Player change state\n */\nexport enum PlayerChangeState {\n OBSERVE = 8,\n READY = 9,\n NOTREADY = 10,\n LEAVE = 11,\n}\n\n/**\n * Room status (SRVPro)\n */\nexport enum RoomStatus {\n WAITING = 0,\n DUELING = 1,\n SIDING = 2,\n}\n", "import { PayloadBase } from '../../proto-base/payload-base';\nimport { NetPlayerType } from '../network-enums';\nimport {\n RequireQueryCardLocation,\n RequireQueryLocation,\n} from './query-location';\n\n// \u5E38\u7528\u7684\u53D1\u9001\u76EE\u6807\u5E38\u91CF\nexport const SEND_TO_PLAYERS: number[] = [0, 1];\nexport const SEND_TO_ALL: number[] = [0, 1, NetPlayerType.OBSERVER];\n\nexport class YGOProMsgBase extends PayloadBase {\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n // \u4ECE\u7B2C\u4E8C\u4E2A\u5B57\u8282\u5F00\u59CB\u89E3\u6790\n return super.fromPayload(data.slice(1));\n }\n\n toPayload(): Uint8Array {\n const payload = super.toPayload();\n const result = new Uint8Array(1 + payload.length);\n result[0] = this.identifier;\n result.set(payload, 1);\n return result;\n }\n\n opponentView(): this {\n return this.copy();\n }\n\n teammateView(): this {\n return this.copy();\n }\n\n observerView(): this {\n return this.opponentView();\n }\n\n playerView(playerId: number): this {\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (typeof this['player'] === 'number') {\n const selfPlayerId = this['player'];\n if (selfPlayerId === playerId) {\n return this.copy();\n }\n return this.opponentView();\n }\n return this.copy();\n }\n\n getSendTargets(): number[] {\n return SEND_TO_ALL;\n }\n\n getRequireRefreshZones(): RequireQueryLocation[] {\n return [];\n }\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgAddCounter extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_ADD_COUNTER;\n\n @BinaryField('u16', 0)\n counterType: number;\n\n @BinaryField('u8', 2)\n controller: number;\n\n @BinaryField('u8', 3)\n location: number;\n\n @BinaryField('u8', 4)\n sequence: number;\n\n @BinaryField('u16', 5)\n count: number;\n}\n", "import { YGOProMsgBase } from './base';\n\nexport class YGOProMsgResponseBase extends YGOProMsgBase {\n defaultResponse(): Uint8Array | undefined {\n return undefined;\n }\n\n responsePlayer(): number {\n return 0;\n }\n\n getSendTargets(): number[] {\n return [this.responsePlayer()];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgAnnounceAttrib extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_ATTRIB;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u32', 2)\n availableAttributes: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(attributes: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, attributes, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgAnnounceCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n opcodes: number[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(cardCode: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, cardCode, true);\n return buffer;\n }\n}\n", "const INDEX_RESPONSE_SYMBOL = Symbol('IndexResponse');\n\nexport interface IndexResponseObject {\n [INDEX_RESPONSE_SYMBOL]: true;\n index: number;\n}\n\nexport const IndexResponse = (index: number): IndexResponseObject => ({\n [INDEX_RESPONSE_SYMBOL]: true,\n index,\n});\n\nexport const isIndexResponse = (obj: any): obj is IndexResponseObject => {\n return obj != null && obj[INDEX_RESPONSE_SYMBOL] === true;\n};\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgAnnounceNumber extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_NUMBER;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n numbers: number[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(option: IndexResponseObject | number) {\n let index: number;\n\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.numbers.indexOf(option);\n if (index === -1) {\n throw new TypeError(`Number not found: ${option}`);\n }\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, index, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgAnnounceRace extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ANNOUNCE_RACE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u32', 2)\n availableRaces: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(races: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, races, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgAttack_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgAttack extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_ATTACK;\n\n @BinaryField(() => YGOProMsgAttack_CardLocation, 0)\n attacker: YGOProMsgAttack_CardLocation;\n\n @BinaryField(() => YGOProMsgAttack_CardLocation, 4)\n defender: YGOProMsgAttack_CardLocation;\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgAttackDisabled extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_ATTACK_DISABLED;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgBattle_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgBattle_CardStats {\n @BinaryField(() => YGOProMsgBattle_CardLocation, 0)\n location: YGOProMsgBattle_CardLocation;\n\n @BinaryField('i32', 4)\n atk: number;\n\n @BinaryField('i32', 8)\n def: number;\n}\n\nexport class YGOProMsgBattle extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_BATTLE;\n\n @BinaryField(() => YGOProMsgBattle_CardStats, 0)\n attacker: YGOProMsgBattle_CardStats;\n\n @BinaryField(() => YGOProMsgBattle_CardStats, 12)\n defender: YGOProMsgBattle_CardStats;\n\n @BinaryField('u8', 24)\n battleDamageCalc: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgBecomeTarget extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_BECOME_TARGET;\n\n @BinaryField('u8', 0)\n count: number;\n\n @BinaryField('i32', 1, (obj) => obj.count)\n targets: number[];\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgCancelTarget_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgCancelTarget extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CANCEL_TARGET;\n\n @BinaryField(() => YGOProMsgCancelTarget_CardLocation, 0)\n card1: YGOProMsgCancelTarget_CardLocation;\n\n @BinaryField(() => YGOProMsgCancelTarget_CardLocation, 3)\n card2: YGOProMsgCancelTarget_CardLocation;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgCardHint extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CARD_HINT;\n\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n subsequence: number;\n\n @BinaryField('u8', 4)\n type: number;\n\n @BinaryField('i32', 5)\n value: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgCardTarget_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgCardTarget extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CARD_TARGET;\n\n @BinaryField(() => YGOProMsgCardTarget_CardLocation, 0)\n card1: YGOProMsgCardTarget_CardLocation;\n\n @BinaryField(() => YGOProMsgCardTarget_CardLocation, 3)\n card2: YGOProMsgCardTarget_CardLocation;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainDisabled extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_DISABLED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n}\n", "// Generated from /home/nanahira/ygo/ygopro/script/constant.lua\nexport const OcgcoreScriptConstants = {\n ACTIVITY_ATTACK: 5,\n ACTIVITY_BATTLE_PHASE: 6,\n ACTIVITY_CHAIN: 7,\n ACTIVITY_FLIPSUMMON: 4,\n ACTIVITY_NORMALSUMMON: 2,\n ACTIVITY_SPSUMMON: 3,\n ACTIVITY_SUMMON: 1,\n ASSUME_ATTACK: 7,\n ASSUME_ATTRIBUTE: 5,\n ASSUME_CODE: 1,\n ASSUME_DEFENSE: 8,\n ASSUME_LEVEL: 3,\n ASSUME_RACE: 6,\n ASSUME_RANK: 4,\n ASSUME_TYPE: 2,\n ATTRIBUTE_ALL: 127,\n ATTRIBUTE_DARK: 32,\n ATTRIBUTE_DIVINE: 64,\n ATTRIBUTE_EARTH: 1,\n ATTRIBUTE_FIRE: 4,\n ATTRIBUTE_LIGHT: 16,\n ATTRIBUTE_WATER: 2,\n ATTRIBUTE_WIND: 8,\n CARD_MARINE_DOLPHIN: 78734254,\n CARD_QUESTION: 38723936,\n CARD_TWINKLE_MOSS: 13857930,\n CATEGORY_ANNOUNCE: 536870912,\n CATEGORY_ATKCHANGE: 2097152,\n CATEGORY_COIN: 16777216,\n CATEGORY_CONTROL: 8192,\n CATEGORY_COUNTER: 8388608,\n CATEGORY_DAMAGE: 524288,\n CATEGORY_DECKDES: 64,\n CATEGORY_DEFCHANGE: 4194304,\n CATEGORY_DESTROY: 1,\n CATEGORY_DICE: 33554432,\n CATEGORY_DISABLE: 16384,\n CATEGORY_DISABLE_SUMMON: 32768,\n CATEGORY_DRAW: 65536,\n CATEGORY_EQUIP: 262144,\n CATEGORY_FUSION_SUMMON: 1073741824,\n CATEGORY_GRAVE_ACTION: 2048,\n CATEGORY_GRAVE_SPSUMMON: 134217728,\n CATEGORY_HANDES: 128,\n CATEGORY_LEAVE_GRAVE: 67108864,\n CATEGORY_NEGATE: 268435456,\n CATEGORY_POSITION: 4096,\n CATEGORY_RECOVER: 1048576,\n CATEGORY_RELEASE: 2,\n CATEGORY_REMOVE: 4,\n CATEGORY_SEARCH: 131072,\n CATEGORY_SPECIAL_SUMMON: 512,\n CATEGORY_SUMMON: 256,\n CATEGORY_TODECK: 16,\n CATEGORY_TOEXTRA: 2147483648,\n CATEGORY_TOGRAVE: 32,\n CATEGORY_TOHAND: 8,\n CATEGORY_TOKEN: 1024,\n CHAININFO_CHAIN_COUNT: 1,\n CHAININFO_CHAIN_ID: 2048,\n CHAININFO_DISABLE_PLAYER: 1024,\n CHAININFO_DISABLE_REASON: 512,\n CHAININFO_EXTTYPE: 8192,\n CHAININFO_TARGET_CARDS: 64,\n CHAININFO_TARGET_PARAM: 256,\n CHAININFO_TARGET_PLAYER: 128,\n CHAININFO_TRIGGERING_ATTACK: 4194304,\n CHAININFO_TRIGGERING_ATTRIBUTE: 1048576,\n CHAININFO_TRIGGERING_CODE: 32768,\n CHAININFO_TRIGGERING_CODE2: 65536,\n CHAININFO_TRIGGERING_CONTROLER: 8,\n CHAININFO_TRIGGERING_DEFENSE: 8388608,\n CHAININFO_TRIGGERING_EFFECT: 2,\n CHAININFO_TRIGGERING_LEVEL: 262144,\n CHAININFO_TRIGGERING_LOCATION: 16,\n CHAININFO_TRIGGERING_PLAYER: 4,\n CHAININFO_TRIGGERING_POSITION: 16384,\n CHAININFO_TRIGGERING_RACE: 2097152,\n CHAININFO_TRIGGERING_RANK: 524288,\n CHAININFO_TRIGGERING_SEQUENCE: 32,\n CHAININFO_TYPE: 4096,\n CHINT_ATTRIBUTE: 4,\n CHINT_CARD: 2,\n CHINT_DESC: 6,\n CHINT_NUMBER: 5,\n CHINT_RACE: 3,\n CHINT_TURN: 1,\n COUNTER_NEED_ENABLE: 8192,\n COUNTER_WITHOUT_PERMIT: 4096,\n DUEL_ATTACK_FIRST_TURN: 2,\n DUEL_OBSOLETE_RULING: 8,\n DUEL_OLD_REPLAY: 4,\n DUEL_PSEUDO_SHUFFLE: 16,\n DUEL_RETURN_DECK_TOP: 128,\n DUEL_REVEAL_DECK_SEQ: 256,\n DUEL_SIMPLE_AI: 64,\n DUEL_TAG_MODE: 32,\n DUEL_TEST_MODE: 1,\n EFFECT_ACTIVATE_COST: 90,\n EFFECT_ACTIVATION_COUNT_LIMIT: 367,\n EFFECT_ADD_ATTRIBUTE: 125,\n EFFECT_ADD_CODE: 113,\n EFFECT_ADD_EXTRA_TRIBUTE: 157,\n EFFECT_ADD_FUSION_ATTRIBUTE: 349,\n EFFECT_ADD_FUSION_CODE: 340,\n EFFECT_ADD_FUSION_SETCODE: 341,\n EFFECT_ADD_LINK_ATTRIBUTE: 356,\n EFFECT_ADD_LINK_CODE: 354,\n EFFECT_ADD_LINK_RACE: 357,\n EFFECT_ADD_LINK_SETCODE: 355,\n EFFECT_ADD_RACE: 120,\n EFFECT_ADD_SETCODE: 334,\n EFFECT_ADD_TYPE: 115,\n EFFECT_ALSO_BATTLE_DAMAGE: 207,\n EFFECT_ATTACK_ALL: 193,\n EFFECT_ATTACK_COST: 96,\n EFFECT_ATTACK_DISABLED: 197,\n EFFECT_AVOID_BATTLE_DAMAGE: 201,\n EFFECT_BATTLE_DAMAGE_TO_EFFECT: 205,\n EFFECT_BATTLE_DESTROY_REDIRECT: 204,\n EFFECT_BOTH_BATTLE_DAMAGE: 206,\n EFFECT_BP_TWICE: 296,\n EFFECT_CANNOT_ACTIVATE: 6,\n EFFECT_CANNOT_ATTACK: 85,\n EFFECT_CANNOT_ATTACK_ANNOUNCE: 86,\n EFFECT_CANNOT_BE_BATTLE_TARGET: 70,\n EFFECT_CANNOT_BE_EFFECT_TARGET: 71,\n EFFECT_CANNOT_BP: 185,\n EFFECT_CANNOT_CHANGE_CONTROL: 5,\n EFFECT_CANNOT_CHANGE_POSITION: 14,\n EFFECT_CANNOT_CHANGE_POS_E: 87,\n EFFECT_CANNOT_DIRECT_ATTACK: 73,\n EFFECT_CANNOT_DISABLE: 3,\n EFFECT_CANNOT_DISABLE_FLIP_SUMMON: 39,\n EFFECT_CANNOT_DISABLE_SPSUMMON: 27,\n EFFECT_CANNOT_DISABLE_SUMMON: 26,\n EFFECT_CANNOT_DISCARD_DECK: 56,\n EFFECT_CANNOT_DISCARD_HAND: 55,\n EFFECT_CANNOT_DISEFFECT: 13,\n EFFECT_CANNOT_DRAW: 25,\n EFFECT_CANNOT_EP: 187,\n EFFECT_CANNOT_FLIP_SUMMON: 21,\n EFFECT_CANNOT_INACTIVATE: 12,\n EFFECT_CANNOT_M2: 186,\n EFFECT_CANNOT_MSET: 23,\n EFFECT_CANNOT_PLACE_COUNTER: 58,\n EFFECT_CANNOT_RELEASE: 46,\n EFFECT_CANNOT_REMOVE: 67,\n EFFECT_CANNOT_SELECT_BATTLE_TARGET: 332,\n EFFECT_CANNOT_SELECT_EFFECT_TARGET: 333,\n EFFECT_CANNOT_SPECIAL_SUMMON: 22,\n EFFECT_CANNOT_SSET: 24,\n EFFECT_CANNOT_SUMMON: 20,\n EFFECT_CANNOT_TO_DECK: 66,\n EFFECT_CANNOT_TO_GRAVE: 68,\n EFFECT_CANNOT_TO_GRAVE_AS_COST: 59,\n EFFECT_CANNOT_TO_HAND: 65,\n EFFECT_CANNOT_TRIGGER: 7,\n EFFECT_CANNOT_TURN_SET: 69,\n EFFECT_CANNOT_USE_AS_COST: 57,\n EFFECT_CHAIN_MATERIAL: 231,\n EFFECT_CHANGE_ATTRIBUTE: 127,\n EFFECT_CHANGE_BATTLE_DAMAGE: 208,\n EFFECT_CHANGE_CODE: 114,\n EFFECT_CHANGE_DAMAGE: 82,\n EFFECT_CHANGE_ENVIRONMENT: 290,\n EFFECT_CHANGE_FUSION_ATTRIBUTE: 351,\n EFFECT_CHANGE_GRAVE_ATTRIBUTE: 365,\n EFFECT_CHANGE_GRAVE_RACE: 366,\n EFFECT_CHANGE_INVOLVING_BATTLE_DAMAGE: 314,\n EFFECT_CHANGE_LEVEL: 131,\n EFFECT_CHANGE_LSCALE: 135,\n EFFECT_CHANGE_RACE: 122,\n EFFECT_CHANGE_RANK: 133,\n EFFECT_CHANGE_RANK_FINAL: 315,\n EFFECT_CHANGE_RSCALE: 137,\n EFFECT_CHANGE_TYPE: 117,\n EFFECT_COUNT_CODE_CHAIN: 1073741824,\n EFFECT_COUNT_CODE_DUEL: 536870912,\n EFFECT_COUNT_CODE_OATH: 268435456,\n EFFECT_COUNT_CODE_SINGLE: 1,\n EFFECT_DECREASE_TRIBUTE: 151,\n EFFECT_DECREASE_TRIBUTE_SET: 152,\n EFFECT_DEFENSE_ATTACK: 190,\n EFFECT_DESTROY_REPLACE: 50,\n EFFECT_DESTROY_SUBSTITUTE: 45,\n EFFECT_DIRECT_ATTACK: 74,\n EFFECT_DISABLE: 2,\n EFFECT_DISABLE_CHAIN: 9,\n EFFECT_DISABLE_CHAIN_FIELD: 337,\n EFFECT_DISABLE_EFFECT: 8,\n EFFECT_DISABLE_FIELD: 260,\n EFFECT_DISABLE_TRAPMONSTER: 10,\n EFFECT_DISCARD_COST_CHANGE: 338,\n EFFECT_DIVINE_LIGHT: 38,\n EFFECT_DOUBLE_TRIBUTE: 150,\n EFFECT_DOUBLE_XMATERIAL: 375,\n EFFECT_DRAW_COUNT: 271,\n EFFECT_DUAL_STATUS: 75,\n EFFECT_DUAL_SUMMONABLE: 77,\n EFFECT_EQUIP_LIMIT: 76,\n EFFECT_EXTRA_ATTACK: 194,\n EFFECT_EXTRA_ATTACK_MONSTER: 346,\n EFFECT_EXTRA_FUSION_MATERIAL: 352,\n EFFECT_EXTRA_LINK_MATERIAL: 358,\n EFFECT_EXTRA_PENDULUM_SUMMON: 360,\n EFFECT_EXTRA_RELEASE: 153,\n EFFECT_EXTRA_RELEASE_NONSUM: 158,\n EFFECT_EXTRA_RELEASE_SUM: 155,\n EFFECT_EXTRA_SET_COUNT: 35,\n EFFECT_EXTRA_SUMMON_COUNT: 29,\n EFFECT_EXTRA_SYNCHRO_MATERIAL: 232,\n EFFECT_FIRST_ATTACK: 192,\n EFFECT_FLAG2_COF: 2,\n EFFECT_FLAG2_OPTION: 8,\n EFFECT_FLAG2_REPEAT_UPDATE: 1,\n EFFECT_FLAG2_WICKED: 4,\n EFFECT_FLAG_ABSOLUTE_TARGET: 64,\n EFFECT_FLAG_ACTIVATE_CONDITION: 536870912,\n EFFECT_FLAG_BOTH_SIDE: 4096,\n EFFECT_FLAG_CANNOT_DISABLE: 1024,\n EFFECT_FLAG_CANNOT_INACTIVATE: 33554432,\n EFFECT_FLAG_CAN_FORBIDDEN: 512,\n EFFECT_FLAG_CARD_TARGET: 16,\n EFFECT_FLAG_CLIENT_HINT: 67108864,\n EFFECT_FLAG_COIN: 4294967296,\n EFFECT_FLAG_CONTINUOUS_TARGET: 134217728,\n EFFECT_FLAG_COPY: 8192,\n EFFECT_FLAG_COUNT_LIMIT: 4,\n EFFECT_FLAG_CVAL_CHECK: 1073741824,\n EFFECT_FLAG_DAMAGE_CAL: 32768,\n EFFECT_FLAG_DAMAGE_STEP: 16384,\n EFFECT_FLAG_DELAY: 65536,\n EFFECT_FLAG_DICE: 8589934592,\n EFFECT_FLAG_EFFECT: 536870912,\n EFFECT_FLAG_EVENT_PLAYER: 8388608,\n EFFECT_FLAG_FIELD_ONLY: 8,\n EFFECT_FLAG_FUNC_VALUE: 2,\n EFFECT_FLAG_FUSION_SUMMON: 17179869184,\n EFFECT_FLAG_IGNORE_IMMUNE: 128,\n EFFECT_FLAG_IGNORE_RANGE: 32,\n EFFECT_FLAG_IMMEDIATELY_APPLY: 2147483648,\n EFFECT_FLAG_INITIAL: 1,\n EFFECT_FLAG_LIMIT_ZONE: 268435456,\n EFFECT_FLAG_NO_TURN_RESET: 4194304,\n EFFECT_FLAG_OATH: 524288,\n EFFECT_FLAG_OWNER_RELATE: 16777216,\n EFFECT_FLAG_PLAYER_TARGET: 2048,\n EFFECT_FLAG_REPEAT: 2097152,\n EFFECT_FLAG_SET_AVAILABLE: 256,\n EFFECT_FLAG_SINGLE_RANGE: 131072,\n EFFECT_FLAG_SPSUM_PARAM: 1048576,\n EFFECT_FLAG_UNCOPYABLE: 262144,\n EFFECT_FLIPSUMMON_COST: 93,\n EFFECT_FORBIDDEN: 292,\n EFFECT_FUSION_MATERIAL: 230,\n EFFECT_FUSION_SUBSTITUTE: 234,\n EFFECT_HAND_LIMIT: 270,\n EFFECT_HAND_SYNCHRO: 339,\n EFFECT_IGNORE_BATTLE_TARGET: 72,\n EFFECT_IMMUNE_EFFECT: 1,\n EFFECT_INDESTRUCTABLE: 40,\n EFFECT_INDESTRUCTABLE_BATTLE: 42,\n EFFECT_INDESTRUCTABLE_COUNT: 47,\n EFFECT_INDESTRUCTABLE_EFFECT: 41,\n EFFECT_KAISER_COLOSSEUM: 370,\n EFFECT_LEAVE_FIELD_REDIRECT: 60,\n EFFECT_LEFT_SPSUMMON_COUNT: 331,\n EFFECT_LIMIT_SET_PROC: 37,\n EFFECT_LIMIT_SPECIAL_SUMMON_POSITION: 368,\n EFFECT_LIMIT_SUMMON_PROC: 33,\n EFFECT_LPCOST_CHANGE: 170,\n EFFECT_LPCOST_REPLACE: 171,\n EFFECT_MATCH_KILL: 300,\n EFFECT_MATERIAL_CHECK: 251,\n EFFECT_MATERIAL_LIMIT: 361,\n EFFECT_MAX_MZONE: 263,\n EFFECT_MAX_SZONE: 264,\n EFFECT_MONSTER_SSET: 18,\n EFFECT_MSET_COST: 94,\n EFFECT_MUST_ATTACK: 191,\n EFFECT_MUST_ATTACK_MONSTER: 344,\n EFFECT_MUST_BE_ATTACKED: 195,\n EFFECT_MUST_BE_FMATERIAL: 316,\n EFFECT_MUST_BE_LMATERIAL: 318,\n EFFECT_MUST_BE_SMATERIAL: 312,\n EFFECT_MUST_BE_XMATERIAL: 317,\n EFFECT_MUST_USE_MZONE: 265,\n EFFECT_NECRO_VALLEY: 291,\n EFFECT_NECRO_VALLEY_IM: 293,\n EFFECT_NO_BATTLE_DAMAGE: 200,\n EFFECT_NO_EFFECT_DAMAGE: 335,\n EFFECT_OLDUNION_STATUS: 348,\n EFFECT_ONLY_ATTACK_MONSTER: 343,\n EFFECT_ONLY_BE_ATTACKED: 196,\n EFFECT_OVERLAY_RITUAL_MATERIAL: 364,\n EFFECT_PATRICIAN_OF_DARKNESS: 345,\n EFFECT_PIERCE: 203,\n EFFECT_PRE_MONSTER: 250,\n EFFECT_PUBLIC: 160,\n EFFECT_QP_ACT_IN_NTPHAND: 311,\n EFFECT_QP_ACT_IN_SET_TURN: 359,\n EFFECT_REFLECT_BATTLE_DAMAGE: 202,\n EFFECT_REFLECT_DAMAGE: 83,\n EFFECT_RELEASE_REPLACE: 51,\n EFFECT_REMAIN_FIELD: 17,\n EFFECT_REMOVE_ATTRIBUTE: 126,\n EFFECT_REMOVE_BRAINWASHING: 295,\n EFFECT_REMOVE_FUSION_ATTRIBUTE: 350,\n EFFECT_REMOVE_RACE: 121,\n EFFECT_REMOVE_REDIRECT: 64,\n EFFECT_REMOVE_TYPE: 116,\n EFFECT_REPLACE_DAMAGE: 371,\n EFFECT_REVERSE_DAMAGE: 80,\n EFFECT_REVERSE_DECK: 294,\n EFFECT_REVERSE_RECOVER: 81,\n EFFECT_REVERSE_UPDATE: 108,\n EFFECT_REVIVE_LIMIT: 31,\n EFFECT_RISE_TO_FULL_HEIGHT: 342,\n EFFECT_RITUAL_LEVEL_EX: 374,\n EFFECT_SELF_DESTROY: 141,\n EFFECT_SELF_TOGRAVE: 142,\n EFFECT_SEND_REPLACE: 52,\n EFFECT_SET_ATTACK: 101,\n EFFECT_SET_ATTACK_FINAL: 102,\n EFFECT_SET_BASE_ATTACK: 103,\n EFFECT_SET_BASE_ATTACK_FINAL: 111,\n EFFECT_SET_BASE_DEFENSE: 107,\n EFFECT_SET_BASE_DEFENSE_FINAL: 112,\n EFFECT_SET_BATTLE_ATTACK: 362,\n EFFECT_SET_BATTLE_DEFENSE: 363,\n EFFECT_SET_CONTROL: 4,\n EFFECT_SET_DEFENSE: 105,\n EFFECT_SET_DEFENSE_FINAL: 106,\n EFFECT_SET_POSITION: 140,\n EFFECT_SET_PROC: 36,\n EFFECT_SET_SUMMON_COUNT_LIMIT: 28,\n EFFECT_SKIP_BP: 183,\n EFFECT_SKIP_DP: 180,\n EFFECT_SKIP_M1: 182,\n EFFECT_SKIP_M2: 184,\n EFFECT_SKIP_SP: 181,\n EFFECT_SKIP_TURN: 188,\n EFFECT_SPIRIT_DONOT_RETURN: 280,\n EFFECT_SPIRIT_MAYNOT_RETURN: 281,\n EFFECT_SPSUMMON_CONDITION: 30,\n EFFECT_SPSUMMON_COST: 92,\n EFFECT_SPSUMMON_COUNT_LIMIT: 330,\n EFFECT_SPSUMMON_PROC: 34,\n EFFECT_SPSUMMON_PROC_G: 320,\n EFFECT_SSET_COST: 95,\n EFFECT_SUMMON_COST: 91,\n EFFECT_SUMMON_PROC: 32,\n EFFECT_SWAP_AD: 109,\n EFFECT_SWAP_BASE_AD: 110,\n EFFECT_SYNCHRO_CHECK: 310,\n EFFECT_SYNCHRO_LEVEL_EX: 373,\n EFFECT_TOSS_COIN_REPLACE: 220,\n EFFECT_TOSS_DICE_REPLACE: 221,\n EFFECT_TO_DECK_REDIRECT: 62,\n EFFECT_TO_GRAVE_REDIRECT: 63,\n EFFECT_TO_GRAVE_REDIRECT_CB: 313,\n EFFECT_TO_HAND_REDIRECT: 61,\n EFFECT_TRAP_ACT_IN_HAND: 15,\n EFFECT_TRAP_ACT_IN_SET_TURN: 16,\n EFFECT_TRIBUTE_LIMIT: 154,\n EFFECT_TRIPLE_TRIBUTE: 156,\n EFFECT_TUNER: 369,\n EFFECT_TUNER_MATERIAL_LIMIT: 353,\n EFFECT_TYPE_ACTIONS: 8,\n EFFECT_TYPE_ACTIVATE: 16,\n EFFECT_TYPE_CONTINUOUS: 2048,\n EFFECT_TYPE_EQUIP: 4,\n EFFECT_TYPE_FIELD: 2,\n EFFECT_TYPE_FLIP: 32,\n EFFECT_TYPE_GRANT: 8192,\n EFFECT_TYPE_IGNITION: 64,\n EFFECT_TYPE_QUICK_F: 1024,\n EFFECT_TYPE_QUICK_O: 256,\n EFFECT_TYPE_SINGLE: 1,\n EFFECT_TYPE_TARGET: 16384,\n EFFECT_TYPE_TRIGGER_F: 512,\n EFFECT_TYPE_TRIGGER_O: 128,\n EFFECT_TYPE_XMATERIAL: 4096,\n EFFECT_UNION_LIMIT: 78,\n EFFECT_UNION_STATUS: 347,\n EFFECT_UNIQUE_CHECK: 297,\n EFFECT_UNRELEASABLE_EFFECT: 48,\n EFFECT_UNRELEASABLE_NONSUM: 44,\n EFFECT_UNRELEASABLE_SUM: 43,\n EFFECT_UNSUMMONABLE_CARD: 336,\n EFFECT_UPDATE_ATTACK: 100,\n EFFECT_UPDATE_DEFENSE: 104,\n EFFECT_UPDATE_LEVEL: 130,\n EFFECT_UPDATE_LSCALE: 134,\n EFFECT_UPDATE_RANK: 132,\n EFFECT_UPDATE_RSCALE: 136,\n EFFECT_USE_EXTRA_MZONE: 261,\n EFFECT_USE_EXTRA_SZONE: 262,\n EFFECT_XYZ_MATERIAL: 233,\n EFFECT_XYZ_MIN_COUNT: 372,\n EVENT_ADD_COUNTER: 65536,\n EVENT_ADJUST: 1040,\n EVENT_ATTACK_ANNOUNCE: 1130,\n EVENT_ATTACK_DISABLED: 1142,\n EVENT_BATTLED: 1138,\n EVENT_BATTLE_CONFIRM: 1133,\n EVENT_BATTLE_DAMAGE: 1143,\n EVENT_BATTLE_DESTROYED: 1140,\n EVENT_BATTLE_DESTROYING: 1139,\n EVENT_BATTLE_END: 1137,\n EVENT_BATTLE_START: 1132,\n EVENT_BECOME_TARGET: 1028,\n EVENT_BE_BATTLE_TARGET: 1131,\n EVENT_BE_MATERIAL: 1108,\n EVENT_BE_PRE_MATERIAL: 1109,\n EVENT_BREAK_EFFECT: 1050,\n EVENT_CHAINING: 1027,\n EVENT_CHAIN_ACTIVATED: 1023,\n EVENT_CHAIN_ACTIVATING: 1021,\n EVENT_CHAIN_DISABLED: 1025,\n EVENT_CHAIN_END: 1026,\n EVENT_CHAIN_NEGATED: 1024,\n EVENT_CHAIN_SOLVED: 1022,\n EVENT_CHAIN_SOLVING: 1020,\n EVENT_CHANGE_POS: 1016,\n EVENT_CONTROL_CHANGED: 1120,\n EVENT_CUSTOM: 268435456,\n EVENT_DAMAGE: 1111,\n EVENT_DAMAGE_CALCULATING: 1135,\n EVENT_DAMAGE_STEP_END: 1141,\n EVENT_DESTROY: 1010,\n EVENT_DESTROYED: 1029,\n EVENT_DETACH_MATERIAL: 1202,\n EVENT_DISCARD: 1018,\n EVENT_DRAW: 1110,\n EVENT_EQUIP: 1121,\n EVENT_FLIP: 1001,\n EVENT_FLIP_SUMMON: 1104,\n EVENT_FLIP_SUMMON_NEGATED: 1115,\n EVENT_FLIP_SUMMON_SUCCESS: 1101,\n EVENT_FREE_CHAIN: 1002,\n EVENT_LEAVE_DECK: 1032,\n EVENT_LEAVE_FIELD: 1015,\n EVENT_LEAVE_FIELD_P: 1019,\n EVENT_LEAVE_GRAVE: 1031,\n EVENT_LEVEL_UP: 1200,\n EVENT_MOVE: 1030,\n EVENT_MSET: 1106,\n EVENT_PAY_LPCOST: 1201,\n EVENT_PHASE: 4096,\n EVENT_PHASE_START: 8192,\n EVENT_PREDRAW: 1113,\n EVENT_PRE_BATTLE_DAMAGE: 1136,\n EVENT_PRE_DAMAGE_CALCULATE: 1134,\n EVENT_RECOVER: 1112,\n EVENT_RELEASE: 1017,\n EVENT_REMOVE: 1011,\n EVENT_REMOVE_COUNTER: 131072,\n EVENT_RETURN_TO_GRAVE: 1203,\n EVENT_SPSUMMON: 1105,\n EVENT_SPSUMMON_NEGATED: 1116,\n EVENT_SPSUMMON_SUCCESS: 1102,\n EVENT_SPSUMMON_SUCCESS_G_P: 1117,\n EVENT_SSET: 1107,\n EVENT_STARTUP: 1000,\n EVENT_SUMMON: 1103,\n EVENT_SUMMON_NEGATED: 1114,\n EVENT_SUMMON_SUCCESS: 1100,\n EVENT_TOSS_COIN: 1151,\n EVENT_TOSS_COIN_NEGATE: 1152,\n EVENT_TOSS_DICE: 1150,\n EVENT_TOSS_DICE_NEGATE: 1153,\n EVENT_TO_DECK: 1013,\n EVENT_TO_GRAVE: 1014,\n EVENT_TO_HAND: 1012,\n EVENT_TURN_END: 1210,\n FLAG_ID_ALLURE_QUEEN: 4,\n FLAG_ID_ARCANA_COIN: 5,\n FLAG_ID_CHAINING: 1,\n FLAG_ID_NO_NORMAL_DRAW: 3,\n FLAG_ID_REVERSAL_OF_FATE: 36690018,\n FLAG_ID_UNION: 2,\n GLOBALFLAG_BRAINWASHING_CHECK: 2,\n GLOBALFLAG_DECK_REVERSE_CHECK: 1,\n GLOBALFLAG_DELAYED_QUICKEFFECT: 8,\n GLOBALFLAG_DETACH_EVENT: 16,\n GLOBALFLAG_MUST_BE_SMATERIAL: 32,\n GLOBALFLAG_SCRAP_CHIMERA: 4,\n GLOBALFLAG_SELF_TOGRAVE: 256,\n GLOBALFLAG_SPSUMMON_COUNT: 64,\n GLOBALFLAG_SPSUMMON_ONCE: 512,\n GLOBALFLAG_TUNE_MAGICIAN: 1024,\n GLOBALFLAG_XMAT_COUNT_LIMIT: 128,\n HINGMSG_LVRANK: 567,\n HINGMSG_NUMBER: 565,\n HINTMSG_ATOHAND: 506,\n HINTMSG_ATTACK: 516,\n HINTMSG_ATTACKTARGET: 549,\n HINTMSG_ATTRIBUTE: 562,\n HINTMSG_CARDTYPE: 554,\n HINTMSG_CODE: 564,\n HINTMSG_COIN: 552,\n HINTMSG_CONFIRM: 526,\n HINTMSG_CONTROL: 520,\n HINTMSG_COUNTER: 572,\n HINTMSG_DEATTACHFROM: 532,\n HINTMSG_DEFENSE: 517,\n HINTMSG_DESREPLACE: 521,\n HINTMSG_DESTROY: 502,\n HINTMSG_DICE: 553,\n HINTMSG_DISABLE: 573,\n HINTMSG_DISABLEZONE: 570,\n HINTMSG_DISCARD: 501,\n HINTMSG_EFFECT: 550,\n HINTMSG_EQUIP: 518,\n HINTMSG_FACEDOWN: 515,\n HINTMSG_FACEDOWNATTACK: 524,\n HINTMSG_FACEDOWNDEFENSE: 525,\n HINTMSG_FACEUP: 514,\n HINTMSG_FACEUPATTACK: 522,\n HINTMSG_FACEUPDEFENSE: 523,\n HINTMSG_FIELD_FIRST: 575,\n HINTMSG_FMATERIAL: 511,\n HINTMSG_LMATERIAL: 533,\n HINTMSG_OPERATECARD: 574,\n HINTMSG_OPPO: 530,\n HINTMSG_OPTION: 555,\n HINTMSG_POSCHANGE: 528,\n HINTMSG_POSITION: 561,\n HINTMSG_RACE: 563,\n HINTMSG_RELEASE: 500,\n HINTMSG_REMOVE: 503,\n HINTMSG_REMOVEXYZ: 519,\n HINTMSG_RESOLVECARD: 568,\n HINTMSG_RESOLVEEFFECT: 556,\n HINTMSG_RTOHAND: 505,\n HINTMSG_SELECT: 560,\n HINTMSG_SELF: 529,\n HINTMSG_SET: 510,\n HINTMSG_SMATERIAL: 512,\n HINTMSG_SPSUMMON: 509,\n HINTMSG_SUMMON: 508,\n HINTMSG_TARGET: 551,\n HINTMSG_TODECK: 507,\n HINTMSG_TOFIELD: 527,\n HINTMSG_TOGRAVE: 504,\n HINTMSG_TOZONE: 571,\n HINTMSG_TRIBUTE: 531,\n HINTMSG_XMATERIAL: 513,\n HINTMSG_ZONE: 569,\n HINT_ATTRIB: 7,\n HINT_CARD: 10,\n HINT_CODE: 8,\n HINT_EFFECT: 5,\n HINT_EVENT: 1,\n HINT_MESSAGE: 2,\n HINT_NUMBER: 9,\n HINT_OPSELECTED: 4,\n HINT_RACE: 6,\n HINT_SELECTMSG: 3,\n HINT_ZONE: 11,\n LINK_MARKER_BOTTOM: 2,\n LINK_MARKER_BOTTOM_LEFT: 1,\n LINK_MARKER_BOTTOM_RIGHT: 4,\n LINK_MARKER_LEFT: 8,\n LINK_MARKER_RIGHT: 32,\n LINK_MARKER_TOP: 128,\n LINK_MARKER_TOP_LEFT: 64,\n LINK_MARKER_TOP_RIGHT: 256,\n LOCATION_DECK: 1,\n LOCATION_DECKBOT: 65537,\n LOCATION_DECKSHF: 131073,\n LOCATION_EXTRA: 64,\n LOCATION_FZONE: 256,\n LOCATION_GRAVE: 16,\n LOCATION_HAND: 2,\n LOCATION_MZONE: 4,\n LOCATION_ONFIELD: 12,\n LOCATION_OVERLAY: 128,\n LOCATION_PZONE: 512,\n LOCATION_REASON_CONTROL: 2,\n LOCATION_REASON_TOFIELD: 1,\n LOCATION_REMOVED: 32,\n LOCATION_SZONE: 8,\n MASTER_RULE3: 3,\n MASTER_RULE_2020: 5,\n MAX_COUNTER: 65535,\n MAX_ID: 268435455,\n MAX_PARAMETER: 65535,\n MAX_XYZ_LEVEL: 4095,\n MIN_ID: 128,\n NEW_MASTER_RULE: 4,\n OPCODE_ADD: 1073741824,\n OPCODE_AND: 1073741828,\n OPCODE_DIV: 1073741827,\n OPCODE_ISATTRIBUTE: 1073742084,\n OPCODE_ISCODE: 1073742080,\n OPCODE_ISRACE: 1073742083,\n OPCODE_ISSETCARD: 1073742081,\n OPCODE_ISTYPE: 1073742082,\n OPCODE_MUL: 1073741826,\n OPCODE_NEG: 1073741830,\n OPCODE_NOT: 1073741831,\n OPCODE_OR: 1073741829,\n OPCODE_SUB: 1073741825,\n PHASE_BATTLE: 128,\n PHASE_BATTLE_START: 8,\n PHASE_BATTLE_STEP: 16,\n PHASE_DAMAGE: 32,\n PHASE_DAMAGE_CAL: 64,\n PHASE_DRAW: 1,\n PHASE_END: 512,\n PHASE_MAIN1: 4,\n PHASE_MAIN2: 256,\n PHASE_STANDBY: 2,\n PLAYER_ALL: 3,\n PLAYER_NONE: 2,\n POS_ATTACK: 3,\n POS_DEFENSE: 12,\n POS_FACEDOWN: 10,\n POS_FACEDOWN_ATTACK: 2,\n POS_FACEDOWN_DEFENSE: 8,\n POS_FACEUP: 5,\n POS_FACEUP_ATTACK: 1,\n POS_FACEUP_DEFENSE: 4,\n RACE_ALL: 67108863,\n RACE_AQUA: 64,\n RACE_BEAST: 16384,\n RACE_BEASTWARRIOR: 32768,\n RACE_CREATORGOD: 4194304,\n RACE_CYBERSE: 16777216,\n RACE_DINOSAUR: 65536,\n RACE_DIVINE: 2097152,\n RACE_DRAGON: 8192,\n RACE_FAIRY: 4,\n RACE_FIEND: 8,\n RACE_FISH: 131072,\n RACE_ILLUSION: 33554432,\n RACE_INSECT: 2048,\n RACE_MACHINE: 32,\n RACE_PLANT: 1024,\n RACE_PSYCHO: 1048576,\n RACE_PYRO: 128,\n RACE_REPTILE: 524288,\n RACE_ROCK: 256,\n RACE_SEASERPENT: 262144,\n RACE_SPELLCASTER: 2,\n RACE_THUNDER: 4096,\n RACE_WARRIOR: 1,\n RACE_WINDBEAST: 512,\n RACE_WYRM: 8388608,\n RACE_ZOMBIE: 16,\n REASON_ACTION: 2147483648,\n REASON_ADJUST: 256,\n REASON_BATTLE: 32,\n REASON_COST: 128,\n REASON_DESTROY: 1,\n REASON_DISCARD: 16384,\n REASON_DISSUMMON: 4096,\n REASON_DRAW: 33554432,\n REASON_EFFECT: 64,\n REASON_FLIP: 8192,\n REASON_FUSION: 262144,\n REASON_LINK: 268435456,\n REASON_LOST_OVERLAY: 536870912,\n REASON_LOST_TARGET: 512,\n REASON_MAINTENANCE: 1073741824,\n REASON_MATERIAL: 8,\n REASON_RDAMAGE: 32768,\n REASON_REDIRECT: 67108864,\n REASON_RELEASE: 2,\n REASON_REPLACE: 16777216,\n REASON_RETURN: 131072,\n REASON_REVEAL: 134217728,\n REASON_RITUAL: 1048576,\n REASON_RRECOVER: 65536,\n REASON_RULE: 1024,\n REASON_SPSUMMON: 2048,\n REASON_SUMMON: 16,\n REASON_SYNCHRO: 524288,\n REASON_TEMPORARY: 4,\n REASON_XYZ: 2097152,\n RESETS_REDIRECT: 209584128,\n RESETS_STANDARD: 33423360,\n RESETS_WITHOUT_TEMP_REMOVE: 91095040,\n RESET_CARD: 8192,\n RESET_CHAIN: 2147483648,\n RESET_CODE: 16384,\n RESET_CONTROL: 33554432,\n RESET_COPY: 32768,\n RESET_DISABLE: 65536,\n RESET_EVENT: 4096,\n RESET_LEAVE: 8388608,\n RESET_MSCHANGE: 134217728,\n RESET_OPPO_TURN: 536870912,\n RESET_OVERLAY: 67108864,\n RESET_PHASE: 1073741824,\n RESET_REMOVE: 524288,\n RESET_SELF_TURN: 268435456,\n RESET_TEMP_REMOVE: 1048576,\n RESET_TODECK: 4194304,\n RESET_TOFIELD: 16777216,\n RESET_TOGRAVE: 262144,\n RESET_TOHAND: 2097152,\n RESET_TURN_SET: 131072,\n SELECT_HEADS: 60,\n SELECT_TAILS: 61,\n SEQ_DECKBOTTOM: 1,\n SEQ_DECKSHUFFLE: 2,\n SEQ_DECKTOP: 0,\n STATUS_ACTIVATE_DISABLED: 262144,\n STATUS_ACT_FROM_HAND: 134217728,\n STATUS_ATTACK_CANCELED: 2097152,\n STATUS_BATTLE_DESTROYED: 16384,\n STATUS_BATTLE_RESULT: 64,\n STATUS_CANNOT_CHANGE_FORM: 256,\n STATUS_CHAINING: 65536,\n STATUS_CONTINUOUS_POS: 33554432,\n STATUS_COPYING_EFFECT: 32768,\n STATUS_DESTROY_CONFIRMED: 4096,\n STATUS_DISABLED: 1,\n STATUS_EFFECT_ENABLED: 1024,\n STATUS_EFFECT_REPLACED: 524288,\n STATUS_FLIP_SUMMONING: 1048576,\n STATUS_FLIP_SUMMON_DISABLED: 2147483648,\n STATUS_FLIP_SUMMON_TURN: 536870912,\n STATUS_FORBIDDEN: 67108864,\n STATUS_INITIALIZING: 4194304,\n STATUS_JUST_POS: 16777216,\n STATUS_LEAVE_CONFIRMED: 8192,\n STATUS_NO_LEVEL: 32,\n STATUS_OPPO_BATTLE: 268435456,\n STATUS_PROC_COMPLETE: 8,\n STATUS_SET_TURN: 16,\n STATUS_SPSUMMON_STEP: 128,\n STATUS_SPSUMMON_TURN: 1073741824,\n STATUS_SUMMONING: 512,\n STATUS_SUMMON_DISABLED: 131072,\n STATUS_SUMMON_TURN: 2048,\n STATUS_TO_DISABLE: 4,\n STATUS_TO_ENABLE: 2,\n STATUS_TO_HAND_WITHOUT_CONFIRM: 8388608,\n SUMMON_INFO_ATTACK: 128,\n SUMMON_INFO_ATTRIBUTE: 32,\n SUMMON_INFO_CODE: 1,\n SUMMON_INFO_CODE2: 2,\n SUMMON_INFO_DEFENSE: 256,\n SUMMON_INFO_LEVEL: 8,\n SUMMON_INFO_RACE: 64,\n SUMMON_INFO_RANK: 16,\n SUMMON_INFO_REASON_EFFECT: 512,\n SUMMON_INFO_REASON_PLAYER: 1024,\n SUMMON_INFO_TYPE: 4,\n SUMMON_TYPE_ADVANCE: 285212672,\n SUMMON_TYPE_DUAL: 301989888,\n SUMMON_TYPE_FLIP: 536870912,\n SUMMON_TYPE_FUSION: 1124073472,\n SUMMON_TYPE_LINK: 1275068416,\n SUMMON_TYPE_NORMAL: 268435456,\n SUMMON_TYPE_PENDULUM: 1241513984,\n SUMMON_TYPE_RITUAL: 1157627904,\n SUMMON_TYPE_SPECIAL: 1073741824,\n SUMMON_TYPE_SYNCHRO: 1174405120,\n SUMMON_TYPE_XYZ: 1224736768,\n SUMMON_VALUE_ASSAULT_MODE: 21,\n SUMMON_VALUE_DARK_FUSION: 1124073494,\n SUMMON_VALUE_DARK_SANCTUARY: 18,\n SUMMON_VALUE_EVOLTILE: 16384,\n SUMMON_VALUE_FOSSIL_FUSION: 1124073495,\n SUMMON_VALUE_FUTURE_FUSION: 1124073496,\n SUMMON_VALUE_GLADIATOR: 8192,\n SUMMON_VALUE_LV: 4096,\n SUMMON_VALUE_MASK_CHANGE: 20,\n SUMMON_VALUE_MONSTER_REBORN: 19,\n SUMMON_VALUE_SELF: 1,\n SUMMON_VALUE_SYNCHRO_MATERIAL: 17,\n TIMINGS_CHECK_MONSTER: 448,\n TIMING_ATTACK: 4096,\n TIMING_BATTLED: 134217728,\n TIMING_BATTLE_END: 16,\n TIMING_BATTLE_PHASE: 16777216,\n TIMING_BATTLE_START: 8,\n TIMING_BATTLE_STEP_END: 67108864,\n TIMING_CHAIN_END: 32768,\n TIMING_DAMAGE: 131072,\n TIMING_DAMAGE_CAL: 16384,\n TIMING_DAMAGE_STEP: 8192,\n TIMING_DESTROY: 524288,\n TIMING_DRAW: 65536,\n TIMING_DRAW_PHASE: 1,\n TIMING_END_PHASE: 32,\n TIMING_EQUIP: 33554432,\n TIMING_FLIPSUMMON: 256,\n TIMING_MAIN_END: 4,\n TIMING_MSET: 512,\n TIMING_POS_CHANGE: 2048,\n TIMING_RECOVER: 262144,\n TIMING_REMOVE: 1048576,\n TIMING_SPSUMMON: 128,\n TIMING_SSET: 1024,\n TIMING_STANDBY_PHASE: 2,\n TIMING_SUMMON: 64,\n TIMING_TODECK: 4194304,\n TIMING_TOGRAVE: 8388608,\n TIMING_TOHAND: 2097152,\n TYPES_EFFECT_TRAP_MONSTER: 289,\n TYPES_NORMAL_TRAP_MONSTER: 273,\n TYPES_TOKEN_MONSTER: 16401,\n TYPE_CONTINUOUS: 131072,\n TYPE_COUNTER: 1048576,\n TYPE_DUAL: 2048,\n TYPE_EFFECT: 32,\n TYPE_EQUIP: 262144,\n TYPE_FIELD: 524288,\n TYPE_FLIP: 2097152,\n TYPE_FUSION: 64,\n TYPE_LINK: 67108864,\n TYPE_MONSTER: 1,\n TYPE_NORMAL: 16,\n TYPE_PENDULUM: 16777216,\n TYPE_QUICKPLAY: 65536,\n TYPE_RITUAL: 128,\n TYPE_SPELL: 2,\n TYPE_SPIRIT: 512,\n TYPE_SPSUMMON: 33554432,\n TYPE_SYNCHRO: 8192,\n TYPE_TOKEN: 16384,\n TYPE_TOON: 4194304,\n TYPE_TRAP: 4,\n TYPE_TRAPMONSTER: 256,\n TYPE_TUNER: 4096,\n TYPE_UNION: 1024,\n TYPE_XYZ: 8388608,\n} as const;\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainEnd extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_END;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainNegated extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_NEGATED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainSolved extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_SOLVED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChainSolving extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAIN_SOLVING;\n\n @BinaryField('u8', 0)\n chainCount: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChained extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAINED;\n\n @BinaryField('u8', 0)\n chainCount: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgChaining_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgChaining extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CHAINING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n subsequence: number;\n\n @BinaryField(() => YGOProMsgChaining_CardLocation, 8)\n chainCardLocation: YGOProMsgChaining_CardLocation;\n\n @BinaryField('i32', 11)\n desc: number;\n\n @BinaryField('u8', 15)\n chainCount: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { SEND_TO_ALL, YGOProMsgBase } from '../base';\n\nexport class YGOProMsgConfirmCards_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgConfirmCards extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CONFIRM_CARDS;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n skipPanel: number;\n\n @BinaryField('u8', 2)\n count: number;\n\n @BinaryField(() => YGOProMsgConfirmCards_CardInfo, 3, (obj) => obj.count)\n cards: YGOProMsgConfirmCards_CardInfo[];\n\n getSendTargets(): number[] {\n // \u5982\u679C\u5361\u7247\u5728 DECK \u4F4D\u7F6E\uFF0C\u53EA\u53D1\u7ED9 player\n if (this.cards.length > 0 && this.cards[0].location === 0x01) {\n // LOCATION_DECK\n return [this.player];\n }\n // \u5426\u5219\u53D1\u7ED9\u6240\u6709\u4EBA\n return SEND_TO_ALL;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgConfirmDeckTop_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgConfirmDeckTop extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CONFIRM_DECKTOP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgConfirmDeckTop_CardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgConfirmDeckTop_CardInfo[];\n\n // MSG_CONFIRM_DECKTOP \u5728 single_duel.cpp \u4E2D\u4E0D\u505A\u906E\u63A9\uFF0C\u76F4\u63A5\u53D1\u7ED9\u6240\u6709\u4EBA\n // ocgcore \u901A\u8FC7 0x80000000 \u6807\u8BB0\u63A7\u5236\u516C\u5F00\u72B6\u6001\n // \u56E0\u6B64\u4F7F\u7528\u57FA\u7C7B\u7684\u9ED8\u8BA4\u5B9E\u73B0\uFF08\u4E0D\u906E\u63A9\uFF09\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgConfirmExtraTop_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgConfirmExtraTop extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_CONFIRM_EXTRATOP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgConfirmExtraTop_CardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgConfirmExtraTop_CardInfo[];\n\n // MSG_CONFIRM_EXTRATOP \u5728 single_duel.cpp \u4E2D\u4E0D\u505A\u906E\u63A9\uFF0C\u76F4\u63A5\u53D1\u7ED9\u6240\u6709\u4EBA\n // ocgcore \u901A\u8FC7 0x80000000 \u6807\u8BB0\u63A7\u5236\u516C\u5F00\u72B6\u6001\n // \u56E0\u6B64\u4F7F\u7528\u57FA\u7C7B\u7684\u9ED8\u8BA4\u5B9E\u73B0\uFF08\u4E0D\u906E\u63A9\uFF09\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDamage extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DAMAGE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n value: number;\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDamageStepEnd extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DAMAGE_STEP_END;\n\n getRequireRefreshZones() {\n return [\n { player: 0, location: OcgcoreScriptConstants.LOCATION_MZONE },\n { player: 1, location: OcgcoreScriptConstants.LOCATION_MZONE },\n ];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDamageStepStart extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DAMAGE_STEP_START;\n\n getRequireRefreshZones() {\n return [\n { player: 0, location: OcgcoreScriptConstants.LOCATION_MZONE },\n { player: 1, location: OcgcoreScriptConstants.LOCATION_MZONE },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDeckTop extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DECK_TOP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n sequence: number;\n\n @BinaryField('i32', 2)\n code: number;\n\n // MSG_DECK_TOP \u5728 single_duel.cpp \u4E2D\u4E0D\u505A\u906E\u63A9\uFF0C\u76F4\u63A5\u53D1\u7ED9\u6240\u6709\u4EBA\n // ocgcore \u901A\u8FC7 0x80000000 \u6807\u8BB0\u63A7\u5236\u516C\u5F00\u72B6\u6001\n // \u56E0\u6B64\u4F7F\u7528\u57FA\u7C7B\u7684\u9ED8\u8BA4\u5B9E\u73B0\uFF08\u4E0D\u906E\u63A9\uFF09\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgDraw extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_DRAW;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n\n // \u5BF9\u65B9\u89C6\u89D2\u9700\u8981\u9690\u85CF\u62BD\u5230\u7684\u5361\uFF08\u5982\u679C\u5361\u7247\u6807\u5FD7\u4F4D 0x80 \u672A\u8BBE\u7F6E\uFF09\n opponentView(): this {\n const view = this.copy();\n view.cards = view.cards.map((card) => {\n // \u5982\u679C\u5361\u7247\u7684\u9AD8\u4F4D\uFF080x80000000\uFF09\u672A\u8BBE\u7F6E\uFF0C\u5BF9\u65B9\u770B\u4E0D\u5230\uFF0C\u8FD4\u56DE 0\n if (!(card & 0x80000000)) {\n return 0;\n }\n return card;\n });\n return view;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u961F\u53CB\u4E0E\u5BF9\u624B\u5BF9\u62BD\u5361\u4FE1\u606F\u4F7F\u7528\u540C\u6837\u7684\u906E\u853D\u89C4\u5219\n return this.opponentView();\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgEquip_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgEquip extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_EQUIP;\n\n @BinaryField(() => YGOProMsgEquip_CardLocation, 0)\n equip: YGOProMsgEquip_CardLocation;\n\n @BinaryField(() => YGOProMsgEquip_CardLocation, 3)\n target: YGOProMsgEquip_CardLocation;\n\n @BinaryField('u8', 6)\n position: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgFieldDisabled extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_FIELD_DISABLED;\n\n @BinaryField('u32', 0)\n disabledField: number;\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgFlipSummoned extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_FLIPSUMMONED;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgFlipSummoning extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_FLIPSUMMONING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n position: number;\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [\n {\n player: this.controller,\n location: this.location,\n sequence: this.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgHandRes extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_HAND_RES;\n\n @BinaryField('u8', 0)\n result: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { SEND_TO_ALL, YGOProMsgBase } from '../base';\n\n// MSG_HINT \u7C7B\u578B\uFF1A\u53EA\u53D1\u7ED9 player\nconst HINT_TYPES_SEND_TO_SELF = new Set([1, 2, 3, 5]);\n\n// MSG_HINT \u7C7B\u578B\uFF1A\u53D1\u7ED9\u5BF9\u624B\u548C\u89C2\u6218\u8005\nconst HINT_TYPES_SEND_TO_OPPONENT = new Set([4, 6, 7, 8, 9, 11]);\n\nexport class YGOProMsgHint extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_HINT;\n\n @BinaryField('u8', 0)\n type: number;\n\n @BinaryField('u8', 1)\n player: number;\n\n @BinaryField('i32', 2)\n desc: number;\n\n getSendTargets(): number[] {\n if (HINT_TYPES_SEND_TO_SELF.has(this.type)) {\n return [this.player];\n }\n if (HINT_TYPES_SEND_TO_OPPONENT.has(this.type)) {\n return [1 - this.player, NetPlayerType.OBSERVER];\n }\n // case 10, 21, 22, 23, 24: send to all\n return SEND_TO_ALL;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgLpUpdate extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_LPUPDATE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n lp: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgMatchKill extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_MATCH_KILL;\n\n @BinaryField('i32', 0)\n code: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgMissedEffect extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_MISSED_EFFECT;\n\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n\n @BinaryField('i32', 4)\n code: number;\n\n getSendTargets(): number[] {\n // single_duel.cpp: player = pbuf[0], then only send to players[player].\n // pbuf[0] is the low byte of get_info_location(), i.e. controller.\n return [this.controller];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgMove_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgMove extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_MOVE;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField(() => YGOProMsgMove_CardLocation, 4)\n previous: YGOProMsgMove_CardLocation;\n\n @BinaryField(() => YGOProMsgMove_CardLocation, 8)\n current: YGOProMsgMove_CardLocation;\n\n @BinaryField('i32', 12)\n reason: number;\n\n opponentView(): this {\n const view = this.copy();\n const cl = view.current.location;\n const cp = view.current.position;\n\n // \u79FB\u52A8\u5230\u5893\u5730\u6216\u53E0\u653E\u4E0D\u9690\u85CF\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_GRAVE |\n OcgcoreScriptConstants.LOCATION_OVERLAY)\n ) {\n return view;\n }\n\n // \u79FB\u52A8\u5230\u5361\u7EC4\u3001\u624B\u724C\u6216\u80CC\u9762\u4F4D\u7F6E\u65F6\u9690\u85CF code\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_DECK |\n OcgcoreScriptConstants.LOCATION_HAND) ||\n cp & OcgcoreCommonConstants.POS_FACEDOWN\n ) {\n view.code = 0;\n }\n\n return view;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u961F\u53CB\u80FD\u770B\u5230\u573A\u4E0A\u7684\u80CC\u9762\u5361\uFF0C\u4F46\u770B\u4E0D\u5230\u624B\u724C\u548C\u5361\u7EC4\n const view = this.copy();\n const cl = view.current.location;\n const cp = view.current.position;\n\n // \u79FB\u52A8\u5230\u5893\u5730\u6216\u53E0\u653E\u4E0D\u9690\u85CF\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_GRAVE |\n OcgcoreScriptConstants.LOCATION_OVERLAY)\n ) {\n return view;\n }\n\n // \u79FB\u52A8\u5230\u5361\u7EC4\u3001\u624B\u724C\u65F6\u9690\u85CF code\n if (\n cl &\n (OcgcoreScriptConstants.LOCATION_DECK |\n OcgcoreScriptConstants.LOCATION_HAND)\n ) {\n view.code = 0;\n }\n\n // \u573A\u4E0A\u7684\u80CC\u9762\u5361\u961F\u53CB\u53EF\u4EE5\u770B\u5230\n return view;\n }\n\n playerView(playerId: number): this {\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (playerId === this.current.controller) {\n return this.copy();\n }\n return this.opponentView();\n }\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n const current = this.current;\n const previous = this.previous;\n const shouldRefresh =\n current.location !== 0 &&\n (current.location & OcgcoreScriptConstants.LOCATION_OVERLAY) === 0 &&\n (current.location !== previous.location ||\n current.controller !== previous.controller);\n if (!shouldRefresh) {\n return [];\n }\n return [\n {\n player: current.controller,\n location: current.location,\n sequence: current.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgNewPhase extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_NEW_PHASE;\n\n @BinaryField('u16', 0)\n phase: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgNewTurn extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_NEW_TURN;\n\n @BinaryField('u8', 0)\n player: number;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgPayLpCost extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_PAY_LPCOST;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n cost: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgPlayerHint extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_PLAYER_HINT;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n type: number;\n\n @BinaryField('i32', 2)\n value: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgPosChange_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n}\n\nexport class YGOProMsgPosChange extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_POS_CHANGE;\n\n @BinaryField(() => YGOProMsgPosChange_CardLocation, 0)\n card: YGOProMsgPosChange_CardLocation;\n\n @BinaryField('u8', 3)\n previousPosition: number;\n\n @BinaryField('u8', 4)\n currentPosition: number;\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n const shouldRefresh =\n (this.previousPosition & OcgcoreCommonConstants.POS_FACEDOWN) !== 0 &&\n (this.currentPosition & OcgcoreCommonConstants.POS_FACEUP) !== 0;\n if (!shouldRefresh) {\n return [];\n }\n return [\n {\n player: this.card.controller,\n location: this.card.location,\n sequence: this.card.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRandomSelected extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RANDOM_SELECTED;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRecover extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RECOVER;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n value: number;\n}\n", "import { YGOProMsgBase } from '../base';\n\n// MSG_RELOAD_FIELD \u7684\u7ED3\u6784\u975E\u5E38\u590D\u6742\uFF0C\u5305\u542B\u5B8C\u6574\u7684\u573A\u5730\u4FE1\u606F\n// \u9700\u8981\u624B\u52A8\u5904\u7406\uFF0C\u56E0\u4E3A\u5B83\u5305\u542B\u53EF\u53D8\u957F\u5EA6\u7684\u6570\u636E\u548C\u590D\u6742\u7684\u5D4C\u5957\u7ED3\u6784\nexport class YGOProMsgReloadField_ZoneCard {\n occupied: number;\n position?: number;\n xyzCount?: number;\n}\n\nexport class YGOProMsgReloadField_PlayerInfo {\n lp: number;\n mzone: YGOProMsgReloadField_ZoneCard[];\n szone: YGOProMsgReloadField_ZoneCard[];\n deckCount: number;\n handCount: number;\n graveCount: number;\n removedCount: number;\n extraCount: number;\n extraPCount: number;\n}\n\nexport class YGOProMsgReloadField_ChainInfo {\n code: number;\n chainCardController: number;\n chainCardLocation: number;\n chainCardSequence: number;\n chainCardSubsequence: number;\n triggerController: number;\n triggerLocation: number;\n triggerSequence: number;\n desc: number;\n}\n\nexport class YGOProMsgReloadField extends YGOProMsgBase {\n static identifier = 162; // MSG_RELOAD_FIELD\n\n duelRule: number;\n players: YGOProMsgReloadField_PlayerInfo[];\n chains: YGOProMsgReloadField_ChainInfo[];\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n let offset = 1;\n\n this.duelRule = view.getUint8(offset++);\n this.players = [];\n\n // \u8BFB\u53D6\u4E24\u4E2A\u73A9\u5BB6\u7684\u6570\u636E\n for (let i = 0; i < 2; i++) {\n const player: YGOProMsgReloadField_PlayerInfo = {\n lp: view.getInt32(offset, true),\n mzone: [],\n szone: [],\n deckCount: 0,\n handCount: 0,\n graveCount: 0,\n removedCount: 0,\n extraCount: 0,\n extraPCount: 0,\n };\n offset += 4;\n\n // \u8BFB\u53D6 mzone[7]\n for (let seq = 0; seq < 7; seq++) {\n const occupied = view.getUint8(offset++);\n const card: YGOProMsgReloadField_ZoneCard = { occupied };\n if (occupied) {\n card.position = view.getUint8(offset++);\n card.xyzCount = view.getUint8(offset++);\n }\n player.mzone.push(card);\n }\n\n // \u8BFB\u53D6 szone[8]\n for (let seq = 0; seq < 8; seq++) {\n const occupied = view.getUint8(offset++);\n const card: YGOProMsgReloadField_ZoneCard = { occupied };\n if (occupied) {\n card.position = view.getUint8(offset++);\n }\n player.szone.push(card);\n }\n\n // \u8BFB\u53D6\u5404\u533A\u57DF\u8BA1\u6570\n player.deckCount = view.getUint8(offset++);\n player.handCount = view.getUint8(offset++);\n player.graveCount = view.getUint8(offset++);\n player.removedCount = view.getUint8(offset++);\n player.extraCount = view.getUint8(offset++);\n player.extraPCount = view.getUint8(offset++);\n\n this.players.push(player);\n }\n\n // \u8BFB\u53D6\u8FDE\u9501\u4FE1\u606F\n const chainCount = view.getUint8(offset++);\n this.chains = [];\n for (let i = 0; i < chainCount; i++) {\n const chain: YGOProMsgReloadField_ChainInfo = {\n code: view.getInt32(offset, true),\n chainCardController: view.getUint8(offset + 4),\n chainCardLocation: view.getUint8(offset + 5),\n chainCardSequence: view.getUint8(offset + 6),\n chainCardSubsequence: view.getUint8(offset + 7),\n triggerController: view.getUint8(offset + 8),\n triggerLocation: view.getUint8(offset + 9),\n triggerSequence: view.getUint8(offset + 10),\n desc: view.getInt32(offset + 11, true),\n };\n offset += 15;\n this.chains.push(chain);\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // \u8BA1\u7B97\u603B\u5927\u5C0F\n let size = 1 + 1; // identifier + duelRule\n\n for (const player of this.players) {\n size += 4; // lp\n for (const card of player.mzone) {\n size += 1; // occupied\n if (card.occupied) {\n size += 2; // position + xyzCount\n }\n }\n for (const card of player.szone) {\n size += 1; // occupied\n if (card.occupied) {\n size += 1; // position\n }\n }\n size += 6; // deckCount, handCount, graveCount, removedCount, extraCount, extraPCount\n }\n\n size += 1; // chainCount\n size += this.chains.length * 15; // \u6BCF\u4E2A\u8FDE\u9501 15 \u5B57\u8282\n\n const result = new Uint8Array(size);\n const view = new DataView(result.buffer);\n let offset = 0;\n\n result[offset++] = this.identifier;\n result[offset++] = this.duelRule;\n\n // \u5199\u5165\u73A9\u5BB6\u6570\u636E\n for (const player of this.players) {\n view.setInt32(offset, player.lp, true);\n offset += 4;\n\n // \u5199\u5165 mzone\n for (const card of player.mzone) {\n result[offset++] = card.occupied;\n if (card.occupied) {\n result[offset++] = card.position || 0;\n result[offset++] = card.xyzCount || 0;\n }\n }\n\n // \u5199\u5165 szone\n for (const card of player.szone) {\n result[offset++] = card.occupied;\n if (card.occupied) {\n result[offset++] = card.position || 0;\n }\n }\n\n // \u5199\u5165\u5404\u533A\u57DF\u8BA1\u6570\n result[offset++] = player.deckCount;\n result[offset++] = player.handCount;\n result[offset++] = player.graveCount;\n result[offset++] = player.removedCount;\n result[offset++] = player.extraCount;\n result[offset++] = player.extraPCount;\n }\n\n // \u5199\u5165\u8FDE\u9501\u4FE1\u606F\n result[offset++] = this.chains.length;\n for (const chain of this.chains) {\n view.setInt32(offset, chain.code, true);\n result[offset + 4] = chain.chainCardController;\n result[offset + 5] = chain.chainCardLocation;\n result[offset + 6] = chain.chainCardSequence;\n result[offset + 7] = chain.chainCardSubsequence;\n result[offset + 8] = chain.triggerController;\n result[offset + 9] = chain.triggerLocation;\n result[offset + 10] = chain.triggerSequence;\n view.setInt32(offset + 11, chain.desc, true);\n offset += 15;\n }\n\n return result;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRemoveCounter extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_REMOVE_COUNTER;\n\n @BinaryField('u16', 0)\n counterType: number;\n\n @BinaryField('u8', 2)\n controller: number;\n\n @BinaryField('u8', 3)\n location: number;\n\n @BinaryField('u8', 4)\n sequence: number;\n\n @BinaryField('u16', 5)\n count: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgResetTime extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RESET_TIME;\n\n @BinaryField('i8', 0)\n player: number;\n\n @BinaryField('i16', 1)\n time: number;\n\n getSendTargets(): number[] {\n return [];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgRetry extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_RETRY;\n\n getSendTargets(): number[] {\n return [];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgReverseDeck extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_REVERSE_DECK;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { HandResult } from '../../network-enums';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgRockPaperScissors extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_ROCK_PAPER_SCISSORS;\n\n @BinaryField('u8', 0)\n player: number;\n\n responsePlayer(): number {\n return this.player;\n }\n\n prepareResponse(choice: HandResult) {\n if (choice < HandResult.ROCK || choice > HandResult.PAPER) {\n throw new TypeError(\n `Invalid choice: ${choice}. Must be 1 (ROCK), 2 (SCISSORS), or 3 (PAPER)`,\n );\n }\n const buffer = new Uint8Array(1);\n buffer[0] = choice;\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport enum BattleCmdType {\n ACTIVATE = 0,\n ATTACK = 1,\n TO_M2 = 2,\n TO_EP = 3,\n}\n\nexport class YGOProMsgSelectBattleCmd_ActivatableInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('i32', 7)\n desc: number;\n}\n\nexport class YGOProMsgSelectBattleCmd_AttackableInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n directAttack: number;\n}\n\nexport class YGOProMsgSelectBattleCmd extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_BATTLECMD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n activatableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectBattleCmd_ActivatableInfo,\n 2,\n (obj) => obj.activatableCount,\n )\n activatableCards: YGOProMsgSelectBattleCmd_ActivatableInfo[];\n\n @BinaryField('u8', (obj) => {\n return 2 + obj.activatableCount * 11;\n })\n attackableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectBattleCmd_AttackableInfo,\n (obj) => {\n return 3 + obj.activatableCount * 11;\n },\n (obj) => obj.attackableCount,\n )\n attackableCards: YGOProMsgSelectBattleCmd_AttackableInfo[];\n\n @BinaryField('u8', (obj) => {\n return 3 + obj.activatableCount * 11 + obj.attackableCount * 8;\n })\n canM2: number;\n\n @BinaryField('u8', (obj) => {\n return 4 + obj.activatableCount * 11 + obj.attackableCount * 8;\n })\n canEp: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n type: BattleCmdType,\n option?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n desc?: number;\n },\n ) {\n let sequence: number;\n\n if (type === BattleCmdType.ACTIVATE) {\n if (option == null) {\n throw new TypeError('Option required for ACTIVATE');\n }\n if (isIndexResponse(option)) {\n sequence = option.index;\n if (sequence < 0 || sequence >= this.activatableCount) {\n throw new TypeError(`Index out of range: ${sequence}`);\n }\n } else {\n const idx = this.activatableCards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence) &&\n (option.desc == null || card.desc === option.desc),\n );\n if (idx === -1) {\n throw new TypeError('Activatable card not found');\n }\n sequence = idx;\n }\n } else if (type === BattleCmdType.ATTACK) {\n if (option == null) {\n throw new TypeError('Option required for ATTACK');\n }\n if (isIndexResponse(option)) {\n sequence = option.index;\n if (sequence < 0 || sequence >= this.attackableCount) {\n throw new TypeError(`Index out of range: ${sequence}`);\n }\n } else {\n const idx = this.attackableCards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (idx === -1) {\n throw new TypeError('Attackable card not found');\n }\n sequence = idx;\n }\n } else if (type === BattleCmdType.TO_M2) {\n if (this.canM2 === 0) {\n throw new TypeError('Cannot go to M2');\n }\n sequence = 0;\n } else if (type === BattleCmdType.TO_EP) {\n if (this.canEp === 0) {\n throw new TypeError('Cannot go to EP');\n }\n sequence = 0;\n } else {\n throw new TypeError(`Unknown type: ${type}`);\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, (sequence << 16) | type, true);\n return buffer;\n }\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectCard_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n subsequence: number;\n}\n\nexport class YGOProMsgSelectCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n cancelable: number;\n\n @BinaryField('u8', 2)\n min: number;\n\n @BinaryField('u8', 3)\n max: number;\n\n @BinaryField('u8', 4)\n count: number;\n\n @BinaryField(() => YGOProMsgSelectCard_CardInfo, 5, (obj) => obj.count)\n cards: YGOProMsgSelectCard_CardInfo[];\n\n private maskedView(playerId: number): this {\n // \u53C2\u8003 single_duel.cpp/tag_duel.cpp\uFF1A\u5BF9\u975E\u5F53\u524D\u89C6\u89D2\u73A9\u5BB6\u63A7\u5236\u7684\u5019\u9009\u5361\uFF0Ccode \u7F6E 0\n const view = this.copy();\n for (const card of view.cards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n return view;\n }\n\n playerView(playerId: number): this {\n return this.maskedView(playerId);\n }\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u53EF\u4EE5\u53D6\u6D88\u65F6\u624D\u80FD\u4E0D\u9009\u62E9\n if (this.cancelable === 0) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n cardOptions?: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n > | null,\n ) {\n if (cardOptions == null) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, -1, true);\n return buffer;\n }\n\n const indices: number[] = [];\n const usedIndices = new Set<number>();\n for (const option of cardOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card, idx) =>\n !usedIndices.has(idx) &&\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n usedIndices.add(index);\n }\n\n const buffer = new Uint8Array(1 + indices.length);\n buffer[0] = indices.length;\n indices.forEach((idx, i) => {\n buffer[1 + i] = idx;\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectChain_ChainInfo {\n @BinaryField('u8', 0)\n edesc: number;\n\n @BinaryField('u8', 1)\n forced: number;\n\n @BinaryField('i32', 2)\n code: number;\n\n @BinaryField('u8', 6)\n controller: number;\n\n @BinaryField('u8', 7)\n location: number;\n\n @BinaryField('u8', 8)\n sequence: number;\n\n @BinaryField('u8', 9)\n subsequence: number;\n\n @BinaryField('i32', 10)\n desc: number;\n}\n\nexport class YGOProMsgSelectChain extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_CHAIN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u8', 2)\n specialCount: number;\n\n @BinaryField('i32', 3)\n hint0: number;\n\n @BinaryField('i32', 7)\n hint1: number;\n\n @BinaryField(() => YGOProMsgSelectChain_ChainInfo, 11, (obj) => obj.count)\n chains: YGOProMsgSelectChain_ChainInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u6CA1\u6709\u5F3A\u5236\u8FDE\u9501\u65F6\u624D\u80FD\u4E0D\u6FC0\u6D3B\n const hasForced = this.chains.some((chain) => chain.forced !== 0);\n if (hasForced) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n option?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n desc?: number;\n }\n | null,\n ) {\n let index: number;\n\n if (option == null) {\n index = -1;\n } else if (isIndexResponse(option)) {\n index = option.index;\n if (index < -1 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.chains.findIndex(\n (chain) =>\n (option.code == null || chain.code === option.code) &&\n (option.controller == null ||\n chain.controller === option.controller) &&\n (option.location == null || chain.location === option.location) &&\n (option.sequence == null || chain.sequence === option.sequence) &&\n (option.desc == null || chain.desc === option.desc),\n );\n if (index === -1) {\n throw new TypeError('Chain not found');\n }\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, index, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectCounter_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u16', 7)\n counterCount: number;\n}\n\nexport class YGOProMsgSelectCounter extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_COUNTER;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u16', 1)\n counterType: number;\n\n @BinaryField('u16', 3)\n counterCount: number;\n\n @BinaryField('u8', 5)\n count: number;\n\n @BinaryField(() => YGOProMsgSelectCounter_CardInfo, 6, (obj) => obj.count)\n cards: YGOProMsgSelectCounter_CardInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n counterOptions: Array<{\n card:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n };\n count: number;\n }>,\n ) {\n // \u521B\u5EFA\u4E00\u4E2A\u6570\u7EC4\uFF0C\u521D\u59CB\u5316\u4E3A0\n const counterCounts = new Array(this.count).fill(0);\n\n for (const option of counterOptions) {\n let index: number;\n if (isIndexResponse(option.card)) {\n index = option.card.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n const card = option.card as {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n };\n index = this.cards.findIndex(\n (card) =>\n (card.code == null || card.code === card.code) &&\n (card.controller == null || card.controller === card.controller) &&\n (card.location == null || card.location === card.location) &&\n (card.sequence == null || card.sequence === card.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n counterCounts[index] = option.count;\n }\n\n const buffer = new Uint8Array(counterCounts.length * 2);\n const view = new DataView(buffer.buffer);\n counterCounts.forEach((count, i) => {\n view.setUint16(i * 2, count, true);\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport interface SelectablePlace {\n player: number;\n location: number;\n sequence: number;\n}\n\nexport class YGOProMsgSelectPlaceCommon extends YGOProMsgResponseBase {\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u32', 2)\n flag: number;\n\n getSelectablePlaces() {\n const places: SelectablePlace[] = [];\n const mask = this.flag >>> 0;\n let pos = 0;\n for (const player of [this.player, 1 - this.player]) {\n for (const location of [\n OcgcoreScriptConstants.LOCATION_MZONE,\n OcgcoreScriptConstants.LOCATION_SZONE,\n ]) {\n for (let sequence = 0; sequence < 8; sequence++) {\n if (!(mask & ((1 << pos) >>> 0))) {\n places.push({ player, location, sequence });\n }\n ++pos;\n }\n }\n }\n return places;\n }\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n places: Array<{ player: number; location: number; sequence: number }>,\n ) {\n const buffer = new Uint8Array(places.length * 3);\n places.forEach((place, i) => {\n if (\n (this.flag >>> 0) &\n ((1 <<\n ((place.player === this.player ? 0 : 16) +\n (place.location === OcgcoreScriptConstants.LOCATION_MZONE ? 0 : 8) +\n place.sequence)) >>>\n 0)\n ) {\n throw new Error('Selected place is not available');\n }\n buffer[i * 3] = place.player;\n buffer[i * 3 + 1] = place.location;\n buffer[i * 3 + 2] = place.sequence;\n });\n return buffer;\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgSelectPlaceCommon } from './select-place-common';\n\nexport class YGOProMsgSelectDisField extends YGOProMsgSelectPlaceCommon {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_DISFIELD;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgSelectEffectYn extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_EFFECTYN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n code: number;\n\n @BinaryField('u8', 5)\n controller: number;\n\n @BinaryField('u8', 6)\n location: number;\n\n @BinaryField('u8', 7)\n sequence: number;\n\n @BinaryField('u8', 8)\n position: number;\n\n @BinaryField('i32', 9)\n desc: number;\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n return this.prepareResponse(false);\n }\n\n prepareResponse(yes: boolean) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, yes ? 1 : 0, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport enum IdleCmdType {\n SUMMON = 0,\n SPSUMMON = 1,\n REPOS = 2,\n MSET = 3,\n SSET = 4,\n ACTIVATE = 5,\n TO_BP = 6,\n TO_EP = 7,\n SHUFFLE = 8,\n}\n\nexport class YGOProMsgSelectIdleCmd_SimpleCardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgSelectIdleCmd_ActivatableInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('i32', 7)\n desc: number;\n}\n\nexport class YGOProMsgSelectIdleCmd extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_IDLECMD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n summonableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n 2,\n (obj) => obj.summonableCount,\n )\n summonableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField('u8', (obj) => 2 + obj.summonableCount * 7)\n spSummonableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) => 3 + obj.summonableCount * 7,\n (obj) => obj.spSummonableCount,\n )\n spSummonableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) => 3 + obj.summonableCount * 7 + obj.spSummonableCount * 7,\n )\n reposableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) => 4 + obj.summonableCount * 7 + obj.spSummonableCount * 7,\n (obj) => obj.reposableCount,\n )\n reposableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 4 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7,\n )\n msetableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) =>\n 5 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7,\n (obj) => obj.msetableCount,\n )\n msetableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 5 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7,\n )\n ssetableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_SimpleCardInfo,\n (obj) =>\n 6 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7,\n (obj) => obj.ssetableCount,\n )\n ssetableCards: YGOProMsgSelectIdleCmd_SimpleCardInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 6 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7,\n )\n activatableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectIdleCmd_ActivatableInfo,\n (obj) =>\n 7 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7,\n (obj) => obj.activatableCount,\n )\n activatableCards: YGOProMsgSelectIdleCmd_ActivatableInfo[];\n\n @BinaryField(\n 'u8',\n (obj) =>\n 7 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7 +\n obj.activatableCount * 11,\n )\n canBp: number;\n\n @BinaryField(\n 'u8',\n (obj) =>\n 8 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7 +\n obj.activatableCount * 11,\n )\n canEp: number;\n\n @BinaryField(\n 'u8',\n (obj) =>\n 9 +\n obj.summonableCount * 7 +\n obj.spSummonableCount * 7 +\n obj.reposableCount * 7 +\n obj.msetableCount * 7 +\n obj.ssetableCount * 7 +\n obj.activatableCount * 11,\n )\n canShuffle: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n type: IdleCmdType,\n option?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n desc?: number;\n },\n ) {\n let sequence: number;\n\n if (\n type === IdleCmdType.SUMMON ||\n type === IdleCmdType.SPSUMMON ||\n type === IdleCmdType.REPOS ||\n type === IdleCmdType.MSET ||\n type === IdleCmdType.SSET ||\n type === IdleCmdType.ACTIVATE\n ) {\n if (option == null) {\n throw new TypeError(`Option required for ${IdleCmdType[type]}`);\n }\n\n let cards: any[];\n let maxCount: number;\n let typeName: string;\n\n if (type === IdleCmdType.SUMMON) {\n cards = this.summonableCards;\n maxCount = this.summonableCount;\n typeName = 'Summonable';\n } else if (type === IdleCmdType.SPSUMMON) {\n cards = this.spSummonableCards;\n maxCount = this.spSummonableCount;\n typeName = 'Special summonable';\n } else if (type === IdleCmdType.REPOS) {\n cards = this.reposableCards;\n maxCount = this.reposableCount;\n typeName = 'Repositionable';\n } else if (type === IdleCmdType.MSET) {\n cards = this.msetableCards;\n maxCount = this.msetableCount;\n typeName = 'Monster settable';\n } else if (type === IdleCmdType.SSET) {\n cards = this.ssetableCards;\n maxCount = this.ssetableCount;\n typeName = 'Spell/Trap settable';\n } else {\n // IdleCmdType.ACTIVATE\n cards = this.activatableCards;\n maxCount = this.activatableCount;\n typeName = 'Activatable';\n }\n\n if (isIndexResponse(option)) {\n sequence = option.index;\n if (sequence < 0 || sequence >= maxCount) {\n throw new TypeError(`Index out of range: ${sequence}`);\n }\n } else {\n const idx = cards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence) &&\n (option.desc == null || card.desc === option.desc),\n );\n if (idx === -1) {\n throw new TypeError(`${typeName} card not found`);\n }\n sequence = idx;\n }\n } else if (type === IdleCmdType.TO_BP) {\n if (this.canBp === 0) {\n throw new TypeError('Cannot go to BP');\n }\n sequence = 0;\n } else if (type === IdleCmdType.TO_EP) {\n if (this.canEp === 0) {\n throw new TypeError('Cannot go to EP');\n }\n sequence = 0;\n } else if (type === IdleCmdType.SHUFFLE) {\n if (this.canShuffle === 0) {\n throw new TypeError('Cannot shuffle');\n }\n sequence = 0;\n } else {\n throw new TypeError(`Unknown type: ${type}`);\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, (sequence << 16) | type, true);\n return buffer;\n }\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectOption extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_OPTION;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n options: number[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(option: IndexResponseObject | number) {\n let index: number;\n\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.options.indexOf(option);\n if (index === -1) {\n throw new TypeError(`Option not found: ${option}`);\n }\n }\n\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, index, true);\n return buffer;\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgSelectPlaceCommon } from './select-place-common';\n\nexport class YGOProMsgSelectPlace extends YGOProMsgSelectPlaceCommon {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_PLACE;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgSelectPosition extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_POSITION;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n code: number;\n\n @BinaryField('u8', 5)\n positions: number;\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(position: number) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, position, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectSum_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('i32', 7)\n opParam: number;\n}\n\nexport class YGOProMsgSelectSum extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_SUM;\n\n @BinaryField('u8', 0)\n mode: number;\n\n @BinaryField('u8', 1)\n player: number;\n\n @BinaryField('i32', 2)\n sumVal: number;\n\n @BinaryField('u8', 6)\n min: number;\n\n @BinaryField('u8', 7)\n max: number;\n\n @BinaryField('u8', 8)\n mustSelectCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectSum_CardInfo,\n 9,\n (obj) => obj.mustSelectCount,\n )\n mustSelectCards: YGOProMsgSelectSum_CardInfo[];\n\n @BinaryField('u8', (obj) => {\n return 9 + obj.mustSelectCount * 11;\n })\n count: number;\n\n @BinaryField(\n () => YGOProMsgSelectSum_CardInfo,\n (obj) => {\n return 10 + obj.mustSelectCount * 11;\n },\n (obj) => obj.count,\n )\n cards: YGOProMsgSelectSum_CardInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n prepareResponse(\n cardOptions: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n >,\n ) {\n const indices: number[] = [];\n for (const option of cardOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card) =>\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n }\n\n const buffer = new Uint8Array(1 + indices.length);\n buffer[0] = this.mustSelectCount + indices.length;\n indices.forEach((idx, i) => {\n buffer[1 + i] = idx;\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectTribute_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n releaseParam: number;\n}\n\nexport class YGOProMsgSelectTribute extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_TRIBUTE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n cancelable: number;\n\n @BinaryField('u8', 2)\n min: number;\n\n @BinaryField('u8', 3)\n max: number;\n\n @BinaryField('u8', 4)\n count: number;\n\n @BinaryField(() => YGOProMsgSelectTribute_CardInfo, 5, (obj) => obj.count)\n cards: YGOProMsgSelectTribute_CardInfo[];\n\n private maskedView(playerId: number): this {\n // \u53C2\u8003 single_duel.cpp/tag_duel.cpp\uFF1A\u5BF9\u975E\u5F53\u524D\u89C6\u89D2\u73A9\u5BB6\u63A7\u5236\u7684\u5019\u9009\u5361\uFF0Ccode \u7F6E 0\n const view = this.copy();\n for (const card of view.cards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n return view;\n }\n\n playerView(playerId: number): this {\n return this.maskedView(playerId);\n }\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u53EF\u4EE5\u53D6\u6D88\u65F6\u624D\u80FD\u4E0D\u9009\u62E9\n if (this.cancelable === 0) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n cardOptions?: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n > | null,\n ) {\n if (cardOptions == null) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, -1, true);\n return buffer;\n }\n\n const indices: number[] = [];\n const usedIndices = new Set<number>();\n for (const option of cardOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card, idx) =>\n !usedIndices.has(idx) &&\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n usedIndices.add(index);\n }\n\n const buffer = new Uint8Array(1 + indices.length);\n buffer[0] = indices.length;\n indices.forEach((idx, i) => {\n buffer[1 + i] = idx;\n });\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSelectUnselectCard_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n subsequence: number;\n}\n\nexport class YGOProMsgSelectUnselectCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_UNSELECT_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n finishable: number;\n\n @BinaryField('u8', 2)\n cancelable: number;\n\n @BinaryField('u8', 3)\n min: number;\n\n @BinaryField('u8', 4)\n max: number;\n\n @BinaryField('u8', 5)\n selectableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectUnselectCard_CardInfo,\n 6,\n (obj) => obj.selectableCount,\n )\n selectableCards: YGOProMsgSelectUnselectCard_CardInfo[];\n\n @BinaryField('u8', (obj) => {\n return 6 + obj.selectableCount * 8;\n })\n unselectableCount: number;\n\n @BinaryField(\n () => YGOProMsgSelectUnselectCard_CardInfo,\n (obj) => {\n return 7 + obj.selectableCount * 8;\n },\n (obj) => obj.unselectableCount,\n )\n unselectableCards: YGOProMsgSelectUnselectCard_CardInfo[];\n\n private maskedView(playerId: number): this {\n // \u53C2\u8003 single_duel.cpp/tag_duel.cpp\uFF1A\u5BF9\u975E\u5F53\u524D\u89C6\u89D2\u73A9\u5BB6\u63A7\u5236\u7684\u5019\u9009\u5361\uFF0Ccode \u7F6E 0\n const view = this.copy();\n for (const card of view.selectableCards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n for (const card of view.unselectableCards || []) {\n if (card.controller !== playerId) {\n card.code = 0;\n }\n }\n return view;\n }\n\n playerView(playerId: number): this {\n return this.maskedView(playerId);\n }\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n // \u53EA\u6709\u5728\u53EF\u4EE5\u53D6\u6D88\u6216\u5B8C\u6210\u65F6\u624D\u80FD\u4E0D\u9009\u62E9\n if (this.cancelable === 0 && this.finishable === 0) {\n return undefined;\n }\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n cardOption?:\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n | null,\n ) {\n if (cardOption == null) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, -1, true);\n return buffer;\n }\n\n let index: number;\n if (isIndexResponse(cardOption)) {\n index = cardOption.index;\n const totalCount = this.selectableCount + this.unselectableCount;\n if (index < 0 || index >= totalCount) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n // \u5148\u5728 selectable \u4E2D\u67E5\u627E\n index = this.selectableCards.findIndex(\n (card) =>\n (cardOption.code == null || card.code === cardOption.code) &&\n (cardOption.controller == null ||\n card.controller === cardOption.controller) &&\n (cardOption.location == null ||\n card.location === cardOption.location) &&\n (cardOption.sequence == null ||\n card.sequence === cardOption.sequence),\n );\n // \u5982\u679C\u6CA1\u627E\u5230\uFF0C\u5728 unselectable \u4E2D\u67E5\u627E\n if (index === -1) {\n const unselectIndex = this.unselectableCards.findIndex(\n (card) =>\n (cardOption.code == null || card.code === cardOption.code) &&\n (cardOption.controller == null ||\n card.controller === cardOption.controller) &&\n (cardOption.location == null ||\n card.location === cardOption.location) &&\n (cardOption.sequence == null ||\n card.sequence === cardOption.sequence),\n );\n if (unselectIndex === -1) {\n throw new TypeError('Card not found');\n }\n index = this.selectableCount + unselectIndex;\n }\n }\n\n const buffer = new Uint8Array(2);\n buffer[0] = 1;\n buffer[1] = index;\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\n\nexport class YGOProMsgSelectYesNo extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SELECT_YESNO;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('i32', 1)\n desc: number;\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n return this.prepareResponse(false);\n }\n\n prepareResponse(yes: boolean) {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setInt32(0, yes ? 1 : 0, true);\n return buffer;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSet extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SET;\n\n @BinaryField('i32', 0)\n code: number;\n\n // MSG_SET \u662F\u76D6\u653E\u5361\u7247\uFF0C\u6240\u6709\u4EBA\u90FD\u770B\u4E0D\u5230 code\uFF08\u5305\u62EC\u73A9\u5BB6\u81EA\u5DF1\uFF09\n // \u670D\u52A1\u5668\u5728\u53D1\u9001\u524D\u4F1A\u5C06 code \u6E05\u96F6\n opponentView(): this {\n const view = this.copy();\n view.code = 0;\n return view;\n }\n\n teammateView(): this {\n const view = this.copy();\n view.code = 0;\n return view;\n }\n\n observerView(): this {\n const view = this.copy();\n view.code = 0;\n return view;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n playerView(playerId: number): this {\n // \u76D6\u653E\u5361\u7247\uFF0C\u5373\u4F7F\u662F\u73A9\u5BB6\u81EA\u5DF1\u4E5F\u770B\u4E0D\u5230\n const view = this.copy();\n view.code = 0;\n return view;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleDeck extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_DECK;\n\n @BinaryField('u8', 0)\n player: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleExtra extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_EXTRA;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n\n // \u5BF9\u65B9\u89C6\u89D2\u9700\u8981\u9690\u85CF\u989D\u5916\u5361\u7EC4\u4FE1\u606F\n opponentView(): this {\n const view = this.copy();\n // \u6839\u636E single_duel.cpp\uFF0C\u5BF9\u624B\u89C6\u89D2\u4E0B\u5E94\u8BE5\u5168\u90E8\u906E\u63A9\n view.cards = view.cards.map(() => 0);\n return view;\n }\n\n teammateView(): this {\n return this.opponentView();\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleHand extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_HAND;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('i32', 2, (obj) => obj.count)\n cards: number[];\n\n // \u5BF9\u65B9\u89C6\u89D2\u9700\u8981\u9690\u85CF\u624B\u724C\u4FE1\u606F\n opponentView(): this {\n const view = this.copy();\n view.cards = view.cards.map(() => 0);\n return view;\n }\n\n teammateView(): this {\n return this.opponentView();\n }\n\n getRequireRefreshZones() {\n return [\n {\n player: this.player,\n location: OcgcoreScriptConstants.LOCATION_HAND,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgShuffleSetCard_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgShuffleSetCard_SetCardInfo {\n @BinaryField(() => YGOProMsgShuffleSetCard_CardLocation, 0)\n oldLocation: YGOProMsgShuffleSetCard_CardLocation;\n\n @BinaryField(() => YGOProMsgShuffleSetCard_CardLocation, 4)\n newLocation: YGOProMsgShuffleSetCard_CardLocation;\n}\n\nexport class YGOProMsgShuffleSetCard extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SHUFFLE_SET_CARD;\n\n @BinaryField('u8', 0)\n location: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgShuffleSetCard_SetCardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgShuffleSetCard_SetCardInfo[];\n\n getRequireRefreshZones() {\n let location = 0;\n if (this.location === OcgcoreScriptConstants.LOCATION_MZONE) {\n location = OcgcoreScriptConstants.LOCATION_MZONE;\n }\n if (this.location === OcgcoreScriptConstants.LOCATION_SZONE) {\n location = OcgcoreScriptConstants.LOCATION_SZONE;\n }\n if (location === 0) {\n return [];\n }\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgResponseBase } from '../with-response-base';\nimport {\n IndexResponse,\n IndexResponseObject,\n isIndexResponse,\n} from '../index-response';\n\nexport class YGOProMsgSortCard_CardInfo {\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n}\n\nexport class YGOProMsgSortCard extends YGOProMsgResponseBase {\n static identifier = OcgcoreCommonConstants.MSG_SORT_CARD;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField(() => YGOProMsgSortCard_CardInfo, 2, (obj) => obj.count)\n cards: YGOProMsgSortCard_CardInfo[];\n\n responsePlayer() {\n return this.player;\n }\n\n defaultResponse() {\n return this.prepareResponse(null);\n }\n\n prepareResponse(\n sortedOptions?: Array<\n | IndexResponseObject\n | {\n code?: number;\n controller?: number;\n location?: number;\n sequence?: number;\n }\n > | null,\n ) {\n if (sortedOptions == null) {\n return new Uint8Array([0xff]);\n }\n\n const indices: number[] = [];\n const usedIndices = new Set<number>();\n for (const option of sortedOptions) {\n let index: number;\n if (isIndexResponse(option)) {\n index = option.index;\n if (index < 0 || index >= this.count) {\n throw new TypeError(`Index out of range: ${index}`);\n }\n } else {\n index = this.cards.findIndex(\n (card, idx) =>\n !usedIndices.has(idx) &&\n (option.code == null || card.code === option.code) &&\n (option.controller == null ||\n card.controller === option.controller) &&\n (option.location == null || card.location === option.location) &&\n (option.sequence == null || card.sequence === option.sequence),\n );\n if (index === -1) {\n throw new TypeError('Card not found');\n }\n }\n indices.push(index);\n usedIndices.add(index);\n }\n\n const buffer = new Uint8Array(indices.length);\n indices.forEach((idx, i) => {\n buffer[i] = idx;\n });\n return buffer;\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSpSummoned extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SPSUMMONED;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSpSummoning extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SPSUMMONING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n position: number;\n\n opponentView(): this {\n const view = this.copy();\n // \u5982\u679C\u662F\u80CC\u9762\u7279\u53EC (POS_FACEDOWN)\uFF0C\u9690\u85CF code\n if (view.position & OcgcoreCommonConstants.POS_FACEDOWN) {\n view.code = 0;\n }\n return view;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u5DF1\u65B9\u961F\u53CB\u53EF\u4EE5\u770B\u5230\u5B8C\u6574\u4FE1\u606F\uFF08\u5305\u62EC\u80CC\u9762\u7279\u53EC\u7684\u5361\uFF09\n return this.copy();\n }\n\n playerView(playerId: number): this {\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (playerId === this.controller) {\n return this.copy();\n }\n return this.opponentView();\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgStart_PlayerInfo {\n @BinaryField('u16', 0)\n deckCount: number;\n\n @BinaryField('u16', 2)\n extraCount: number;\n}\n\nexport class YGOProMsgStart extends YGOProMsgBase {\n static identifier = 4; // MSG_START\n\n /**\n * Player type / position (composite field):\n * - Low 4 bits (0x0F): Player number (0=first, 1=second, 2-3 in tag mode)\n * - High 4 bits (0xF0): Observer flag (0x10 = observer)\n *\n * Use `playerNumber` and `observerFlag` getters/setters to access individual components.\n */\n @BinaryField('u8', 0)\n playerType: number;\n\n @BinaryField('u8', 1)\n duelRule: number;\n\n @BinaryField('i32', 2)\n startLp0: number;\n\n @BinaryField('i32', 6)\n startLp1: number;\n\n @BinaryField(() => YGOProMsgStart_PlayerInfo, 10)\n player0: YGOProMsgStart_PlayerInfo;\n\n @BinaryField(() => YGOProMsgStart_PlayerInfo, 14)\n player1: YGOProMsgStart_PlayerInfo;\n\n /**\n * Get/Set player number (low 4 bits, 0-3)\n */\n get playerNumber(): number {\n return this.playerType & 0x0f;\n }\n\n set playerNumber(value: number) {\n this.playerType = (this.playerType & 0xf0) | (value & 0x0f);\n }\n\n /**\n * Get/Set observer flag (high 4 bits, 0x00 or 0x10)\n */\n get observerFlag(): number {\n return this.playerType & 0xf0;\n }\n\n set observerFlag(value: number) {\n this.playerType = (this.playerType & 0x0f) | (value & 0xf0);\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSummoned extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SUMMONED;\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSummoning extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SUMMONING;\n\n @BinaryField('i32', 0)\n code: number;\n\n @BinaryField('u8', 4)\n controller: number;\n\n @BinaryField('u8', 5)\n location: number;\n\n @BinaryField('u8', 6)\n sequence: number;\n\n @BinaryField('u8', 7)\n position: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\nimport { RequireQueryCardLocation } from '../query-location';\n\nexport class YGOProMsgSwap_CardLocation {\n @BinaryField('u8', 0)\n controller: number;\n\n @BinaryField('u8', 1)\n location: number;\n\n @BinaryField('u8', 2)\n sequence: number;\n\n @BinaryField('u8', 3)\n position: number;\n}\n\nexport class YGOProMsgSwap extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SWAP;\n\n @BinaryField(() => YGOProMsgSwap_CardLocation, 0)\n card1: YGOProMsgSwap_CardLocation;\n\n @BinaryField(() => YGOProMsgSwap_CardLocation, 4)\n card2: YGOProMsgSwap_CardLocation;\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [\n {\n player: this.card1.controller,\n location: this.card1.location,\n sequence: this.card1.sequence,\n },\n {\n player: this.card2.controller,\n location: this.card2.location,\n sequence: this.card2.sequence,\n },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgSwapGraveDeck extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_SWAP_GRAVE_DECK;\n\n @BinaryField('u8', 0)\n player: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgTagSwap extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_TAG_SWAP;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n mzoneCount: number;\n\n @BinaryField('u8', 2)\n extraCount: number;\n\n @BinaryField('u8', 3)\n pzoneCount: number;\n\n @BinaryField('u8', 4)\n handCount: number;\n\n // \u5BF9\u5E94 ocgcore::field::tag_swap \u5199\u5165\u7684 topcode\uFF08\u5728 deck_reversed \u65F6\u53EF\u80FD\u975E 0\uFF09\n @BinaryField('i32', 5)\n topCode: number;\n\n @BinaryField('i32', 9, (obj) => obj.handCount)\n handCards: number[];\n\n @BinaryField('i32', (obj) => 9 + obj.handCount * 4, (obj) => obj.extraCount)\n extraCards: number[];\n\n // \u5BF9\u65B9\u548C\u961F\u53CB\u89C6\u89D2\u9700\u8981\u9690\u85CF\u624B\u724C\u548C\u989D\u5916\u5361\u7EC4\u4FE1\u606F\n opponentView(): this {\n const view = this.copy();\n // \u6839\u636E tag_duel.cpp\uFF0C\u624B\u724C\u548C\u989D\u5916\u5361\u7EC4\u90FD\u53EA\u906E\u63A9\u975E\u516C\u5F00\u7684\uFF08\u6CA1\u6709 0x80000000 \u6807\u8BB0\u7684\uFF09\n view.handCards = view.handCards.map((card) => {\n if (!(card & 0x80000000)) {\n return 0;\n }\n return card;\n });\n view.extraCards = view.extraCards.map((card) => {\n if (!(card & 0x80000000)) {\n return 0;\n }\n return card;\n });\n return view;\n }\n\n teammateView(): this {\n return this.opponentView();\n }\n\n getRequireRefreshZones() {\n const location =\n OcgcoreScriptConstants.LOCATION_MZONE |\n OcgcoreScriptConstants.LOCATION_SZONE |\n OcgcoreScriptConstants.LOCATION_HAND;\n return [\n { player: 0, location },\n { player: 1, location },\n ];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgTossCoin extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_TOSS_COIN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u8', 2, (obj) => obj.count)\n results: number[];\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgTossDice extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_TOSS_DICE;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n count: number;\n\n @BinaryField('u8', 2, (obj) => obj.count)\n results: number[];\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\nimport { CardQuery, serializeCardQuery } from '../../common/card-query';\nimport { RequireQueryCardLocation } from '../query-location';\n\n// MSG_UPDATE_CARD \u7684\u7ED3\u6784\uFF1A\u66F4\u65B0\u5355\u5F20\u5361\u7247\u7684\u4FE1\u606F\nexport class YGOProMsgUpdateCard extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_UPDATE_CARD;\n\n controller: number;\n location: number;\n sequence: number;\n card: CardQuery;\n\n opponentView(): this {\n const copy = this.copy();\n // \u5982\u679C\u5361\u7247\u662F\u76D6\u653E\u7684\uFF0C\u6E05\u9664\u67E5\u8BE2\u6570\u636E\uFF08\u53EA\u4FDD\u7559 flags = QUERY_CODE\uFF0Ccode = 0\uFF09\n if (\n copy.card?.position &&\n copy.card.position & OcgcoreCommonConstants.POS_FACEDOWN\n ) {\n const clearedCard = new CardQuery();\n clearedCard.flags = OcgcoreCommonConstants.QUERY_CODE;\n clearedCard.code = 0;\n clearedCard.empty = false;\n copy.card = clearedCard;\n }\n return copy;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0CRefreshSingle \u603B\u662F\u5148\u628A\u5B8C\u6574 UPDATE_CARD \u53D1\u7ED9\u540C\u961F\u73A9\u5BB6\n // \uFF08\u5305\u62EC\u573A\u4E0A\u80CC\u9762\u3001\u624B\u724C/\u5361\u7EC4\u7B49\u975E\u516C\u5F00\u533A\u57DF\uFF09\n return this.copy();\n }\n\n playerView(playerId: number): this {\n // MSG_UPDATE_CARD \u7684\u5B57\u6BB5\u540D\u662F controller\uFF0C\u4E0D\u662F player\n // \u6240\u4EE5\u9700\u8981\u91CD\u5199 playerView \u65B9\u6CD5\n if (playerId === NetPlayerType.OBSERVER) {\n return this.observerView();\n }\n if (this.controller === playerId) {\n return this.copy();\n }\n return this.opponentView();\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n if (data.length < 4) {\n throw new Error('MSG_UPDATE_CARD data too short');\n }\n\n this.controller = data[1];\n this.location = data[2];\n this.sequence = data[3];\n\n // \u89E3\u6790\u67E5\u8BE2\u6570\u636E\uFF0C\u524D 4 \u5B57\u8282\u662F\u957F\u5EA6\n const queryDataWithLength = data.slice(4);\n if (queryDataWithLength.length < 8) {\n throw new Error('Query data too short');\n }\n\n const view = new DataView(\n queryDataWithLength.buffer,\n queryDataWithLength.byteOffset,\n queryDataWithLength.byteLength,\n );\n const length = view.getInt32(0, true);\n\n // \u8DF3\u8FC7\u957F\u5EA6\u5B57\u6BB5\uFF0C\u4ECE flags \u5F00\u59CB\u89E3\u6790\n const cardQueryData = queryDataWithLength.slice(4, length);\n this.card = new CardQuery();\n this.card.fromPayload(cardQueryData);\n\n return this;\n }\n\n toPayload(): Uint8Array {\n const cardPayload = serializeCardQuery(this.card); // \u81F3\u5C11\u5305\u542B flags\n const length = 4 + cardPayload.length; // \u957F\u5EA6\u5B57\u6BB5\u672C\u8EAB + \u67E5\u8BE2\u6570\u636E\n\n const result = new Uint8Array(4 + length);\n const view = new DataView(result.buffer);\n\n result[0] = this.identifier;\n result[1] = this.controller;\n result[2] = this.location;\n result[3] = this.sequence;\n\n // \u5199\u5165\u957F\u5EA6\n view.setInt32(4, length, true);\n\n // \u5199\u5165\u67E5\u8BE2\u6570\u636E\n result.set(cardPayload, 8);\n\n return result;\n }\n\n getRequireRefreshCards(): RequireQueryCardLocation[] {\n return [\n {\n player: this.controller,\n location: this.location,\n sequence: this.sequence,\n },\n ];\n }\n}\n", "import { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { OcgcoreScriptConstants } from '../../../vendor/script-constants';\nimport { NetPlayerType } from '../../network-enums';\nimport { YGOProMsgBase } from '../base';\nimport { CardQuery, serializeCardQuery } from '../../common/card-query';\n\n// MSG_UPDATE_DATA \u7684\u7ED3\u6784\uFF1A\u66F4\u65B0\u67D0\u4E2A\u4F4D\u7F6E\u6240\u6709\u5361\u7247\u7684\u4FE1\u606F\nexport class YGOProMsgUpdateData extends YGOProMsgBase {\n static identifier = 6; // MSG_UPDATE_DATA\n\n player: number;\n location: number;\n cards: CardQuery[];\n\n opponentView(): this {\n const copy = this.copy();\n // \u5BF9\u4E8E\u6BCF\u5F20\u76D6\u653E\u7684\u5361\u7247\uFF0C\u6E05\u9664\u67E5\u8BE2\u6570\u636E\uFF08\u53EA\u4FDD\u7559\u957F\u5EA6\u5B57\u6BB5\uFF0C\u6240\u6709\u6570\u636E\u6E05\u96F6\uFF09\n if (copy.cards) {\n copy.cards = copy.cards.map((card) => {\n if (\n card.position &&\n card.position & OcgcoreCommonConstants.POS_FACEDOWN\n ) {\n // \u76D6\u653E\u7684\u5361\u7247\uFF0C\u6E05\u9664\u6240\u6709\u67E5\u8BE2\u6570\u636E\n const clearedCard = new CardQuery();\n clearedCard.flags = 0;\n clearedCard.empty = true;\n return clearedCard;\n }\n return card;\n });\n }\n return copy;\n }\n\n teammateView(): this {\n // TAG \u51B3\u6597\u4E2D\uFF0C\u961F\u53CB\u7684\u89C6\u89D2\u89C4\u5219\uFF08\u53C2\u8003 tag_duel.cpp\uFF09\uFF1A\n // - MZONE/SZONE\uFF1A\u961F\u53CB\u53EF\u4EE5\u770B\u5230\u5DF1\u65B9\u76D6\u653E\u7684\u5361\u7247\uFF08RefreshMzone/RefreshSzone \u53D1\u7ED9\u540C\u961F\u4E24\u4E2A\u73A9\u5BB6\uFF09\n // - HAND\uFF1A\u961F\u53CB\u4E5F\u770B\u4E0D\u5230\u975E\u516C\u5F00\u7684\u624B\u724C\uFF08RefreshHand \u53EA\u53D1\u7ED9\u5F53\u524D\u64CD\u4F5C\u73A9\u5BB6\u5B8C\u6574\u6570\u636E\uFF09\n // - \u5176\u4ED6\u516C\u5F00\u533A\u57DF\uFF08GRAVE \u7B49\uFF09\uFF1A\u6240\u6709\u4EBA\u90FD\u80FD\u770B\u5230\n\n if (\n this.location === OcgcoreScriptConstants.LOCATION_MZONE ||\n this.location === OcgcoreScriptConstants.LOCATION_SZONE\n ) {\n // \u573A\u4E0A\u533A\u57DF\uFF0C\u961F\u53CB\u53EF\u4EE5\u770B\u5230\u5B8C\u6574\u6570\u636E\uFF08\u5305\u62EC\u76D6\u653E\uFF09\n return this.copy();\n } else if (this.location === OcgcoreScriptConstants.LOCATION_HAND) {\n // \u624B\u724C\u533A\u57DF\uFF0C\u961F\u53CB\u4E5F\u770B\u4E0D\u5230\u975E\u516C\u5F00\u7684\u5361\u7247\n const copy = this.copy();\n if (copy.cards) {\n copy.cards = copy.cards.map((card) => {\n // \u53EA\u6709\u8868\u4FA7\uFF08\u516C\u5F00\uFF09\u7684\u624B\u724C\u624D\u80FD\u88AB\u770B\u5230\n if (\n !card.position ||\n !(card.position & OcgcoreCommonConstants.POS_FACEUP)\n ) {\n const clearedCard = new CardQuery();\n clearedCard.flags = 0;\n clearedCard.empty = true;\n return clearedCard;\n }\n return card;\n });\n }\n return copy;\n } else {\n // \u5176\u4ED6\u533A\u57DF\uFF08\u5893\u5730\u3001\u9664\u5916\u7B49\uFF09\uFF0C\u901A\u5E38\u662F\u516C\u5F00\u7684\n return this.copy();\n }\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 1) {\n throw new Error('MSG data too short');\n }\n const msgType = data[0];\n if (msgType !== this.identifier) {\n throw new Error(\n `MSG type mismatch: expected ${this.identifier}, got ${msgType}`,\n );\n }\n if (data.length < 3) {\n throw new Error('MSG_UPDATE_DATA data too short');\n }\n\n this.player = data[1];\n this.location = data[2];\n\n // \u89E3\u6790\u591A\u4E2A\u5361\u7247\u7684\u67E5\u8BE2\u6570\u636E\n this.cards = [];\n let offset = 3;\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n while (offset + 4 <= data.length) {\n const chunkLen = view.getInt32(offset, true);\n if (chunkLen <= 0) {\n break;\n }\n\n const end = Math.min(data.length, offset + chunkLen);\n\n if (chunkLen <= 4) {\n // \u7A7A\u5361\u7247\n const card = new CardQuery();\n card.flags = 0;\n card.empty = true;\n this.cards.push(card);\n } else {\n // \u8DF3\u8FC7\u957F\u5EA6\u5B57\u6BB5\uFF0C\u4ECE flags \u5F00\u59CB\u89E3\u6790\n const cardQueryData = data.slice(offset + 4, end);\n const card = new CardQuery();\n card.fromPayload(cardQueryData);\n this.cards.push(card);\n }\n\n offset += chunkLen;\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // \u8BA1\u7B97\u603B\u5927\u5C0F\n let totalSize = 3; // identifier + player + location\n\n const cardPayloads: Uint8Array[] = [];\n for (const card of this.cards || []) {\n const payload = serializeCardQuery(card);\n cardPayloads.push(payload);\n totalSize += 4 + payload.length; // \u957F\u5EA6\u5B57\u6BB5 + \u6570\u636E\n }\n\n const result = new Uint8Array(totalSize);\n const view = new DataView(result.buffer);\n let offset = 0;\n\n result[offset++] = this.identifier;\n result[offset++] = this.player;\n result[offset++] = this.location;\n\n // \u5199\u5165\u6BCF\u4E2A\u5361\u7247\u7684\u6570\u636E\n for (const payload of cardPayloads) {\n const length = 4 + payload.length;\n view.setInt32(offset, length, true);\n offset += 4;\n result.set(payload, offset);\n offset += payload.length;\n }\n\n return result;\n }\n}\n", "import { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgWaiting extends YGOProMsgBase {\n static identifier = 3; // MSG_WAITING\n\n getSendTargets(): number[] {\n return [];\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { OcgcoreCommonConstants } from '../../../vendor/ocgcore-constants';\nimport { YGOProMsgBase } from '../base';\n\nexport class YGOProMsgWin extends YGOProMsgBase {\n static identifier = OcgcoreCommonConstants.MSG_WIN;\n\n @BinaryField('u8', 0)\n player: number;\n\n @BinaryField('u8', 1)\n type: number;\n}\n", "import { RegistryBase } from '../../proto-base/registry-base';\nimport { YGOProMsgBase } from './base';\nimport {\n YGOProMsgAddCounter,\n YGOProMsgAnnounceAttrib,\n YGOProMsgAnnounceCard,\n YGOProMsgAnnounceNumber,\n YGOProMsgAnnounceRace,\n YGOProMsgAttack,\n YGOProMsgAttackDisabled,\n YGOProMsgBattle,\n YGOProMsgBecomeTarget,\n YGOProMsgCancelTarget,\n YGOProMsgCardHint,\n YGOProMsgCardTarget,\n YGOProMsgChainDisabled,\n YGOProMsgChainEnd,\n YGOProMsgChainNegated,\n YGOProMsgChainSolved,\n YGOProMsgChainSolving,\n YGOProMsgChained,\n YGOProMsgChaining,\n YGOProMsgConfirmCards,\n YGOProMsgConfirmDeckTop,\n YGOProMsgConfirmExtraTop,\n YGOProMsgDamage,\n YGOProMsgDamageStepEnd,\n YGOProMsgDamageStepStart,\n YGOProMsgDeckTop,\n YGOProMsgDraw,\n YGOProMsgEquip,\n YGOProMsgFieldDisabled,\n YGOProMsgFlipSummoned,\n YGOProMsgFlipSummoning,\n YGOProMsgHandRes,\n YGOProMsgHint,\n YGOProMsgLpUpdate,\n YGOProMsgMatchKill,\n YGOProMsgMissedEffect,\n YGOProMsgMove,\n YGOProMsgNewPhase,\n YGOProMsgNewTurn,\n YGOProMsgPayLpCost,\n YGOProMsgPlayerHint,\n YGOProMsgPosChange,\n YGOProMsgRandomSelected,\n YGOProMsgRecover,\n YGOProMsgReloadField,\n YGOProMsgRemoveCounter,\n YGOProMsgResetTime,\n YGOProMsgRetry,\n YGOProMsgReverseDeck,\n YGOProMsgRockPaperScissors,\n YGOProMsgSelectBattleCmd,\n YGOProMsgSelectCard,\n YGOProMsgSelectChain,\n YGOProMsgSelectCounter,\n YGOProMsgSelectDisField,\n YGOProMsgSelectEffectYn,\n YGOProMsgSelectIdleCmd,\n YGOProMsgSelectOption,\n YGOProMsgSelectPlace,\n YGOProMsgSelectPosition,\n YGOProMsgSelectSum,\n YGOProMsgSelectTribute,\n YGOProMsgSelectUnselectCard,\n YGOProMsgSelectYesNo,\n YGOProMsgSet,\n YGOProMsgShuffleDeck,\n YGOProMsgShuffleExtra,\n YGOProMsgShuffleHand,\n YGOProMsgShuffleSetCard,\n YGOProMsgSortCard,\n YGOProMsgSpSummoned,\n YGOProMsgSpSummoning,\n YGOProMsgStart,\n YGOProMsgSummoned,\n YGOProMsgSummoning,\n YGOProMsgSwap,\n YGOProMsgSwapGraveDeck,\n YGOProMsgTagSwap,\n YGOProMsgTossCoin,\n YGOProMsgTossDice,\n YGOProMsgUpdateCard,\n YGOProMsgUpdateData,\n YGOProMsgWaiting,\n YGOProMsgWin,\n} from './proto';\n\nexport const YGOProMessages = new RegistryBase(YGOProMsgBase);\n\nYGOProMessages.register(YGOProMsgRetry);\nYGOProMessages.register(YGOProMsgHint);\nYGOProMessages.register(YGOProMsgWin);\nYGOProMessages.register(YGOProMsgSelectBattleCmd);\nYGOProMessages.register(YGOProMsgSelectIdleCmd);\nYGOProMessages.register(YGOProMsgSelectEffectYn);\nYGOProMessages.register(YGOProMsgSelectYesNo);\nYGOProMessages.register(YGOProMsgSelectOption);\nYGOProMessages.register(YGOProMsgSelectCard);\nYGOProMessages.register(YGOProMsgSelectChain);\nYGOProMessages.register(YGOProMsgSelectPlace);\nYGOProMessages.register(YGOProMsgSelectPosition);\nYGOProMessages.register(YGOProMsgSelectTribute);\nYGOProMessages.register(YGOProMsgSelectCounter);\nYGOProMessages.register(YGOProMsgSelectSum);\nYGOProMessages.register(YGOProMsgSelectDisField);\nYGOProMessages.register(YGOProMsgSortCard);\nYGOProMessages.register(YGOProMsgSelectUnselectCard);\nYGOProMessages.register(YGOProMsgConfirmDeckTop);\nYGOProMessages.register(YGOProMsgConfirmCards);\nYGOProMessages.register(YGOProMsgShuffleDeck);\nYGOProMessages.register(YGOProMsgShuffleHand);\nYGOProMessages.register(YGOProMsgSwapGraveDeck);\nYGOProMessages.register(YGOProMsgShuffleExtra);\nYGOProMessages.register(YGOProMsgShuffleSetCard);\nYGOProMessages.register(YGOProMsgReverseDeck);\nYGOProMessages.register(YGOProMsgDeckTop);\nYGOProMessages.register(YGOProMsgNewTurn);\nYGOProMessages.register(YGOProMsgNewPhase);\nYGOProMessages.register(YGOProMsgConfirmExtraTop);\nYGOProMessages.register(YGOProMsgMove);\nYGOProMessages.register(YGOProMsgPosChange);\nYGOProMessages.register(YGOProMsgSet);\nYGOProMessages.register(YGOProMsgSwap);\nYGOProMessages.register(YGOProMsgFieldDisabled);\nYGOProMessages.register(YGOProMsgSummoning);\nYGOProMessages.register(YGOProMsgSummoned);\nYGOProMessages.register(YGOProMsgSpSummoning);\nYGOProMessages.register(YGOProMsgSpSummoned);\nYGOProMessages.register(YGOProMsgFlipSummoning);\nYGOProMessages.register(YGOProMsgFlipSummoned);\nYGOProMessages.register(YGOProMsgChaining);\nYGOProMessages.register(YGOProMsgChained);\nYGOProMessages.register(YGOProMsgChainSolving);\nYGOProMessages.register(YGOProMsgChainSolved);\nYGOProMessages.register(YGOProMsgChainEnd);\nYGOProMessages.register(YGOProMsgChainNegated);\nYGOProMessages.register(YGOProMsgChainDisabled);\nYGOProMessages.register(YGOProMsgRandomSelected);\nYGOProMessages.register(YGOProMsgBecomeTarget);\nYGOProMessages.register(YGOProMsgDraw);\nYGOProMessages.register(YGOProMsgDamage);\nYGOProMessages.register(YGOProMsgRecover);\nYGOProMessages.register(YGOProMsgEquip);\nYGOProMessages.register(YGOProMsgLpUpdate);\nYGOProMessages.register(YGOProMsgCardTarget);\nYGOProMessages.register(YGOProMsgCancelTarget);\nYGOProMessages.register(YGOProMsgPayLpCost);\nYGOProMessages.register(YGOProMsgAddCounter);\nYGOProMessages.register(YGOProMsgRemoveCounter);\nYGOProMessages.register(YGOProMsgAttack);\nYGOProMessages.register(YGOProMsgBattle);\nYGOProMessages.register(YGOProMsgAttackDisabled);\nYGOProMessages.register(YGOProMsgDamageStepStart);\nYGOProMessages.register(YGOProMsgDamageStepEnd);\nYGOProMessages.register(YGOProMsgMissedEffect);\nYGOProMessages.register(YGOProMsgTossCoin);\nYGOProMessages.register(YGOProMsgTossDice);\nYGOProMessages.register(YGOProMsgRockPaperScissors);\nYGOProMessages.register(YGOProMsgHandRes);\nYGOProMessages.register(YGOProMsgAnnounceRace);\nYGOProMessages.register(YGOProMsgAnnounceAttrib);\nYGOProMessages.register(YGOProMsgAnnounceCard);\nYGOProMessages.register(YGOProMsgAnnounceNumber);\nYGOProMessages.register(YGOProMsgCardHint);\nYGOProMessages.register(YGOProMsgTagSwap);\nYGOProMessages.register(YGOProMsgPlayerHint);\nYGOProMessages.register(YGOProMsgMatchKill);\nYGOProMessages.register(YGOProMsgResetTime);\nYGOProMessages.register(YGOProMsgUpdateCard);\nYGOProMessages.register(YGOProMsgWaiting);\nYGOProMessages.register(YGOProMsgStart);\nYGOProMessages.register(YGOProMsgUpdateData);\nYGOProMessages.register(YGOProMsgReloadField);\n", "import { YGOProMessages } from '../../msg/registry';\nimport { YGOProMsgBase } from '../../msg/base';\nimport { YGOProStocBase } from '../base';\n\n// STOC_GAME_MSG: byte array (MSG protocol)\n// Uses YGOProMessages registry to parse MSG protocol\nexport class YGOProStocGameMsg extends YGOProStocBase {\n static identifier = 0x1;\n\n // Parsed MSG protocol message\n msg: YGOProMsgBase | undefined;\n\n fromPayload(data: Uint8Array): this {\n this.msg = YGOProMessages.getInstanceFromPayload(data);\n return this;\n }\n\n toPayload(): Uint8Array {\n if (!this.msg) {\n return new Uint8Array(0);\n }\n return this.msg.toPayload();\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.msg) {\n // Copy the msg object\n this.msg = data.msg.copy();\n }\n return this;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\nimport { ErrorMessageType } from '../../network-enums';\n\nexport class YGOProStocErrorMsg extends YGOProStocBase {\n static identifier = 0x2;\n\n @BinaryField('u8', 0)\n msg: ErrorMessageType;\n\n // 3 bytes padding\n\n @BinaryField('u32', 4)\n code: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_SELECT_HAND has no data (no body)\nexport class YGOProStocSelectHand extends YGOProStocBase {\n static identifier = 0x3;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_SELECT_TP has no data (no body)\nexport class YGOProStocSelectTp extends YGOProStocBase {\n static identifier = 0x4;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocHandResult extends YGOProStocBase {\n static identifier = 0x5;\n\n @BinaryField('u8', 0)\n res1: number;\n\n @BinaryField('u8', 1)\n res2: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_TP_RESULT is reserved (no data)\nexport class YGOProStocTpResult extends YGOProStocBase {\n static identifier = 0x6;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_CHANGE_SIDE has no data (no body)\nexport class YGOProStocChangeSide extends YGOProStocBase {\n static identifier = 0x7;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_WAITING_SIDE has no data (no body)\nexport class YGOProStocWaitingSide extends YGOProStocBase {\n static identifier = 0x8;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n/**\n * Deck count information for a single player\n */\nexport class YGOProStocDeckCount_DeckInfo {\n @BinaryField('i16', 0)\n main: number;\n\n @BinaryField('i16', 2)\n extra: number;\n\n @BinaryField('i16', 4)\n side: number;\n}\n\n/**\n * STOC_DECK_COUNT: int16_t[6]\n *\n * Sent during side deck phase to inform clients of deck counts.\n */\nexport class YGOProStocDeckCount extends YGOProStocBase {\n static identifier = 0x9;\n\n @BinaryField(() => YGOProStocDeckCount_DeckInfo, 0)\n player0DeckCount: YGOProStocDeckCount_DeckInfo;\n\n @BinaryField(() => YGOProStocDeckCount_DeckInfo, 6)\n player1DeckCount: YGOProStocDeckCount_DeckInfo;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n// STOC_CREATE_GAME is reserved\nexport class YGOProStocCreateGame extends YGOProStocBase {\n static identifier = 0x11;\n\n @BinaryField('u32', 0)\n gameid: number;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { HostInfo } from '../../common';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocJoinGame extends YGOProStocBase {\n static identifier = 0x12;\n\n @BinaryField(() => HostInfo, 0)\n info: HostInfo;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n/**\n * STOC_TYPE_CHANGE\n *\n * Informs the client of their player type and host status in the room.\n */\nexport class YGOProStocTypeChange extends YGOProStocBase {\n static identifier = 0x13;\n\n /**\n * Composite field:\n * - Low 4 bits (0x0F): Player position (0-7)\n * - High 4 bits (0xF0): Host flag (0x10 = host, 0x00 = not host)\n *\n * Use `playerPosition` and `isHost` getters/setters to access individual components.\n */\n @BinaryField('u8', 0)\n type: number;\n\n /**\n * Get/Set player position (low 4 bits, 0-7)\n */\n get playerPosition(): number {\n return this.type & 0x0f;\n }\n\n set playerPosition(value: number) {\n this.type = (this.type & 0xf0) | (value & 0x0f);\n }\n\n /**\n * Get/Set host flag (high 4 bits)\n * Returns true if this player is the host\n */\n get isHost(): boolean {\n return ((this.type >> 4) & 0x0f) !== 0;\n }\n\n set isHost(value: boolean) {\n if (value) {\n this.type = (this.type & 0x0f) | 0x10;\n } else {\n this.type = this.type & 0x0f;\n }\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\n// STOC_LEAVE_GAME is reserved\nexport class YGOProStocLeaveGame extends YGOProStocBase {\n static identifier = 0x14;\n\n @BinaryField('u8', 0)\n pos: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_DUEL_START has no data (no body)\nexport class YGOProStocDuelStart extends YGOProStocBase {\n static identifier = 0x15;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_DUEL_END has no data (no body)\nexport class YGOProStocDuelEnd extends YGOProStocBase {\n static identifier = 0x16;\n}\n", "import { YGOProYrp } from 'ygopro-yrp-encode';\nimport { YGOProStocBase } from '../base';\n\n// STOC_REPLAY: ExtendedReplayHeader + byte array\n// Uses ygopro-yrp-encode\nexport class YGOProStocReplay extends YGOProStocBase {\n static identifier = 0x17;\n\n replay: YGOProYrp;\n\n constructor() {\n super();\n this.replay = new YGOProYrp();\n }\n\n fromPayload(data: Uint8Array): this {\n this.replay = new YGOProYrp().fromYrp(data);\n return this;\n }\n\n toPayload(): Uint8Array {\n return this.replay.toYrp();\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.replay) {\n // Pass replay data to constructor\n this.replay = new YGOProYrp(data.replay);\n }\n return this;\n }\n\n copy(): this {\n const copied = new (this.constructor as any)();\n copied.replay = new YGOProYrp(this.replay);\n return copied;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocTimeLimit extends YGOProStocBase {\n static identifier = 0x18;\n\n @BinaryField('u8', 0)\n player: number;\n\n // 1 byte padding\n\n @BinaryField('u16', 2)\n left_time: number;\n}\n", "import { YGOProStocBase } from '../base';\n\nconst STOC_CHAT_MAX_LENGTH = 256;\n\n// STOC_CHAT: uint16_t + uint16_t array\n// uint16_t player_type; (can be NetPlayerType 0-7 or ChatColor 8-19)\n// uint16_t msg[256]; (UTF-16 string, variable length)\n// Maximum length: 256 characters (LEN_CHAT_MSG in YGOPro)\n// Maximum total size: (1 + 256) * 2 = 514 bytes (SIZE_STOC_CHAT)\nexport class YGOProStocChat extends YGOProStocBase {\n static identifier = 0x19;\n static readonly MAX_LENGTH = STOC_CHAT_MAX_LENGTH;\n\n player_type: number; // NetPlayerType (0-7) or ChatColor (8-19)\n msg: string;\n\n constructor() {\n super();\n this.player_type = 0;\n this.msg = '';\n }\n\n fromPayload(data: Uint8Array): this {\n if (data.length < 2) {\n throw new Error('STOC_CHAT data too short');\n }\n\n // Read player_type (2 bytes, little endian)\n this.player_type = data[0] | (data[1] << 8);\n\n // Decode remaining bytes as UTF-16LE\n if (data.length > 2) {\n const decoder = new TextDecoder('utf-16le');\n this.msg = decoder.decode(data.slice(2)).replace(/\\0+$/, ''); // Remove trailing nulls\n } else {\n this.msg = '';\n }\n\n return this;\n }\n\n toPayload(): Uint8Array {\n // Truncate message to maximum length (256 characters)\n const text =\n this.msg.length > STOC_CHAT_MAX_LENGTH\n ? this.msg.substring(0, STOC_CHAT_MAX_LENGTH)\n : this.msg;\n\n // Convert to UTF-16LE manually\n const utf16 = new Uint16Array(text.length + 1); // +1 for null terminator\n for (let i = 0; i < text.length; i++) {\n utf16[i] = text.charCodeAt(i);\n }\n utf16[text.length] = 0; // Null terminator\n\n // Create result buffer: player_type (2 bytes) + UTF-16LE string\n const result = new Uint8Array(2 + utf16.byteLength);\n\n // Write player_type (little endian)\n result[0] = this.player_type & 0xff;\n result[1] = (this.player_type >> 8) & 0xff;\n\n // Write UTF-16LE string\n result.set(new Uint8Array(utf16.buffer), 2);\n\n return result;\n }\n\n fromPartial(data: Partial<this>): this {\n if (data.player_type !== undefined) {\n this.player_type = data.player_type;\n }\n if (data.msg !== undefined) {\n this.msg = data.msg;\n }\n return this;\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocHsPlayerEnter extends YGOProStocBase {\n static identifier = 0x20;\n\n @BinaryField('utf16', 0, 20)\n name: string;\n\n @BinaryField('u8', 40)\n pos: number;\n\n // 1 byte padding (note: actual size is 41 bytes, not 42 - workaround in original code)\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { PlayerChangeState } from '../../network-enums';\nimport { YGOProStocBase } from '../base';\n\n/**\n * STOC_HS_PLAYER_CHANGE\n *\n * Notifies clients of player state changes in the host screen (pre-game lobby).\n */\nexport class YGOProStocHsPlayerChange extends YGOProStocBase {\n static identifier = 0x21;\n\n /**\n * Composite field: pos<<4 | state\n * - Low 4 bits (0x0F): Player state (PlayerChangeState)\n * - High 4 bits (0xF0): Player position (0-3)\n *\n * Use `playerState` and `playerPosition` getters/setters to access individual components.\n */\n @BinaryField('u8', 0)\n status: number;\n\n /**\n * Get/Set player state (low 4 bits)\n * Can be a PlayerChangeState enum value or a player position (0-7) for position changes\n */\n get playerState(): number {\n return this.status & 0x0f;\n }\n\n set playerState(value: number) {\n this.status = (this.status & 0xf0) | (value & 0x0f);\n }\n\n /**\n * Get/Set player position (high 4 bits, 0-3)\n */\n get playerPosition(): number {\n return (this.status >> 4) & 0x0f;\n }\n\n set playerPosition(value: number) {\n this.status = (this.status & 0x0f) | ((value & 0x0f) << 4);\n }\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\n\nexport class YGOProStocHsWatchChange extends YGOProStocBase {\n static identifier = 0x22;\n\n @BinaryField('u16', 0)\n watch_count: number;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_TEAMMATE_SURRENDER has no data (no body)\nexport class YGOProStocTeammateSurrender extends YGOProStocBase {\n static identifier = 0x23;\n}\n", "import { YGOProStocBase } from '../base';\n\n// STOC_FIELD_FINISH has no data (no body)\nexport class YGOProStocFieldFinish extends YGOProStocBase {\n static identifier = 0x30;\n}\n", "import { BinaryField } from '../../../binary/binary-meta';\nimport { YGOProStocBase } from '../base';\nimport { RoomStatus } from '../../network-enums';\n\n// STOC_SRVPRO_ROOMLIST - SRVPro room list protocol\n// Structure for each room entry\nexport class SrvproRoomInfo {\n @BinaryField('utf8', 0, 64)\n roomname: string;\n\n @BinaryField('u8', 64)\n room_status: RoomStatus;\n\n @BinaryField('i8', 65)\n room_duel_count: number;\n\n @BinaryField('i8', 66)\n room_turn_count: number;\n\n @BinaryField('utf8', 67, 128)\n player1: string;\n\n @BinaryField('i8', 195)\n player1_score: number;\n\n @BinaryField('i32', 196)\n player1_lp: number;\n\n @BinaryField('utf8', 200, 128)\n player2: string;\n\n @BinaryField('i8', 328)\n player2_score: number;\n\n @BinaryField('i32', 329)\n player2_lp: number;\n}\n\nexport class YGOProStocSrvproRoomlist extends YGOProStocBase {\n static identifier = 0x31;\n\n @BinaryField('u16', 0)\n count: number;\n\n @BinaryField(() => SrvproRoomInfo, 2, (obj) => obj.count)\n rooms: SrvproRoomInfo[];\n}\n", "import { ProtoRegistryBase } from '../../proto-base/proto-registry-base';\nimport { YGOProStocBase } from './base';\nimport {\n YGOProStocGameMsg,\n YGOProStocErrorMsg,\n YGOProStocSelectHand,\n YGOProStocSelectTp,\n YGOProStocHandResult,\n YGOProStocTpResult,\n YGOProStocChangeSide,\n YGOProStocWaitingSide,\n YGOProStocDeckCount,\n YGOProStocCreateGame,\n YGOProStocJoinGame,\n YGOProStocTypeChange,\n YGOProStocLeaveGame,\n YGOProStocDuelStart,\n YGOProStocDuelEnd,\n YGOProStocReplay,\n YGOProStocTimeLimit,\n YGOProStocChat,\n YGOProStocHsPlayerEnter,\n YGOProStocHsPlayerChange,\n YGOProStocHsWatchChange,\n YGOProStocTeammateSurrender,\n YGOProStocFieldFinish,\n YGOProStocSrvproRoomlist,\n} from './proto';\n\nexport const YGOProStoc = new ProtoRegistryBase(YGOProStocBase);\n\nYGOProStoc.register(YGOProStocGameMsg);\nYGOProStoc.register(YGOProStocErrorMsg);\nYGOProStoc.register(YGOProStocSelectHand);\nYGOProStoc.register(YGOProStocSelectTp);\nYGOProStoc.register(YGOProStocHandResult);\nYGOProStoc.register(YGOProStocTpResult);\nYGOProStoc.register(YGOProStocChangeSide);\nYGOProStoc.register(YGOProStocWaitingSide);\nYGOProStoc.register(YGOProStocDeckCount);\nYGOProStoc.register(YGOProStocCreateGame);\nYGOProStoc.register(YGOProStocJoinGame);\nYGOProStoc.register(YGOProStocTypeChange);\nYGOProStoc.register(YGOProStocLeaveGame);\nYGOProStoc.register(YGOProStocDuelStart);\nYGOProStoc.register(YGOProStocDuelEnd);\nYGOProStoc.register(YGOProStocReplay);\nYGOProStoc.register(YGOProStocTimeLimit);\nYGOProStoc.register(YGOProStocChat);\nYGOProStoc.register(YGOProStocHsPlayerEnter);\nYGOProStoc.register(YGOProStocHsPlayerChange);\nYGOProStoc.register(YGOProStocHsWatchChange);\nYGOProStoc.register(YGOProStocTeammateSurrender);\nYGOProStoc.register(YGOProStocFieldFinish);\nYGOProStoc.register(YGOProStocSrvproRoomlist);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["card", "HandResult", "TurnPlayerResult", "NetPlayerType", "ChatColor", "GameMode", "ErrorMessageType", "DeckErrorType", "PlayerChangeState", "RoomStatus", "BattleCmdType", "buffer", "card", "IdleCmdType", "buffer", "buffer"]
|
|
7
7
|
}
|