예제 #1
0
        public static DungeonFlow LoadOfficialFlow(string target)
        {
            string flowName = target;

            if (flowName.Contains("/"))
            {
                flowName = target.Substring(target.LastIndexOf("/") + 1);
            }
            AssetBundle m_assetBundle_orig = ResourceManager.LoadAssetBundle("flows_base_001");

            DebugTime.RecordStartTime();
            DungeonFlow result = m_assetBundle_orig.LoadAsset <DungeonFlow>(flowName);

            DebugTime.Log("AssetBundle.LoadAsset<DungeonFlow>({0})", new object[] { flowName });
            if (result == null)
            {
                Debug.Log("ERROR: Requested DungeonFlow not found!\nCheck that you provided correct DungeonFlow name and that it actually exists!");
                m_assetBundle_orig = null;
                return(null);
            }
            else
            {
                m_assetBundle_orig = null;
                return(result);
            }
        }
예제 #2
0
        public static Dungeon GetOrLoadByNameHook(Func <string, Dungeon> orig, string name)
        {
            Dungeon dungeon = null;

            if (name.ToLower() == "base_cathedral")
            {
                dungeon = AbbeyDungeonMods(GetOrLoadByName_Orig(name));
            }
            else if (name.ToLower() == "base_sewer")
            {
                dungeon = SewerDungeonMods(GetOrLoadByName_Orig(name));
            }


            if (dungeon)
            {
                DebugTime.RecordStartTime();
                DebugTime.Log("AssetBundle.LoadAsset<Dungeon>({0})", new object[] { name });
                return(dungeon);
            }
            else
            {
                return(orig(name));
            }
        }
예제 #3
0
        public static DungeonFlow LoadCustomFlow(Func <string, DungeonFlow> orig, string target)
        {
            string flowName = target;

            if (flowName.Contains("/"))
            {
                flowName = target.Substring(target.LastIndexOf("/") + 1);
            }
            if (KnownFlows != null && KnownFlows.Count > 0)
            {
                foreach (DungeonFlow flow in KnownFlows)
                {
                    if (flow.name != null && flow.name != string.Empty)
                    {
                        if (flowName.ToLower() == flow.name.ToLower())
                        {
                            DebugTime.RecordStartTime();
                            DebugTime.Log("AssetBundle.LoadAsset<DungeonFlow>({0})", new object[] { flowName });
                            return(flow);
                        }
                    }
                }
            }
            return(orig(target));
        }
예제 #4
0
        // Token: 0x060005C0 RID: 1472 RVA: 0x00036838 File Offset: 0x00034A38
        public static Dungeon GetOrLoadByNameHook(Func <string, Dungeon> orig, string name)
        {
            Dungeon dungeon = null;
            bool    flag    = name.ToLower() == "base_nakatomi";

            if (flag)
            {
                dungeon = MasteryReplacementRNG.RNGDungeonMods(MasteryReplacementRNG.GetOrLoadByName_Orig(name));
            }
            bool    flag3 = dungeon;
            Dungeon result;

            if (flag3)
            {
                DebugTime.RecordStartTime();
                DebugTime.Log("AssetBundle.LoadAsset<Dungeon>({0})", new object[]
                {
                    name
                });
                result = dungeon;
            }
            else
            {
                result = orig(name);
            }
            return(result);
        }
예제 #5
0
        public static Dungeon GetOrLoadByName_Orig(string name)
        {
            AssetBundle assetBundle = ResourceManager.LoadAssetBundle("dungeons/" + name.ToLower());

            DebugTime.RecordStartTime();
            Dungeon component = assetBundle.LoadAsset <GameObject>(name).GetComponent <Dungeon>();

            DebugTime.Log("AssetBundle.LoadAsset<Dungeon>({0})", new object[] { name });
            return(component);
        }
예제 #6
0
        public static Dungeon GetOrLoadByNameHook(Func <string, Dungeon> orig, string prefabPath)
        {
            Func <Dungeon, Dungeon> buildDungeon;

            if (customDungeons.TryGetValue(prefabPath, out buildDungeon))
            {
                Dungeon d = buildDungeon(GetOrLoadByNameOrig("Base_ResourcefulRat"));
                DebugTime.RecordStartTime();
                DebugTime.Log("AssetBundle.LoadAsset<Dungeon>({0})", new object[] { prefabPath });
                return(d);
            }
            else
            {
                return(orig(prefabPath));
            }
        }
