using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using BuildBarTool;
using CommonAPI;
using CommonAPI.Patches;
using CommonAPI.Systems;
using CommonAPI.Systems.ModLocalization;
using DSP_Battle;
using FE.Compatibility;
using FE.Logic.Building;
using FE.Logic.Manager;
using FE.Logic.Recipe;
using FE.UI.Components;
using FE.UI.View;
using FE.UI.View.CoreOperate;
using FE.UI.View.GetItemRecipe;
using FE.UI.View.ModPackage;
using FE.UI.View.ProgressSystem;
using FE.UI.View.Setting;
using FE.UI.View.Statistic;
using FE.Utils;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using NebulaAPI;
using NebulaAPI.GameState;
using NebulaAPI.Interfaces;
using NebulaAPI.Networking;
using NebulaAPI.Packets;
using ProjectGenesis.Patches;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.UI;
using UnityEngine.UI.Youthcat;
using crecheng.DSPModSave;
using xiaoye97;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("FractionateEverything")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FractionateEverything")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("3204cf73-a6e8-4c3b-a91d-e4baf6fca974")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
internal static class PluginInfo
{
public const string PLUGIN_GUID = "com.menglei.dsp.fe";
public const string PLUGIN_NAME = "FractionateEverything";
public const string PLUGIN_VERSION = "2.2.8";
}
namespace FE
{
[BepInPlugin("com.menglei.dsp.fe", "FractionateEverything", "2.2.8")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[CommonAPISubmoduleDependency(new string[] { "CustomKeyBindSystem", "ProtoRegistry", "TabSystem", "LocalizationModule" })]
public class FractionateEverything : BaseUnityPlugin, IModCanSave, IMultiplayerModWithSettings, IMultiplayerMod
{
public const string Tech1134IconPath = "Icons/Tech/1134";
public static int tab分馏;
public static string ModPath;
public static ResourceData FEAssets;
public static readonly Harmony harmony = new Harmony("com.menglei.dsp.fe");
private static bool _finished;
private static ConfigFile configFile;
public string Version => "2.2.8";
public void LoadConfig()
{
configFile = ((BaseUnityPlugin)this).Config;
CheckPlugins.DisableMessageBox = ((BaseUnityPlugin)this).Config.Bind<bool>("other", "DisableMessageBox", false, "Don't show messagebox when FractionateEverything loaded.");
MainWindow.LoadConfig(((BaseUnityPlugin)this).Config);
Traverse.Create((object)((BaseUnityPlugin)this).Config).Property("OrphanedEntries", (object[])null).GetValue<Dictionary<ConfigDefinition, string>>()
.Clear();
((BaseUnityPlugin)this).Config.Save();
}
public static void SaveConfig()
{
configFile.Save();
}
public void Awake()
{
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Expected O, but got Unknown
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Expected O, but got Unknown
//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
//IL_01ce: Expected O, but got Unknown
using (ProtoRegistry.StartModLoad("com.menglei.dsp.fe"))
{
FE.Utils.Utils.InitLogger(((BaseUnityPlugin)this).Logger);
FE.Utils.Utils.Register("分馏页面", "Fractionate", "分馏");
FE.Utils.Utils.Register("分馏与插件页面", "Frac&Beacon", "分馏&插件");
ERecipeExtension.AddTranslations();
OutputInfo.AddTranslations();
FE.Utils.Utils.AddTranslations();
BuildingManager.AddTranslations();
ItemManager.AddTranslations();
ProcessManager.AddTranslations();
TechManager.AddTranslations();
TutorialManager.AddTranslations();
MainWindow.AddTranslations();
LoadConfig();
tab分馏 = TabSystem.RegisterTab("com.menglei.dsp.fe:com.menglei.dsp.feTab", new TabData(Localization.Translate("分馏页面"), "Icons/Tech/1134"));
Assembly executingAssembly = Assembly.GetExecutingAssembly();
ModPath = Path.GetDirectoryName(executingAssembly.Location);
FEAssets = new ResourceData("com.menglei.dsp.fe", "fe", ModPath);
FEAssets.LoadAssetBundle("fe");
ProtoRegistry.AddResource(FEAssets);
NebulaModAPI.RegisterPackets(executingAssembly);
LDBTool.PreAddDataAction = (Action)Delegate.Combine(LDBTool.PreAddDataAction, new Action(PreAddData));
LDBTool.PostAddDataAction = (Action)Delegate.Combine(LDBTool.PostAddDataAction, new Action(PostAddData));
string @namespace = typeof(CheckPlugins).Namespace;
Type[] types = executingAssembly.GetTypes();
foreach (Type type in types)
{
if (type.Namespace != null && (@namespace == null || !type.Namespace.StartsWith(@namespace)))
{
harmony.PatchAll(type);
}
}
Harmony obj = harmony;
MethodInfo methodInfo = AccessTools.Method(typeof(VFPreload), "InvokeOnLoadWorkEnded", (Type[])null, (Type[])null);
HarmonyMethod val = new HarmonyMethod(typeof(FractionateEverything), "FinalAction", (Type[])null);
val.after = new string[1] { "me.xiaoye97.plugin.Dyson.LDBTool" };
obj.Patch((MethodBase)methodInfo, (HarmonyMethod)null, val, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
MainWindow.Init();
}
}
private void Start()
{
MyWindowManager.InitBaseObjects();
MyWindowManager.Enable(on: true);
}
private void OnDestroy()
{
MyWindowManager.Enable(on: false);
}
private void Update()
{
MainWindow.OnInputUpdate();
}
public void PreAddData()
{
ItemManager.AddFractionalPrototypeAndEssence();
BuildingManager.AddFractionators();
TechManager.AddTechs();
TutorialManager.AddTutorials();
}
public void PostAddData()
{
BuildingManager.SetFractionatorMaterial();
}
public static void FinalAction()
{
if (!_finished)
{
PreloadAndInitAll();
ProcessManager.Init();
ItemManager.CalculateItemValues();
ItemManager.ClassifyItemsToMatrix();
BuildingManager.UpdateHpAndEnergy();
BuildingManager.SetFractionatorCacheSize();
RecipeManager.AddFracRecipes();
StationManager.CalculateItemModSaveCount();
_finished = true;
}
}
public static void PreloadAndInitAll()
{
ItemProto.InitFuelNeeds();
ItemProto.InitTurretNeeds();
ItemProto.InitFluids();
ItemProto.InitTurrets();
ItemProto.InitEnemyDropTables();
ItemProto.InitConstructableItems();
ItemProto.InitItemIds();
ItemProto.InitItemIndices();
ItemProto.InitMechaMaterials();
ItemProto.InitFighterIndices();
ItemProto.InitPowerFacilityIndices();
ItemProto.InitProductionMask();
ModelProto.InitMaxModelIndex();
ModelProto.InitModelIndices();
ModelProto.InitModelOrders();
RecipeProto.InitRecipeItems();
RecipeProto.InitFractionatorNeeds();
SignalProtoSet.InitSignalKeyIdPairs();
RaycastLogic.LoadStatic();
StorageComponent.staticLoaded = false;
StorageComponent.LoadStatic();
}
public void Import(BinaryReader r)
{
BaseIntoOtherSave();
int num = r.ReadInt32();
RecipeManager.Import(r);
BuildingManager.Import(r);
ItemManager.Import(r);
MainWindow.Import(r);
}
public void Export(BinaryWriter w)
{
w.Write(1);
RecipeManager.Export(w);
BuildingManager.Export(w);
ItemManager.Export(w);
MainWindow.Export(w);
}
public void IntoOtherSave()
{
if (!NebulaMultiplayerModAPI.IsClient)
{
BaseIntoOtherSave();
}
}
private void BaseIntoOtherSave()
{
RecipeManager.IntoOtherSave();
BuildingManager.IntoOtherSave();
ItemManager.IntoOtherSave();
MainWindow.IntoOtherSave();
TechManager.ResetTechUnlockFlags();
}
public bool CheckVersion(string hostVersion, string clientVersion)
{
return hostVersion.Equals(clientVersion);
}
}
}
namespace FE.Utils
{
public static class Utils
{
private record struct ModStr
{
public string key;
public string enTrans;
public string cnTrans;
}
private static readonly List<ModStr> modStringList = new List<ModStr>();
private static ManualLogSource logger;
private static readonly int[] testPackageUsedCounts = new int[12000];
private static DateTime lastSortTime = DateTime.MinValue;
internal const int I伊卡洛斯 = 0;
internal const int I行星基地 = 1;
internal const int I巨构星际组装厂 = 2;
internal const int I水 = 1000;
internal const int I铁矿 = 1001;
internal const int I铜矿 = 1002;
internal const int I硅石 = 1003;
internal const int I钛石 = 1004;
internal const int I石矿 = 1005;
internal const int I煤矿 = 1006;
internal const int I原油 = 1007;
internal const int I可燃冰 = 1011;
internal const int I金伯利矿石 = 1012;
internal const int I分形硅石 = 1013;
internal const int IOR莫桑石 = 1013;
internal const int I光栅石 = 1014;
internal const int I刺笋结晶 = 1015;
internal const int I单极磁石 = 1016;
internal const int I木材 = 1030;
internal const int IOR植物纤维 = 1030;
internal const int I植物燃料 = 1031;
internal const int IOR生物质 = 1031;
internal const int I沙土 = 1099;
internal const int I铁块 = 1101;
internal const int I磁铁 = 1102;
internal const int I钢材 = 1103;
internal const int I铜块 = 1104;
internal const int I高纯硅块 = 1105;
internal const int I钛块 = 1106;
internal const int I钛合金 = 1107;
internal const int IOR碳化钛合金 = 1107;
internal const int I石材 = 1108;
internal const int IOR钢筋混凝土 = 1108;
internal const int I高能石墨 = 1109;
internal const int IOR石墨 = 1109;
internal const int I玻璃 = 1110;
internal const int I棱镜 = 1111;
internal const int I金刚石 = 1112;
internal const int I晶格硅 = 1113;
internal const int IOR碳化硅 = 1113;
internal const int I精炼油 = 1114;
internal const int IGB焦油 = 1114;
internal const int IOR重油 = 1114;
internal const int I塑料 = 1115;
internal const int IGB聚丙烯 = 1115;
internal const int I硫酸 = 1116;
internal const int I有机晶体 = 1117;
internal const int I钛晶石 = 1118;
internal const int I钛化玻璃 = 1119;
internal const int I氢 = 1120;
internal const int I重氢 = 1121;
internal const int I反物质 = 1122;
internal const int I石墨烯 = 1123;
internal const int I碳纳米管 = 1124;
internal const int I框架材料 = 1125;
internal const int I卡西米尔晶体 = 1126;
internal const int IOR金属氢 = 1126;
internal const int I奇异物质 = 1127;
internal const int I燃烧单元 = 1128;
internal const int I爆破单元 = 1129;
internal const int IOR炸药单元 = 1129;
internal const int I晶石爆破单元 = 1130;
internal const int I地基 = 1131;
internal const int I增产剂MkI = 1141;
internal const int I增产剂MkII = 1142;
internal const int I增产剂MkIII = 1143;
internal const int IGB增产剂 = 1143;
internal const int IOR增产剂 = 1143;
internal const int I齿轮 = 1201;
internal const int I磁线圈 = 1202;
internal const int I电动机 = 1203;
internal const int I电磁涡轮 = 1204;
internal const int I超级磁场环 = 1205;
internal const int I粒子容器 = 1206;
internal const int I临界光子 = 1208;
internal const int I引力透镜 = 1209;
internal const int I空间翘曲器 = 1210;
internal const int I电路板 = 1301;
internal const int I微晶元件 = 1302;
internal const int IOR晶圆 = 1302;
internal const int I处理器 = 1303;
internal const int IOR主板 = 1303;
internal const int I位面过滤器 = 1304;
internal const int I量子芯片 = 1305;
internal const int I电浆激发器 = 1401;
internal const int IOR激光发生器 = 1401;
internal const int I粒子宽带 = 1402;
internal const int I湮灭约束球 = 1403;
internal const int I光子合并器 = 1404;
internal const int I推进器 = 1405;
internal const int I加力推进器 = 1406;
internal const int I动力引擎 = 1407;
internal const int I太阳帆 = 1501;
internal const int I戴森球组件 = 1502;
internal const int I小型运载火箭 = 1503;
internal const int I机枪弹箱 = 1601;
internal const int I钛化弹箱 = 1602;
internal const int I超合金弹箱 = 1603;
internal const int I炮弹组 = 1604;
internal const int I高爆炮弹组 = 1605;
internal const int IOR杀爆榴弹组 = 1605;
internal const int I晶石炮弹组 = 1606;
internal const int I等离子胶囊 = 1607;
internal const int IOR氘核轨道弹 = 1607;
internal const int I反物质胶囊 = 1608;
internal const int IOR反物质轨道弹 = 1608;
internal const int I导弹组 = 1609;
internal const int I超音速导弹组 = 1610;
internal const int I引力导弹组 = 1611;
internal const int IOR重力鱼雷 = 1611;
internal const int I干扰胶囊 = 1612;
internal const int I压制胶囊 = 1613;
internal const int I液氢燃料棒 = 1801;
internal const int I氘核燃料棒 = 1802;
internal const int I反物质燃料棒 = 1803;
internal const int I奇异湮灭燃料棒 = 1804;
internal const int I传送带 = 2001;
internal const int I高速传送带 = 2002;
internal const int I极速传送带 = 2003;
internal const int I分拣器 = 2011;
internal const int I高速分拣器 = 2012;
internal const int I极速分拣器 = 2013;
internal const int I集装分拣器 = 2014;
internal const int I四向分流器 = 2020;
internal const int I流速监测器 = 2030;
internal const int I自动集装机 = 2040;
internal const int I小型储物仓 = 2101;
internal const int I大型储物仓 = 2102;
internal const int I行星内物流运输站 = 2103;
internal const int IOR物流立交 = 2103;
internal const int I星际物流运输站 = 2104;
internal const int IOR太空物流港 = 2104;
internal const int I轨道采集器 = 2105;
internal const int I储液罐 = 2106;
internal const int I物流配送器 = 2107;
internal const int I电力感应塔 = 2201;
internal const int I无线输电塔 = 2202;
internal const int I风力涡轮机 = 2203;
internal const int I火力发电厂 = 2204;
internal const int IGB燃料电池发电厂 = 2204;
internal const int I太阳能板 = 2205;
internal const int I蓄电器 = 2206;
internal const int IOR蓄电器mk2 = 2206;
internal const int I蓄电器满 = 2207;
internal const int IOR蓄电器mk2满 = 2207;
internal const int I射线接收站 = 2208;
internal const int IMS射线重构站 = 2208;
internal const int I能量枢纽 = 2209;
internal const int I人造恒星 = 2210;
internal const int IGB朱曦K型人造恒星 = 2210;
internal const int IOR地上太阳 = 2210;
internal const int I微型聚变发电站 = 2211;
internal const int IGB裂变能源发电站 = 2211;
internal const int IOR裂变重水堆 = 2211;
internal const int I卫星配电站 = 2212;
internal const int I地热发电站 = 2213;
internal const int I采矿机 = 2301;
internal const int I电弧熔炉 = 2302;
internal const int I制造台MkI = 2303;
internal const int IGB基础制造台 = 2303;
internal const int IOR基础制造台 = 2303;
internal const int I制造台MkII = 2304;
internal const int IGB标准制造单元 = 2304;
internal const int IOR高速装配线 = 2304;
internal const int I制造台MkIII = 2305;
internal const int IGB高精度装配线 = 2305;
internal const int IOR粒子打印车间 = 2305;
internal const int I抽水站 = 2306;
internal const int IOR流体抽取平台 = 2306;
internal const int I原油萃取站 = 2307;
internal const int IOR激光钻井平台 = 2307;
internal const int I原油精炼厂 = 2308;
internal const int I化工厂 = 2309;
internal const int I微型粒子对撞机 = 2310;
internal const int I电磁轨道弹射器 = 2311;
internal const int I垂直发射井 = 2312;
internal const int IOR电磁弹射井 = 2312;
internal const int I喷涂机 = 2313;
internal const int I分馏塔 = 2314;
internal const int I位面熔炉 = 2315;
internal const int IOR等离子熔炉 = 2315;
internal const int I大型采矿机 = 2316;
internal const int I量子化工厂 = 2317;
internal const int IGB先进化学反应釜 = 2317;
internal const int I重组式制造台 = 2318;
internal const int IGB物质重组工厂 = 2318;
internal const int IOR物质重组工厂 = 2318;
internal const int I负熵熔炉 = 2319;
internal const int I矩阵研究站 = 2901;
internal const int I自演化研究站 = 2902;
internal const int I高斯机枪塔 = 3001;
internal const int I高频激光塔 = 3002;
internal const int I聚爆加农炮 = 3003;
internal const int IOR轨道加农炮 = 3003;
internal const int I磁化电浆炮 = 3004;
internal const int IOR重型电浆炮 = 3004;
internal const int I导弹防御塔 = 3005;
internal const int I干扰塔 = 3006;
internal const int IORECM脉冲发射器 = 3006;
internal const int I信号塔 = 3007;
internal const int I行星护盾发生器 = 3008;
internal const int I战场分析基站 = 3009;
internal const int I近程电浆塔 = 3010;
internal const int IOR近防电浆炮 = 3010;
internal const int I物流运输机 = 5001;
internal const int I星际物流运输船 = 5002;
internal const int IOR太空运输船 = 5002;
internal const int I配送运输机 = 5003;
internal const int I原型机 = 5101;
internal const int I精准无人机 = 5102;
internal const int IOR攻击无人机 = 5102;
internal const int I攻击无人机 = 5103;
internal const int IOR精准无人机 = 5103;
internal const int I护卫舰 = 5111;
internal const int I驱逐舰 = 5112;
internal const int I黑雾矩阵 = 5201;
internal const int I硅基神经元 = 5202;
internal const int I物质重组器 = 5203;
internal const int I负熵奇点 = 5204;
internal const int I核心素 = 5205;
internal const int I能量碎片 = 5206;
internal const int I电磁矩阵 = 6001;
internal const int IOR电气矩阵 = 6001;
internal const int I能量矩阵 = 6002;
internal const int IOR化工矩阵 = 6002;
internal const int I结构矩阵 = 6003;
internal const int IOR材料矩阵 = 6003;
internal const int I信息矩阵 = 6004;
internal const int IOR粒子矩阵 = 6004;
internal const int I引力矩阵 = 6005;
internal const int I宇宙矩阵 = 6006;
internal const int IOR大统一矩阵 = 6006;
internal const int IGB钨矿 = 6201;
internal const int IOR液态金属 = 6201;
internal const int IGB铝矿 = 6202;
internal const int IOR深层熔岩 = 6202;
internal const int IGB铝块 = 6203;
internal const int IOR熔融金属 = 6203;
internal const int IGB铝合金 = 6204;
internal const int IOR金属废液 = 6204;
internal const int IGB二氧化硫 = 6205;
internal const int IOR甲烷 = 6205;
internal const int IGB二氧化碳 = 6206;
internal const int IOR激素营养液 = 6206;
internal const int IGB硫矿 = 6207;
internal const int IOR黄铁矿 = 6207;
internal const int IOR激素生长菌群 = 6208;
internal const int IGB四氢双环戊二烯JP10 = 6212;
internal const int IOR高速生长菌群 = 6212;
internal const int IOR次级维度工厂 = 6214;
internal const int IOR掌中工厂 = 6215;
internal const int IGB四氢双环戊二烯燃料棒 = 6216;
internal const int IOR终末螺旋 = 6216;
internal const int IGB焦油燃料棒 = 6217;
internal const int IOR化学燃料棒 = 6217;
internal const int IOR蓄电器 = 6218;
internal const int IOR蓄电器满 = 6219;
internal const int IGB氮 = 6220;
internal const int IGB同位素温差发电机 = 6221;
internal const int IOR同位素温差发电机 = 6221;
internal const int IGB放射性矿物 = 6222;
internal const int IOR铀矿 = 6222;
internal const int IGB铀矿 = 6225;
internal const int IOR铀238溶液 = 6225;
internal const int IGB钚矿 = 6226;
internal const int IOR铀235溶液 = 6226;
internal const int IGB含铀核燃料 = 6227;
internal const int IOR曲率引擎 = 6227;
internal const int IGB含钚核燃料 = 6228;
internal const int IOR占位物 = 6228;
internal const int IGB量子储液罐 = 6229;
internal const int IOR量子储液罐 = 6229;
internal const int IGB矿物处理厂 = 6230;
internal const int IOR深空货舰 = 6230;
internal const int IGB量子储物仓 = 6231;
internal const int IOR量子储物仓 = 6231;
internal const int IGB氦 = 6234;
internal const int IOR文明遗物 = 6234;
internal const int IGB氦三 = 6235;
internal const int IOR十七公斤重的文明 = 6235;
internal const int IGB钚燃料棒 = 6241;
internal const int IOR文明的定义 = 6241;
internal const int IGB铀燃料棒 = 6242;
internal const int IOR铀燃料棒 = 6242;
internal const int IGBMOX燃料棒 = 6243;
internal const int IOR粒子加速器 = 6243;
internal const int IGB氦三燃料棒 = 6244;
internal const int IOR奇夸克样本 = 6244;
internal const int IGB氘氦混合燃料棒 = 6245;
internal const int IOR菌丝母株 = 6245;
internal const int IGB石粉 = 6251;
internal const int IOR岩浆 = 6251;
internal const int IGB铁矿粉 = 6252;
internal const int IOR大型神经网络 = 6252;
internal const int IGB铜矿粉 = 6253;
internal const int IOR神经芯片 = 6253;
internal const int IGB硅矿粉 = 6254;
internal const int IOR手动研究加速 = 6254;
internal const int IGB钛矿粉 = 6255;
internal const int IOR哈希值 = 6255;
internal const int IGB煤矿粉 = 6256;
internal const int IOR碳粉 = 6256;
internal const int IGB天穹装配厂 = 6257;
internal const int IOR太空船坞 = 6257;
internal const int IGB物质裂解塔 = 6258;
internal const int IOR太空电梯 = 6258;
internal const int IGB埃克森美孚化工厂 = 6259;
internal const int IOR星环电网枢纽 = 6259;
internal const int IGB工业先锋精密加工中心 = 6260;
internal const int IOR精密结构组装厂 = 6260;
internal const int IGB湛曦O型人造恒星 = 6261;
internal const int IOR轨道反物质堆核心 = 6261;
internal const int IGB氦闪约束器 = 6263;
internal const int IOR太空损管包 = 6263;
internal const int IGB物质分解设施 = 6264;
internal const int IOR生态穹顶 = 6264;
internal const int IGB苍穹粒子加速器 = 6265;
internal const int IOR星环对撞机总控站 = 6265;
internal const int IGB聚束液体汲取设施 = 6266;
internal const int IOR勘察卫星 = 6266;
internal const int IGB大气采集站 = 6267;
internal const int IOR深空物流港 = 6267;
internal const int IGB三元精金 = 6271;
internal const int IOR零素装甲 = 6271;
internal const int IGB铝矿粉 = 6273;
internal const int IOR轨道观测站 = 6273;
internal const int IGB硫粉 = 6277;
internal const int IOR离子推进器 = 6277;
internal const int IGB玻色矩阵 = 6278;
internal const int IOR信息矩阵 = 6278;
internal const int IGB耗散矩阵 = 6279;
internal const int IOR电磁矩阵 = 6279;
internal const int IGB奇点矩阵 = 6280;
internal const int IOR勘探船 = 6280;
internal const int IGB钨矿粉 = 6281;
internal const int IOR超空间中继器基座 = 6281;
internal const int IGB基础机械组件 = 6501;
internal const int IOR轨道熔炼站 = 6501;
internal const int IGB先进机械组件 = 6502;
internal const int IOR数学率引擎深蓝之井运载火箭 = 6502;
internal const int IGB尖端机械组件 = 6503;
internal const int IOR数学率引擎算力架构组件 = 6503;
internal const int IGB超级机械组件 = 6504;
internal const int IOR数学率引擎算力架构运载火箭 = 6504;
internal const int IGB创世之书 = 6506;
internal const int IOR轨道反物质堆基座 = 6506;
internal const int IGB虚空之书 = 6507;
internal const int IOR此科技不消耗物品研究1 = 6507;
internal const int IGB起源之书 = 6508;
internal const int IOR此科技不消耗物品研究2 = 6508;
internal const int IGB空燃料棒 = 6509;
internal const int IOR此科技不消耗物品研究3 = 6509;
internal const int IGB开发者日志01 = 6511;
internal const int IOR超空间中继器核心 = 6511;
internal const int IGB开发者日志02 = 6512;
internal const int IOR预制星舰模块 = 6512;
internal const int IGB开发者日志03 = 6513;
internal const int IOR重型电磁弹射器 = 6513;
internal const int IGB开发者日志04 = 6514;
internal const int IOR轨道空投引导站 = 6514;
internal const int IGB开发者日志05 = 6515;
internal const int IGB开发者日志06 = 6516;
internal const int IGB开发者日志07 = 6517;
internal const int IGB开发者日志08 = 6518;
internal const int IGB开发者日志09 = 6519;
internal const int IGB开发者日志10 = 6520;
internal const int IGB开发者日志11 = 6521;
internal const int IGB电力节约 = 6522;
internal const int IGB上传扩容 = 6523;
internal const int IGB燃料回收 = 6524;
internal const int IGB风力扩容 = 6525;
internal const int IGB光伏扩容 = 6526;
internal const int IGB热聚增效 = 6527;
internal const int IGB资源采掘 = 6528;
internal const int IGB裂变增效 = 6529;
internal const int IGB先进推进 = 6530;
internal const int IGB特征向量模拟 = 6531;
internal const int IGB中继信号干扰 = 6532;
internal const int IGB神经元重编程 = 6533;
internal const int IGB异常代码分析 = 6534;
internal const int IGB氨 = 7002;
internal const int IOR增生组织 = 7002;
internal const int IGB苯 = 7006;
internal const int IGB丙烯 = 7009;
internal const int IOR轻油 = 7009;
internal const int IGB盐酸 = 7014;
internal const int IGB三氯化铁 = 7015;
internal const int IGB硝酸 = 7017;
internal const int IGB海水 = 7018;
internal const int IOR重水 = 7018;
internal const int IGB氧 = 7019;
internal const int IGB氢氧化钠 = 7020;
internal const int IGB氯化钠 = 7101;
internal const int IGB塑料基板 = 7501;
internal const int IGB光学基板 = 7504;
internal const int IGB钢芯弹箱 = 7607;
internal const int IOR钢芯弹箱 = 7607;
internal const int IGB钨芯弹箱 = 7608;
internal const int IOR贫铀弹箱 = 7608;
internal const int IGB三元弹箱 = 7609;
internal const int IOR零素矢 = 7609;
internal const int IGB核子爆破单元 = 7610;
internal const int IOR金属氢单元 = 7610;
internal const int IGB反物质湮灭单元 = 7611;
internal const int IGB微型核弹组 = 7612;
internal const int IOR金属氢炮弹组 = 7612;
internal const int IGB反物质炮弹组 = 7613;
internal const int IOR反物质炮弹 = 7613;
internal const int IGB反物质导弹组 = 7615;
internal const int IOR启示录聚变弹 = 7615;
internal const int IGB湮灭弹箱 = 7616;
internal const int IOR湮灭弹药箱 = 7616;
internal const int IGB电磁加农炮 = 7617;
internal const int IOR聚爆加农炮MK2 = 7617;
internal const int IGB紫外激光塔 = 7618;
internal const int IOR高频激光塔MK2 = 7618;
internal const int IGB钨块 = 7705;
internal const int IOR磁流体 = 7705;
internal const int IGB钨强化玻璃 = 7706;
internal const int IOR石墨矿 = 7706;
internal const int IGB钨合金 = 7707;
internal const int IOR战术核导弹 = 7707;
internal const int IGB聚苯硫醚PPS = 7708;
internal const int IOR纳米塑料纤维 = 7708;
internal const int IGB聚酰亚胺PI = 7709;
internal const int IOR聚酰亚胺 = 7709;
internal const int IGB光学处理器 = 7803;
internal const int IOR光学处理器 = 7803;
internal const int IGB光学信息传输纤维 = 7804;
internal const int IOR光纤 = 7804;
internal const int IGB量子计算主机 = 7805;
internal const int IOR量子计算机550MAGI = 7805;
internal const int IGB超越X1型光学主机 = 7806;
internal const int IOR光学计算机 = 7806;
internal const int IFE电磁奖券 = 8001;
internal const int IFE能量奖券 = 8002;
internal const int IFE结构奖券 = 8003;
internal const int IFE信息奖券 = 8004;
internal const int IFE引力奖券 = 8005;
internal const int IFE宇宙奖券 = 8006;
internal const int IFE黑雾奖券 = 8007;
internal const int IFE分馏塔原胚I型 = 8011;
internal const int IFE分馏塔原胚II型 = 8012;
internal const int IFE分馏塔原胚III型 = 8013;
internal const int IFE分馏塔原胚IV型 = 8014;
internal const int IFE分馏塔原胚V型 = 8015;
internal const int IFE分馏塔定向原胚 = 8016;
internal const int IFE分馏配方核心 = 8017;
internal const int IFE分馏塔增幅芯片 = 8018;
internal const int IFE交互塔 = 8021;
internal const int IFE矿物复制塔 = 8022;
internal const int IFE点数聚集塔 = 8023;
internal const int IFE量子复制塔 = 8024;
internal const int IFE点金塔 = 8025;
internal const int IFE分解塔 = 8026;
internal const int IFE转化塔 = 8027;
internal const int IFE行星内物流交互站 = 8028;
internal const int IFE星际物流交互站 = 8029;
internal const int IFE行星交互塔 = 8031;
internal const int IFE行星矿物复制塔 = 8032;
internal const int IFE行星点数聚集塔 = 8033;
internal const int IFE行星量子复制塔 = 8034;
internal const int IFE行星点金塔 = 8035;
internal const int IFE行星分解塔 = 8036;
internal const int IFE行星转化塔 = 8037;
internal const int IFE复制精华 = 8041;
internal const int IFE点金精华 = 8042;
internal const int IFE分解精华 = 8043;
internal const int IFE转化精华 = 8044;
internal const int IFE万物分馏商店刷新提示 = 8048;
internal const int IFE万物分馏科技解锁说明 = 8049;
internal const int IBC插件效果分享塔 = 8051;
internal const int IBC插件效果分享站 = 8052;
internal const int IBC速度插件MK1 = 8061;
internal const int IBC速度插件MK2 = 8062;
internal const int IBC速度插件MK3 = 8063;
internal const int IBC产能插件MK1 = 8064;
internal const int IBC产能插件MK2 = 8065;
internal const int IBC产能插件MK3 = 8066;
internal const int IBC节能插件MK1 = 8067;
internal const int IBC节能插件MK2 = 8068;
internal const int IBC节能插件MK3 = 8069;
internal const int IBC品质插件MK1 = 8070;
internal const int IBC品质插件MK2 = 8071;
internal const int IBC品质插件MK3 = 8072;
internal const int ISM熔炉采矿机A型 = 9446;
internal const int ISM熔炉采矿机B型 = 9447;
internal const int ISM化工采矿机C型 = 9448;
internal const int ICCBS能量核心 = 9446;
internal const int ICCBS能量核心满 = 9447;
internal const int ICCBS星际能量枢纽 = 9448;
internal const int ICCBS星际能量枢纽MK2 = 9449;
internal const int ISM大型熔炉采矿机A型 = 9466;
internal const int ISM大型熔炉采矿机B型 = 9467;
internal const int ISM大型化工采矿机C型 = 9468;
internal const int ISM等离子精炼油井 = 9469;
internal const int IMS引力发生装置 = 9480;
internal const int IMS位面约束环 = 9481;
internal const int IMS引力钻头 = 9482;
internal const int IMS隧穿激发装置 = 9483;
internal const int IMS谐振盘 = 9484;
internal const int IMS光子探针 = 9485;
internal const int IMS量子计算机 = 9486;
internal const int IMS星际组装厂组件 = 9487;
internal const int IMS物质解压器运载火箭 = 9488;
internal const int IMS科学枢纽运载火箭 = 9489;
internal const int IMS谐振发射器运载火箭 = 9490;
internal const int IMS星际组装厂运载火箭 = 9491;
internal const int IMS晶体重构器运载火箭 = 9492;
internal const int IMS星际组装厂生产机器图标专用 = 9493;
internal const int IMS铜金属重构装置 = 9494;
internal const int IMS高纯硅重构装置 = 9495;
internal const int IMS钛金属重构装置 = 9496;
internal const int IMS单极磁石重构装置 = 9497;
internal const int IMS晶体接收器 = 9498;
internal const int IMS组件集成装置 = 9499;
internal const int IMS多功能集成组件 = 9500;
internal const int IMS石墨提炼装置 = 9501;
internal const int IMS光栅晶体接收器 = 9502;
internal const int IMS力场发生器 = 9503;
internal const int IMS复合态晶体 = 9504;
internal const int IMS电磁力抑制器 = 9505;
internal const int IMS胶子发生器 = 9506;
internal const int IMS强力过载装置 = 9507;
internal const int IMS导流框架 = 9508;
internal const int IMS恒星炮组件 = 9509;
internal const int IMS恒星炮运载火箭 = 9510;
internal const int IMS水滴 = 9511;
internal const int IMS物资交换物流站 = 9512;
internal const int IVD星河卫士勋章 = 9513;
internal const int IVD水滴额外伤害 = 9514;
internal const int ICCBS_xxldm_能量核心 = 9946;
internal const int ICCBS_xxldm_能量核心满 = 9947;
internal const int ICCBS_xxldm_星际能量枢纽 = 9948;
internal const int ICCBS_xxldm_星际能量枢纽MK2 = 9949;
internal const int M传送带 = 35;
internal const int M高速传送带 = 36;
internal const int M极速传送带 = 37;
internal const int M四向分流器 = 38;
internal const int M分拣器 = 41;
internal const int M高速分拣器 = 42;
internal const int M极速分拣器 = 43;
internal const int M电力感应塔 = 44;
internal const int M能量枢纽 = 45;
internal const int M蓄电器 = 46;
internal const int M蓄电器满 = 46;
internal const int M物流运输机 = 47;
internal const int M星际物流运输船 = 48;
internal const int M行星内物流运输站 = 49;
internal const int M星际物流运输站 = 50;
internal const int MMS物资交换物流站 = 50;
internal const int M小型储物仓 = 51;
internal const int M大型储物仓 = 52;
internal const int M风力涡轮机 = 53;
internal const int M火力发电厂 = 54;
internal const int MGB燃料电池发电厂 = 54;
internal const int M太阳能板 = 55;
internal const int M人造恒星 = 56;
internal const int MGB朱曦K型人造恒星 = 56;
internal const int M采矿机 = 57;
internal const int M抽水站 = 60;
internal const int M原油萃取站 = 61;
internal const int M电弧熔炉 = 62;
internal const int M原油精炼厂 = 63;
internal const int M化工厂 = 64;
internal const int M制造台MkI = 65;
internal const int MGB基础制造台 = 65;
internal const int M制造台MkII = 66;
internal const int MGB标准制造单元 = 66;
internal const int M制造台MkIII = 67;
internal const int MGB高精度装配线 = 67;
internal const int M卫星配电站 = 68;
internal const int M微型粒子对撞机 = 69;
internal const int M矩阵研究站 = 70;
internal const int M无线输电塔 = 71;
internal const int M电磁轨道弹射器 = 72;
internal const int M射线接收站 = 73;
internal const int MMS射线重构站 = 73;
internal const int M垂直发射井 = 74;
internal const int M小型运载火箭 = 75;
internal const int M轨道采集器 = 117;
internal const int M微型聚变发电站 = 118;
internal const int MGB裂变能源发电站 = 118;
internal const int M分馏塔 = 119;
internal const int M喷涂机 = 120;
internal const int M储液罐 = 121;
internal const int M位面熔炉 = 194;
internal const int M流速监测器 = 208;
internal const int M地热发电站 = 255;
internal const int M大型采矿机 = 256;
internal const int M自动集装机 = 257;
internal const int M物流配送器 = 371;
internal const int M配送运输机 = 372;
internal const int M高频激光塔 = 373;
internal const int M高斯机枪塔 = 374;
internal const int M聚爆加农炮 = 375;
internal const int M量子化工厂 = 376;
internal const int MGB先进化学反应釜 = 376;
internal const int M行星护盾发生器 = 402;
internal const int M信号塔 = 403;
internal const int M导弹防御塔 = 407;
internal const int M磁化电浆炮 = 408;
internal const int M干扰塔 = 422;
internal const int M导弹组 = 432;
internal const int M超音速导弹组 = 433;
internal const int M引力导弹组 = 434;
internal const int M原型机 = 448;
internal const int M精准无人机 = 449;
internal const int M攻击无人机 = 450;
internal const int M护卫舰 = 451;
internal const int M驱逐舰 = 452;
internal const int M战场分析基站 = 453;
internal const int M自演化研究站 = 455;
internal const int M重组式制造台 = 456;
internal const int MGB物质重组工厂 = 456;
internal const int M负熵熔炉 = 457;
internal const int M近程电浆塔 = 482;
internal const int M集装分拣器 = 483;
internal const int M炮弹组 = 486;
internal const int M高爆炮弹组 = 487;
internal const int M晶石炮弹组 = 488;
internal const int MGB微型核弹组 = 488;
internal const int M燃烧单元 = 489;
internal const int M爆破单元 = 490;
internal const int M晶石爆破单元 = 491;
internal const int MGB反物质湮灭单元 = 491;
internal const int M干扰胶囊 = 492;
internal const int M压制胶囊 = 493;
internal const int M水 = 494;
internal const int MFE交互塔 = 601;
internal const int MFE矿物复制塔 = 602;
internal const int MFE点数聚集塔 = 603;
internal const int MFE量子复制塔 = 604;
internal const int MFE点金塔 = 605;
internal const int MFE分解塔 = 606;
internal const int MFE转化塔 = 607;
internal const int MFE行星内物流交互站 = 608;
internal const int MFE星际物流交互站 = 609;
internal const int MFE行星交互塔 = 611;
internal const int MFE行星矿物复制塔 = 612;
internal const int MFE行星点数聚集塔 = 613;
internal const int MFE行星量子复制塔 = 614;
internal const int MFE行星点金塔 = 615;
internal const int MFE行星分解塔 = 616;
internal const int MFE行星转化塔 = 617;
internal const int MBC插件效果分享塔 = 621;
internal const int MBC插件效果分享站 = 622;
internal const int MGB量子储液罐 = 801;
internal const int MGB矿物处理厂 = 802;
internal const int MGB天穹装配厂 = 803;
internal const int MGB物质裂解塔 = 804;
internal const int MGB埃克森美孚化工厂 = 805;
internal const int MGB工业先锋精密加工中心 = 806;
internal const int MGB湛曦O型人造恒星 = 807;
internal const int MGB聚束液体汲取设施 = 808;
internal const int MGB同位素温差发电机 = 809;
internal const int MGB物质分解设施 = 810;
internal const int MGB苍穹粒子加速器 = 811;
internal const int MGB大气采集站 = 812;
internal const int MGB反物质导弹组 = 813;
internal const int MGB量子储物仓 = 814;
internal const int MGB电磁加农炮 = 815;
internal const int MGB紫外激光塔 = 816;
internal const int MGB核子爆破单元 = 817;
internal const int MGB反物质炮弹组 = 818;
internal const int R铁块 = 1;
internal const int R磁铁 = 2;
internal const int RGB铜线圈 = 2;
internal const int R铜块 = 3;
internal const int R石材 = 4;
internal const int R齿轮 = 5;
internal const int RGB湮灭弹药箱 = 5;
internal const int R磁线圈 = 6;
internal const int RGB电路板 = 6;
internal const int R风力涡轮机 = 7;
internal const int R电力感应塔 = 8;
internal const int R电磁矩阵 = 9;
internal const int R矩阵研究站 = 10;
internal const int R棱镜 = 11;
internal const int R电浆激发器 = 12;
internal const int R无线输电塔 = 13;
internal const int R原油萃取站 = 14;
internal const int R原油精炼厂 = 15;
internal const int R等离子精炼 = 16;
internal const int R高能石墨 = 17;
internal const int R能量矩阵 = 18;
internal const int R液氢燃料棒 = 19;
internal const int R推进器 = 20;
internal const int R加力推进器 = 21;
internal const int R化工厂 = 22;
internal const int R塑料 = 23;
internal const int RGB聚丙烯 = 23;
internal const int R硫酸 = 24;
internal const int R有机晶体 = 25;
internal const int RGB铝块 = 25;
internal const int R钛晶石 = 26;
internal const int RGB铝合金 = 26;
internal const int R结构矩阵 = 27;
internal const int R卡西米尔晶体 = 28;
internal const int R卡西米尔晶体高效 = 29;
internal const int R钛化玻璃 = 30;
internal const int R石墨烯 = 31;
internal const int R石墨烯高效 = 32;
internal const int R碳纳米管 = 33;
internal const int R硅石 = 34;
internal const int RGB硅石筛选 = 34;
internal const int R碳纳米管高效 = 35;
internal const int R粒子宽带 = 36;
internal const int R晶格硅 = 37;
internal const int R位面过滤器 = 38;
internal const int R微型粒子对撞机 = 39;
internal const int R重氢 = 40;
internal const int R氘核燃料棒 = 41;
internal const int R湮灭约束球 = 42;
internal const int R人造恒星 = 43;
internal const int RGB朱曦K型人造恒星 = 43;
internal const int R反物质燃料棒 = 44;
internal const int R制造台MkI = 45;
internal const int RGB基础制造台 = 45;
internal const int R制造台MkII = 46;
internal const int RGB标准制造单元 = 46;
internal const int R制造台MkIII = 47;
internal const int RGB高精度装配线 = 47;
internal const int R采矿机 = 48;
internal const int R抽水站 = 49;
internal const int R电路板 = 50;
internal const int RGB玻璃 = 50;
internal const int R处理器 = 51;
internal const int R量子芯片 = 52;
internal const int R微晶元件 = 53;
internal const int R有机晶体原始 = 54;
internal const int RGB埃克森美孚化工厂 = 54;
internal const int R信息矩阵 = 55;
internal const int R电弧熔炉 = 56;
internal const int R玻璃 = 57;
internal const int RGB三元精金 = 57;
internal const int RX射线裂解 = 58;
internal const int R高纯硅块 = 59;
internal const int R金刚石 = 60;
internal const int R金刚石高效 = 61;
internal const int R晶格硅高效 = 62;
internal const int R钢材 = 63;
internal const int R火力发电厂 = 64;
internal const int RGB燃料电池发电厂 = 64;
internal const int R钛块 = 65;
internal const int R钛合金 = 66;
internal const int R太阳能板 = 67;
internal const int R光子合并器 = 68;
internal const int R光子合并器高效 = 69;
internal const int R太阳帆 = 70;
internal const int R电磁轨道弹射器 = 71;
internal const int R射线接收站 = 72;
internal const int RMS射线重构站 = 72;
internal const int R卫星配电站 = 73;
internal const int R质能储存 = 74;
internal const int R宇宙矩阵 = 75;
internal const int R蓄电器 = 76;
internal const int R能量枢纽 = 77;
internal const int R空间翘曲器 = 78;
internal const int R空间翘曲器高级 = 79;
internal const int R框架材料 = 80;
internal const int R戴森球组件 = 81;
internal const int R垂直发射井 = 82;
internal const int R小型运载火箭 = 83;
internal const int R传送带 = 84;
internal const int R分拣器 = 85;
internal const int R小型储物仓 = 86;
internal const int R四向分流器 = 87;
internal const int R高速分拣器 = 88;
internal const int R高速传送带 = 89;
internal const int R极速分拣器 = 90;
internal const int R大型储物仓 = 91;
internal const int R极速传送带 = 92;
internal const int R行星内物流运输站 = 93;
internal const int R物流运输机 = 94;
internal const int R星际物流运输站 = 95;
internal const int R星际物流运输船 = 96;
internal const int R电动机 = 97;
internal const int R电磁涡轮 = 98;
internal const int R粒子容器 = 99;
internal const int R粒子容器高效 = 100;
internal const int R引力透镜 = 101;
internal const int R引力矩阵 = 102;
internal const int R超级磁场环 = 103;
internal const int R奇异物质 = 104;
internal const int R动力引擎 = 105;
internal const int R增产剂MkI = 106;
internal const int RGB氦核转化 = 106;
internal const int R增产剂MkII = 107;
internal const int RGB氦原子提取 = 107;
internal const int R增产剂MkIII = 108;
internal const int RGB增产剂 = 108;
internal const int R喷涂机 = 109;
internal const int R分馏塔 = 110;
internal const int RGB湛曦O型人造恒星 = 110;
internal const int R轨道采集器 = 111;
internal const int R地基 = 112;
internal const int R微型聚变发电站 = 113;
internal const int RGB裂变能源发电站 = 113;
internal const int R储液罐 = 114;
internal const int R重氢分馏 = 115;
internal const int RGB氦闪约束器 = 115;
internal const int R位面熔炉 = 116;
internal const int R流速监测器 = 117;
internal const int R地热发电站 = 118;
internal const int R大型采矿机 = 119;
internal const int R自动集装机 = 120;
internal const int R重整精炼 = 121;
internal const int RGB铝矿粉 = 121;
internal const int R物流配送器 = 122;
internal const int R配送运输机 = 123;
internal const int R量子化工厂 = 124;
internal const int RGB先进化学反应釜 = 124;
internal const int R高斯机枪塔 = 125;
internal const int R高频激光塔 = 126;
internal const int R聚爆加农炮 = 127;
internal const int R磁化电浆炮 = 128;
internal const int R导弹防御塔 = 129;
internal const int R干扰塔 = 130;
internal const int R信号塔 = 131;
internal const int R行星护盾发生器 = 132;
internal const int R燃烧单元 = 133;
internal const int R爆破单元 = 134;
internal const int R晶石爆破单元 = 135;
internal const int RGB核子爆破单元 = 135;
internal const int R机枪弹箱 = 136;
internal const int R钛化弹箱 = 137;
internal const int R超合金弹箱 = 138;
internal const int R炮弹组 = 139;
internal const int R高爆炮弹组 = 140;
internal const int R晶石炮弹组 = 141;
internal const int RGB微型核弹组 = 141;
internal const int R等离子胶囊 = 142;
internal const int R反物质胶囊 = 143;
internal const int R导弹组 = 144;
internal const int R超音速导弹组 = 145;
internal const int R引力导弹组 = 146;
internal const int R原型机 = 147;
internal const int R精准无人机 = 148;
internal const int R攻击无人机 = 149;
internal const int R护卫舰 = 150;
internal const int R驱逐舰 = 151;
internal const int R战场分析基站 = 152;
internal const int R自演化研究站 = 153;
internal const int R重组式制造台 = 154;
internal const int RGB物质重组工厂 = 154;
internal const int R负熵熔炉 = 155;
internal const int R奇异湮灭燃料棒 = 156;
internal const int R近程电浆塔 = 157;
internal const int R干扰胶囊 = 158;
internal const int R压制胶囊 = 159;
internal const int R集装分拣器 = 160;
internal const int RMS引力发生装置 = 530;
internal const int RMS位面约束环 = 531;
internal const int RMS引力钻头 = 532;
internal const int RMS隧穿激发装置 = 533;
internal const int RMS谐振盘 = 534;
internal const int RMS光子探针 = 535;
internal const int RMS量子计算机 = 536;
internal const int RMS星际组装厂组件 = 537;
internal const int RMS物质解压器运载火箭 = 538;
internal const int RMS科学枢纽运载火箭 = 539;
internal const int RMS谐振发射器运载火箭 = 540;
internal const int RMS星际组装厂运载火箭 = 541;
internal const int RMS晶体重构器运载火箭 = 542;
internal const int RMS星际组装厂生产机器图标专用 = 543;
internal const int RMS铜金属重构装置 = 544;
internal const int RMS高纯硅重构装置 = 545;
internal const int RMS钛金属重构装置 = 546;
internal const int RMS单极磁石重构装置 = 547;
internal const int RMS晶体接收器 = 548;
internal const int RMS组件集成装置 = 549;
internal const int RMS多功能集成组件 = 550;
internal const int RMS传送带快速组装 = 551;
internal const int RMS集装分拣器快速组装 = 352;
internal const int RMS制造台4快速组装 = 353;
internal const int RMS熔炉3快速组装 = 354;
internal const int RMS实验室2快速组装 = 355;
internal const int RMS大矿机快速组装 = 356;
internal const int RMS抽水泵快速组装 = 357;
internal const int RMS石墨提炼装置 = 563;
internal const int RMS光栅晶体接收器 = 564;
internal const int RMS力场发生器 = 565;
internal const int RMS复合态晶体 = 566;
internal const int RMS电磁力抑制器 = 567;
internal const int RMS胶子发生器 = 568;
internal const int RMS强力过载装置 = 569;
internal const int RMS导流框架 = 570;
internal const int RMS恒星炮组件 = 571;
internal const int RMS恒星炮运载火箭 = 572;
internal const int RMS水滴gm = 573;
internal const int RMS物资交换物流站 = 575;
internal const int RVD星河卫士奖章 = 382;
internal const int RGB放射性矿物处理 = 401;
internal const int RGB铝矿精炼 = 402;
internal const int RGB钨矿精炼 = 404;
internal const int RGB钨矿粉 = 405;
internal const int RGB含铀核燃料 = 406;
internal const int RGB含钚核燃料 = 407;
internal const int RGB铀燃料棒 = 408;
internal const int RGB钚燃料棒 = 409;
internal const int RGBMOX燃料棒 = 410;
internal const int RGB铁矿精炼 = 411;
internal const int RGB铜矿精炼 = 412;
internal const int RGB硅矿精炼 = 413;
internal const int RGB钛矿精炼 = 414;
internal const int RGB天穹装配厂 = 416;
internal const int RGB苍穹粒子加速器 = 417;
internal const int RGB聚束液体汲取设施 = 418;
internal const int RGB大气采集站 = 419;
internal const int RGB石矿精炼 = 420;
internal const int RGB煤矿精炼 = 421;
internal const int RGB工业先锋精密加工中心 = 422;
internal const int RGB物质分解设施 = 423;
internal const int RGB物质回收 = 429;
internal const int RGB焦油裂化 = 501;
internal const int RGB二氧化碳 = 506;
internal const int RGB催化重整 = 509;
internal const int RGB四氢双环戊二烯JP10 = 512;
internal const int RGB四氢双环戊二烯燃料棒 = 515;
internal const int RGB焦油燃料棒 = 516;
internal const int RGB处理器高效 = 519;
internal const int RGB量子储液罐 = 522;
internal const int RGB矿物处理厂 = 523;
internal const int RGB量子储物仓 = 524;
internal const int RGB铁矿粉 = 531;
internal const int RGB铜矿粉 = 532;
internal const int RGB硅矿粉 = 533;
internal const int RGB钛矿粉 = 534;
internal const int RGB石粉 = 535;
internal const int RGB煤矿粉 = 536;
internal const int RGB硫粉 = 537;
internal const int RGB玻色矩阵 = 539;
internal const int RGB耗散矩阵 = 540;
internal const int RGB质能储存高效 = 541;
internal const int RGB物质裂解塔 = 542;
internal const int RGB奇点矩阵 = 544;
internal const int RGB有机晶体 = 546;
internal const int RGB能量物质化 = 547;
internal const int RGB二氧化硫还原 = 548;
internal const int RGB有机晶体活化 = 549;
internal const int RGB有机晶体重组 = 550;
internal const int RMS分拣器快速组装 = 552;
internal const int RMS配电站快速组装 = 553;
internal const int RMS制造台快速组装 = 554;
internal const int RMS位面熔炉快速组装 = 555;
internal const int RMS化工厂快速组装 = 556;
internal const int RMS精炼厂快速组装 = 557;
internal const int RMS对撞机快速组装 = 558;
internal const int RMS研究站快速组装 = 559;
internal const int RMS人造恒星快速组装 = 560;
internal const int RMS行星内物流快速组装 = 561;
internal const int RMS星际物流快速组装 = 562;
internal const int RGB超越X1型光学主机 = 569;
internal const int RGB氘氦混合燃料棒 = 624;
internal const int RGB氦三燃料棒 = 625;
internal const int RGB基础机械组件 = 641;
internal const int RGB先进机械组件 = 642;
internal const int RGB尖端机械组件 = 643;
internal const int RGB空燃料棒 = 644;
internal const int RGB水电解 = 702;
internal const int RGB盐水电解 = 703;
internal const int RGB钠盐转化 = 704;
internal const int RGB钛晶石高效 = 709;
internal const int RGB合成氨 = 710;
internal const int RGB煤炭液化 = 712;
internal const int RGB焦油分馏 = 713;
internal const int RGB钛晶石 = 714;
internal const int RGB三氯化铁 = 716;
internal const int RGB氨氧化 = 717;
internal const int RGB羰基合成 = 720;
internal const int RGB塑料基板 = 751;
internal const int RGB同位素温差发电机 = 752;
internal const int RGB光学基板 = 754;
internal const int RGB聚苯硫醚PPS = 771;
internal const int RGB聚酰亚胺PI = 772;
internal const int RGB钨矿筛选 = 773;
internal const int RGB钨块 = 774;
internal const int RGB钨强化玻璃 = 775;
internal const int RGB钨合金 = 776;
internal const int RGB钢芯弹箱 = 781;
internal const int RGB钨芯弹箱 = 782;
internal const int RGB三元弹箱 = 783;
internal const int RGB反物质湮灭单元 = 785;
internal const int RGB反物质炮弹组 = 787;
internal const int RGB反物质导弹组 = 789;
internal const int RGB电磁加农炮 = 791;
internal const int RGB紫外激光塔 = 792;
internal const int RGB光学处理器 = 793;
internal const int RGB光学信息传输纤维 = 794;
internal const int RGB量子计算主机 = 795;
internal const int RGB海水淡化 = 801;
internal const int RFE电磁奖券 = 901;
internal const int RFE能量奖券 = 902;
internal const int RFE结构奖券 = 903;
internal const int RFE信息奖券 = 904;
internal const int RFE引力奖券 = 905;
internal const int RFE宇宙奖券 = 906;
internal const int RFE黑雾奖券 = 907;
internal const int RFE分馏塔原胚定向 = 916;
internal const int RFE交互塔 = 921;
internal const int RFE矿物复制塔 = 922;
internal const int RFE点数聚集塔 = 923;
internal const int RFE量子复制塔 = 924;
internal const int RFE点金塔 = 925;
internal const int RFE分解塔 = 926;
internal const int RFE转化塔 = 927;
internal const int RFE行星内物流交互站 = 928;
internal const int RFE星际物流交互站 = 929;
internal const int RFE行星交互塔 = 931;
internal const int RFE行星矿物复制塔 = 932;
internal const int RFE行星点数聚集塔 = 933;
internal const int RFE行星量子复制塔 = 934;
internal const int RFE行星点金塔 = 935;
internal const int RFE行星分解塔 = 936;
internal const int RFE行星转化塔 = 937;
internal const int RBC插件效果分享塔 = 951;
internal const int RBC插件效果分享站 = 952;
internal const int RBC速度插件MK1 = 961;
internal const int RBC速度插件MK2 = 962;
internal const int RBC速度插件MK3 = 963;
internal const int RBC产能插件MK1 = 964;
internal const int RBC产能插件MK2 = 965;
internal const int RBC产能插件MK3 = 966;
internal const int RBC节能插件MK1 = 967;
internal const int RBC节能插件MK2 = 968;
internal const int RBC节能插件MK3 = 969;
internal const int RBC品质插件MK1 = 970;
internal const int RBC品质插件MK2 = 971;
internal const int RBC品质插件MK3 = 972;
internal const int T戴森球计划 = 1;
internal const int T电磁学 = 1001;
internal const int T电磁矩阵 = 1002;
internal const int T高效电浆控制 = 1101;
internal const int T等离子萃取精炼 = 1102;
internal const int TX射线裂解 = 1103;
internal const int T重整精炼 = 1104;
internal const int TGB先进有机合成技术 = 1104;
internal const int T能量矩阵 = 1111;
internal const int T氢燃料棒 = 1112;
internal const int TGB气体冷凝 = 1112;
internal const int T推进器 = 1113;
internal const int T加力推进器 = 1114;
internal const int T流体储存封装 = 1120;
internal const int T基础化工 = 1121;
internal const int T高分子化工 = 1122;
internal const int T高强度晶体 = 1123;
internal const int T结构矩阵 = 1124;
internal const int T卡西米尔晶体 = 1125;
internal const int T高强度玻璃 = 1126;
internal const int T应用型超导体 = 1131;
internal const int T高强度材料 = 1132;
internal const int T粒子可控 = 1133;
internal const int T重氢分馏 = 1134;
internal const int TGB强相互作用力材料 = 1134;
internal const int T波函数干扰 = 1141;
internal const int T微型粒子对撞机 = 1142;
internal const int TGB粒子对撞机 = 1142;
internal const int T奇异物质 = 1143;
internal const int T人造恒星 = 1144;
internal const int TGB质能转换利用 = 1144;
internal const int T可控湮灭反应 = 1145;
internal const int T增产剂MkI = 1151;
internal const int TGB物品增产 = 1151;
internal const int T增产剂MkII = 1152;
internal const int TGB量子折跃 = 1152;
internal const int T增产剂MkIII = 1153;
internal const int TGB人造恒星 = 1153;
internal const int T基础制造 = 1201;
internal const int T高速制造 = 1202;
internal const int TGB标准制造单元 = 1202;
internal const int T量子打印 = 1203;
internal const int TGB高精度加工 = 1203;
internal const int TFE分馏数据中心 = 1251;
internal const int TFE分馏塔原胚 = 1252;
internal const int TFE物品交互 = 1253;
internal const int TFE矿物复制 = 1254;
internal const int TFE增产点数聚集 = 1255;
internal const int TFE量子复制 = 1256;
internal const int TFE物品点金 = 1257;
internal const int TFE物品分解 = 1258;
internal const int TFE物品转化 = 1259;
internal const int TFE行星物品交互 = 1260;
internal const int TFE行星矿物复制 = 1261;
internal const int TFE行星增产点数聚集 = 1262;
internal const int TFE行星量子复制 = 1263;
internal const int TFE行星物品点金 = 1264;
internal const int TFE行星物品分解 = 1265;
internal const int TFE行星物品转化 = 1266;
internal const int TFE电磁奖券 = 1271;
internal const int TFE能量奖券 = 1272;
internal const int TFE结构奖券 = 1273;
internal const int TFE信息奖券 = 1274;
internal const int TFE引力奖券 = 1275;
internal const int TFE宇宙奖券 = 1276;
internal const int TFE黑雾奖券 = 1277;
internal const int TFE超值礼包1 = 1281;
internal const int TFE超值礼包2 = 1282;
internal const int TFE超值礼包3 = 1283;
internal const int TFE超值礼包4 = 1284;
internal const int TFE超值礼包5 = 1285;
internal const int TFE超值礼包6 = 1286;
internal const int TFE超值礼包7 = 1287;
internal const int TFE超值礼包8 = 1288;
internal const int TFE超值礼包9 = 1289;
internal const int T处理器 = 1302;
internal const int T量子芯片 = 1303;
internal const int T光子聚束采矿 = 1304;
internal const int T亚微观量子纠缠 = 1305;
internal const int TGB化学反应釜压力容器 = 1305;
internal const int T半导体材料 = 1311;
internal const int T信息矩阵 = 1312;
internal const int T自动化冶金 = 1401;
internal const int T冶炼提纯 = 1402;
internal const int T晶体冶炼 = 1403;
internal const int T钢材冶炼 = 1411;
internal const int T火力发电 = 1412;
internal const int TGB燃料电池发电 = 1412;
internal const int T钛矿冶炼 = 1413;
internal const int T高强度钛合金 = 1414;
internal const int T移山填海工程 = 1415;
internal const int TGB工业生产 = 1415;
internal const int T微型核聚变发电 = 1416;
internal const int TGB裂变发电站 = 1416;
internal const int T位面冶金 = 1417;
internal const int T太阳能收集 = 1501;
internal const int T光子变频 = 1502;
internal const int T太阳帆轨道系统 = 1503;
internal const int T射线接收站 = 1504;
internal const int T行星电离层利用 = 1505;
internal const int T狄拉克逆变机制 = 1506;
internal const int T宇宙矩阵 = 1507;
internal const int T任务完成 = 1508;
internal const int T能量储存 = 1511;
internal const int T星际电力运输 = 1512;
internal const int T地热开采 = 1513;
internal const int T高强度轻质结构 = 1521;
internal const int T垂直发射井 = 1522;
internal const int T戴森球应力系统 = 1523;
internal const int T基础物流系统 = 1601;
internal const int T改良物流系统 = 1602;
internal const int T高效物流系统 = 1603;
internal const int T行星物流系统 = 1604;
internal const int T星际物流系统 = 1605;
internal const int T气态行星开采 = 1606;
internal const int T集装物流系统 = 1607;
internal const int T配送物流系统 = 1608;
internal const int T电磁驱动 = 1701;
internal const int T磁悬浮 = 1702;
internal const int T粒子磁力阱 = 1703;
internal const int T引力波折射 = 1704;
internal const int T引力矩阵 = 1705;
internal const int T超级磁场发生器 = 1711;
internal const int T卫星配电系统 = 1712;
internal const int T武器系统 = 1801;
internal const int T燃烧单元 = 1802;
internal const int T爆破单元 = 1803;
internal const int T晶石爆破单元 = 1804;
internal const int TGB核能爆破单元 = 1804;
internal const int T动力引擎 = 1805;
internal const int T导弹防御塔 = 1806;
internal const int T聚爆加农炮 = 1807;
internal const int T信号塔 = 1808;
internal const int T行星防御系统 = 1809;
internal const int T干扰塔 = 1810;
internal const int T磁化电浆炮 = 1811;
internal const int T钛化弹箱 = 1812;
internal const int TGB钢芯穿甲弹 = 1812;
internal const int T超合金弹箱 = 1813;
internal const int TGB钛金强化弹壳 = 1813;
internal const int T高爆炮弹组 = 1814;
internal const int T超音速导弹组 = 1815;
internal const int T晶石炮弹组 = 1816;
internal const int TGB微型核弹 = 1816;
internal const int T引力导弹组 = 1817;
internal const int T反物质胶囊 = 1818;
internal const int T原型机 = 1819;
internal const int T精准无人机 = 1820;
internal const int T攻击无人机 = 1821;
internal const int T护卫舰 = 1822;
internal const int T驱逐舰 = 1823;
internal const int T压制胶囊 = 1824;
internal const int T战场分析基站 = 1826;
internal const int TGB科学理论 = 1900;
internal const int T数字模拟计算 = 1901;
internal const int T物质重组 = 1902;
internal const int T负熵递归 = 1903;
internal const int T高密度可控湮灭 = 1904;
internal const int TGB钨强化玻璃 = 1911;
internal const int TGB焦油精炼 = 1915;
internal const int TGB放射性矿物提炼 = 1916;
internal const int TMS尼科尔戴森光束 = 1918;
internal const int TGB裂变能源燃料棒 = 1919;
internal const int TGB同位素温差发电 = 1920;
internal const int TGB聚变能源燃料棒 = 1921;
internal const int TGB巨型建筑天穹装配厂 = 1923;
internal const int TGB巨型建筑物质裂解塔 = 1924;
internal const int TGB巨型建筑行星级化学反应釜 = 1925;
internal const int TGB巨型建筑精密结构组装厂 = 1926;
internal const int TGB巨型建筑巨型粒子对撞机 = 1927;
internal const int TGB四氢双环戊二烯燃料棒 = 1928;
internal const int TGB矿物处理 = 1929;
internal const int TGB先进化工 = 1930;
internal const int TGB巨型建筑物质分解设施 = 1931;
internal const int TGB化工厂 = 1932;
internal const int TGB巨型建筑工程学 = 1934;
internal const int TGB行星协调中心 = 1936;
internal const int TGB护盾载波调制 = 1937;
internal const int TGB基础机械组件 = 1941;
internal const int TGB先进机械组件 = 1942;
internal const int TGB尖端机械组件 = 1943;
internal const int TGB钨强化金属 = 1944;
internal const int TGB家园世界虚拟技术革新 = 1947;
internal const int TGB家园世界光学信息传输技术 = 1948;
internal const int TGB超级量子计算机 = 1949;
internal const int TGB家园世界光学计算机 = 1950;
internal const int TGB反物质湮灭单元 = 1952;
internal const int TGB湮灭战斗部 = 1954;
internal const int TGB超重型穿甲弹 = 1955;
internal const int TGB强互作用力弹药 = 1956;
internal const int TGB小型化湮灭反应 = 1957;
internal const int TGB反物质飞弹 = 1959;
internal const int TGB行星协调中心黑雾数据库 = 1960;
internal const int TGB虚数空间存储 = 1962;
internal const int TGB物品仓储 = 1963;
internal const int TVD微型恒星能量引导 = 1997;
internal const int TVD并入COSMO架构 = 1998;
internal const int TVD玻色子操控 = 1999;
internal const int T机甲核心 = 2101;
internal const int T机械骨骼 = 2201;
internal const int T机舱容量 = 2301;
internal const int T通讯控制 = 2401;
internal const int T能量回路 = 2501;
internal const int T无人机引擎 = 2601;
internal const int T批量建造 = 2701;
internal const int T能量护盾 = 2801;
internal const int T驱动引擎 = 2901;
internal const int T自动标记重建 = 2951;
internal const int T太阳帆寿命 = 3101;
internal const int T射线传输效率 = 3201;
internal const int T分拣器货物叠加 = 3301;
internal const int T分拣器货物集装 = 3306;
internal const int T集装分拣器改良 = 3311;
internal const int T运输船引擎 = 3401;
internal const int T运输机舱扩容 = 3501;
internal const int T矿物利用 = 3601;
internal const int T垂直建造 = 3701;
internal const int T运输站集装物流 = 3801;
internal const int T研究速度 = 3901;
internal const int T配送范围 = 4001;
internal const int T宇宙探索 = 4101;
internal const int T太阳帆吸附速度 = 4201;
internal const int T动能武器伤害 = 5001;
internal const int T能量武器伤害 = 5101;
internal const int T爆破武器伤害 = 5201;
internal const int T战斗无人机伤害 = 5301;
internal const int T战斗无人机射速 = 5401;
internal const int T战斗无人机耐久 = 5601;
internal const int T行星护盾 = 5701;
internal const int T地面编队扩容 = 5801;
internal const int T太空编队扩容 = 5901;
internal const int T结构强化 = 6001;
internal const int T电磁武器效果 = 6101;
internal const int TVD元驱动挂载点位扩展 = 6601;
public static uint randSeed = (uint)new Random().Next(1, 2147483646);
public static Color Gray = new Color(0.5882353f, 0.5882353f, 0.5882353f, 1f);
public static Color Gray2 = new Color(1f, 1f, 1f, 0.4f);
public static Color Gray3 = new Color(0.69803923f, 0.69803923f, 0.69803923f, 56f / 85f);
public static Color White = new Color(0.8784314f, 0.8784314f, 0.8784314f, 61f / 85f);
public static Color Green = new Color(32f / 85f, 64f / 85f, 0f, 0.8f);
public static Color Blue = new Color(0.38039216f, 72f / 85f, 1f, 0.72156864f);
public static Color Purple = new Color(0.6901961f, 32f / 85f, 64f / 85f, 61f / 85f);
public static Color Red = new Color(1f, 31f / 85f, 0.29803923f, 61f / 85f);
public static Color Orange = new Color(0.99215686f, 0.5882353f, 0.36862746f, 0.8f);
public static Color Gold = new Color(0.8784314f, 0.6901961f, 0f, 0.8f);
private static bool ArchitectMode => Multfunction_mod.ArchitectMode || CheatEnabler.ArchitectMode || DeliverySlotsTweaks.ArchitectMode;
private static bool TechItemInteractionUnlocked => GameMain.history.TechUnlocked(1253);
public static string FormatP(this float value)
{
int i = 3;
StringBuilder stringBuilder = new StringBuilder("0.###");
for (; i < 10; i++)
{
if ((double)value * Math.Pow(10.0, i) >= 1.0)
{
return value.ToString(stringBuilder.Append("%").ToString());
}
stringBuilder.Append("#");
}
return "0%";
}
public static string FormatName(string s)
{
if (s == null)
{
return "null";
}
return Localization.Translate(s).Replace("\u00a0", "").Replace("\u2009", "")
.Replace(" ", "")
.Replace("“", "")
.Replace("”", "")
.Replace(":", "")
.Replace(":", "")
.Replace("!", "")
.Replace("-", "")
.Replace(".", "")
.Replace("(", "")
.Replace(")", "");
}
public static bool IsGridIndexValid(int gridIndex)
{
if (GenesisBook.Enable)
{
return gridIndex % 1000 / 100 >= 1 && gridIndex % 1000 / 100 <= 7 && gridIndex % 100 >= 1 && gridIndex % 100 <= 17;
}
return gridIndex % 1000 / 100 >= 1 && gridIndex % 1000 / 100 <= 8 && gridIndex % 100 >= 1 && gridIndex % 100 <= 14;
}
public static bool GridIndexValid(this ItemProto proto)
{
return IsGridIndexValid(proto.GridIndex);
}
public static bool GridIndexValid(this RecipeProto proto)
{
return IsGridIndexValid(proto.GridIndex);
}
public static void Register(string key, string enTrans, string cnTrans = null)
{
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary["enUS"] = enTrans;
dictionary["zhCN"] = cnTrans ?? key;
dictionary["frFR"] = enTrans;
LocalizationModule.RegisterTranslation(key, dictionary);
}
public static void Edit(string key, string enTrans, string cnTrans = null)
{
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary["enUS"] = enTrans;
dictionary["zhCN"] = cnTrans ?? key;
dictionary["frFR"] = enTrans;
LocalizationModule.EditTranslation(key, dictionary);
}
public static void RegisterOrEditAsync(string key, string enTrans, string cnTrans = null)
{
ModStr modStr = default(ModStr);
modStr.key = key;
modStr.enTrans = enTrans;
modStr.cnTrans = cnTrans ?? key;
ModStr item = modStr;
foreach (ModStr modString in modStringList)
{
if (modString.key == key)
{
modStringList.Remove(modString);
break;
}
}
modStringList.Add(item);
}
public static void RegisterOrEditImmediately(string key, string enTrans, string cnTrans = null)
{
RegisterOrEditAsync(key, enTrans, cnTrans);
LoadLanguagePostfixAfterCommonApi();
}
public static void LoadLanguagePostfixAfterCommonApi()
{
try
{
if (modStringList.Count == 0 || Localization.strings == null || Localization.CurrentLanguageIndex >= Localization.strings.Length || Localization.strings[Localization.CurrentLanguageIndex] == null || Localization.currentStrings == null || Localization.floats == null || Localization.CurrentLanguageIndex >= Localization.floats.Length || Localization.floats[Localization.CurrentLanguageIndex] == null || Localization.currentFloats == null)
{
return;
}
List<string> list = Localization.strings[Localization.CurrentLanguageIndex].ToList();
List<float> list2 = Localization.floats[Localization.CurrentLanguageIndex].ToList();
bool flag = Localization.CurrentLanguageLCID == 2052;
foreach (ModStr modString in modStringList)
{
if (!Localization.namesIndexer.TryGetValue(modString.key, out var value))
{
value = Localization.namesIndexer.Count;
Localization.namesIndexer.Add(modString.key, value);
}
while (list.Count <= value)
{
list.Add(Localization.namesIndexer.ElementAt(list.Count).Key);
list2.Add(0f);
}
list[value] = (flag ? modString.cnTrans : modString.enTrans);
}
Localization.strings[Localization.CurrentLanguageIndex] = list.ToArray();
Localization.currentStrings = Localization.strings[Localization.CurrentLanguageIndex];
Localization.floats[Localization.CurrentLanguageIndex] = list2.ToArray();
Localization.currentFloats = Localization.floats[Localization.CurrentLanguageIndex];
LogInfo($"Modify translations finish, currentStrings.len={Localization.currentStrings.Length}");
}
catch (Exception ex)
{
LogError("LoadLanguagePostfixAfterCommonApi Error: " + ex);
}
}
public static void InitLogger(ManualLogSource logger)
{
Utils.logger = logger;
}
public static void LogDebug(object data)
{
if (logger == null)
{
Debug.Log((object)string.Format("[{0}]{1}", "FractionateEverything", data));
}
else
{
logger.LogDebug(data);
}
}
public static void LogInfo(object data)
{
if (logger == null)
{
Debug.Log((object)string.Format("[{0}]{1}", "FractionateEverything", data));
}
else
{
logger.LogInfo(data);
}
}
public static void LogWarning(object data)
{
if (logger == null)
{
Debug.LogWarning((object)string.Format("[{0}]{1}", "FractionateEverything", data));
}
else
{
logger.LogWarning(data);
}
}
public static void LogError(object data)
{
if (logger == null)
{
Debug.LogError((object)string.Format("[{0}]{1}", "FractionateEverything", data));
}
else
{
logger.LogError(data);
}
}
public static void LogFatal(object data)
{
if (logger == null)
{
Debug.LogError((object)string.Format("[{0}]{1}", "FractionateEverything", data));
}
else
{
logger.LogFatal(data);
}
}
public static RectTransform NormalizeRectWithTopLeft(Component cmp, float left, float top, Transform parent = null)
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
Transform transform = cmp.transform;
RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
if (val == null)
{
return null;
}
if ((Object)(object)parent != (Object)null)
{
((Transform)val).SetParent(parent, false);
}
val.anchorMin = new Vector2(0f, 1f);
val.anchorMax = new Vector2(0f, 1f);
val.pivot = new Vector2(0f, 1f);
val.anchoredPosition3D = new Vector3(left, 0f - top, 0f);
return val;
}
public static RectTransform NormalizeRectWithMidLeft(Component cmp, float left, float top, Transform parent = null, float? height = null)
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
RectTransform val = NormalizeRectWithTopLeft(cmp, left, top, parent);
float num = height ?? val.sizeDelta.y;
val.anchoredPosition3D = new Vector3(left, 0f - top + num / 2f, 0f);
return val;
}
public static RectTransform NormalizeRectWithTopRight(Component cmp, float right, float top, Transform parent = null)
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
Transform transform = cmp.transform;
RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
if (val == null)
{
return null;
}
if ((Object)(object)parent != (Object)null)
{
((Transform)val).SetParent(parent, false);
}
val.anchorMax = new Vector2(1f, 1f);
val.anchorMin = new Vector2(1f, 1f);
val.pivot = new Vector2(1f, 1f);
val.anchoredPosition3D = new Vector3(0f - right, 0f - top, 0f);
return val;
}
public static RectTransform NormalizeRectWithBottomLeft(Component cmp, float left, float bottom, Transform parent = null)
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
Transform transform = cmp.transform;
RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
if (val == null)
{
return null;
}
if ((Object)(object)parent != (Object)null)
{
((Transform)val).SetParent(parent, false);
}
val.anchorMax = new Vector2(0f, 0f);
val.anchorMin = new Vector2(0f, 0f);
val.pivot = new Vector2(0f, 0f);
val.anchoredPosition3D = new Vector3(left, bottom, 0f);
return val;
}
public static RectTransform NormalizeRectWithMargin(Component cmp, float top, float left, float bottom, float right, Transform parent = null)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
Transform transform = cmp.transform;
RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
if (val == null)
{
return null;
}
if ((Object)(object)parent != (Object)null)
{
((Transform)val).SetParent(parent, false);
}
val.anchoredPosition3D = Vector3.zero;
((Transform)val).localScale = Vector3.one;
val.anchorMax = Vector2.one;
val.anchorMin = Vector2.zero;
val.pivot = new Vector2(0.5f, 0.5f);
val.offsetMax = new Vector2(0f - right, 0f - top);
val.offsetMin = new Vector2(left, bottom);
return val;
}
public static RectTransform NormalizeRectCenter(GameObject go, float width = 0f, float height = 0f)
{
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
Transform transform = go.transform;
RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
if (val == null)
{
return null;
}
val.anchorMax = new Vector2(0.5f, 0.5f);
val.anchorMin = new Vector2(0.5f, 0.5f);
val.pivot = new Vector2(0.5f, 0.5f);
if (width > 0f && height > 0f)
{
val.sizeDelta = new Vector2(width, height);
}
return val;
}
public static void SetPosition(this Text text, float x, float y)
{
NormalizeRectWithMidLeft((Component)(object)text, x, y);
}
public static void SetPosition(this MySlider slider, float x, float y)
{
NormalizeRectWithMidLeft((Component)(object)slider, x, y);
}
public static (float, float) GetPosition(int index, int count, float totalPx = 800f)
{
float num = (totalPx - (float)((count - 1) * 20)) / (float)count;
float item = (float)index * (num + 20f);
return (item, num);
}
public static void SetText(this UIButton btn, string notTranslateStr)
{
try
{
Localizer component = ((Component)((Component)btn).gameObject.transform.Find("button-text")).GetComponent<Localizer>();
Text component2 = ((Component)((Component)btn).gameObject.transform.Find("button-text")).GetComponent<Text>();
if ((Object)(object)component != (Object)null)
{
component.stringKey = notTranslateStr;
component.translation = Localization.Translate(notTranslateStr);
}
if ((Object)(object)component2 != (Object)null)
{
component2.text = Localization.Translate(notTranslateStr);
}
}
catch (Exception arg)
{
LogError($"SetText error: {arg}");
}
}
public static void AddTranslations()
{
Register("提示", "Tip");
Register("确定", "Confirm");
Register("取消", "Cancel");
Register("要花费", "Would you like to spend");
Register("来兑换", "to exchange");
Register("吗?", "?");
Register("兑换", "Exchange");
Register("已兑换", "Exchanged");
Register("无法兑换", "Can not exchange");
Register("配方经验", "recipe experience");
}
[HarmonyPrefix]
[HarmonyPatch(typeof(Player), "ThrowTrash")]
private static bool Player_ThrowTrash_Prefix(Player __instance, int itemId, int count, int inc)
{
if (!TechItemInteractionUnlocked)
{
return true;
}
if (ItemManager.itemValue[itemId] >= float.MaxValue)
{
return true;
}
AddItemToModData(itemId, count, inc, manual: true);
return false;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(Player), "ThrowHandItems")]
private static bool Player_ThrowHandItems_Prefix(Player __instance)
{
if (!TechItemInteractionUnlocked)
{
return true;
}
if (ItemManager.itemValue[__instance.inhandItemId] >= float.MaxValue)
{
return true;
}
if (__instance.inhandItemId > 0 && __instance.inhandItemCount > 0)
{
AddItemToModData(__instance.inhandItemId, __instance.inhandItemCount, __instance.inhandItemInc, manual: true);
}
__instance.inhandItemId = 0;
__instance.inhandItemCount = 0;
__instance.inhandItemInc = 0;
return false;
}
public static void AddItemToModData(int itemId, int count, int inc = 0, bool manual = false)
{
if (itemId == 1099)
{
Player mainPlayer = GameMain.mainPlayer;
mainPlayer.sandCount += count;
return;
}
lock (ItemManager.centerItemCount)
{
ItemManager.centerItemCount[itemId] += count;
ItemManager.centerItemInc[itemId] += inc;
if (itemId >= 8021 && itemId <= 8027)
{
TechManager.CheckTechUnlockCondition(itemId);
}
}
if (NebulaModAPI.IsMultiplayerActive && manual)
{
NebulaModAPI.MultiplayerSession.Network.SendPacket<CenterItemChangePacket>(new CenterItemChangePacket(itemId, count, inc));
}
}
public static void AddItemToPackage(int itemId, int count, int inc = 0, bool throwTrash = true)
{
if (!DSPGame.IsMenuDemo && GameMain.mainPlayer != null)
{
int num = GameMain.mainPlayer.TryAddItemToPackage(itemId, count, inc, throwTrash, 0, false);
if (num > 0)
{
UIItemup.Up(itemId, num);
}
}
}
[HarmonyTranspiler]
[HarmonyPriority(600)]
[HarmonyAfter(new string[] { "starfi5h.plugin.BuildToolOpt" })]
[HarmonyPatch(typeof(BuildTool_Reform), "ReformAction")]
[HarmonyPatch(typeof(BuildTool_Reform), "RemoveBasePit")]
[HarmonyPatch(typeof(PlanetFactory), "EntityAutoReplenishIfNeeded")]
[HarmonyPatch(typeof(PlanetFactory), "StationAutoReplenishIfNeeded")]
[HarmonyPatch(typeof(PlayerAction_Inspect), "GameTick")]
[HarmonyPatch(typeof(UIBlueprintInspector), "SetComponentItem")]
[HarmonyPatch(typeof(UIBlueprintInspector), "_OnUpdate")]
[HarmonyPatch(typeof(UIBuildMenu), "OnChildButtonClick")]
[HarmonyPatch(typeof(UIBuildMenu), "SetCurrentCategory")]
[HarmonyPatch(typeof(UIBuildMenu), "_OnUpdate")]
[HarmonyPatch(typeof(UIControlPanelObjectEntry), "ReplenishItems")]
[HarmonyPatch(typeof(UIHandTip), "_OnUpdate")]
[HarmonyPatch(typeof(UIItemup), "Up")]
[HarmonyPatch(typeof(UIRemoveBasePitButton), "_OnUpdate")]
[HarmonyPatch(typeof(UIReplicatorWindow), "_OnUpdate")]
[HarmonyPatch(typeof(UISandboxMenu), "OnChildButtonClick")]
[HarmonyPatch(typeof(UITurretWindow), "OnHandFillAmmoButtonClick")]
public static IEnumerable<CodeInstruction> GetItemCount_Transpiler(IEnumerable<CodeInstruction> instructions)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Expected O, but got Unknown
try
{
MethodInfo method = AccessTools.Method(typeof(StorageComponent), "GetItemCount", new Type[1] { typeof(int) }, (Type[])null);
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
{
new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand.Equals(method)), (string)null)
}).Repeat((Action<CodeMatcher>)delegate(CodeMatcher matcher)
{
matcher.SetAndAdvance(OpCodes.Call, (object)AccessTools.Method(typeof(Utils), "GetItemCount", (Type[])null, (Type[])null));
}, (Action<string>)null);
return val.InstructionEnumeration();
}
catch (Exception arg)
{
LogError($"Error in GetItemCount_Transpiler: {arg}");
return instructions;
}
}
private static int GetItemCount(StorageComponent storage, int itemId)
{
Player mainPlayer = GameMain.mainPlayer;
if (storage != ((mainPlayer != null) ? mainPlayer.package : null))
{
return storage.GetItemCount(itemId);
}
ItemProto val = ((ProtoSet<ItemProto>)(object)LDB.items).Select(itemId);
if (val == null)
{
return 0;
}
if (ArchitectMode && val.BuildMode != 0)
{
return 999;
}
return (int)Math.Min(2147483647L, GetItemTotalCount(itemId));
}
[HarmonyTranspiler]
[HarmonyPriority(600)]
[HarmonyPatch(typeof(BuildBarToolPlugin), "UIBuildMenuSetCurrentCategoryPostPatch")]
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
[HarmonyPatch(typeof(BuildBarToolPlugin), "OnChildButtonClick")]
private static IEnumerable<CodeInstruction> BuildBarTool_Transpiler(IEnumerable<CodeInstruction> instructions, MethodBase original)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Expected O, but got Unknown
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Expected O, but got Unknown
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Expected O, but got Unknown
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//IL_01b5: Expected O, but got Unknown
try
{
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[4]
{
new CodeMatch((OpCode?)OpCodes.Ldsfld, (object)AccessTools.Field(typeof(DeliverySlotsTweaksCompat), "enabled"), (string)null),
new CodeMatch((OpCode?)OpCodes.Stloc_S, (object)null, (string)null),
new CodeMatch((OpCode?)OpCodes.Ldloc_S, (object)null, (string)null),
new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null)
});
if (val.IsValid && val.Length >= val.Pos + 12)
{
for (int j = 0; j <= 12; j++)
{
val.SetAndAdvance(OpCodes.Nop, (object)null);
}
}
else
{
LogWarning($"MethodBase {original}, DeliverySlotsTweaksCompat.enabled not found");
}
MethodInfo method = AccessTools.Method(typeof(StorageComponent), "GetItemCount", new Type[1] { typeof(int) }, (Type[])null);
val = new CodeMatcher(val.InstructionEnumeration(), (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
{
new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand.Equals(method)), (string)null)
}).Repeat((Action<CodeMatcher>)delegate(CodeMatcher matcher)
{
matcher.SetAndAdvance(OpCodes.Call, (object)AccessTools.Method(typeof(Utils), "GetItemCount", (Type[])null, (Type[])null));
}, (Action<string>)null);
method = AccessTools.Method(typeof(GameHistoryData), "ItemUnlocked", new Type[1] { typeof(int) }, (Type[])null);
val = new CodeMatcher(val.InstructionEnumeration(), (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
{
new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand.Equals(method)), (string)null)
}).Repeat((Action<CodeMatcher>)delegate(CodeMatcher matcher)
{
matcher.SetAndAdvance(OpCodes.Call, (object)AccessTools.Method(typeof(Utils), "ItemUnlocked", (Type[])null, (Type[])null));
}, (Action<string>)null);
return val.InstructionEnumeration();
}
catch (Exception arg)
{
LogError($"Error in GetItemCount_Transpiler: {arg}");
return instructions;
}
}
[HarmonyTranspiler]
[HarmonyPriority(600)]
[HarmonyPatch(typeof(UIBuildMenu), "OnChildButtonClick")]
[HarmonyPatch(typeof(UIBuildMenu), "SetCurrentCategory")]
[HarmonyPatch(typeof(UIBuildMenu), "_OnUpdate")]
[HarmonyPatch(typeof(UIItemPicker_Patch), "CheckItem")]
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
private static IEnumerable<CodeInstruction> ItemUnlocked_Transpiler(IEnumerable<CodeInstruction> instructions)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Expected O, but got Unknown
try
{
MethodInfo method = AccessTools.Method(typeof(GameHistoryData), "ItemUnlocked", new Type[1] { typeof(int) }, (Type[])null);
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
{
new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand.Equals(method)), (string)null)
}).Repeat((Action<CodeMatcher>)delegate(CodeMatcher matcher)
{
matcher.SetAndAdvance(OpCodes.Call, (object)AccessTools.Method(typeof(Utils), "ItemUnlocked", (Type[])null, (Type[])null));
}, (Action<string>)null);
return val.InstructionEnumeration();
}
catch (Exception arg)
{
LogError($"Error in ItemUnlocked_Transpiler: {arg}");
return instructions;
}
}
private static bool ItemUnlocked(GameHistoryData history, int itemId)
{
return history.ItemUnlocked(itemId) || GetItemTotalCount(itemId) > 0;
}
[HarmonyTranspiler]
[HarmonyPriority(600)]
[HarmonyPatch(typeof(ConstructionModuleComponent), "PlaceItems")]
private static IEnumerable<CodeInstruction> PlaceItems_Transpiler(IEnumerable<CodeInstruction> instructions)
{
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Expected O, but got Unknown
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Expected O, but got Unknown
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Expected O, but got Unknown
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Expected O, but got Unknown
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Expected O, but got Unknown
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Expected O, but got Unknown
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Expected O, but got Unknown
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Expected O, but got Unknown
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Expected O, but got Unknown
try
{
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[5]
{
new CodeMatch((OpCode?)OpCodes.Br, (object)null, (string)null),
new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
new CodeMatch((OpCode?)OpCodes.Ldfld, (object)AccessTools.Field(typeof(ConstructionModuleComponent), "entityId"), (string)null),
new CodeMatch((OpCode?)OpCodes.Ldc_I4_0, (object)null, (string)null),
new CodeMatch((OpCode?)OpCodes.Ble, (object)null, (string)null)
}).Insert((CodeInstruction[])(object)new CodeInstruction[4]
{
new CodeInstruction(OpCodes.Ldarg_0, (object)null),
new CodeInstruction(OpCodes.Ldarg_2, (object)null),
new CodeInstruction(OpCodes.Ldloca_S, (object)(byte)0),
new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(Utils), "AddConstructableCountsInStorage", (Type[])null, (Type[])null))
});
return val.InstructionEnumeration();
}
catch (Exception arg)
{
LogError($"Error in PlaceItems_Transpiler: {arg}");
return instructions;
}
}
private static void AddConstructableCountsInStorage(ConstructionModuleComponent _this, Player player, ref int num)
{
num = 0;
foreach (int item in ItemProto.constructableIdHash)
{
int itemCount = GetItemCount(player.package, item);
int num2 = ItemProto.constructableIndiceById[item];
_this.constructableCountsInStorage[num2].haveCount = itemCount;
num += itemCount;
}
}
public static long GetModDataItemCount(int itemId)
{
long inc;
return GetModDataItemCount(itemId, out inc);
}
public static long GetModDataItemCount(int itemId, out long inc)
{
inc = 0L;
if (itemId == 1099)
{
if (GameMain.data.history.HasFeatureKey(1100001) && GameMain.sandboxToolsEnabled)
{
return long.MaxValue;
}
return GameMain.mainPlayer.sandCount;
}
inc = ItemManager.centerItemInc[itemId];
return ItemManager.centerItemCount[itemId];
}
public static int GetPackageItemCount(int itemId, out int inc)
{
inc = 0;
if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null)
{
return 0;
}
StorageComponent package = GameMain.mainPlayer.package;
int num = 0;
for (int i = 0; i < package.size; i++)
{
if (package.grids[i].itemId == itemId)
{
num += package.grids[i].count;
inc += package.grids[i].inc;
}
}
return num;
}
public static int GetDeliveryPackageItemCount(int itemId, out int inc)
{
inc = 0;
if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null || !GameMain.mainPlayer.deliveryPackage.unlocked)
{
return 0;
}
DeliveryPackage deliveryPackage = GameMain.mainPlayer.deliveryPackage;
int num = 0;
for (int num2 = 99; num2 >= 0; num2--)
{
if (deliveryPackage.grids[num2].itemId == itemId)
{
num += deliveryPackage.grids[num2].count;
inc += deliveryPackage.grids[num2].inc;
break;
}
}
return num;
}
public static long GetItemTotalCount(int itemId)
{
long inc;
int inc2;
return GetModDataItemCount(itemId, out inc) + GetPackageItemCount(itemId, out inc2) + GetDeliveryPackageItemCount(itemId, out inc2);
}
public static long GetItemTotalCountAndInc(int itemId, out long inc)
{
long inc2;
int inc3;
int inc4;
long result = GetModDataItemCount(itemId, out inc2) + GetPackageItemCount(itemId, out inc3) + GetDeliveryPackageItemCount(itemId, out inc4);
inc = inc2 + inc3 + inc4;
return result;
}
private static void TakeItemInternal(this StorageComponent storage, int itemId, int needCount, out int realCount, out int inc, bool useBan = false)
{
realCount = 0;
inc = 0;
if (itemId <= 0)
{
return;
}
if (itemId == 1099)
{
if (GameMain.mainPlayer.sandCount >= needCount)
{
realCount = needCount;
Player mainPlayer = GameMain.mainPlayer;
mainPlayer.sandCount -= needCount;
}
else
{
realCount = (int)GameMain.mainPlayer.sandCount;
GameMain.mainPlayer.sandCount = 0L;
}
return;
}
ItemProto val = ((ProtoSet<ItemProto>)(object)LDB.items).Select(itemId);
if (val == null)
{
return;
}
if (ArchitectMode && val.BuildMode != 0)
{
realCount = needCount;
return;
}
int[] takeItemPriority = Miscellaneous.TakeItemPriority;
int inc2 = default(int);
for (int i = 0; i < takeItemPriority.Length; i++)
{
int itemId2 = itemId;
int num = needCount;
if (takeItemPriority[i] == 0)
{
storage.TakeTailItems(ref itemId2, ref num, ref inc2, useBan);
}
else if (takeItemPriority[i] == 1)
{
GameMain.mainPlayer.deliveryPackage.TakeItems(ref itemId2, ref num, ref inc2);
}
else
{
num = TakeItemFromModData(itemId2, num, out inc2, manual: true);
}
needCount -= num;
realCount += num;
inc += inc2;
if (needCount == 0)
{
break;
}
}
}
[HarmonyTranspiler]
[HarmonyPriority(600)]
[HarmonyPatch(typeof(Mecha), "AutoReplenishAmmo")]
[HarmonyPatch(typeof(Mecha), "AutoReplenishBomb")]
[HarmonyPatch(typeof(Mecha), "AutoReplenishFuel")]
[HarmonyPatch(typeof(Mecha), "AutoReplenishFuelAll")]
[HarmonyPatch(typeof(Mecha), "AutoReplenishWarper")]
[HarmonyPatch(typeof(MechaForge), "AddTaskIterate")]
private static IEnumerable<CodeInstruction> TakeItem_Transpiler(IEnumerable<CodeInstruction> instructions)
{
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Expected O, but got Unknown
try
{
MethodInfo method = AccessTools.Method(typeof(StorageComponent), "TakeItem", new Type[3]
{
typeof(int),
typeof(int),
typeof(int).MakeByRefType()
}, (Type[])null);
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
{
new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand.Equals(method)), (string)null)
}).Repeat((Action<CodeMatcher>)delegate(CodeMatcher matcher)
{
matcher.SetAndAdvance(OpCodes.Call, (object)AccessTools.Method(typeof(Utils), "TakeItem", (Type[])null, (Type[])null));
}, (Action<string>)null);
return val.InstructionEnumeration();
}
catch (Exception arg)
{
LogError($"Error in TakeItem_Transpiler: {arg}");
return instructions;
}
}
private static int TakeItem(StorageComponent storage, int itemId, int count, out int inc)
{
if