private void Awake() { _logger = Logger; using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("TinkersSatchel.tinkerssatchel_assets")) { resources = AssetBundle.LoadFromStream(stream); } try { UnstubShaders(); } catch (Exception ex) { _logger.LogError($"Shader unstub failed: {ex} {ex.Message}"); } cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); var modInfo = new T2Module.ModInfo { displayName = "Tinker's Satchel", longIdentifier = "TinkersSatchel", shortIdentifier = "TKSAT", mainConfigFile = cfgFile }; allModules = T2Module.InitAll <T2Module>(modInfo); var earlyLoad = new[] { CommonCode.instance }; T2Module.SetupAll_PluginAwake(earlyLoad); T2Module.SetupAll_PluginAwake(allModules.Except(earlyLoad)); }
private void Awake() { Debug.Log("Loading assets."); using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ArtifactOfHaste.artifactofhaste")) { var bundle = AssetBundle.LoadFromStream(stream); var provider = new AssetBundleResourcesProvider("@ArtifactOfHaste", bundle); ResourcesAPI.AddProvider(provider); } config = new ConfigFile(Path.Combine(Paths.ConfigPath, modGuid + ".cfg"), true); Debug.Log("Creating mod info."); itemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Artifact of Haste", longIdentifier = "ArtifactOfHaste", shortIdentifier = "AOH", mainConfigFile = config }); Debug.Log("Initializing mod."); T2Module.SetupAll_PluginAwake(itemList); T2Module.SetupAll_PluginStart(itemList); }
private void Awake() { _logger = Logger; Logger.LogDebug("Loading assets..."); //BundleInfo bundleInfo = new BundleInfo("@RiskOfBulletstorm", "RiskOfBulletstorm.riskofgungeonassets", BundleType.UnityAssetBundle); BundleInfo bundleInfo = new BundleInfo("RiskOfBulletstorm.riskofgungeonassets", BundleType.UnityAssetBundle); assetBundle = new AssetsManager(bundleInfo).Register() as AssetBundle; ConfigFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = displayName, longIdentifier = "RISKOFBULLETSTORMMOD", shortIdentifier = "RBS", mainConfigFile = ConfigFile }); T2Module.SetupAll_PluginAwake(masterItemList); Shared.Buffs.BuffsController.Init(); R2API.Utils.CommandHelper.AddToConsoleWhenReady(); }
private void Awake() { _logger = Logger; using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SupplyDrop.supplydrop_assets")) { MainAssets = AssetBundle.LoadFromStream(stream); } ConfigFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Supply Drop", longIdentifier = "SUPPLYDROP", shortIdentifier = "SUPPDRP", mainConfigFile = ConfigFile }); using (var bankStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SupplyDrop.SupplyDropSounds.bnk")) { var bytes = new byte[bankStream.Length]; bankStream.Read(bytes, 0, bytes.Length); SoundAPI.SoundBanks.Add(bytes); } T2Module.SetupAll_PluginAwake(masterItemList); T2Module.SetupAll_PluginStart(masterItemList); }
private void Awake() //Sourced almost entirely from ThinkInvis' Classic Items. It is also extremely handy. { _logger = Logger; #if DEBUG Logger.LogWarning("DEBUG mode is enabled! Ignore this message if you are actually debugging."); On.RoR2.Networking.GameNetworkManager.OnClientConnect += (self, user, t) => { }; #endif using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Aetherium.aetherium_assets")) { var bundle = AssetBundle.LoadFromStream(stream); var provider = new AssetBundleResourcesProvider("@Aetherium", bundle); ResourcesAPI.AddProvider(provider); } ConfigFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Aetherium", longIdentifier = "AETHERIUMMOD", shortIdentifier = "ATHRM", mainConfigFile = ConfigFile }); T2Module.SetupAll_PluginAwake(masterItemList); T2Module.SetupAll_PluginStart(masterItemList); }
private void Awake() { logger = Logger; Logger.LogDebug($"Initialising plugin -- Version {ModVersion}"); Logger.LogDebug("Loading configuration..."); config = new ConfigFile(Path.Combine(Paths.ConfigPath, $"{ModGuid}.cfg"), true); Logger.LogDebug("Loading assets..."); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MoreItems.moreitems")) { AssetBundle bundle = AssetBundle.LoadFromStream(stream); AssetBundleResourcesProvider provider = new AssetBundleResourcesProvider("@MoreItems", bundle); ResourcesAPI.AddProvider(provider); } masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "More Items", longIdentifier = "MoreItems", shortIdentifier = "More", mainConfigFile = config }); T2Module.SetupAll_PluginAwake(masterItemList); }
private void Awake() { Log = new Log(Logger); #if DEBUG MultiplayerTest.Enable(Logger, "Running test build with debug enabled! Report to CHEN if you're seeing this!"); #endif Log.Debug("Loading assets..."); BundleInfo bundleInfo = new BundleInfo("ChensBombasticMod.chensbombasticmod_assets", BundleType.UnityAssetBundle); assetBundle = new AssetsManager(bundleInfo).Register(); cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); Log.Debug("Instantiating item classes..."); chensItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Chen's Bombastic Mod", longIdentifier = "ChensBombasticMod", shortIdentifier = "CBM", mainConfigFile = cfgFile }); T2Module.SetupAll_PluginAwake(chensItemList); T2Module.SetupAll_PluginStart(chensItemList); }
private void Awake() { #if DEBUG On.RoR2.Networking.GameNetworkManager.OnClientConnect += (self, user, t) => { }; #endif _logger = Logger; Logger.LogDebug("Loading assets..."); ResourcesAPI.AddProvider(Assets.PopulateAssets()); cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); Logger.LogDebug("Replacing Item Shaders with Hopoo shaders..."); Assets.ReplaceShaders(); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Kevin's Additional Items", longIdentifier = "KevinsAdditions", shortIdentifier = "KAI", mainConfigFile = cfgFile }); T2Module.SetupAll_PluginAwake(masterItemList); Logger.LogDebug("Adding Imp Mechanics..."); ImpPlayerAdjustments.AddExtras(); }
private void Awake() { _logger = Logger; using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SupplyDrop.supplydrop_assets")) { var bundle = AssetBundle.LoadFromStream(stream); var provider = new AssetBundleResourcesProvider("@SupplyDrop", bundle); ResourcesAPI.AddProvider(provider); } ConfigFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Supply Drop", longIdentifier = "SUPPLYDROP", shortIdentifier = "SUPPDRP", mainConfigFile = ConfigFile }); T2Module.SetupAll_PluginAwake(masterItemList); }
private void Awake() { _logger = Logger; Logger.LogDebug("Performing plugin setup:"); #if DEBUG Logger.LogWarning("Running test build with debug enabled! If you're seeing this after downloading the mod from Thunderstore, please panic."); #endif Logger.LogDebug("Loading assets..."); using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ClassicItems.classicitems_assets")) { var bundle = AssetBundle.LoadFromStream(stream); var provider = new AssetBundleResourcesProvider("@ClassicItems", bundle); ResourcesAPI.AddProvider(provider); } cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); Logger.LogDebug("Loading global configs..."); globalConfig.BindAll(cfgFile, "ClassicItems", "Global"); globalConfig.ConfigEntryChanged += (sender, args) => { if (args.target.boundProperty.Name == nameof(globalConfig.hSV2NoStomp)) { var toBind = (bool)args.newValue == true; if (toBind && !globalConfig.hSV2Bound) { IL.EntityStates.Headstompers.HeadstompersIdle.FixedUpdate += IL_ESHeadstompersIdleFixedUpdate; } else if (!toBind) { IL.EntityStates.Headstompers.HeadstompersIdle.FixedUpdate -= IL_ESHeadstompersIdleFixedUpdate; } } }; Logger.LogDebug("Instantiating item classes..."); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Classic Items", longIdentifier = "ClassicItems", shortIdentifier = "CI", mainConfigFile = cfgFile }); var itemType = typeof(Item <>); var scep = (Scepter)FormatterServices.GetUninitializedObject(typeof(Scepter)); var embryo = (Embryo)FormatterServices.GetUninitializedObject(typeof(Embryo)); var scepGenType = itemType.MakeGenericType(typeof(Scepter)); var embGenType = itemType.MakeGenericType(typeof(Embryo)); scepGenType.GetProperty("instance", BindingFlags.Public | BindingFlags.Static).GetSetMethod(true).Invoke(null, new[] { scep }); embGenType.GetProperty("instance", BindingFlags.Public | BindingFlags.Static).GetSetMethod(true).Invoke(null, new[] { embryo }); Logger.LogDebug("Loading item configs..."); foreach (CatalogBoilerplate x in masterItemList) { x.SetupConfig(); } Logger.LogDebug("Registering item attributes..."); foreach (CatalogBoilerplate x in masterItemList) { string mpnOvr = null; if (x is Item_V2 item) { mpnOvr = "@ClassicItems:Assets/ClassicItems/models/" + modelNameMap[item.itemTier] + ".prefab"; } else if (x is Equipment_V2 eqp) { mpnOvr = "@ClassicItems:Assets/ClassicItems/models/" + (eqp.isLunar ? "LqpCard.prefab" : "EqpCard.prefab"); } var ipnOvr = "@ClassicItems:Assets/ClassicItems/icons/" + x.name.Replace("_V2", "") + "_icon.png"; if (mpnOvr != null) { typeof(CatalogBoilerplate).GetProperty(nameof(CatalogBoilerplate.modelResourcePath)).SetValue(x, mpnOvr); typeof(CatalogBoilerplate).GetProperty(nameof(CatalogBoilerplate.iconResourcePath)).SetValue(x, ipnOvr); } x.SetupAttributes(); } Logger.LogDebug("Tweaking vanilla stuff..."); //Remove the H3AD-5T V2 state transition from idle to stomp, as Headstompers has similar functionality if (globalConfig.hSV2NoStomp && !globalConfig.hSV2Bound) { globalConfig.hSV2Bound = true; IL.EntityStates.Headstompers.HeadstompersIdle.FixedUpdate += IL_ESHeadstompersIdleFixedUpdate; } On.RoR2.PickupCatalog.Init += On_PickupCatalogInit; On.RoR2.UI.LogBook.LogBookController.BuildPickupEntries += On_LogbookBuildPickupEntries; Language.onCurrentLanguageChanged += Language_onCurrentLanguageChanged; if (globalConfig.spinMod) { IL.RoR2.PickupDisplay.Update += IL_PickupDisplayUpdate; } Logger.LogDebug("Registering shared buffs..."); //used only for purposes of Death Mark; applied by Permafrost and Snowglobe var freezeBuffDef = new CustomBuff(new BuffDef { buffColor = Color.cyan, canStack = false, isDebuff = true, name = "CIFreeze", iconPath = "@ClassicItems:Assets/ClassicItems/icons/permafrost_icon.png" }); freezeBuff = BuffAPI.Add(freezeBuffDef); var fearBuffDef = new CustomBuff(new BuffDef { buffColor = Color.red, canStack = false, isDebuff = true, name = "CIFear", iconPath = "textures/miscicons/texSprintIcon" }); fearBuff = BuffAPI.Add(fearBuffDef); IL.EntityStates.AI.Walker.Combat.UpdateAI += IL_ESAIWalkerCombatUpdateAI; Logger.LogDebug("Registering item behaviors..."); foreach (CatalogBoilerplate x in masterItemList) { x.SetupBehavior(); } Logger.LogDebug("Initial setup done!"); }
private void Awake() { Log = new Log(Logger); Log.Debug("Performing plugin setup:"); #if DEBUG MultiplayerTest.Enable(Logger, "Running test build with debug enabled! Report to CHEN if you're seeing this!"); #endif Log.Debug("Loading assets..."); BundleInfo bundleInfo = new BundleInfo("Chen.ClassicItems.chensclassicitems_assets", BundleType.UnityAssetBundle); assetBundle = new AssetsManager(bundleInfo).Register(); assetBundle.ConvertShaders(); cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); Log.Debug("Loading global configs..."); globalCfg.BindAll(cfgFile, ModName, "Global"); Log.Debug("Instantiating item classes..."); chensItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Chen's Classic Items", longIdentifier = "ChensClassicItems", shortIdentifier = "CCI", mainConfigFile = cfgFile }); Log.Debug("Loading item configs..."); foreach (CatalogBoilerplate x in chensItemList) { x.SetupConfig(); x.ConfigEntryChanged += (sender, args) => { if ((args.flags & AutoConfigUpdateActionTypes.InvalidateLanguage) == 0) { return; } var y = sender as CatalogBoilerplate; if (y.pickupDef != null) { var c = y.pickupDef.displayPrefab; if (!c) { return; } var ctsf = c.transform; var cfront = ctsf.Find("cardfront"); if (!cfront) { return; } cfront.Find("carddesc").GetComponent <TextMeshPro>().text = Language.GetString(longDesc ? y.descToken : y.pickupToken); cfront.Find("cardname").GetComponent <TextMeshPro>().text = Language.GetString(y.nameToken); } if (y.logbookEntry != null) { y.logbookEntry.modelPrefab = y.pickupDef.displayPrefab; } }; } Log.Debug("Registering item attributes..."); foreach (CatalogBoilerplate x in chensItemList) { string mpnOvr = null; if (x is Item item) { mpnOvr = "Assets/ClassicItems/models/" + modelNameMap[item.itemTier] + ".prefab"; } else if (x is Equipment eqp) { mpnOvr = "Assets/ClassicItems/models/" + (eqp.isLunar ? "LqpCard.prefab" : "EqpCard.prefab"); } var ipnOvr = "Assets/ClassicItems/icons/" + x.name + "_icon.png"; if (mpnOvr != null) { typeof(CatalogBoilerplate).GetProperty(nameof(CatalogBoilerplate.modelResource)).SetValue(x, assetBundle.LoadAsset <GameObject>(mpnOvr)); typeof(CatalogBoilerplate).GetProperty(nameof(CatalogBoilerplate.iconResource)).SetValue(x, assetBundle.LoadAsset <Sprite>(ipnOvr)); } x.SetupAttributes(); } Log.Debug("Registering item behaviors..."); foreach (CatalogBoilerplate x in chensItemList) { x.SetupBehavior(); } Log.Debug("Performing early finalization..."); T2Module.SetupAll_PluginStart(chensItemList); new ContentProvider().Initialize(); if (globalCfg.logEvolutionItemList) { RunArtifactManager.onArtifactEnabledGlobal += OnEvolutionEnable; RunArtifactManager.onArtifactDisabledGlobal += OnEvolutionDisable; } Log.Debug("Initial setup done!"); }
private void Awake() { _logger = Logger; Logger.LogDebug("Performing plugin setup:"); Logger.LogDebug("Loading assets..."); using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ClassicItems.classicitems_assets")) { resources = AssetBundle.LoadFromStream(stream); } cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true); Logger.LogDebug("Loading global configs..."); globalConfig.BindAll(cfgFile, "ClassicItems", "Global"); Logger.LogDebug("Instantiating item classes..."); masterItemList = T2Module.InitAll <CatalogBoilerplate>(new T2Module.ModInfo { displayName = "Classic Items", longIdentifier = "ClassicItems", shortIdentifier = "CI", mainConfigFile = cfgFile }); Logger.LogDebug("Loading item configs..."); foreach (CatalogBoilerplate x in masterItemList) { x.SetupConfig(); } Logger.LogDebug("Registering item attributes..."); foreach (CatalogBoilerplate x in masterItemList) { x.SetupAttributes(); } Logger.LogDebug("Registering shared buffs..."); //used only for purposes of Death Mark; applied by Permafrost and Snowglobe freezeBuff = ScriptableObject.CreateInstance <BuffDef>(); freezeBuff.buffColor = Color.cyan; freezeBuff.canStack = false; freezeBuff.isDebuff = true; freezeBuff.name = "CIFreeze"; freezeBuff.iconSprite = resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ClassicIcons/permafrost_icon.png"); ContentAddition.AddBuffDef(freezeBuff); fearBuff = ScriptableObject.CreateInstance <BuffDef>(); fearBuff.buffColor = Color.red; fearBuff.canStack = false; fearBuff.isDebuff = true; fearBuff.name = "CIFear"; fearBuff.iconSprite = LegacyResourcesAPI.Load <Sprite>("textures/miscicons/texSprintIcon"); ContentAddition.AddBuffDef(fearBuff); IL.EntityStates.AI.Walker.Combat.UpdateAI += IL_ESAIWalkerCombatUpdateAI; Logger.LogDebug("Registering item behaviors..."); foreach (CatalogBoilerplate x in masterItemList) { x.SetupBehavior(); } Logger.LogDebug("Initial setup done!"); }