public ScenarioScriptInterop(Blam.Halo3.CacheFile cf) : base(cf,
                                                              new TagInterface.Block <Blam.Halo3.Tags.hs_scripts_block>(null, 0),
                                                              0x3E0,
                                                              0x3F4, 0x400,
                                                              0x4A4)
 {
     hs_scripts = base.sncr_hs_scripts as TagInterface.Block <Blam.Halo3.Tags.hs_scripts_block>;
 }
            /// <summary>
            /// Returns a CacheFile object based on a cache name
            /// </summary>
            /// <remarks>
            /// If the <paramref name="cache_name"/> is null or empty then <paramref name="is_internal"/>
            /// gets set to true and null is returned. If null and <paramref name="is_internal"/> is not set,
            /// the CacheFile is either not loaded or the location was invalid.
            /// </remarks>
            /// <param name="ver">Halo3 engine version</param>
            /// <param name="cache_name">Blam based cache name</param>
            /// <param name="is_internal">bool reference to set if the reference is internal</param>
            /// <returns>The CacheFile associated with <paramref name="cache_name"/></returns>
            public static Blam.Halo3.CacheFile FromLocation(BlamVersion ver, string cache_name, out bool is_internal)
            {
                is_internal = false;

                Blam.Halo3.CacheFile c = FromLocation(ver, cache_name);

                is_internal = c == null;
                return(c);
            }
        static void ScanForScriptFunctionsImpl(string[] script_functions, Blam.Halo3.CacheFile cf)
        {
            var interop = new ScenarioScriptInterop(cf);

            interop.FindFunctionNames(script_functions);
        }