public TankType(TechType tank, float baseO2capacity, Sprite sprite = null, bool bUnlockAtStart = false, float speedModifier = 1f) { Logger.Log(Logger.Level.Debug, $"Registering tank TechType.{tank.AsString()}"); if (sprite != null) { this.sprite = sprite; } else { this.sprite = SpriteManager.Get(tank); } string tankName = Language.main.Get(tank); this.BaseO2Capacity = baseO2capacity; this.speedModifier = speedModifier; if (Main.config.bManualRefill) { //new TankCraftHelper(tank).Patch(); this.refillTechType = TechTypeHandler.AddTechType((tank.AsString(false) + "Refill"), tankName + " Refill", "Refilled " + tankName, false); KnownTechHandler.SetAnalysisTechEntry(tank, new TechType[] { this.refillTechType }); SpriteHandler.RegisterSprite(this.refillTechType, this.sprite); var techData = new RecipeData() { craftAmount = 0, Ingredients = new List <Ingredient>() { new Ingredient(tank, 1) } }; techData.LinkedItems.Add(tank); CraftDataHandler.SetTechData(this.refillTechType, techData); CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, this.refillTechType, new string[] { "Personal", "TankRefill" }); #if SUBNAUTICA_STABLE if (CraftData.GetCraftTime(tank, out float craftTime)) #elif BELOWZERO if (TechData.GetCraftTime(tank, out float craftTime)) #endif { Logger.Log(Logger.Level.Debug, $"Setting crafting time of {craftTime} for TechType.{this.refillTechType.AsString()}"); CraftDataHandler.SetCraftingTime(this.refillTechType, craftTime); } else { Logger.Log(Logger.Level.Debug, $"Couldn't find crafting time for TechType.{tank}"); } if (!Main.bannedTech.Contains(this.refillTechType)) { Main.bannedTech.Add(this.refillTechType); } if (bUnlockAtStart) { KnownTechHandler.UnlockOnStart(this.refillTechType); } } else { this.refillTechType = TechType.None; } }