using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Bootstrap;
using CheatEnabler;
using CommonAPI;
using CommonAPI.Systems;
using DSP_WeaponPlus.Compatibility;
using DSP_WeaponPlus.Nebula;
using DSP_WeaponPlus.Utils;
using HarmonyLib;
using NebulaAPI;
using NebulaAPI.GameState;
using NebulaAPI.Interfaces;
using NebulaAPI.Networking;
using NebulaAPI.Packets;
using UnityEngine;
using UnityEngine.UI;
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("DSP_WeaponPlus")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Organization")]
[assembly: AssemblyProduct("DSP_WeaponPlus")]
[assembly: AssemblyCopyright("Copyright © Organization 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("2c822bf9-d1bc-4f1b-8b48-e8ce5dbc08b6")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace CheatEnabler
{
public static class AbnormalDisabler
{
[HarmonyPrefix]
[HarmonyPatch(typeof(AbnormalityLogic), "NotifyBeforeGameSave")]
[HarmonyPatch(typeof(AbnormalityLogic), "NotifyOnAssemblerRecipePick")]
[HarmonyPatch(typeof(AbnormalityLogic), "NotifyOnGameBegin")]
[HarmonyPatch(typeof(AbnormalityLogic), "NotifyOnMechaForgeTaskComplete")]
[HarmonyPatch(typeof(AbnormalityLogic), "NotifyOnUnlockTech")]
[HarmonyPatch(typeof(AbnormalityLogic), "NotifyOnUseConsole")]
private static bool DisableAbnormalLogic()
{
return false;
}
[HarmonyPostfix]
[HarmonyPatch(typeof(AbnormalityLogic), "InitDeterminators")]
private static void DisableAbnormalDeterminators(AbnormalityLogic __instance)
{
}
}
}
namespace DSP_WeaponPlus
{
[BepInPlugin("org.weaponplus.plugins.Xiaokls", "weaponplus", "1.0.6")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[ModSaveSettings(/*Could not decode attribute arguments.*/)]
[CommonAPISubmoduleDependency(new string[] { "ProtoRegistry", "TabSystem" })]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class DSP_WeaponPlus : BaseUnityPlugin, IModCanSave, IMultiplayerModWithSettings, IMultiplayerMod
{
public const string MODGUID = "org.weaponplus.plugins.Xiaokls";
public const string MODNAME = "weaponplus";
public const string VERSION = "1.0.6";
public static ResourceData resources;
public static int tab装备1;
public static TabData weapon_page_data;
public string Version => "1.0.6";
private void Awake()
{
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Expected O, but got Unknown
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Expected O, but got Unknown
Harmony.CreateAndPatchAll(typeof(Equipmentcolumn), (string)null);
Harmony.CreateAndPatchAll(typeof(DSP_WeaponPlus), (string)null);
Harmony.CreateAndPatchAll(typeof(WPAddItem), (string)null);
Harmony.CreateAndPatchAll(typeof(AbnormalDisabler), (string)null);
using (ProtoRegistry.StartModLoad("org.weaponplus.plugins.Xiaokls"))
{
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
resources = new ResourceData("org.weaponplus.plugins.Xiaokls", "weapon", directoryName);
resources.LoadAssetBundle("weapon");
ProtoRegistry.AddResource(resources);
weapon_page_data = new TabData("装备", "Icons/Tech/5705");
tab装备1 = TabSystem.RegisterTab("org.weaponplus.plugins.Xiaokls:org.weaponplus.plugins.XiaoklsTab1", weapon_page_data);
}
if (Chainloader.PluginInfos.ContainsKey("dsp.nebula-multiplayer"))
{
NebulaWarper.OnAwake();
}
NebulaModAPI.RegisterPackets(Assembly.GetExecutingAssembly());
LDBTool.PreAddDataAction = (Action)Delegate.Combine(LDBTool.PreAddDataAction, new Action(PreAddDataAction));
LDBTool.PostAddDataAction = (Action)Delegate.Combine(LDBTool.PostAddDataAction, new Action(PostAddDataAction));
}
private void Start()
{
Debug.Log((object)"【DSP_WeaponPlus】 Start");
WPAddItem wPAddItem = new WPAddItem();
wPAddItem.AddWPItems();
}
public bool CheckVersion(string hostVersion, string clientVersion)
{
return hostVersion.Equals(clientVersion);
}
private void PreAddDataAction()
{
}
private void PostAddDataAction()
{
Skillfunction();
Equipmentcolumn.EquipUICreate();
MoreMegaStructure.Compatible();
}
public void Import(BinaryReader r)
{
Debug.Log((object)"读取存档");
SkillComponent.GetPlayer();
Equipmentcolumn.Init();
Equipmentcolumn.equistorage.Import(r);
GameManager.InitializePlayers(100);
GameManager._playerData.Import(r);
}
public void Export(BinaryWriter w)
{
Debug.Log((object)"写入存档");
Equipmentcolumn.equistorage.Export(w);
GameManager._playerData.Export(w);
}
public void IntoOtherSave()
{
SkillComponent.GetPlayer();
Equipmentcolumn.Init();
GameManager.InitializePlayers(100);
}
public int GetGirdindex(int x, int y)
{
return tab装备1 * 1000 + x * 100 + y;
}
private static void Skillfunction()
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Expected O, but got Unknown
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Expected O, but got Unknown
//IL_0159: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Expected O, but got Unknown
SkillUI skillUI = new SkillUI();
skillUI.Creat();
skillUI.Init(1, "机甲巨大化", "需消耗1个<color=\"#FD965ECC\">结构结晶</color>,并增加机体耐久和恢复速度(装备芯片后无CD冷却)", 90, 120, "skill_1");
GameObject val = new GameObject();
SkillComponent skill1 = val.AddComponent<SkillComponent>();
skill1.Getskilltimer(skillUI.skilltimer);
skill1.Init(1, 9701, "结构结晶", 9761, 180, 300, 2101, "机甲核心 I");
skillUI.skButtn.onClick += delegate
{
skill1.SkillButtonClick();
};
SkillUI skillUI2 = new SkillUI();
skillUI2.Creat();
skillUI2.Init(2, "超新星爆发", "需消耗1个<color=\"#FD965ECC\">操控结晶</color>,武器射速全面爆发(装备芯片后无CD冷却)", 20, 120, "skill_3");
GameObject val2 = new GameObject();
SkillComponent skill2 = val2.AddComponent<SkillComponent>();
skill2.Getskilltimer(skillUI2.skilltimer);
skill2.Init(2, 9702, "操控结晶", 9762, 120, 180, 1807, "聚爆加农炮");
skillUI2.skButtn.onClick += delegate
{
skill2.SkillButtonClick();
};
SkillUI skillUI3 = new SkillUI();
skillUI3.Creat();
skillUI3.Init(3, "护盾力场", "需消耗1个<color=\"#FD965ECC\">力场结晶</color>,增加护盾投射范围及恢复速度(装备芯片后无CD冷却)", -50, 120, "skill_2");
GameObject val3 = new GameObject();
SkillComponent skill3 = val3.AddComponent<SkillComponent>();
skill3.Getskilltimer(skillUI3.skilltimer);
skill3.Init(3, 9703, "力场结晶", 9763, 120, 180, 2803, "能量护盾");
skillUI3.skButtn.onClick += delegate
{
skill3.SkillButtonClick();
};
}
}
}
namespace DSP_WeaponPlus.Nebula
{
public class GameManager
{
public static PlayerWpStorage _playerData;
public static void InitializePlayers(int numberOfPlayers)
{
_playerData = new PlayerWpStorage(Equipmentcolumn.equistorage.grids.Length, numberOfPlayers);
}
public static void UpdatePlayer(int playerId, int[] itemid, int[] count)
{
if (playerId >= 0 && playerId < _playerData.data.Length)
{
_playerData.data[playerId].inited = true;
_playerData.data[playerId].itemId = itemid;
_playerData.data[playerId].count = count;
}
}
public static PlayerWpStorage.WPDATA LoadPlayerData(int playerId)
{
if (playerId > 1 && playerId < _playerData.data.Length)
{
return _playerData.data[playerId];
}
return default(PlayerWpStorage.WPDATA);
}
}
public class PlayerWpStorage
{
public struct WPDATA
{
public int[] itemId { get; set; }
public int[] count { get; set; }
public bool inited { get; set; }
}
public WPDATA[] data;
public int size { get; set; }
public int length { get; set; }
public PlayerWpStorage(int _size, int _length)
{
size = _size;
length = _length;
data = new WPDATA[length];
for (int i = 0; i < length; i++)
{
data[i] = default(WPDATA);
data[i].itemId = new int[size];
data[i].count = new int[size];
data[i].inited = false;
}
}
public void Export(BinaryWriter w)
{
w.Write(size);
w.Write(length);
for (int i = 0; i < length; i++)
{
w.Write(data[i].inited);
for (int j = 0; j < size; j++)
{
w.Write(data[i].itemId[j]);
w.Write(data[i].count[j]);
}
}
}
public void Import(BinaryReader r)
{
size = r.ReadInt32();
length = r.ReadInt32();
for (int i = 0; i < length; i++)
{
data[i].inited = false;
if (r.ReadBoolean())
{
data[i].inited = true;
}
for (int j = 0; j < size; j++)
{
data[i].itemId[j] = r.ReadInt32();
data[i].count[j] = r.ReadInt32();
}
}
}
}
public class PlayerInfoPacket
{
public int playerId { get; set; }
public string username { get; set; }
public int bigstate { get; set; }
public byte[] data { get; set; }
public PlayerInfoPacket()
{
}
public PlayerInfoPacket(int playerId, string username, int bigstate)
{
this.playerId = playerId;
this.username = username;
this.bigstate = bigstate;
}
}
[RegisterPacketProcessor]
public class PlayerInfoPacketProcessor : BasePacketProcessor<PlayerInfoPacket>
{
public override void ProcessPacket(PlayerInfoPacket packet, INebulaConnection conn)
{
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
int playerId = packet.playerId;
string username = packet.username;
int bigstate = packet.bigstate;
if (playerId < 1)
{
return;
}
if (playerId != NebulaModAPI.MultiplayerSession.LocalPlayer.Id)
{
GameObject val = GameObject.Find($"Remote Player ({playerId})");
if ((Object)(object)val == (Object)null)
{
return;
}
val.transform.localScale = Vector3.one * (float)bigstate;
}
if (base.IsHost && playerId > 1)
{
conn.SendPacket<PlayerInfoPacket>(new PlayerInfoPacket(playerId, username, bigstate));
}
}
}
public class WpdataPacket
{
public int playerId { get; set; }
public bool save { get; set; }
public int[] itemId { get; set; }
public int[] count { get; set; }
public byte[] bdata { get; set; }
public WpdataPacket()
{
}
public WpdataPacket(int playerId, bool save, int[] itemId, int[] count)
{
this.playerId = playerId;
this.save = save;
this.itemId = itemId;
this.count = count;
}
}
[RegisterPacketProcessor]
public class WpdataPacketProcessor : BasePacketProcessor<WpdataPacket>
{
public override void ProcessPacket(WpdataPacket packet, INebulaConnection conn)
{
int playerId = packet.playerId;
bool save = packet.save;
if (base.IsHost)
{
if (save)
{
GameManager.UpdatePlayer(playerId, packet.itemId, packet.count);
return;
}
PlayerWpStorage.WPDATA wPDATA = GameManager.LoadPlayerData(playerId);
if (wPDATA.inited)
{
int[] itemId = wPDATA.itemId;
int[] count = wPDATA.count;
conn.SendPacket<WpdataPacket>(new WpdataPacket(playerId, save: false, itemId, count));
}
}
else
{
if (playerId != NebulaModAPI.MultiplayerSession.LocalPlayer.Id)
{
return;
}
for (int i = 0; i < Equipmentcolumn.equistorage.grids.Length; i++)
{
if (packet.itemId[i] > 0)
{
Equipmentcolumn.equistorage.grids[i].itemId = packet.itemId[i];
}
if (packet.count[i] > 0)
{
Equipmentcolumn.equistorage.grids[i].count = packet.count[i];
}
}
SkillComponent.CheckWeaponGrids();
}
}
}
public class NebulaWarper
{
public static bool IsMultiplayerActive;
public static bool IsClient;
public static bool IsHost;
public static void OnAwake()
{
NebulaModAPI.RegisterPackets(Assembly.GetExecutingAssembly());
NebulaModAPI.OnMultiplayerGameStarted = (Action)Delegate.Combine(NebulaModAPI.OnMultiplayerGameStarted, new Action(OnMultiplayerGameStarted));
NebulaModAPI.OnMultiplayerGameEnded = (Action)Delegate.Combine(NebulaModAPI.OnMultiplayerGameEnded, new Action(OnMultiplayerGameEnded));
NebulaModAPI.OnPlayerJoinedGame = (Action<IPlayerData>)Delegate.Combine(NebulaModAPI.OnPlayerJoinedGame, new Action<IPlayerData>(OnPlayerJoin));
}
public static void OnMultiplayerGameStarted()
{
IsMultiplayerActive = NebulaModAPI.IsMultiplayerActive;
IsClient = IsMultiplayerActive && NebulaModAPI.MultiplayerSession.LocalPlayer.IsClient;
IsHost = IsMultiplayerActive && NebulaModAPI.MultiplayerSession.LocalPlayer.IsHost;
}
public static void OnMultiplayerGameEnded()
{
IsMultiplayerActive = false;
IsClient = false;
SkillComponent.CloseSkill();
}
public static void OnPlayerJoin(IPlayerData playerData)
{
PlayerWpStorage.WPDATA wPDATA = GameManager.LoadPlayerData(playerData.PlayerId);
if (wPDATA.inited)
{
NebulaModAPI.MultiplayerSession.Network.SendPacket<WpdataPacket>(new WpdataPacket(playerData.PlayerId, save: false, wPDATA.itemId, wPDATA.count));
}
}
}
}
namespace DSP_WeaponPlus.Compatibility
{
public class MoreMegaStructure
{
internal const string GUID = "Gnimaerd.DSP.plugin.MoreMegaStructure";
internal static bool Enable;
internal static void Compatible()
{
//IL_0044: 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_006f: 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)
Enable = Chainloader.PluginInfos.TryGetValue("Gnimaerd.DSP.plugin.MoreMegaStructure", out var _);
if (Enable)
{
Debug.LogError((object)"是巨构,挪位置");
((RectTransform)((Component)UIRoot.instance.uiGame.mechaWindow).transform).anchorMax = new Vector2(0.5f, 0.62f);
GameObject val = GameObject.Find("UI Root/Overlay Canvas/In Game/Windows/Mecha Window/information/gear-max-num");
((RectTransform)val.transform).anchoredPosition = new Vector2(0f, -520f);
}
}
}
}
namespace DSP_WeaponPlus.Utils
{
public interface IItemTypeChecker
{
}
public enum EItemTypeD
{
Unknown,
Resource,
Material,
Component,
Product,
Logistics,
Production,
Decoration,
Turret,
Defense,
DarkFog,
Matrix,
消耗品,
装备,
强化芯片
}
public class MultiplayerWPpacket
{
}
public class Equipmentcolumn : ManualBehaviour
{
private const string Mechaindow = "UI Root/Overlay Canvas/In Game/Windows/Mecha Window";
[SerializeField]
public static UIStorageGrid equiUIStorageGrid;
public static GameObject clonedGameObject;
private static bool _fuelisset = false;
public static StorageComponent equistorage;
public static int set_size = 8;
public static int gird_r = 2;
public static int gird_c = 4;
public static int itemCount;
public static bool[] itemIsWeapon;
public static bool[] itemIsPower;
public static bool[] itemIsPrinter;
private static void MultiplayerSaveStorage()
{
if (NebulaModAPI.IsMultiplayerActive)
{
if (NebulaModAPI.MultiplayerSession.IsServer)
{
}
int id = NebulaModAPI.MultiplayerSession.LocalPlayer.Id;
int[] array = new int[equistorage.grids.Length];
int[] array2 = new int[equistorage.grids.Length];
for (int i = 0; i < equistorage.grids.Length; i++)
{
array[i] = equistorage.grids[i].itemId;
array2[i] = equistorage.grids[i].count;
}
if (NebulaModAPI.MultiplayerSession.IsClient)
{
NebulaModAPI.MultiplayerSession.Network.SendPacket<WpdataPacket>(new WpdataPacket(id, save: true, array, array2));
}
else
{
GameManager.UpdatePlayer(id, array, array2);
}
}
}
private static void onStorageUpdate()
{
SkillComponent.CheckWeaponGrids();
MultiplayerSaveStorage();
}
private static void onStorageGridUpdate()
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Invalid comparison between Unknown and I4
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
if (SkillComponent.player.inhandItemId == 0 && SkillComponent.player.inhandItemCount == 0)
{
equistorage.type = (EStorageType)9;
}
else if ((int)equistorage.type > 0 && !itemIsWeapon[SkillComponent.player.inhandItemId])
{
UIRealtimeTip.Popup(Localization.Translate("只能放入装备和芯片"), true, 0);
equistorage.type = (EStorageType)8;
}
else if (CheckisPower(SkillComponent.player.inhandItemId) && CheckisPower(0))
{
UIRealtimeTip.Popup(Localization.Translate("只允许装备1种反应堆"), true, 0);
equistorage.type = (EStorageType)8;
}
else if (Checkisprinter(SkillComponent.player.inhandItemId) && Checkisprinter(0))
{
UIRealtimeTip.Popup(Localization.Translate("只允许装备1种打印机"), true, 0);
equistorage.type = (EStorageType)8;
}
else
{
equistorage.type = (EStorageType)9;
}
}
public static void setList()
{
itemIsWeapon = new bool[12000];
itemIsWeapon[9725] = true;
itemIsWeapon[9724] = true;
itemIsWeapon[9723] = true;
itemIsWeapon[9722] = true;
itemIsWeapon[9763] = true;
itemIsWeapon[9761] = true;
itemIsWeapon[9721] = true;
itemIsWeapon[9762] = true;
itemIsWeapon[9726] = true;
itemIsPower = new bool[12000];
itemIsPower[9724] = true;
itemIsPower[9723] = true;
itemIsPower[9722] = true;
itemIsPrinter = new bool[12000];
itemIsPrinter[9725] = true;
itemIsPrinter[9726] = true;
}
private static bool Checkisprinter(int itemid)
{
int num = itemid;
if (num == 0)
{
for (int i = 0; i < equistorage.grids.Length; i++)
{
if (itemIsPrinter[equistorage.grids[i].itemId])
{
num = equistorage.grids[i].itemId;
break;
}
}
}
return itemIsPrinter[num];
}
private static bool CheckisPower(int itemid)
{
int num = itemid;
if (num == 0)
{
for (int i = 0; i < equistorage.grids.Length; i++)
{
if (itemIsPower[equistorage.grids[i].itemId])
{
num = equistorage.grids[i].itemId;
break;
}
}
}
return itemIsPower[num];
}
public static void Init()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Expected O, but got Unknown
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
SkillComponent.player = GameMain.mainPlayer;
equistorage = new StorageComponent(set_size);
Debug.Log((object)$"StorageComponent _Init set={set_size} size={equistorage.size}");
equistorage.type = (EStorageType)9;
setList();
equistorage.onStorageChange += onStorageUpdate;
}
public static void EquipUICreate()
{
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_010f: Unknown result type (might be due to invalid IL or missing references)
if (!_fuelisset)
{
set_size = gird_r * gird_c;
GameObject gameObject = ((Component)((Component)UIRoot.instance.uiGame.mechaWindow.fuelGrid).GetComponentInChildren<UIStorageGrid>()).gameObject;
clonedGameObject = Object.Instantiate<GameObject>(gameObject, ((Component)UIRoot.instance.uiGame.mechaWindow).transform);
((Object)clonedGameObject).name = "weapon-group";
((RectTransform)((Component)UIRoot.instance.uiGame.mechaWindow).transform).anchorMax = new Vector2(0.5f, 0.61f);
((RectTransform)clonedGameObject.transform).anchoredPosition = new Vector2(467f, -480f);
GameObject val = Object.Instantiate<GameObject>(GameObject.Find("UI Root/Overlay Canvas/In Game/Windows/Mecha Window/information/construction-panel/title"), clonedGameObject.transform);
((Object)val).name = "weapon-title";
val.GetComponent<Localizer>().stringKey = Localization.Translate("装备栏");
((RectTransform)val.transform).anchoredPosition = new Vector2(8f, 20f);
equiUIStorageGrid = clonedGameObject.GetComponent<UIStorageGrid>();
equiUIStorageGrid.beforeManualChange += onStorageGridUpdate;
if (equistorage != null)
{
equistorage.Free();
}
Init();
((ManualBehaviour)equiUIStorageGrid)._Create();
equiUIStorageGrid.rowCount = gird_r;
equiUIStorageGrid.colCount = gird_c;
_fuelisset = true;
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(UIMechaWindow), "_OnOpen")]
public static void UIMechaWindow_OnOpen_Postfix()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
((ManualBehaviour)equiUIStorageGrid)._Init((object)equistorage);
equistorage.type = (EStorageType)9;
((ManualBehaviour)equiUIStorageGrid)._Open();
}
[HarmonyPrefix]
[HarmonyPatch(typeof(UIMechaWindow), "_OnClose")]
public static void UIMechaWindow_OnClose_Prefix()
{
((ManualBehaviour)equiUIStorageGrid)._Free();
}
[HarmonyPostfix]
[HarmonyPatch(typeof(UIMechaWindow), "_OnDestroy")]
public static void UIMechaWindow_OnDestroy_Postfix()
{
((ManualBehaviour)equiUIStorageGrid)._Destroy();
}
}
public static class ProtoID
{
internal const int I伊卡洛斯 = 0;
internal const int I行星基地 = 1;
internal const int I巨构星际组装厂 = 2;
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木材 = 1030;
internal const int I植物燃料 = 1031;
internal const int I可燃冰 = 1011;
internal const int I金伯利矿石 = 1012;
internal const int I分形硅石 = 1013;
internal const int I光栅石 = 1014;
internal const int I刺笋结晶 = 1015;
internal const int I单极磁石 = 1016;
internal const int I铁块 = 1101;
internal const int I铜块 = 1104;
internal const int I高纯硅块 = 1105;
internal const int I钛块 = 1106;
internal const int I石材 = 1108;
internal const int I高能石墨 = 1109;
internal const int I钢材 = 1103;
internal const int I钛合金 = 1107;
internal const int I玻璃 = 1110;
internal const int I钛化玻璃 = 1119;
internal const int I棱镜 = 1111;
internal const int I金刚石 = 1112;
internal const int I晶格硅 = 1113;
internal const int I齿轮 = 1201;
internal const int I磁铁 = 1102;
internal const int I磁线圈_GB铜线圈 = 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奇异物质 = 1127;
internal const int I电路板 = 1301;
internal const int I处理器 = 1303;
internal const int I量子芯片 = 1305;
internal const int I微晶元件 = 1302;
internal const int I位面过滤器 = 1304;
internal const int I粒子宽带 = 1402;
internal const int I电浆激发器 = 1401;
internal const int I光子合并器 = 1404;
internal const int I太阳帆 = 1501;
internal const int I水 = 1000;
internal const int I原油 = 1007;
internal const int I精炼油_GB焦油 = 1114;
internal const int I硫酸 = 1116;
internal const int I氢 = 1120;
internal const int I重氢 = 1121;
internal const int I反物质 = 1122;
internal const int I临界光子 = 1208;
internal const int I液氢燃料棒 = 1801;
internal const int I氘核燃料棒 = 1802;
internal const int I反物质燃料棒 = 1803;
internal const int I奇异湮灭燃料棒 = 1804;
internal const int I塑料_GB聚丙烯 = 1115;
internal const int I石墨烯 = 1123;
internal const int I碳纳米管 = 1124;
internal const int I有机晶体 = 1117;
internal const int I钛晶石 = 1118;
internal const int I卡西米尔晶体 = 1126;
internal const int I燃烧单元 = 1128;
internal const int I爆破单元 = 1129;
internal const int I晶石爆破单元 = 1130;
internal const int I引力透镜 = 1209;
internal const int I空间翘曲器 = 1210;
internal const int I湮灭约束球 = 1403;
internal const int I动力引擎 = 1407;
internal const int I推进器 = 1405;
internal const int I加力推进器 = 1406;
internal const int I配送运输机 = 5003;
internal const int I物流运输机 = 5001;
internal const int I星际物流运输船 = 5002;
internal const int I框架材料 = 1125;
internal const int I戴森球组件 = 1502;
internal const int I小型运载火箭 = 1503;
internal const int I地基 = 1131;
internal const int I增产剂MkI = 1141;
internal const int I增产剂MkII = 1142;
internal const int I增产剂MkIII_GB增产剂 = 1143;
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 I晶石炮弹组 = 1606;
internal const int I等离子胶囊 = 1607;
internal const int I反物质胶囊 = 1608;
internal const int I导弹组 = 1609;
internal const int I超音速导弹组 = 1610;
internal const int I引力导弹组 = 1611;
internal const int I干扰胶囊 = 1612;
internal const int I压制胶囊 = 1613;
internal const int I原型机 = 5101;
internal const int I精准无人机 = 5102;
internal const int I攻击无人机 = 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传送带 = 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自动集装机 = 2040;
internal const int I流速监测器 = 2030;
internal const int I喷涂机 = 2313;
internal const int I物流配送器 = 2107;
internal const int I小型储物仓 = 2101;
internal const int I大型储物仓 = 2102;
internal const int I储液罐 = 2106;
internal const int I制造台MkI_GB基础制造台 = 2303;
internal const int I制造台MkII_GB标准制造单元 = 2304;
internal const int I制造台MkIII_GB高精度装配线 = 2305;
internal const int I重组式制造台_GB物质重组工厂 = 2318;
internal const int I电力感应塔 = 2201;
internal const int I无线输电塔 = 2202;
internal const int I卫星配电站 = 2212;
internal const int I风力涡轮机 = 2203;
internal const int I火力发电厂 = 2204;
internal const int I微型聚变发电站_GB裂变能源发电站 = 2211;
internal const int I地热发电站 = 2213;
internal const int I采矿机 = 2301;
internal const int I大型采矿机 = 2316;
internal const int I抽水站 = 2306;
internal const int I电弧熔炉 = 2302;
internal const int I位面熔炉 = 2315;
internal const int I负熵熔炉 = 2319;
internal const int I原油萃取站 = 2307;
internal const int I原油精炼厂 = 2308;
internal const int I化工厂 = 2309;
internal const int I量子化工厂_GB先进化学反应釜 = 2317;
internal const int I分馏塔 = 2314;
internal const int I太阳能板 = 2205;
internal const int I蓄电器 = 2206;
internal const int I蓄电器满 = 2207;
internal const int I电磁轨道弹射器 = 2311;
internal const int I射线接收站 = 2208;
internal const int I垂直发射井 = 2312;
internal const int I能量枢纽 = 2209;
internal const int I微型粒子对撞机 = 2310;
internal const int I人造恒星_GB人造恒星MKI = 2210;
internal const int I行星内物流运输站 = 2103;
internal const int I星际物流运输站 = 2104;
internal const int I轨道采集器 = 2105;
internal const int I矩阵研究站 = 2901;
internal const int I自演化研究站 = 2902;
internal const int I高斯机枪塔 = 3001;
internal const int I高频激光塔_GB高频激光塔MKI = 3002;
internal const int I聚爆加农炮_GB聚爆加农炮MKI = 3003;
internal const int I磁化电浆炮 = 3004;
internal const int I导弹防御塔 = 3005;
internal const int I干扰塔 = 3006;
internal const int I信号塔 = 3007;
internal const int I行星护盾发生器 = 3008;
internal const int I战场分析基站 = 3009;
internal const int I近程电浆塔 = 3010;
internal const int I电磁矩阵 = 6001;
internal const int I能量矩阵 = 6002;
internal const int I结构矩阵 = 6003;
internal const int I信息矩阵 = 6004;
internal const int I引力矩阵 = 6005;
internal const int I宇宙矩阵 = 6006;
internal const int I沙土 = 1099;
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多功能集成组件 = 9500;
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 IVD水滴 = 9511;
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石墨提炼装置 = 9501;
internal const int IMS光栅晶体接收器 = 9502;
internal const int IMS物资交换物流站 = 9512;
internal const int IVD水滴额外伤害 = 8035;
internal const int IVD星河卫士勋章 = 9513;
internal const int IGB钨矿 = 6201;
internal const int IGB铝矿 = 6202;
internal const int IGB铝块 = 6203;
internal const int IGB铝合金 = 6204;
internal const int IGB二氧化碳 = 6206;
internal const int IGB硫矿 = 6207;
internal const int IGB混凝土 = 6208;
internal const int IGB四氢双环戊二烯JP10 = 6212;
internal const int IGB四氢双环戊二烯燃料棒 = 6216;
internal const int IGB煤油燃料棒 = 6217;
internal const int IGB氮 = 6220;
internal const int IGB同位素温差发电机 = 6221;
internal const int IGB放射性矿物 = 6222;
internal const int IGB铀矿 = 6225;
internal const int IGB钚矿 = 6226;
internal const int IGB含铀核燃料 = 6227;
internal const int IGB含钚核燃料 = 6228;
internal const int IGB量子储液罐 = 6229;
internal const int IGB矿物处理厂 = 6230;
internal const int IGB量子储物仓 = 6231;
internal const int IGB氦 = 6234;
internal const int IGB氦三 = 6235;
internal const int IGB钚燃料棒 = 6241;
internal const int IGB铀燃料棒 = 6242;
internal const int IGBMOX燃料棒 = 6243;
internal const int IGB氦三燃料棒 = 6244;
internal const int IGB氘氦混合燃料棒 = 6245;
internal const int IGB石粉 = 6251;
internal const int IGB铁矿粉 = 6252;
internal const int IGB铜矿粉 = 6253;
internal const int IGB硅矿粉 = 6254;
internal const int IGB钛矿粉 = 6255;
internal const int IGB煤矿粉 = 6256;
internal const int IGB天穹装配厂 = 6257;
internal const int IGB物质裂解塔 = 6258;
internal const int IGB埃克森美孚化工厂 = 6259;
internal const int IGB工业先锋精密加工中心 = 6260;
internal const int IGB人造恒星MKII = 6261;
internal const int IGB氦闪约束器 = 6263;
internal const int IGB物质分解设施 = 6264;
internal const int IGB苍穹粒子加速器 = 6265;
internal const int IGB聚束液体汲取设施 = 6266;
internal const int IGB大气采集站 = 6267;
internal const int IGB三元精金 = 6271;
internal const int IGB铝矿粉 = 6273;
internal const int IGB硫粉 = 6277;
internal const int IGB通量矩阵 = 6278;
internal const int IGB空间矩阵 = 6279;
internal const int IGB宇宙矩阵粗坯 = 6280;
internal const int IGB钨矿粉 = 6281;
internal const int IGB基础机械组件 = 6501;
internal const int IGB先进机械组件 = 6502;
internal const int IGB尖端机械组件 = 6503;
internal const int IGB超级机械组件 = 6504;
internal const int IGB创世之书 = 6506;
internal const int IGB虚空之书 = 6507;
internal const int IGB起源之书 = 6508;
internal const int IGB空燃料棒 = 6509;
internal const int IGB开发者日志01 = 6511;
internal const int IGB开发者日志02 = 6512;
internal const int IGB开发者日志03 = 6513;
internal const int IGB开发者日志04 = 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 IGB苯 = 7006;
internal const int IGB丙烯 = 7009;
internal const int IGB盐酸 = 7014;
internal const int IGB三氯化铁 = 7015;
internal const int IGB硝酸 = 7017;
internal const int IGB海水 = 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 IGB钨芯弹箱 = 7608;
internal const int IGB三元弹箱 = 7609;
internal const int IGB核子爆破单元 = 7610;
internal const int IGB反物质湮灭单元 = 7611;
internal const int IGB微型核弹组 = 7612;
internal const int IGB反物质炮弹组 = 7613;
internal const int IGB反物质导弹组 = 7615;
internal const int IGB湮灭弹箱 = 7616;
internal const int IGB聚爆加农炮MKII = 7617;
internal const int IGB高频激光塔MKII = 7618;
internal const int IGB钨块 = 7705;
internal const int IGB钨强化玻璃 = 7706;
internal const int IGB钨合金 = 7707;
internal const int IGB聚苯硫醚PPS = 7708;
internal const int IGB聚酰亚胺PI = 7709;
internal const int IGB光学处理器 = 7803;
internal const int IGB光学信息传输纤维 = 7804;
internal const int IGB量子计算主机 = 7805;
internal const int IGB超越X1型光学主机 = 7806;
internal const int IFE自然资源分馏塔 = 2321;
internal const int IFE升级分馏塔 = 2322;
internal const int IFE降级分馏塔 = 2323;
internal const int IFE垃圾回收分馏塔 = 2324;
internal const int IFE点数聚集分馏塔 = 2325;
internal const int IFE增产分馏塔 = 2326;
internal const int IWP结构结晶 = 9701;
internal const int IWP操控结晶 = 9702;
internal const int IWP力场结晶 = 9703;
internal const int IWP电弧采矿器 = 9721;
internal const int IWPS型反应堆 = 9722;
internal const int IWPM型反应堆 = 9723;
internal const int IWPL型反应堆 = 9724;
internal const int IWP3D打印机 = 9725;
internal const int IWP量子打印机 = 9726;
internal const int IWP机体重构芯片 = 9761;
internal const int IWP神经元芯片 = 9762;
internal const int IWP护盾力场芯片 = 9763;
internal const int M水 = 494;
internal const int M燃烧单元 = 489;
internal const int M爆破单元 = 490;
internal const int M晶石爆破单元_GB反物质湮灭单元 = 491;
internal const int M配送运输机 = 372;
internal const int M物流运输机 = 47;
internal const int M星际物流运输船 = 48;
internal const int M小型运载火箭 = 75;
internal const int M炮弹组 = 486;
internal const int M高爆炮弹组 = 487;
internal const int M晶石炮弹组_GB微型核弹组 = 488;
internal const int M导弹组 = 432;
internal const int M超音速导弹组 = 433;
internal const int M引力导弹组 = 434;
internal const int M干扰胶囊 = 492;
internal const int M压制胶囊 = 493;
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传送带 = 35;
internal const int M高速传送带 = 36;
internal const int M极速传送带 = 37;
internal const int M分拣器 = 41;
internal const int M高速分拣器 = 42;
internal const int M极速分拣器 = 43;
internal const int M集装分拣器 = 483;
internal const int M四向分流器 = 38;
internal const int M自动集装机 = 257;
internal const int M流速监测器 = 208;
internal const int M喷涂机 = 120;
internal const int M物流配送器 = 371;
internal const int M小型储物仓 = 51;
internal const int M大型储物仓 = 52;
internal const int M储液罐 = 121;
internal const int M制造台MkI_GB基础制造台 = 65;
internal const int M制造台MkII_GB标准制造单元 = 66;
internal const int M制造台MkIII_GB高精度装配线 = 67;
internal const int M重组式制造台_GB物质重组工厂 = 456;
internal const int M电力感应塔 = 44;
internal const int M无线输电塔 = 71;
internal const int M卫星配电站 = 68;
internal const int M风力涡轮机 = 53;
internal const int M火力发电厂 = 54;
internal const int M微型聚变发电站_GB裂变能源发电站 = 118;
internal const int M地热发电站 = 255;
internal const int M采矿机 = 57;
internal const int M大型采矿机 = 256;
internal const int M抽水站 = 60;
internal const int M电弧熔炉 = 62;
internal const int M位面熔炉 = 194;
internal const int M负熵熔炉 = 457;
internal const int M原油萃取站 = 61;
internal const int M原油精炼厂 = 63;
internal const int M化工厂 = 64;
internal const int M量子化工厂_GB先进化学反应釜 = 376;
internal const int M分馏塔 = 119;
internal const int M太阳能板 = 55;
internal const int M蓄电器 = 46;
internal const int M蓄电器满 = 46;
internal const int M电磁轨道弹射器 = 72;
internal const int M射线接收站 = 73;
internal const int M垂直发射井 = 74;
internal const int M能量枢纽 = 45;
internal const int M微型粒子对撞机 = 69;
internal const int M人造恒星_GB人造恒星MKI = 56;
internal const int M行星内物流运输站 = 49;
internal const int M星际物流运输站 = 50;
internal const int M轨道采集器 = 117;
internal const int M矩阵研究站 = 70;
internal const int M自演化研究站 = 455;
internal const int M高斯机枪塔 = 374;
internal const int M高频激光塔_GB高频激光塔MKI = 373;
internal const int M聚爆加农炮_GB聚爆加农炮MKI = 375;
internal const int M磁化电浆炮 = 408;
internal const int M导弹防御塔 = 407;
internal const int M干扰塔 = 422;
internal const int M信号塔 = 403;
internal const int M行星护盾发生器 = 402;
internal const int M战场分析基站 = 453;
internal const int M近程电浆塔 = 482;
internal const int MMS铁金属重构装置 = 73;
internal const int MMS铜金属重构装置 = 73;
internal const int MMS高纯硅重构装置 = 73;
internal const int MMS钛金属重构装置 = 73;
internal const int MMS单极磁石重构装置 = 73;
internal const int MMS晶体接收器 = 73;
internal const int MMS组件集成装置 = 73;
internal const int MMS石墨提炼装置 = 73;
internal const int MMS光栅晶体接收器 = 73;
internal const int MMS物资交换物流站 = 50;
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人造恒星MKII = 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聚爆加农炮MKII = 815;
internal const int MGB高频激光塔MKII = 816;
internal const int MGB核子爆破单元 = 817;
internal const int MGB反物质炮弹组 = 818;
internal const int MFE自然资源分馏塔 = 531;
internal const int MFE升级分馏塔 = 532;
internal const int MFE降级分馏塔 = 533;
internal const int MFE垃圾回收分馏塔 = 534;
internal const int MFE点数聚集分馏塔 = 535;
internal const int MFE增产分馏塔 = 536;
internal const int R铁块 = 1;
internal const int R磁铁_GB铜线圈 = 2;
internal const int R铜块 = 3;
internal const int R石材 = 4;
internal const int R齿轮 = 5;
internal const int R磁线圈_GB电路板 = 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塑料_GB聚丙烯 = 23;
internal const int R硫酸 = 24;
internal const int R有机晶体_GB铝块 = 25;
internal const int R钛晶石_GB铝合金 = 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 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人造恒星_GB人造恒星MKI = 43;
internal const int R反物质燃料棒 = 44;
internal const int R制造台MkI_GB基础制造台 = 45;
internal const int R制造台MkII_GB标准制造单元 = 46;
internal const int R制造台MkIII_GB高精度装配线 = 47;
internal const int R采矿机 = 48;
internal const int R抽水站 = 49;
internal const int R电路板_玻璃 = 50;
internal const int R处理器 = 51;
internal const int R量子芯片 = 52;
internal const int R微晶元件 = 53;
internal const int R有机晶体原始_GB埃克森美孚化工厂 = 54;
internal const int R信息矩阵 = 55;
internal const int R电弧熔炉 = 56;
internal const int R玻璃_GB三元精金 = 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 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 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增产剂MkI_GB氦三 = 106;
internal const int R增产剂MkII_GB氦原子提取 = 107;
internal const int R增产剂MkIII_GB增产剂 = 108;
internal const int R喷涂机 = 109;
internal const int R分馏塔_GB人造恒星MKII = 110;
internal const int R轨道采集器 = 111;
internal const int R地基 = 112;
internal const int R微型聚变发电站_GB裂变能源发电站 = 113;
internal const int R储液罐 = 114;
internal const int R重氢分馏_GB氦闪约束器 = 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重整精炼_GB铝矿粉 = 121;
internal const int R物流配送器 = 122;
internal const int R配送运输机 = 123;
internal const int R量子化工厂_GB先进化学反应釜 = 124;
internal const int R高斯机枪塔 = 125;
internal const int R高频激光塔_GB高频激光塔MKI = 126;
internal const int R聚爆加农炮_GB聚爆加农炮MKI = 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晶石爆破单元_GB核子爆破单元 = 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晶石炮弹组_GB微型核弹组 = 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动力引擎 = 105;
internal const int R战场分析基站 = 152;
internal const int R自演化研究站 = 153;
internal const int R重组式制造台_GB物质重组工厂 = 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多功能集成组件 = 550;
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力场发生器Recipe = 565;
internal const int RMS复合态晶体Recipe = 566;
internal const int RMS电磁力抑制器Recipe = 567;
internal const int RMS胶子发生器Recipe = 568;
internal const int RMS强力过载装置Recipe = 569;
internal const int RMS导流框架Recipe = 570;
internal const int RMS恒星炮组件Recipe = 571;
internal const int RMS恒星炮运载火箭Recipe = 572;
internal const int RMS水滴gmRecipe = 573;
internal const int RMS制造台快速组装 = 554;
internal const int RMS传送带快速组装 = 551;
internal const int RMS化工厂快速组装 = 556;
internal const int RMS对撞机快速组装 = 558;
internal const int RMS星际物流快速组装 = 562;
internal const int RMS研究站快速组装 = 559;
internal const int RMS行星内物流快速组装 = 561;
internal const int RMS配电站快速组装 = 553;
internal const int RMS人造恒星快速组装 = 560;
internal const int RMS精炼厂快速组装 = 557;
internal const int RMS位面熔炉快速组装 = 555;
internal const int RMS分拣器快速组装 = 552;
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石墨提炼装置 = 563;
internal const int RMS光栅晶体接收器 = 564;
internal const int RMS物资交换物流站 = 575;
internal const int RVD星河卫士奖章Recipe = 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混凝土 = 415;
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活性纤维重组 = 550;
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钛晶石高效 = 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湮灭弹箱 = 790;
internal const int RGB聚爆加农炮MKII = 791;
internal const int RGB高频激光塔MKII = 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自然资源分馏塔 = 1001;
internal const int RFE升级分馏塔 = 1002;
internal const int RFE降级分馏塔 = 1003;
internal const int RFE垃圾回收分馏塔 = 1004;
internal const int RFE点数聚集分馏塔 = 1005;
internal const int RFE增产分馏塔 = 1006;
internal const int RWP结构结晶 = 9801;
internal const int RWP操控结晶 = 9802;
internal const int RWP力场结晶 = 9803;
internal const int RWP电弧采矿器 = 9721;
internal const int RWPS型反应堆 = 9722;
internal const int RWPM型反应堆 = 9723;
internal const int RWPL型反应堆 = 9724;
internal const int RWP3D打印机 = 9825;
internal const int RWP量子打印机 = 9826;
internal const int RWP机体重构芯片 = 9861;
internal const int RWP神经元芯片 = 9862;
internal const int RWP护盾力场芯片 = 9863;
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重整精炼_GB先进有机合成技术 = 1104;
internal const int T能量矩阵 = 1111;
internal const int T氢燃料棒_GB气体冷凝 = 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重氢分馏_GB强相互作用力材料 = 1134;
internal const int T波函数干扰 = 1141;
internal const int T微型粒子对撞机_GB粒子对撞机 = 1142;
internal const int T奇异物质 = 1143;
internal const int T人造恒星_质能转换利用 = 1144;
internal const int T可控湮灭反应 = 1145;
internal const int T增产剂MkI_GB物品增产 = 1151;
internal const int T增产剂MkII_GB虫洞航行 = 1152;
internal const int T增产剂MkIII_GB人造恒星MKI = 1153;
internal const int T基础制造 = 1201;
internal const int T高速制造_GB标准制造单元 = 1202;
internal const int T量子打印_GB高精度加工 = 1203;
internal const int T处理器 = 1302;
internal const int T量子芯片 = 1303;
internal const int T光子聚束采矿 = 1304;
internal const int T亚微观量子纠缠_GB化学反应釜压力容器 = 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 T钛矿冶炼 = 1413;
internal const int T高强度钛合金 = 1414;
internal const int T移山填海工程_GB工业生产 = 1415;
internal const int T微型核聚变发电_GB裂变发电站 = 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集装物流系统_GB物品仓储 = 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晶石爆破单元_GB核能爆破单元 = 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钛化弹箱_GB钢芯穿甲弹 = 1812;
internal const int T超合金弹箱_GB钛金强化弹壳 = 1813;
internal const int T高爆炮弹组 = 1814;
internal const int T超音速导弹组 = 1815;
internal const int T晶石炮弹组_GB微型核弹 = 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 T数字模拟计算 = 1901;
internal const int T物质重组 = 1902;
internal const int T负熵递归 = 1903;
internal const int T高密度可控湮灭 = 1904;
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配送范围 = 4001;
internal const int T运输船引擎 = 3401;
internal const int T运输机舱扩容 = 3501;
internal const int T运输站集装物流 = 3801;
internal const int T矿物利用 = 3601;
internal const int T垂直建造 = 3701;
internal const int T研究速度 = 3901;
internal const int T宇宙探索 = 4101;
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 TVD电磁武器效果 = 6101;
internal const int TMS尼科尔戴森光束 = 1918;
internal const int TVD玻色子操控 = 1999;
internal const int TVD并入COSMO架构 = 1998;
internal const int TGB科学理论 = 1900;
internal const int TGB钨强化玻璃 = 1911;
internal const int TGB焦油精炼 = 1915;
internal const int TGB放射性矿物提炼 = 1916;
internal const int TGB裂变能源燃料棒 = 1919;
internal const int TGB同位素温差发电 = 1920;
internal const int TGB聚变燃料提取 = 1921;
internal const int TGB聚变能源燃料棒 = 1922;
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基础机械组件 = 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 TFE自然资源分馏 = 1621;
internal const int TFE升降级分馏 = 1622;
internal const int TFE垃圾回收 = 1623;
internal const int TFE增产点数聚集 = 1159;
internal const int TFE增产分馏 = 1908;
internal const int TFE分馏塔流动输出集装 = 3807;
internal const int TFE分馏塔产物输出集装 = 3804;
}
public class WPAddItem
{
public void AddWPItems()
{
AddDiyItem(9701, 9801, EItemTypeD.消耗品, "结构结晶", "经过学习黑雾的科技,融合出一种新的结晶,能强化机甲结构,使机甲在一段时间内巨大化(持续3分钟,CD冷却5分钟)", new int[3] { 5206, 1203, 1103 }, new int[3] { 10, 4, 5 }, new int[1] { 1 }, 180, "assets/weapon/jt_1", GetGirdindex(1, 1), 2101, 50);
AddDiyItem(9761, 9861, EItemTypeD.强化芯片, "机体重构芯片", "深入的研究了黑雾的重构技术,利用物质重组器重构了机甲,发挥了重构结晶的完整效果\n(自动使用巨大化技能,无冷却,消耗品翻倍)\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[4] { 5203, 1125, 9701, 1303 }, new int[4] { 50, 30, 50, 20 }, new int[1] { 1 }, 3600, "assets/weapon/xp_4", GetGirdindex(5, 1), 1703, 1);
AddDiyItem(9702, 9802, EItemTypeD.消耗品, "操控结晶", "通过研究黑雾的科技发现,除了通过电子信号操控,还有更好的方法,能使机甲同时操控更多的武器发射平台(持续3分钟,冷却5分钟)", new int[3] { 5206, 1123, 1302 }, new int[3] { 10, 10, 4 }, new int[1] { 1 }, 180, "assets/weapon/jt_3", GetGirdindex(1, 2), 1807, 50);
AddDiyItem(9762, 9862, EItemTypeD.强化芯片, "神经元芯片", "掌握了黑雾的神经元操控方法,使用操控结晶时能得到更好的效果,大幅提升所有武器的操作速度\n(自动使用武器强化技能,无冷却,消耗品翻倍)\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[4] { 5202, 3005, 3003, 9702 }, new int[4] { 200, 50, 20, 50 }, new int[1] { 1 }, 3600, "assets/weapon/xp_2", GetGirdindex(5, 2), 1815, 1);
AddDiyItem(9703, 9803, EItemTypeD.消耗品, "力场结晶", "深入的研究了黑雾的能量输出方式,融合出一种新的力场能量材料,能提升机甲护盾值与恢复速度(技能持续3分钟,冷却5分钟)", new int[3] { 1112, 1106, 1205 }, new int[3] { 6, 4, 1 }, new int[1] { 1 }, 180, "assets/weapon/jt_2", GetGirdindex(1, 3), 2803, 50);
AddDiyItem(9763, 9863, EItemTypeD.强化芯片, "护盾力场芯片", "护盾力场芯片,COSMO技术伦理委员会最新逆向研究黑雾材料得到的全新科技,这是一种全新的力场结构,更节能更高效\n(自动使用护盾强化技能,无冷却,消耗品翻倍)\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[4] { 5201, 3008, 9703, 1305 }, new int[4] { 200, 5, 50, 50 }, new int[1] { 1 }, 3600, "assets/weapon/xp_3", GetGirdindex(5, 3), 1511, 1);
AddDiyItem(9721, 9721, EItemTypeD.装备, "电弧采矿器", "古语有云:只要铲子用得好,没有矿脉挖不倒(装备后可以获得更高的<color=\"#FD965ECC\">手动采矿速度</color>)\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[2] { 1301, 1202 }, new int[2] { 10, 10 }, new int[1] { 1 }, 600, "assets/weapon/gather", GetGirdindex(4, 1), 1002, 1);
AddDiyItem(9722, 9722, EItemTypeD.装备, "S型反应堆", "一种微型反应堆,装备后可给机甲提供<color=\"#FD965ECC\">500KW</color>电力\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[3] { 5206, 1401, 1801 }, new int[3] { 50, 20, 20 }, new int[1] { 1 }, 600, "assets/weapon/rl_1", GetGirdindex(4, 2), 2502, 1);
AddDiyItem(9723, 9723, EItemTypeD.装备, "M型反应堆", "一种微型反应堆,装备后可给机甲提供<color=\"#FD965ECC\">2MW</color>电力\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[4] { 9722, 5206, 1406, 1802 }, new int[4] { 1, 100, 20, 20 }, new int[1] { 1 }, 600, "assets/weapon/rl_2", GetGirdindex(4, 3), 2503, 1);
AddDiyItem(9724, 9724, EItemTypeD.装备, "L型反应堆", "一种微型反应堆,装备后可给机甲提供<color=\"#FD965ECC\">5MW</color>电力\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[4] { 9723, 5205, 1403, 1803 }, new int[4] { 1, 50, 30, 10 }, new int[1] { 1 }, 1200, "assets/weapon/rl_4", GetGirdindex(4, 4), 2505, 1);
AddDiyItem(9725, 9825, EItemTypeD.装备, "3D打印机", "3D打印机,提升<color=\"#FD965ECC\">手动制造速度30%</color>\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[3] { 1201, 1301, 2303 }, new int[3] { 10, 10, 3 }, new int[1] { 1 }, 600, "assets/weapon/printer_3", GetGirdindex(3, 1), 1201, 1);
AddDiyItem(9726, 9826, EItemTypeD.装备, "量子打印机", "量子打印机,提升<color=\"#FD965ECC\">手动制造速度100%</color>\n打开<color=\"#FD965ECC\">机甲界面</color>放入装备栏生效", new int[4] { 9725, 1402, 2305, 1305 }, new int[4] { 1, 40, 20, 20 }, new int[1] { 1 }, 1800, "assets/weapon/printer_2", GetGirdindex(3, 2), 1203, 1);
}
[HarmonyPostfix]
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
public static void ItemProto_typeString(ItemProto __instance, ref string __result)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected I4, but got Unknown
switch ((EItemTypeD)(int)__instance.Type)
{
case EItemTypeD.消耗品:
__result = Localization.Translate("技能消耗品");
break;
case EItemTypeD.强化芯片:
__result = Localization.Translate("强化芯片");
break;
case EItemTypeD.装备:
__result = Localization.Translate("装备");
break;
default:
__result = Localization.Translate("其他分类");
break;
}
}
public int GetGirdindex(int x, int y)
{
return DSP_WeaponPlus.tab装备1 * 1000 + x * 100 + y;
}
public void AddDiyItem(int itemID, int recipeId, EItemTypeD itemtype, string itemName, string itemDesc, int[] inputIds, int[] inputCounts, int[] outputCounts, int craftingTime, string iconPath, int gridIndex, int techID, int stackSize)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
ItemProto val = ProtoRegistry.RegisterItem(itemID, itemName, itemDesc, iconPath, gridIndex, stackSize);
val.Type = (EItemType)itemtype;
ERecipeType val2 = (ERecipeType)4;
int[] array = new int[1] { ((Proto)val).ID };
if (recipeId != -1)
{
RecipeProto val3 = ProtoRegistry.RegisterRecipe(recipeId, val2, craftingTime, inputIds, inputCounts, array, outputCounts, itemDesc, techID, gridIndex, iconPath);
}
}
}
public class SkillComponent : MonoBehaviour
{
public Text skilltimertext;
public GameObject skilltimer;
public static Player player;
public static GameObject playerObject;
public static Mecha mecha;
public bool isbuff;
private int SkillID;
public bool isBigskill;
private int cmpitemId;
private int cmpitemCount = 1;
private string cmpitemtitle;
private int skillitemplus;
public bool state = false;
private bool isCD = false;
public bool noCD = false;
private bool first = true;
public static int isBigstate = 1;
private int skillstatetime;
private int skillCDtime;
private static float walkSpeed;
private int TchId;
private string Tchtitle;
public void SendSkillPacket(int bigstate)
{
ILocalPlayer localPlayer = NebulaModAPI.MultiplayerSession.LocalPlayer;
INetworkProvider network = NebulaModAPI.MultiplayerSession.Network;
network.SendPacket<PlayerInfoPacket>(new PlayerInfoPacket(localPlayer.Data.PlayerId, localPlayer.Data.Username, bigstate));
}
public static void GetPlayer()
{
player = GameMain.mainPlayer;
playerObject = player.gameObject;
mecha = player.mecha;
}
public void Getskilltimer(GameObject sktimer)
{
skilltimer = sktimer;
skilltimertext = skilltimer.GetComponent<Text>();
if (!Object.op_Implicit((Object)(object)skilltimertext))
{
Debug.LogError((object)$"skill_{SkillID} 获取倒计时组件失败!");
}
}
public void Init(int skID, int skitem, string itemname, int plusitemid, int sktime, int skcd, int tchid, string tchname)
{
SkillID = skID;
cmpitemId = skitem;
cmpitemtitle = itemname;
skillitemplus = plusitemid;
skillstatetime = sktime;
skillCDtime = skcd;
TchId = tchid;
Tchtitle = tchname;
}
public void SkillButtonClick()
{
if (player == null)
{
GetPlayer();
}
first = true;
if (!state)
{
RunSkill();
return;
}
((MonoBehaviour)this).StopAllCoroutines();
skilltimertext.text = "";
StopSkill();
}
private bool CheckState()
{
if (Equipmentcolumn.equistorage.GetItemCount(skillitemplus) > 0)
{
noCD = true;
cmpitemCount = 2;
}
else
{
noCD = false;
cmpitemCount = 1;
}
if (!GameMain.history.TechUnlocked(TchId))
{
UIRealtimeTip.Popup("未解" + Tchtitle, true, 0);
return false;
}
if (isCD && !noCD)
{
UIRealtimeTip.Popup("CD冷却中", true, 0);
return false;
}
if (!ConsumableItems(cmpitemId, cmpitemCount))
{
UIRealtimeTip.Popup($"{cmpitemtitle}不足{cmpitemCount}个", true, 0);
if (state)
{
StopSkill();
return false;
}
return false;
}
if (noCD && !state && first)
{
((MonoBehaviour)this).StopCoroutine(CDCountdown(0));
UIRealtimeTip.Popup("已装备芯片\n自动维持该技能", true, 0);
}
return true;
}
private string FormatTimer(int time)
{
int num = time / 60;
int num2 = time % 60;
return $"{num:D2}:{num2:D2}";
}
private bool CheckPlayitem(int itemId)
{
return CheckPlayitem(itemId, 1);
}
private bool CheckPlayitem(int itemId, int itemCount)
{
int num = itemId;
int num2 = itemCount;
int num3 = default(int);
player.TakeItemFromPlayer(ref num, ref num2, ref num3, false, (ItemBundle)null);
if (itemId != num)
{
return false;
}
if (itemCount != num2)
{
return false;
}
return true;
}
private bool ConsumableItems(int itemId, int itemCount)
{
int num = itemId;
int num2 = itemCount;
int num3 = default(int);
player.TakeItemFromPlayer(ref num, ref num2, ref num3, true, (ItemBundle)null);
if (itemId != num)
{
return false;
}
if (itemCount != num2)
{
return false;
}
return true;
}
public void RunSkill()
{
if (!CheckState())
{
return;
}
if (!state)
{
first = false;
state = true;
((MonoBehaviour)this).StopCoroutine(CDCountdown(0));
switch (SkillID)
{
case 1:
ResizeGameObject(state);
break;
case 2:
supernova(state);
break;
case 3:
ShieldPlus(state);
break;
}
}
isCD = false;
StartCountdown(skillstatetime);
if (NebulaModAPI.IsMultiplayerActive && SkillID == 1)
{
SendSkillPacket(isBigstate);
}
}
public static void CloseSkill()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
playerObject.transform.localScale = Vector3.one;
mecha.hpMaxUpgrade = 30000;
mecha.hpRecover = 150;
mecha.walkPower = 500000.0;
isBigstate = 1;
mecha.jumpSpeed = 32f;
mecha.walkSpeed = ResetwalkSpeed();
}
public void StopSkill()
{
state = false;
first = true;
((MonoBehaviour)this).StopCoroutine(RunCountdown(0));
switch (SkillID)
{
case 1:
ResizeGameObject(enlarge: false);
if (NebulaModAPI.IsMultiplayerActive)
{
SendSkillPacket(isBigstate);
}
break;
case 2:
supernova(enlarge: false);
break;
case 3:
ShieldPlus(enlarge: false);
break;
}
if (!noCD)
{
isCD = true;
StartCountdown(skillCDtime);
}
else
{
skilltimertext.text = "";
}
}
public IEnumerator RunCountdown(int dtimer)
{
while (dtimer >= 0)
{
if (dtimer < 1)
{
if (noCD)
{
RunSkill();
}
else
{
StopSkill();
}
break;
}
skilltimertext.text = FormatTimer(dtimer);
if ((Object)(object)playerObject != (Object)null && playerObject.transform.localScale == Vector3.one)
{
playerObject.transform.localScale = Vector3.one * (float)isBigstate;
}
yield return (object)new WaitForSeconds(1f);
dtimer--;
}
}
public IEnumerator CDCountdown(int dtimer)
{
while (dtimer >= 0)
{
if (dtimer < 1)
{
isCD = false;
((MonoBehaviour)this).StopAllCoroutines();
skilltimertext.text = "";
break;
}
if (noCD)
{
((MonoBehaviour)this).StopCoroutine(CDCountdown(0));
break;
}
skilltimertext.text = FormatTimer(dtimer);
yield return (object)new WaitForSeconds(1f);
dtimer--;
}
}
public bool StartCountdown(int dtimer)
{
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
if (isCD)
{
skilltimer.GetComponent<Graphic>().color = new Color(1f, 0.2f, 1f, 1f);
((MonoBehaviour)this).StartCoroutine(CDCountdown(dtimer));
return false;
}
skilltimer.GetComponent<Graphic>().color = new Color(0.2f, 1f, 1f, 1f);
((MonoBehaviour)this).StartCoroutine(RunCountdown(dtimer));
return true;
}
private void ResizeGameObject(bool enlarge)
{
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
if (enlarge)
{
if (noCD)
{
isBigstate = 4;
playerObject.transform.localScale = Vector3.one * (float)isBigstate;
mecha.hpMaxUpgrade = 3000000;
mecha.hpRecover = 50000;
mecha.hp = 3000000;
mecha.walkPower = 1000000.0;
mecha.jumpSpeed = 52f;
mecha.walkSpeed = ResetwalkSpeed() + 8f;
}
else
{
isBigstate = 2;
playerObject.transform.localScale = Vector3.one * (float)isBigstate;
mecha.hpMaxUpgrade = 1000000;
mecha.hpRecover = 20000;
mecha.hp = 1000000;
mecha.walkPower = 700000.0;
mecha.jumpSpeed = 40f;
mecha.walkSpeed = ResetwalkSpeed() + 4f;
}
}
else
{
playerObject.transform.localScale = Vector3.one;
mecha.hpMaxUpgrade = 30000;
mecha.hpRecover = 150;
mecha.walkPower = 500000.0;
isBigstate = 1;
mecha.jumpSpeed = 32f;
mecha.walkSpeed = ResetwalkSpeed();
}
}
private void ShieldPlus(bool enlarge)
{
if (enlarge)
{
if (noCD)
{
mecha.energyShieldRadius = 20f;
mecha.energyShieldEnergyRate = 20L;
}
else
{
mecha.energyShieldRadius = 10f;
mecha.energyShieldEnergyRate = 50L;
}
}
else
{
ResetShieldRadius();
}
}
private void supernova(bool enlarge)
{
if (enlarge)
{
if (noCD)
{
mecha.laserLocalAttackRange = 60f;
mecha.bulletLocalAttackRange = 60f;
mecha.bulletMuzzleCount = 60;
mecha.bulletMuzzleInterval = 35000;
mecha.cannonLocalAttackRange = 100f;
mecha.cannonMuzzleCount = 10;
mecha.cannonMuzzleInterval = 200000;
mecha.missileLocalAttackRange = 120f;
mecha.missileMuzzleCount = 80;
mecha.missileMuzzleInterval = 48000;
mecha.missileROF = 25000;
mecha.missileSpaceAttackRange = 10000f;
}
else
{
mecha.laserLocalAttackRange = 40f;
mecha.bulletLocalAttackRange = 40f;
mecha.bulletMuzzleCount = 20;
mecha.bulletMuzzleInterval = 120000;
mecha.cannonLocalAttackRange = 60f;
mecha.cannonMuzzleCount = 4;
mecha.cannonMuzzleInterval = 400000;
mecha.missileLocalAttackRange = 70f;
mecha.missileMuzzleCount = 20;
mecha.missileMuzzleInterval = 80000;
}
}
else
{
mecha.laserLocalAttackRange = 10f;
mecha.bulletLocalAttackRange = 32f;
mecha.bulletMuzzleCount = 4;
mecha.bulletMuzzleInterval = 105000;
mecha.cannonLocalAttackRange = 38f;
mecha.cannonMuzzleCount = 1;
mecha.cannonMuzzleInterval = 600000;
mecha.missileLocalAttackRange = 46f;
mecha.missileMuzzleCount = 4;
mecha.missileMuzzleInterval = 88000;
mecha.missileROF = 8000;
mecha.missileSpaceAttackRange = 1800f;
}
}
private static float GetreplicateSpeed(float add)
{
if (GameMain.history.TechUnlocked(1202))
{
add += 0.5f;
}
if (GameMain.history.TechUnlocked(1203))
{
add += 0.5f;
}
add += 1f;
return add;
}
private static float Getpower(float add)
{
mecha.corePowerGen = 80000.0;
Mecha obj = mecha;
obj.corePowerGen += (double)add;
return add;
}
public static bool CheckWeaponGrids()
{
if (player == null)
{
player = GameMain.mainPlayer;
playerObject = player.gameObject;
mecha = player.mecha;
}
StorageComponent equistorage = Equipmentcolumn.equistorage;
mecha.miningSpeed = Configs.freeMode.miningSpeedScale;
mecha.replicateSpeed = GetreplicateSpeed(0f);
Getpower(0f);
for (int i = 0; i < equistorage.grids.Length; i++)
{
if (equistorage.grids[i].itemId == 9721)
{
mecha.miningSpeed = 2.2f;
}
if (equistorage.grids[i].itemId == 9725)
{
mecha.replicateSpeed = GetreplicateSpeed(0.3f);
}
if (equistorage.grids[i].itemId == 9726)
{
mecha.replicateSpeed = GetreplicateSpeed(1f);
}
if (equistorage.grids[i].itemId == 9722)
{
Getpower(500000f);
}
if (equistorage.grids[i].itemId == 9723)
{
Getpower(2000000f);
}
if (equistorage.grids[i].itemId == 9724)
{
Getpower(5000000f);
}
}
return false;
}
public static float ResetShieldRadius()
{
int num = -1;
for (int i = 0; i < 25; i++)
{
if (GameMain.history.TechUnlocked(2801 + i))
{
num = i + 1;
}
}
mecha.energyShieldEnergyRate = 500L;
switch (num)
{
case -1:
mecha.energyShieldRadius = 0f;
break;
case 0:
mecha.energyShieldRadius = 0f;
break;
case 1:
mecha.energyShieldRadius = 2f;
break;
case 2:
mecha.energyShieldRadius = 2.5f;
break;
case 3:
mecha.energyShieldRadius = 3f;
break;
default:
mecha.energyShieldRadius = num + 1;
break;
}
return mecha.energyShieldRadius;
}
public static float ResetwalkSpeed()
{
int num = -1;
for (int i = 0; i < 8; i++)
{
if (GameMain.history.TechUnlocked(2201 + i))
{
num = i + 1;
}
}
switch (num)
{
case -1:
walkSpeed = 6f;
break;
case 7:
walkSpeed = (float)num + 7f;
break;
case 8:
walkSpeed = (float)num + 8f;
break;
default:
walkSpeed = (float)num + 6f;
break;
}
return walkSpeed;
}
}
public class SkillUI
{
private static Font font;
public GameObject skbutGameObject;
public GameObject skilltimer;
private Text skilltimertext;
public UIButton skButtn;
private static string Objname;
private static string Imgname;
private static string TipTitle;
private static string TipDesc;
private static int Btnx;
private static int Btny;
public void Init(int skillid, string title, string desc, int x, int y, string imgname)
{
Objname = $"skill-{skillid}";
TipTitle = title;
TipDesc = desc;
Btnx = x;
Btny = y;
Imgname = imgname;
((Object)skbutGameObject).name = Objname;
CreatdownTime();
SetTimerpoint(Btnx, Btny);
AddSkillIcon();
SetBtnTip();
}
public static Texture2D LoadTextureFromAssetBundle(string assetBundlePath, string textureName)
{
AssetBundle val = AssetBundle.LoadFromFile(assetBundlePath);
if ((Object)(object)val == (Object)null)
{
Debug.LogError((object)"Failed to load asset bundle.");
return null;
}
Texture2D result = val.LoadAsset<Texture2D>(textureName);
val.Unload(false);
return result;
}
public void Creat()
{
GameObject val = GameObject.Find("UI Root/Overlay Canvas/In Game/Game Menu/time-text");
font = val.GetComponent<Text>().font;
GameObject val2 = GameObject.Find("UI Root/Overlay Canvas/In Game/Game Menu/button-2-bg");
if ((Object)(object)val2 == (Object)null)
{
Debug.LogError((object)"未能找到原始按钮对象!");
return;
}
skbutGameObject = Object.Instantiate<GameObject>(val2, GameObject.Find("UI Root/Overlay Canvas/In Game/Z Screen/weapon-group").transform);
if ((Object)(object)skbutGameObject == (Object)null)
{
Debug.LogError((object)"实例化按钮对象失败!");
}
}
private void SetTimerpoint(float x, float y)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
((RectTransform)skbutGameObject.transform).anchoredPosition = new Vector2(x, y);
}
private void SetBtnTip()
{
skButtn = skbutGameObject.GetComponent<UIButton>();
skButtn.tips.tipTitle = TipTitle;
skButtn.tips.tipText = TipDesc;
}
private void CreatdownTime()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
skilltimer = new GameObject("skilltimer");
skilltimer.transform.SetParent(skbutGameObject.transform, false);
skilltimer.AddComponent<RectTransform>();
skilltimertext = skilltimer.AddComponent<Text>();
skilltimertext.font = font;
skilltimertext.alignment = (TextAnchor)7;
skilltimertext.text = "";
((RectTransform)((Component)skilltimertext).transform).anchoredPosition = new Vector2(2f, 36f);
skilltimertext.fontSize = 16;
}
private void AddSkillIcon()
{
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Expected O, but got Unknown
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
GameObject val = GameObject.Find("UI Root/Overlay Canvas/In Game/Z Screen/weapon-group/" + Objname + "/button-2");
GameObject val2 = GameObject.Find("UI Root/Overlay Canvas/In Game/Z Screen/weapon-group/" + Objname + "/button-2/icon");
if (Object.op_Implicit((Object)(object)val2))
{
Object.Destroy((Object)(object)val2);
}
if (!Object.op_Implicit((Object)(object)val))
{
Debug.LogError((object)"查询对象失败!");
}
GameObject val3 = new GameObject("skillicon");
val3.transform.SetParent(val.transform, false);
Image val4 = val3.AddComponent<Image>();
((Component)val4).transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
if ((Object)(object)val4 != (Object)null)
{
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
directoryName += "\\skill";
Texture2D val5 = LoadTextureFromAssetBundle(directoryName, Imgname);
if (Object.op_Implicit((Object)(object)val5))
{
val4.sprite = Sprite.Create(val5, new Rect(0f, 0f, (float)((Texture)val5).width, (float)((Texture)val5).height), new Vector2(0.5f, 0.5f));
((Graphic)val4).color = Color.op_Implicit(new Vector4(1f, 1f, 1f, 0.7f));
}
}
}
}
}