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
JavaScript
;
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