예제 #7
0
        public static DungeonFlow LoadCustomFlow(Func <string, DungeonFlow> orig, string target)
        {
            string flowName = target;

            if (flowName.Contains("/"))
            {
                flowName = target.Substring(target.LastIndexOf("/") + 1);
            }
            if (flowName.ToLower().EndsWith("secret_doublebeholster_flow"))
            {
                GlitchChestFlows = GlitchChestFlows.Shuffle();
                if (ExpandStats.randomSeed <= 0.5f)
                {
                    flowName = BraveUtility.RandomElement(GlitchChestFlows);
                }
                else
                {
                    flowName = GlitchChestFlows[UnityEngine.Random.Range(0, GlitchChestFlows.Count)];
                }
            }
            else if (flowName.ToLower().EndsWith("secret_doublebeholster_flow_orig"))
            {
                flowName = "secret_doublebeholster_flow";
            }
            if (KnownFlows != null && KnownFlows.Count > 0)
            {
                foreach (DungeonFlow flow in KnownFlows)
                {
                    if (flow.name != null && flow.name != string.Empty)
                    {
                        if (flowName.ToLower() == flow.name.ToLower())
                        {
                            // Allows glitch chest floors to have things like the Old Crest room drop off if on Gungeon tileset, etc.
                            if (GlitchChestFlows.Contains(flow.name.ToLower()))
                            {
                                flow.sharedInjectionData = RetrieveSharedInjectionDataListFromCurrentFloor();
                            }
                            DebugTime.RecordStartTime();
                            DebugTime.Log("AssetBundle.LoadAsset<DungeonFlow>({0})", new object[] { flowName });
                            return(flow);
                        }
                    }
                }
            }
            return(orig(target));
        }
예제 #8
0
        public static Dungeon GetOrLoadByNameHook(Func <string, Dungeon> orig, string name)
        {
            Dungeon dungeon = null;
            string  dungeonPrefabTemplate = "Base_Cathedral";

            if (name.ToLower() == "base_floorname")
            {
                dungeon = FloorNameGeon(GetOrLoadByName_Orig(dungeonPrefabTemplate));
            }
            if (dungeon)
            {
                DebugTime.RecordStartTime();
                DebugTime.Log("AssetBundle.LoadAsset<Dungeon>({0})", new object[] { name });
                return(dungeon);
            }
            else
            {
                return(orig(name));
            }
        }
예제 #9
0
        public static DungeonFlow LoadCustomFlow(Func <string, DungeonFlow> orig, string target)
        {
            string flowName = target;

            if (flowName.Contains("/"))
            {
                flowName = target.Substring(target.LastIndexOf("/") + 1);
            }
            if (flowName.ToLower().EndsWith("secret_doublebeholster_flow") && ExpandSettings.EnableExpandedGlitchFloors)
            {
                DungeonFlow m_Flow = GetRandomFlowFromNextDungeonPrefabForGlitchFloor();
                DebugTime.RecordStartTime();
                DebugTime.Log("AssetBundle.LoadAsset<DungeonFlow>({0})", new object[] { m_Flow.name });
                return(m_Flow);
            }
            else if (flowName.ToLower().EndsWith("secret_doublebeholster_flow_orig"))
            {
                flowName = "secret_doublebeholster_flow";
            }
            if (KnownFlows != null && KnownFlows.Count > 0)
            {
                foreach (DungeonFlow flow in KnownFlows)
                {
                    if (flow.name != null && flow.name != string.Empty)
                    {
                        if (flowName.ToLower() == flow.name.ToLower())
                        {
                            // Allows glitch chest floors to have things like the Old Crest room drop off if on Gungeon tileset, etc.
                            if (GlitchChestFlows.Contains(flow.name.ToLower()))
                            {
                                flow.sharedInjectionData = RetrieveSharedInjectionDataListFromCurrentFloor();
                            }
                            DebugTime.RecordStartTime();
                            DebugTime.Log("AssetBundle.LoadAsset<DungeonFlow>({0})", new object[] { flowName });
                            return(flow);
                        }
                    }
                }
            }
            return(orig(target));
        }
예제 #10
0
        // Token: 0x060003BC RID: 956 RVA: 0x00026D20 File Offset: 0x00024F20
        public static Dungeon GetOrLoadByNameHook(Func <string, Dungeon> orig, string prefabPath)
        {
            Func <Dungeon, Dungeon> buildDungeon;
            bool    flag = SpecialDungeon.customDungeons.TryGetValue(prefabPath, out buildDungeon);
            Dungeon result;

            if (flag)
            {
                Dungeon d = buildDungeon(SpecialDungeon.GetOrLoadByNameOrig("Base_ResourcefulRat"));
                DebugTime.RecordStartTime();
                DebugTime.Log("AssetBundle.LoadAsset<Dungeon>({0})", new object[]
                {
                    prefabPath
                });
                result = d;
            }
            else
            {
                result = orig(prefabPath);
            }
            return(result);
        }