public NpcDialogueDefinition( System.IO.Stream stream, uint refStringStart ) { Unknown1 = stream.ReadUInt32().SwapEndian(); Unknown2 = stream.ReadUInt32().SwapEndian(); StringDicId = stream.ReadUInt32().SwapEndian(); Unknown4 = stream.ReadUInt32().SwapEndian(); Unknown5a1 = (byte)stream.ReadByte(); Unknown5a2 = (byte)stream.ReadByte(); Unknown5b1 = (byte)stream.ReadByte(); Unknown5b2 = (byte)stream.ReadByte(); Unknown6a = (short)stream.ReadUInt16().SwapEndian(); Unknown6b = (short)stream.ReadUInt16().SwapEndian(); Unknown7a1 = (byte)stream.ReadByte(); Unknown7a2 = (byte)stream.ReadByte(); Unknown7b = stream.ReadUInt16().SwapEndian(); Unknown8 = stream.ReadUInt32().SwapEndian(); RefStringLocation1 = stream.ReadUInt32().SwapEndian(); RefStringLocation2 = stream.ReadUInt32().SwapEndian(); Unknown11 = stream.ReadUInt32().SwapEndian(); Unknown12 = stream.ReadUInt32().SwapEndian(); Unknown13 = stream.ReadUInt32().SwapEndian(); Unknown14 = stream.ReadUInt32().SwapEndian(); Unknown15 = stream.ReadUInt32().SwapEndian(); Unknown16 = stream.ReadUInt32().SwapEndian(); long pos = stream.Position; stream.Position = refStringStart + RefStringLocation1; RefString1 = stream.ReadAsciiNullterm(); stream.Position = refStringStart + RefStringLocation2; RefString2 = stream.ReadAsciiNullterm(); stream.Position = pos; }
public NpcFileReference( System.IO.Stream stream, uint refStringStart ) { uint refStringLocation1 = stream.ReadUInt32().SwapEndian(); uint refStringLocation2 = stream.ReadUInt32().SwapEndian(); Filesize = stream.ReadUInt32().SwapEndian(); stream.ReadUInt32(); long pos = stream.Position; stream.Position = refStringStart + refStringLocation1; Map = stream.ReadAsciiNullterm(); stream.Position = refStringStart + refStringLocation2; Filename = stream.ReadAsciiNullterm(); stream.Position = pos; }
public SynopsisEntry( System.IO.Stream stream ) { ID = stream.ReadUInt32().SwapEndian(); StoryIdMin = stream.ReadUInt32().SwapEndian(); StoryIdMax = stream.ReadUInt32().SwapEndian(); NameStringDicId = stream.ReadUInt32().SwapEndian(); TextStringDicId = stream.ReadUInt32().SwapEndian(); stream.DiscardBytes( 0xC ); long pos = stream.Position; RefString1 = stream.ReadAsciiNullterm(); stream.Position = pos + 0x10; RefString2 = stream.ReadAsciiNullterm(); stream.Position = pos + 0x20; }
public FloorInfo( System.IO.Stream stream, uint refStringStart ) { EntrySize = stream.ReadUInt32().SwapEndian(); RestData = new uint[( EntrySize - 4 ) / 4]; for ( int i = 0; i < RestData.Length; ++i ) { RestData[i] = stream.ReadUInt32().SwapEndian(); } long pos = stream.Position; stream.Position = refStringStart + RestData[2]; RefString1 = stream.ReadAsciiNullterm(); stream.Position = refStringStart + RestData[4]; RefString2 = stream.ReadAsciiNullterm(); stream.Position = pos; }
public Skill( System.IO.Stream stream, uint refStringStart ) { uint entrySize = stream.ReadUInt32().SwapEndian(); ID = stream.ReadUInt32().SwapEndian(); InGameID = stream.ReadUInt32().SwapEndian(); uint refStringLocation = stream.ReadUInt32().SwapEndian(); NameStringDicID = stream.ReadUInt32().SwapEndian(); DescStringDicID = stream.ReadUInt32().SwapEndian(); Unknown7 = stream.ReadUInt32().SwapEndian(); LearnableByBitmask = stream.ReadUInt32().SwapEndian(); EquipCost = stream.ReadUInt32().SwapEndian(); LearnCost = stream.ReadUInt32().SwapEndian(); Category = stream.ReadUInt32().SwapEndian(); // Game sums up this value per category, then figures out the OVL-symbol from the totals SymbolValue = stream.ReadUInt32().SwapEndian(); Unknown13 = stream.ReadUInt32().SwapEndian().UIntToFloat(); Unknown14 = stream.ReadUInt32().SwapEndian().UIntToFloat(); Unknown15 = stream.ReadUInt32().SwapEndian().UIntToFloat(); Inactive = stream.ReadUInt32().SwapEndian(); long pos = stream.Position; stream.Position = refStringStart + refStringLocation; RefString = stream.ReadAsciiNullterm(); stream.Position = pos; }
public TreasureInfo( System.IO.Stream stream, uint refStringStart ) { EntrySize = stream.ReadUInt32().SwapEndian(); ID = stream.ReadUInt32().SwapEndian(); IDAgain = stream.ReadUInt32().SwapEndian(); RefStringLocation = stream.ReadUInt32().SwapEndian(); ChestTypes = new uint[4]; for ( int i = 0; i < ChestTypes.Length; ++i ) { ChestTypes[i] = stream.ReadUInt32().SwapEndian(); } ChestPositions = new float[8]; for ( int i = 0; i < ChestPositions.Length; ++i ) { ChestPositions[i] = stream.ReadUInt32().SwapEndian().UIntToFloat(); } Items = new uint[12]; for ( int i = 0; i < Items.Length; ++i ) { Items[i] = stream.ReadUInt32().SwapEndian(); } Chances = new uint[12]; for ( int i = 0; i < Chances.Length; ++i ) { Chances[i] = stream.ReadUInt32().SwapEndian(); } long pos = stream.Position; stream.Position = refStringStart + RefStringLocation; RefString = stream.ReadAsciiNullterm(); stream.Position = pos; }
public Recipe( System.IO.Stream stream ) { Data = new uint[0xCC / 4]; // + 0x20 for ( int i = 0; i < Data.Length; ++i ) { Data[i] = stream.ReadUInt32().SwapEndian(); } long pos = stream.Position; RefString = stream.ReadAsciiNullterm(); stream.Position = pos + 0x20; ID = Data[0]; NameStringDicID = Data[1]; DescriptionStringDicID = Data[2]; EffectStringDicID = Data[3]; HP = Data[4]; TP = Data[5]; DeathHeal = Data[6]; PhysicalAilmentHeal = Data[7]; Ingredients = new uint[6]; for ( int i = 0; i < 6; ++i ) { Ingredients[i] = Data[30 + i]; } IngredientCount = new uint[6]; for ( int i = 0; i < 6; ++i ) { IngredientCount[i] = Data[42 + i]; } IngredientGroups = new uint[6]; for ( int i = 0; i < 6; ++i ) { IngredientGroups[i] = Data[24 + i]; } IngredientGroupCount = new uint[6]; for ( int i = 0; i < 6; ++i ) { IngredientGroupCount[i] = Data[36 + i]; } CharactersLike = Data[8]; CharactersDislike = Data[9]; CharactersGoodAtMaking = Data[10]; CharactersBadAtMaking = Data[11]; RecipeCreationCharacter = new uint[6]; for ( int i = 0; i < 6; ++i ) { RecipeCreationCharacter[i] = Data[12 + i]; } RecipeCreationRecipe = new uint[6]; for ( int i = 0; i < 6; ++i ) { RecipeCreationRecipe[i] = Data[18 + i]; } StatType = Data[48]; StatValue = Data[49]; StatTime = Data[50]; }
public GradeShopEntry( System.IO.Stream stream, uint refStringStart ) { uint entrySize = stream.ReadUInt32().SwapEndian(); ID = stream.ReadUInt32().SwapEndian(); InGameID = stream.ReadUInt32().SwapEndian(); uint refStringLocation = stream.ReadUInt32().SwapEndian(); NameStringDicID = stream.ReadUInt32().SwapEndian(); DescStringDicID = stream.ReadUInt32().SwapEndian(); GradeCost = stream.ReadUInt32().SwapEndian(); long pos = stream.Position; stream.Position = refStringStart + refStringLocation; RefString = stream.ReadAsciiNullterm(); stream.Position = pos; }
public StrategySet( System.IO.Stream stream, uint refStringStart ) { uint[] Data; uint entrySize = stream.PeekUInt32().SwapEndian(); Data = new uint[entrySize / 4]; for ( int i = 0; i < Data.Length; ++i ) { Data[i] = stream.ReadUInt32().SwapEndian(); } ID = Data[1]; uint refStringLocation = Data[2]; NameStringDicID = Data[3]; DescStringDicID = Data[4]; StrategyDefaults = new uint[8, 9]; for ( uint x = 0; x < 8; ++x ) { for ( uint y = 0; y < 9; ++y ) { StrategyDefaults[x, y] = Data[x * 9 + y + 5]; } } ID2 = Data[77]; UnknownFloats1 = new float[9]; for ( int i = 0; i < UnknownFloats1.Length; ++i ) { UnknownFloats1[i] = Data[78 + i].UIntToFloat(); } UnknownFloats2 = new float[9]; for ( int i = 0; i < UnknownFloats2.Length; ++i ) { UnknownFloats2[i] = Data[87 + i].UIntToFloat(); } long pos = stream.Position; stream.Position = refStringStart + refStringLocation; RefString = stream.ReadAsciiNullterm(); stream.Position = pos; }
public EncounterGroup( System.IO.Stream stream, uint refStringStart ) { uint[] Data; uint entryLength = stream.PeekUInt32().SwapEndian(); Data = new uint[entryLength / 4]; for ( int i = 0; i < Data.Length; ++i ) { Data[i] = stream.ReadUInt32().SwapEndian(); } ID = Data[1]; StringDicID = Data[2]; InGameID = Data[3]; EnemyGroupIDs = new uint[10]; for ( int i = 0; i < 10; ++i ) { EnemyGroupIDs[i] = Data[5 + i]; } long pos = stream.Position; stream.Position = refStringStart + Data[4]; RefString = stream.ReadAsciiNullterm(); stream.Position = pos; }
/* public static int[] KnownValues = new int[] { 32, 46, 47, 48, 49, 50, 55, 58, 3, 4, 68, 69, 56, 51, 52, 53, 54, 14, 1, 20, 21, 22, 0, 2, 5, 57, 7, 8, 9, 10, 11, 12, 13, 15, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 60, 61, 6, 24, 59, 17, 18, 19 }; //*/ // 14 is always zero // 16 is zero except on the new giganto monsters and spiral draco // 76 is on PS3 only, StringDicID for the dummy description public Enemy( System.IO.Stream stream, uint refStringStart ) { uint entryLength = stream.ReadUInt32().SwapEndian(); Data = new uint[entryLength / 4]; DataFloat = new float[entryLength / 4]; Data[0] = entryLength; for ( int i = 1; i < Data.Length; ++i ) { Data[i] = stream.ReadUInt32().SwapEndian(); DataFloat[i] = Data[i].UIntToFloat(); } ID = Data[1]; NameStringDicID = Data[2]; InGameID = Data[5]; IconID = Data[57]; Level = Data[7]; Category = Data[24]; HP = Data[8]; TP = Data[9]; PATK = Data[10]; PDEF = Data[11]; MATK = Data[12]; MDEF = Data[13]; AGL = Data[15]; FatalBlue = DataFloat[17]; FatalRed = DataFloat[18]; FatalGreen = DataFloat[19]; FatalBlueRelated = DataFloat[20]; FatalRedRelated = DataFloat[21]; FatalGreenRelated = DataFloat[22]; // > 100 weak, < 100 resist, 0 nullify, negative absorb // effectively a damage multiplier in percent Attributes = new int[7]; Attributes[0] = (int)Data[26]; Attributes[1] = (int)Data[27]; Attributes[2] = (int)Data[28]; Attributes[3] = (int)Data[29]; Attributes[4] = (int)Data[30]; Attributes[5] = (int)Data[31]; Attributes[6] = (int)Data[32]; EXP = Data[33]; Gald = Data[34]; LP = Data[35]; DropItems = new uint[4]; DropItems[0] = Data[36]; DropItems[1] = Data[37]; DropItems[2] = Data[38]; DropItems[3] = Data[39]; DropChances = new uint[4]; DropChances[0] = Data[40]; DropChances[1] = Data[41]; DropChances[2] = Data[42]; DropChances[3] = Data[43]; StealItem = Data[44]; StealChance = Data[45]; FatalTypeExp = Data[46]; EXPModifier = Data[47]; FatalTypeLP = Data[48]; LPModifier = Data[49]; FatalTypeDrop = Data[50]; DropModifier = new uint[4]; DropModifier[0] = Data[51]; DropModifier[1] = Data[52]; DropModifier[2] = Data[53]; DropModifier[3] = Data[54]; KillableWithFS = Data[56]; InMonsterBook = Data[59]; Location = Data[60]; // -1: None shown, 0: Sun, 1: Rain, 2: Snow, 3: Windy, 4: Night, 5: Cloudy LocationWeather = (int)Data[61]; SecretMissionDrop = Data[68]; SecretMissionDropChance = Data[69]; long pos = stream.Position; stream.Position = refStringStart + Data[6]; RefString = stream.ReadAsciiNullterm(); stream.Position = refStringStart + Data[3]; RefString2 = stream.ReadAsciiNullterm(); stream.Position = refStringStart + Data[4]; RefString3 = stream.ReadAsciiNullterm(); stream.Position = refStringStart + Data[55]; RefString4 = stream.ReadAsciiNullterm(); stream.Position = refStringStart + Data[58]; RefString5 = stream.ReadAsciiNullterm(); stream.Position = pos; }