UNPKG

homm3-parsers

Version:

Collection of binary parsers able to parse various file formats related to Heroes of Might and Magic III

19 lines 2.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const binary_markup_1 = require("binary-markup"); const formation_1 = require("../enums/formation"); const constants_1 = require("../constants"); const common_bml_1 = require("../common.bml"); const spell_1 = require("../enums/spell"); exports.heroData = binary_markup_1.struct(binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.uint32) `absodId`, common_bml_1.owner `owner`, common_bml_1.hero `hero`, binary_markup_1.flag `hasName`, binary_markup_1.when(binary_markup_1.ctx `hasName`, common_bml_1.hommString) `name`, binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.flag) `hasExperience`, binary_markup_1.branch(binary_markup_1.ctx `format`, { [constants_1.MapFormat.ROE]: binary_markup_1.uint32, [constants_1.MapFormat.AB]: binary_markup_1.uint32, [constants_1.MapFormat.SOD]: binary_markup_1.when(binary_markup_1.ctx `hasExperience`, binary_markup_1.uint32), }) `experience`, binary_markup_1.flag `hasFace`, binary_markup_1.when(binary_markup_1.ctx `hasFace`, binary_markup_1.uint8) `face`, binary_markup_1.flag `hasSecondarySkills`, binary_markup_1.when(binary_markup_1.ctx `hasSecondarySkills`, binary_markup_1.struct(binary_markup_1.uint32 `count`, binary_markup_1.array(common_bml_1.secondarySkill, binary_markup_1.ctx `count`) `skills`)) `secondarySkills`, binary_markup_1.flag `hasCreatures`, binary_markup_1.when(binary_markup_1.ctx `hasCreatures`, common_bml_1.army) `creatures`, binary_markup_1.enums(binary_markup_1.uint8, formation_1.formationEnum) `formation`, binary_markup_1.flag `hasArtifacts`, binary_markup_1.when(binary_markup_1.ctx `hasArtifacts`, common_bml_1.artifacts) `artifacts`, binary_markup_1.uint8 `patrolRadius`, // default 0xFF binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.struct(binary_markup_1.flag `hasBiography`, binary_markup_1.when(binary_markup_1.ctx `hasBiography`, common_bml_1.hommString) `biography`)) `biography`, binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.enums(binary_markup_1.uint8, constants_1.genderEnum)) `gender`, binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.flag) `hasSpells`, binary_markup_1.branch(binary_markup_1.ctx `format`, { [constants_1.MapFormat.ROE]: binary_markup_1.pass, [constants_1.MapFormat.AB]: binary_markup_1.enums(binary_markup_1.uint8, spell_1.spellEnum), [constants_1.MapFormat.SOD]: binary_markup_1.when(binary_markup_1.ctx `hasSpells`, spell_1.spellsMask, binary_markup_1.pass), }) `spells`, binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.flag) `hasPrimarySkills`, binary_markup_1.when(binary_markup_1.ctx `hasPrimarySkills`, common_bml_1.primarySkills) `primarySkills`, binary_markup_1.skip(16)); exports.heroPlaceholder = binary_markup_1.struct(common_bml_1.owner `owner`, binary_markup_1.uint8 `type`, binary_markup_1.when(binary_markup_1.ctx `type`.eq(0xff), binary_markup_1.uint8) `powerRating`); //# sourceMappingURL=hero.bml.js.map