UNPKG

homm3-parsers

Version:

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

493 lines (492 loc) 19.1 kB
import { MetaType } from '../contracts/enums/MetaType'; export declare enum ObjectType { NoObj = "NoObj", None0 = "None0", DecorativeTown = "DecorativeTown", AltarOfSacrifice = "AltarOfSacrifice", AnchorPoint = "AnchorPoint", Arena = "Arena", Artifact = "Artifact", PandorasBox = "PandorasBox", BlackMarket = "BlackMarket", Boat = "Boat", Borderguard = "Borderguard", Keymaster = "Keymaster", Buoy = "Buoy", Campfire = "Campfire", Cartographer = "Cartographer", SwanPond = "SwanPond", CoverOfDarkness = "CoverOfDarkness", CreatureBank = "CreatureBank", CreatureGenerator1 = "CreatureGenerator1", CreatureGenerator2 = "CreatureGenerator2", CreatureGenerator3 = "CreatureGenerator3", CreatureGenerator4 = "CreatureGenerator4", CursedGround1 = "CursedGround1", Corpse = "Corpse", MarlettoTower = "MarlettoTower", DerelictShip = "DerelictShip", DragonUtopia = "DragonUtopia", Event = "Event", EyeOfMagi = "EyeOfMagi", FaerieRing = "FaerieRing", Flotsam = "Flotsam", FountainOfFortune = "FountainOfFortune", FountainOfYouth = "FountainOfYouth", GardenOfRevelation = "GardenOfRevelation", Garrison = "Garrison", Hero = "Hero", HillFort = "HillFort", Grail = "Grail", HutOfMagi = "HutOfMagi", IdolOfFortune = "IdolOfFortune", LeanTo = "LeanTo", Blank40 = "Blank40", LibraryOfEnlightenment = "LibraryOfEnlightenment", Lighthouse = "Lighthouse", MonolithOneWayEntrance = "MonolithOneWayEntrance", MonolithOneWayExit = "MonolithOneWayExit", MonolithTwoWay = "MonolithTwoWay", MagicPlains1 = "MagicPlains1", SchoolOfMagic = "SchoolOfMagic", MagicSpring = "MagicSpring", MagicWell = "MagicWell", MarketOfTime = "MarketOfTime", MercenaryCamp = "MercenaryCamp", Mermaid = "Mermaid", Mine = "Mine", Creature = "Creature", MysticalGarden = "MysticalGarden", Oasis = "Oasis", Obelisk = "Obelisk", RedwoodObservatory = "RedwoodObservatory", OceanBottle = "OceanBottle", PillarOfFire = "PillarOfFire", StarAxis = "StarAxis", Prison = "Prison", Pyramid = "Pyramid", WogObject = "WogObject", RallyFlag = "RallyFlag", RandomArt = "RandomArt", RandomTreasureArt = "RandomTreasureArt", RandomMinorArt = "RandomMinorArt", RandomMajorArt = "RandomMajorArt", RandomRelicArt = "RandomRelicArt", RandomHero = "RandomHero", RandomCreature = "RandomCreature", RandomCreatureL1 = "RandomCreatureL1", RandomCreatureL2 = "RandomCreatureL2", RandomCreatureL3 = "RandomCreatureL3", RandomCreatureL4 = "RandomCreatureL4", RandomResource = "RandomResource", RandomTown = "RandomTown", RefugeeCamp = "RefugeeCamp", Resource = "Resource", Sanctuary = "Sanctuary", Scholar = "Scholar", SeaChest = "SeaChest", SeerHut = "SeerHut", Crypt = "Crypt", Shipwreck = "Shipwreck", ShipwreckSurvivor = "ShipwreckSurvivor", Shipyard = "Shipyard", ShrineOfMagicIncantation = "ShrineOfMagicIncantation", ShrineOfMagicGesture = "ShrineOfMagicGesture", ShrineOfMagicThought = "ShrineOfMagicThought", Sign = "Sign", Sirens = "Sirens", SpellScroll = "SpellScroll", Stables = "Stables", Tavern = "Tavern", Temple = "Temple", DenOfThieves = "DenOfThieves", Town = "Town", TradingPost = "TradingPost", LearningStone = "LearningStone", TreasureChest = "TreasureChest", TreeOfKnowledge = "TreeOfKnowledge", SubterraneanGate = "SubterraneanGate", University = "University", Wagon = "Wagon", WarMachineFactory = "WarMachineFactory", SchoolOfWar = "SchoolOfWar", WarriorsTomb = "WarriorsTomb", WaterWheel = "WaterWheel", WateringHole = "WateringHole", Whirlpool = "Whirlpool", Windmill = "Windmill", WitchHut = "WitchHut", ImpassableBrush = "ImpassableBrush", ImpassableBush = "ImpassableBush", ImpassableCactus = "ImpassableCactus", ImpassableCanyon = "ImpassableCanyon", ImpassableCrater = "ImpassableCrater", ImpassableDeadvegetation = "ImpassableDeadvegetation", ImpassableFlowers = "ImpassableFlowers", ImpassableFrozenlike = "ImpassableFrozenlike", ImpassableHedge = "ImpassableHedge", ImpassableHill = "ImpassableHill", Hole = "Hole", PassableKelp = "PassableKelp", ImpassableLake = "ImpassableLake", ImpassableLavaflow = "ImpassableLavaflow", ImpassableLavalake = "ImpassableLavalake", ImpassableMushrooms = "ImpassableMushrooms", ImpassableLog = "ImpassableLog", ImpassableMandrake = "ImpassableMandrake", ImpassableMoss = "ImpassableMoss", ImpassableMound = "ImpassableMound", ImpassableMountain = "ImpassableMountain", ImpassableOaktrees = "ImpassableOaktrees", ImpassableOutcropping = "ImpassableOutcropping", ImpassablePinetrees = "ImpassablePinetrees", ImpassablePlant = "ImpassablePlant", Passable139 = "Passable139", Passable140 = "Passable140", Passable141 = "Passable141", Passable142 = "Passable142", ImpassableRiverdelta = "ImpassableRiverdelta", Passable144 = "Passable144", Passable145 = "Passable145", Passable146 = "Passable146", ImpassableRock = "ImpassableRock", ImpassableSanddune = "ImpassableSanddune", ImpassableSandpit = "ImpassableSandpit", ImpassableShrub = "ImpassableShrub", ImpassableSkull = "ImpassableSkull", ImpassableStalagmite = "ImpassableStalagmite", ImpassableStump = "ImpassableStump", ImpassableTarpit = "ImpassableTarpit", ImpassableTrees = "ImpassableTrees", ImpassableVine = "ImpassableVine", ImpassableVolcanicvent = "ImpassableVolcanicvent", ImpassableVolcano = "ImpassableVolcano", ImpassableWillowtrees = "ImpassableWillowtrees", ImpassableYuccatrees = "ImpassableYuccatrees", ImpassableReef = "ImpassableReef", RandomCreatureL5 = "RandomCreatureL5", RandomCreatureL6 = "RandomCreatureL6", RandomCreatureL7 = "RandomCreatureL7", ImpassableBrush2 = "ImpassableBrush2", ImpassableBush2 = "ImpassableBush2", ImpassableCactus2 = "ImpassableCactus2", ImpassableCanyon2 = "ImpassableCanyon2", ImpassableCrater2 = "ImpassableCrater2", ImpassableDeadvegetation2 = "ImpassableDeadvegetation2", ImpassableFlowers2 = "ImpassableFlowers2", ImpassableFrozenlike2 = "ImpassableFrozenlike2", ImpassableHedge2 = "ImpassableHedge2", ImpassableHill2 = "ImpassableHill2", PassableHole2 = "PassableHole2", PassableKelp2 = "PassableKelp2", ImpassableLake2 = "ImpassableLake2", ImpassableLavaflow2 = "ImpassableLavaflow2", ImpassableLavalake2 = "ImpassableLavalake2", ImpassableMushrooms2 = "ImpassableMushrooms2", ImpassableLog2 = "ImpassableLog2", ImpassableMandrake2 = "ImpassableMandrake2", ImpassableMoss2 = "ImpassableMoss2", ImpassableMound2 = "ImpassableMound2", ImpassableMountain2 = "ImpassableMountain2", ImpassableOaktrees2 = "ImpassableOaktrees2", ImpassableOutcropping2 = "ImpassableOutcropping2", ImpassablePinetrees2 = "ImpassablePinetrees2", ImpassablePlant2 = "ImpassablePlant2", ImpassableRiverdelta2 = "ImpassableRiverdelta2", ImpassableRock2 = "ImpassableRock2", ImpassableSanddune2 = "ImpassableSanddune2", ImpassableSandpit2 = "ImpassableSandpit2", ImpassableShrub2 = "ImpassableShrub2", ImpassableSkull2 = "ImpassableSkull2", ImpassableStalagmite2 = "ImpassableStalagmite2", ImpassableStump2 = "ImpassableStump2", ImpassableTarpit2 = "ImpassableTarpit2", ImpassableTrees2 = "ImpassableTrees2", ImpassableVine2 = "ImpassableVine2", ImpassableVolcanicvent2 = "ImpassableVolcanicvent2", ImpassableVolcano2 = "ImpassableVolcano2", ImpassableWillowtrees2 = "ImpassableWillowtrees2", ImpassableYuccatrees2 = "ImpassableYuccatrees2", ImpassableReef2 = "ImpassableReef2", ImpassableDeserthills = "ImpassableDeserthills", ImpassableDirthills = "ImpassableDirthills", ImpassableGrasshills = "ImpassableGrasshills", ImpassableRoughhills = "ImpassableRoughhills", ImpassableSubterraneanrocks = "ImpassableSubterraneanrocks", ImpassableSwampFoliage = "ImpassableSwampFoliage", BorderGate = "BorderGate", FreelancersGuild = "FreelancersGuild", HeroPlaceholder = "HeroPlaceholder", QuestGuard = "QuestGuard", RandomDwelling = "RandomDwelling", RandomDwellingLevel = "RandomDwellingLevel", RandomDwellingAlignment = "RandomDwellingAlignment", Garrison2 = "Garrison2", AbandonedMine = "AbandonedMine", TradingPostSnow = "TradingPostSnow", CloverField = "CloverField", CursedGround2 = "CursedGround2", EvilFog = "EvilFog", FavorableWinds = "FavorableWinds", FieryFields = "FieryFields", HolyGrounds = "HolyGrounds", LucidPools = "LucidPools", MagicClouds = "MagicClouds", MagicPlains2 = "MagicPlains2", Rocklands = "Rocklands" } export declare const objectTypeEnum: { [ObjectType.NoObj]: number; [ObjectType.None0]: number; [ObjectType.DecorativeTown]: number; [ObjectType.AltarOfSacrifice]: number; [ObjectType.AnchorPoint]: number; [ObjectType.Arena]: number; [ObjectType.Artifact]: number; [ObjectType.PandorasBox]: number; [ObjectType.BlackMarket]: number; [ObjectType.Boat]: number; [ObjectType.Borderguard]: number; [ObjectType.Keymaster]: number; [ObjectType.Buoy]: number; [ObjectType.Campfire]: number; [ObjectType.Cartographer]: number; [ObjectType.SwanPond]: number; [ObjectType.CoverOfDarkness]: number; [ObjectType.CreatureBank]: number; [ObjectType.CreatureGenerator1]: number; [ObjectType.CreatureGenerator2]: number; [ObjectType.CreatureGenerator3]: number; [ObjectType.CreatureGenerator4]: number; [ObjectType.CursedGround1]: number; [ObjectType.Corpse]: number; [ObjectType.MarlettoTower]: number; [ObjectType.DerelictShip]: number; [ObjectType.DragonUtopia]: number; [ObjectType.Event]: number; [ObjectType.EyeOfMagi]: number; [ObjectType.FaerieRing]: number; [ObjectType.Flotsam]: number; [ObjectType.FountainOfFortune]: number; [ObjectType.FountainOfYouth]: number; [ObjectType.GardenOfRevelation]: number; [ObjectType.Garrison]: number; [ObjectType.Hero]: number; [ObjectType.HillFort]: number; [ObjectType.Grail]: number; [ObjectType.HutOfMagi]: number; [ObjectType.IdolOfFortune]: number; [ObjectType.LeanTo]: number; [ObjectType.Blank40]: number; [ObjectType.LibraryOfEnlightenment]: number; [ObjectType.Lighthouse]: number; [ObjectType.MonolithOneWayEntrance]: number; [ObjectType.MonolithOneWayExit]: number; [ObjectType.MonolithTwoWay]: number; [ObjectType.MagicPlains1]: number; [ObjectType.SchoolOfMagic]: number; [ObjectType.MagicSpring]: number; [ObjectType.MagicWell]: number; [ObjectType.MarketOfTime]: number; [ObjectType.MercenaryCamp]: number; [ObjectType.Mermaid]: number; [ObjectType.Mine]: number; [ObjectType.Creature]: number; [ObjectType.MysticalGarden]: number; [ObjectType.Oasis]: number; [ObjectType.Obelisk]: number; [ObjectType.RedwoodObservatory]: number; [ObjectType.OceanBottle]: number; [ObjectType.PillarOfFire]: number; [ObjectType.StarAxis]: number; [ObjectType.Prison]: number; [ObjectType.Pyramid]: number; [ObjectType.WogObject]: number; [ObjectType.RallyFlag]: number; [ObjectType.RandomArt]: number; [ObjectType.RandomTreasureArt]: number; [ObjectType.RandomMinorArt]: number; [ObjectType.RandomMajorArt]: number; [ObjectType.RandomRelicArt]: number; [ObjectType.RandomHero]: number; [ObjectType.RandomCreature]: number; [ObjectType.RandomCreatureL1]: number; [ObjectType.RandomCreatureL2]: number; [ObjectType.RandomCreatureL3]: number; [ObjectType.RandomCreatureL4]: number; [ObjectType.RandomResource]: number; [ObjectType.RandomTown]: number; [ObjectType.RefugeeCamp]: number; [ObjectType.Resource]: number; [ObjectType.Sanctuary]: number; [ObjectType.Scholar]: number; [ObjectType.SeaChest]: number; [ObjectType.SeerHut]: number; [ObjectType.Crypt]: number; [ObjectType.Shipwreck]: number; [ObjectType.ShipwreckSurvivor]: number; [ObjectType.Shipyard]: number; [ObjectType.ShrineOfMagicIncantation]: number; [ObjectType.ShrineOfMagicGesture]: number; [ObjectType.ShrineOfMagicThought]: number; [ObjectType.Sign]: number; [ObjectType.Sirens]: number; [ObjectType.SpellScroll]: number; [ObjectType.Stables]: number; [ObjectType.Tavern]: number; [ObjectType.Temple]: number; [ObjectType.DenOfThieves]: number; [ObjectType.Town]: number; [ObjectType.TradingPost]: number; [ObjectType.LearningStone]: number; [ObjectType.TreasureChest]: number; [ObjectType.TreeOfKnowledge]: number; [ObjectType.SubterraneanGate]: number; [ObjectType.University]: number; [ObjectType.Wagon]: number; [ObjectType.WarMachineFactory]: number; [ObjectType.SchoolOfWar]: number; [ObjectType.WarriorsTomb]: number; [ObjectType.WaterWheel]: number; [ObjectType.WateringHole]: number; [ObjectType.Whirlpool]: number; [ObjectType.Windmill]: number; [ObjectType.WitchHut]: number; [ObjectType.ImpassableBrush]: number; [ObjectType.ImpassableBush]: number; [ObjectType.ImpassableCactus]: number; [ObjectType.ImpassableCanyon]: number; [ObjectType.ImpassableCrater]: number; [ObjectType.ImpassableDeadvegetation]: number; [ObjectType.ImpassableFlowers]: number; [ObjectType.ImpassableFrozenlike]: number; [ObjectType.ImpassableHedge]: number; [ObjectType.ImpassableHill]: number; [ObjectType.Hole]: number; [ObjectType.PassableKelp]: number; [ObjectType.ImpassableLake]: number; [ObjectType.ImpassableLavaflow]: number; [ObjectType.ImpassableLavalake]: number; [ObjectType.ImpassableMushrooms]: number; [ObjectType.ImpassableLog]: number; [ObjectType.ImpassableMandrake]: number; [ObjectType.ImpassableMoss]: number; [ObjectType.ImpassableMound]: number; [ObjectType.ImpassableMountain]: number; [ObjectType.ImpassableOaktrees]: number; [ObjectType.ImpassableOutcropping]: number; [ObjectType.ImpassablePinetrees]: number; [ObjectType.ImpassablePlant]: number; [ObjectType.Passable139]: number; [ObjectType.Passable140]: number; [ObjectType.Passable141]: number; [ObjectType.Passable142]: number; [ObjectType.ImpassableRiverdelta]: number; [ObjectType.Passable144]: number; [ObjectType.Passable145]: number; [ObjectType.Passable146]: number; [ObjectType.ImpassableRock]: number; [ObjectType.ImpassableSanddune]: number; [ObjectType.ImpassableSandpit]: number; [ObjectType.ImpassableShrub]: number; [ObjectType.ImpassableSkull]: number; [ObjectType.ImpassableStalagmite]: number; [ObjectType.ImpassableStump]: number; [ObjectType.ImpassableTarpit]: number; [ObjectType.ImpassableTrees]: number; [ObjectType.ImpassableVine]: number; [ObjectType.ImpassableVolcanicvent]: number; [ObjectType.ImpassableVolcano]: number; [ObjectType.ImpassableWillowtrees]: number; [ObjectType.ImpassableYuccatrees]: number; [ObjectType.ImpassableReef]: number; [ObjectType.RandomCreatureL5]: number; [ObjectType.RandomCreatureL6]: number; [ObjectType.RandomCreatureL7]: number; [ObjectType.ImpassableBrush2]: number; [ObjectType.ImpassableBush2]: number; [ObjectType.ImpassableCactus2]: number; [ObjectType.ImpassableCanyon2]: number; [ObjectType.ImpassableCrater2]: number; [ObjectType.ImpassableDeadvegetation2]: number; [ObjectType.ImpassableFlowers2]: number; [ObjectType.ImpassableFrozenlike2]: number; [ObjectType.ImpassableHedge2]: number; [ObjectType.ImpassableHill2]: number; [ObjectType.PassableHole2]: number; [ObjectType.PassableKelp2]: number; [ObjectType.ImpassableLake2]: number; [ObjectType.ImpassableLavaflow2]: number; [ObjectType.ImpassableLavalake2]: number; [ObjectType.ImpassableMushrooms2]: number; [ObjectType.ImpassableLog2]: number; [ObjectType.ImpassableMandrake2]: number; [ObjectType.ImpassableMoss2]: number; [ObjectType.ImpassableMound2]: number; [ObjectType.ImpassableMountain2]: number; [ObjectType.ImpassableOaktrees2]: number; [ObjectType.ImpassableOutcropping2]: number; [ObjectType.ImpassablePinetrees2]: number; [ObjectType.ImpassablePlant2]: number; [ObjectType.ImpassableRiverdelta2]: number; [ObjectType.ImpassableRock2]: number; [ObjectType.ImpassableSanddune2]: number; [ObjectType.ImpassableSandpit2]: number; [ObjectType.ImpassableShrub2]: number; [ObjectType.ImpassableSkull2]: number; [ObjectType.ImpassableStalagmite2]: number; [ObjectType.ImpassableStump2]: number; [ObjectType.ImpassableTarpit2]: number; [ObjectType.ImpassableTrees2]: number; [ObjectType.ImpassableVine2]: number; [ObjectType.ImpassableVolcanicvent2]: number; [ObjectType.ImpassableVolcano2]: number; [ObjectType.ImpassableWillowtrees2]: number; [ObjectType.ImpassableYuccatrees2]: number; [ObjectType.ImpassableReef2]: number; [ObjectType.ImpassableDeserthills]: number; [ObjectType.ImpassableDirthills]: number; [ObjectType.ImpassableGrasshills]: number; [ObjectType.ImpassableRoughhills]: number; [ObjectType.ImpassableSubterraneanrocks]: number; [ObjectType.ImpassableSwampFoliage]: number; [ObjectType.BorderGate]: number; [ObjectType.FreelancersGuild]: number; [ObjectType.HeroPlaceholder]: number; [ObjectType.QuestGuard]: number; [ObjectType.RandomDwelling]: number; [ObjectType.RandomDwellingLevel]: number; [ObjectType.RandomDwellingAlignment]: number; [ObjectType.Garrison2]: number; [ObjectType.AbandonedMine]: number; [ObjectType.TradingPostSnow]: number; [ObjectType.CloverField]: number; [ObjectType.CursedGround2]: number; [ObjectType.EvilFog]: number; [ObjectType.FavorableWinds]: number; [ObjectType.FieryFields]: number; [ObjectType.HolyGrounds]: number; [ObjectType.LucidPools]: number; [ObjectType.MagicClouds]: number; [ObjectType.MagicPlains2]: number; [ObjectType.Rocklands]: number; }; declare type TypeMap = { [K in ObjectType]: MetaType; }; export declare const objectTypeToMeta: TypeMap; export declare enum ObjectGroup { Towns = "Towns", Creatures = "Creatures", Heroes = "Heroes", Artifacts = "Artifacts", Treasure = "Treasure" } export declare const objectGroupEnum: { [ObjectGroup.Towns]: number; [ObjectGroup.Creatures]: number; [ObjectGroup.Heroes]: number; [ObjectGroup.Artifacts]: number; [ObjectGroup.Treasure]: number; }; export {};