homm3-parsers
Version:
Collection of binary parsers able to parse various file formats related to Heroes of Might and Magic III
27 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const binary_markup_1 = require("binary-markup");
const common_bml_1 = require("../common.bml");
const quest_bml_1 = require("./quest.bml");
const quest_1 = require("../enums/quest");
const skill_1 = require("../enums/skill");
const QuestReward_1 = require("../contracts/enums/QuestReward");
const rewardBranches = {
[QuestReward_1.QuestReward.NONE]: binary_markup_1.pass,
[QuestReward_1.QuestReward.Experience]: common_bml_1.experience,
[QuestReward_1.QuestReward.SpellPoints]: binary_markup_1.uint32,
[QuestReward_1.QuestReward.Artifact]: common_bml_1.artifact,
[QuestReward_1.QuestReward.Luck]: binary_markup_1.byte,
[QuestReward_1.QuestReward.Morale]: binary_markup_1.byte,
[QuestReward_1.QuestReward.Spell]: common_bml_1.spell,
[QuestReward_1.QuestReward.Resource]: binary_markup_1.struct(common_bml_1.resource `resource`, binary_markup_1.uint32 `quantity`),
[QuestReward_1.QuestReward.PrimarySkill]: binary_markup_1.struct(binary_markup_1.enums(binary_markup_1.byte, skill_1.primarySkillEnum) `skill`, binary_markup_1.byte `bonus`),
[QuestReward_1.QuestReward.SecondarySkill]: common_bml_1.secondarySkill,
[QuestReward_1.QuestReward.Creature]: common_bml_1.creatureSlot,
};
exports.seersHut = binary_markup_1.struct(
// In RoE the only type of quest is "Return with artifacts", which in ROE is
// always only one artifact. The quest hence consists of one byte signifying
// the artifact type, 0xFF means quest type is None. In AB/SOD 0x00 means None.
binary_markup_1.when(common_bml_1.isRoE, common_bml_1.artifact) `artifactType`, binary_markup_1.when(common_bml_1.isNotRoE, quest_bml_1.quest) `quest`, binary_markup_1.enums(binary_markup_1.byte, quest_1.questRewardEnum) `rewardType`, binary_markup_1.branch(binary_markup_1.ctx `rewardType`, rewardBranches) `reward`, binary_markup_1.skip(2));
//# sourceMappingURL=seersHut.bml.js.map