public static void RegisterFloraFabricator(List <IDecorationItem> decorationItems) { Logger.Log("Creating flora craft tree..."); CustomCraftTreeRoot customTreeRootNode = CreateFloraTree(out CraftTree.Type craftType, decorationItems); FloraTreeType = craftType; Logger.Log("Registering flora fabricator..."); // Create a new TechType for the fabricator FloraFabTechType = TechTypePatcher.AddTechType(FloraFabID, LanguageHelper.GetFriendlyWord("FloraFabricatorName"), LanguageHelper.GetFriendlyWord("FloraFabricatorDescription"), true); // Add new TechType to the buildables (Interior Module group) CraftDataPatcher.customBuildables.Add(FloraFabTechType); CraftDataPatcher.AddToCustomGroup(TechGroup.InteriorModules, TechCategory.InteriorModule, FloraFabTechType); // Set buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(FloraFabID, $"Submarine/Build/{FloraFabID}", FloraFabTechType, GetFloraFabPrefab)); // Set custom sprite for the Habitat Builder Tool menu CustomSpriteHandler.customSprites.Add(new CustomSprite(FloraFabTechType, AssetsHelper.Assets.LoadAsset <Sprite>("fabricator_icon_green"))); // Create and associate recipe to the new TechType var customFabRecipe = new TechDataHelper() { _craftAmount = 1, _ingredients = new List <IngredientHelper>(new IngredientHelper[4] { new IngredientHelper(TechType.Titanium, 1), new IngredientHelper(TechType.ComputerChip, 1), new IngredientHelper(TechType.Kyanite, 1), new IngredientHelper(TechType.PrecursorIonCrystal, 1) }), _techType = FloraFabTechType }; CraftDataPatcher.customTechData[FloraFabTechType] = customFabRecipe; }
public override void RegisterItem() { if (this.IsRegistered == false) { this.CargoCrateContainer = Resources.Load <GameObject>("Submarine/Build/Locker"); // Add model controler var decorativeLockerController = this.GameObject.AddComponent <DecorativeLockerController>(); // Add to the custom buidables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab)); // Set the custom icon CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, new Atlas.Sprite(ImageUtils.LoadTextureFromFile("./QMods/DecorationsMod/Assets/decorativelockerdooricon.png")))); //AssetsHelper.Assets.LoadAsset<Sprite>("decorativelockericon"))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public override void RegisterItem() { if (this.IsRegistered == false) { if (ConfigSwitcher.MarkiDoll1_asBuildable) { // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); } else { // Add the new TechType to the hand-equipments CraftDataPatcher.customEquipmentTypes.Add(this.TechType, EquipmentType.Hand); } // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab)); // Set the custom icon CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, SpriteManager.Get(TechType.Marki1))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public override void RegisterItem() { if (this.IsRegistered == false) { normal = AssetsHelper.Assets.LoadAsset <Texture>("descent_bar_sofa_01_normal"); spec = AssetsHelper.Assets.LoadAsset <Texture>("descent_bar_sofa_01_spec"); if (ConfigSwitcher.SofaStr1_asBuidable) { // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); } else { // Set item occupies 4 slots CraftDataPatcher.customItemSizes[this.TechType] = new Vector2int(2, 2); // Add the new TechType to Hand Equipment type. CraftDataPatcher.customEquipmentTypes.Add(this.TechType, EquipmentType.Hand); } // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, DecorationItem.DefaultResourcePath + this.ClassID, this.TechType, this.GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("sofastr01icon"))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public override void RegisterItem() { if (this.IsRegistered == false) { if (ConfigSwitcher.EmptyDesk_asBuildable) { // Add to the custom buidables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); } else { // Set item occupies 4 slots CraftDataPatcher.customItemSizes[this.TechType] = new Vector2int(2, 2); // Add the new TechType to the hand-equipments CraftDataPatcher.customEquipmentTypes.Add(this.TechType, EquipmentType.Hand); } // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab)); // Set the custom icon CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("deskemptyicon"))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public static void PostPatch() { FishPatcher.Patch(harmony); TechTypePatcher.Patch(); CraftTreeTypePatcher.Patch(); PingTypePatcher.Patch(); EnumPatcher.Patch(harmony); CraftDataPatcher.Patch(harmony); CraftTreePatcher.Patch(harmony); ConsoleCommandsPatcher.Patch(harmony); LanguagePatcher.Patch(harmony); PrefabDatabasePatcher.PostPatch(harmony); SpritePatcher.Patch(); KnownTechPatcher.Patch(harmony); BioReactorPatcher.Patch(); OptionsPanelPatcher.Patch(harmony); ItemsContainerPatcher.Patch(harmony); PDAPatcher.Patch(harmony); PDAEncyclopediaPatcher.Patch(harmony); ItemActionPatcher.Patch(harmony); LootDistributionPatcher.Patch(harmony); WorldEntityDatabasePatcher.Patch(harmony); IngameMenuPatcher.Patch(harmony); TooltipPatcher.Patch(harmony); Logger.Debug("Saving TechType Cache"); TechTypePatcher.cacheManager.SaveCache(); Logger.Debug("Saving CraftTreeType Cache"); CraftTreeTypePatcher.cacheManager.SaveCache(); }
public override void RegisterItem() { if (this.IsRegistered == false) { posterMagnetObj = AssetsHelper.Assets.LoadAsset <GameObject>("poster_kitty"); normal = AssetsHelper.Assets.LoadAsset <Texture>("poster_magnet_normal"); illum = AssetsHelper.Assets.LoadAsset <Texture>("poster_magnet_illum"); // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, DecorationItem.DefaultResourcePath + this.ClassID, this.TechType, this.GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("revertpictureframe"))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; // Override OnHandHover var pictureFrameType = typeof(PictureFrame); var onHandHoverMethod = pictureFrameType.GetMethod("OnHandHover", BindingFlags.Public | BindingFlags.Instance); var postfix = typeof(PictureFramePatch).GetMethod("OnHandHover_Postfix", BindingFlags.Public | BindingFlags.Static); DecorationsMod.HarmonyInstance.Patch(onHandHoverMethod, null, new HarmonyMethod(postfix)); // Override OnHandClick var onHandClickMethod = pictureFrameType.GetMethod("OnHandClick", BindingFlags.Public | BindingFlags.Instance); var prefix = typeof(PictureFramePatch).GetMethod("OnHandClick_Prefix", BindingFlags.Public | BindingFlags.Static); DecorationsMod.HarmonyInstance.Patch(onHandClickMethod, new HarmonyMethod(prefix), null); this.IsRegistered = true; } }
public static void Patch() { harmony = HarmonyInstance.Create("com.ahk1221.smlhelper"); TechTypePatcher.Patch(harmony); CraftDataPatcher.Patch(harmony); CraftTreePatcher.Patch(harmony); DevConsolePatcher.Patch(harmony); LanguagePatcher.Patch(harmony); ResourcesPatcher.Patch(harmony); PrefabDatabasePatcher.Patch(harmony); SpritePatcher.Patch(harmony); }
public static void PostPatch() { FishPatcher.Patch(harmony); TechTypePatcher.Patch(); CraftTreeTypePatcher.Patch(); PingTypePatcher.Patch(); TechCategoryPatcher.Patch(); TechGroupPatcher.Patch(); BackgroundTypePatcher.Patch(); EquipmentTypePatcher.Patch(); EnumPatcher.Patch(harmony); CraftDataPatcher.Patch(harmony); CraftTreePatcher.Patch(harmony); ConsoleCommandsPatcher.Patch(harmony); LanguagePatcher.Patch(harmony); PrefabDatabasePatcher.PostPatch(harmony); SpritePatcher.Patch(harmony); KnownTechPatcher.Patch(harmony); BioReactorPatcher.Patch(); OptionsPanelPatcher.Patch(harmony); ItemsContainerPatcher.Patch(harmony); PDALogPatcher.Patch(harmony); PDAPatcher.Patch(harmony); PDAEncyclopediaPatcher.Patch(harmony); ItemActionPatcher.Patch(harmony); LootDistributionPatcher.Patch(harmony); WorldEntityDatabasePatcher.Patch(harmony); LargeWorldStreamerPatcher.Patch(harmony); IngameMenuPatcher.Patch(harmony); TooltipPatcher.Patch(harmony); SurvivalPatcher.Patch(harmony); CustomSoundPatcher.Patch(harmony); Logger.Debug("Saving TechType Cache"); TechTypePatcher.cacheManager.SaveCache(); Logger.Debug("Saving CraftTreeType Cache"); CraftTreeTypePatcher.cacheManager.SaveCache(); Logger.Debug("Saving PingType Cache"); PingTypePatcher.cacheManager.SaveCache(); }
internal static void Initialize() { CustomFishPatcher.Patch(harmony); TechTypePatcher.Patch(harmony); CraftTreeTypePatcher.Patch(harmony); CraftDataPatcher.Patch(harmony); CraftTreePatcher.Patch(harmony); DevConsolePatcher.Patch(harmony); LanguagePatcher.Patch(harmony); ResourcesPatcher.Patch(harmony); PrefabDatabasePatcher.Patch(harmony); SpritePatcher.Patch(); KnownTechPatcher.Patch(harmony); BioReactorPatcher.Patch(harmony); OptionsPanelPatcher.Patch(harmony); ItemsContainerPatcher.Patch(harmony); PDAPatcher.Patch(harmony); ItemActionPatcher.Patch(harmony); }
public override void RegisterItem() { if (this.IsRegistered == false) { // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, DecorationItem.DefaultResourcePath + this.ClassID, this.TechType, this.GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, new Atlas.Sprite(ImageUtils.LoadTextureFromFile("./QMods/DecorationsMod/Assets/benchmediumicon.png")))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public override void RegisterItem() { if (this.IsRegistered == false) { // Add to the custom buidables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.InteriorModules, TechCategory.InteriorModule, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab)); // Set the custom icon CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, new Atlas.Sprite(ImageUtils.LoadTextureFromFile("./QMods/DecorationsMod/Assets/longplanterbox.png")))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public static void Patch() { harmony = HarmonyInstance.Create("com.ahk1221.smlhelper"); try { TechTypePatcher.Patch(harmony); CraftDataPatcher.Patch(harmony); CraftTreePatcher.Patch(harmony); DevConsolePatcher.Patch(harmony); LanguagePatcher.Patch(harmony); ResourcesPatcher.Patch(harmony); PrefabDatabasePatcher.Patch(harmony); SpritePatcher.Patch(harmony); KnownTechPatcher.Patch(harmony); } catch (Exception e) { Console.WriteLine(e.StackTrace); } }
private static void Initialize() { var harmony = HarmonyInstance.Create("com.ahk1221.smlhelper"); FishPatcher.Patch(harmony); TechTypePatcher.Patch(); CraftTreeTypePatcher.Patch(); PingTypePatcher.Patch(); EnumPatcher.Patch(harmony); CraftDataPatcher.Patch(harmony); CraftTreePatcher.Patch(harmony); DevConsolePatcher.Patch(harmony); LanguagePatcher.Patch(harmony); PrefabDatabasePatcher.Patch(harmony); SpritePatcher.Patch(); KnownTechPatcher.Patch(harmony); BioReactorPatcher.Patch(harmony); OptionsPanelPatcher.Patch(harmony); ItemsContainerPatcher.Patch(harmony); PDAPatcher.Patch(harmony); PDAEncyclopediaPatcher.Patch(harmony); ItemActionPatcher.Patch(harmony); LootDistributionPatcher.Patch(harmony); WorldEntityDatabasePatcher.Patch(harmony); IngameMenuPatcher.Patch(harmony); TooltipPatcher.Patch(harmony); Logger.Debug("Saving TechType Cache"); TechTypePatcher.cacheManager.SaveCache(); Logger.Debug("Saving CraftTreeType Cache"); CraftTreeTypePatcher.cacheManager.SaveCache(); }
/// <summary> /// Loads a custom item /// </summary> /// <param name="name">Item's internal name</param> /// <param name="languageName">Item's display name</param> /// <param name="languageTooltip">Item's tooltip</param> /// <param name="from">Item's ingredient</param> /// <param name="fromstring">Item's ingredient's name</param> /// <param name="inassetbundles">What assetbundle the sprite of the item is in</param> /// <param name="assetPath">The name of the sprite</param> /// <param name="alt_assetPath">The name of the alternative sprite</param> public static void Custom(string name, string languageName, string languageTooltip, TechType from, string alt_assetPath, string assetPath, InAssetBundles inassetbundles = InAssetBundles.All) { try { var _x = 1; var _y = 1; var _a = 10; var _e = true; var Config = MI.Config.cfgfile; var moreingots = Load.moreingots; var ingotsplus = Load.ingotsplus; var moreingots_salt = Load.moreingots_salt; var ingotsplus_salt = Load.ingotsplus_salt; var fromstring = from.ToString(); Config.TryGet(ref _x, languageName, "Size", "x"); Config.TryGet(ref _y, languageName, "Size", "y"); Config.TryGet(ref _a, languageName, "Craft amount"); Config.TryGet(ref _e, languageName, "Enabled"); Log.Debug(languageName, Status.Start); if (_e == false) { Log.Debug(languageName, "Item is disabled"); return; } Log.Debug(languageName, "Checking config data for errors... (0/6)"); if (_x <= 0) { _x = 1; Config[languageName, "Size", "x"] = _x; Log.Warning(languageName, "X can't be less than 1"); Log.Info(languageName, "X was set to 1"); } Log.Debug(languageName, "Checking config data for errors... (1/6)"); if (_x > 6) { _x = 1; Config[languageName, "Size", "x"] = _x; Log.Warning(languageName, "X can't be greater than 6"); Log.Info(languageName, "X was set to 1"); } Log.Debug(languageName, "Checking config data for errors... (2/6)"); if (_y <= 0) { _y = 1; Config[languageName, "Size", "y"] = _y; Log.Warning(languageName, "Y can't be less than 1"); Log.Info(languageName, "Y was set to 1"); } Log.Debug(languageName, "Checking config data for errors... (3/6)"); if (_y > 8) { _y = 1; Config[languageName, "Size", "y"] = _y; Log.Warning(languageName, "Y can't be greater than 8"); Log.Info(languageName, "Y was set to 1"); } Log.Debug(languageName, "Checking config data for errors... (4/6)"); if (_a <= 0) { _a = 10; Config[languageName, "Craft amount"] = _a; Log.Warning(languageName, "Craft amount can't be less than 1"); Log.Info(languageName, "Craft amount was set to 10"); } Log.Debug(languageName, "Checking config data for errors... (5/6)"); if (_a > 10) { _a = 10; Config[languageName, "Craft amount"] = _a; Log.Warning(languageName, "Craft amount can't be greater than 10"); Log.Info(languageName, "Craft amount was set to 10"); } Log.Debug(languageName, "Checking config data for errors... (6/6)"); Log.Debug(languageName, "Error check complete"); MI.Config.Save(languageName); Log.Debug(languageName, "Adding TechType..."); var techType = TechTypePatcher.AddTechType(name, languageName, languageTooltip); Log.Debug(languageName, "TechType added"); Log.Debug(languageName, "Loading TechDatas... (0/2)"); var techData = new TechDataHelper { _craftAmount = 1, _ingredients = new List <IngredientHelper>() { new IngredientHelper(from, _a) }, _techType = techType }; Log.Debug(languageName, "Loading TechDatas... (1/2)"); var techDataB = new TechDataHelper { _craftAmount = _a, _ingredients = new List <IngredientHelper>() { new IngredientHelper(techType, 1) }, _techType = from }; Log.Debug(languageName, "Loading TechDatas... (2/2)"); Log.Debug(languageName, "TechDatas loaded"); Log.Debug(languageName, "Adding unlock on start for " + from + "..."); KnownTechPatcher.unlockedAtStart.Add(from); Log.Debug(languageName, "Unlock on start added for " + from); Log.Debug(languageName, "Adding TechTypes to the PDA Databank... (0/2)"); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.BasicMaterials, techType); Log.Debug(languageName, "Adding TechTypes to the PDA Databank... (1/2)"); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.BasicMaterials, from); Log.Debug(languageName, "Adding TechTypes to the PDA Databank... (2/2)"); Log.Debug(languageName, "TechTypes added to the PDA Databank"); Log.Debug(languageName, "Linking TechDatas with TechTypes... (0/2)"); CraftDataPatcher.customTechData.Add(techType, techData); Log.Debug(languageName, "Linking TechDatas with TechTypes... (1/2)"); CraftDataPatcher.customTechData.Add(from, techDataB); Log.Debug(languageName, "Linking TechDatas with TechTypes... (2/2)"); Log.Debug(languageName, "TechDatas linked with TechTypes"); Log.Debug(languageName, "Adding Fabricator nodes... (0/2)"); CraftTreePatcher.customNodes.Add(new CustomCraftNode(techType, CraftScheme.Fabricator, "Resources/Craft/" + name)); Log.Debug(languageName, "Adding Fabricator nodes... (1/2)"); CraftTreePatcher.customNodes.Add(new CustomCraftNode(from, CraftScheme.Fabricator, "Resources/Unpack/" + fromstring)); Log.Debug(languageName, "Adding Fabricator nodes... (2/2)"); Log.Debug(languageName, "Fabricator nodes added"); Log.Debug(languageName, "Applying item sizes..."); CraftDataPatcher.customItemSizes[key : techType] = new Vector2int(_x, _y); Log.Debug(languageName, "Item sizes applied"); Log.Debug(languageName, "Starting sprite loading..."); if (inassetbundles == InAssetBundles.All) { if (MI.Config._alttextures) { Log.Debug(languageName, "Asset bundle \"moreingots\" selected"); Log.Debug(languageName, "Obtaining sprite..."); if (moreingots.LoadAsset <Sprite>(alt_assetPath) == null) { Log.Error(languageName, "Sprite is null"); Log.Debug(languageName, Status.Stop); return; } var alt_sprite = moreingots.LoadAsset <Sprite>(alt_assetPath); Log.Debug(languageName, "Sprite obtained"); Log.Debug(languageName, "Applying sprite..."); CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, alt_sprite)); Log.Debug(languageName, "Sprite applied"); } else { Log.Debug(languageName, "Asset bundle \"yenzen-ingotsplus\" selected"); Log.Debug(languageName, "Obtaining sprite..."); if (ingotsplus.LoadAsset <Sprite>(assetPath) == null) { Log.Error(languageName, "Sprite is null"); Log.Debug(languageName, Status.Stop); return; } var sprite = ingotsplus.LoadAsset <Sprite>(assetPath); Log.Debug(languageName, "Sprite obtained"); Log.Debug(languageName, "Applying sprite..."); CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, sprite)); Log.Debug(languageName, "Sprite applied"); } } if (inassetbundles == InAssetBundles.Salt) { if (MI.Config._alttextures) { Log.Debug(languageName, "Asset bundle \"salt-alexejheroytb\" selected"); Log.Debug(languageName, "Obtaining sprite..."); if (moreingots_salt.LoadAsset <Sprite>(alt_assetPath) == null) { Log.Error(languageName, "Sprite is null"); Log.Debug(languageName, Status.Stop); return; } var alt_sprite = moreingots_salt.LoadAsset <Sprite>(alt_assetPath); Log.Debug(languageName, "Sprite obtained"); Log.Debug(languageName, "Applying sprite..."); CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, alt_sprite)); Log.Debug(languageName, "Sprite applied"); } else { Log.Debug(languageName, "Asset bundle \"salt-yenzen\" selected"); Log.Debug(languageName, "Obtaining sprite..."); if (ingotsplus_salt.LoadAsset <Sprite>(assetPath) == null) { Log.Error(languageName, "Sprite is null"); Log.Debug(languageName, Status.Stop); return; } var sprite = ingotsplus_salt.LoadAsset <Sprite>(assetPath); Log.Debug(languageName, "Sprite obtained"); Log.Debug(languageName, "Applying sprite..."); CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, sprite)); Log.Debug(languageName, "Sprite applied"); } } if (inassetbundles == InAssetBundles.Sulphur) { Log.Debug(languageName, "Asset bundle \"sulphur\" selected"); Log.Debug(languageName, "Obtaining sprite..."); if (sulphur.LoadAsset <Sprite>(assetPath) == null) { Log.Error(languageName, "Sprite is null"); Log.Debug(languageName, Status.Stop); return; } var s_sprite = sulphur.LoadAsset <Sprite>(assetPath); Log.Debug(languageName, "Sprite obtained"); Log.Debug(languageName, "Applying sprite..."); CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, s_sprite)); Log.Debug(languageName, "Sprite applied"); } Log.Debug(languageName, Status.Stop); } catch (Exception e) { Log.e(e); } }
/// <summary> /// Allows you to add items to the game's internal grouping system. /// Required if you want to make buildable items show up in the Habitat Builder or show in the Blueprints Tab of the PDA. /// </summary> /// <param name="group">The TechGroup you want to add your TechType to.</param> /// <param name="category">The TechCategory (in the TechGroup) you want to add your TechType to.</param> /// <param name="techType">The TechType you want to add.</param> /// <param name="after">Added TechType will be added after this TechType, for sorting purposes.</param> void ICraftDataHandler.AddToGroup(TechGroup group, TechCategory category, TechType techType, TechType after) { CraftDataPatcher.AddToCustomGroup(group, category, techType, after); }
/// <summary> /// Loads an item /// </summary> /// <param name="typ">Must be "Juice" or "Cake"</param> /// <param name="numbr">Must be between 1 and 8</param> public static void Load(string typ, int numbr) { try { var _enabled = true; var _name = "Name"; var _tooltip = "Tooltip"; var _foodvalue = 1; var _watervalue = 1; var _ingredient1 = "None"; var _ingredient1amount = 1; var _ingredient2 = "None"; var _ingredient2amount = 1; var _ingredient3 = "None"; var _ingredient3amount = 1; var _ingredient4 = "None"; var _ingredient4amount = 1; var _ingredient5 = "None"; var _ingredient5amount = 1; var _x = 1; var _y = 1; var number = numbr.ToString(); type = typ + "s"; name = typ + number; var internal_name = "Custom" + name; var _sprite = "Default"; var prefabpath = "WorldEntities/Food/" + internal_name; Config.TryGet(ref _enabled, type, name, "Enabled"); Config.TryGet(ref _name, type, name, "Name"); Config.TryGet(ref _tooltip, type, name, "Tooltip"); Config.TryGet(ref _foodvalue, type, name, "Values", "Food"); Config.TryGet(ref _watervalue, type, name, "Values", "Water"); Config.TryGet(ref _ingredient1, type, name, "Ingredients", "Ingredient1", "Item"); Config.TryGet(ref _ingredient1amount, type, name, "Ingredients", "Ingredient1", "Amount"); Config.TryGet(ref _ingredient2, type, name, "Ingredients", "Ingredient2", "Item"); Config.TryGet(ref _ingredient2amount, type, name, "Ingredients", "Ingredient2", "Amount"); Config.TryGet(ref _ingredient3, type, name, "Ingredients", "Ingredient3", "Item"); Config.TryGet(ref _ingredient3amount, type, name, "Ingredients", "Ingredient3", "Amount"); Config.TryGet(ref _ingredient4, type, name, "Ingredients", "Ingredient4", "Item"); Config.TryGet(ref _ingredient4amount, type, name, "Ingredients", "Ingredient4", "Amount"); Config.TryGet(ref _ingredient5, type, name, "Ingredients", "Ingredient5", "Item"); Config.TryGet(ref _ingredient5amount, type, name, "Ingredients", "Ingredient5", "Amount"); Config.TryGet(ref _x, type, name, "Size", "X"); Config.TryGet(ref _y, type, name, "Size", "Y"); Config.TryGet(ref _sprite, type, name, configColorPath); Log.Debug("Started loading " + name); if (_enabled == false) { return; } if (_name == "") { _name = "Name can't be blank"; Config[type, name, "Name"] = _name; Log.Warning(name, "Name can't be blank"); Log.Info(name, "Name was set to 'Name can't be blank'"); } if (_x < 1) { _x = 1; Config[type, name, "Size", "X"] = _x; Log.Warning(name, "X Size can't be less than 1"); Log.Info(name, "X was set to 1"); } if (_x > 6) { _x = 1; Config[type, name, "Size", "X"] = _x; Log.Warning(name, "X Size can't be greater than 6"); Log.Info(name, "X was set to 1"); } if (_y < 1) { _y = 1; Config[type, name, "Size", "Y"] = _y; Log.Warning(name, "Y Size can't be less than 1"); Log.Info(name, "Y was set to 1"); } if (_y > 8) { _y = 1; Config[type, name, "Size", "Y"] = _y; Log.Warning(name, "Y Size can't be greater than 8"); Log.Info(name, "Y was set to 1"); } CheckIngredients(_ingredient1, _ingredient1amount, 1); CheckIngredients(_ingredient2, _ingredient2amount, 2); CheckIngredients(_ingredient3, _ingredient3amount, 3); CheckIngredients(_ingredient4, _ingredient4amount, 4); CheckIngredients(_ingredient5, _ingredient5amount, 5); Cfg.Save(); techType = TechTypePatcher.AddTechType(internal_name, _name, _tooltip + Cfg._tooltipsuffix); if (name == "Juice1") { _juice1tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice1)); } if (name == "Juice2") { _juice2tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice2)); } if (name == "Juice3") { _juice3tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice3)); } if (name == "Juice4") { _juice4tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice4)); } if (name == "Juice5") { _juice5tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice5)); } if (name == "Juice6") { _juice6tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice6)); } if (name == "Juice7") { _juice7tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice7)); } if (name == "Juice8") { _juice8tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Juice8)); } if (name == "Cake1") { _cake1tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake1)); } if (name == "Cake2") { _cake2tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake2)); } if (name == "Cake3") { _cake3tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake3)); } if (name == "Cake4") { _cake4tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake4)); } if (name == "Cake5") { _cake5tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake5)); } if (name == "Cake6") { _cake6tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake6)); } if (name == "Cake7") { _cake7tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake7)); } if (name == "Cake8") { _cake8tt = techType; CustomPrefabHandler.customPrefabs.Add(new CustomPrefab( internal_name, prefabpath, techType, GetGameObject.Cake8)); } ApplyTechData(); KnownTechPatcher.unlockedAtStart.Add(techType); if (type == "Cakes") { ApplySprite.Cake(techType, _sprite); CraftTreePatcher.customNodes.Add(new CustomCraftNode(techType, CraftScheme.Fabricator, "Survival/Cakes/" + internal_name)); CraftDataPatcher.AddToCustomGroup(TechGroup.Survival, TechCategory.CuredFood, techType); } if (type == "Juices") { ApplySprite.Juice(techType, _sprite); CraftTreePatcher.customNodes.Add(new CustomCraftNode(techType, CraftScheme.Fabricator, "Survival/Juices/" + internal_name)); CraftDataPatcher.AddToCustomGroup(TechGroup.Survival, TechCategory.Water, techType); } CraftDataPatcher.customItemSizes[key : techType] = new Vector2int(_x, _y); ingredients.Clear(); Log.Debug("Finished loading " + name); } catch (Exception e) { Log.e(e); } }
public override void RegisterItem() { if (this.IsRegistered == false) { this.CargoCrateContainer = Resources.Load <GameObject>("Submarine/Build/Locker"); GameObject model = this.GameObject.FindChild("cargobox01a"); // Set tech tag var techTag = this.GameObject.AddComponent <TechTag>(); techTag.type = this.TechType; // Add prefab identifier this.GameObject.AddComponent <PrefabIdentifier>().ClassId = this.ClassID; // Add collider var collider = this.GameObject.AddComponent <BoxCollider>(); collider.size = new Vector3(0.132f, 0.288f, 0.16f); collider.center = new Vector3(collider.center.x, collider.center.y - 0.01f, collider.center.z - 0.04f); // Set proper shaders (for crafting animation) Shader marmosetUber = Shader.Find("MarmosetUBER"); Texture normal = AssetsHelper.Assets.LoadAsset <Texture>("Starship_cargo_normal"); var renderers = this.GameObject.GetComponentsInChildren <Renderer>(); foreach (Renderer rend in renderers) { foreach (Material tmpMat in rend.materials) { tmpMat.shader = marmosetUber; if (tmpMat.name.CompareTo("Starship_cargo (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal); tmpMat.EnableKeyword("MARMO_NORMALMAP"); } } } // Add large world entity this.GameObject.AddComponent <LargeWorldEntity>().cellLevel = LargeWorldEntity.CellLevel.Near; // Add sky applier var applier = this.GameObject.AddComponent <SkyApplier>(); applier.renderers = renderers; applier.anchorSky = Skies.Auto; // Add contructable var constructible = this.GameObject.AddComponent <Constructable>(); constructible.allowedInBase = true; constructible.allowedInSub = true; constructible.allowedOutside = true; constructible.allowedOnCeiling = false; constructible.allowedOnGround = true; constructible.allowedOnConstructables = true; constructible.controlModelState = true; constructible.deconstructionAllowed = true; constructible.rotationEnabled = true; constructible.model = model; constructible.techType = this.TechType; constructible.enabled = true; // Add constructable bounds var bounds = this.GameObject.AddComponent <ConstructableBounds>(); // Add model controler var cargoBoxController = this.GameObject.AddComponent <CargoBoxController>(); // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, this.ResourcePath, this.TechType, GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("cargobox01aicon"))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public static void Patch() { Logger.ClearCustomLog(); Logger.Debug("Loading start..."); var ab = AssetBundle.LoadFromFile( $"./QMods/{Assembly.GetExecutingAssembly().GetName().Name}/testing.assets"); Logger.Debug("Bundle name: " + ab.name); var cube = ab.LoadAsset <GameObject>("Cube"); Logger.Debug("Cube name: " + cube.name); Utility.AddBasicComponents(ref cube, "Cube"); Logger.Debug("BasicComponents added!"); var techType = TechTypePatcher.AddTechType("Cube", "Cube", "Just a funny cube"); Logger.Debug("TechType created!"); var constructable = cube.AddComponent <Constructable>(); constructable.allowedInBase = true; constructable.allowedOnGround = true; constructable.allowedInSub = true; constructable.allowedOnCeiling = false; constructable.allowedOnConstructables = true; constructable.allowedOnWall = true; constructable.allowedOutside = true; constructable.techType = techType; var model = cube.FindChild("Sphere"); constructable.model = model; var modelname = model?.name ?? "NULL"; Logger.Debug($"Constructable added! Model: {modelname}"); var techTag = cube.AddComponent <TechTag>(); techTag.type = techType; Logger.Debug("techTag added!"); var rb = cube.GetComponent <Rigidbody>(); Object.DestroyImmediate(rb); Logger.Debug("Rigitbody killed!"); CustomPrefabHandler.customPrefabs.Add(new CustomPrefab("Cube", "Submarine/Build/Cube", cube, techType)); Logger.Debug("Customprefab added!"); var techData = new TechDataHelper { _ingredients = new List <IngredientHelper>() { new IngredientHelper(TechType.Titanium, 1) }, _techType = techType }; Logger.Debug("techData added!"); CraftDataPatcher.customTechData.Add(techType, techData); Logger.Debug("techData added to custom list!"); CraftDataPatcher.customBuildables.Add(techType); Logger.Debug("techType added to custom Buildables!"); CraftDataPatcher.AddToCustomGroup(TechGroup.InteriorModules, TechCategory.InteriorModule, techType); Logger.Debug("techType added to the groups!"); }
public override void RegisterItem() { if (this.IsRegistered == false) { // Move model GameObject model = this.GameObject.FindChild("Model"); model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y + 0.032f, model.transform.localPosition.z); // Add prefab identifier var prefabId = this.GameObject.AddComponent <PrefabIdentifier>(); prefabId.ClassId = this.ClassID; // Add large world entity var lwe = this.GameObject.AddComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Near; // Add tech tag var techTag = this.GameObject.AddComponent <TechTag>(); techTag.type = this.TechType; // Add collider var collider = this.GameObject.AddComponent <BoxCollider>(); collider.size = new Vector3(0.07f, 0.054f, 0.07f); collider.center = new Vector3(collider.center.x, collider.center.y + 0.027f, collider.center.z); // Set proper shaders (for crafting animation) Shader marmosetUber = Shader.Find("MarmosetUBER"); Texture normal1 = AssetsHelper.Assets.LoadAsset <Texture>("power_cell_01_normal"); Texture spec1 = AssetsHelper.Assets.LoadAsset <Texture>("power_cell_01_spec"); Texture illum1 = AssetsHelper.Assets.LoadAsset <Texture>("power_cell_01_illum"); Texture normal2 = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_normal"); Texture spec2 = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_spec"); Texture illum2 = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_illum"); Texture normal3 = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_indoor_normal"); Texture illum3 = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_indoor_illum"); Texture normal4 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_storage_01_normal"); Texture normal5 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_storage_02_normal"); Texture illum5 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_storage_02_illum"); Texture normal6 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_power_cell_slot_01_normal"); Texture spec6 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_power_cell_slot_01_spec"); Texture normal7 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_normal"); Texture spec7 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_spec"); Texture normal8 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_hatch_01_normal"); Texture spec8 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_hatch_01_spec"); var renderers = this.GameObject.GetComponentsInChildren <Renderer>(); if (renderers.Length > 0) { foreach (Renderer rend in renderers) { if (rend.materials.Length > 0) { foreach (Material tmpMat in rend.materials) { if (tmpMat.name.CompareTo("Submersible_SeaMoth_Glass (Instance)") != 0 && tmpMat.name.CompareTo("Submersible_SeaMoth_Glass_interior (Instance)") != 0) { tmpMat.shader = marmosetUber; if (tmpMat.name.CompareTo("power_cell_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal1); tmpMat.SetTexture("_SpecTex", spec1); tmpMat.SetTexture("_Illum", illum1); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("Submersible_SeaMoth (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal2); tmpMat.SetTexture("_SpecTex", spec2); tmpMat.SetTexture("_Illum", illum2); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("Submersible_SeaMoth_indoor (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal3); tmpMat.SetTexture("_Illum", illum3); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("seamoth_storage_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal4); tmpMat.EnableKeyword("MARMO_NORMALMAP"); } else if (tmpMat.name.CompareTo("seamoth_storage_02 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal5); tmpMat.SetTexture("_Illum", illum5); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible tmpMat.EnableKeyword("MARMO_NORMALMAP"); tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("seamoth_power_cell_slot_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal6); tmpMat.SetTexture("_SpecTex", spec6); tmpMat.EnableKeyword("MARMO_NORMALMAP"); } else if (tmpMat.name.CompareTo("seamoth_torpedo_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal7); tmpMat.SetTexture("_SpecTex", spec7); tmpMat.EnableKeyword("MARMO_NORMALMAP"); } else if (tmpMat.name.CompareTo("seamoth_torpedo_01_hatch_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal8); tmpMat.SetTexture("_SpecTex", spec8); tmpMat.EnableKeyword("MARMO_NORMALMAP"); } } } } } } // Add contructable Constructable constructable = this.GameObject.AddComponent <Constructable>(); constructable.allowedInBase = true; constructable.allowedInSub = true; constructable.allowedOutside = true; constructable.allowedOnCeiling = false; constructable.allowedOnGround = true; constructable.allowedOnConstructables = true; constructable.controlModelState = true; constructable.deconstructionAllowed = true; constructable.rotationEnabled = true; constructable.model = model; constructable.techType = this.TechType; constructable.enabled = true; // Add constructable bounds ConstructableBounds bounds = this.GameObject.AddComponent <ConstructableBounds>(); bounds.bounds.position = new Vector3(bounds.bounds.position.x, bounds.bounds.position.y + 0.032f, bounds.bounds.position.z); // Add sky applier SkyApplier applier = this.GameObject.GetComponent <SkyApplier>(); if (applier == null) { applier = this.GameObject.AddComponent <SkyApplier>(); } applier.renderers = this.GameObject.GetComponentsInChildren <Renderer>(); applier.anchorSky = Skies.Auto; // Add lights/model controler SeamothDollController controller = this.GameObject.AddComponent <SeamothDollController>(); // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, this.ResourcePath, this.TechType, GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, SpriteManager.Get(TechType.Seamoth))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
/// <summary> /// Allows you to remove an existing TechType from the game's internal group system. /// </summary> /// <param name="group">The TechGroup in which the TechType is located.</param> /// <param name="category">The TechCategory in which the TechType is located.</param> /// <param name="techType">The TechType which you want to remove.</param> void ICraftDataHandler.RemoveFromGroup(TechGroup group, TechCategory category, TechType techType) { CraftDataPatcher.RemoveFromCustomGroup(group, category, techType); }
public override void RegisterItem() { if (this.IsRegistered == false) { // Retrieve model node GameObject model = this.GameObject.FindChild("model"); // Move model model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y, model.transform.localPosition.z); // Disable light at start var reactorRodLight = this.GameObject.GetComponentInChildren <Light>(); reactorRodLight.enabled = false; // Add prefab identifier var prefabId = this.GameObject.AddComponent <PrefabIdentifier>(); prefabId.ClassId = this.ClassID; // Add large world entity var lwe = this.GameObject.AddComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Near; // Add tech tag var techTag = this.GameObject.AddComponent <TechTag>(); techTag.type = this.TechType; // Add box collider var collider = this.GameObject.AddComponent <BoxCollider>(); collider.size = new Vector3(0.2f, 0.36f, 0.2f); collider.center = new Vector3(collider.center.x, collider.center.y + 0.18f, collider.center.z); // Set proper shaders (for crafting animation) Shader shader = Shader.Find("MarmosetUBER"); Texture normalTexture = AssetsHelper.Assets.LoadAsset <Texture>("nuclear_reactor_rod_normal"); Texture specTexture = AssetsHelper.Assets.LoadAsset <Texture>("nuclear_reactor_rod_spec"); Texture illumTexture = AssetsHelper.Assets.LoadAsset <Texture>("nuclear_reactor_rod_illum_white"); List <Renderer> renderers = new List <Renderer>(); this.GameObject.GetComponentsInChildren <Renderer>(renderers); foreach (Renderer renderer in renderers) { if (renderer.name.CompareTo("nuclear_reactor_rod_mesh") == 0) { // Associate MarmosetUBER shader renderer.sharedMaterial.shader = shader; // Update normal map renderer.sharedMaterial.SetTexture("_BumpMap", normalTexture); // Update spec map renderer.sharedMaterial.SetTexture("_SpecTex", specTexture); // Update emission map renderer.sharedMaterial.SetTexture("_Illum", illumTexture); // Increase emission map strength renderer.sharedMaterial.SetColor("_GlowColor", new Color(2.5f, 2.5f, 2.5f, 1.0f)); renderer.sharedMaterial.SetFloat("_GlowStrength", 1.5f); // Enable emission renderer.sharedMaterial.EnableKeyword("MARMO_NORMALMAP"); renderer.sharedMaterial.EnableKeyword("MARMO_EMISSION"); } } // Add sky applier var skyapplier = this.GameObject.AddComponent <SkyApplier>(); skyapplier.renderers = this.GameObject.GetComponentsInChildren <Renderer>(); skyapplier.anchorSky = Skies.Auto; // Add contructable var constructible = this.GameObject.AddComponent <Lamp_C>(); constructible.allowedInBase = true; constructible.allowedInSub = true; constructible.allowedOutside = true; constructible.allowedOnCeiling = true; constructible.allowedOnGround = true; constructible.allowedOnConstructables = true; constructible.allowedOnWall = true; constructible.controlModelState = true; constructible.deconstructionAllowed = true; constructible.rotationEnabled = false; constructible.model = model; constructible.techType = this.TechType; constructible.enabled = true; // Add constructable bounds var bounds = this.GameObject.AddComponent <ConstructableBounds>(); bounds.bounds.position = new Vector3(bounds.bounds.position.x, bounds.bounds.position.y + 0.003f, bounds.bounds.position.z); // Add lamp brightness controler var lampBrightness = this.GameObject.AddComponent <ReactorLampBrightness>(); // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.ExteriorModules, TechCategory.ExteriorOther, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("reactorrod_white"))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }
public static void Patch() { Config.Load(); var configChanged = Config.TryGet(ref _egg1_tooltip, "BonesharkEgg", "TooltipHere") | Config.TryGet(ref _egg2_tooltip, "CrabsnakeEgg", "TooltipHere") | Config.TryGet(ref _egg3_tooltip, "CrabsquidEgg", "TooltipHere") | Config.TryGet(ref _egg4_tooltip, "CrashfishEgg", "TooltipHere") | Config.TryGet(ref _egg5_tooltip, "GasopodEgg", "TooltipHere") | Config.TryGet(ref _egg6_tooltip, "JellyrayEgg", "TooltipHere") | Config.TryGet(ref _egg7_tooltip, "LavaLizardEgg", "TooltipHere") | Config.TryGet(ref _egg8_tooltip, "MesmerEgg", "TooltipHere") | Config.TryGet(ref _egg9_tooltip, "RabbitRayEgg", "TooltipHere") | Config.TryGet(ref _egg10_tooltip, "SandsharkEgg", "TooltipHere") | Config.TryGet(ref _egg11_tooltip, "ShockerEgg", "TooltipHere") | Config.TryGet(ref _egg12_tooltip, "SpadefishEgg", "TooltipHere") | Config.TryGet(ref _egg13_tooltip, "StalkerEgg", "TooltipHere") | Config.TryGet(ref _egg14_tooltip, "CutefishEgg", "TooltipHere") | Config.TryGet(ref _egg15_tooltip, "ReefbackEgg", "TooltipHere") | Config.TryGet(ref _egg16_tooltip, "JumperEgg", "TooltipHere"); if (_egg1_tooltip == "") { _egg1_tooltip = "tooltip1"; Config["BonesharkEgg", "TooltipHere"] = _egg1_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip1", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg2_tooltip == "") { _egg2_tooltip = "tooltip2"; Config["CrabsnakeEgg", "TooltipHere"] = _egg2_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip2", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg3_tooltip == "") { _egg3_tooltip = "tooltip3"; Config["CrabsquidEgg", "TooltipHere"] = _egg3_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip3", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg4_tooltip == "") { _egg4_tooltip = "tooltip4"; Config["CrashfishEgg", "TooltipHere"] = _egg4_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip4", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg5_tooltip == "") { _egg5_tooltip = "tooltip5"; Config["GasopodEgg", "TooltipHere"] = _egg5_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip5", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg6_tooltip == "") { _egg6_tooltip = "tooltip6"; Config["JellyrayEgg", "TooltipHere"] = _egg6_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip6", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg7_tooltip == "") { _egg7_tooltip = "tooltip7"; Config["LavaLizardEgg", "TooltipHere"] = _egg7_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip7", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg8_tooltip == "") { _egg8_tooltip = "tooltip8"; Config["MesmerEgg", "TooltipHere"] = _egg8_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip8", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg9_tooltip == "") { _egg9_tooltip = "tooltip9"; Config["RabbitRayEgg", "TooltipHere"] = _egg9_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip9", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg10_tooltip == "") { _egg10_tooltip = "tooltip10"; Config["SandsharkEgg", "TooltipHere"] = _egg10_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip10", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg11_tooltip == "") { _egg11_tooltip = "tooltip11"; Config["ShockerEgg", "TooltipHere"] = _egg11_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip11", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg12_tooltip == "") { _egg12_tooltip = "tooltip12"; Config["SpadefishEgg", "TooltipHere"] = _egg12_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip12", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg13_tooltip == "") { _egg13_tooltip = "tooltip13"; Config["StalkerEgg", "TooltipHere"] = _egg13_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip13", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg14_tooltip == "") { _egg14_tooltip = "tooltip14"; Config["CutefishEgg", "TooltipHere"] = _egg14_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip14", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg15_tooltip == "") { _egg15_tooltip = "tooltip15"; Config["ReefbackEgg", "TooltipHere"] = _egg15_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip15", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (_egg16_tooltip == "") { _egg16_tooltip = "tooltip16"; Config["JumperEgg", "TooltipHere"] = _egg16_tooltip; Utilites.Logger.Logger.Error("TooltipHere was set to tooltip16", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console); configChanged = true; } if (configChanged) { Config.Save(); } //BonesharkEgg Logger.Log("Started Patching BonesharkEgg"); egg1tt = TechTypePatcher.AddTechType("Boneshark Egg", "Boneshark Egg", _egg1_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg1tt); KnownTechPatcher.unlockedAtStart.Add(egg1tt); var egg1sprite = SpriteManager.Get(TechType.BonesharkEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg1tt, egg1sprite)); //CrabsnakeEgg Logger.Log("Started Patching CrabsnakeEgg"); egg2tt = TechTypePatcher.AddTechType("Crabsnake Egg", "Crabsnake Egg", _egg2_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg2tt); KnownTechPatcher.unlockedAtStart.Add(egg2tt); var egg2sprite = SpriteManager.Get(TechType.CrabsnakeEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg2tt, egg2sprite)); //CrabsquidEgg Logger.Log("Started Patching CrabsquidEgg"); egg3tt = TechTypePatcher.AddTechType("Crabsquid Egg", "Crabsquid Egg", _egg3_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg3tt); KnownTechPatcher.unlockedAtStart.Add(egg3tt); var egg3sprite = SpriteManager.Get(TechType.CrabsquidEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg3tt, egg3sprite)); //CrashfishEgg Logger.Log("Started Patching CrashfishEgg"); egg4tt = TechTypePatcher.AddTechType("Crashfish Egg", "Crashfish Egg", _egg4_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg4tt); KnownTechPatcher.unlockedAtStart.Add(egg4tt); var egg4sprite = SpriteManager.Get(TechType.CrashEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg4tt, egg4sprite)); //GasopodEgg Logger.Log("Started Patching GasopodEgg"); egg5tt = TechTypePatcher.AddTechType("Gasopod Egg", "Gasopod Egg", _egg5_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg5tt); KnownTechPatcher.unlockedAtStart.Add(egg5tt); var egg5sprite = SpriteManager.Get(TechType.GasopodEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg5tt, egg5sprite)); //JellyrayEgg Logger.Log("Started Patching JellyrayEgg"); egg6tt = TechTypePatcher.AddTechType("Jellyray Egg", "Jellyray Egg", _egg6_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg6tt); KnownTechPatcher.unlockedAtStart.Add(egg6tt); var egg6sprite = SpriteManager.Get(TechType.JellyrayEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg6tt, egg6sprite)); //LavaLizardEgg Logger.Log("Started Patching LavaLizardEgg"); egg7tt = TechTypePatcher.AddTechType("Lavalizard Egg", "Lavalizard Egg", _egg7_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg7tt); KnownTechPatcher.unlockedAtStart.Add(egg7tt); var egg7sprite = SpriteManager.Get(TechType.LavaLizardEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg7tt, egg7sprite)); //MesmerEgg Logger.Log("Started Patching MesmerEgg"); egg8tt = TechTypePatcher.AddTechType("Mesmer Egg", "Mesmer Egg", _egg8_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg8tt); KnownTechPatcher.unlockedAtStart.Add(egg8tt); var egg8sprite = SpriteManager.Get(TechType.MesmerEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg8tt, egg8sprite)); //RabbitRayEgg Logger.Log("Started Patching RabbitRayEgg"); egg9tt = TechTypePatcher.AddTechType("Rabbitray Egg", "Rabbitray Egg", _egg9_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg9tt); KnownTechPatcher.unlockedAtStart.Add(egg9tt); var egg9sprite = SpriteManager.Get(TechType.RabbitrayEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg9tt, egg9sprite)); //SandsharkEgg Logger.Log("Started Patching SandsharkEgg"); egg10tt = TechTypePatcher.AddTechType("Sandshark Egg", "Sandshark Egg", _egg10_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg10tt); KnownTechPatcher.unlockedAtStart.Add(egg10tt); var egg10sprite = SpriteManager.Get(TechType.SandsharkEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg10tt, egg10sprite)); //ShockerEgg Logger.Log("Started Patching ShockerEgg"); egg11tt = TechTypePatcher.AddTechType("Shocker Egg", "Shocker Egg", _egg11_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg11tt); KnownTechPatcher.unlockedAtStart.Add(egg11tt); var egg11sprite = SpriteManager.Get(TechType.ShockerEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg11tt, egg11sprite)); //SpadefishEgg Logger.Log("Started Patching SpadefishEgg"); egg12tt = TechTypePatcher.AddTechType("Spadefish Egg", "Spadefish Egg", _egg12_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg12tt); KnownTechPatcher.unlockedAtStart.Add(egg12tt); var egg12sprite = SpriteManager.Get(TechType.SpadefishEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg12tt, egg12sprite)); //StalkerEgg Logger.Log("Started Patching StalkerEgg"); egg13tt = TechTypePatcher.AddTechType("Stalker Egg", "Stalker Egg", _egg13_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg13tt); KnownTechPatcher.unlockedAtStart.Add(egg13tt); var egg13sprite = SpriteManager.Get(TechType.StalkerEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg13tt, egg13sprite)); //CutefishEgg Logger.Log("Started Patching CutefishEgg"); egg14tt = TechTypePatcher.AddTechType("Cutefish Egg", "Cutefish Egg", _egg14_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg14tt); KnownTechPatcher.unlockedAtStart.Add(egg14tt); var egg14sprite = SpriteManager.Get(TechType.CutefishEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg14tt, egg14sprite)); //ReefbackEgg Logger.Log("Started Patching ReefbackEgg"); egg15tt = TechTypePatcher.AddTechType("Reefback Egg", "Reefback Egg", _egg15_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg15tt); KnownTechPatcher.unlockedAtStart.Add(egg15tt); var egg15sprite = SpriteManager.Get(TechType.ReefbackEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg15tt, egg15sprite)); //JumperEgg Logger.Log("Started Patching JumperEgg"); egg16tt = TechTypePatcher.AddTechType("Jumper Egg", "Jumper Egg", _egg16_tooltip); CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg16tt); KnownTechPatcher.unlockedAtStart.Add(egg16tt); var egg16sprite = SpriteManager.Get(TechType.JumperEgg); CustomSpriteHandler.customSprites.Add(new CustomSprite(egg16tt, egg16sprite)); }
public override void RegisterItem() { if (this.IsRegistered == false) { // Retrieve model node GameObject model = this.GameObject.FindChild("prawnsuit"); // Move model model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y - 0.002f, model.transform.localPosition.z); // Add prefab identifier var prefabId = this.GameObject.AddComponent <PrefabIdentifier>(); prefabId.ClassId = this.ClassID; // Add large world entity var lwe = this.GameObject.AddComponent <LargeWorldEntity>(); lwe.cellLevel = LargeWorldEntity.CellLevel.Near; // Add tech tag var techTag = this.GameObject.AddComponent <TechTag>(); techTag.type = this.TechType; // Add box collider var collider = this.GameObject.AddComponent <BoxCollider>(); //collider.radius = 0.0375f; collider.size = new Vector3(0.04f, 0.115f, 0.04f); collider.center = new Vector3(collider.center.x, collider.center.y + 0.0575f, collider.center.z); // Set proper shaders (for crafting animation) Shader shader = Shader.Find("MarmosetUBER"); Texture normal = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_normal"); Texture spec = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_spec"); Texture colorMask = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_colorMask"); Texture illum = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_illum"); Texture normal2 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_fp_normal"); Texture illum2 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_fp_illum"); Texture normal3 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_Arm_Propulsion_Cannon_normal"); Texture colorMask3 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_Arm_Propulsion_Cannon_colorMask"); Texture illum3 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_Arm_Propulsion_Cannon_illum"); Texture normal4 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_grappling_arm_normal"); Texture colorMask4 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_grappling_arm_colorMask"); Texture illum4 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_grappling_arm_illum"); Texture normal5 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_glass_normal"); Texture normal6 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_storage_01_normal"); Texture colorMask6 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_storage_01_colorMask"); Texture illum6 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_storage_01_illum"); Texture normal7 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_torpedo_launcher_arm_normal"); Texture colorMask7 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_torpedo_launcher_arm_colorMask"); Texture illum7 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_torpedo_launcher_arm_illum"); Texture normal8 = AssetsHelper.Assets.LoadAsset <Texture>("engine_power_cell_ion_normal"); Texture spec8 = AssetsHelper.Assets.LoadAsset <Texture>("engine_power_cell_ion_spec"); Texture illum8 = AssetsHelper.Assets.LoadAsset <Texture>("engine_power_cell_ion_illum"); Texture normal9 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_normal"); Texture spec9 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_spec"); Texture normal10 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_upgrade_slots_01_normal"); Texture spec10 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_upgrade_slots_01_spec"); Texture illum10 = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_upgrade_slots_01_illum"); Texture normal11 = AssetsHelper.Assets.LoadAsset <Texture>("submarine_engine_power_cells_01_normal"); Texture spec11 = AssetsHelper.Assets.LoadAsset <Texture>("submarine_engine_power_cells_01_spec"); Texture illum11 = AssetsHelper.Assets.LoadAsset <Texture>("submarine_engine_power_cells_01_illum"); Renderer[] renderers = this.GameObject.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { foreach (Material tmpMat in renderer.materials) { // Associate MarmosetUBER shader if (tmpMat.name.CompareTo("exosuit_01_glass (Instance)") != 0 && tmpMat.name.CompareTo("exosuit_cabin_01_glass (Instance)") != 0) { tmpMat.shader = shader; } if (tmpMat.name.CompareTo("exosuit_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal); tmpMat.SetTexture("_ColorMask", colorMask); tmpMat.SetTexture("_SpecTex", spec); tmpMat.SetTexture("_Illum", illum); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable color mask tmpMat.EnableKeyword("MARMO_VERTEX_COLOR"); // Enable specular //tmpMat.EnableKeyword("MARMO_SPECULAR_ON"); tmpMat.EnableKeyword("MARMO_SPECULAR_IBL"); tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT"); tmpMat.EnableKeyword("MARMO_MIP_GLOSS"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("exosuit_01_fp (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal2); tmpMat.SetTexture("_Illum", illum2); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("Exosuit_Arm_Propulsion_Cannon (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal3); tmpMat.SetTexture("_ColorMask", colorMask3); tmpMat.SetTexture("_Illum", illum3); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable color mask tmpMat.EnableKeyword("MARMO_VERTEX_COLOR"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("Exosuit_grappling_arm (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal4); tmpMat.SetTexture("_ColorMask", colorMask4); tmpMat.SetTexture("_Illum", illum4); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable color mask tmpMat.EnableKeyword("MARMO_VERTEX_COLOR"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("exosuit_01_glass (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal5); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); } else if (tmpMat.name.CompareTo("exosuit_storage_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal6); tmpMat.SetTexture("_ColorMask", colorMask6); tmpMat.SetTexture("_Illum", illum6); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable color mask tmpMat.EnableKeyword("MARMO_VERTEX_COLOR"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("Exosuit_torpedo_launcher_arm (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal7); tmpMat.SetTexture("_ColorMask", colorMask7); tmpMat.SetTexture("_Illum", illum7); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable color mask tmpMat.EnableKeyword("MARMO_VERTEX_COLOR"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("power_cell_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal8); tmpMat.SetTexture("_SpecTex", spec8); tmpMat.SetTexture("_Illum", illum8); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable specular tmpMat.EnableKeyword("MARMO_SPECULAR_IBL"); tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT"); tmpMat.EnableKeyword("MARMO_MIP_GLOSS"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("seamoth_torpedo_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal9); tmpMat.SetTexture("_SpecTex", spec9); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable specular tmpMat.EnableKeyword("MARMO_SPECULAR_IBL"); tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT"); tmpMat.EnableKeyword("MARMO_MIP_GLOSS"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); } else if (tmpMat.name.CompareTo("seamoth_upgrade_slots_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal10); tmpMat.SetTexture("_SpecTex", spec10); tmpMat.SetTexture("_Illum", illum10); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable specular tmpMat.EnableKeyword("MARMO_SPECULAR_IBL"); tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT"); tmpMat.EnableKeyword("MARMO_MIP_GLOSS"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } else if (tmpMat.name.CompareTo("submarine_engine_power_cells_01 (Instance)") == 0) { tmpMat.SetTexture("_BumpMap", normal11); tmpMat.SetTexture("_SpecTex", spec11); tmpMat.SetTexture("_Illum", illum11); tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible // Enable specular tmpMat.EnableKeyword("MARMO_SPECULAR_IBL"); tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT"); tmpMat.EnableKeyword("MARMO_MIP_GLOSS"); // Enable normal map tmpMat.EnableKeyword("MARMO_NORMALMAP"); // Enable emission map tmpMat.EnableKeyword("MARMO_EMISSION"); } } } // Add sky applier var skyapplier = this.GameObject.AddComponent <SkyApplier>(); skyapplier.renderers = renderers; skyapplier.anchorSky = Skies.Auto; // Add contructable var constructible = this.GameObject.AddComponent <Constructable>(); constructible.allowedInBase = true; constructible.allowedInSub = true; constructible.allowedOutside = true; constructible.allowedOnCeiling = false; constructible.allowedOnGround = true; constructible.allowedOnConstructables = true; constructible.controlModelState = true; constructible.deconstructionAllowed = true; constructible.rotationEnabled = true; constructible.model = model; constructible.techType = this.TechType; constructible.enabled = true; // Add constructable bounds var bounds = this.GameObject.AddComponent <ConstructableBounds>(); bounds.bounds.position = new Vector3(bounds.bounds.position.x, bounds.bounds.position.y + 0.002f, bounds.bounds.position.z); // Add model controler var exosuitDollControler = this.GameObject.AddComponent <ExosuitDollController>(); #region Disable right arms (except hand arm) GameObject rightArm = model.FindChild("ExosuitArmRight"); GameObject rightArmRig = rightArm.FindChild("exosuit_01_armRight 1").FindChild("ArmRig 1"); GameObject rightTorpedoArm = rightArmRig.FindChild("exosuit_arm_torpedoLauncher_geo 1"); GameObject rightDrillArm = rightArmRig.FindChild("exosuit_drill_geo 1"); GameObject rightGrapplinArm = rightArmRig.FindChild("exosuit_grapplingHook_geo 1"); GameObject rightGrapplinHand = rightArmRig.FindChild("exosuit_grapplingHook_hand_geo 1"); GameObject rightHandArm = rightArmRig.FindChild("exosuit_hand_geo 1"); GameObject rightPropulsionArm = rightArmRig.FindChild("exosuit_propulsion_geo 1"); // Disable right torpedo arm List <Renderer> rightTorpedoArmRenderers = new List <Renderer>(); rightTorpedoArm.GetComponentsInChildren <Renderer>(rightTorpedoArmRenderers); if (!rightTorpedoArmRenderers.Contains(rightTorpedoArm.GetComponent <Renderer>())) { rightTorpedoArmRenderers.Add(rightTorpedoArm.GetComponent <Renderer>()); } foreach (Renderer rend in rightTorpedoArmRenderers) { rend.enabled = false; } // Disable right drill arm rightDrillArm.GetComponent <Renderer>().enabled = false; // Disable right grapplin arm List <Renderer> rightGrapplinArmRenderers = new List <Renderer>(); rightGrapplinHand.GetComponentsInChildren <Renderer>(rightGrapplinArmRenderers); if (!rightGrapplinArmRenderers.Contains(rightGrapplinHand.GetComponent <Renderer>())) { rightGrapplinArmRenderers.Add(rightGrapplinHand.GetComponent <Renderer>()); } foreach (Renderer rend in rightGrapplinArmRenderers) { rend.enabled = false; } rightGrapplinArm.GetComponent <Renderer>().enabled = false; // Disable right propulsion arm rightPropulsionArm.GetComponent <Renderer>().enabled = false; #endregion #region Disable left arms (except hand arm) GameObject leftArm = model.FindChild("ExosuitArmLeft"); GameObject leftArmRig = leftArm.FindChild("exosuit_01_armRight").FindChild("ArmRig"); GameObject leftTorpedoArm = leftArmRig.FindChild("exosuit_arm_torpedoLauncher_geo"); GameObject leftDrillArm = leftArmRig.FindChild("exosuit_drill_geo"); GameObject leftGrapplinArm = leftArmRig.FindChild("exosuit_grapplingHook_geo"); GameObject leftGrapplinHand = leftArmRig.FindChild("exosuit_grapplingHook_hand_geo"); GameObject leftHandArm = leftArmRig.FindChild("exosuit_hand_geo"); GameObject leftPropulsionArm = leftArmRig.FindChild("exosuit_propulsion_geo"); // Disable left torpedo arm List <Renderer> leftTorpedoArmRenderers = new List <Renderer>(); leftTorpedoArm.GetComponentsInChildren <Renderer>(leftTorpedoArmRenderers); if (!leftTorpedoArmRenderers.Contains(leftTorpedoArm.GetComponent <Renderer>())) { leftTorpedoArmRenderers.Add(leftTorpedoArm.GetComponent <Renderer>()); } foreach (Renderer rend in leftTorpedoArmRenderers) { rend.enabled = false; } // Disable left drill arm leftDrillArm.GetComponent <Renderer>().enabled = false; // Disable right grapplin arm List <Renderer> leftGrapplinArmRenderers = new List <Renderer>(); leftGrapplinHand.GetComponentsInChildren <Renderer>(leftGrapplinArmRenderers); if (!leftGrapplinArmRenderers.Contains(leftGrapplinHand.GetComponent <Renderer>())) { leftGrapplinArmRenderers.Add(leftGrapplinHand.GetComponent <Renderer>()); } foreach (Renderer rend in leftGrapplinArmRenderers) { rend.enabled = false; } leftGrapplinArm.GetComponent <Renderer>().enabled = false; // Disable right propulsion arm leftPropulsionArm.GetComponent <Renderer>().enabled = false; #endregion // Add new TechType to the buildables CraftDataPatcher.customBuildables.Add(this.TechType); CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType); // Set the buildable prefab CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, this.ResourcePath, this.TechType, this.GetPrefab)); // Set the custom sprite CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, SpriteManager.Get(TechType.Exosuit))); // Associate recipe to the new TechType CraftDataPatcher.customTechData[this.TechType] = this.Recipe; this.IsRegistered = true; } }