def __init__(self, weaponsdat=None, flingydat=None, imagesdat=None, spritesdat=None, soundsdat=None, stat_txt=None, imagestbl=None, sfxdatatbl=None): if weaponsdat == None: weaponsdat = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'arr', 'weapons.dat') if flingydat == None: flingydat = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'arr', 'flingy.dat') if imagesdat == None: imagesdat = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'arr', 'images.dat') if spritesdat == None: spritesdat = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'arr', 'sprites.dat') if soundsdat == None: soundsdat = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'arr', 'sfxdata.dat') if stat_txt == None: stat_txt = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'rez', 'stat_txt.tbl') if imagestbl == None: imagestbl = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'rez', 'images.tbl') if sfxdatatbl == None: sfxdatatbl = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'rez', 'sfxdata.tbl') self.headers = {} self.offsets = {} self.code = odict() self.extrainfo = {} if isinstance(stat_txt, TBL.TBL): self.tbl = stat_txt else: self.tbl = TBL.TBL() self.tbl.load_file(stat_txt) if isinstance(weaponsdat, DAT.WeaponsDAT): self.weaponsdat = weaponsdat else: self.weaponsdat = DAT.WeaponsDAT(self.tbl) self.weaponsdat.load_file(weaponsdat) if isinstance(flingydat, DAT.FlingyDAT): self.flingydat = flingydat else: self.flingydat = DAT.FlingyDAT(self.tbl) self.flingydat.load_file(flingydat) if isinstance(imagesdat, DAT.ImagesDAT): self.imagesdat = imagesdat else: self.imagesdat = DAT.ImagesDAT(self.tbl) self.imagesdat.load_file(imagesdat) if isinstance(spritesdat, DAT.SpritesDAT): self.spritesdat = spritesdat else: self.spritesdat = DAT.SpritesDAT() self.spritesdat.load_file(spritesdat) if isinstance(soundsdat, DAT.SoundsDAT): self.soundsdat = soundsdat else: self.soundsdat = DAT.SoundsDAT() self.soundsdat.load_file(soundsdat) if isinstance(imagestbl, TBL.TBL): self.imagestbl = imagestbl else: self.imagestbl = TBL.TBL() self.imagestbl.load_file(imagestbl) if isinstance(sfxdatatbl, TBL.TBL): self.sfxdatatbl = sfxdatatbl else: self.sfxdatatbl = TBL.TBL() self.sfxdatatbl.load_file(sfxdatatbl)
def __init__(self, stat_txt=None): if stat_txt == None: stat_txt = os.path.join(BASE_DIR, 'Libs', 'MPQ', 'rez', 'stat_txt.tbl') if isstr(stat_txt): self.tbl = TBL.TBL() self.tbl.load_file(stat_txt) else: self.tbl = stat_txt self.entries = [[0] * len(self.labels) for _ in range(self.count)] if self.datname == 'units.dat': self.data = [ [[self.dat_value, 'Flingy'], ''], [[self.dat_value, 'Units'], ''], [[self.dat_value, 'Units'], ''], [[self.dat_value, 'Units'], ''], [[self.dat_value, 'Images'], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[self.info_value, 'ElevationLevels'], ''], [[None, ''], 'Old Movement?: 0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80 (Mine-safe)' ], [[self.stattxt_value, 'Sublabel'], ''], [[self.dat_value, 'Orders'], ''], [[self.dat_value, 'Orders'], ''], [[self.dat_value, 'Orders'], ''], [[self.dat_value, 'Orders'], ''], [[self.dat_value, 'Orders'], ''], [[self.dat_value, 'Weapons'], ''], [[None, ''], ''], [[self.dat_value, 'Weapons'], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], 'Building,Addon,Flyer,Worker,Subunit,"Flying Building",Hero,"Regenerates HP","Animated Idle(?)",Cloakable,"Two Units in 1 Egg","Single Entity","Resource Depot","Resource Container","Robotic Unit",Detector,"Organic Unit","Requires Creep",Unused(?),"Requires Psi",Burrowable,Spellcaster,"Permanent Cloak","Pickup Item(?)","Ignore Supply Check","Use Medium Overlays","Use Large Overlays","Battle Reactions","Full Auto-Attack",Invincible,"Mechanical Unit","Produces Units(?)"' ], [[None, ''], ''], [[None, ''], 'StarCraft crashes with values above 11'], [[self.dat_value, 'Upgrades'], ''], [[self.info_value, 'UnitSize'], ''], [[None, ''], ''], [[self.info_value, 'Rightclick'], ''], [[self.dat_value, 'Sfxdata'], ''], [[self.dat_value, 'Sfxdata'], ''], [[self.dat_value, 'Sfxdata'], ''], [[self.dat_value, 'Sfxdata'], ''], [[self.dat_value, 'Sfxdata'], ''], [[self.dat_value, 'Sfxdata'], ''], [[self.dat_value, 'Sfxdata'], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], 'X Position'], [[None, ''], 'Y Position'], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[self.dat_value, 'Portdata'], ''], [[None, ''], ''], [[None, ''], ''], [[self.time_value, ''], ''], [[None, ''], ''], [[None, ''], 'Zerg,Terran,Protoss,Men,Building,Factory,Independent,Neutral' ], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], ''], [[None, ''], 'Non-Neutral,"Unit Listing&&Palette","Mission Briefing","Player Settings","All Races","Set Doodad State","Non-Location Triggers","Unit&&Hero Settings","Location Triggers","BroodWar Only","Unused (0x400)","Unused (0x800)","Unused (0x1000)","Unused (0x2000)","Unused (0x4000)","Unused (0x8000)"' ] ] self.special = {'HitPoints': self.hitpoints}