From e0c9335258c7696fb8b7c21c38493e424ecdce31 Mon Sep 17 00:00:00 2001 From: ook3d <47336113+ook3D@users.noreply.github.com> Date: Tue, 19 Nov 2024 05:37:35 -0500 Subject: [PATCH] Update various rel audio stuff --- .../GameFiles/FileTypes/RelFile.cs | 2106 +++++++++-------- 1 file changed, 1084 insertions(+), 1022 deletions(-) diff --git a/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs b/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs index 45cbf6a..c668d9d 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs @@ -6469,27 +6469,30 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151RadioStationTrackList : Dat151RelData - { - public FlagsUint Unk00 { get; set; } - public byte TrackType { get; set; } - public uint Unk01 { get; set; } - public uint Unk02 { get; set; } - public byte Unk03 { get; set; } - public uint Unk04 { get; set; } - public uint Unk05 { get; set; } - public uint Unk06 { get; set; } - public uint Unk07 { get; set; } - public uint Unk08 { get; set; } - public uint Unk09 { get; set; } - public uint Unk10 { get; set; } - public uint Unk11 { get; set; } - public uint Unk12 { get; set; } - public uint Unk13 { get; set; } - public uint Unk14 { get; set; } - public uint Unk15 { get; set; } - public ushort Unk16 { get; set; } + { + public FlagsUint Flags { get; set; } + public byte Category { get; set; } + public byte padding00 { get; set; } + public short padding01 { get; set; } + public uint NextValidSelectionTime { get; set; } + public byte HistoryWriteIndex { get; set; } + public byte NumHistorySpaceElems { get; set; } + public short padding02 { get; set; } + public uint HistorySpace1 { get; set; } + public uint HistorySpace2 { get; set; } + public uint HistorySpace3 { get; set; } + public uint HistorySpace4 { get; set; } + public uint HistorySpace5 { get; set; } + public uint HistorySpace6 { get; set; } + public uint HistorySpace7 { get; set; } + public uint HistorySpace8 { get; set; } + public uint HistorySpace9 { get; set; } + public uint HistorySpace10 { get; set; } + public ushort TotalNumTracks { get; set; } + public short padding03 { get; set; } + public uint NextTrackListPointer { get; set; } public uint TracksCount { get; set; } public Dat151HashPair[] Tracks { get; set; } @@ -6501,24 +6504,27 @@ namespace CodeWalker.GameFiles } public Dat151RadioStationTrackList(RelData d, BinaryReader br) : base(d, br) { - Unk00 = br.ReadUInt32(); - TrackType = br.ReadByte(); - Unk01 = br.ReadUInt32(); - Unk02 = br.ReadUInt32(); - Unk03 = br.ReadByte(); - Unk04 = br.ReadUInt32(); - Unk05 = br.ReadUInt32(); - Unk06 = br.ReadUInt32(); - Unk07 = br.ReadUInt32(); - Unk08 = br.ReadUInt32(); - Unk09 = br.ReadUInt32(); - Unk10 = br.ReadUInt32(); - Unk11 = br.ReadUInt32(); - Unk12 = br.ReadUInt32(); - Unk13 = br.ReadUInt32(); - Unk14 = br.ReadUInt32(); - Unk15 = br.ReadUInt32(); - Unk16 = br.ReadUInt16(); + Flags = br.ReadUInt32(); + Category = br.ReadByte(); + padding00 = br.ReadByte(); + padding01 = br.ReadInt16(); + NextValidSelectionTime = br.ReadUInt32(); + HistoryWriteIndex = br.ReadByte(); + NumHistorySpaceElems = br.ReadByte(); + padding02 = br.ReadInt16(); + HistorySpace1 = br.ReadUInt32(); + HistorySpace2 = br.ReadUInt32(); + HistorySpace3 = br.ReadUInt32(); + HistorySpace4 = br.ReadUInt32(); + HistorySpace5 = br.ReadUInt32(); + HistorySpace6 = br.ReadUInt32(); + HistorySpace7 = br.ReadUInt32(); + HistorySpace8 = br.ReadUInt32(); + HistorySpace9 = br.ReadUInt32(); + HistorySpace10 = br.ReadUInt32(); + TotalNumTracks = br.ReadUInt16(); + padding03 = br.ReadInt16(); + NextTrackListPointer = br.ReadUInt32(); TracksCount = br.ReadUInt32(); Dat151HashPair[] items = new Dat151HashPair[TracksCount]; @@ -6532,24 +6538,27 @@ namespace CodeWalker.GameFiles { WriteTypeAndOffset(bw); - bw.Write(Unk00); - bw.Write(TrackType); - bw.Write(Unk01); - bw.Write(Unk02); - bw.Write(Unk03); - bw.Write(Unk04); - bw.Write(Unk05); - bw.Write(Unk06); - bw.Write(Unk07); - bw.Write(Unk08); - bw.Write(Unk09); - bw.Write(Unk10); - bw.Write(Unk11); - bw.Write(Unk12); - bw.Write(Unk13); - bw.Write(Unk14); - bw.Write(Unk15); - bw.Write(Unk16); + bw.Write(Flags); + bw.Write(Category); + bw.Write(padding00); + bw.Write(padding01); + bw.Write(NextValidSelectionTime); + bw.Write(HistoryWriteIndex); + bw.Write(NumHistorySpaceElems); + bw.Write(padding02); + bw.Write(HistorySpace1); + bw.Write(HistorySpace2); + bw.Write(HistorySpace3); + bw.Write(HistorySpace4); + bw.Write(HistorySpace5); + bw.Write(HistorySpace6); + bw.Write(HistorySpace7); + bw.Write(HistorySpace8); + bw.Write(HistorySpace9); + bw.Write(HistorySpace10); + bw.Write(TotalNumTracks); + bw.Write(padding03); + bw.Write(NextTrackListPointer); bw.Write(TracksCount); for (int i = 0; i < TracksCount; i++) { @@ -6559,20 +6568,14 @@ namespace CodeWalker.GameFiles } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.ValueTag(sb, indent, "Unk00", "0x" + Unk00.Hex); - RelXml.ValueTag(sb, indent, "TrackType", TrackType.ToString()); - RelXml.ValueTag(sb, indent, "Unk01", Unk01.ToString()); - RelXml.ValueTag(sb, indent, "Unk02", Unk02.ToString()); - RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString()); + RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex); + RelXml.ValueTag(sb, indent, "Category", Category.ToString()); RelXml.WriteItemArray(sb, Tracks, indent, "Tracks"); } public override void ReadXml(XmlNode node) { - Unk00 = Xml.GetChildUIntAttribute(node, "Unk00", "value"); - TrackType = (byte)Xml.GetChildUIntAttribute(node, "TrackType", "value"); - Unk01 = Xml.GetChildUIntAttribute(node, "Unk01", "value"); - Unk02 = Xml.GetChildUIntAttribute(node, "Unk02", "value"); - Unk03 = (byte)Xml.GetChildUIntAttribute(node, "Unk03", "value"); + Flags = Xml.GetChildUIntAttribute(node, "Flags", "value"); + Category = (byte)Xml.GetChildUIntAttribute(node, "Category", "value"); Tracks = XmlRel.ReadItemArray(node, "Tracks"); TracksCount = (uint)(Tracks?.Length ?? 0); } @@ -6593,7 +6596,7 @@ namespace CodeWalker.GameFiles [TC(typeof(EXP))] public class Dat151ReplayRadioStationTrackList : Dat151RelData { - public FlagsUint Unk00 { get; set; } + public FlagsUint Flags { get; set; } public uint TrackCount { get; set; } public Dat151HashPair[] Tracks { get; set; } @@ -6604,7 +6607,7 @@ namespace CodeWalker.GameFiles } public Dat151ReplayRadioStationTrackList(RelData d, BinaryReader br) : base(d, br) { - Unk00 = br.ReadUInt32(); + Flags = br.ReadUInt32(); TrackCount = br.ReadUInt32(); Tracks = new Dat151HashPair[TrackCount]; for (int i = 0; i < TrackCount; i++) @@ -6616,7 +6619,7 @@ namespace CodeWalker.GameFiles { WriteTypeAndOffset(bw); - bw.Write(Unk00); + bw.Write(Flags); bw.Write(TrackCount); for (int i = 0; i < TrackCount; i++) { @@ -6626,12 +6629,12 @@ namespace CodeWalker.GameFiles } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.ValueTag(sb, indent, "Unk00", "0x" + Unk00.Hex); + RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex); RelXml.WriteItemArray(sb, Tracks, indent, "Tracks"); } public override void ReadXml(XmlNode node) { - Unk00 = Xml.GetChildUIntAttribute(node, "Unk00", "value"); + Flags = Xml.GetChildUIntAttribute(node, "Flags", "value"); Tracks = XmlRel.ReadItemArray(node, "Tracks"); TrackCount = (uint)(Tracks?.Length ?? 0); } @@ -6766,7 +6769,7 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151StartTrackAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -6930,7 +6933,7 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151StopTrackAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -6998,7 +7001,8 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + + [TC(typeof(EXP))] public class Dat151InteractiveMusicMood : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -7154,7 +7158,7 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151SetMoodAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -7237,7 +7241,8 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + + [TC(typeof(EXP))] public class Dat151MusicEvent : Dat151RelData { public uint AudioTrackCount { get; set; } @@ -7293,7 +7298,9 @@ namespace CodeWalker.GameFiles return AudioTracks; } } - [TC(typeof(EXP))] + + + [TC(typeof(EXP))] public class Dat151StartOneShotAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -7385,7 +7392,8 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + + [TC(typeof(EXP))] public class Dat151StopOneShotAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -7448,7 +7456,8 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + + [TC(typeof(EXP))] public class Dat151FadeInRadioAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -7516,7 +7525,8 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + + [TC(typeof(EXP))] public class Dat151FadeOutRadioAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -7584,6 +7594,7 @@ namespace CodeWalker.GameFiles } } + [TC(typeof(EXP))] public class Dat151ModelAudioCollisionSettings : Dat151RelData { @@ -7880,99 +7891,110 @@ namespace CodeWalker.GameFiles [TC(typeof(EXP))] public class Dat151CollisionMaterialSettings : Dat151RelData { - public FlagsUint Unk00 { get; set; } - public MetaHash Unk01 { get; set; } - public MetaHash Unk02 { get; set; } - public MetaHash Unk03 { get; set; } - public MetaHash Unk04 { get; set; } - public MetaHash Unk05 { get; set; } - public MetaHash Unk06 { get; set; } - public MetaHash Unk07 { get; set; } - public MetaHash Unk08 { get; set; } - public MetaHash Unk09 { get; set; } - public MetaHash Unk10 { get; set; } - public MetaHash Unk11 { get; set; } - public MetaHash Unk12 { get; set; } - public MetaHash Unk13 { get; set; } - public MetaHash Unk14 { get; set; } - public int Unk15 { get; set; } - public int Unk16 { get; set; } - public int Unk17 { get; set; } - public int Unk18 { get; set; } - public float Unk19 { get; set; } - public int Unk20 { get; set; } - public float Unk21 { get; set; } - public float Unk22 { get; set; } - public float Unk23 { get; set; } - public float Unk24 { get; set; } - public float Unk25 { get; set; } - public float Unk26 { get; set; } - public int Unk27 { get; set; } - public MetaHash Unk28 { get; set; } - public float Unk29 { get; set; } - public float Unk30 { get; set; } - public MetaHash Footsteps { get; set; } - public int Unk31 { get; set; } - public MetaHash Unk32 { get; set; } + public FlagsUint Flags { get; set; } + public MetaHash HardImpact { get; set; } + public MetaHash SolidImpact { get; set; } + public MetaHash SoftImpact { get; set; } + public MetaHash ScrapeSound { get; set; } + public MetaHash PedScrapeSound { get; set; } + public MetaHash BreakSound { get; set; } + public MetaHash DestroySound { get; set; } + public MetaHash SettleSound { get; set; } + public MetaHash BulletImpactSound { get; set; } + public MetaHash AutomaticBulletImpactSound { get; set; } + public MetaHash ShotgunBulletImpactSound { get; set; } + public MetaHash BigVehicleImpactSound { get; set; } + public MetaHash PedPunch { get; set; } + public MetaHash PedKick { get; set; } + public uint MediumIntensity { get; set; } + public uint HighIntensity { get; set; } + public byte Hardness { get; set; } + public byte padding00 { get; set; } + public short padding01 { get; set; } + public float MinImpulseMag { get; set; } + public float MaxImpulseMag { get; set; } + public byte ImpulseMagScalar { get; set; } + public byte padding02 { get; set; } + public short padding03 { get; set; } + public float MaxScrapeSpeed { get; set; } + public float MinScrapeSpeed { get; set; } + public float ScrapeImpactMag { get; set; } + public float MaxRollSpeed { get; set; } + public float MinRollSpeed { get; set; } + public float RollImpactMag { get; set; } + public byte BulletCollisionScaling { get; set; } + public byte padding04 { get; set; } + public short padding05 { get; set; } + public MetaHash FootstepCustomImpactSound { get; set; } + public float FootstepMaterialHardness { get; set; } + public float FootstepMaterialLoudness { get; set; } + public MetaHash FootstepSettings { get; set; } + public byte FootstepScaling { get; set; } + public byte ScuffstepScaling { get; set; } + public byte FootstepImpactScaling { get; set; } + public byte ScuffImpactScaling { get; set; } + public MetaHash SkiSettings { get; set; } public MetaHash AnimalFootstepSettings { get; set; } - public MetaHash AudioTrack2 { get; set; } - public MetaHash Unk33 { get; set; } - public MetaHash Unk34 { get; set; } - public MetaHash Unk35 { get; set; } - public MetaHash Unk36 { get; set; } - public MetaHash Unk37 { get; set; } - public MetaHash Unk38 { get; set; } - public MetaHash Unk39 { get; set; } - public MetaHash Unk40 { get; set; } - public MetaHash Unk41 { get; set; } - public MetaHash Unk42 { get; set; } - public MetaHash Unk43 { get; set; } - public MetaHash Unk44 { get; set; } - public MetaHash Unk45 { get; set; } - public MetaHash Unk46 { get; set; } - public MetaHash Unk47 { get; set; } - public MetaHash Unk48 { get; set; } - public MetaHash Unk49 { get; set; } - public MetaHash Unk50 { get; set; } - public MetaHash Unk51 { get; set; } - public MetaHash Unk52 { get; set; } - public MetaHash Unk53 { get; set; } - public MetaHash Unk54 { get; set; } - public float Unk55 { get; set; } - public MetaHash Unk56 { get; set; } - public MetaHash Unk57 { get; set; } - public int Unk58 { get; set; } - public int Unk59 { get; set; } - public float Unk60 { get; set; } - public int Unk61 { get; set; } - public int Unk62 { get; set; } - public MetaHash Unk63 { get; set; } - public MetaHash Unk64 { get; set; } - public MetaHash Unk65 { get; set; } - public int Unk66 { get; set; } - public MetaHash Unk67 { get; set; } - public MetaHash Unk68 { get; set; } - public MetaHash Unk69 { get; set; } - public MetaHash Unk70 { get; set; } - public MetaHash Unk71 { get; set; } - public int Unk72 { get; set; } - public MetaHash Unk73 { get; set; } - public MetaHash Unk74 { get; set; } - public MetaHash Unk75 { get; set; } - public MetaHash Unk76 { get; set; } - public float Unk77 { get; set; } - public MetaHash Unk78 { get; set; }//another CollisionMaterialSettings - public MetaHash Unk79 { get; set; }//self reference - public MetaHash Unk80 { get; set; } - public MetaHash Unk81 { get; set; } - public MetaHash Unk82 { get; set; } - public MetaHash Unk83 { get; set; } - public MetaHash Unk84 { get; set; } - public int Unk85 { get; set; } - public MetaHash Unk86 { get; set; } - public int Unk87 { get; set; } - public MetaHash Unk88 { get; set; } - public int Unk89 { get; set; } + public MetaHash WetMaterialReference { get; set; } + public MetaHash ImpactStartOffsetCurve { get; set; } + public MetaHash ImpactVolCurve { get; set; } + public MetaHash ScrapePitchCurve { get; set; } + public MetaHash ScrapeVolCurve { get; set; } + public MetaHash FastTyreRoll { get; set; } + public MetaHash DetailTyreRoll { get; set; } + public MetaHash MainSkid { get; set; } + public MetaHash SideSkid { get; set; } + public MetaHash MetalShellCasingSmall { get; set; } + public MetaHash MetalShellCasingMedium { get; set; } + public MetaHash MetalShellCasingLarge { get; set; } + public MetaHash MetalShellCasingSmallSlow { get; set; } + public MetaHash MetalShellCasingMediumSlow { get; set; } + public MetaHash MetalShellCasingLargeSlow { get; set; } + public MetaHash PlasticShellCasing { get; set; } + public MetaHash PlasticShellCasingSlow { get; set; } + public MetaHash RollSound { get; set; } + public MetaHash RainLoop { get; set; } + public MetaHash TyreBump { get; set; } + public MetaHash ShockwaveSound { get; set; } + public MetaHash RandomAmbient { get; set; } + public MetaHash ClimbSettings { get; set; } + public float Dirtiness { get; set; } + public MetaHash SurfaceSettle { get; set; } + public MetaHash RidgedSurfaceLoop { get; set; } + public uint CollisionCount { get; set; } + public uint CollisionCountThreshold { get; set; } + public float VolumeThreshold { get; set; } + public int MaterialID { get; set; } + public MetaHash SoundSetRef { get; set; } + public MetaHash DebrisLaunch { get; set; } + public MetaHash DebrisLand { get; set; } + public MetaHash OffRoadSound { get; set; } + public float Roughness { get; set; } + public MetaHash DebrisOnSlope { get; set; } + public MetaHash BicycleTyreRoll { get; set; } + public MetaHash OffRoadRumbleSound { get; set; } + public MetaHash StealthSweetener { get; set; } + public MetaHash Scuff { get; set; } + public byte MaterialType { get; set; } + public byte SurfacePriority { get; set; } + public short padding06 { get; set; } + public MetaHash WheelSpinLoop { get; set; } + public MetaHash BicycleTyreGritSound { get; set; } + public MetaHash PedSlideSound { get; set; } + public MetaHash PedRollSound { get; set; } + public float TimeInAirToTriggerBigLand { get; set; } + public MetaHash MeleeOverideMaterial { get; set; }//another CollisionMaterialSettings + public MetaHash SelfName { get; set; }//self reference + public MetaHash SlowMoHardImpact { get; set; } + public MetaHash SlowMoBulletImpactSound { get; set; } + public MetaHash SlowMoAutomaticBulletImpactSound { get; set; } + public MetaHash SlowMoShotgunBulletImpactSound { get; set; } + public MetaHash SlowMoBulletImpactPreSuck { get; set; } + public int SlowMoBulletImpactPreSuckTime { get; set; } + public MetaHash SlowMoAutomaticBulletImpactPreSuck { get; set; } + public int SlowMoAutomaticBulletImpactPreSuckTime { get; set; } + public MetaHash SlowMoShotgunBulletImpactPreSuck { get; set; } + public int SlowMoShotgunBulletImpactPreSuckTime { get; set; } public Dat151CollisionMaterialSettings(RelFile rel) : base(rel) { @@ -7981,389 +8003,419 @@ namespace CodeWalker.GameFiles } public Dat151CollisionMaterialSettings(RelData d, BinaryReader br) : base(d, br) { - Unk00 = br.ReadUInt32(); - Unk01 = br.ReadUInt32(); - Unk02 = br.ReadUInt32(); - Unk03 = br.ReadUInt32(); - Unk04 = br.ReadUInt32(); - Unk05 = br.ReadUInt32(); - Unk06 = br.ReadUInt32(); - Unk07 = br.ReadUInt32(); - Unk08 = br.ReadUInt32(); - Unk09 = br.ReadUInt32(); - Unk10 = br.ReadUInt32(); - Unk11 = br.ReadUInt32(); - Unk12 = br.ReadUInt32(); - Unk13 = br.ReadUInt32(); - Unk14 = br.ReadUInt32(); - Unk15 = br.ReadInt32(); - Unk16 = br.ReadInt32(); - Unk17 = br.ReadInt32(); - Unk18 = br.ReadInt32(); - Unk19 = br.ReadSingle(); - Unk20 = br.ReadInt32(); - Unk21 = br.ReadSingle(); - Unk22 = br.ReadSingle(); - Unk23 = br.ReadSingle(); - Unk24 = br.ReadSingle(); - Unk25 = br.ReadSingle(); - Unk26 = br.ReadSingle(); - Unk27 = br.ReadInt32(); - Unk28 = br.ReadUInt32(); - Unk29 = br.ReadSingle(); - Unk30 = br.ReadSingle(); - Footsteps = br.ReadUInt32(); - Unk31 = br.ReadInt32(); - Unk32 = br.ReadUInt32(); + Flags = br.ReadUInt32(); + HardImpact = br.ReadUInt32(); + SolidImpact = br.ReadUInt32(); + SoftImpact = br.ReadUInt32(); + ScrapeSound = br.ReadUInt32(); + PedScrapeSound = br.ReadUInt32(); + BreakSound = br.ReadUInt32(); + DestroySound = br.ReadUInt32(); + SettleSound = br.ReadUInt32(); + BulletImpactSound = br.ReadUInt32(); + AutomaticBulletImpactSound = br.ReadUInt32(); + ShotgunBulletImpactSound = br.ReadUInt32(); + BigVehicleImpactSound = br.ReadUInt32(); + PedPunch = br.ReadUInt32(); + PedKick = br.ReadUInt32(); + MediumIntensity = br.ReadUInt32(); + HighIntensity = br.ReadUInt32(); + Hardness = br.ReadByte(); + padding00 = br.ReadByte(); + padding01 = br.ReadInt16(); + MinImpulseMag = br.ReadSingle(); + MaxImpulseMag = br.ReadSingle(); + ImpulseMagScalar = br.ReadByte(); + padding02 = br.ReadByte(); + padding03 = br.ReadInt16(); + MaxScrapeSpeed = br.ReadSingle(); + MinScrapeSpeed = br.ReadSingle(); + ScrapeImpactMag = br.ReadSingle(); + MaxRollSpeed = br.ReadSingle(); + MinRollSpeed = br.ReadSingle(); + RollImpactMag = br.ReadSingle(); + BulletCollisionScaling = br.ReadByte(); + padding04 = br.ReadByte(); + padding05 = br.ReadInt16(); + FootstepCustomImpactSound = br.ReadUInt32(); + FootstepMaterialHardness = br.ReadSingle(); + FootstepMaterialLoudness = br.ReadSingle(); + FootstepSettings = br.ReadUInt32(); + FootstepScaling = br.ReadByte(); + ScuffstepScaling = br.ReadByte(); + FootstepImpactScaling = br.ReadByte(); + ScuffImpactScaling = br.ReadByte(); + SkiSettings = br.ReadUInt32(); AnimalFootstepSettings = br.ReadUInt32(); - AudioTrack2 = br.ReadUInt32(); - Unk33 = br.ReadUInt32(); - Unk34 = br.ReadUInt32(); - Unk35 = br.ReadUInt32(); - Unk36 = br.ReadUInt32(); - Unk37 = br.ReadUInt32(); - Unk38 = br.ReadUInt32(); - Unk39 = br.ReadUInt32(); - Unk40 = br.ReadUInt32(); - Unk41 = br.ReadUInt32(); - Unk42 = br.ReadUInt32(); - Unk43 = br.ReadUInt32(); - Unk44 = br.ReadUInt32(); - Unk45 = br.ReadUInt32(); - Unk46 = br.ReadUInt32(); - Unk47 = br.ReadUInt32(); - Unk48 = br.ReadUInt32(); - Unk49 = br.ReadUInt32(); - Unk50 = br.ReadUInt32(); - Unk51 = br.ReadUInt32(); - Unk52 = br.ReadUInt32(); - Unk53 = br.ReadUInt32(); - Unk54 = br.ReadUInt32(); - Unk55 = br.ReadSingle(); - Unk56 = br.ReadUInt32(); - Unk57 = br.ReadUInt32(); - Unk58 = br.ReadInt32(); - Unk59 = br.ReadInt32(); - Unk60 = br.ReadSingle(); - Unk61 = br.ReadInt32(); - Unk62 = br.ReadInt32(); - Unk63 = br.ReadUInt32(); - Unk64 = br.ReadUInt32(); - Unk65 = br.ReadUInt32(); - Unk66 = br.ReadInt32(); - Unk67 = br.ReadUInt32(); - Unk68 = br.ReadUInt32(); - Unk69 = br.ReadUInt32(); - Unk70 = br.ReadUInt32(); - Unk71 = br.ReadUInt32(); - Unk72 = br.ReadInt32(); - Unk73 = br.ReadUInt32(); - Unk74 = br.ReadUInt32(); - Unk75 = br.ReadUInt32(); - Unk76 = br.ReadUInt32(); - Unk77 = br.ReadSingle(); - Unk78 = br.ReadUInt32(); - Unk79 = br.ReadUInt32(); - Unk80 = br.ReadUInt32(); - Unk81 = br.ReadUInt32(); - Unk82 = br.ReadUInt32(); - Unk83 = br.ReadUInt32(); - Unk84 = br.ReadUInt32(); - Unk85 = br.ReadInt32(); - Unk86 = br.ReadUInt32(); - Unk87 = br.ReadInt32(); - Unk88 = br.ReadUInt32(); - Unk89 = br.ReadInt32(); + WetMaterialReference = br.ReadUInt32(); + ImpactStartOffsetCurve = br.ReadUInt32(); + ImpactVolCurve = br.ReadUInt32(); + ScrapePitchCurve = br.ReadUInt32(); + ScrapeVolCurve = br.ReadUInt32(); + FastTyreRoll = br.ReadUInt32(); + DetailTyreRoll = br.ReadUInt32(); + MainSkid = br.ReadUInt32(); + SideSkid = br.ReadUInt32(); + MetalShellCasingSmall = br.ReadUInt32(); + MetalShellCasingMedium = br.ReadUInt32(); + MetalShellCasingLarge = br.ReadUInt32(); + MetalShellCasingSmallSlow = br.ReadUInt32(); + MetalShellCasingMediumSlow = br.ReadUInt32(); + MetalShellCasingLargeSlow = br.ReadUInt32(); + PlasticShellCasing = br.ReadUInt32(); + PlasticShellCasingSlow = br.ReadUInt32(); + RollSound = br.ReadUInt32(); + RainLoop = br.ReadUInt32(); + TyreBump = br.ReadUInt32(); + ShockwaveSound = br.ReadUInt32(); + RandomAmbient = br.ReadUInt32(); + ClimbSettings = br.ReadUInt32(); + Dirtiness = br.ReadSingle(); + SurfaceSettle = br.ReadUInt32(); + RidgedSurfaceLoop = br.ReadUInt32(); + CollisionCount = br.ReadUInt32(); + CollisionCountThreshold = br.ReadUInt32(); + VolumeThreshold = br.ReadSingle(); + MaterialID = br.ReadInt32(); + SoundSetRef = br.ReadUInt32(); + DebrisLaunch = br.ReadUInt32(); + DebrisLand = br.ReadUInt32(); + OffRoadSound = br.ReadUInt32(); + Roughness = br.ReadSingle(); + DebrisOnSlope = br.ReadUInt32(); + BicycleTyreRoll = br.ReadUInt32(); + OffRoadRumbleSound = br.ReadUInt32(); + StealthSweetener = br.ReadUInt32(); + Scuff = br.ReadUInt32(); + MaterialType = br.ReadByte(); + SurfacePriority = br.ReadByte(); + padding06 = br.ReadInt16(); + WheelSpinLoop = br.ReadUInt32(); + BicycleTyreGritSound = br.ReadUInt32(); + PedSlideSound = br.ReadUInt32(); + PedRollSound = br.ReadUInt32(); + TimeInAirToTriggerBigLand = br.ReadSingle(); + MeleeOverideMaterial = br.ReadUInt32(); + SelfName = br.ReadUInt32(); + SlowMoHardImpact = br.ReadUInt32(); + SlowMoBulletImpactSound = br.ReadUInt32(); + SlowMoAutomaticBulletImpactSound = br.ReadUInt32(); + SlowMoShotgunBulletImpactSound = br.ReadUInt32(); + SlowMoBulletImpactPreSuck = br.ReadUInt32(); + SlowMoBulletImpactPreSuckTime = br.ReadInt32(); + SlowMoAutomaticBulletImpactPreSuck = br.ReadUInt32(); + SlowMoAutomaticBulletImpactPreSuckTime = br.ReadInt32(); + SlowMoShotgunBulletImpactPreSuck = br.ReadUInt32(); + SlowMoShotgunBulletImpactPreSuckTime = br.ReadInt32(); } public override void Write(BinaryWriter bw) { WriteTypeAndOffset(bw); - bw.Write(Unk00); - bw.Write(Unk01); - bw.Write(Unk02); - bw.Write(Unk03); - bw.Write(Unk04); - bw.Write(Unk05); - bw.Write(Unk06); - bw.Write(Unk07); - bw.Write(Unk08); - bw.Write(Unk09); - bw.Write(Unk10); - bw.Write(Unk11); - bw.Write(Unk12); - bw.Write(Unk13); - bw.Write(Unk14); - bw.Write(Unk15); - bw.Write(Unk16); - bw.Write(Unk17); - bw.Write(Unk18); - bw.Write(Unk19); - bw.Write(Unk20); - bw.Write(Unk21); - bw.Write(Unk22); - bw.Write(Unk23); - bw.Write(Unk24); - bw.Write(Unk25); - bw.Write(Unk26); - bw.Write(Unk27); - bw.Write(Unk28); - bw.Write(Unk29); - bw.Write(Unk30); - bw.Write(Footsteps); - bw.Write(Unk31); - bw.Write(Unk32); + bw.Write(Flags); + bw.Write(HardImpact); + bw.Write(SolidImpact); + bw.Write(SoftImpact); + bw.Write(ScrapeSound); + bw.Write(PedScrapeSound); + bw.Write(BreakSound); + bw.Write(DestroySound); + bw.Write(SettleSound); + bw.Write(BulletImpactSound); + bw.Write(AutomaticBulletImpactSound); + bw.Write(ShotgunBulletImpactSound); + bw.Write(BigVehicleImpactSound); + bw.Write(PedPunch); + bw.Write(PedKick); + bw.Write(MediumIntensity); + bw.Write(HighIntensity); + bw.Write(Hardness); + bw.Write(padding00); + bw.Write(padding01); + bw.Write(MinImpulseMag); + bw.Write(MaxImpulseMag); + bw.Write(ImpulseMagScalar); + bw.Write(padding02); + bw.Write(padding03); + bw.Write(MaxScrapeSpeed); + bw.Write(MinScrapeSpeed); + bw.Write(ScrapeImpactMag); + bw.Write(MaxRollSpeed); + bw.Write(MinRollSpeed); + bw.Write(RollImpactMag); + bw.Write(BulletCollisionScaling); + bw.Write(padding04); + bw.Write(padding05); + bw.Write(FootstepCustomImpactSound); + bw.Write(FootstepMaterialHardness); + bw.Write(FootstepMaterialLoudness); + bw.Write(FootstepSettings); + bw.Write(FootstepScaling); + bw.Write(ScuffstepScaling); + bw.Write(FootstepImpactScaling); + bw.Write(ScuffImpactScaling); + bw.Write(SkiSettings); bw.Write(AnimalFootstepSettings); - bw.Write(AudioTrack2); - bw.Write(Unk33); - bw.Write(Unk34); - bw.Write(Unk35); - bw.Write(Unk36); - bw.Write(Unk37); - bw.Write(Unk38); - bw.Write(Unk39); - bw.Write(Unk40); - bw.Write(Unk41); - bw.Write(Unk42); - bw.Write(Unk43); - bw.Write(Unk44); - bw.Write(Unk45); - bw.Write(Unk46); - bw.Write(Unk47); - bw.Write(Unk48); - bw.Write(Unk49); - bw.Write(Unk50); - bw.Write(Unk51); - bw.Write(Unk52); - bw.Write(Unk53); - bw.Write(Unk54); - bw.Write(Unk55); - bw.Write(Unk56); - bw.Write(Unk57); - bw.Write(Unk58); - bw.Write(Unk59); - bw.Write(Unk60); - bw.Write(Unk61); - bw.Write(Unk62); - bw.Write(Unk63); - bw.Write(Unk64); - bw.Write(Unk65); - bw.Write(Unk66); - bw.Write(Unk67); - bw.Write(Unk68); - bw.Write(Unk69); - bw.Write(Unk70); - bw.Write(Unk71); - bw.Write(Unk72); - bw.Write(Unk73); - bw.Write(Unk74); - bw.Write(Unk75); - bw.Write(Unk76); - bw.Write(Unk77); - bw.Write(Unk78); - bw.Write(Unk79); - bw.Write(Unk80); - bw.Write(Unk81); - bw.Write(Unk82); - bw.Write(Unk83); - bw.Write(Unk84); - bw.Write(Unk85); - bw.Write(Unk86); - bw.Write(Unk87); - bw.Write(Unk88); - bw.Write(Unk89); + bw.Write(WetMaterialReference); + bw.Write(ImpactStartOffsetCurve); + bw.Write(ImpactVolCurve); + bw.Write(ScrapePitchCurve); + bw.Write(ScrapeVolCurve); + bw.Write(FastTyreRoll); + bw.Write(DetailTyreRoll); + bw.Write(MainSkid); + bw.Write(SideSkid); + bw.Write(MetalShellCasingSmall); + bw.Write(MetalShellCasingMedium); + bw.Write(MetalShellCasingLarge); + bw.Write(MetalShellCasingSmallSlow); + bw.Write(MetalShellCasingMediumSlow); + bw.Write(MetalShellCasingLargeSlow); + bw.Write(PlasticShellCasing); + bw.Write(PlasticShellCasingSlow); + bw.Write(RollSound); + bw.Write(RainLoop); + bw.Write(TyreBump); + bw.Write(ShockwaveSound); + bw.Write(RandomAmbient); + bw.Write(ClimbSettings); + bw.Write(Dirtiness); + bw.Write(SurfaceSettle); + bw.Write(RidgedSurfaceLoop); + bw.Write(CollisionCount); + bw.Write(CollisionCountThreshold); + bw.Write(VolumeThreshold); + bw.Write(MaterialID); + bw.Write(SoundSetRef); + bw.Write(DebrisLaunch); + bw.Write(DebrisLand); + bw.Write(OffRoadSound); + bw.Write(Roughness); + bw.Write(DebrisOnSlope); + bw.Write(BicycleTyreRoll); + bw.Write(OffRoadRumbleSound); + bw.Write(StealthSweetener); + bw.Write(Scuff); + bw.Write(MaterialType); + bw.Write(SurfacePriority); + bw.Write(padding06); + bw.Write(WheelSpinLoop); + bw.Write(BicycleTyreGritSound); + bw.Write(PedSlideSound); + bw.Write(PedRollSound); + bw.Write(TimeInAirToTriggerBigLand); + bw.Write(MeleeOverideMaterial); + bw.Write(SelfName); + bw.Write(SlowMoHardImpact); + bw.Write(SlowMoBulletImpactSound); + bw.Write(SlowMoAutomaticBulletImpactSound); + bw.Write(SlowMoShotgunBulletImpactSound); + bw.Write(SlowMoBulletImpactPreSuck); + bw.Write(SlowMoBulletImpactPreSuckTime); + bw.Write(SlowMoAutomaticBulletImpactPreSuck); + bw.Write(SlowMoAutomaticBulletImpactPreSuckTime); + bw.Write(SlowMoShotgunBulletImpactPreSuck); + bw.Write(SlowMoShotgunBulletImpactPreSuckTime); } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.ValueTag(sb, indent, "Unk00", "0x" + Unk00.Hex); - RelXml.StringTag(sb, indent, "Unk01", RelXml.HashString(Unk01)); - RelXml.StringTag(sb, indent, "Unk02", RelXml.HashString(Unk02)); - RelXml.StringTag(sb, indent, "Unk03", RelXml.HashString(Unk03)); - RelXml.StringTag(sb, indent, "Unk04", RelXml.HashString(Unk04)); - RelXml.StringTag(sb, indent, "Unk05", RelXml.HashString(Unk05)); - RelXml.StringTag(sb, indent, "Unk06", RelXml.HashString(Unk06)); - RelXml.StringTag(sb, indent, "Unk07", RelXml.HashString(Unk07)); - RelXml.StringTag(sb, indent, "Unk08", RelXml.HashString(Unk08)); - RelXml.StringTag(sb, indent, "Unk09", RelXml.HashString(Unk09)); - RelXml.StringTag(sb, indent, "Unk10", RelXml.HashString(Unk10)); - RelXml.StringTag(sb, indent, "Unk11", RelXml.HashString(Unk11)); - RelXml.StringTag(sb, indent, "Unk12", RelXml.HashString(Unk12)); - RelXml.StringTag(sb, indent, "Unk13", RelXml.HashString(Unk13)); - RelXml.StringTag(sb, indent, "Unk14", RelXml.HashString(Unk14)); - RelXml.ValueTag(sb, indent, "Unk15", Unk15.ToString()); - RelXml.ValueTag(sb, indent, "Unk16", Unk16.ToString()); - RelXml.ValueTag(sb, indent, "Unk17", Unk17.ToString()); - RelXml.ValueTag(sb, indent, "Unk18", Unk18.ToString()); - RelXml.ValueTag(sb, indent, "Unk19", FloatUtil.ToString(Unk19)); - RelXml.ValueTag(sb, indent, "Unk20", Unk20.ToString()); - RelXml.ValueTag(sb, indent, "Unk21", FloatUtil.ToString(Unk21)); - RelXml.ValueTag(sb, indent, "Unk22", FloatUtil.ToString(Unk22)); - RelXml.ValueTag(sb, indent, "Unk23", FloatUtil.ToString(Unk23)); - RelXml.ValueTag(sb, indent, "Unk24", FloatUtil.ToString(Unk24)); - RelXml.ValueTag(sb, indent, "Unk25", FloatUtil.ToString(Unk25)); - RelXml.ValueTag(sb, indent, "Unk26", FloatUtil.ToString(Unk26)); - RelXml.ValueTag(sb, indent, "Unk27", Unk27.ToString()); - RelXml.StringTag(sb, indent, "Unk28", RelXml.HashString(Unk28)); - RelXml.ValueTag(sb, indent, "Unk29", FloatUtil.ToString(Unk29)); - RelXml.ValueTag(sb, indent, "Unk30", FloatUtil.ToString(Unk30)); - RelXml.StringTag(sb, indent, "Footsteps", RelXml.HashString(Footsteps)); - RelXml.ValueTag(sb, indent, "Unk31", Unk31.ToString()); - RelXml.StringTag(sb, indent, "Unk32", RelXml.HashString(Unk32)); + RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex); + RelXml.StringTag(sb, indent, "HardImpact", RelXml.HashString(HardImpact)); + RelXml.StringTag(sb, indent, "SolidImpact", RelXml.HashString(SolidImpact)); + RelXml.StringTag(sb, indent, "SoftImpact", RelXml.HashString(SoftImpact)); + RelXml.StringTag(sb, indent, "ScrapeSound", RelXml.HashString(ScrapeSound)); + RelXml.StringTag(sb, indent, "PedScrapeSound", RelXml.HashString(PedScrapeSound)); + RelXml.StringTag(sb, indent, "BreakSound", RelXml.HashString(BreakSound)); + RelXml.StringTag(sb, indent, "DestroySound", RelXml.HashString(DestroySound)); + RelXml.StringTag(sb, indent, "SettleSound", RelXml.HashString(SettleSound)); + RelXml.StringTag(sb, indent, "BulletImpactSound", RelXml.HashString(BulletImpactSound)); + RelXml.StringTag(sb, indent, "AutomaticBulletImpactSound", RelXml.HashString(AutomaticBulletImpactSound)); + RelXml.StringTag(sb, indent, "ShotgunBulletImpactSound", RelXml.HashString(ShotgunBulletImpactSound)); + RelXml.StringTag(sb, indent, "BigVehicleImpactSound", RelXml.HashString(BigVehicleImpactSound)); + RelXml.StringTag(sb, indent, "PedPunch", RelXml.HashString(PedPunch)); + RelXml.StringTag(sb, indent, "PedKick", RelXml.HashString(PedKick)); + RelXml.ValueTag(sb, indent, "MediumIntensity", MediumIntensity.ToString()); + RelXml.ValueTag(sb, indent, "HighIntensity", HighIntensity.ToString()); + RelXml.ValueTag(sb, indent, "Hardness", Hardness.ToString()); + RelXml.ValueTag(sb, indent, "MinImpulseMag", FloatUtil.ToString(MinImpulseMag)); + RelXml.ValueTag(sb, indent, "MaxImpulseMag", FloatUtil.ToString(MaxImpulseMag)); + RelXml.ValueTag(sb, indent, "ImpulseMagScalar", ImpulseMagScalar.ToString()); + RelXml.ValueTag(sb, indent, "MaxScrapeSpeed", FloatUtil.ToString(MaxScrapeSpeed)); + RelXml.ValueTag(sb, indent, "MinScrapeSpeed", FloatUtil.ToString(MinScrapeSpeed)); + RelXml.ValueTag(sb, indent, "ScrapeImpactMag", FloatUtil.ToString(ScrapeImpactMag)); + RelXml.ValueTag(sb, indent, "MaxRollSpeed", FloatUtil.ToString(MaxRollSpeed)); + RelXml.ValueTag(sb, indent, "MinRollSpeed", FloatUtil.ToString(MinRollSpeed)); + RelXml.ValueTag(sb, indent, "RollImpactMag", FloatUtil.ToString(RollImpactMag)); + RelXml.ValueTag(sb, indent, "BulletCollisionScaling", BulletCollisionScaling.ToString()); + RelXml.StringTag(sb, indent, "FootstepCustomImpactSound", RelXml.HashString(FootstepCustomImpactSound)); + RelXml.ValueTag(sb, indent, "FootstepMaterialHardness", FloatUtil.ToString(FootstepMaterialHardness)); + RelXml.ValueTag(sb, indent, "FootstepMaterialLoudness", FloatUtil.ToString(FootstepMaterialLoudness)); + RelXml.StringTag(sb, indent, "FootstepSettings", RelXml.HashString(FootstepSettings)); + RelXml.ValueTag(sb, indent, "FootstepScaling", FootstepScaling.ToString()); + RelXml.ValueTag(sb, indent, "ScuffstepScaling", ScuffstepScaling.ToString()); + RelXml.ValueTag(sb, indent, "FootstepImpactScaling", FootstepImpactScaling.ToString()); + RelXml.ValueTag(sb, indent, "ScuffImpactScaling", ScuffImpactScaling.ToString()); + RelXml.StringTag(sb, indent, "SkiSettings", RelXml.HashString(SkiSettings)); RelXml.StringTag(sb, indent, "AnimalFootstepSettings", RelXml.HashString(AnimalFootstepSettings)); - RelXml.StringTag(sb, indent, "AudioTrack2", RelXml.HashString(AudioTrack2)); - RelXml.StringTag(sb, indent, "Unk33", RelXml.HashString(Unk33)); - RelXml.StringTag(sb, indent, "Unk34", RelXml.HashString(Unk34)); - RelXml.StringTag(sb, indent, "Unk35", RelXml.HashString(Unk35)); - RelXml.StringTag(sb, indent, "Unk36", RelXml.HashString(Unk36)); - RelXml.StringTag(sb, indent, "Unk37", RelXml.HashString(Unk37)); - RelXml.StringTag(sb, indent, "Unk38", RelXml.HashString(Unk38)); - RelXml.StringTag(sb, indent, "Unk39", RelXml.HashString(Unk39)); - RelXml.StringTag(sb, indent, "Unk40", RelXml.HashString(Unk40)); - RelXml.StringTag(sb, indent, "Unk41", RelXml.HashString(Unk41)); - RelXml.StringTag(sb, indent, "Unk42", RelXml.HashString(Unk42)); - RelXml.StringTag(sb, indent, "Unk43", RelXml.HashString(Unk43)); - RelXml.StringTag(sb, indent, "Unk44", RelXml.HashString(Unk44)); - RelXml.StringTag(sb, indent, "Unk45", RelXml.HashString(Unk45)); - RelXml.StringTag(sb, indent, "Unk46", RelXml.HashString(Unk46)); - RelXml.StringTag(sb, indent, "Unk47", RelXml.HashString(Unk47)); - RelXml.StringTag(sb, indent, "Unk48", RelXml.HashString(Unk48)); - RelXml.StringTag(sb, indent, "Unk49", RelXml.HashString(Unk49)); - RelXml.StringTag(sb, indent, "Unk50", RelXml.HashString(Unk50)); - RelXml.StringTag(sb, indent, "Unk51", RelXml.HashString(Unk51)); - RelXml.StringTag(sb, indent, "Unk52", RelXml.HashString(Unk52)); - RelXml.StringTag(sb, indent, "Unk53", RelXml.HashString(Unk53)); - RelXml.StringTag(sb, indent, "Unk54", RelXml.HashString(Unk54)); - RelXml.ValueTag(sb, indent, "Unk55", FloatUtil.ToString(Unk55)); - RelXml.StringTag(sb, indent, "Unk56", RelXml.HashString(Unk56)); - RelXml.StringTag(sb, indent, "Unk57", RelXml.HashString(Unk57)); - RelXml.ValueTag(sb, indent, "Unk58", Unk58.ToString()); - RelXml.ValueTag(sb, indent, "Unk59", Unk59.ToString()); - RelXml.ValueTag(sb, indent, "Unk60", FloatUtil.ToString(Unk60)); - RelXml.ValueTag(sb, indent, "Unk61", Unk61.ToString()); - RelXml.ValueTag(sb, indent, "Unk62", Unk62.ToString()); - RelXml.StringTag(sb, indent, "Unk63", RelXml.HashString(Unk63)); - RelXml.StringTag(sb, indent, "Unk64", RelXml.HashString(Unk64)); - RelXml.StringTag(sb, indent, "Unk65", RelXml.HashString(Unk65)); - RelXml.ValueTag(sb, indent, "Unk66", Unk66.ToString()); - RelXml.StringTag(sb, indent, "Unk67", RelXml.HashString(Unk67)); - RelXml.StringTag(sb, indent, "Unk68", RelXml.HashString(Unk68)); - RelXml.StringTag(sb, indent, "Unk69", RelXml.HashString(Unk69)); - RelXml.StringTag(sb, indent, "Unk70", RelXml.HashString(Unk70)); - RelXml.StringTag(sb, indent, "Unk71", RelXml.HashString(Unk71)); - RelXml.ValueTag(sb, indent, "Unk72", Unk72.ToString()); - RelXml.StringTag(sb, indent, "Unk73", RelXml.HashString(Unk73)); - RelXml.StringTag(sb, indent, "Unk74", RelXml.HashString(Unk74)); - RelXml.StringTag(sb, indent, "Unk75", RelXml.HashString(Unk75)); - RelXml.StringTag(sb, indent, "Unk76", RelXml.HashString(Unk76)); - RelXml.ValueTag(sb, indent, "Unk77", FloatUtil.ToString(Unk77)); - RelXml.StringTag(sb, indent, "Unk78", RelXml.HashString(Unk78)); - RelXml.StringTag(sb, indent, "Unk79", RelXml.HashString(Unk79)); - RelXml.StringTag(sb, indent, "Unk80", RelXml.HashString(Unk80)); - RelXml.StringTag(sb, indent, "Unk81", RelXml.HashString(Unk81)); - RelXml.StringTag(sb, indent, "Unk82", RelXml.HashString(Unk82)); - RelXml.StringTag(sb, indent, "Unk83", RelXml.HashString(Unk83)); - RelXml.StringTag(sb, indent, "Unk84", RelXml.HashString(Unk84)); - RelXml.ValueTag(sb, indent, "Unk85", Unk85.ToString()); - RelXml.StringTag(sb, indent, "Unk86", RelXml.HashString(Unk86)); - RelXml.ValueTag(sb, indent, "Unk87", Unk87.ToString()); - RelXml.StringTag(sb, indent, "Unk88", RelXml.HashString(Unk88)); - RelXml.ValueTag(sb, indent, "Unk89", Unk89.ToString()); + RelXml.StringTag(sb, indent, "WetMaterialReference", RelXml.HashString(WetMaterialReference)); + RelXml.StringTag(sb, indent, "ImpactStartOffsetCurve", RelXml.HashString(ImpactStartOffsetCurve)); + RelXml.StringTag(sb, indent, "ImpactVolCurve", RelXml.HashString(ImpactVolCurve)); + RelXml.StringTag(sb, indent, "ScrapePitchCurve", RelXml.HashString(ScrapePitchCurve)); + RelXml.StringTag(sb, indent, "ScrapeVolCurve", RelXml.HashString(ScrapeVolCurve)); + RelXml.StringTag(sb, indent, "FastTyreRoll", RelXml.HashString(FastTyreRoll)); + RelXml.StringTag(sb, indent, "DetailTyreRoll", RelXml.HashString(DetailTyreRoll)); + RelXml.StringTag(sb, indent, "MainSkid", RelXml.HashString(MainSkid)); + RelXml.StringTag(sb, indent, "SideSkid", RelXml.HashString(SideSkid)); + RelXml.StringTag(sb, indent, "MetalShellCasingSmall", RelXml.HashString(MetalShellCasingSmall)); + RelXml.StringTag(sb, indent, "MetalShellCasingMedium", RelXml.HashString(MetalShellCasingMedium)); + RelXml.StringTag(sb, indent, "MetalShellCasingLarge", RelXml.HashString(MetalShellCasingLarge)); + RelXml.StringTag(sb, indent, "MetalShellCasingSmallSlow", RelXml.HashString(MetalShellCasingSmallSlow)); + RelXml.StringTag(sb, indent, "MetalShellCasingMediumSlow", RelXml.HashString(MetalShellCasingMediumSlow)); + RelXml.StringTag(sb, indent, "MetalShellCasingLargeSlow", RelXml.HashString(MetalShellCasingLargeSlow)); + RelXml.StringTag(sb, indent, "PlasticShellCasing", RelXml.HashString(PlasticShellCasing)); + RelXml.StringTag(sb, indent, "PlasticShellCasingSlow", RelXml.HashString(PlasticShellCasingSlow)); + RelXml.StringTag(sb, indent, "RollSound", RelXml.HashString(RollSound)); + RelXml.StringTag(sb, indent, "RainLoop", RelXml.HashString(RainLoop)); + RelXml.StringTag(sb, indent, "TyreBump", RelXml.HashString(TyreBump)); + RelXml.StringTag(sb, indent, "ShockwaveSound", RelXml.HashString(ShockwaveSound)); + RelXml.StringTag(sb, indent, "RandomAmbient", RelXml.HashString(RandomAmbient)); + RelXml.StringTag(sb, indent, "ClimbSettings", RelXml.HashString(ClimbSettings)); + RelXml.ValueTag(sb, indent, "Dirtiness", FloatUtil.ToString(Dirtiness)); + RelXml.StringTag(sb, indent, "SurfaceSettle", RelXml.HashString(SurfaceSettle)); + RelXml.StringTag(sb, indent, "RidgedSurfaceLoop", RelXml.HashString(RidgedSurfaceLoop)); + RelXml.ValueTag(sb, indent, "CollisionCount", CollisionCount.ToString()); + RelXml.ValueTag(sb, indent, "CollisionCountThreshold", CollisionCountThreshold.ToString()); + RelXml.ValueTag(sb, indent, "VolumeThreshold", FloatUtil.ToString(VolumeThreshold)); + RelXml.ValueTag(sb, indent, "MaterialID", MaterialID.ToString()); + RelXml.ValueTag(sb, indent, "SoundSetRef", SoundSetRef.ToString()); + RelXml.StringTag(sb, indent, "DebrisLaunch", RelXml.HashString(DebrisLaunch)); + RelXml.StringTag(sb, indent, "DebrisLand", RelXml.HashString(DebrisLand)); + RelXml.StringTag(sb, indent, "OffRoadSound", RelXml.HashString(OffRoadSound)); + RelXml.ValueTag(sb, indent, "Roughness", FloatUtil.ToString(Roughness)); + RelXml.StringTag(sb, indent, "DebrisOnSlope", RelXml.HashString(DebrisOnSlope)); + RelXml.StringTag(sb, indent, "BicycleTyreRoll", RelXml.HashString(BicycleTyreRoll)); + RelXml.StringTag(sb, indent, "OffRoadRumbleSound", RelXml.HashString(OffRoadRumbleSound)); + RelXml.StringTag(sb, indent, "StealthSweetener", RelXml.HashString(StealthSweetener)); + RelXml.StringTag(sb, indent, "Scuff", RelXml.HashString(Scuff)); + RelXml.ValueTag(sb, indent, "MaterialType", MaterialType.ToString()); + RelXml.StringTag(sb, indent, "SurfacePriority", SurfacePriority.ToString()); + RelXml.StringTag(sb, indent, "WheelSpinLoop", RelXml.HashString(WheelSpinLoop)); + RelXml.StringTag(sb, indent, "BicycleTyreGritSound", RelXml.HashString(BicycleTyreGritSound)); + RelXml.StringTag(sb, indent, "PedSlideSound", RelXml.HashString(PedSlideSound)); + RelXml.StringTag(sb, indent, "PedRollSound", RelXml.HashString(PedRollSound)); + RelXml.ValueTag(sb, indent, "TimeInAirToTriggerBigLand", FloatUtil.ToString(TimeInAirToTriggerBigLand)); + RelXml.StringTag(sb, indent, "MeleeOverideMaterial", RelXml.HashString(MeleeOverideMaterial)); + RelXml.StringTag(sb, indent, "SelfName", RelXml.HashString(SelfName)); + RelXml.StringTag(sb, indent, "SlowMoHardImpact", RelXml.HashString(SlowMoHardImpact)); + RelXml.StringTag(sb, indent, "SlowMoBulletImpactSound", RelXml.HashString(SlowMoBulletImpactSound)); + RelXml.StringTag(sb, indent, "SlowMoAutomaticBulletImpactSound", RelXml.HashString(SlowMoAutomaticBulletImpactSound)); + RelXml.StringTag(sb, indent, "SlowMoShotgunBulletImpactSound", RelXml.HashString(SlowMoShotgunBulletImpactSound)); + RelXml.StringTag(sb, indent, "SlowMoBulletImpactPreSuck", RelXml.HashString(SlowMoBulletImpactPreSuck)); + RelXml.ValueTag(sb, indent, "SlowMoBulletImpactPreSuckTime", SlowMoBulletImpactPreSuckTime.ToString()); + RelXml.StringTag(sb, indent, "SlowMoAutomaticBulletImpactPreSuck", RelXml.HashString(SlowMoAutomaticBulletImpactPreSuck)); + RelXml.ValueTag(sb, indent, "SlowMoAutomaticBulletImpactPreSuckTime", SlowMoAutomaticBulletImpactPreSuckTime.ToString()); + RelXml.StringTag(sb, indent, "SlowMoShotgunBulletImpactPreSuck", RelXml.HashString(SlowMoShotgunBulletImpactPreSuck)); + RelXml.ValueTag(sb, indent, "SlowMoShotgunBulletImpactPreSuckTime", SlowMoShotgunBulletImpactPreSuckTime.ToString()); } public override void ReadXml(XmlNode node) { - Unk00 = Xml.GetChildUIntAttribute(node, "Unk00", "value"); - Unk01 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk01")); - Unk02 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk02")); - Unk03 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk03")); - Unk04 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk04")); - Unk05 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk05")); - Unk06 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk06")); - Unk07 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk07")); - Unk08 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk08")); - Unk09 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk09")); - Unk10 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk10")); - Unk11 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk11")); - Unk12 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk12")); - Unk13 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk13")); - Unk14 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk14")); - Unk15 = Xml.GetChildIntAttribute(node, "Unk15", "value"); - Unk16 = Xml.GetChildIntAttribute(node, "Unk16", "value"); - Unk17 = Xml.GetChildIntAttribute(node, "Unk17", "value"); - Unk18 = Xml.GetChildIntAttribute(node, "Unk18", "value"); - Unk19 = Xml.GetChildFloatAttribute(node, "Unk19", "value"); - Unk20 = Xml.GetChildIntAttribute(node, "Unk20", "value"); - Unk21 = Xml.GetChildFloatAttribute(node, "Unk21", "value"); - Unk22 = Xml.GetChildFloatAttribute(node, "Unk22", "value"); - Unk23 = Xml.GetChildFloatAttribute(node, "Unk23", "value"); - Unk24 = Xml.GetChildFloatAttribute(node, "Unk24", "value"); - Unk25 = Xml.GetChildFloatAttribute(node, "Unk25", "value"); - Unk26 = Xml.GetChildFloatAttribute(node, "Unk26", "value"); - Unk27 = Xml.GetChildIntAttribute(node, "Unk27", "value"); - Unk28 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk28")); - Unk29 = Xml.GetChildFloatAttribute(node, "Unk29", "value"); - Unk30 = Xml.GetChildFloatAttribute(node, "Unk30", "value"); - Footsteps = XmlRel.GetHash(Xml.GetChildInnerText(node, "Footsteps")); - Unk31 = Xml.GetChildIntAttribute(node, "Unk31", "value"); - Unk32 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk32")); + Flags = Xml.GetChildUIntAttribute(node, "Flags", "value"); + HardImpact = XmlRel.GetHash(Xml.GetChildInnerText(node, "HardImpact")); + SolidImpact = XmlRel.GetHash(Xml.GetChildInnerText(node, "SolidImpact")); + SoftImpact = XmlRel.GetHash(Xml.GetChildInnerText(node, "SoftImpact")); + ScrapeSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScrapeSound")); + PedScrapeSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "PedScrapeSound")); + BreakSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "BreakSound")); + DestroySound = XmlRel.GetHash(Xml.GetChildInnerText(node, "DestroySound")); + SettleSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "SettleSound")); + BulletImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "BulletImpactSound")); + AutomaticBulletImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "AutomaticBulletImpactSound")); + ShotgunBulletImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "ShotgunBulletImpactSound")); + BigVehicleImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "BigVehicleImpactSound")); + PedPunch = XmlRel.GetHash(Xml.GetChildInnerText(node, "PedPunch")); + PedKick = XmlRel.GetHash(Xml.GetChildInnerText(node, "PedKick")); + MediumIntensity = Xml.GetChildUIntAttribute(node, "MediumIntensity", "value"); + HighIntensity = Xml.GetChildUIntAttribute(node, "HighIntensity", "value"); + Hardness = (byte)Xml.GetChildUIntAttribute(node, "Hardness", "value"); + MinImpulseMag = Xml.GetChildFloatAttribute(node, "MinImpulseMag", "value"); + MaxImpulseMag = Xml.GetChildFloatAttribute(node, "MaxImpulseMag", "value"); + ImpulseMagScalar = (byte)Xml.GetChildUIntAttribute(node, "ImpulseMagScalar", "value"); + MaxScrapeSpeed = Xml.GetChildFloatAttribute(node, "MaxScrapeSpeed", "value"); + MinScrapeSpeed = Xml.GetChildFloatAttribute(node, "MinScrapeSpeed", "value"); + ScrapeImpactMag = Xml.GetChildFloatAttribute(node, "ScrapeImpactMag", "value"); + MaxRollSpeed = Xml.GetChildFloatAttribute(node, "MaxRollSpeed", "value"); + MinRollSpeed = Xml.GetChildFloatAttribute(node, "MinRollSpeed", "value"); + RollImpactMag = Xml.GetChildFloatAttribute(node, "RollImpactMag", "value"); + BulletCollisionScaling = (byte)Xml.GetChildUIntAttribute(node, "BulletCollisionScaling", "value"); + FootstepCustomImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "FootstepCustomImpactSound")); + FootstepMaterialHardness = Xml.GetChildFloatAttribute(node, "FootstepMaterialHardness", "value"); + FootstepMaterialLoudness = Xml.GetChildFloatAttribute(node, "FootstepMaterialLoudness", "value"); + FootstepSettings = XmlRel.GetHash(Xml.GetChildInnerText(node, "FootstepSettings")); + FootstepScaling = (byte)Xml.GetChildUIntAttribute(node, "FootstepScaling", "value"); + ScuffstepScaling = (byte)Xml.GetChildUIntAttribute(node, "ScuffstepScaling", "value"); + FootstepImpactScaling = (byte)Xml.GetChildUIntAttribute(node, "FootstepImpactScaling", "value"); + ScuffImpactScaling = (byte)Xml.GetChildUIntAttribute(node, "ScuffImpactScaling", "value"); + SkiSettings = XmlRel.GetHash(Xml.GetChildInnerText(node, "SkiSettings")); AnimalFootstepSettings = XmlRel.GetHash(Xml.GetChildInnerText(node, "AnimalFootstepSettings")); - AudioTrack2 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack2")); - Unk33 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk33")); - Unk34 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk34")); - Unk35 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk35")); - Unk36 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk36")); - Unk37 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk37")); - Unk38 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk38")); - Unk39 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk39")); - Unk40 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk40")); - Unk41 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk41")); - Unk42 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk42")); - Unk43 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk43")); - Unk44 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk44")); - Unk45 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk45")); - Unk46 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk46")); - Unk47 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk47")); - Unk48 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk48")); - Unk49 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk49")); - Unk50 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk50")); - Unk51 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk51")); - Unk52 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk52")); - Unk53 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk53")); - Unk54 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk54")); - Unk55 = Xml.GetChildFloatAttribute(node, "Unk55", "value"); - Unk56 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk56")); - Unk57 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk57")); - Unk58 = Xml.GetChildIntAttribute(node, "Unk58", "value"); - Unk59 = Xml.GetChildIntAttribute(node, "Unk59", "value"); - Unk60 = Xml.GetChildFloatAttribute(node, "Unk60", "value"); - Unk61 = Xml.GetChildIntAttribute(node, "Unk61", "value"); - Unk62 = Xml.GetChildIntAttribute(node, "Unk62", "value"); - Unk63 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk63")); - Unk64 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk64")); - Unk65 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk65")); - Unk66 = Xml.GetChildIntAttribute(node, "Unk66", "value"); - Unk67 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk67")); - Unk68 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk68")); - Unk69 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk69")); - Unk70 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk70")); - Unk71 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk71")); - Unk72 = Xml.GetChildIntAttribute(node, "Unk72", "value"); - Unk73 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk73")); - Unk74 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk74")); - Unk75 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk75")); - Unk76 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk76")); - Unk77 = Xml.GetChildFloatAttribute(node, "Unk77", "value"); - Unk78 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk78")); - Unk79 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk79")); - Unk80 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk80")); - Unk81 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk81")); - Unk82 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk82")); - Unk83 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk83")); - Unk84 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk84")); - Unk85 = Xml.GetChildIntAttribute(node, "Unk85", "value"); - Unk86 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk86")); - Unk87 = Xml.GetChildIntAttribute(node, "Unk87", "value"); - Unk88 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk88")); - Unk89 = Xml.GetChildIntAttribute(node, "Unk89", "value"); + WetMaterialReference = XmlRel.GetHash(Xml.GetChildInnerText(node, "WetMaterialReference")); + ImpactStartOffsetCurve = XmlRel.GetHash(Xml.GetChildInnerText(node, "ImpactStartOffsetCurve")); + ImpactVolCurve = XmlRel.GetHash(Xml.GetChildInnerText(node, "ImpactVolCurve")); + ScrapePitchCurve = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScrapePitchCurve")); + ScrapeVolCurve = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScrapeVolCurve")); + FastTyreRoll = XmlRel.GetHash(Xml.GetChildInnerText(node, "FastTyreRoll")); + DetailTyreRoll = XmlRel.GetHash(Xml.GetChildInnerText(node, "DetailTyreRoll")); + MainSkid = XmlRel.GetHash(Xml.GetChildInnerText(node, "MainSkid")); + SideSkid = XmlRel.GetHash(Xml.GetChildInnerText(node, "SideSkid")); + MetalShellCasingSmall = XmlRel.GetHash(Xml.GetChildInnerText(node, "MetalShellCasingSmall")); + MetalShellCasingMedium = XmlRel.GetHash(Xml.GetChildInnerText(node, "MetalShellCasingMedium")); + MetalShellCasingLarge = XmlRel.GetHash(Xml.GetChildInnerText(node, "MetalShellCasingLarge")); + MetalShellCasingSmallSlow = XmlRel.GetHash(Xml.GetChildInnerText(node, "MetalShellCasingSmallSlow")); + MetalShellCasingMediumSlow = XmlRel.GetHash(Xml.GetChildInnerText(node, "MetalShellCasingMediumSlow")); + MetalShellCasingLargeSlow = XmlRel.GetHash(Xml.GetChildInnerText(node, "MetalShellCasingLargeSlow")); + PlasticShellCasing = XmlRel.GetHash(Xml.GetChildInnerText(node, "PlasticShellCasing")); + PlasticShellCasingSlow = XmlRel.GetHash(Xml.GetChildInnerText(node, "PlasticShellCasingSlow")); + RollSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "RollSound")); + RainLoop = XmlRel.GetHash(Xml.GetChildInnerText(node, "RainLoop")); + TyreBump = XmlRel.GetHash(Xml.GetChildInnerText(node, "TyreBump")); + ShockwaveSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "ShockwaveSound")); + RandomAmbient = XmlRel.GetHash(Xml.GetChildInnerText(node, "RandomAmbient")); + ClimbSettings = XmlRel.GetHash(Xml.GetChildInnerText(node, "ClimbSettings")); + Dirtiness = Xml.GetChildFloatAttribute(node, "Dirtiness", "value"); + SurfaceSettle = XmlRel.GetHash(Xml.GetChildInnerText(node, "SurfaceSettle")); + RidgedSurfaceLoop = XmlRel.GetHash(Xml.GetChildInnerText(node, "RidgedSurfaceLoop")); + CollisionCount = Xml.GetChildUIntAttribute(node, "CollisionCount", "value"); + CollisionCountThreshold = Xml.GetChildUIntAttribute(node, "CollisionCountThreshold", "value"); + VolumeThreshold = Xml.GetChildFloatAttribute(node, "VolumeThreshold", "value"); + MaterialID = Xml.GetChildIntAttribute(node, "MaterialID", "value"); + SoundSetRef = XmlRel.GetHash(Xml.GetChildInnerText(node, "SoundSetRef")); + DebrisLaunch = XmlRel.GetHash(Xml.GetChildInnerText(node, "DebrisLaunch")); + DebrisLand = XmlRel.GetHash(Xml.GetChildInnerText(node, "DebrisLand")); + OffRoadSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "OffRoadSound")); + Roughness = Xml.GetChildFloatAttribute(node, "Roughness", "value"); + DebrisOnSlope = XmlRel.GetHash(Xml.GetChildInnerText(node, "DebrisOnSlope")); + BicycleTyreRoll = XmlRel.GetHash(Xml.GetChildInnerText(node, "BicycleTyreRoll")); + OffRoadRumbleSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "OffRoadRumbleSound")); + StealthSweetener = XmlRel.GetHash(Xml.GetChildInnerText(node, "StealthSweetener")); + Scuff = XmlRel.GetHash(Xml.GetChildInnerText(node, "Scuff")); + MaterialType = (byte)Xml.GetChildUIntAttribute(node, "MaterialType", "value"); + SurfacePriority = (byte)Xml.GetChildUIntAttribute(node, "SurfacePriority", "value"); + WheelSpinLoop = XmlRel.GetHash(Xml.GetChildInnerText(node, "WheelSpinLoop")); + BicycleTyreGritSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "BicycleTyreGritSound")); + PedSlideSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "PedSlideSound")); + PedRollSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "PedRollSound")); + TimeInAirToTriggerBigLand = Xml.GetChildFloatAttribute(node, "TimeInAirToTriggerBigLand", "value"); + MeleeOverideMaterial = XmlRel.GetHash(Xml.GetChildInnerText(node, "MeleeOverideMaterial")); + SelfName = XmlRel.GetHash(Xml.GetChildInnerText(node, "SelfName")); + SlowMoHardImpact = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoHardImpact")); + SlowMoBulletImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoBulletImpactSound")); + SlowMoAutomaticBulletImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoAutomaticBulletImpactSound")); + SlowMoShotgunBulletImpactSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoShotgunBulletImpactSound")); + SlowMoBulletImpactPreSuck = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoBulletImpactPreSuck")); + SlowMoBulletImpactPreSuckTime = Xml.GetChildIntAttribute(node, "SlowMoBulletImpactPreSuckTime", "value"); + SlowMoAutomaticBulletImpactPreSuck = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoAutomaticBulletImpactPreSuck")); + SlowMoAutomaticBulletImpactPreSuckTime = Xml.GetChildIntAttribute(node, "SlowMoAutomaticBulletImpactPreSuckTime", "value"); + SlowMoShotgunBulletImpactPreSuck = XmlRel.GetHash(Xml.GetChildInnerText(node, "SlowMoShotgunBulletImpactPreSuck")); + SlowMoShotgunBulletImpactPreSuckTime = Xml.GetChildIntAttribute(node, "SlowMoShotgunBulletImpactPreSuckTime", "value"); } public override uint[] GetHashTableOffsets() @@ -8372,18 +8424,18 @@ namespace CodeWalker.GameFiles } public override MetaHash[] GetCurveHashes() { - return new[] { Unk33, Unk34, Unk35, Unk36 }; + return new[] { ImpactStartOffsetCurve, ImpactVolCurve, ScrapePitchCurve, ScrapeVolCurve }; } public override MetaHash[] GetSoundHashes() { - return new[] { Unk01, Unk02, Unk03, Unk04, Unk05, Unk06, Unk07, Unk08, Unk09, Unk10, Unk11, Unk12, Unk13, Unk14, Unk28, - Unk37, Unk38, Unk39, Unk40, Unk41, Unk42, Unk43, Unk44, Unk45, Unk46, Unk47, Unk48, Unk49, Unk50, Unk51, Unk52, Unk53, - Unk56, Unk57, Unk63, Unk64, Unk65, Unk67, Unk68, Unk69, Unk70, Unk71, Unk73, Unk74, Unk75, Unk76, - Unk80, Unk81, Unk82, Unk83, Unk84, Unk86, Unk88 }; + return new[] { HardImpact, SolidImpact, SoftImpact, ScrapeSound, PedScrapeSound, BreakSound, DestroySound, SettleSound, BulletImpactSound, AutomaticBulletImpactSound, ShotgunBulletImpactSound, BigVehicleImpactSound, PedPunch, PedKick, FootstepCustomImpactSound, + FastTyreRoll, DetailTyreRoll, MainSkid, SideSkid, MetalShellCasingSmall, MetalShellCasingMedium, MetalShellCasingLarge, MetalShellCasingSmallSlow, MetalShellCasingMediumSlow, MetalShellCasingLargeSlow, PlasticShellCasing, PlasticShellCasingSlow, RollSound, RainLoop, TyreBump, ShockwaveSound, RandomAmbient, + SurfaceSettle, RidgedSurfaceLoop, DebrisLaunch, DebrisLand, OffRoadSound, DebrisOnSlope, BicycleTyreRoll, OffRoadRumbleSound, StealthSweetener, Scuff, SurfacePriority, WheelSpinLoop, BicycleTyreGritSound, PedSlideSound, PedRollSound, + SlowMoHardImpact, SlowMoBulletImpactSound, SlowMoAutomaticBulletImpactSound, SlowMoShotgunBulletImpactSound, SlowMoBulletImpactPreSuck, SlowMoAutomaticBulletImpactPreSuck, SlowMoShotgunBulletImpactPreSuck }; } public override MetaHash[] GetGameHashes() { - return new[] { Footsteps, Unk32, AnimalFootstepSettings, Unk54, Unk78, /*Unk79*/ }; + return new[] { FootstepSettings, SkiSettings, AnimalFootstepSettings, ClimbSettings, MeleeOverideMaterial }; } } @@ -8839,7 +8891,7 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151ForceRadioTrackAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -8944,7 +8996,8 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + + [TC(typeof(EXP))] public class Dat151RadioDjSpeechAction : Dat151RelData { public FlagsUint Unk0 { get; set; } @@ -9017,11 +9070,12 @@ namespace CodeWalker.GameFiles } } + [TC(typeof(EXP))] public class Dat151MicrophoneSettingsReference : Dat151RelData { public uint MicrophonesCount { get; set; } - public Dat151MicrophoneSettingsReferenceItem[] Microphones { get; set; }//types: name?, Microphone + public Dat151MicrophoneSettingsReferenceItem[] Microphones { get; set; } public Dat151MicrophoneSettingsReference(RelFile rel) : base(rel) { @@ -9113,7 +9167,7 @@ namespace CodeWalker.GameFiles } [TC(typeof(EXP))] - public class Dat151DoorList : Dat151RelData //doors/gates + public class Dat151DoorList : Dat151RelData { public uint DoorsCount { get; set; } public Dat151DoorListItem[] Doors { get; set; }// prop name, Door @@ -9590,18 +9644,18 @@ namespace CodeWalker.GameFiles [TC(typeof(EXP))] public class Dat151ShoreLinePoolAudioSettings : Dat151RelData { - public FlagsUint Unk01 { get; set; } - public Vector4 Unk02 { get; set; } - public int Unk03 { get; set; } - public int Unk04 { get; set; } - public int Unk05 { get; set; } - public int Unk06 { get; set; } - public int Unk07 { get; set; } - public int Unk08 { get; set; } - public int Unk09 { get; set; } - public int Unk10 { get; set; } - public int Unk11 { get; set; } - public float Unk12 { get; set; }//really float? or hash? + public FlagsUint Flags { get; set; } + public Vector4 ActivationBox { get; set; } + public float RotationAngle { get; set; } + public int WaterLappingMinDelay { get; set; } + public int WaterLappingMaxDelay { get; set; } + public int WaterSplashMinDelay { get; set; } + public int WaterSplashMaxDelay { get; set; } + public int FirstQuadIndex { get; set; } + public int SecondQuadIndex { get; set; } + public int ThirdQuadIndex { get; set; } + public int FourthQuadIndex { get; set; } + public float SmallestDistanceToPoint { get; set; } public int PointsCount { get; set; } public Vector2[] Points { get; set; } @@ -9613,18 +9667,18 @@ namespace CodeWalker.GameFiles } public Dat151ShoreLinePoolAudioSettings(RelData d, BinaryReader br) : base(d, br) { - Unk01 = br.ReadUInt32(); - Unk02 = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); - Unk03 = br.ReadInt32(); - Unk04 = br.ReadInt32(); - Unk05 = br.ReadInt32(); - Unk06 = br.ReadInt32(); - Unk07 = br.ReadInt32(); - Unk08 = br.ReadInt32(); - Unk09 = br.ReadInt32(); - Unk10 = br.ReadInt32(); - Unk11 = br.ReadInt32(); - Unk12 = br.ReadSingle(); + Flags = br.ReadUInt32(); + ActivationBox = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); + RotationAngle = br.ReadInt32(); + WaterLappingMinDelay = br.ReadInt32(); + WaterLappingMaxDelay = br.ReadInt32(); + WaterSplashMinDelay = br.ReadInt32(); + WaterSplashMaxDelay = br.ReadInt32(); + FirstQuadIndex = br.ReadInt32(); + SecondQuadIndex = br.ReadInt32(); + ThirdQuadIndex = br.ReadInt32(); + FourthQuadIndex = br.ReadInt32(); + SmallestDistanceToPoint = br.ReadSingle(); PointsCount = br.ReadInt32(); var points = new Vector2[PointsCount]; @@ -9638,21 +9692,21 @@ namespace CodeWalker.GameFiles { WriteTypeAndOffset(bw); - bw.Write(Unk01); - bw.Write(Unk02.X); - bw.Write(Unk02.Y); - bw.Write(Unk02.Z); - bw.Write(Unk02.W); - bw.Write(Unk03); - bw.Write(Unk04); - bw.Write(Unk05); - bw.Write(Unk06); - bw.Write(Unk07); - bw.Write(Unk08); - bw.Write(Unk09); - bw.Write(Unk10); - bw.Write(Unk11); - bw.Write(Unk12); + bw.Write(Flags); + bw.Write(ActivationBox.X); + bw.Write(ActivationBox.Y); + bw.Write(ActivationBox.Z); + bw.Write(ActivationBox.W); + bw.Write(RotationAngle); + bw.Write(WaterLappingMinDelay); + bw.Write(WaterLappingMaxDelay); + bw.Write(WaterSplashMinDelay); + bw.Write(WaterSplashMaxDelay); + bw.Write(FirstQuadIndex); + bw.Write(SecondQuadIndex); + bw.Write(ThirdQuadIndex); + bw.Write(FourthQuadIndex); + bw.Write(SmallestDistanceToPoint); bw.Write(PointsCount); for (int i = 0; i < PointsCount; i++) @@ -9663,36 +9717,34 @@ namespace CodeWalker.GameFiles } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.ValueTag(sb, indent, "Unk01", "0x" + Unk01.Hex); - RelXml.SelfClosingTag(sb, indent, "Unk02 " + FloatUtil.GetVector4XmlString(Unk02)); - RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString()); - RelXml.ValueTag(sb, indent, "Unk04", Unk04.ToString()); - RelXml.ValueTag(sb, indent, "Unk05", Unk05.ToString()); - RelXml.ValueTag(sb, indent, "Unk06", Unk06.ToString()); - RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString()); - RelXml.ValueTag(sb, indent, "Unk08", Unk08.ToString()); - RelXml.ValueTag(sb, indent, "Unk09", Unk09.ToString()); - RelXml.ValueTag(sb, indent, "Unk10", Unk10.ToString()); - RelXml.ValueTag(sb, indent, "Unk11", Unk11.ToString()); - RelXml.ValueTag(sb, indent, "Unk12", FloatUtil.ToString(Unk12)); - //RelXml.StringTag(sb, indent, "Unk12", RelXml.HashString(Unk12)); + RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex); + RelXml.SelfClosingTag(sb, indent, "ActivationBox " + FloatUtil.GetVector4XmlString(ActivationBox)); + RelXml.ValueTag(sb, indent, "RotationAngle", FloatUtil.ToString(RotationAngle)); + RelXml.ValueTag(sb, indent, "WaterLappingMinDelay", WaterLappingMinDelay.ToString()); + RelXml.ValueTag(sb, indent, "WaterLappingMaxDelay", WaterLappingMaxDelay.ToString()); + RelXml.ValueTag(sb, indent, "WaterSplashMinDelay", WaterSplashMinDelay.ToString()); + RelXml.ValueTag(sb, indent, "WaterSplashMaxDelay", WaterSplashMaxDelay.ToString()); + RelXml.ValueTag(sb, indent, "FirstQuadIndex", FirstQuadIndex.ToString()); + RelXml.ValueTag(sb, indent, "SecondQuadIndex", SecondQuadIndex.ToString()); + RelXml.ValueTag(sb, indent, "ThirdQuadIndex", ThirdQuadIndex.ToString()); + RelXml.ValueTag(sb, indent, "FourthQuadIndex", FourthQuadIndex.ToString()); + RelXml.ValueTag(sb, indent, "SmallestDistanceToPoint", FloatUtil.ToString(SmallestDistanceToPoint)); RelXml.WriteRawArray(sb, Points, indent, "Points", "", RelXml.FormatVector2, 1); } public override void ReadXml(XmlNode node) { - Unk01 = Xml.GetChildUIntAttribute(node, "Unk01", "value"); - Unk02 = Xml.GetChildVector4Attributes(node, "Unk02"); - Unk03 = Xml.GetChildIntAttribute(node, "Unk03", "value"); - Unk04 = Xml.GetChildIntAttribute(node, "Unk04", "value"); - Unk05 = Xml.GetChildIntAttribute(node, "Unk05", "value"); - Unk06 = Xml.GetChildIntAttribute(node, "Unk06", "value"); - Unk07 = Xml.GetChildIntAttribute(node, "Unk07", "value"); - Unk08 = Xml.GetChildIntAttribute(node, "Unk08", "value"); - Unk09 = Xml.GetChildIntAttribute(node, "Unk09", "value"); - Unk10 = Xml.GetChildIntAttribute(node, "Unk10", "value"); - Unk11 = Xml.GetChildIntAttribute(node, "Unk11", "value"); - Unk12 = Xml.GetChildFloatAttribute(node, "Unk12", "value"); - //Unk12 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk12")); + Flags = Xml.GetChildUIntAttribute(node, "Flags", "value"); + ActivationBox = Xml.GetChildVector4Attributes(node, "ActivationBox"); + RotationAngle = Xml.GetChildFloatAttribute(node, "RotationAngle", "value"); + WaterLappingMinDelay = Xml.GetChildIntAttribute(node, "WaterLappingMinDelay", "value"); + WaterLappingMaxDelay = Xml.GetChildIntAttribute(node, "WaterLappingMaxDelay", "value"); + WaterSplashMinDelay = Xml.GetChildIntAttribute(node, "WaterSplashMinDelay", "value"); + WaterSplashMaxDelay = Xml.GetChildIntAttribute(node, "WaterSplashMaxDelay", "value"); + FirstQuadIndex = Xml.GetChildIntAttribute(node, "FirstQuadIndex", "value"); + SecondQuadIndex = Xml.GetChildIntAttribute(node, "SecondQuadIndex", "value"); + ThirdQuadIndex = Xml.GetChildIntAttribute(node, "ThirdQuadIndex", "value"); + FourthQuadIndex = Xml.GetChildIntAttribute(node, "FourthQuadIndex", "value"); + SmallestDistanceToPoint = Xml.GetChildFloatAttribute(node, "SmallestDistanceToPoint", "value"); Points = Xml.GetChildRawVector2Array(node, "Points"); PointsCount = Points?.Length ?? 0; } @@ -9701,12 +9753,13 @@ namespace CodeWalker.GameFiles [TC(typeof(EXP))] public class Dat151ShoreLineLakeAudioSettings : Dat151RelData { - public FlagsUint Unk01 { get; set; } - public Vector4 Unk02 { get; set; } - public int Unk03 { get; set; } - public int Unk04 { get; set; } - public uint Unk05 { get; set; } - public int PointsCount { get; set; } + public FlagsUint Flags { get; set; } + public Vector4 ActivationBox { get; set; } + public float RotationAngle { get; set; } + public MetaHash NextShoreline { get; set; } + public byte LakeSize { get; set; } + public byte NumShorelinePoints { get; set; } + public short padding00 { get; set; } public Vector2[] Points { get; set; } public Dat151ShoreLineLakeAudioSettings(RelFile rel) : base(rel) @@ -9716,18 +9769,16 @@ namespace CodeWalker.GameFiles } public Dat151ShoreLineLakeAudioSettings(RelData d, BinaryReader br) : base(d, br) { - Unk01 = br.ReadUInt32(); - Unk02 = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); - Unk03 = br.ReadInt32(); - Unk04 = br.ReadInt32(); - Unk05 = br.ReadUInt32(); + Flags = br.ReadUInt32(); + ActivationBox = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); + RotationAngle = br.ReadSingle(); + NextShoreline = br.ReadUInt32(); + LakeSize = br.ReadByte(); + NumShorelinePoints = br.ReadByte(); + padding00 = br.ReadInt16(); - byte b1 = (byte)((Unk05) & 0xFF); - byte b2 = (byte)((Unk05>>8) & 0xFF); - PointsCount = b2; - - var points = new Vector2[PointsCount]; - for (int i = 0; i < PointsCount; i++) + var points = new Vector2[NumShorelinePoints]; + for (int i = 0; i < NumShorelinePoints; i++) { points[i] = new Vector2(br.ReadSingle(), br.ReadSingle()); } @@ -9737,20 +9788,18 @@ namespace CodeWalker.GameFiles { WriteTypeAndOffset(bw); - bw.Write(Unk01); - bw.Write(Unk02.X); - bw.Write(Unk02.Y); - bw.Write(Unk02.Z); - bw.Write(Unk02.W); - bw.Write(Unk03); - bw.Write(Unk04); - bw.Write(Unk05); + bw.Write(Flags); + bw.Write(ActivationBox.X); + bw.Write(ActivationBox.Y); + bw.Write(ActivationBox.Z); + bw.Write(ActivationBox.W); + bw.Write(RotationAngle); + bw.Write(NextShoreline); + bw.Write(LakeSize); + bw.Write(NumShorelinePoints); + bw.Write(padding00); - //byte b1 = (byte)((Unk05) & 0xFF); - //byte b2 = (byte)((Unk05 >> 8) & 0xFF); - //PointsCount = b2; - - for (int i = 0; i < PointsCount; i++) + for (int i = 0; i < NumShorelinePoints; i++) { bw.Write(Points[i].X); bw.Write(Points[i].Y); @@ -9758,22 +9807,22 @@ namespace CodeWalker.GameFiles } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.ValueTag(sb, indent, "Unk01", "0x" + Unk01.Hex); - RelXml.SelfClosingTag(sb, indent, "Unk02 " + FloatUtil.GetVector4XmlString(Unk02)); - RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString()); - RelXml.ValueTag(sb, indent, "Unk04", Unk04.ToString()); - RelXml.ValueTag(sb, indent, "Unk05", Unk05.ToString()); + RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex); + RelXml.SelfClosingTag(sb, indent, "ActivationBox " + FloatUtil.GetVector4XmlString(ActivationBox)); + RelXml.ValueTag(sb, indent, "RotationAngle", FloatUtil.ToString(RotationAngle)); + RelXml.StringTag(sb, indent, "NextShoreline", RelXml.HashString(NextShoreline)); + RelXml.ValueTag(sb, indent, "LakeSize", LakeSize.ToString()); RelXml.WriteRawArray(sb, Points, indent, "Points", "", RelXml.FormatVector2, 1); } public override void ReadXml(XmlNode node) { - Unk01 = Xml.GetChildUIntAttribute(node, "Unk01", "value"); - Unk02 = Xml.GetChildVector4Attributes(node, "Unk02"); - Unk03 = Xml.GetChildIntAttribute(node, "Unk03", "value"); - Unk04 = Xml.GetChildIntAttribute(node, "Unk04", "value"); - Unk05 = Xml.GetChildUIntAttribute(node, "Unk05", "value"); + Flags = Xml.GetChildUIntAttribute(node, "Flags", "value"); + ActivationBox = Xml.GetChildVector4Attributes(node, "ActivationBox"); + RotationAngle = Xml.GetChildFloatAttribute(node, "RotationAngle", "value"); + NextShoreline = XmlRel.GetHash(Xml.GetChildInnerText(node, "NextShoreline")); + LakeSize = (byte)Xml.GetChildUIntAttribute(node, "LakeSize", "value"); Points = Xml.GetChildRawVector2Array(node, "Points"); - PointsCount = Points?.Length ?? 0; + NumShorelinePoints = (byte)(Points?.Length ?? 0); } } @@ -12118,7 +12167,7 @@ namespace CodeWalker.GameFiles public MetaHash ResoLoop { get; set; } public MetaHash ResoLoopVol { get; set; } public MetaHash ResoPitch { get; set; } - public MetaHash WaterTurbulance { get; set; } + public MetaHash WaterTurbulence { get; set; } public MetaHash WaterTurbulanceVol { get; set; } public MetaHash WaterTurbulancePitch { get; set; } public MetaHash ScannerMake { get; set; } @@ -12131,8 +12180,8 @@ namespace CodeWalker.GameFiles public MetaHash HornLoop { get; set; } public MetaHash IgnitionOneShot { get; set; } public MetaHash ShutdownOneShot { get; set; } - public MetaHash EngineVolPostSubmix { get; set; } - public MetaHash ExhaustVolPostSubmix { get; set; } + public short EngineVolPostSubmix { get; set; } + public short ExhaustVolPostSubmix { get; set; } public MetaHash EngineSynthDef { get; set; } public MetaHash EngineSynthPreset { get; set; } public MetaHash ExhaustSynthDef { get; set; } @@ -12160,6 +12209,7 @@ namespace CodeWalker.GameFiles public MetaHash DryLandHardScrape { get; set; } public MetaHash DryLandHardImpact { get; set; } public MetaHash WindClothSound { get; set; } + public MetaHash FireAudio { get; set; } public MetaHash DoorOpen { get; set; } public MetaHash DoorClose { get; set; } public MetaHash DoorLimit { get; set; } @@ -12193,7 +12243,7 @@ namespace CodeWalker.GameFiles ResoLoop = br.ReadUInt32(); ResoLoopVol = br.ReadUInt32(); ResoPitch = br.ReadUInt32(); - WaterTurbulance = br.ReadUInt32(); + WaterTurbulence = br.ReadUInt32(); WaterTurbulanceVol = br.ReadUInt32(); WaterTurbulancePitch = br.ReadUInt32(); ScannerMake = br.ReadUInt32(); @@ -12206,8 +12256,8 @@ namespace CodeWalker.GameFiles HornLoop = br.ReadUInt32(); IgnitionOneShot = br.ReadUInt32(); ShutdownOneShot = br.ReadUInt32(); - EngineVolPostSubmix = br.ReadUInt32(); - ExhaustVolPostSubmix = br.ReadUInt32(); + EngineVolPostSubmix = br.ReadInt16(); + ExhaustVolPostSubmix = br.ReadInt16(); EngineSynthDef = br.ReadUInt32(); EngineSynthPreset = br.ReadUInt32(); ExhaustSynthDef = br.ReadUInt32(); @@ -12235,6 +12285,7 @@ namespace CodeWalker.GameFiles DryLandHardScrape = br.ReadUInt32(); DryLandHardImpact = br.ReadUInt32(); WindClothSound = br.ReadUInt32(); + FireAudio = br.ReadUInt32(); DoorOpen = br.ReadUInt32(); DoorClose = br.ReadUInt32(); DoorLimit = br.ReadUInt32(); @@ -12264,7 +12315,7 @@ namespace CodeWalker.GameFiles bw.Write(ResoLoop); bw.Write(ResoLoopVol); bw.Write(ResoPitch); - bw.Write(WaterTurbulance); + bw.Write(WaterTurbulence); bw.Write(WaterTurbulanceVol); bw.Write(WaterTurbulancePitch); bw.Write(ScannerMake); @@ -12306,6 +12357,7 @@ namespace CodeWalker.GameFiles bw.Write(DryLandHardScrape); bw.Write(DryLandHardImpact); bw.Write(WindClothSound); + bw.Write(FireAudio); bw.Write(DoorOpen); bw.Write(DoorClose); bw.Write(DoorLimit); @@ -12334,7 +12386,7 @@ namespace CodeWalker.GameFiles RelXml.StringTag(sb, indent, "ResoLoop", RelXml.HashString(ResoLoop)); RelXml.StringTag(sb, indent, "ResoLoopVol", RelXml.HashString(ResoLoopVol)); RelXml.StringTag(sb, indent, "ResoPitch", RelXml.HashString(ResoPitch)); - RelXml.StringTag(sb, indent, "WaterTurbulance", RelXml.HashString(WaterTurbulance)); + RelXml.StringTag(sb, indent, "WaterTurbulence", RelXml.HashString(WaterTurbulence)); RelXml.StringTag(sb, indent, "WaterTurbulanceVol", RelXml.HashString(WaterTurbulanceVol)); RelXml.StringTag(sb, indent, "WaterTurbulancePitch", RelXml.HashString(WaterTurbulancePitch)); RelXml.StringTag(sb, indent, "ScannerMake", RelXml.HashString(ScannerMake)); @@ -12346,12 +12398,12 @@ namespace CodeWalker.GameFiles RelXml.StringTag(sb, indent, "HornLoop", RelXml.HashString(HornLoop)); RelXml.StringTag(sb, indent, "IgnitionOneShot", RelXml.HashString(IgnitionOneShot)); RelXml.StringTag(sb, indent, "ShutdownOneShot", RelXml.HashString(ShutdownOneShot)); - RelXml.StringTag(sb, indent, "EngineVolPostSubmix", RelXml.HashString(EngineVolPostSubmix)); - RelXml.StringTag(sb, indent, "ExhaustVolPostSubmix", RelXml.HashString(ExhaustVolPostSubmix)); + RelXml.StringTag(sb, indent, "EngineVolPostSubmix", EngineVolPostSubmix.ToString()); + RelXml.StringTag(sb, indent, "ExhaustVolPostSubmix", ExhaustVolPostSubmix.ToString()); RelXml.StringTag(sb, indent, "EngineSynthDef", RelXml.HashString(EngineSynthDef)); RelXml.StringTag(sb, indent, "EngineSynthPreset", RelXml.HashString(EngineSynthPreset)); RelXml.StringTag(sb, indent, "ExhaustSynthDef", RelXml.HashString(ExhaustSynthDef)); - RelXml.StringTag(sb, indent, "ExhaustSynthPreset", RelXml.HashString(ExhaustSynthPreset)); + RelXml.StringTag(sb, indent, "ExhaustSubmixPreset", RelXml.HashString(ExhaustSynthPreset)); RelXml.StringTag(sb, indent, "VehicleCollisions", RelXml.HashString(VehicleCollisions)); RelXml.StringTag(sb, indent, "EngineSubmixVoice", RelXml.HashString(EngineSubmixVoice)); RelXml.StringTag(sb, indent, "ExhaustSubmixVoice", RelXml.HashString(ExhaustSubmixVoice)); @@ -12375,6 +12427,7 @@ namespace CodeWalker.GameFiles RelXml.StringTag(sb, indent, "DryLandHardScrape", RelXml.HashString(DryLandHardScrape)); RelXml.StringTag(sb, indent, "DryLandHardImpact", RelXml.HashString(DryLandHardImpact)); RelXml.StringTag(sb, indent, "WindClothSound", RelXml.HashString(WindClothSound)); + RelXml.StringTag(sb, indent, "FireAudio", RelXml.HashString(FireAudio)); RelXml.StringTag(sb, indent, "DoorOpen", RelXml.HashString(DoorOpen)); RelXml.StringTag(sb, indent, "DoorClose", RelXml.HashString(DoorClose)); RelXml.StringTag(sb, indent, "DoorLimit", RelXml.HashString(DoorLimit)); @@ -12403,7 +12456,7 @@ namespace CodeWalker.GameFiles ResoLoop = XmlRel.GetHash(Xml.GetChildInnerText(node, "ResoLoop")); ResoLoopVol = XmlRel.GetHash(Xml.GetChildInnerText(node, "ResoLoopVol")); ResoPitch = XmlRel.GetHash(Xml.GetChildInnerText(node, "ResoPitch")); - WaterTurbulance = XmlRel.GetHash(Xml.GetChildInnerText(node, "WaterTurbulance")); + WaterTurbulence = XmlRel.GetHash(Xml.GetChildInnerText(node, "WaterTurbulence")); WaterTurbulanceVol = XmlRel.GetHash(Xml.GetChildInnerText(node, "WaterTurbulanceVol")); WaterTurbulancePitch = XmlRel.GetHash(Xml.GetChildInnerText(node, "WaterTurbulancePitch")); ScannerMake = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScannerMake")); @@ -12415,8 +12468,8 @@ namespace CodeWalker.GameFiles HornLoop = XmlRel.GetHash(Xml.GetChildInnerText(node, "HornLoop")); IgnitionOneShot = XmlRel.GetHash(Xml.GetChildInnerText(node, "IgnitionOneShot")); ShutdownOneShot = XmlRel.GetHash(Xml.GetChildInnerText(node, "ShutdownOneShot")); - EngineVolPostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineVolPostSubmix")); - ExhaustVolPostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustVolPostSubmix")); + EngineVolPostSubmix = (short)Xml.GetChildUIntAttribute(node, "EngineVolPostSubmix", "value"); + ExhaustVolPostSubmix = (short)Xml.GetChildUIntAttribute(node, "ExhaustVolPostSubmix", "value"); EngineSynthDef = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineSynthDef")); EngineSynthPreset = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineSynthPreset")); ExhaustSynthDef = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustSynthDef")); @@ -12444,6 +12497,7 @@ namespace CodeWalker.GameFiles DryLandHardScrape = XmlRel.GetHash(Xml.GetChildInnerText(node, "DryLandHardScrape")); DryLandHardImpact = XmlRel.GetHash(Xml.GetChildInnerText(node, "DryLandHardImpact")); WindClothSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "WindClothSound")); + FireAudio = XmlRel.GetHash(Xml.GetChildInnerText(node, "FireAudio")); DoorOpen = XmlRel.GetHash(Xml.GetChildInnerText(node, "DoorOpen")); DoorClose = XmlRel.GetHash(Xml.GetChildInnerText(node, "DoorClose")); DoorLimit = XmlRel.GetHash(Xml.GetChildInnerText(node, "DoorLimit")); @@ -12460,24 +12514,25 @@ namespace CodeWalker.GameFiles public override MetaHash[] GetCurveHashes() { return new[] { Engine1Vol, Engine1Pitch, Engine2Vol, Engine2Pitch, LowResoLoopVol, LowResoPitch, ResoLoopVol, ResoPitch, - WaterTurbulanceVol, IdleHullSlapLoop, EngineStartUp, SubTurningSweetenerSound, RevsToSweetenerVolume, TurningToSweetenerVolume }; + WaterTurbulanceVol, IdleHullSlapSpeedToVol, SubTurningEnginePitchModifier, RevsToSweetenerVolume, TurningToSweetenerVolume, TurningToSweetenerPitch }; } public override MetaHash[] GetSynthHashes() { - return new[] { ExhaustVolPostSubmix, EngineSynthDef, EngineSynthPreset, ExhaustSynthDef }; + return new[] { EngineSynthDef, EngineSynthPreset, ExhaustSynthDef, ExhaustSynthPreset }; } public override MetaHash[] GetSoundHashes() { - return new[] { Engine1Loop, Engine2Loop, LowResoLoop, ResoLoop, WaterTurbulance, ScannerMake, ScannerModel, ScannerCategory, HornLoop, IgnitionOneShot, ShutdownOneShot, VehicleCollisions, EngineSubmixVoice, - ExhaustSubmixVoice, LeftWaterSound, GranularEngine, BankSpraySound, IgnitionLoop, SubTurningEnginePitchModifier, TurningToSweetenerPitch, DryLandHardScrape, DryLandHardImpact, WindClothSound, DoorOpen, DoorClose, + return new[] { Engine1Loop, Engine2Loop, LowResoLoop, ResoLoop, WaterTurbulence, ScannerMake, ScannerModel, ScannerCategory, HornLoop, IgnitionOneShot, ShutdownOneShot, EngineSubmixVoice, ExhaustSubmixVoice, + WaveHitSound, IdleHullSlapLoop, BankSpraySound, IgnitionLoop, EngineStartUp, SubTurningSweetenerSound, DryLandScrape, DryLandHardScrape, DryLandHardImpact, WindClothSound, FireAudio, DoorOpen, DoorClose, DoorLimit, DoorStartClose, SubExtrasSound, SFXBankSound, SubmersibleCreaksSound, WaveHitBigAirSound, VehicleRainSound, VehicleRainSoundInterior }; } public override MetaHash[] GetGameHashes() { - return new[] { ScannerVehicleSettings, ExhaustSynthPreset, IdleHullSlapSpeedToVol }; + return new[] { ScannerVehicleSettings, VehicleCollisions, GranularEngine }; } } + [TC(typeof(EXP))] public class Dat151BicycleAudioSettings : Dat151RelData { @@ -13306,6 +13361,7 @@ namespace CodeWalker.GameFiles BladeConeAtten = br.ReadInt16(); ThumpConeUpAngle = br.ReadUInt16(); ThumpConeDownAngle = br.ReadUInt16(); + ThumpConeAtten = br.ReadInt16(); ScannerMake = br.ReadUInt32(); ScannerModel = br.ReadUInt32(); ScannerCategory = br.ReadUInt32(); @@ -13413,6 +13469,7 @@ namespace CodeWalker.GameFiles bw.Write(BladeConeAtten); bw.Write(ThumpConeUpAngle); bw.Write(ThumpConeDownAngle); + bw.Write(ThumpConeAtten); bw.Write(ScannerMake); bw.Write(ScannerModel); bw.Write(ScannerCategory); @@ -13513,6 +13570,7 @@ namespace CodeWalker.GameFiles RelXml.ValueTag(sb, indent, "BladeConeAtten", BladeConeAtten.ToString()); RelXml.ValueTag(sb, indent, "ThumpConeUpAngle", ThumpConeUpAngle.ToString()); RelXml.ValueTag(sb, indent, "ThumpConeDownAngle", ThumpConeDownAngle.ToString()); + RelXml.ValueTag(sb, indent, "ThumpConeAtten", ThumpConeAtten.ToString()); RelXml.StringTag(sb, indent, "ScannerMake", RelXml.HashString(ScannerMake)); RelXml.StringTag(sb, indent, "ScannerModel", RelXml.HashString(ScannerModel)); RelXml.StringTag(sb, indent, "ScannerCategory", RelXml.HashString(ScannerCategory)); @@ -13613,6 +13671,7 @@ namespace CodeWalker.GameFiles BladeConeAtten = (short)Xml.GetChildIntAttribute(node, "BladeConeAtten", "value"); ThumpConeUpAngle = (ushort)Xml.GetChildIntAttribute(node, "ThumpConeUpAngle", "value"); ThumpConeDownAngle = (ushort)Xml.GetChildIntAttribute(node, "ThumpConeDownAngle", "value"); + ThumpConeAtten = (short)Xml.GetChildIntAttribute(node, "ThumpConeAtten", "value"); ScannerMake = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScannerMake")); ScannerModel = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScannerModel")); ScannerCategory = XmlRel.GetHash(Xml.GetChildInnerText(node, "ScannerCategory")); @@ -14526,7 +14585,7 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151SpeechContext : Dat151RelData { public FlagsUint Flags { get; set; } @@ -14655,7 +14714,7 @@ namespace CodeWalker.GameFiles } } - [TC(typeof(EXP))] + [TC(typeof(EXP))] public class Dat151SpeechContextVirtual : Dat151RelData { public FlagsUint Flags { get; set; } @@ -14752,6 +14811,7 @@ namespace CodeWalker.GameFiles } } + [TC(typeof(EXP))] public class Dat151SpeechContextList : Dat151RelData { @@ -16769,6 +16829,7 @@ namespace CodeWalker.GameFiles public MetaHash Silver { get; set; } public MetaHash White { get; set; } public MetaHash Yellow { get; set; } + // NoPrefix public MetaHash MetallicBlack { get; set; } public MetaHash MetallicBlue { get; set; } public MetaHash MetallicBrown { get; set; } @@ -16782,6 +16843,7 @@ namespace CodeWalker.GameFiles public MetaHash MetallicSilver { get; set; } public MetaHash MetallicWhite { get; set; } public MetaHash MetallicYellow { get; set; } + // Bright public MetaHash LightBlack { get; set; } public MetaHash LightBlue { get; set; } public MetaHash LightBrown { get; set; } @@ -16795,6 +16857,7 @@ namespace CodeWalker.GameFiles public MetaHash LightSilver { get; set; } public MetaHash LightWhite { get; set; } public MetaHash LightYellow { get; set; } + // Light public MetaHash DarkBlack { get; set; } public MetaHash DarkBlue { get; set; } public MetaHash DarkBrown { get; set; } @@ -16808,20 +16871,22 @@ namespace CodeWalker.GameFiles public MetaHash DarkSilver { get; set; } public MetaHash DarkWhite { get; set; } public MetaHash DarkYellow { get; set; } - public MetaHash Unk53 { get; set; } + // Dark + public MetaHash Battered { get; set; } public MetaHash BeatUp { get; set; } - public MetaHash Unk55 { get; set; } + public MetaHash Chopped { get; set; } public MetaHash Custom { get; set; } - public MetaHash Unk57 { get; set; } - public MetaHash Unk58 { get; set; } - public MetaHash Unk59 { get; set; } + public MetaHash Customized { get; set; } + public MetaHash Damaged { get; set; } + public MetaHash Dented { get; set; } public MetaHash Dirty { get; set; } - public MetaHash Unk61 { get; set; } + public MetaHash Distressed { get; set; } public MetaHash Mint { get; set; } - public MetaHash Unk63 { get; set; } - public MetaHash Unk64 { get; set; } - public MetaHash Unk65 { get; set; } + public MetaHash Modified { get; set; } + public MetaHash RunDown1 { get; set; } + public MetaHash RunDown2 { get; set; } public MetaHash Rusty { get; set; } + // ExtraPrefix public Dat151ScannerVoiceParams(RelFile rel) : base(rel) { @@ -16846,55 +16911,55 @@ namespace CodeWalker.GameFiles MetallicBlack = br.ReadUInt32(); MetallicBlue = br.ReadUInt32(); MetallicBrown = br.ReadUInt32(); - MetallicBeige = br.ReadUInt32();//0 - MetallicGraphite = br.ReadUInt32();//0 + MetallicBeige = br.ReadUInt32(); + MetallicGraphite = br.ReadUInt32(); MetallicGreen = br.ReadUInt32(); MetallicGrey = br.ReadUInt32(); - MetallicOrange = br.ReadUInt32();//0 - MetallicPink = br.ReadUInt32();//0 + MetallicOrange = br.ReadUInt32(); + MetallicPink = br.ReadUInt32(); MetallicRed = br.ReadUInt32(); MetallicSilver = br.ReadUInt32(); - MetallicWhite = br.ReadUInt32();//0 + MetallicWhite = br.ReadUInt32(); MetallicYellow = br.ReadUInt32(); - LightBlack = br.ReadUInt32();//0 + LightBlack = br.ReadUInt32(); LightBlue = br.ReadUInt32(); LightBrown = br.ReadUInt32(); - LightBeige = br.ReadUInt32();//0 - LightGraphite = br.ReadUInt32();//0 + LightBeige = br.ReadUInt32(); + LightGraphite = br.ReadUInt32(); LightGreen = br.ReadUInt32(); LightGrey = br.ReadUInt32(); LightOrange = br.ReadUInt32(); - LightPink = br.ReadUInt32();//0 + LightPink = br.ReadUInt32(); LightRed = br.ReadUInt32(); LightSilver = br.ReadUInt32(); - LightWhite = br.ReadUInt32();//0 + LightWhite = br.ReadUInt32(); LightYellow = br.ReadUInt32(); - DarkBlack = br.ReadUInt32();//0 + DarkBlack = br.ReadUInt32(); DarkBlue = br.ReadUInt32(); DarkBrown = br.ReadUInt32(); - DarkBeige = br.ReadUInt32();//0 - DarkGraphite = br.ReadUInt32();//0 + DarkBeige = br.ReadUInt32(); + DarkGraphite = br.ReadUInt32(); DarkGreen = br.ReadUInt32(); DarkGrey = br.ReadUInt32(); DarkOrange = br.ReadUInt32(); - DarkPink = br.ReadUInt32();//0 + DarkPink = br.ReadUInt32(); DarkRed = br.ReadUInt32(); DarkSilver = br.ReadUInt32(); - DarkWhite = br.ReadUInt32();//0 + DarkWhite = br.ReadUInt32(); DarkYellow = br.ReadUInt32(); - Unk53 = br.ReadUInt32();//0 + Battered = br.ReadUInt32(); BeatUp = br.ReadUInt32(); - Unk55 = br.ReadUInt32();//0 + Chopped = br.ReadUInt32(); Custom = br.ReadUInt32(); - Unk57 = br.ReadUInt32();//0 - Unk58 = br.ReadUInt32();//0 - Unk59 = br.ReadUInt32();//0 + Customized = br.ReadUInt32(); + Damaged = br.ReadUInt32(); + Dented = br.ReadUInt32(); Dirty = br.ReadUInt32(); - Unk61 = br.ReadUInt32();//0 + Distressed = br.ReadUInt32(); Mint = br.ReadUInt32(); - Unk63 = br.ReadUInt32();//0 - Unk64 = br.ReadUInt32();//0 - Unk65 = br.ReadUInt32();//0 + Modified = br.ReadUInt32(); + RunDown1 = br.ReadUInt32(); + RunDown2 = br.ReadUInt32(); Rusty = br.ReadUInt32(); } public override void Write(BinaryWriter bw) @@ -16953,19 +17018,19 @@ namespace CodeWalker.GameFiles bw.Write(DarkSilver); bw.Write(DarkWhite); bw.Write(DarkYellow); - bw.Write(Unk53); + bw.Write(Battered); bw.Write(BeatUp); - bw.Write(Unk55); + bw.Write(Chopped); bw.Write(Custom); - bw.Write(Unk57); - bw.Write(Unk58); - bw.Write(Unk59); + bw.Write(Customized); + bw.Write(Damaged); + bw.Write(Dented); bw.Write(Dirty); - bw.Write(Unk61); + bw.Write(Distressed); bw.Write(Mint); - bw.Write(Unk63); - bw.Write(Unk64); - bw.Write(Unk65); + bw.Write(Modified); + bw.Write(RunDown1); + bw.Write(RunDown2); bw.Write(Rusty); } public override void WriteXml(StringBuilder sb, int indent) @@ -17022,19 +17087,19 @@ namespace CodeWalker.GameFiles RelXml.StringTag(sb, indent, "DarkSilver", RelXml.HashString(DarkSilver)); RelXml.StringTag(sb, indent, "DarkWhite", RelXml.HashString(DarkWhite)); RelXml.StringTag(sb, indent, "DarkYellow", RelXml.HashString(DarkYellow)); - RelXml.StringTag(sb, indent, "Unk53", RelXml.HashString(Unk53)); + RelXml.StringTag(sb, indent, "Battered", RelXml.HashString(Battered)); RelXml.StringTag(sb, indent, "BeatUp", RelXml.HashString(BeatUp)); - RelXml.StringTag(sb, indent, "Unk55", RelXml.HashString(Unk55)); + RelXml.StringTag(sb, indent, "Chopped", RelXml.HashString(Chopped)); RelXml.StringTag(sb, indent, "Custom", RelXml.HashString(Custom)); - RelXml.StringTag(sb, indent, "Unk57", RelXml.HashString(Unk57)); - RelXml.StringTag(sb, indent, "Unk58", RelXml.HashString(Unk58)); - RelXml.StringTag(sb, indent, "Unk59", RelXml.HashString(Unk59)); + RelXml.StringTag(sb, indent, "Customized", RelXml.HashString(Customized)); + RelXml.StringTag(sb, indent, "Damaged", RelXml.HashString(Damaged)); + RelXml.StringTag(sb, indent, "Dented", RelXml.HashString(Dented)); RelXml.StringTag(sb, indent, "Dirty", RelXml.HashString(Dirty)); - RelXml.StringTag(sb, indent, "Unk61", RelXml.HashString(Unk61)); + RelXml.StringTag(sb, indent, "Distressed", RelXml.HashString(Distressed)); RelXml.StringTag(sb, indent, "Mint", RelXml.HashString(Mint)); - RelXml.StringTag(sb, indent, "Unk63", RelXml.HashString(Unk63)); - RelXml.StringTag(sb, indent, "Unk64", RelXml.HashString(Unk64)); - RelXml.StringTag(sb, indent, "Unk65", RelXml.HashString(Unk65)); + RelXml.StringTag(sb, indent, "Modified", RelXml.HashString(Modified)); + RelXml.StringTag(sb, indent, "RunDown1", RelXml.HashString(RunDown1)); + RelXml.StringTag(sb, indent, "RunDown2", RelXml.HashString(RunDown2)); RelXml.StringTag(sb, indent, "Rusty", RelXml.HashString(Rusty)); } public override void ReadXml(XmlNode node) @@ -17091,19 +17156,19 @@ namespace CodeWalker.GameFiles DarkSilver = XmlRel.GetHash(Xml.GetChildInnerText(node, "DarkSilver")); DarkWhite = XmlRel.GetHash(Xml.GetChildInnerText(node, "DarkWhite")); DarkYellow = XmlRel.GetHash(Xml.GetChildInnerText(node, "DarkYellow")); - Unk53 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk53")); + Battered = XmlRel.GetHash(Xml.GetChildInnerText(node, "Battered")); BeatUp = XmlRel.GetHash(Xml.GetChildInnerText(node, "BeatUp")); - Unk55 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk55")); + Chopped = XmlRel.GetHash(Xml.GetChildInnerText(node, "Chopped")); Custom = XmlRel.GetHash(Xml.GetChildInnerText(node, "Custom")); - Unk57 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk57")); - Unk58 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk58")); - Unk59 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk59")); + Customized = XmlRel.GetHash(Xml.GetChildInnerText(node, "Customized")); + Damaged = XmlRel.GetHash(Xml.GetChildInnerText(node, "Damaged")); + Dented = XmlRel.GetHash(Xml.GetChildInnerText(node, "Dented")); Dirty = XmlRel.GetHash(Xml.GetChildInnerText(node, "Dirty")); - Unk61 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk61")); + Distressed = XmlRel.GetHash(Xml.GetChildInnerText(node, "Distressed")); Mint = XmlRel.GetHash(Xml.GetChildInnerText(node, "Mint")); - Unk63 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk63")); - Unk64 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk64")); - Unk65 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk65")); + Modified = XmlRel.GetHash(Xml.GetChildInnerText(node, "Modified")); + RunDown1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "RunDown1")); + RunDown2 = XmlRel.GetHash(Xml.GetChildInnerText(node, "RunDown2")); Rusty = XmlRel.GetHash(Xml.GetChildInnerText(node, "Rusty")); } public override MetaHash[] GetSoundHashes() @@ -17112,7 +17177,7 @@ namespace CodeWalker.GameFiles MetallicBlack,MetallicBlue,MetallicBrown,MetallicBeige,MetallicGraphite,MetallicGreen,MetallicGrey,MetallicOrange,MetallicPink,MetallicRed,MetallicSilver,MetallicWhite,MetallicYellow, LightBlack,LightBlue,LightBrown,LightBeige,LightGraphite,LightGreen,LightGrey,LightOrange,LightPink,LightRed,LightSilver,LightWhite,LightYellow, DarkBlack,DarkBlue,DarkBrown,DarkBeige,DarkGraphite,DarkGreen,DarkGrey,DarkOrange,DarkPink,DarkRed,DarkSilver,DarkWhite,DarkYellow, - Unk53,BeatUp,Unk55,Custom,Unk57,Unk58,Unk59,Dirty,Unk61,Mint,Unk63,Unk64,Unk65,Rusty }; + Battered,BeatUp,Chopped,Custom,Customized,Damaged,Dented,Dirty,Distressed,Mint,Modified,RunDown1,RunDown2,Rusty }; } } @@ -19013,57 +19078,52 @@ namespace CodeWalker.GameFiles [TC(typeof(EXP))] public class Dat151PedWallaSpeechSettingsListItem : IMetaXmlItem { - public MetaHash Unk01 { get; set; } - public float Unk02 { get; set; } - public float Unk03 { get; set; } - public byte Unk04 { get; set; } - public byte Unk05 { get; set; } - public short Unk06 { get; set; } + public MetaHash PedWallaSettings { get; set; } + public float Weight { get; set; } + public float PedDensityThreshold { get; set; } + public byte IsMale { get; set; } + public byte IsGang { get; set; } + public short padding00 { get; set; } public Dat151PedWallaSpeechSettingsListItem() { } public Dat151PedWallaSpeechSettingsListItem(BinaryReader br) { - Unk01 = br.ReadUInt32(); - Unk02 = br.ReadSingle(); - Unk03 = br.ReadSingle(); - Unk04 = br.ReadByte(); - Unk05 = br.ReadByte(); - Unk06 = br.ReadInt16(); - - if (Unk06 != 0) - { } + PedWallaSettings = br.ReadUInt32(); + Weight = br.ReadSingle(); + PedDensityThreshold = br.ReadSingle(); + IsMale = br.ReadByte(); + IsGang = br.ReadByte(); + padding00 = br.ReadInt16(); } public void Write(BinaryWriter bw) { - bw.Write(Unk01); - bw.Write(Unk02); - bw.Write(Unk03); - bw.Write(Unk04); - bw.Write(Unk05); - bw.Write(Unk06); + bw.Write(PedWallaSettings); + bw.Write(Weight); + bw.Write(PedDensityThreshold); + bw.Write(IsMale); + bw.Write(IsGang); + bw.Write(padding00); } public void WriteXml(StringBuilder sb, int indent) { - RelXml.StringTag(sb, indent, "Unk01", RelXml.HashString(Unk01)); - RelXml.ValueTag(sb, indent, "Unk02", FloatUtil.ToString(Unk02)); - RelXml.ValueTag(sb, indent, "Unk03", FloatUtil.ToString(Unk03)); - RelXml.ValueTag(sb, indent, "Unk04", Unk04.ToString()); - RelXml.ValueTag(sb, indent, "Unk05", Unk05.ToString()); - RelXml.ValueTag(sb, indent, "Unk06", Unk06.ToString()); + RelXml.StringTag(sb, indent, "PedWallaSettings", RelXml.HashString(PedWallaSettings)); + RelXml.ValueTag(sb, indent, "Weight", FloatUtil.ToString(Weight)); + RelXml.ValueTag(sb, indent, "PedDensityThreshold", FloatUtil.ToString(PedDensityThreshold)); + RelXml.ValueTag(sb, indent, "IsMale", IsMale.ToString()); + RelXml.ValueTag(sb, indent, "IsGang", IsGang.ToString()); } public void ReadXml(XmlNode node) { - Unk01 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk01")); - Unk02 = Xml.GetChildFloatAttribute(node, "Unk02", "value"); - Unk03 = Xml.GetChildFloatAttribute(node, "Unk03", "value"); - Unk04 = (byte)Xml.GetChildUIntAttribute(node, "Unk04", "value"); - Unk05 = (byte)Xml.GetChildUIntAttribute(node, "Unk05", "value"); - Unk06 = (short)Xml.GetChildIntAttribute(node, "Unk06", "value"); + PedWallaSettings = XmlRel.GetHash(Xml.GetChildInnerText(node, "PedWallaSettings")); + Weight = Xml.GetChildFloatAttribute(node, "Weight", "value"); + PedDensityThreshold = Xml.GetChildFloatAttribute(node, "PedDensityThreshold", "value"); + IsMale = (byte)Xml.GetChildUIntAttribute(node, "IsMale", "value"); + IsGang = (byte)Xml.GetChildUIntAttribute(node, "IsGang", "value"); } public override string ToString() { - return Unk01.ToString() + ": " + Unk02.ToString() + ", " + Unk03.ToString() + ", " + Unk04.ToString() + ", " + Unk05.ToString(); + return PedWallaSettings.ToString() + ": " + Weight.ToString() + ", " + PedDensityThreshold.ToString() + ", " + IsMale.ToString() + ", " + IsGang.ToString(); } } @@ -19113,7 +19173,7 @@ namespace CodeWalker.GameFiles { foreach (var item in Items) { - list.Add(item.Unk01); + list.Add(item.PedWallaSettings); } } return list.ToArray(); @@ -19130,41 +19190,41 @@ namespace CodeWalker.GameFiles public int SecondLinePredelay { get; set; } public int SecondLinePredelayVariance { get; set; } public int ScannerPredelay { get; set; } - public int Unk08 { get; set; } - public int Unk09 { get; set; } - public int Unk10 { get; set; } - public int Unk11 { get; set; } - public int Unk12 { get; set; } - public int Unk13 { get; set; } - public int Unk14 { get; set; } - public int Unk15 { get; set; } - public int Unk16 { get; set; } - public int Unk17 { get; set; } - public int Unk18 { get; set; } - public int Unk19 { get; set; } - public int Unk20 { get; set; } - public int Unk21 { get; set; } - public int Unk22 { get; set; } - public int Unk23 { get; set; } - public int Unk24 { get; set; } - public int Unk25 { get; set; } - public int Unk26 { get; set; } - public int Unk27 { get; set; } - public int Unk28 { get; set; } - public int Unk29 { get; set; } - public int Unk30 { get; set; } - public int Unk31 { get; set; } - public float Unk32 { get; set; } - public int Unk33 { get; set; } - public int Unk34 { get; set; } - public int Unk35 { get; set; } - public float Unk36 { get; set; } - public int Unk37 { get; set; } - public int Unk38 { get; set; } - public int Unk39 { get; set; } - public int Unk40 { get; set; } - public int Unk41 { get; set; } - public int Unk42 { get; set; } + public int ScannerPredelayVariance { get; set; } + public int MinTimeBetweenSpottedAndVehicleLinePlays { get; set; } + public int MinTimeBetweenSpottedAndVehicleLinePlaysVariance { get; set; } + public int MaxTimeAfterVehicleChangeSpottedLineCanPlay { get; set; } + public int TimePassedSinceLastLineToForceVoiceChange { get; set; } + public int NumCopsKilledToForceVoiceChange { get; set; } + public int SuspectCrashedVehicleTimeBetween { get; set; } + public int SuspectCrashedVehicleTimeBetweenVariance { get; set; } + public int SuspectEnteredFreewayTimeBetween { get; set; } + public int SuspectEnteredFreewayTimeBetweenVariance { get; set; } + public int SuspectEnteredMetroTimeBetween { get; set; } + public int SuspectEnteredMetroTimeBetweenVariance { get; set; } + public int SuspectIsInCarTimeBetween { get; set; } + public int SuspectIsInCarTimeBetweenVariance { get; set; } + public int SuspectIsOnFootTimeBetween { get; set; } + public int SuspectIsOnFootTimeBetweenVariance { get; set; } + public int SuspectIsOnMotorcycleTimeBetween { get; set; } + public int SuspectIsOnMotorcycleTimeBetweenVariance { get; set; } + public int SuspectLeftFreewayTimeBetween { get; set; } + public int SuspectLeftFreewayTimeBetweenVariance { get; set; } + public int RequestBackupTimeBetween { get; set; } + public int RequestBackupTimeBetweenVariance { get; set; } + public int AcknowledgeSituationTimeBetween { get; set; } + public int AcknowledgeSituationTimeBetweenVariance { get; set; } + public float RespondingDispatchProbability { get; set; } + public int GuidanceDispatchTimeBetween { get; set; } + public int GuidanceDispatchTimeBetweenVariance { get; set; } + public int GuidanceDispatchTimeNotSpottedToTrigger { get; set; } + public float GuidanceDispatchProbabilityOfMegaphoneLine { get; set; } + public int HeliMaydayDispatchTimeBetween { get; set; } + public int HeliMaydayDispatchTimeBetweenVariance { get; set; } + public int ShotAtHeliTimeBetween { get; set; } + public int ShotAtHeliTimeBetweenVariance { get; set; } + public int HeliApproachingDispatchTimeBetween { get; set; } + public int HeliApproachingDispatchTimeBetweenVariance { get; set; } public Dat151CopDispatchInteractionSettings(RelFile rel) : base(rel) { @@ -19180,41 +19240,41 @@ namespace CodeWalker.GameFiles SecondLinePredelay = br.ReadInt32(); SecondLinePredelayVariance = br.ReadInt32(); ScannerPredelay = br.ReadInt32(); - Unk08 = br.ReadInt32(); - Unk09 = br.ReadInt32(); - Unk10 = br.ReadInt32(); - Unk11 = br.ReadInt32(); - Unk12 = br.ReadInt32(); - Unk13 = br.ReadInt32(); - Unk14 = br.ReadInt32(); - Unk15 = br.ReadInt32(); - Unk16 = br.ReadInt32(); - Unk17 = br.ReadInt32(); - Unk18 = br.ReadInt32(); - Unk19 = br.ReadInt32(); - Unk20 = br.ReadInt32(); - Unk21 = br.ReadInt32(); - Unk22 = br.ReadInt32(); - Unk23 = br.ReadInt32(); - Unk24 = br.ReadInt32(); - Unk25 = br.ReadInt32(); - Unk26 = br.ReadInt32(); - Unk27 = br.ReadInt32(); - Unk28 = br.ReadInt32(); - Unk29 = br.ReadInt32(); - Unk30 = br.ReadInt32(); - Unk31 = br.ReadInt32(); - Unk32 = br.ReadSingle(); - Unk33 = br.ReadInt32(); - Unk34 = br.ReadInt32(); - Unk35 = br.ReadInt32(); - Unk36 = br.ReadSingle(); - Unk37 = br.ReadInt32(); - Unk38 = br.ReadInt32(); - Unk39 = br.ReadInt32(); - Unk40 = br.ReadInt32(); - Unk41 = br.ReadInt32(); - Unk42 = br.ReadInt32(); + ScannerPredelayVariance = br.ReadInt32(); + MinTimeBetweenSpottedAndVehicleLinePlays = br.ReadInt32(); + MinTimeBetweenSpottedAndVehicleLinePlaysVariance = br.ReadInt32(); + MaxTimeAfterVehicleChangeSpottedLineCanPlay = br.ReadInt32(); + TimePassedSinceLastLineToForceVoiceChange = br.ReadInt32(); + NumCopsKilledToForceVoiceChange = br.ReadInt32(); + SuspectCrashedVehicleTimeBetween = br.ReadInt32(); + SuspectCrashedVehicleTimeBetweenVariance = br.ReadInt32(); + SuspectEnteredFreewayTimeBetween = br.ReadInt32(); + SuspectEnteredFreewayTimeBetweenVariance = br.ReadInt32(); + SuspectEnteredMetroTimeBetween = br.ReadInt32(); + SuspectEnteredMetroTimeBetweenVariance = br.ReadInt32(); + SuspectIsInCarTimeBetween = br.ReadInt32(); + SuspectIsInCarTimeBetweenVariance = br.ReadInt32(); + SuspectIsOnFootTimeBetween = br.ReadInt32(); + SuspectIsOnFootTimeBetweenVariance = br.ReadInt32(); + SuspectIsOnMotorcycleTimeBetween = br.ReadInt32(); + SuspectIsOnMotorcycleTimeBetweenVariance = br.ReadInt32(); + SuspectLeftFreewayTimeBetween = br.ReadInt32(); + SuspectLeftFreewayTimeBetweenVariance = br.ReadInt32(); + RequestBackupTimeBetween = br.ReadInt32(); + RequestBackupTimeBetweenVariance = br.ReadInt32(); + AcknowledgeSituationTimeBetween = br.ReadInt32(); + AcknowledgeSituationTimeBetweenVariance = br.ReadInt32(); + RespondingDispatchProbability = br.ReadSingle(); + GuidanceDispatchTimeBetween = br.ReadInt32(); + GuidanceDispatchTimeBetweenVariance = br.ReadInt32(); + GuidanceDispatchTimeNotSpottedToTrigger = br.ReadInt32(); + GuidanceDispatchProbabilityOfMegaphoneLine = br.ReadSingle(); + HeliMaydayDispatchTimeBetween = br.ReadInt32(); + HeliMaydayDispatchTimeBetweenVariance = br.ReadInt32(); + ShotAtHeliTimeBetween = br.ReadInt32(); + ShotAtHeliTimeBetweenVariance = br.ReadInt32(); + HeliApproachingDispatchTimeBetween = br.ReadInt32(); + HeliApproachingDispatchTimeBetweenVariance = br.ReadInt32(); } public override void Write(BinaryWriter bw) { @@ -19227,131 +19287,131 @@ namespace CodeWalker.GameFiles bw.Write(SecondLinePredelay); bw.Write(SecondLinePredelayVariance); bw.Write(ScannerPredelay); - bw.Write(Unk08); - bw.Write(Unk09); - bw.Write(Unk10); - bw.Write(Unk11); - bw.Write(Unk12); - bw.Write(Unk13); - bw.Write(Unk14); - bw.Write(Unk15); - bw.Write(Unk16); - bw.Write(Unk17); - bw.Write(Unk18); - bw.Write(Unk19); - bw.Write(Unk20); - bw.Write(Unk21); - bw.Write(Unk22); - bw.Write(Unk23); - bw.Write(Unk24); - bw.Write(Unk25); - bw.Write(Unk26); - bw.Write(Unk27); - bw.Write(Unk28); - bw.Write(Unk29); - bw.Write(Unk30); - bw.Write(Unk31); - bw.Write(Unk32); - bw.Write(Unk33); - bw.Write(Unk34); - bw.Write(Unk35); - bw.Write(Unk36); - bw.Write(Unk37); - bw.Write(Unk38); - bw.Write(Unk39); - bw.Write(Unk40); - bw.Write(Unk41); - bw.Write(Unk42); + bw.Write(ScannerPredelayVariance); + bw.Write(MinTimeBetweenSpottedAndVehicleLinePlays); + bw.Write(MinTimeBetweenSpottedAndVehicleLinePlaysVariance); + bw.Write(MaxTimeAfterVehicleChangeSpottedLineCanPlay); + bw.Write(TimePassedSinceLastLineToForceVoiceChange); + bw.Write(NumCopsKilledToForceVoiceChange); + bw.Write(SuspectCrashedVehicleTimeBetween); + bw.Write(SuspectCrashedVehicleTimeBetweenVariance); + bw.Write(SuspectEnteredFreewayTimeBetween); + bw.Write(SuspectEnteredFreewayTimeBetweenVariance); + bw.Write(SuspectEnteredMetroTimeBetween); + bw.Write(SuspectEnteredMetroTimeBetweenVariance); + bw.Write(SuspectIsInCarTimeBetween); + bw.Write(SuspectIsInCarTimeBetweenVariance); + bw.Write(SuspectIsOnFootTimeBetween); + bw.Write(SuspectIsOnFootTimeBetweenVariance); + bw.Write(SuspectIsOnMotorcycleTimeBetween); + bw.Write(SuspectIsOnMotorcycleTimeBetweenVariance); + bw.Write(SuspectLeftFreewayTimeBetween); + bw.Write(SuspectLeftFreewayTimeBetweenVariance); + bw.Write(RequestBackupTimeBetween); + bw.Write(RequestBackupTimeBetweenVariance); + bw.Write(AcknowledgeSituationTimeBetween); + bw.Write(AcknowledgeSituationTimeBetweenVariance); + bw.Write(RespondingDispatchProbability); + bw.Write(GuidanceDispatchTimeBetween); + bw.Write(GuidanceDispatchTimeBetweenVariance); + bw.Write(GuidanceDispatchTimeNotSpottedToTrigger); + bw.Write(GuidanceDispatchProbabilityOfMegaphoneLine); + bw.Write(HeliMaydayDispatchTimeBetween); + bw.Write(HeliMaydayDispatchTimeBetweenVariance); + bw.Write(ShotAtHeliTimeBetween); + bw.Write(ShotAtHeliTimeBetweenVariance); + bw.Write(HeliApproachingDispatchTimeBetween); + bw.Write(HeliApproachingDispatchTimeBetweenVariance); } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.ValueTag(sb, indent, "Unk01", MinTimeBetweenInteractions.ToString()); - RelXml.ValueTag(sb, indent, "Unk02", MinTimeBetweenInteractionsVariance.ToString()); - RelXml.ValueTag(sb, indent, "Unk03", FirstLinePredelay.ToString()); - RelXml.ValueTag(sb, indent, "Unk04", FirstLinePredelayVariance.ToString()); - RelXml.ValueTag(sb, indent, "Unk05", SecondLinePredelay.ToString()); - RelXml.ValueTag(sb, indent, "Unk06", SecondLinePredelayVariance.ToString()); - RelXml.ValueTag(sb, indent, "Unk07", ScannerPredelay.ToString()); - RelXml.ValueTag(sb, indent, "Unk08", Unk08.ToString()); - RelXml.ValueTag(sb, indent, "Unk09", Unk09.ToString()); - RelXml.ValueTag(sb, indent, "Unk10", Unk10.ToString()); - RelXml.ValueTag(sb, indent, "Unk11", Unk11.ToString()); - RelXml.ValueTag(sb, indent, "Unk12", Unk12.ToString()); - RelXml.ValueTag(sb, indent, "Unk13", Unk13.ToString()); - RelXml.ValueTag(sb, indent, "Unk14", Unk14.ToString()); - RelXml.ValueTag(sb, indent, "Unk15", Unk15.ToString()); - RelXml.ValueTag(sb, indent, "Unk16", Unk16.ToString()); - RelXml.ValueTag(sb, indent, "Unk17", Unk17.ToString()); - RelXml.ValueTag(sb, indent, "Unk18", Unk18.ToString()); - RelXml.ValueTag(sb, indent, "Unk19", Unk19.ToString()); - RelXml.ValueTag(sb, indent, "Unk20", Unk20.ToString()); - RelXml.ValueTag(sb, indent, "Unk21", Unk21.ToString()); - RelXml.ValueTag(sb, indent, "Unk22", Unk22.ToString()); - RelXml.ValueTag(sb, indent, "Unk23", Unk23.ToString()); - RelXml.ValueTag(sb, indent, "Unk24", Unk24.ToString()); - RelXml.ValueTag(sb, indent, "Unk25", Unk25.ToString()); - RelXml.ValueTag(sb, indent, "Unk26", Unk26.ToString()); - RelXml.ValueTag(sb, indent, "Unk27", Unk27.ToString()); - RelXml.ValueTag(sb, indent, "Unk28", Unk28.ToString()); - RelXml.ValueTag(sb, indent, "Unk29", Unk29.ToString()); - RelXml.ValueTag(sb, indent, "Unk30", Unk30.ToString()); - RelXml.ValueTag(sb, indent, "Unk31", Unk31.ToString()); - RelXml.ValueTag(sb, indent, "Unk32", FloatUtil.ToString(Unk32)); - RelXml.ValueTag(sb, indent, "Unk33", Unk33.ToString()); - RelXml.ValueTag(sb, indent, "Unk34", Unk34.ToString()); - RelXml.ValueTag(sb, indent, "Unk35", Unk35.ToString()); - RelXml.ValueTag(sb, indent, "Unk36", FloatUtil.ToString(Unk36)); - RelXml.ValueTag(sb, indent, "Unk37", Unk37.ToString()); - RelXml.ValueTag(sb, indent, "Unk38", Unk38.ToString()); - RelXml.ValueTag(sb, indent, "Unk39", Unk39.ToString()); - RelXml.ValueTag(sb, indent, "Unk40", Unk40.ToString()); - RelXml.ValueTag(sb, indent, "Unk41", Unk41.ToString()); - RelXml.ValueTag(sb, indent, "Unk42", Unk42.ToString()); + RelXml.ValueTag(sb, indent, "MinTimeBetweenInteractions", MinTimeBetweenInteractions.ToString()); + RelXml.ValueTag(sb, indent, "MinTimeBetweenInteractionsVariance", MinTimeBetweenInteractionsVariance.ToString()); + RelXml.ValueTag(sb, indent, "FirstLinePredelay", FirstLinePredelay.ToString()); + RelXml.ValueTag(sb, indent, "FirstLinePredelayVariance", FirstLinePredelayVariance.ToString()); + RelXml.ValueTag(sb, indent, "SecondLinePredelay", SecondLinePredelay.ToString()); + RelXml.ValueTag(sb, indent, "SecondLinePredelayVariance", SecondLinePredelayVariance.ToString()); + RelXml.ValueTag(sb, indent, "ScannerPredelay", ScannerPredelay.ToString()); + RelXml.ValueTag(sb, indent, "ScannerPredelayVariance", ScannerPredelayVariance.ToString()); + RelXml.ValueTag(sb, indent, "MinTimeBetweenSpottedAndVehicleLinePlays", MinTimeBetweenSpottedAndVehicleLinePlays.ToString()); + RelXml.ValueTag(sb, indent, "MinTimeBetweenSpottedAndVehicleLinePlaysVariance", MinTimeBetweenSpottedAndVehicleLinePlaysVariance.ToString()); + RelXml.ValueTag(sb, indent, "MaxTimeAfterVehicleChangeSpottedLineCanPlay", MaxTimeAfterVehicleChangeSpottedLineCanPlay.ToString()); + RelXml.ValueTag(sb, indent, "TimePassedSinceLastLineToForceVoiceChange", TimePassedSinceLastLineToForceVoiceChange.ToString()); + RelXml.ValueTag(sb, indent, "NumCopsKilledToForceVoiceChange", NumCopsKilledToForceVoiceChange.ToString()); + RelXml.ValueTag(sb, indent, "SuspectCrashedVehicleTimeBetween", SuspectCrashedVehicleTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectCrashedVehicleTimeBetweenVariance", SuspectCrashedVehicleTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "SuspectEnteredFreewayTimeBetween", SuspectEnteredFreewayTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectEnteredFreewayTimeBetweenVariance", SuspectEnteredFreewayTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "SuspectEnteredMetroTimeBetween", SuspectEnteredMetroTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectEnteredMetroTimeBetweenVariance", SuspectEnteredMetroTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "SuspectIsInCarTimeBetween", SuspectIsInCarTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectIsInCarTimeBetweenVariance", SuspectIsInCarTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "SuspectIsOnFootTimeBetween", SuspectIsOnFootTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectIsOnFootTimeBetweenVariance", SuspectIsOnFootTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "SuspectIsOnMotorcycleTimeBetween", SuspectIsOnMotorcycleTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectIsOnMotorcycleTimeBetweenVariance", SuspectIsOnMotorcycleTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "SuspectLeftFreewayTimeBetween", SuspectLeftFreewayTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "SuspectLeftFreewayTimeBetweenVariance", SuspectLeftFreewayTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "RequestBackupTimeBetween", RequestBackupTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "RequestBackupTimeBetweenVariance", RequestBackupTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "AcknowledgeSituationTimeBetween", AcknowledgeSituationTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "AcknowledgeSituationTimeBetweenVariance", AcknowledgeSituationTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "RespondingDispatchProbability", FloatUtil.ToString(RespondingDispatchProbability)); + RelXml.ValueTag(sb, indent, "GuidanceDispatchTimeBetween", GuidanceDispatchTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "GuidanceDispatchTimeBetweenVariance", GuidanceDispatchTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "GuidanceDispatchTimeNotSpottedToTrigger", GuidanceDispatchTimeNotSpottedToTrigger.ToString()); + RelXml.ValueTag(sb, indent, "GuidanceDispatchProbabilityOfMegaphoneLine", FloatUtil.ToString(GuidanceDispatchProbabilityOfMegaphoneLine)); + RelXml.ValueTag(sb, indent, "HeliMaydayDispatchTimeBetween", HeliMaydayDispatchTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "HeliMaydayDispatchTimeBetweenVariance", HeliMaydayDispatchTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "ShotAtHeliTimeBetween", ShotAtHeliTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "ShotAtHeliTimeBetweenVariance", ShotAtHeliTimeBetweenVariance.ToString()); + RelXml.ValueTag(sb, indent, "HeliApproachingDispatchTimeBetween", HeliApproachingDispatchTimeBetween.ToString()); + RelXml.ValueTag(sb, indent, "HeliApproachingDispatchTimeBetweenVariance", HeliApproachingDispatchTimeBetweenVariance.ToString()); } public override void ReadXml(XmlNode node) { - MinTimeBetweenInteractions = Xml.GetChildIntAttribute(node, "Unk01", "value"); - MinTimeBetweenInteractionsVariance = Xml.GetChildIntAttribute(node, "Unk02", "value"); - FirstLinePredelay = Xml.GetChildIntAttribute(node, "Unk03", "value"); - FirstLinePredelayVariance = Xml.GetChildIntAttribute(node, "Unk04", "value"); - SecondLinePredelay = Xml.GetChildIntAttribute(node, "Unk05", "value"); - SecondLinePredelayVariance = Xml.GetChildIntAttribute(node, "Unk06", "value"); - ScannerPredelay = Xml.GetChildIntAttribute(node, "Unk07", "value"); - Unk08 = Xml.GetChildIntAttribute(node, "Unk08", "value"); - Unk09 = Xml.GetChildIntAttribute(node, "Unk09", "value"); - Unk10 = Xml.GetChildIntAttribute(node, "Unk10", "value"); - Unk11 = Xml.GetChildIntAttribute(node, "Unk11", "value"); - Unk12 = Xml.GetChildIntAttribute(node, "Unk12", "value"); - Unk13 = Xml.GetChildIntAttribute(node, "Unk13", "value"); - Unk14 = Xml.GetChildIntAttribute(node, "Unk14", "value"); - Unk15 = Xml.GetChildIntAttribute(node, "Unk15", "value"); - Unk16 = Xml.GetChildIntAttribute(node, "Unk16", "value"); - Unk17 = Xml.GetChildIntAttribute(node, "Unk17", "value"); - Unk18 = Xml.GetChildIntAttribute(node, "Unk18", "value"); - Unk19 = Xml.GetChildIntAttribute(node, "Unk19", "value"); - Unk20 = Xml.GetChildIntAttribute(node, "Unk20", "value"); - Unk21 = Xml.GetChildIntAttribute(node, "Unk21", "value"); - Unk22 = Xml.GetChildIntAttribute(node, "Unk22", "value"); - Unk23 = Xml.GetChildIntAttribute(node, "Unk23", "value"); - Unk24 = Xml.GetChildIntAttribute(node, "Unk24", "value"); - Unk25 = Xml.GetChildIntAttribute(node, "Unk25", "value"); - Unk26 = Xml.GetChildIntAttribute(node, "Unk26", "value"); - Unk27 = Xml.GetChildIntAttribute(node, "Unk27", "value"); - Unk28 = Xml.GetChildIntAttribute(node, "Unk28", "value"); - Unk29 = Xml.GetChildIntAttribute(node, "Unk29", "value"); - Unk30 = Xml.GetChildIntAttribute(node, "Unk30", "value"); - Unk31 = Xml.GetChildIntAttribute(node, "Unk31", "value"); - Unk32 = Xml.GetChildFloatAttribute(node, "Unk32", "value"); - Unk33 = Xml.GetChildIntAttribute(node, "Unk33", "value"); - Unk34 = Xml.GetChildIntAttribute(node, "Unk34", "value"); - Unk35 = Xml.GetChildIntAttribute(node, "Unk35", "value"); - Unk36 = Xml.GetChildFloatAttribute(node, "Unk36", "value"); - Unk37 = Xml.GetChildIntAttribute(node, "Unk37", "value"); - Unk38 = Xml.GetChildIntAttribute(node, "Unk38", "value"); - Unk39 = Xml.GetChildIntAttribute(node, "Unk39", "value"); - Unk40 = Xml.GetChildIntAttribute(node, "Unk40", "value"); - Unk41 = Xml.GetChildIntAttribute(node, "Unk41", "value"); - Unk42 = Xml.GetChildIntAttribute(node, "Unk42", "value"); + MinTimeBetweenInteractions = Xml.GetChildIntAttribute(node, "MinTimeBetweenInteractions", "value"); + MinTimeBetweenInteractionsVariance = Xml.GetChildIntAttribute(node, "MinTimeBetweenInteractionsVariance", "value"); + FirstLinePredelay = Xml.GetChildIntAttribute(node, "FirstLinePredelay", "value"); + FirstLinePredelayVariance = Xml.GetChildIntAttribute(node, "FirstLinePredelayVariance", "value"); + SecondLinePredelay = Xml.GetChildIntAttribute(node, "SecondLinePredelay", "value"); + SecondLinePredelayVariance = Xml.GetChildIntAttribute(node, "SecondLinePredelayVariance", "value"); + ScannerPredelay = Xml.GetChildIntAttribute(node, "ScannerPredelay", "value"); + ScannerPredelayVariance = Xml.GetChildIntAttribute(node, "ScannerPredelayVariance", "value"); + MinTimeBetweenSpottedAndVehicleLinePlays = Xml.GetChildIntAttribute(node, "MinTimeBetweenSpottedAndVehicleLinePlays", "value"); + MinTimeBetweenSpottedAndVehicleLinePlaysVariance = Xml.GetChildIntAttribute(node, "MinTimeBetweenSpottedAndVehicleLinePlaysVariance", "value"); + MaxTimeAfterVehicleChangeSpottedLineCanPlay = Xml.GetChildIntAttribute(node, "MaxTimeAfterVehicleChangeSpottedLineCanPlay", "value"); + TimePassedSinceLastLineToForceVoiceChange = Xml.GetChildIntAttribute(node, "TimePassedSinceLastLineToForceVoiceChange", "value"); + NumCopsKilledToForceVoiceChange = Xml.GetChildIntAttribute(node, "NumCopsKilledToForceVoiceChange", "value"); + SuspectCrashedVehicleTimeBetween = Xml.GetChildIntAttribute(node, "SuspectCrashedVehicleTimeBetween", "value"); + SuspectCrashedVehicleTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectCrashedVehicleTimeBetweenVariance", "value"); + SuspectEnteredFreewayTimeBetween = Xml.GetChildIntAttribute(node, "SuspectEnteredFreewayTimeBetween", "value"); + SuspectEnteredFreewayTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectEnteredFreewayTimeBetweenVariance", "value"); + SuspectEnteredMetroTimeBetween = Xml.GetChildIntAttribute(node, "SuspectEnteredMetroTimeBetween", "value"); + SuspectEnteredMetroTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectEnteredMetroTimeBetweenVariance", "value"); + SuspectIsInCarTimeBetween = Xml.GetChildIntAttribute(node, "SuspectIsInCarTimeBetween", "value"); + SuspectIsInCarTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectIsInCarTimeBetweenVariance", "value"); + SuspectIsOnFootTimeBetween = Xml.GetChildIntAttribute(node, "SuspectIsOnFootTimeBetween", "value"); + SuspectIsOnFootTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectIsOnFootTimeBetweenVariance", "value"); + SuspectIsOnMotorcycleTimeBetween = Xml.GetChildIntAttribute(node, "SuspectIsOnMotorcycleTimeBetween", "value"); + SuspectIsOnMotorcycleTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectIsOnMotorcycleTimeBetweenVariance", "value"); + SuspectLeftFreewayTimeBetween = Xml.GetChildIntAttribute(node, "SuspectLeftFreewayTimeBetween", "value"); + SuspectLeftFreewayTimeBetweenVariance = Xml.GetChildIntAttribute(node, "SuspectLeftFreewayTimeBetweenVariance", "value"); + RequestBackupTimeBetween = Xml.GetChildIntAttribute(node, "RequestBackupTimeBetween", "value"); + RequestBackupTimeBetweenVariance = Xml.GetChildIntAttribute(node, "RequestBackupTimeBetweenVariance", "value"); + AcknowledgeSituationTimeBetween = Xml.GetChildIntAttribute(node, "AcknowledgeSituationTimeBetween", "value"); + AcknowledgeSituationTimeBetweenVariance = Xml.GetChildIntAttribute(node, "AcknowledgeSituationTimeBetweenVariance", "value"); + RespondingDispatchProbability = Xml.GetChildFloatAttribute(node, "RespondingDispatchProbability", "value"); + GuidanceDispatchTimeBetween = Xml.GetChildIntAttribute(node, "GuidanceDispatchTimeBetween", "value"); + GuidanceDispatchTimeBetweenVariance = Xml.GetChildIntAttribute(node, "GuidanceDispatchTimeBetweenVariance", "value"); + GuidanceDispatchTimeNotSpottedToTrigger = Xml.GetChildIntAttribute(node, "GuidanceDispatchTimeNotSpottedToTrigger", "value"); + GuidanceDispatchProbabilityOfMegaphoneLine = Xml.GetChildFloatAttribute(node, "GuidanceDispatchProbabilityOfMegaphoneLine", "value"); + HeliMaydayDispatchTimeBetween = Xml.GetChildIntAttribute(node, "HeliMaydayDispatchTimeBetween", "value"); + HeliMaydayDispatchTimeBetweenVariance = Xml.GetChildIntAttribute(node, "HeliMaydayDispatchTimeBetweenVariance", "value"); + ShotAtHeliTimeBetween = Xml.GetChildIntAttribute(node, "ShotAtHeliTimeBetween", "value"); + ShotAtHeliTimeBetweenVariance = Xml.GetChildIntAttribute(node, "ShotAtHeliTimeBetweenVariance", "value"); + HeliApproachingDispatchTimeBetween = Xml.GetChildIntAttribute(node, "HeliApproachingDispatchTimeBetween", "value"); + HeliApproachingDispatchTimeBetweenVariance = Xml.GetChildIntAttribute(node, "HeliApproachingDispatchTimeBetweenVariance", "value"); } } @@ -19497,18 +19557,20 @@ namespace CodeWalker.GameFiles [TC(typeof(EXP))] public class Dat151TennisVocalizationSettings : Dat151RelData { - public MetaHash Unk01 { get; set; } - public float Unk02 { get; set; } - public MetaHash Unk03 { get; set; } - public MetaHash Unk04 { get; set; } - public MetaHash Unk05 { get; set; } - public MetaHash Unk06 { get; set; } - public float Unk07 { get; set; } - public MetaHash Unk08 { get; set; } - public MetaHash Unk09 { get; set; } - public MetaHash Unk10 { get; set; } - public MetaHash Unk11 { get; set; } - public float Unk12 { get; set; } + public float LightNullWeight { get; set; } + public float LightLiteWeight { get; set; } + public float LightMedWeight { get; set; } + public float LightStrongWeight { get; set; } + // tLite + public float MediumNullWeight { get; set; } + public float MediumLiteWeight { get; set; } + public float MediumMedWeight { get; set; } + public float MediumStrongWeight { get; set; } + // tMed + public float StrongNullWeight { get; set; } + public float StrongLiteWeight { get; set; } + public float StrongMedWeight { get; set; } + public float StrongStrongWeight { get; set; } public Dat151TennisVocalizationSettings(RelFile rel) : base(rel) { @@ -19517,65 +19579,65 @@ namespace CodeWalker.GameFiles } public Dat151TennisVocalizationSettings(RelData d, BinaryReader br) : base(d, br) { - Unk01 = br.ReadUInt32(); - Unk02 = br.ReadSingle(); - Unk03 = br.ReadUInt32(); - Unk04 = br.ReadUInt32(); - Unk05 = br.ReadUInt32(); - Unk06 = br.ReadUInt32(); - Unk07 = br.ReadSingle(); - Unk08 = br.ReadUInt32(); - Unk09 = br.ReadUInt32(); - Unk10 = br.ReadUInt32(); - Unk11 = br.ReadUInt32(); - Unk12 = br.ReadSingle(); + LightNullWeight = br.ReadSingle(); + LightLiteWeight = br.ReadSingle(); + LightMedWeight = br.ReadSingle(); + LightStrongWeight = br.ReadSingle(); + MediumNullWeight = br.ReadSingle(); + MediumLiteWeight = br.ReadSingle(); + MediumMedWeight = br.ReadSingle(); + MediumStrongWeight = br.ReadSingle(); + StrongNullWeight = br.ReadSingle(); + StrongLiteWeight = br.ReadSingle(); + StrongMedWeight = br.ReadSingle(); + StrongStrongWeight = br.ReadSingle(); } public override void Write(BinaryWriter bw) { WriteTypeAndOffset(bw); - bw.Write(Unk01); - bw.Write(Unk02); - bw.Write(Unk03); - bw.Write(Unk04); - bw.Write(Unk05); - bw.Write(Unk06); - bw.Write(Unk07); - bw.Write(Unk08); - bw.Write(Unk09); - bw.Write(Unk10); - bw.Write(Unk11); - bw.Write(Unk12); + bw.Write(LightNullWeight); + bw.Write(LightLiteWeight); + bw.Write(LightMedWeight); + bw.Write(LightStrongWeight); + bw.Write(MediumNullWeight); + bw.Write(MediumLiteWeight); + bw.Write(MediumMedWeight); + bw.Write(MediumStrongWeight); + bw.Write(StrongNullWeight); + bw.Write(StrongLiteWeight); + bw.Write(StrongMedWeight); + bw.Write(StrongStrongWeight); } public override void WriteXml(StringBuilder sb, int indent) { - RelXml.StringTag(sb, indent, "Unk01", RelXml.HashString(Unk01)); - RelXml.ValueTag(sb, indent, "Unk02", FloatUtil.ToString(Unk02)); - RelXml.StringTag(sb, indent, "Unk03", RelXml.HashString(Unk03)); - RelXml.StringTag(sb, indent, "Unk04", RelXml.HashString(Unk04)); - RelXml.StringTag(sb, indent, "Unk05", RelXml.HashString(Unk05)); - RelXml.StringTag(sb, indent, "Unk06", RelXml.HashString(Unk06)); - RelXml.ValueTag(sb, indent, "Unk07", FloatUtil.ToString(Unk07)); - RelXml.StringTag(sb, indent, "Unk08", RelXml.HashString(Unk08)); - RelXml.StringTag(sb, indent, "Unk09", RelXml.HashString(Unk09)); - RelXml.StringTag(sb, indent, "Unk10", RelXml.HashString(Unk10)); - RelXml.StringTag(sb, indent, "Unk11", RelXml.HashString(Unk11)); - RelXml.ValueTag(sb, indent, "Unk12", FloatUtil.ToString(Unk12)); + RelXml.ValueTag(sb, indent, "LightNullWeight", FloatUtil.ToString(LightNullWeight)); + RelXml.ValueTag(sb, indent, "LightLiteWeight", FloatUtil.ToString(LightLiteWeight)); + RelXml.ValueTag(sb, indent, "LightMedWeight", FloatUtil.ToString(LightMedWeight)); + RelXml.ValueTag(sb, indent, "LightStrongWeight", FloatUtil.ToString(LightStrongWeight)); + RelXml.ValueTag(sb, indent, "MediumNullWeight", FloatUtil.ToString(MediumNullWeight)); + RelXml.ValueTag(sb, indent, "MediumLiteWeight", FloatUtil.ToString(MediumLiteWeight)); + RelXml.ValueTag(sb, indent, "MediumMedWeight", FloatUtil.ToString(MediumMedWeight)); + RelXml.ValueTag(sb, indent, "MediumStrongWeight", FloatUtil.ToString(MediumStrongWeight)); + RelXml.ValueTag(sb, indent, "StrongNullWeight", FloatUtil.ToString(StrongNullWeight)); + RelXml.ValueTag(sb, indent, "StrongLiteWeight", FloatUtil.ToString(StrongLiteWeight)); + RelXml.ValueTag(sb, indent, "StrongMedWeight", FloatUtil.ToString(StrongMedWeight)); + RelXml.ValueTag(sb, indent, "StrongStrongWeight", FloatUtil.ToString(StrongStrongWeight)); } public override void ReadXml(XmlNode node) { - Unk01 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk01")); - Unk02 = Xml.GetChildFloatAttribute(node, "Unk02", "value"); - Unk03 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk03")); - Unk04 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk04")); - Unk05 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk05")); - Unk06 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk06")); - Unk07 = Xml.GetChildFloatAttribute(node, "Unk07", "value"); - Unk08 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk08")); - Unk09 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk09")); - Unk10 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk10")); - Unk11 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk11")); - Unk12 = Xml.GetChildFloatAttribute(node, "Unk12", "value"); + LightNullWeight = Xml.GetChildFloatAttribute(node, "LightNullWeight", "value"); + LightLiteWeight = Xml.GetChildFloatAttribute(node, "LightLiteWeight", "value"); + LightMedWeight = Xml.GetChildFloatAttribute(node, "LightMedWeight", "value"); + LightStrongWeight = Xml.GetChildFloatAttribute(node, "LightStrongWeight", "value"); + MediumNullWeight = Xml.GetChildFloatAttribute(node, "MediumNullWeight", "value"); + MediumLiteWeight = Xml.GetChildFloatAttribute(node, "MediumLiteWeight", "value"); + MediumMedWeight = Xml.GetChildFloatAttribute(node, "MediumMedWeight", "value"); + MediumStrongWeight = Xml.GetChildFloatAttribute(node, "MediumStrongWeight", "value"); + StrongNullWeight = Xml.GetChildFloatAttribute(node, "StrongNullWeight", "value"); + StrongLiteWeight = Xml.GetChildFloatAttribute(node, "StrongLiteWeight", "value"); + StrongMedWeight = Xml.GetChildFloatAttribute(node, "StrongMedWeight", "value"); + StrongStrongWeight = Xml.GetChildFloatAttribute(node, "StrongStrongWeight", "value"); } }