diff --git a/README.md b/README.md
index 965faca..c220eb0 100644
--- a/README.md
+++ b/README.md
@@ -61,6 +61,7 @@ This is a table of games that are confirmed to be compatible with the current st
| Red Orchestra: Ostfront 41-45 | 3323-3369 | 128/029 | |
| Killing Floor | 3369 | 128/029 | |
| Battle Territory Battery | Unknown | Unknown | |
+| Vanguard: Saga of Heroes | Unknown | 129/035 | |
| Swat 4 | Vengeance | 129/027 | |
| Tribes: Vengeance | Vengeance | 130/027 | |
| Bioshock | Vengeance | 130-141/056 | |
diff --git a/src/UnrealPackage.cs b/src/UnrealPackage.cs
index c1c36b0..be8d9b5 100644
--- a/src/UnrealPackage.cs
+++ b/src/UnrealPackage.cs
@@ -160,18 +160,21 @@ public enum BuildName
///
/// Standard
+ ///
/// 61/000
///
[Build(61, 0)] Unreal1,
///
/// Standard, Unreal Tournament & Deus Ex
+ ///
/// 68:69/000
///
[Build(68, 69, 0u, 0u)] UT,
///
/// Deus Ex: Invisible War
+ ///
/// Missing support for custom classes such as BitfieldProperty and BitfieldEnum among others.
/// 95/69
///
@@ -179,6 +182,7 @@ public enum BuildName
///
/// Thief: Deadly Shadows
+ ///
/// 95/133
///
[Build(95, 133, BuildGeneration.Thief)]
@@ -203,15 +207,17 @@ public enum BuildName
///
/// Tom Clancy's Rainbow Six 3: Raven Shield
+ ///
/// 118/011:014
///
[Build(118, 118, 11u, 14u)] R6RS,
///
/// Unreal II: eXpanded MultiPlayer
+ ///
/// 126/000
///
- [Build(126, 0)] Unreal2XMP,
+ [Build(123, 126, 0u, 0u)] Unreal2XMP,
///
/// 118:128/025:029
@@ -221,17 +227,29 @@ public enum BuildName
UT2004,
///
- /// Built on UT2004
+ /// America's Army 2.X
/// Represents both AAO and AAA
+ ///
+ /// Built on UT2004
/// 128/032:033
///
[Build(128, 128, 32u, 33u, BuildGeneration.UE2_5)] [BuildEngineBranch(typeof(EngineBranchAA2))]
AA2,
+ ///
+ /// Vanguard: Saga of Heroes
+ ///
+ /// 129/035
+ /// Some packages have 128/025 but those are in conflict with UT2004.
+ ///
+ [Build(128, 129, 34u, 35u, BuildGeneration.UE2_5)] Vanguard_SOH,
+
// IrrationalGames/Vengeance - 129:143/027:059
///
/// Tribes: Vengeance
+ ///
+ /// 130/027
///
[Build(130, 27, BuildGeneration.Vengeance)]
Tribes_VG,
@@ -244,6 +262,7 @@ public enum BuildName
///
/// BioShock 1 & 2
+ ///
/// 130:143/056:059
///
[Build(130, 143, 56u, 59u, BuildGeneration.Vengeance)]
@@ -260,11 +279,15 @@ public enum BuildName
Spellborn,
///
+ /// Standard
+ ///
/// 369/006
///
[Build(369, 6)] RoboBlitz,
///
+ /// Medal of Honor: Airborne
+ ///
/// 421/011
///
[Build(421, 11)] MOHA,
@@ -276,6 +299,8 @@ public enum BuildName
MKKE,
///
+ /// Gears of War
+ ///
/// 490/009
///
[Build(490, 9)] GoW1,
@@ -307,11 +332,15 @@ public enum BuildName
[Build(539, 91)] AlphaProtocol,
///
+ /// APB: All Points Bulletin & APB: Reloaded
+ ///
/// 547/028:032
///
[Build(547, 547, 28u, 32u)] APB,
///
+ /// Standard, Gears of War 2
+ ///
/// 575/000
/// Xenon is enabled here, because the package is missing editor data, the editor data of UStruct is however still serialized.
///
@@ -324,8 +353,9 @@ public enum BuildName
[Build(576, 5)] CrimeCraft,
///
- /// 576/021
+ /// Batman: Arkham Asylum
///
+ /// 576/021
/// No Special support, but there's no harm in recognizing this build.
///
[Build(576, 21)] Batman1,
@@ -367,6 +397,8 @@ public enum BuildName
[Build(610, 14)] Tera,
///
+ /// DC Universe Online
+ ///
/// 648/6405
///
[Build(648, 6405)] DCUO,
@@ -396,6 +428,8 @@ public enum BuildName
InfinityBlade,
///
+ /// Standard, Gears of War 3
+ ///
/// 828/000
///
[Build(828, 0, BuildFlags.ConsoleCooked)]
@@ -418,11 +452,15 @@ public enum BuildName
InfinityBlade2,
///
+ /// XCom
+ ///
/// 845/059
///
[Build(845, 59)] XCOM_EU,
///
+ /// XCom 2: War of The Chosen
+ ///
/// 845/120
///
[Build(845, 120)] XCOM2WotC,
@@ -445,11 +483,11 @@ public enum BuildName
/// 807/104
/// 863/32995
///
- [Build(805, 101, BuildGeneration.Batman2)]
+ [Build(805, 101, BuildGeneration.Batman2)] // Batman: Arkham City
[Build(806, 103, BuildGeneration.Batman3)]
- [Build(807, 807, 137, 138, BuildGeneration.Batman3)]
+ [Build(807, 807, 137, 138, BuildGeneration.Batman3)] // Batman: Arkham Origins
[Build(807, 104, BuildGeneration.Batman3MP)]
- [Build(863, 32995, BuildGeneration.Batman4)]
+ [Build(863, 32995, BuildGeneration.Batman4)] // Batman: Arkham Knight
BatmanUDK,
///
diff --git a/src/UnrealStream.cs b/src/UnrealStream.cs
index ae9ce3b..e6a6c3a 100644
--- a/src/UnrealStream.cs
+++ b/src/UnrealStream.cs
@@ -840,6 +840,12 @@ public static UName ReadNameReference(this IUnrealStream stream)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int ReadLength(this IUnrealStream stream)
{
+#if VANGUARD
+ if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.Vanguard_SOH)
+ {
+ return stream.UR.ReadInt32();
+ }
+#endif
return stream.UR.ReadIndex();
}