public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "CTDA": case "CTDT": CTDAs.Add(new SCPTRecord.CTDAField(r, dataSize, format)); return(true); case "ANAM": ANAM = r.ReadT <BYTEField>(dataSize); return(true); case "DATA": DATAs = new FMIDField <IDLERecord> [dataSize >> 2]; for (var i = 0; i < DATAs.Length; i++) { DATAs[i] = new FMIDField <IDLERecord>(r, 4); } return(true); default: return(false); } }
public BYTEField SLCP; // Soul gem maximum capacity public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "SOUL": SOUL = r.ReadT <BYTEField>(dataSize); return(true); case "SLCP": SLCP = r.ReadT <BYTEField>(dataSize); return(true); default: return(false); } }
public BYTEField DATA; // Playable public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "DATA": DATA = r.ReadT <BYTEField>(dataSize); return(true); default: return(false); } }
public List <LVLIRecord.LVLOField> LVLOs = new List <LVLIRecord.LVLOField>(); // Number of items in list public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "LVLD": LVLD = r.ReadT <BYTEField>(dataSize); return(true); case "LVLF": LVLF = r.ReadT <BYTEField>(dataSize); return(true); case "LVLO": LVLOs.Add(new LVLIRecord.LVLOField(r, dataSize)); return(true); default: return(false); } }
public GNAMField GNAM; // GNAM public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return true; case "TNAM": TNAM = r.ReadSTRV(dataSize); return true; case "ANAM": ANAM = r.ReadT<BYTEField>(dataSize); return true; case "FNAM": FNAM = r.ReadT<BYTEField>(dataSize); return true; case "MNAM": MNAM = r.ReadSTRV(dataSize); return true; case "SNAM": SNAM = new FMIDField<SOUNRecord>(r, dataSize); return true; case "DATA": DATA = new DATAField(r, dataSize); return true; case "GNAM": GNAM = new GNAMField(r, dataSize); return true; default: return false; } }
public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "LVLD": LVLD = r.ReadT <BYTEField>(dataSize); return(true); case "LVLF": LVLF = r.ReadT <BYTEField>(dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "TNAM": TNAM = new FMIDField <CREARecord>(r, dataSize); return(true); case "LVLO": LVLOs.Add(new LVLIRecord.LVLOField(r, dataSize)); return(true); default: return(false); } }
public BYTEField DATA; // Playable, Not Male, Not Female, Fixed public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "ICON": ICON = r.ReadFILE(dataSize); return(true); case "DATA": DATA = r.ReadT <BYTEField>(dataSize); return(true); default: return(false); } }
public List <INFORecord> INFOs = new List <INFORecord>(); // Info Records public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": case "NAME": EDID = r.ReadSTRV(dataSize); LastRecord = this; return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "DATA": DATA = r.ReadT <BYTEField>(dataSize); return(true); case "QSTI": case "QSTR": if (QSTIs == null) { QSTIs = new List <FMIDField <QUSTRecord> >(); } QSTIs.Add(new FMIDField <QUSTRecord>(r, dataSize)); return(true); default: return(false); } }
public List <FMIDField <GRASRecord> > GNAMs = new List <FMIDField <GRASRecord> >(); // Potential grass public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { switch (type) { case "EDID": case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "INTV": INTV = r.ReadINTV(dataSize); return(true); case "ICON": case "DATA": ICON = r.ReadFILE(dataSize); return(true); // TES4 case "HNAM": HNAM = new HNAMField(r, dataSize); return(true); case "SNAM": SNAM = r.ReadT <BYTEField>(dataSize); return(true); case "GNAM": GNAMs.Add(new FMIDField <GRASRecord>(r, dataSize)); return(true); default: return(false); } }
public List <IN16Field> INTVs = new List <IN16Field>(); // PC level for previous INAM // The CNAM/INTV can occur many times in pairs public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { if (format == GameFormat.TES3) { switch (type) { case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "DATA": DATA = r.ReadT <IN32Field>(dataSize); return(true); case "NNAM": NNAM = r.ReadT <BYTEField>(dataSize); return(true); case "INDX": INDX = r.ReadT <IN32Field>(dataSize); return(true); case "INAM": INAMs.Add(r.ReadSTRV(dataSize)); return(true); case "INTV": INTVs.Add(r.ReadT <IN16Field>(dataSize)); return(true); default: return(false); } } return(false); }
public FMIDField <Record> TNAM; // Random teleport destination public override bool CreateField(BinaryFileReader r, GameFormat format, string type, int dataSize) { switch (type) { case "EDID": case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "FNAM": if (format != GameFormat.TES3) { FNAM = r.ReadT <BYTEField>(dataSize); } else { FULL = r.ReadSTRV(dataSize); } return(true); case "MODL": MODL = new MODLGroup(r, dataSize); return(true); case "MODB": MODL.MODBField(r, dataSize); return(true); case "MODT": MODL.MODTField(r, dataSize); return(true); case "SCRI": SCRI = new FMIDField <SCPTRecord>(r, dataSize); return(true); case "SNAM": SNAM = new FMIDField <SOUNRecord>(r, dataSize); return(true); case "ANAM": ANAM = new FMIDField <SOUNRecord>(r, dataSize); return(true); case "BNAM": ANAM = new FMIDField <SOUNRecord>(r, dataSize); return(true); case "TNAM": TNAM = new FMIDField <Record>(r, dataSize); return(true); default: return(false); } }
public override bool CreateField(UnityBinaryReader r, GameFormatId format, string type, int dataSize) { if (format == GameFormatId.TES3) { switch (type) { case "NAME": EDID = r.ReadSTRV(dataSize); return(true); case "FNAM": FULL = r.ReadSTRV(dataSize); return(true); case "RADT": DATA = new DATAField(r, dataSize, format); return(true); case "NPCS": SPLOs.Add(r.ReadSTRV(dataSize)); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); default: return(false); } } if (format == GameFormatId.TES4) { switch (_nameState) { case 0: switch (type) { case "EDID": EDID = r.ReadSTRV(dataSize); return(true); case "FULL": FULL = r.ReadSTRV(dataSize); return(true); case "DESC": DESC = r.ReadSTRV(dataSize); return(true); case "DATA": DATA = new DATAField(r, dataSize, format); return(true); case "SPLO": SPLOs.Add(r.ReadSTRV(dataSize)); return(true); case "VNAM": VNAM = new FMID2Field <RACERecord>(r, dataSize); return(true); case "DNAM": DNAM = new FMID2Field <HAIRRecord>(r, dataSize); return(true); case "CNAM": CNAM = r.ReadT <BYTEField>(dataSize); return(true); case "PNAM": PNAM = r.ReadT <FLTVField>(dataSize); return(true); case "UNAM": UNAM = r.ReadT <FLTVField>(dataSize); return(true); case "XNAM": XNAM = r.ReadUNKN(dataSize); return(true); case "ATTR": DATA.ATTRField(r, dataSize); return(true); case "NAM0": _nameState++; return(true); default: return(false); } case 1: // Face Data switch (type) { case "INDX": FaceParts.Add(new FacePartGroup { INDX = r.ReadT <UI32Field>(dataSize) }); return(true); case "MODL": FaceParts.Last().MODL = new MODLGroup(r, dataSize); return(true); case "ICON": FaceParts.Last().ICON = r.ReadFILE(dataSize); return(true); case "MODB": FaceParts.Last().MODL.MODBField(r, dataSize); return(true); case "NAM1": _nameState++; return(true); default: return(false); } case 2: // Body Data switch (type) { case "MNAM": _genderState = 0; return(true); case "FNAM": _genderState = 1; return(true); case "MODL": Bodys[_genderState].MODL = r.ReadFILE(dataSize); return(true); case "MODB": Bodys[_genderState].MODB = r.ReadT <FLTVField>(dataSize); return(true); case "INDX": Bodys[_genderState].BodyParts.Add(new BodyPartGroup { INDX = r.ReadT <UI32Field>(dataSize) }); return(true); case "ICON": Bodys[_genderState].BodyParts.Last().ICON = r.ReadFILE(dataSize); return(true); case "HNAM": _nameState++; break; default: return(false); } goto case 3; case 3: // Postamble switch (type) { case "HNAM": for (var i = 0; i < dataSize >> 2; i++) { HNAMs.Add(new FMIDField <HAIRRecord>(r, 4)); } return(true); case "ENAM": for (var i = 0; i < dataSize >> 2; i++) { ENAMs.Add(new FMIDField <EYESRecord>(r, 4)); } return(true); case "FGGS": FGGS = r.ReadBYTV(dataSize); return(true); case "FGGA": FGGA = r.ReadBYTV(dataSize); return(true); case "FGTS": FGTS = r.ReadBYTV(dataSize); return(true); case "SNAM": SNAM = r.ReadUNKN(dataSize); return(true); default: return(false); } default: return(false); } } return(false); }