Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * R e a d m e
- * -----------
- *
- * GridAnalyzer is primarily intended for use in creative. Most of what it does is only done on script startup-- to rerun it, the script should be recompiled.
- *
- * PCU counts are hardcoded for Draconis Expanse. These numbers may not be up to date; they are just an aid.
- *
- * On startup, the script will examine the grid and generate a report. The report is echoed and saved to CustomData.
- * The report will warn about the absence of beacons, survival kits, gas tanks,
- * connectors, cockpits, gyros, projector, maglocks, rotors, and antenna. In some cases, it provides a count.
- * While not every build needs all of these, these warnings ensure none of them are left out by accident.
- *
- * The report will then list the thrust acceleration available in each direction, relative to the cockpit. This requires the grid to be a ship, not a station.
- *
- * Finally, the report will list a count of every type of functional block in the ship, along with their mass and PCU utilization.
- * This list will be generated twice, sorted by PCU and then by mass.
- *
- * If the mod (DevTool) Programmable Block DebugAPI ( https://steamcommunity.com/sharedfiles/filedetails/?id=2654858862 ) is present,
- * the script will examine the grid and render 3D boxes around thrusters and cargo containers that can't reach fuel or lack conveyor connection to the cockpit, respectively.
- *
- * Command list:
- * check
- * - reruns thruster fuel, conveyor checks, and re-renders at the end
- * clear
- * - clears all debug rendering
- * ontop
- * - toggles whether things render through solids or not
- * highlight TEXT
- * - will highlight or un-highlight blocks with a type name or custom name containing TEXT
- *
- */
- public Program()
- {
- Utility.setup();
- report();
- Runtime.UpdateFrequency = UpdateFrequency.Update1;
- }
- struct ReportEntry
- {
- public string name;
- public int count;
- public int PCU;
- public int mass;
- }
- int gridCount<T>(Func<IMyTerminalBlock, bool> f = null) where T : class
- {
- List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
- GridTerminalSystem.GetBlocksOfType<T>(blocks, f);
- return blocks.Count;
- }
- string newtons(double n)
- {
- if (n < 1000) return n.ToString("0.0") + "N";
- if (n < 1000000) return (n/1000).ToString("0.0") + "kN";
- /*if (n < 1000000000)*/ return (n / 1000000).ToString("0.0") + "MN";
- }
- public void report()
- {
- //int total_PCU = 0;
- //int total_mass = 0;
- Dictionary<string, string> displayname_to_defname = new Dictionary<string, string>();
- Dictionary<string, int> blocktype_count = new Dictionary<string, int>();
- Dictionary<string, int> mass_by_blocktype = new Dictionary<string, int>();
- //List<ReportEntry> entries = new List<ReportEntry>();
- List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
- GridTerminalSystem.GetBlocksOfType<IMyTerminalBlock>(blocks);
- for(int i = 0; i < blocks.Count; i++)
- {
- IMyTerminalBlock block = blocks[i];
- string name = Utility.getName(block);
- if (!blocktype_count.ContainsKey(name)) blocktype_count[name] = 0;
- if (!mass_by_blocktype.ContainsKey(name)) mass_by_blocktype[name] = 0;
- if (!displayname_to_defname.ContainsKey(name))
- {
- displayname_to_defname[name] = Utility.getDefName(block);
- }
- blocktype_count[name] += 1;
- mass_by_blocktype[name] += (int)Math.Ceiling(block.Mass);
- }
- List<ReportEntry> entries = new List<ReportEntry>();
- string report = "";
- foreach(KeyValuePair<string, int> kvp in blocktype_count)
- {
- var key = kvp.Key;
- int count = blocktype_count[key];
- int pcu = Utility.getPCU(displayname_to_defname[key]);
- ReportEntry e = new ReportEntry();
- e.name = key;
- e.count = count;
- e.PCU = pcu*count;
- e.mass = mass_by_blocktype[key];
- entries.Add(e);
- //entries.a
- //report += count + " " + key + " totalling " + pcu * count + " PCU and " + mass_by_blocktype[key] + " mass\n";
- }
- List<IMyShipController> ctrls = new List<IMyShipController>();
- GridTerminalSystem.GetBlocksOfType<IMyShipController>(ctrls);
- if (ctrls.Count > 0)
- {
- var c = ctrls[0];
- int bm = (int)c.CalculateShipMass().BaseMass;
- foreach (ReportEntry e in entries)
- {
- bm -= e.mass;
- }
- var r = new ReportEntry();
- r.name = "remainder (armor etc)";
- r.count = -1;
- r.mass = bm;
- entries.Add(r);
- }
- report += "Report saved to CustomData.\n\n";
- if (gridCount<IMyBeacon>() < 1) report += "WARNING: No beacon!\n";
- int skits = gridCount<IMyTerminalBlock>(b => b.DefinitionDisplayNameText.ToLower().Contains("survival") || b is IMyMedicalRoom);
- if (skits < 1) report += "WARNING: No medical room or skit!\n";
- else report += "Skits: " + skits + "\n";
- int pbc = gridCount<IMyProgrammableBlock>();
- report += "Program blocks: " + pbc + "\n";
- if (gridCount<IMyGyro>() < 1) report += "WARNING: No gyros!\n";
- if (gridCount<IMyGasTank>(b => b.DefinitionDisplayNameText.ToLower().Contains("hydrogen")) < 1)report += "WARNING: No hydrogen tanks!\n";
- if (gridCount<IMyGasTank>(b => b.DefinitionDisplayNameText.ToLower().Contains("oxygen")) < 1) report += "WARNING: No oxygen tanks!\n";
- if (gridCount<IMyShipConnector>() < 1) report += "WARNING: No connectors!\n";
- if (gridCount<IMyCockpit>() < 1) report += "WARNING: No cockpit!\n";
- //if (gridCount<IMyUpgradeModule>(b => b.DefinitionDisplayNameText.ToLower().Contains("stabilizer")) < 1) report += "WARNING: No Epstein Stabilizer!\n";
- if (gridCount<IMyCargoContainer>() < 1) report += "WARNING: No cargo containers!\n";
- if (gridCount<IMyProjector>() < 1) report += "WARNING: No projector!\n";
- if (gridCount<IMyLandingGear>() < 1) report += "WARNING: No maglocks!\n";
- if (gridCount<IMyMotorStator>() < 1) report += "WARNING: No rotor!\n";
- if (gridCount<IMyRadioAntenna>() < 1) report += "WARNING: No antenna!\n";
- report += "\nTHRUST REPORT:\n";
- List<IMyThrust> thrusters = new List<IMyThrust>();
- double mass = 0;
- GridTerminalSystem.GetBlocksOfType<IMyThrust>(thrusters);
- if (ctrls.Count > 0)
- {
- mass = ctrls[0].CalculateShipMass().PhysicalMass;
- Dictionary<Base6Directions.Direction, double> thrustByDir = new Dictionary<Base6Directions.Direction, double>();
- foreach (var d in (Base6Directions.Direction[])Enum.GetValues(typeof(Base6Directions.Direction)))
- {
- thrustByDir[d] = 0;
- }
- foreach (var t in thrusters)
- {
- var met = t.MaxEffectiveThrust;
- var d = ctrls[0].Orientation.TransformDirectionInverse(t.Orientation.Forward);
- if (!thrustByDir.ContainsKey(d)) thrustByDir[d] = met;
- else thrustByDir[d] += met;
- }
- foreach (var d in (Base6Directions.Direction[])Enum.GetValues(typeof(Base6Directions.Direction)))
- {
- double t = thrustByDir[d];
- report += d + " dir thrust: " + newtons(t) + " (" + (t / mass).ToString("0.0") + "m/s)\n";
- }
- }else
- {
- report += "Thrust report requires a cockpit.\n";
- }
- report += "\nREPORT BY PCU:\n";
- entries.Sort(delegate (ReportEntry x, ReportEntry y)
- {
- return y.PCU.CompareTo(x.PCU);
- });
- foreach (ReportEntry e in entries)
- {
- report += " "+e.count + " " + e.name + ": " + e.PCU + " PCU, " + e.mass + " mass\n";
- }
- report += "\nREPORT BY MASS:\n";
- entries.Sort(delegate (ReportEntry x, ReportEntry y)
- {
- return y.mass.CompareTo(x.mass);
- });
- foreach (ReportEntry e in entries)
- {
- report += " " + e.count + " " + e.name + ": " + e.PCU + " PCU, " + e.mass + " mass\n";
- }
- Echo(report);
- Me.CustomData = report;
- }
- DebugAPI Debug;
- List<IMyThrust> thrusters = new List<IMyThrust>();
- List<IMyGasGenerator> gasgenerators = new List<IMyGasGenerator>();
- List<IMyGasTank> tanks_hydrogen = new List<IMyGasTank>();
- IMyShipController ctrl = null;
- Dictionary<IMyThrust, bool> thrusterC = new Dictionary<IMyThrust, bool>();
- double chkNewtons = 0;
- void updBlocks()
- {
- thrusters.Clear();
- gasgenerators.Clear();
- tanks_hydrogen.Clear();
- GridTerminalSystem.GetBlocksOfType(gasgenerators);
- GridTerminalSystem.GetBlocksOfType(thrusters);
- GridTerminalSystem.GetBlocksOfType(tanks_hydrogen, b => b.OwnerId == Me.OwnerId && b.CubeGrid == Me.CubeGrid && b.DefinitionDisplayNameText.Contains("Hydrogen"));
- chkNewtons = 0;
- foreach (var b in tanks_hydrogen) chkNewtons += (double)b.Capacity;
- chkNewtons = chkNewtons / 1000000 * 500;
- List<IMyShipController> ctrls = new List<IMyShipController>();
- GridTerminalSystem.GetBlocksOfType<IMyShipController>(ctrls);
- ctrl = ctrls[0];
- }
- int itr = 0;
- double hydrogenLevel()
- {
- double r = 0;
- foreach(var b in tanks_hydrogen)r += (double)b.FilledRatio * (double)b.Capacity;
- return r;
- }
- public bool usingHydrogen()
- {
- foreach (var b in tanks_hydrogen)
- {
- Me.CustomData = b.DetailedInfo;
- }
- return false;
- }
- int tchk = -1;
- void startcheck()
- {
- if (!runningCheck)
- {
- checking = false;
- runningCheck = true;
- checkNewOnly = false;
- tchk = -1;
- }
- }
- bool checkNewOnly = false;
- bool runningCheck = true;
- bool checking = false;
- double hStartLevel = 0;
- public void thrustCheck()
- {
- if (!runningCheck) return;
- if (ctrl == null) return;
- if(tchk == -1)
- {
- echo("initializing thrust check for "+ thrusters.Count+" thrusters");
- foreach (var g in gasgenerators) g.Enabled = false;
- foreach (IMyThrust t in thrusters)
- {
- t.Enabled = false;
- t.ThrustOverride = 0;
- }
- tchk = 0;
- }else
- {
- if (checkNewOnly && tchk < thrusters.Count)
- {
- bool skip = false;
- do
- {
- if (thrusterC.ContainsKey(thrusters[tchk]))
- {
- tchk += 1;
- skip = true;
- }
- else skip = false;
- } while (tchk < thrusters.Count && skip);
- }
- if (tchk >= thrusters.Count)
- {
- echo("thruster checks done");
- runningCheck = false;
- foreach (IMyThrust th in thrusters)
- {
- th.Enabled = true;
- th.ThrustOverride = 0;
- }
- foreach (var g in gasgenerators) g.Enabled = true;
- tchk = -1;
- renderDirty = true;
- //Debug.PrintChat("finished tchk setting renderDirty=true", font: DebugAPI.Font.Red);
- }
- else
- {
- var t = thrusters[tchk];
- if (!checking)
- {
- if (ctrl.GetShipVelocities().LinearVelocity.Length() > 0.01) return;
- //SAN check - suspend this until ship isn't moving much
- echo("checking thruster " + tchk + "/" + thrusters.Count);
- checking = true;
- hStartLevel = hydrogenLevel();
- t.Enabled = true;
- t.ThrustOverride = (float)chkNewtons;
- }
- else
- {
- checking = false;
- bool connected = hydrogenLevel() != hStartLevel;
- t.Enabled = false;
- t.ThrustOverride = 0;
- thrusterC[t] = connected;
- tchk += 1;
- }
- }
- }
- }
- bool renderDirty = false;
- MyOrientedBoundingBoxD getBlockOBB(IMyTerminalBlock b)
- {
- float cellSize = b.CubeGrid.GridSize;
- Vector3D offset = Vector3D.Half * cellSize;
- BoundingBoxD gridLocalBB = new BoundingBoxD(b.CubeGrid.Min * cellSize - offset, b.CubeGrid.Max * cellSize + offset);
- Vector3D min = (b.Min * cellSize) - offset;// * cellSize - offset;
- Vector3D max = ((b.Max + 1) * cellSize) - offset;
- gridLocalBB = new BoundingBoxD(min, max);
- MyOrientedBoundingBoxD obb = new MyOrientedBoundingBoxD(gridLocalBB, b.CubeGrid.WorldMatrix);
- //Debug.DrawOBB(obb, new Color(255, 0, 255));
- return obb;
- }
- void echo(string s)
- {
- Echo(s);
- Me.GetSurface(0).WriteText(s);
- }
- void normalizeNumbering()
- {
- List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
- GridTerminalSystem.GetBlocksOfType(blocks);
- Dictionary<string, int> btypecount = new Dictionary<string, int>();
- foreach(var b in blocks)
- {
- var tn = b.DefinitionDisplayNameText;
- if (!btypecount.ContainsKey(tn)) btypecount[tn] = 1;
- else btypecount[tn] += 1;
- var isnumbered = false;
- var l= b.CustomName.Split(' ').Last();
- int i = 0;
- bool result = int.TryParse(l, out i);
- if (result && i.ToString() == l) isnumbered = true;
- if (isnumbered)
- {
- string nonum = b.CustomName.Substring(0, b.CustomName.Length - (l.Length + 1));
- string newname = nonum + " " + (btypecount[tn]);
- b.CustomName = newname;
- }
- }
- }
- List<IMyTerminalBlock> highlightlist = new List<IMyTerminalBlock>();
- bool onTop = false;
- void updateAnalyticRender()
- {
- if (Debug != null && Debug.ModDetected)
- {
- try
- {
- //runningCheck = true;
- Debug.RemoveDraw();
- //Debug.DrawMatrix(Me.WorldMatrix, onTop: true);
- List<IMyTerminalBlock> connectables = new List<IMyTerminalBlock>();
- GridTerminalSystem.GetBlocksOfType(connectables, b => b.HasInventory || b is IMyThrust);
- List<IMyShipController> ctrls = new List<IMyShipController>();
- GridTerminalSystem.GetBlocksOfType(ctrls, b => b.HasInventory);
- if (ctrls.Count > 0)
- {
- List<IMyTerminalBlock> broken_inventories = new List<IMyTerminalBlock>();
- List<IMyTerminalBlock> broken_thrusters = new List<IMyTerminalBlock>();
- foreach (IMyTerminalBlock b in connectables)
- {
- if (b.HasInventory)
- {
- var i = b.GetInventory(0);
- List<MyItemType> it = new List<MyItemType>();
- i.GetAcceptedItems(it);
- bool broken = true;
- foreach (var c in ctrls)
- {
- IMyGasTank t;
- if (c.GetInventory(0).CanTransferItemTo(i, it[0]))
- {
- broken = false;
- break;
- }
- }
- if (broken) broken_inventories.Add(b);
- }
- else if (b is IMyThrust)
- {
- IMyThrust i = (IMyThrust)b;
- if (thrusterC.ContainsKey(i))
- {
- if (!thrusterC[i]) broken_thrusters.Add(b);
- }
- else
- {
- //Debug.PrintChat("recheck because "+i.CustomName, font: DebugAPI.Font.Red);
- updBlocks();
- startcheck();
- checkNewOnly = true;
- }
- }
- }
- float cellSize = Me.CubeGrid.GridSize;
- foreach (var b in broken_inventories)
- {
- Debug.DrawOBB(getBlockOBB(b), Color.Red * 0.25f, DebugAPI.Style.SolidAndWireframe, onTop: onTop);
- }
- foreach (var b in broken_thrusters)
- {
- Debug.DrawOBB(getBlockOBB(b), Color.Yellow * 0.25f, DebugAPI.Style.SolidAndWireframe, onTop: onTop);
- }
- foreach (var b in highlightlist)
- {
- Debug.DrawOBB(getBlockOBB(b), Color.Green * 0.25f, DebugAPI.Style.SolidAndWireframe, onTop: onTop);
- }
- }
- }
- catch (Exception e)
- {
- // example way to get notified on error then allow PB to stop (crash)
- Debug.PrintChat($"{e.Message}\n{e.StackTrace}", font: DebugAPI.Font.Red);
- Me.CustomData = e.ToString();
- throw;
- }
- }
- }
- double lastMass = 0;
- int lConnect = 0;
- bool fr = true;
- int tick = 0;
- public void Main(string argument, UpdateType updateSource)
- {
- if (argument == "nn")
- {
- normalizeNumbering();
- }
- tick += 1;
- if (Debug == null)
- {
- Debug = new DebugAPI(this);
- if (Debug.ModDetected)
- {
- var s = Me.GetSurface(0);
- s.ContentType = ContentType.TEXT_AND_IMAGE;
- updBlocks();
- startcheck();
- }
- else
- {
- Runtime.UpdateFrequency = UpdateFrequency.None;
- return;
- }
- }
- if (ctrl == null) return;
- /*if (tick % 30 == 0)
- {
- List<IMyShipController> ctrls = new List<IMyShipController>();
- if (ctrls.Count > 0)
- {
- List<IMyTerminalBlock> connectables = new List<IMyTerminalBlock>();
- GridTerminalSystem.GetBlocksOfType(connectables, b => b.HasInventory || b is IMyThrust);
- //var m = ctrls[0].CalculateShipMass().BaseMass;
- if (connectables.Count != lConnect)
- {
- lConnect = connectables.Count;
- updBlocks();
- startcheck();
- checkNewOnly = true;
- }
- }
- }*/
- if (tick % 2 == 0)thrustCheck();
- /*if(!runningCheck && fr)
- {
- fr = false;
- updateAnalyticRender();
- runningCheck = false;
- }*/
- if (renderDirty)
- {
- if(renderDirty)// Debug.PrintChat("renderDirty", font: DebugAPI.Font.Red);
- renderDirty = false;
- updateAnalyticRender();
- }
- if(argument == "clear")
- {
- Debug.RemoveDraw();
- highlightlist.Clear();
- }
- else if (argument == "check")
- {
- updBlocks();
- startcheck();
- }else if(argument == "ontop")
- {
- onTop = !onTop;
- updateAnalyticRender();
- }else if(argument.StartsWith("highlight "))
- {
- var s = argument.Substring("highlight ".Length);
- List<IMyTerminalBlock> blox = new List<IMyTerminalBlock>();
- GridTerminalSystem.GetBlocksOfType(blox);
- foreach(var b in blox)
- {
- string n = b.DefinitionDisplayNameText.ToLower();
- string cn = b.CustomName.ToLower();
- if(n.Contains(s) || cn.Contains(s))
- {
- if (highlightlist.Contains(b)) highlightlist.Remove(b);
- else highlightlist.Add(b);
- }
- }
- updateAnalyticRender();
- }
- }
- /// <summary>
- /// Create an instance of this and hold its reference.
- /// </summary>
- public class DebugAPI
- {
- public readonly bool ModDetected;
- /// <summary>
- /// Recommended to be used at start of Main(), unless you wish to draw things persistently and remove them manually.
- /// <para>Removes everything except AdjustNumber and chat messages.</para>
- /// </summary>
- public void RemoveDraw() => _removeDraw?.Invoke(_pb);
- Action<IMyProgrammableBlock> _removeDraw;
- /// <summary>
- /// Removes everything that was added by this API (except chat messages), including DeclareAdjustNumber()!
- /// <para>For calling in Main() you should use <see cref="RemoveDraw"/> instead.</para>
- /// </summary>
- public void RemoveAll() => _removeAll?.Invoke(_pb);
- Action<IMyProgrammableBlock> _removeAll;
- /// <summary>
- /// You can store the integer returned by other methods then remove it with this when you wish.
- /// <para>Or you can not use this at all and call <see cref="RemoveDraw"/> on every Main() so that your drawn things live a single PB run.</para>
- /// </summary>
- public void Remove(int id) => _remove?.Invoke(_pb, id);
- Action<IMyProgrammableBlock, int> _remove;
- public int DrawPoint(Vector3D origin, Color color, float radius = 0.2f, float seconds = DefaultSeconds, bool? onTop = null) => _point?.Invoke(_pb, origin, color, radius, seconds, onTop ?? _defaultOnTop) ?? -1;
- Func<IMyProgrammableBlock, Vector3D, Color, float, float, bool, int> _point;
- public int DrawLine(Vector3D start, Vector3D end, Color color, float thickness = DefaultThickness, float seconds = DefaultSeconds, bool? onTop = null) => _line?.Invoke(_pb, start, end, color, thickness, seconds, onTop ?? _defaultOnTop) ?? -1;
- Func<IMyProgrammableBlock, Vector3D, Vector3D, Color, float, float, bool, int> _line;
- public int DrawAABB(BoundingBoxD bb, Color color, Style style = Style.Wireframe, float thickness = DefaultThickness, float seconds = DefaultSeconds, bool? onTop = null) => _aabb?.Invoke(_pb, bb, color, (int)style, thickness, seconds, onTop ?? _defaultOnTop) ?? -1;
- Func<IMyProgrammableBlock, BoundingBoxD, Color, int, float, float, bool, int> _aabb;
- public int DrawOBB(MyOrientedBoundingBoxD obb, Color color, Style style = Style.Wireframe, float thickness = DefaultThickness, float seconds = DefaultSeconds, bool? onTop = null) => _obb?.Invoke(_pb, obb, color, (int)style, thickness, seconds, onTop ?? _defaultOnTop) ?? -1;
- Func<IMyProgrammableBlock, MyOrientedBoundingBoxD, Color, int, float, float, bool, int> _obb;
- public int DrawSphere(BoundingSphereD sphere, Color color, Style style = Style.Wireframe, float thickness = DefaultThickness, int lineEveryDegrees = 15, float seconds = DefaultSeconds, bool? onTop = null) => _sphere?.Invoke(_pb, sphere, color, (int)style, thickness, lineEveryDegrees, seconds, onTop ?? _defaultOnTop) ?? -1;
- Func<IMyProgrammableBlock, BoundingSphereD, Color, int, float, int, float, bool, int> _sphere;
- public int DrawMatrix(MatrixD matrix, float length = 1f, float thickness = DefaultThickness, float seconds = DefaultSeconds, bool? onTop = null) => _matrix?.Invoke(_pb, matrix, length, thickness, seconds, onTop ?? _defaultOnTop) ?? -1;
- Func<IMyProgrammableBlock, MatrixD, float, float, float, bool, int> _matrix;
- /// <summary>
- /// Adds a HUD marker for a world position.
- /// <para>White is used if <paramref name="color"/> is null.</para>
- /// </summary>
- public int DrawGPS(string name, Vector3D origin, Color? color = null, float seconds = DefaultSeconds) => _gps?.Invoke(_pb, name, origin, color, seconds) ?? -1;
- Func<IMyProgrammableBlock, string, Vector3D, Color?, float, int> _gps;
- /// <summary>
- /// Adds a notification center on screen. Do not give 0 or lower <paramref name="seconds"/>.
- /// </summary>
- public int PrintHUD(string message, Font font = Font.Debug, float seconds = 2) => _printHUD?.Invoke(_pb, message, font.ToString(), seconds) ?? -1;
- Func<IMyProgrammableBlock, string, string, float, int> _printHUD;
- /// <summary>
- /// Shows a message in chat as if sent by the PB (or whoever you want the sender to be)
- /// <para>If <paramref name="sender"/> is null, the PB's CustomName is used.</para>
- /// <para>The <paramref name="font"/> affects the fontface and color of the entire message, while <paramref name="senderColor"/> only affects the sender name's color.</para>
- /// </summary>
- public void PrintChat(string message, string sender = null, Color? senderColor = null, Font font = Font.Debug) => _chat?.Invoke(_pb, message, sender, senderColor, font.ToString());
- Action<IMyProgrammableBlock, string, string, Color?, string> _chat;
- /// <summary>
- /// Used for realtime adjustments, allows you to hold the specified key/button with mouse scroll in order to adjust the <paramref name="initial"/> number by <paramref name="step"/> amount.
- /// <para>Add this once at start then store the returned id, then use that id with <see cref="GetAdjustNumber(int)"/>.</para>
- /// </summary>
- public void DeclareAdjustNumber(out int id, double initial, double step = 0.05, Input modifier = Input.Control, string label = null) => id = _adjustNumber?.Invoke(_pb, initial, step, modifier.ToString(), label) ?? -1;
- Func<IMyProgrammableBlock, double, double, string, string, int> _adjustNumber;
- /// <summary>
- /// See description for: <see cref="DeclareAdjustNumber(double, double, Input, string)"/>.
- /// <para>The <paramref name="noModDefault"/> is returned when the mod is not present.</para>
- /// </summary>
- public double GetAdjustNumber(int id, double noModDefault = 1) => _getAdjustNumber?.Invoke(_pb, id) ?? noModDefault;
- Func<IMyProgrammableBlock, int, double> _getAdjustNumber;
- /// <summary>
- /// Gets simulation tick since this session started. Returns -1 if mod is not present.
- /// </summary>
- public int GetTick() => _tick?.Invoke() ?? -1;
- Func<int> _tick;
- public enum Style { Solid, Wireframe, SolidAndWireframe }
- public enum Input { MouseLeftButton, MouseRightButton, MouseMiddleButton, MouseExtraButton1, MouseExtraButton2, LeftShift, RightShift, LeftControl, RightControl, LeftAlt, RightAlt, Tab, Shift, Control, Alt, Space, PageUp, PageDown, End, Home, Insert, Delete, Left, Up, Right, Down, D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, NumPad0, NumPad1, NumPad2, NumPad3, NumPad4, NumPad5, NumPad6, NumPad7, NumPad8, NumPad9, Multiply, Add, Separator, Subtract, Decimal, Divide, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12 }
- public enum Font { Debug, White, Red, Green, Blue, DarkBlue }
- const float DefaultThickness = 0.02f;
- const float DefaultSeconds = -1;
- IMyProgrammableBlock _pb;
- bool _defaultOnTop;
- /// <summary>
- /// NOTE: if mod is not present then methods will simply not do anything, therefore you can leave the methods in your released code.
- /// </summary>
- /// <param name="program">pass `this`.</param>
- /// <param name="drawOnTopDefault">set the default for onTop on all objects that have such an option.</param>
- public DebugAPI(MyGridProgram program, bool drawOnTopDefault = false)
- {
- if (program == null)
- throw new Exception("Pass `this` into the API, not null.");
- _defaultOnTop = drawOnTopDefault;
- _pb = program.Me;
- var methods = _pb.GetProperty("DebugAPI")?.As<IReadOnlyDictionary<string, Delegate>>()?.GetValue(_pb);
- if (methods != null)
- {
- Assign(out _removeAll, methods["RemoveAll"]);
- Assign(out _removeDraw, methods["RemoveDraw"]);
- Assign(out _remove, methods["Remove"]);
- Assign(out _point, methods["Point"]);
- Assign(out _line, methods["Line"]);
- Assign(out _aabb, methods["AABB"]);
- Assign(out _obb, methods["OBB"]);
- Assign(out _sphere, methods["Sphere"]);
- Assign(out _matrix, methods["Matrix"]);
- Assign(out _gps, methods["GPS"]);
- Assign(out _printHUD, methods["HUDNotification"]);
- Assign(out _chat, methods["Chat"]);
- Assign(out _adjustNumber, methods["DeclareAdjustNumber"]);
- Assign(out _getAdjustNumber, methods["GetAdjustNumber"]);
- Assign(out _tick, methods["Tick"]);
- RemoveAll(); // cleanup from past compilations on this same PB
- ModDetected = true;
- }
- }
- void Assign<T>(out T field, object method) => field = (T)method;
- }
- public class Utility
- {
- static Dictionary<string, int> PCUTable = new Dictionary<string, int>();
- static int mobl = "MyObjectBuilder_".Length;
- public static string getName(IMyTerminalBlock block)
- {
- return block.DefinitionDisplayNameText;
- }
- public static string getDefName(IMyTerminalBlock block)
- {
- string n = block.BlockDefinition.TypeIdString.Substring(mobl) + "/" + block.BlockDefinition.SubtypeId;
- return n;
- }
- public static int getPCU(string defname)
- {
- if (PCUTable.ContainsKey(defname)) return PCUTable[defname];
- return 0;
- //DisplayNames[n] = t.DefinitionDisplayNameText;
- }
- public static void setup()
- {
- if (PCUTable.Count > 0) return;
- PCUTable["MyProgrammableBlock/SmallProgrammableBlock"]=100;
- PCUTable["MyObjectBuilder_Projector/LargeProjector"]=50;
- PCUTable["MyObjectBuilder_Projector/SmallProjector"]=50;
- PCUTable["SensorBlock/SmallBlockSensor"]=25;
- PCUTable["SensorBlock/LargeBlockSensor"]=25;
- PCUTable["TargetDummyBlock/TargetDummy"]=25;
- PCUTable["SoundBlock/SmallBlockSoundBlock"]=25;
- PCUTable["SoundBlock/LargeBlockSoundBlock"]=25;
- PCUTable["ButtonPanel/ButtonPanelLarge"]=5;
- PCUTable["ButtonPanel/ButtonPanelSmall"]=5;
- PCUTable["ButtonPanel/LargeButtonPanelPedestal"]=5;
- PCUTable["ButtonPanel/SmallButtonPanelPedestal"]=5;
- PCUTable["TimerBlock/TimerBlockLarge"]=25;
- PCUTable["TimerBlock/TimerBlockSmall"]=25;
- PCUTable["MyProgrammableBlock/LargeProgrammableBlock"]=100;
- PCUTable["TurretControlBlock/LargeTurretControlBlock"]=100;
- PCUTable["TurretControlBlock/SmallTurretControlBlock"]=100;
- PCUTable["EventControllerBlock/EventControllerLarge"]=10;
- PCUTable["EventControllerBlock/EventControllerSmall"]=10;
- PCUTable["PathRecorderBlock/LargePathRecorderBlock"]=25;
- PCUTable["PathRecorderBlock/SmallPathRecorderBlock"]=25;
- PCUTable["BasicMissionBlock/LargeBasicMission"]=15;
- PCUTable["BasicMissionBlock/SmallBasicMission"]=15;
- PCUTable["FlightMovementBlock/LargeFlightMovement"]=25;
- PCUTable["FlightMovementBlock/SmallFlightMovement"]=25;
- PCUTable["DefensiveCombatBlock/LargeDefensiveCombat"]=25;
- PCUTable["DefensiveCombatBlock/SmallDefensiveCombat"]=25;
- PCUTable["OffensiveCombatBlock/LargeOffensiveCombat"]=25;
- PCUTable["OffensiveCombatBlock/SmallOffensiveCombat"]=25;
- PCUTable["RadioAntenna/LargeBlockRadioAntenna"]=100;
- PCUTable["Beacon/LargeBlockBeacon"]=50;
- PCUTable["Beacon/SmallBlockBeacon"]=50;
- PCUTable["RadioAntenna/SmallBlockRadioAntenna"]=100;
- PCUTable["RemoteControl/LargeBlockRemoteControl"]=25;
- PCUTable["RemoteControl/SmallBlockRemoteControl"]=25;
- PCUTable["LaserAntenna/LargeBlockLaserAntenna"]=100;
- PCUTable["LaserAntenna/SmallBlockLaserAntenna"]=100;
- PCUTable["TerminalBlock/ControlPanel"]=5;
- PCUTable["TerminalBlock/SmallControlPanel"]=5;
- PCUTable["TerminalBlock/LargeControlPanelPedestal"]=5;
- PCUTable["TerminalBlock/SmallControlPanelPedestal"]=5;
- PCUTable["Cockpit/LargeBlockCockpit"]=50;
- PCUTable["Cockpit/LargeBlockCockpitSeat"]=150;
- PCUTable["Cockpit/SmallBlockCockpit"]=150;
- PCUTable["Cockpit/DBSmallBlockFighterCockpit"]=150;
- PCUTable["Cockpit/CockpitOpen"]=50;
- PCUTable["Cockpit/RoverCockpit"]=100;
- PCUTable["Gyro/LargeBlockGyro"]=50;
- PCUTable["Gyro/SmallBlockGyro"]=50;
- PCUTable["Cockpit/OpenCockpitSmall"]=50;
- PCUTable["Cockpit/OpenCockpitLarge"]=150;
- PCUTable["Cockpit/LargeBlockDesk"]=15;
- PCUTable["Cockpit/LargeBlockDeskCorner"]=15;
- PCUTable["Cockpit/LargeBlockDeskCornerInv"]=15;
- PCUTable["CryoChamber/LargeBlockBed"]=15;
- PCUTable["CargoContainer/LargeBlockLockerRoom"]=10;
- PCUTable["CargoContainer/LargeBlockLockerRoomCorner"]=10;
- PCUTable["Cockpit/LargeBlockCouch"]=15;
- PCUTable["Cockpit/LargeBlockCouchCorner"]=15;
- PCUTable["CargoContainer/LargeBlockLockers"]=10;
- PCUTable["Cockpit/LargeBlockBathroomOpen"]=15;
- PCUTable["Cockpit/LargeBlockBathroom"]=15;
- PCUTable["Cockpit/LargeBlockToilet"]=15;
- PCUTable["Projector/LargeBlockConsole"]=150;
- PCUTable["Cockpit/SmallBlockCockpitIndustrial"]=150;
- PCUTable["Cockpit/LargeBlockCockpitIndustrial"]=150;
- PCUTable["VendingMachine/FoodDispenser"]=10;
- PCUTable["Jukebox/Jukebox"]=25;
- PCUTable["TextPanel/TransparentLCDLarge"]=50;
- PCUTable["TextPanel/TransparentLCDSmall"]=50;
- PCUTable["ReflectorLight/RotatingLightLarge"]=25;
- PCUTable["ReflectorLight/RotatingLightSmall"]=25;
- PCUTable["CubeBlock/Freight1"]=10;
- PCUTable["CubeBlock/Freight2"]=10;
- PCUTable["CubeBlock/Freight3"]=10;
- PCUTable["SolarPanel/LargeBlockColorableSolarPanel"]=55;
- PCUTable["SolarPanel/LargeBlockColorableSolarPanelCorner"]=55;
- PCUTable["SolarPanel/LargeBlockColorableSolarPanelCornerInverted"]=55;
- PCUTable["SolarPanel/SmallBlockColorableSolarPanel"]=55;
- PCUTable["SolarPanel/SmallBlockColorableSolarPanelCorner"]=55;
- PCUTable["SolarPanel/SmallBlockColorableSolarPanelCornerInverted"]=55;
- PCUTable["WindTurbine/LargeBlockWindTurbineReskin"]=55;
- PCUTable["Beacon/LargeBlockBeaconReskin"]=50;
- PCUTable["Beacon/SmallBlockBeaconReskin"]=50;
- PCUTable["CryoChamber/LargeBlockCryoRoom"]=15;
- PCUTable["Cockpit/SmallBlockCapCockpit"]=150;
- PCUTable["TextPanel/HoloLCDLarge"]=50;
- PCUTable["TextPanel/HoloLCDSmall"]=50;
- PCUTable["MedicalRoom/LargeMedicalRoomReskin"]=30;
- PCUTable["InteriorLight/LargeBlockInsetAquarium"]=25;
- PCUTable["CryoChamber/LargeBlockHalfBed"]=15;
- PCUTable["CryoChamber/LargeBlockHalfBedOffset"]=15;
- PCUTable["TextPanel/LargeFullBlockLCDPanel"]=50;
- PCUTable["TextPanel/SmallFullBlockLCDPanel"]=50;
- PCUTable["TextPanel/LargeDiagonalLCDPanel"]=50;
- PCUTable["TextPanel/SmallDiagonalLCDPanel"]=50;
- PCUTable["TextPanel/LargeCurvedLCDPanel"]=50;
- PCUTable["TextPanel/SmallCurvedLCDPanel"]=50;
- PCUTable["TerminalBlock/LargeCrate"]=10;
- PCUTable["CubeBlock/LargeBarrel"]=10;
- PCUTable["CubeBlock/SmallBarrel"]=10;
- PCUTable["CubeBlock/LargeBarrelThree"]=10;
- PCUTable["CubeBlock/LargeBarrelStack"]=10;
- PCUTable["Warhead/LargeExplosiveBarrel"]=100;
- PCUTable["Warhead/SmallExplosiveBarrel"]=100;
- PCUTable["Cockpit/LargeBlockInsetPlantCouch"]=15;
- PCUTable["CryoChamber/LargeBlockInsetBed"]=15;
- PCUTable["ButtonPanel/LargeBlockInsetButtonPanel"]=75;
- PCUTable["Jukebox/LargeBlockInsetEntertainmentCorner"]=25;
- PCUTable["CargoContainer/LargeBlockInsetBookshelf"]=10;
- PCUTable["InteriorLight/LargeBlockInsetKitchen"]=25;
- PCUTable["Door/"]=115;
- PCUTable["Door/SmallDoor"]=115;
- PCUTable["AirtightHangarDoor/"]=115;
- PCUTable["AirtightSlideDoor/LargeBlockSlideDoor"]=115;
- PCUTable["StoreBlock/StoreBlock"]=10;
- PCUTable["SafeZoneBlock/SafeZoneBlock"]=50;
- PCUTable["ContractBlock/ContractBlock"]=10;
- PCUTable["VendingMachine/VendingMachine"]=10;
- PCUTable["StoreBlock/AtmBlock"]=10;
- PCUTable["BatteryBlock/LargeBlockBatteryBlock"]=15;
- PCUTable["BatteryBlock/SmallBlockBatteryBlock"]=15;
- PCUTable["BatteryBlock/SmallBlockSmallBatteryBlock"]=15;
- PCUTable["Reactor/SmallBlockSmallGenerator"]=300;
- PCUTable["Reactor/SmallBlockLargeGenerator"]=300;
- PCUTable["Reactor/LargeBlockSmallGenerator"]=300;
- PCUTable["Reactor/LargeBlockLargeGenerator"]=300;
- PCUTable["HydrogenEngine/LargeHydrogenEngine"]=25;
- PCUTable["HydrogenEngine/SmallHydrogenEngine"]=25;
- PCUTable["WindTurbine/LargeBlockWindTurbine"]=55;
- PCUTable["SolarPanel/LargeBlockSolarPanel"]=55;
- PCUTable["SolarPanel/SmallBlockSolarPanel"]=55;
- PCUTable["RadioAntenna/LargeBlockRadioAntennaDish"]=100;
- PCUTable["Door/LargeBlockGate"]=115;
- PCUTable["Door/LargeBlockOffsetDoor"]=115;
- PCUTable["CubeBlock/DeadBody01"]=10;
- PCUTable["CubeBlock/DeadBody02"]=10;
- PCUTable["CubeBlock/DeadBody03"]=10;
- PCUTable["CubeBlock/DeadBody04"]=10;
- PCUTable["CubeBlock/DeadBody05"]=10;
- PCUTable["CubeBlock/DeadBody06"]=10;
- PCUTable["GravityGenerator/"]=185;
- PCUTable["GravityGeneratorSphere/"]=200;
- PCUTable["VirtualMass/VirtualMassLarge"]=250;
- PCUTable["VirtualMass/VirtualMassSmall"]=250;
- PCUTable["SpaceBall/SpaceBallLarge"]=25;
- PCUTable["SpaceBall/SpaceBallSmall"]=25;
- PCUTable["InteriorLight/LargeBlockInsetLight"]=25;
- PCUTable["InteriorLight/SmallBlockInsetLight"]=25;
- PCUTable["TerminalBlock/LargeBlockAccessPanel1"]=5;
- PCUTable["TerminalBlock/LargeBlockAccessPanel2"]=5;
- PCUTable["ButtonPanel/LargeBlockAccessPanel3"]=5;
- PCUTable["TerminalBlock/LargeBlockAccessPanel4"]=5;
- PCUTable["TerminalBlock/SmallBlockAccessPanel1"]=5;
- PCUTable["TerminalBlock/SmallBlockAccessPanel2"]=5;
- PCUTable["TerminalBlock/SmallBlockAccessPanel3"]=5;
- PCUTable["TerminalBlock/SmallBlockAccessPanel4"]=5;
- PCUTable["AirVent/AirVentFan"]=10;
- PCUTable["AirVent/AirVentFanFull"]=10;
- PCUTable["AirVent/SmallAirVentFan"]=10;
- PCUTable["AirVent/SmallAirVentFanFull"]=10;
- PCUTable["CameraBlock/LargeCameraTopMounted"]=25;
- PCUTable["CameraBlock/SmallCameraTopMounted"]=25;
- PCUTable["SensorBlock/SmallBlockSensorReskin"]=25;
- PCUTable["SensorBlock/LargeBlockSensorReskin"]=25;
- PCUTable["MyProgrammableBlock/LargeProgrammableBlockReskin"]=100;
- PCUTable["MyProgrammableBlock/SmallProgrammableBlockReskin"]=100;
- PCUTable["TimerBlock/TimerBlockReskinLarge"]=25;
- PCUTable["TimerBlock/TimerBlockReskinSmall"]=25;
- PCUTable["Cockpit/SpeederCockpit"]=50;
- PCUTable["Cockpit/SpeederCockpitCompact"]=50;
- PCUTable["EmotionControllerBlock/EmotionControllerLarge"]=50;
- PCUTable["EmotionControllerBlock/EmotionControllerSmall"]=50;
- PCUTable["LandingGear/LargeBlockMagneticPlate"]=35;
- PCUTable["LandingGear/SmallBlockMagneticPlate"]=35;
- PCUTable["CargoContainer/LargeBlockLargeIndustrialContainer"]=10;
- PCUTable["ButtonPanel/VerticalButtonPanelLarge"]=5;
- PCUTable["ButtonPanel/VerticalButtonPanelSmall"]=5;
- PCUTable["ConveyorConnector/LargeBlockConveyorPipeSeamless"]=10;
- PCUTable["ConveyorConnector/LargeBlockConveyorPipeCorner"]=10;
- PCUTable["Conveyor/LargeBlockConveyorPipeJunction"]=10;
- PCUTable["Conveyor/LargeBlockConveyorPipeIntersection"]=10;
- PCUTable["ConveyorConnector/LargeBlockConveyorPipeFlange"]=10;
- PCUTable["ConveyorConnector/LargeBlockConveyorPipeEnd"]=10;
- PCUTable["Conveyor/LargeBlockConveyorPipeT"]=10;
- PCUTable["OxygenTank/LargeHydrogenTankIndustrial"]=25;
- PCUTable["Assembler/LargeAssemblerIndustrial"]=400;
- PCUTable["Refinery/LargeRefineryIndustrial"]=900;
- PCUTable["ConveyorSorter/LargeBlockConveyorSorterIndustrial"]=25;
- PCUTable["Thrust/LargeBlockLargeHydrogenThrustIndustrial"]=150;
- PCUTable["Thrust/LargeBlockSmallHydrogenThrustIndustrial"]=150;
- PCUTable["Thrust/SmallBlockLargeHydrogenThrustIndustrial"]=150;
- PCUTable["Thrust/SmallBlockSmallHydrogenThrustIndustrial"]=150;
- PCUTable["Cockpit/PassengerSeatLarge"]=15;
- PCUTable["Cockpit/PassengerSeatSmall"]=15;
- PCUTable["Cockpit/PassengerSeatSmallNew"]=15;
- PCUTable["Cockpit/PassengerSeatSmallOffset"]=15;
- PCUTable["InteriorLight/AirDuctLight"]=25;
- PCUTable["TextPanel/SmallTextPanel"]=50;
- PCUTable["TextPanel/SmallLCDPanelWide"]=50;
- PCUTable["TextPanel/SmallLCDPanel"]=50;
- PCUTable["TextPanel/LargeBlockCorner_LCD_1"]=50;
- PCUTable["TextPanel/LargeBlockCorner_LCD_2"]=50;
- PCUTable["TextPanel/LargeBlockCorner_LCD_Flat_1"]=50;
- PCUTable["TextPanel/LargeBlockCorner_LCD_Flat_2"]=50;
- PCUTable["TextPanel/SmallBlockCorner_LCD_1"]=50;
- PCUTable["TextPanel/SmallBlockCorner_LCD_2"]=50;
- PCUTable["TextPanel/SmallBlockCorner_LCD_Flat_1"]=50;
- PCUTable["TextPanel/SmallBlockCorner_LCD_Flat_2"]=50;
- PCUTable["TextPanel/LargeTextPanel"]=50;
- PCUTable["TextPanel/LargeLCDPanel"]=50;
- PCUTable["TextPanel/LargeLCDPanelWide"]=50;
- PCUTable["ReflectorLight/LargeBlockFrontLight"]=25;
- PCUTable["ReflectorLight/SmallBlockFrontLight"]=25;
- PCUTable["InteriorLight/SmallLight"]=25;
- PCUTable["InteriorLight/SmallBlockSmallLight"]=25;
- PCUTable["InteriorLight/LargeBlockLight_1corner"]=25;
- PCUTable["InteriorLight/LargeBlockLight_2corner"]=25;
- PCUTable["InteriorLight/SmallBlockLight_1corner"]=25;
- PCUTable["InteriorLight/SmallBlockLight_2corner"]=25;
- PCUTable["OxygenTank/OxygenTankSmall"]=25;
- PCUTable["OxygenTank/"]=25;
- PCUTable["OxygenTank/LargeHydrogenTank"]=25;
- PCUTable["OxygenTank/LargeHydrogenTankSmall"]=25;
- PCUTable["OxygenTank/SmallHydrogenTank"]=25;
- PCUTable["OxygenTank/SmallHydrogenTankSmall"]=25;
- PCUTable["AirVent/"]=10;
- PCUTable["AirVent/AirVentFull"]=10;
- PCUTable["AirVent/SmallAirVent"]=10;
- PCUTable["AirVent/SmallAirVentFull"]=10;
- PCUTable["CargoContainer/SmallBlockSmallContainer"]=10;
- PCUTable["CargoContainer/SmallBlockMediumContainer"]=10;
- PCUTable["CargoContainer/SmallBlockLargeContainer"]=10;
- PCUTable["CargoContainer/LargeBlockSmallContainer"]=10;
- PCUTable["CargoContainer/LargeBlockLargeContainer"]=10;
- PCUTable["Conveyor/SmallBlockConveyor"]=10;
- PCUTable["Conveyor/SmallBlockConveyorConverter"]=10;
- PCUTable["Conveyor/LargeBlockConveyor"]=30;
- PCUTable["Collector/Collector"]=25;
- PCUTable["Collector/CollectorSmall"]=25;
- PCUTable["ShipConnector/Connector"]=125;
- PCUTable["ShipConnector/ConnectorSmall"]=125;
- PCUTable["ShipConnector/ConnectorMedium"]=125;
- PCUTable["ConveyorConnector/ConveyorTube"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeDuct"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeDuctCurved"]=10;
- PCUTable["Conveyor/ConveyorTubeDuctT"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeSmall"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeDuctSmall"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeDuctSmallCurved"]=10;
- PCUTable["Conveyor/ConveyorTubeDuctSmallT"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeMedium"]=10;
- PCUTable["ConveyorConnector/ConveyorFrameMedium"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeCurved"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeSmallCurved"]=10;
- PCUTable["ConveyorConnector/ConveyorTubeCurvedMedium"]=10;
- PCUTable["Conveyor/SmallShipConveyorHub"]=25;
- PCUTable["Conveyor/ConveyorTubeSmallT"]=10;
- PCUTable["Conveyor/ConveyorTubeT"]=10;
- PCUTable["ConveyorSorter/LargeBlockConveyorSorter"]=25;
- PCUTable["ConveyorSorter/MediumBlockConveyorSorter"]=25;
- PCUTable["ConveyorSorter/SmallBlockConveyorSorter"]=25;
- PCUTable["PistonBase/LargePistonBase"]=100;
- PCUTable["ExtendedPistonBase/LargePistonBase"]=100;
- PCUTable["PistonBase/SmallPistonBase"]=100;
- PCUTable["ExtendedPistonBase/SmallPistonBase"]=100;
- PCUTable["MotorStator/LargeStator"]=100;
- PCUTable["MotorStator/SmallStator"]=100;
- PCUTable["MotorAdvancedStator/LargeAdvancedStator"]=100;
- PCUTable["MotorAdvancedStator/SmallAdvancedStator"]=100;
- PCUTable["MotorAdvancedStator/SmallAdvancedStatorSmall"]=100;
- PCUTable["MotorAdvancedStator/LargeHinge"]=100;
- PCUTable["MotorAdvancedStator/MediumHinge"]=100;
- PCUTable["MotorAdvancedStator/SmallHinge"]=100;
- PCUTable["MedicalRoom/LargeMedicalRoom"]=30;
- PCUTable["CryoChamber/LargeBlockCryoChamber"]=15;
- PCUTable["CryoChamber/SmallBlockCryoChamber"]=15;
- PCUTable["Refinery/LargeRefinery"]=900;
- PCUTable["Refinery/Blast Furnace"]=750;
- PCUTable["OxygenGenerator/"]=500;
- PCUTable["OxygenGenerator/OxygenGeneratorSmall"]=500;
- PCUTable["Assembler/LargeAssembler"]=400;
- PCUTable["Assembler/BasicAssembler"]=40;
- PCUTable["SurvivalKit/SurvivalKitLarge"]=140;
- PCUTable["SurvivalKit/SurvivalKit"]=140;
- PCUTable["OxygenFarm/LargeBlockOxygenFarm"]=25;
- PCUTable["ExhaustBlock/SmallExhaustPipe"]=50;
- PCUTable["ExhaustBlock/LargeExhaustPipe"]=50;
- PCUTable["Cockpit/BuggyCockpit"]=100;
- PCUTable["MotorSuspension/OffroadSuspension3x3"]=50;
- PCUTable["MotorSuspension/OffroadSuspension5x5"]=50;
- PCUTable["MotorSuspension/OffroadSuspension1x1"]=50;
- PCUTable["MotorSuspension/OffroadSuspension2x2"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension3x3"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension5x5"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension1x1"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension2x2"]=50;
- PCUTable["MotorSuspension/OffroadSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSuspension2x2Mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallSuspension2x2Mirrored"]=50;
- PCUTable["Wheel/OffroadSmallRealWheel1x1"]=25;
- PCUTable["Wheel/OffroadSmallRealWheel2x2"]=25;
- PCUTable["Wheel/OffroadSmallRealWheel"]=25;
- PCUTable["Wheel/OffroadSmallRealWheel5x5"]=25;
- PCUTable["Wheel/OffroadRealWheel1x1"]=25;
- PCUTable["Wheel/OffroadRealWheel2x2"]=25;
- PCUTable["Wheel/OffroadRealWheel"]=25;
- PCUTable["Wheel/OffroadRealWheel5x5"]=25;
- PCUTable["Wheel/OffroadSmallRealWheel1x1mirrored"]=25;
- PCUTable["Wheel/OffroadSmallRealWheel2x2Mirrored"]=25;
- PCUTable["Wheel/OffroadSmallRealWheelmirrored"]=25;
- PCUTable["Wheel/OffroadSmallRealWheel5x5mirrored"]=25;
- PCUTable["Wheel/OffroadRealWheel1x1mirrored"]=25;
- PCUTable["Wheel/OffroadRealWheel2x2Mirrored"]=25;
- PCUTable["Wheel/OffroadRealWheelmirrored"]=25;
- PCUTable["Wheel/OffroadRealWheel5x5mirrored"]=25;
- PCUTable["Wheel/OffroadWheel1x1"]=25;
- PCUTable["Wheel/OffroadSmallWheel1x1"]=25;
- PCUTable["Wheel/OffroadWheel3x3"]=25;
- PCUTable["Wheel/OffroadSmallWheel3x3"]=25;
- PCUTable["Wheel/OffroadWheel5x5"]=25;
- PCUTable["Wheel/OffroadSmallWheel5x5"]=25;
- PCUTable["Wheel/OffroadWheel2x2"]=25;
- PCUTable["Wheel/OffroadSmallWheel2x2"]=25;
- PCUTable["MotorSuspension/OffroadShortSuspension3x3"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension5x5"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension1x1"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension2x2"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension3x3"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension5x5"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension1x1"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension2x2"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/OffroadShortSuspension2x2Mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/OffroadSmallShortSuspension2x2Mirrored"]=50;
- PCUTable["InteriorLight/OffsetLight"]=25;
- PCUTable["ReflectorLight/OffsetSpotlight"]=25;
- PCUTable["TextPanel/LargeLCDPanel5x5"]=50;
- PCUTable["TextPanel/LargeLCDPanel5x3"]=50;
- PCUTable["TextPanel/LargeLCDPanel3x3"]=50;
- PCUTable["TerminalBlock/LargeBlockSciFiTerminal"]=5;
- PCUTable["ButtonPanel/LargeSciFiButtonTerminal"]=50;
- PCUTable["Door/SmallSideDoor"]=115;
- PCUTable["ButtonPanel/LargeSciFiButtonPanel"]=100;
- PCUTable["Thrust/SmallBlockSmallThrustSciFi"]=15;
- PCUTable["Thrust/SmallBlockLargeThrustSciFi"]=15;
- PCUTable["Thrust/LargeBlockSmallThrustSciFi"]=15;
- PCUTable["Thrust/LargeBlockLargeThrustSciFi"]=15;
- PCUTable["Thrust/LargeBlockLargeAtmosphericThrustSciFi"]=15;
- PCUTable["Thrust/LargeBlockSmallAtmosphericThrustSciFi"]=15;
- PCUTable["Thrust/SmallBlockLargeAtmosphericThrustSciFi"]=250;
- PCUTable["Thrust/SmallBlockSmallAtmosphericThrustSciFi"]=250;
- PCUTable["Thrust/SmallBlockSmallThrust"]=15;
- PCUTable["Thrust/SmallBlockLargeThrust"]=15;
- PCUTable["Thrust/LargeBlockSmallThrust"]=15;
- PCUTable["Thrust/LargeBlockLargeThrust"]=15;
- PCUTable["Thrust/LargeBlockLargeHydrogenThrust"]=150;
- PCUTable["Thrust/LargeBlockSmallHydrogenThrust"]=150;
- PCUTable["Thrust/SmallBlockLargeHydrogenThrust"]=150;
- PCUTable["Thrust/SmallBlockSmallHydrogenThrust"]=150;
- PCUTable["Thrust/LargeBlockLargeAtmosphericThrust"]=15;
- PCUTable["Thrust/LargeBlockSmallAtmosphericThrust"]=15;
- PCUTable["Thrust/SmallBlockLargeAtmosphericThrust"]=250;
- PCUTable["Thrust/SmallBlockSmallAtmosphericThrust"]=250;
- PCUTable["Thrust/LargeBlockLargeFlatAtmosphericThrust"]=15;
- PCUTable["Thrust/LargeBlockLargeFlatAtmosphericThrustDShape"]=15;
- PCUTable["Thrust/LargeBlockSmallFlatAtmosphericThrust"]=15;
- PCUTable["Thrust/LargeBlockSmallFlatAtmosphericThrustDShape"]=15;
- PCUTable["Thrust/SmallBlockLargeFlatAtmosphericThrust"]=250;
- PCUTable["Thrust/SmallBlockLargeFlatAtmosphericThrustDShape"]=250;
- PCUTable["Thrust/SmallBlockSmallFlatAtmosphericThrust"]=250;
- PCUTable["Thrust/SmallBlockSmallFlatAtmosphericThrustDShape"]=250;
- PCUTable["Drill/SmallBlockDrill"]=190;
- PCUTable["Drill/LargeBlockDrill"]=190;
- PCUTable["ShipGrinder/LargeShipGrinder"]=100;
- PCUTable["ShipGrinder/SmallShipGrinder"]=100;
- PCUTable["ShipWelder/LargeShipWelder"]=150;
- PCUTable["ShipWelder/SmallShipWelder"]=150;
- PCUTable["OreDetector/LargeOreDetector"]=100;
- PCUTable["OreDetector/SmallBlockOreDetector"]=100;
- PCUTable["LandingGear/LargeBlockLandingGear"]=35;
- PCUTable["LandingGear/SmallBlockLandingGear"]=35;
- PCUTable["LandingGear/LargeBlockSmallMagneticPlate"]=35;
- PCUTable["LandingGear/SmallBlockSmallMagneticPlate"]=35;
- PCUTable["JumpDrive/LargeJumpDrive"]=100;
- PCUTable["CameraBlock/SmallCameraBlock"]=25;
- PCUTable["CameraBlock/LargeCameraBlock"]=25;
- PCUTable["MergeBlock/LargeShipMergeBlock"]=125;
- PCUTable["MergeBlock/SmallShipMergeBlock"]=125;
- PCUTable["MergeBlock/SmallShipSmallMergeBlock"]=125;
- PCUTable["Parachute/LgParachute"]=50;
- PCUTable["Parachute/SmParachute"]=50;
- PCUTable["CargoContainer/LargeBlockWeaponRack"]=10;
- PCUTable["CargoContainer/SmallBlockWeaponRack"]=10;
- PCUTable["InteriorLight/PassageSciFiLight"]=25;
- PCUTable["Cockpit/PassengerBench"]=15;
- PCUTable["InteriorLight/LargeLightPanel"]=25;
- PCUTable["InteriorLight/SmallLightPanel"]=25;
- PCUTable["Reactor/LargeBlockSmallGeneratorWarfare2"]=300;
- PCUTable["Reactor/LargeBlockLargeGeneratorWarfare2"]=300;
- PCUTable["Reactor/SmallBlockSmallGeneratorWarfare2"]=300;
- PCUTable["Reactor/SmallBlockLargeGeneratorWarfare2"]=300;
- PCUTable["AirtightHangarDoor/AirtightHangarDoorWarfare2A"]=115;
- PCUTable["AirtightHangarDoor/AirtightHangarDoorWarfare2B"]=115;
- PCUTable["AirtightHangarDoor/AirtightHangarDoorWarfare2C"]=115;
- PCUTable["SmallMissileLauncher/SmallMissileLauncherWarfare2"]=425;
- PCUTable["SmallGatlingGun/SmallGatlingGunWarfare2"]=80;
- PCUTable["BatteryBlock/LargeBlockBatteryBlockWarfare2"]=15;
- PCUTable["BatteryBlock/SmallBlockBatteryBlockWarfare2"]=15;
- PCUTable["Door/SlidingHatchDoor"]=115;
- PCUTable["Door/SlidingHatchDoorHalf"]=115;
- PCUTable["Searchlight/SmallSearchlight"]=50;
- PCUTable["Searchlight/LargeSearchlight"]=50;
- PCUTable["HeatVentBlock/LargeHeatVentBlock"]=50;
- PCUTable["HeatVentBlock/SmallHeatVentBlock"]=50;
- PCUTable["Cockpit/SmallBlockStandingCockpit"]=50;
- PCUTable["Cockpit/LargeBlockStandingCockpit"]=50;
- PCUTable["Thrust/SmallBlockSmallModularThruster"]=15;
- PCUTable["Thrust/SmallBlockLargeModularThruster"]=15;
- PCUTable["Thrust/LargeBlockSmallModularThruster"]=15;
- PCUTable["Thrust/LargeBlockLargeModularThruster"]=15;
- PCUTable["Warhead/LargeWarhead"]=100;
- PCUTable["Warhead/SmallWarhead"]=50;
- PCUTable["Decoy/LargeDecoy"]=50;
- PCUTable["Decoy/SmallDecoy"]=50;
- PCUTable["LargeGatlingTurret/"]=225;
- PCUTable["LargeGatlingTurret/SmallGatlingTurret"]=225;
- PCUTable["LargeMissileTurret/"]=275;
- PCUTable["LargeMissileTurret/SmallMissileTurret"]=100;
- PCUTable["InteriorTurret/LargeInteriorTurret"]=125;
- PCUTable["SmallMissileLauncher/"]=425;
- PCUTable["SmallMissileLauncher/LargeMissileLauncher"]=825;
- PCUTable["SmallMissileLauncherReload/SmallRocketLauncherReload"]=425;
- PCUTable["SmallGatlingGun/"]=80;
- PCUTable["SmallGatlingGun/SmallBlockAutocannon"]=80;
- PCUTable["SmallMissileLauncherReload/SmallBlockMediumCalibreGun"]=80;
- PCUTable["SmallMissileLauncher/LargeBlockLargeCalibreGun"]=80;
- PCUTable["SmallMissileLauncherReload/LargeRailgun"]=80;
- PCUTable["SmallMissileLauncherReload/SmallRailgun"]=80;
- PCUTable["LargeMissileTurret/LargeCalibreTurret"]=275;
- PCUTable["LargeMissileTurret/LargeBlockMediumCalibreTurret"]=275;
- PCUTable["LargeMissileTurret/SmallBlockMediumCalibreTurret"]=275;
- PCUTable["LargeGatlingTurret/AutoCannonTurret"]=225;
- PCUTable["SmallMissileLauncher/LargeFlareLauncher"]=150;
- PCUTable["SmallMissileLauncher/SmallFlareLauncher"]=150;
- PCUTable["MotorSuspension/Suspension3x3"]=50;
- PCUTable["MotorSuspension/Suspension5x5"]=50;
- PCUTable["MotorSuspension/Suspension1x1"]=50;
- PCUTable["MotorSuspension/Suspension2x2"]=50;
- PCUTable["MotorSuspension/SmallSuspension3x3"]=50;
- PCUTable["MotorSuspension/SmallSuspension5x5"]=50;
- PCUTable["MotorSuspension/SmallSuspension1x1"]=50;
- PCUTable["MotorSuspension/SmallSuspension2x2"]=50;
- PCUTable["MotorSuspension/Suspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/Suspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/Suspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/Suspension2x2Mirrored"]=50;
- PCUTable["MotorSuspension/SmallSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/SmallSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/SmallSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/SmallSuspension2x2Mirrored"]=50;
- PCUTable["Wheel/SmallRealWheel1x1"]=25;
- PCUTable["Wheel/SmallRealWheel2x2"]=25;
- PCUTable["Wheel/SmallRealWheel"]=25;
- PCUTable["Wheel/SmallRealWheel5x5"]=25;
- PCUTable["Wheel/RealWheel1x1"]=25;
- PCUTable["Wheel/RealWheel2x2"]=25;
- PCUTable["Wheel/RealWheel"]=25;
- PCUTable["Wheel/RealWheel5x5"]=25;
- PCUTable["Wheel/SmallRealWheel1x1mirrored"]=25;
- PCUTable["Wheel/SmallRealWheel2x2Mirrored"]=25;
- PCUTable["Wheel/SmallRealWheelmirrored"]=25;
- PCUTable["Wheel/SmallRealWheel5x5mirrored"]=25;
- PCUTable["Wheel/RealWheel1x1mirrored"]=25;
- PCUTable["Wheel/RealWheel2x2Mirrored"]=25;
- PCUTable["Wheel/RealWheelmirrored"]=25;
- PCUTable["Wheel/RealWheel5x5mirrored"]=25;
- PCUTable["Wheel/Wheel1x1"]=25;
- PCUTable["Wheel/SmallWheel1x1"]=25;
- PCUTable["Wheel/Wheel3x3"]=25;
- PCUTable["Wheel/SmallWheel3x3"]=25;
- PCUTable["Wheel/Wheel5x5"]=25;
- PCUTable["Wheel/SmallWheel5x5"]=25;
- PCUTable["Wheel/Wheel2x2"]=25;
- PCUTable["Wheel/SmallWheel2x2"]=25;
- PCUTable["MotorSuspension/ShortSuspension3x3"]=50;
- PCUTable["MotorSuspension/ShortSuspension5x5"]=50;
- PCUTable["MotorSuspension/ShortSuspension1x1"]=50;
- PCUTable["MotorSuspension/ShortSuspension2x2"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension3x3"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension5x5"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension1x1"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension2x2"]=50;
- PCUTable["MotorSuspension/ShortSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/ShortSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/ShortSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/ShortSuspension2x2Mirrored"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension3x3mirrored"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension5x5mirrored"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension1x1mirrored"]=50;
- PCUTable["MotorSuspension/SmallShortSuspension2x2Mirrored"]=50;
- PCUTable["Beacon/DisposableNpcBeaconLarge"]=50;
- PCUTable["Beacon/DisposableNpcBeaconSmall"]=50;
- PCUTable["Projector/MES-Blocks-ShipyardTerminal"]=150;
- PCUTable["ButtonPanel/MES-Blocks-SuitUpgradeStation"]=5;
- PCUTable["ButtonPanel/MES-Blocks-ResearchTerminal"]=50;
- PCUTable["Conveyor/ProprietaryLargeBlockConveyor"]=10;
- PCUTable["ConveyorConnector/ProprietaryConveyorTube"]=10;
- PCUTable["ConveyorConnector/ProprietaryConveyorTubeCurved"]=10;
- PCUTable["ConveyorSorter/ProprietaryLargeBlockConveyorSorter"]=25;
- PCUTable["Gyro/ProprietaryLargeBlockGyro"]=50;
- PCUTable["Thrust/MES-NPC-Thrust-Atmo-LargeGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Atmo-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Atmo-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Atmo-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Hydro-LargeGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Hydro-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Hydro-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Hydro-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IndustryHydro-LargeGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IndustryHydro-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IndustryHydro-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IndustryHydro-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Ion-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Ion-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Ion-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-Ion-LargeGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IonSciFi-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IonSciFi-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IonSciFi-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-IonSciFi-LargeGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-AtmoSciFi-LargeGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-AtmoSciFi-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-AtmoSciFi-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-AtmoSciFi-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-WarfareIon-SmallGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-WarfareIon-SmallGrid-Large"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-WarfareIon-LargeGrid-Small"]=15;
- PCUTable["Thrust/MES-NPC-Thrust-WarfareIon-LargeGrid-Large"]=15;
- PCUTable["RemoteControl/RivalAIRemoteControlLarge"]=25;
- PCUTable["RemoteControl/RivalAIRemoteControlSmall"]=25;
- PCUTable["RadioAntenna/MES-Suppressor-Energy-Small"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Energy-Large"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Player-Small"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Player-Large"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Nanobots-Small"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Nanobots-Large"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-JumpDrive-Small"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-JumpDrive-Large"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Jetpack-Small"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Jetpack-Large"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Drill-Small"]=250;
- PCUTable["RadioAntenna/MES-Suppressor-Drill-Large"]=250;
- PCUTable["Reactor/ProprietarySmallBlockSmallGenerator"]=25;
- PCUTable["Reactor/ProprietarySmallBlockLargeGenerator"]=25;
- PCUTable["Reactor/ProprietaryLargeBlockSmallGenerator"]=25;
- PCUTable["Reactor/ProprietaryLargeBlockLargeGenerator"]=25;
- PCUTable["GravityGenerator/ProprietaryGravGen"]=185;
- PCUTable["GravityGeneratorSphere/ProprietaryGravGenSphere"]=200;
- PCUTable["VirtualMass/ProprietaryVirtualMassLarge"]=25;
- PCUTable["VirtualMass/ProprietaryVirtualMassSmall"]=25;
- PCUTable["SpaceBall/ProprietarySpaceBallLarge"]=25;
- PCUTable["SpaceBall/ProprietarySpaceBallSmall"]=25;
- PCUTable["Thrust/ProprietarySmallBlockSmallThrust"]=15;
- PCUTable["Thrust/ProprietarySmallBlockLargeThrust"]=15;
- PCUTable["Thrust/ProprietaryLargeBlockSmallThrust"]=15;
- PCUTable["Thrust/ProprietaryLargeBlockLargeThrust"]=15;
- PCUTable["LaserAntenna/ProprietaryLargeBlockLaserAntenna"]=100;
- PCUTable["LaserAntenna/ProprietarySmallBlockLaserAntenna"]=100;
- PCUTable["JumpDrive/ProprietaryLargeJumpDrive"]=100;
- PCUTable["TurretControlBlock/MES-NpcLargeTurretControlBlock"]=100;
- PCUTable["TurretControlBlock/MES-NpcSmallTurretControlBlock"]=100;
- PCUTable["Conveyor/Maintenance_Door_Large"]=20;
- PCUTable["Conveyor/Maintenance_Shaft_Large"]=20;
- PCUTable["Conveyor/Maintenance_Junction_Large"]=20;
- PCUTable["AdvancedDoor/Maintenance_Door_Hatch_Large"]=115;
- PCUTable["MyProgrammableBlock/LCD_Wall"]=100;
- PCUTable["MyProgrammableBlock/LCD_Wall_offset"]=100;
- PCUTable["TextPanel/digital_linear_computer_Small"]=50;
- PCUTable["TextPanel/digital_linear_computer_Large"]=50;
- PCUTable["MyProgrammableBlock/digital_linear_medium"]=100;
- PCUTable["MyProgrammableBlock/digital_linear_large"]=100;
- PCUTable["Cockpit/EngineerConsole"]=50;
- PCUTable["Cockpit/NavigationConsole"]=50;
- PCUTable["Cockpit/captains_chair_Large"]=50;
- PCUTable["Cockpit/generic_pilotseat"]=50;
- PCUTable["Cockpit/generic_corner"]=50;
- PCUTable["ButtonPanel/corner_panel_Large"]=5;
- PCUTable["Projector/holoprojector"]=150;
- PCUTable["Cockpit/SB_bridge_seat"]=15;
- PCUTable["MyProgrammableBlock/digital_linear_mediumSmall"]=100;
- PCUTable["MyProgrammableBlock/digital_linear_largeSmall"]=100;
- PCUTable["Cockpit/EngineerConsoleSmall"]=50;
- PCUTable["Cockpit/NavigationConsoleSmall"]=50;
- PCUTable["Cockpit/captains_chair_LargeSmall"]=50;
- PCUTable["Cockpit/generic_pilotseatSmall"]=50;
- PCUTable["Cockpit/generic_cornerSmall"]=50;
- PCUTable["ButtonPanel/corner_panel_LargeSmall"]=5;
- PCUTable["Projector/holoprojectorSmall"]=150;
- PCUTable["CryoChamber/EngineerConsole_cryo"]=50;
- PCUTable["CryoChamber/NavigationConsole_cryo"]=50;
- PCUTable["CryoChamber/captains_chair_Large_cryo"]=50;
- PCUTable["CryoChamber/generic_pilotseat_cryo"]=50;
- PCUTable["CryoChamber/generic_pilotseat_cyro"]=50;
- PCUTable["CryoChamber/generic_corner_cryo"]=50;
- PCUTable["ConveyorConnector/AQD_LG_ConveyorCornerArmored"]=10;
- PCUTable["Conveyor/AQD_LG_ConveyorJunctionTubes"]=30;
- PCUTable["ConveyorConnector/AQD_LG_ConveyorStraight5x1"]=10;
- PCUTable["ConveyorConnector/AQD_LG_ConveyorStraightArmored"]=10;
- PCUTable["Conveyor/AQD_LG_ConveyorX"]=20;
- PCUTable["Conveyor/AQD_LG_ConveyorXArmored"]=20;
- PCUTable["Conveyor/AQD_LG_ConveyorT"]=15;
- PCUTable["Conveyor/AQD_LG_ConveyorTArmored"]=15;
- PCUTable["ReflectorLight/MA_Spotlight30"]=25;
- PCUTable["ReflectorLight/MA_Spotlight30_sm"]=25;
- PCUTable["ReflectorLight/MA_Spotlight45"]=25;
- PCUTable["ReflectorLight/MA_Spotlight45_sm"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_sm"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot45"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot45_sm"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_LB"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_LB_sm"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_LB2"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_LB2_sm"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpotBar"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpotBar_sm"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_mtg"]=25;
- PCUTable["ReflectorLight/MA_ClassicSpot_mtg_sm"]=25;
- PCUTable["ReflectorLight/MA_Lightbox30"]=25;
- PCUTable["ReflectorLight/MA_Lightbox30_sm"]=25;
- PCUTable["LargeMissileTurret/AutoCannonTurret"]=225;
- PCUTable["ConveyorSorter/LargeRailgun"]=80;
- PCUTable["ConveyorSorter/SmallRailgun"]=80;
- PCUTable["CubeBlock/AQD_LG_LA_Slope3x1"]=3;
- PCUTable["CubeBlock/AQD_SG_LA_Slope3x1"]=3;
- PCUTable["CubeBlock/AQD_LG_HA_Slope3x1"]=3;
- PCUTable["CubeBlock/AQD_SG_HA_Slope3x1"]=3;
- PCUTable["CubeBlock/AQD_LG_LA_Slope3x1_Corner"]=3;
- PCUTable["CubeBlock/AQD_SG_LA_Slope3x1_Corner"]=3;
- PCUTable["CubeBlock/AQD_LG_HA_Slope3x1_Corner"]=3;
- PCUTable["CubeBlock/AQD_SG_HA_Slope3x1_Corner"]=3;
- PCUTable["CubeBlock/AQD_LG_LA_Slope3x1_InvCorner"]=3;
- PCUTable["CubeBlock/AQD_SG_LA_Slope3x1_InvCorner"]=3;
- PCUTable["CubeBlock/AQD_LG_HA_Slope3x1_InvCorner"]=3;
- PCUTable["CubeBlock/AQD_SG_HA_Slope3x1_InvCorner"]=3;
- PCUTable["CubeBlock/AQD_LG_LA_Slope3x1_Transition"]=3;
- PCUTable["CubeBlock/AQD_LG_LA_Slope3x1_TransitionMirror"]=3;
- PCUTable["CubeBlock/AQD_SG_LA_Slope3x1_Transition"]=3;
- PCUTable["CubeBlock/AQD_SG_LA_Slope3x1_TransitionMirror"]=3;
- PCUTable["CubeBlock/AQD_LG_HA_Slope3x1_Transition"]=3;
- PCUTable["CubeBlock/AQD_LG_HA_Slope3x1_TransitionMirror"]=3;
- PCUTable["CubeBlock/AQD_SG_HA_Slope3x1_Transition"]=3;
- PCUTable["CubeBlock/AQD_SG_HA_Slope3x1_TransitionMirror"]=3;
- PCUTable["CubeBlock/AQD_LG_LA_Slope4x1"]=4;
- PCUTable["CubeBlock/AQD_SG_LA_Slope4x1"]=4;
- PCUTable["CubeBlock/AQD_LG_HA_Slope4x1"]=4;
- PCUTable["CubeBlock/AQD_SG_HA_Slope4x1"]=4;
- PCUTable["CubeBlock/AQD_LG_LA_Slope4x1_Corner"]=4;
- PCUTable["CubeBlock/AQD_SG_LA_Slope4x1_Corner"]=4;
- PCUTable["CubeBlock/AQD_LG_HA_Slope4x1_Corner"]=4;
- PCUTable["CubeBlock/AQD_SG_HA_Slope4x1_Corner"]=4;
- PCUTable["CubeBlock/AQD_LG_LA_Slope4x1_InvCorner"]=4;
- PCUTable["CubeBlock/AQD_SG_LA_Slope4x1_InvCorner"]=4;
- PCUTable["CubeBlock/AQD_LG_HA_Slope4x1_InvCorner"]=4;
- PCUTable["CubeBlock/AQD_SG_HA_Slope4x1_InvCorner"]=4;
- PCUTable["CubeBlock/AQD_LG_LA_Slope4x1_Transition"]=4;
- PCUTable["CubeBlock/AQD_LG_LA_Slope4x1_TransitionMirror"]=4;
- PCUTable["CubeBlock/AQD_SG_LA_Slope4x1_Transition"]=4;
- PCUTable["CubeBlock/AQD_SG_LA_Slope4x1_TransitionMirror"]=4;
- PCUTable["CubeBlock/AQD_LG_HA_Slope4x1_Transition"]=4;
- PCUTable["CubeBlock/AQD_LG_HA_Slope4x1_TransitionMirror"]=4;
- PCUTable["CubeBlock/AQD_SG_HA_Slope4x1_Transition"]=4;
- PCUTable["CubeBlock/AQD_SG_HA_Slope4x1_TransitionMirror"]=4;
- PCUTable["LargeMissileTurret/MXA_CoilgunH"]=500;
- PCUTable["LargeMissileTurret/MXA_CoilgunL"]=350;
- PCUTable["ConveyorSorter/MXA_CoilgunPD"]=200;
- PCUTable["ConveyorSorter/MXA_CoilgunPD_S"]=200;
- PCUTable["ConveyorSorter/MXA_Rampart2"]=250;
- PCUTable["ConveyorSorter/MXA_Rampart2_S"]=250;
- PCUTable["ConveyorSorter/MXA_BreakWater"]=750;
- PCUTable["ConveyorSorter/MXA_SoFCoilgun"]=350;
- PCUTable["SmallMissileLauncher/MXA_Sabre_Coilgun"]=100;
- PCUTable["SmallMissileLauncher/MXA_Sabre_E_Coilgun"]=100;
- PCUTable["ConveyorSorter/MXA_MACL"]=2500;
- PCUTable["ConveyorSorter/MXA_MACL_S"]=2000;
- PCUTable["ConveyorSorter/MXA_SMAC"]=7500;
- PCUTable["ConveyorSorter/MXA_M2MAC"]=2000;
- PCUTable["ConveyorSorter/MXA_M2MAC_S"]=1500;
- PCUTable["ConveyorSorter/MXA_ArcherPods"]=300;
- PCUTable["ConveyorSorter/MXA_M58ArcherPods"]=250;
- PCUTable["ConveyorSorter/MXA_M58ArcherPods_S"]=225;
- PCUTable["ConveyorSorter/MXA_Shiva"]=500;
- PCUTable["TextPanel/NPC_Dummies_Desk"]=10;
- PCUTable["TextPanel/NPC_Dummies_DeskCorner"]=10;
- PCUTable["TextPanel/NPC_Dummies_Couch"]=10;
- PCUTable["TextPanel/NPC_Dummies_CouchCorner"]=10;
- PCUTable["TextPanel/NPC_Dummies_PassengerSeat"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Wall"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Akimbo"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_ArmPad"]=10;
- PCUTable["TextPanel/NPC_Dummies_ControlSeat"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Normal"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Salute"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Console"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Console_Offset"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_ArmPad_Offset"]=10;
- PCUTable["TextPanel/NPC_Dummies_Bed_Lying"]=10;
- PCUTable["TextPanel/NPC_Dummies_Bed_Sitting"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Rifle"]=10;
- PCUTable["StoreBlock/NPC_Dummies_Store_Standing"]=10;
- PCUTable["StoreBlock/NPC_Dummies_Store_Desk"]=10;
- PCUTable["ContractBlock/NPC_Dummies_Contracts_Crates"]=10;
- PCUTable["ContractBlock/NPC_Dummies_Contracts_Standing"]=10;
- PCUTable["ContractBlock/NPC_Dummies_Contracts_Desk"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_LeaningDesk"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_LeaningDesk_Offset"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_LeaningRailing"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_Standing_Normal"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_Standing_Cup"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_Desk"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_DeskCorner"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_PassengerSeat"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_Couch"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_CouchCorner"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Normal_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Wall_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Akimbo_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_ArmPad_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Salute_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Console_Small_R"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Console_Small_L"]=10;
- PCUTable["TextPanel/NPC_Dummies_Standing_Rifle_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_Standing_Normal_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_Standing_Cup_Small"]=10;
- PCUTable["StoreBlock/NPC_Dummies_Store_Standing_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_PassengerSeat_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_PassengerSeat_Small_Offset"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_PassengerSeat_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_F_PassengerSeat_Small_Offset"]=10;
- PCUTable["TextPanel/NPC_Dummies_ControlSeat_Small"]=10;
- PCUTable["TextPanel/NPC_Dummies_Cryo_Small"]=10;
- PCUTable["InteriorLight/MA_Lantern"]=25;
- PCUTable["ReflectorLight/MA_Pole_Lights"]=100;
- PCUTable["CargoContainer/EasyArmory"]=10;
- PCUTable["CargoContainer/EasyDisArmory"]=10;
- PCUTable["CargoContainer/EasyDisArmory2"]=10;
- PCUTable["CargoContainer/Prizebox"]=10;
- PCUTable["CryoChamber/AVTECH_Interface"]=25;
- PCUTable["CryoChamber/AVTECH_Interface_SG"]=25;
- PCUTable["LargeMissileTurret/ARYXCycloneCannon"]=500;
- PCUTable["LargeMissileTurret/ARYXCycloneCannon_SG"]=500;
- PCUTable["LargeMissileTurret/ARYXHurricaneCannon"]=500;
- PCUTable["LargeMissileTurret/ARYXTyphoonCannon"]=500;
- PCUTable["LargeMissileTurret/ARYXTsunamiCannon"]=500;
- PCUTable["SmallMissileLauncher/ARYXTempestCannon"]=200;
- PCUTable["SmallMissileLauncher/ARYXTempestCannon_SG"]=200;
- PCUTable["SmallMissileLauncher/ARYXWindfallCannon"]=100;
- PCUTable["SmallMissileLauncher/ARYXStormCannon"]=80;
- PCUTable["LargeMissileTurret/ARYXBurstTurret"]=200;
- PCUTable["LargeMissileTurret/ARYXBurstTurret_SG"]=200;
- PCUTable["ConveyorSorter/ARYXBurstTurretSlanted"]=200;
- PCUTable["ConveyorSorter/ARYXHydraTurret"]=200;
- PCUTable["ConveyorSorter/ARYXInterceptorPDGun"]=150;
- PCUTable["ConveyorSorter/ARYXTacticalModule"]=99999;
- PCUTable["ConveyorSorter/ARYXLargeIonCannon"]=1000;
- PCUTable["LargeMissileTurret/ARYXHeavyFlakTurret"]=200;
- PCUTable["ConveyorSorter/ARYXMissileBattery"]=300;
- PCUTable["ConveyorSorter/ARYXRocketArtillery"]=300;
- PCUTable["LargeMissileTurret/ARYXPlasmaBeamCannon"]=300;
- PCUTable["LargeMissileTurret/ARYXPhaseRepeaterCannon"]=300;
- PCUTable["ConveyorSorter/ARYXOculusLaserBase"]=100;
- PCUTable["ConveyorSorter/ARYXArgusLaser"]=100;
- PCUTable["ConveyorSorter/ARYXSmallBombBay"]=125;
- PCUTable["LargeMissileTurret/ARYXJuryCannon"]=200;
- PCUTable["LargeGatlingTurret/ARYXAtlasPDC"]=200;
- PCUTable["ConveyorSorter/ARYXSlantedAtlasPDC"]=200;
- PCUTable["LargeGatlingTurret/ARYXCodexPDC"]=100;
- PCUTable["ConveyorSorter/ARYXSlantedCodexPDC"]=100;
- PCUTable["ConveyorSorter/ARYXSlantedInvCodexPDC"]=100;
- PCUTable["LargeGatlingTurret/ARYXCodexPDC_SG"]=100;
- PCUTable["LargeMissileTurret/ARYXAuroraLaser"]=100;
- PCUTable["LargeMissileTurret/ARYXWarriorGatling"]=300;
- PCUTable["ConveyorSorter/ARYXWarriorGatlingGun"]=300;
- PCUTable["LargeMissileTurret/ARYXVariableLaser"]=150;
- PCUTable["LargeMissileTurret/ARYXPulseTurret"]=100;
- PCUTable["LargeMissileTurret/ARYXCompactPulseTurret"]=100;
- PCUTable["ConveyorSorter/ARYXGravPulseLaserSG"]=100;
- PCUTable["LargeMissileTurret/ARYXNucleonShotgun"]=100;
- PCUTable["ConveyorSorter/AryxNucleonShotgun_SG"]=100;
- PCUTable["ConveyorSorter/ARYXFlechetteLauncher"]=100;
- PCUTable["ConveyorSorter/ARYXVariableLauncher"]=200;
- PCUTable["SmallGatlingGun/ARYX_FixedAtlasGatling"]=100;
- PCUTable["SmallGatlingGun/ARYX_SmallChaingun"]=100;
- PCUTable["ConveyorSorter/ARYXSmallPulseLaser_Fixed"]=80;
- PCUTable["ConveyorSorter/ARYXSmallPhysicsGun"]=120;
- PCUTable["ConveyorSorter/ARYXSiegeMortarCannon"]=800;
- PCUTable["ConveyorSorter/ARYX_SmallFlareLauncher"]=150;
- PCUTable["ConveyorSorter/ARYX_LargeFlareLauncher"]=200;
- PCUTable["SmallMissileLauncher/ARYX_Fixed_Chord_auto"]=100;
- PCUTable["ConveyorSorter/ARYXSmallFlechetteLauncher"]=100;
- PCUTable["LargeMissileTurret/ARYXFlakTurret"]=150;
- PCUTable["LargeMissileTurret/ARYX_ChordAutocannon"]=100;
- PCUTable["LargeMissileTurret/ARYX_ChordAutocannon_SG"]=100;
- PCUTable["LargeMissileTurret/ARYX_EchoAutocannon"]=100;
- PCUTable["ConveyorSorter/ARYXGladiatorMissileLauncher"]=200;
- PCUTable["ConveyorSorter/ARYXTorpLauncher"]=150;
- PCUTable["ConveyorSorter/ARYXInlineTorpLauncher"]=150;
- PCUTable["ConveyorSorter/ARYXHeavyTorpedoLauncher"]=300;
- PCUTable["ConveyorSorter/ARYXLongbowLauncher"]=150;
- PCUTable["ConveyorSorter/ARYXLongbowLauncher_SG"]=150;
- PCUTable["ConveyorSorter/ARYXHeavyMissileSalvoLauncher"]=200;
- PCUTable["ConveyorSorter/ARYXPlasmaPulser"]=100;
- PCUTable["ConveyorSorter/ARYX_FocusBeam_CompactSG"]=100;
- PCUTable["LargeMissileTurret/ARYX_FocusBeam_CompactTurret"]=100;
- PCUTable["ConveyorSorter/ARYXFocusLance"]=400;
- PCUTable["ConveyorSorter/ARYXGaussCannon"]=1500;
- PCUTable["LargeMissileTurret/ARYXGaussTurret"]=2000;
- PCUTable["ConveyorSorter/ARYXCatalystCannon"]=99999;
- PCUTable["ConveyorSorter/ARYXRailgun"]=750;
- PCUTable["ConveyorSorter/ARYXLightCoilgun"]=750;
- PCUTable["ConveyorSorter/ARYXHeavyCoilgun"]=750;
- PCUTable["ConveyorSorter/ARYXKingswordSupercannon"]=2500;
- PCUTable["LargeMissileTurret/ARYXRailgunTurret"]=1000;
- PCUTable["LargeMissileTurret/ARYXPicketRailgun"]=500;
- PCUTable["ConveyorSorter/ARYXLightRailgun"]=300;
- PCUTable["LargeMissileTurret/ARYXSentinel"]=200;
- PCUTable["LargeMissileTurret/ARYXReaperPulseCannon"]=1500;
- PCUTable["ConveyorSorter/ARYXMace"]=200;
- PCUTable["LargeMissileTurret/ARYX_FW_NovaBlaster"]=150;
- PCUTable["ConveyorSorter/ARYX_NovaBlaster_SG"]=100;
- PCUTable["ConveyorSorter/AWE_MarkV_SuperLaser_Large_CB"]=1500;
- PCUTable["ConveyorSorter/ARYXLargeRadar"]=50;
- PCUTable["ConveyorSorter/ARYXSmallRadar"]=50;
- PCUTable["LargeMissileTurret/ARYXMagnetarCannon"]=500;
- PCUTable["LargeMissileTurret/ARYXQuasarCannon"]=500;
- PCUTable["LargeMissileTurret/ARYXPulsarCannon"]=300;
- PCUTable["ConveyorSorter/ARYX_Small_Sidekick_Hangar"]=500;
- PCUTable["ConveyorSorter/ARYXTeslaLanceFixed"]=400;
- PCUTable["ConveyorSorter/ARYXPlasmaFlamethrower"]=400;
- PCUTable["LargeMissileTurret/ARYXSpartanTurret"]=200;
- PCUTable["ConveyorSorter/ARYX_SpartanCannonSG"]=100;
- PCUTable["LargeMissileTurret/ARYXVulcanTurret"]=200;
- PCUTable["ConveyorSorter/ARYX_SabreMissileHardpoint"]=80;
- PCUTable["ConveyorSorter/ARYX_NyxMissileHardpoint"]=100;
- PCUTable["UpgradeModule/EpsteinStabalizer"]=5;
- PCUTable["UpgradeModule/EpsteinStabalizerSG"]=5;
- PCUTable["Reactor/MCRNFusion"]=300;
- PCUTable["OxygenGenerator/UN_O2GEN"]=500;
- PCUTable["RadioAntenna/AntennaCorner"]=100;
- PCUTable["RadioAntenna/AntennaSlope"]=100;
- PCUTable["RadioAntenna/Antenna45Corner"]=100;
- PCUTable["RadioAntenna/AntennaCube"]=100;
- PCUTable["RadioAntenna/LongboiArrayLG"]=100;
- PCUTable["RadioAntenna/LongboiArraySG"]=100;
- PCUTable["RadioAntenna/AntennaCubeSG"]=100;
- PCUTable["RadioAntenna/Antenna45CornerSG"]=100;
- PCUTable["RadioAntenna/AntennaSlopeSG"]=100;
- PCUTable["RadioAntenna/AntennaCornerSG"]=100;
- PCUTable["ShipConnector/Connector_Junction"]=150;
- PCUTable["ShipConnector/Mini_Connector"]=150;
- PCUTable["InteriorLight/Armoured_Light_HalfBlock"]=25;
- PCUTable["InteriorLight/Armoured_Light_Block"]=25;
- PCUTable["CameraBlock/InnerArmouredCamera"]=25;
- PCUTable["CameraBlock/InnerArmouredCamera+"]=25;
- PCUTable["CameraBlock/SmallCameraTopMounted+"]=25;
- PCUTable["CameraBlock/LargeCameraTopMounted+"]=25;
- PCUTable["AirtightHangarDoor/shangar3"]=115;
- PCUTable["AirtightHangarDoor/shangar4"]=115;
- PCUTable["AirtightHangarDoor/shangar5"]=115;
- PCUTable["AirtightHangarDoor/shangar6"]=115;
- PCUTable["AirtightHangarDoor/shangar7"]=115;
- PCUTable["AirtightHangarDoor/shangar8"]=115;
- PCUTable["AirtightHangarDoor/shangar9"]=115;
- PCUTable["AirtightHangarDoor/shangar10"]=115;
- PCUTable["Assembler/NPTradeCrafter"]=40;
- PCUTable["Assembler/NPFuelCrafter"]=40;
- PCUTable["OxygenGenerator/Extractor"]=50;
- PCUTable["OxygenGenerator/ExtractorSmall"]=50;
- PCUTable["AirVent/GanymedeAirVent"]=10;
- PCUTable["HydrogenEngine/PassengerCabin"]=25;
- PCUTable["BatteryBlock/GanymedeBatteryLG1"]=15;
- PCUTable["BatteryBlock/GanymedeBatteryLG2"]=15;
- PCUTable["BatteryBlock/GanymedeBatteryLG3"]=15;
- PCUTable["Cockpit/RazorbackControlSeat"]=15;
- PCUTable["Cockpit/RazorbackControlSeat2"]=15;
- PCUTable["SolarPanel/SolarArrayBlock"]=55;
- PCUTable["Thrust/ARYLNX_Epstein_Drive"]=150;
- PCUTable["Thrust/ARYLNX_MUNR_Epstein_Drive"]=125;
- PCUTable["Thrust/ARYLNX_PNDR_Epstein_Drive"]=150;
- PCUTable["Thrust/ARYLNX_QUADRA_Epstein_Drive"]=125;
- PCUTable["Thrust/ARYLNX_RAIDER_Epstein_Drive"]=125;
- PCUTable["Thrust/ARYLNX_ROCI_Epstein_Drive"]=200;
- PCUTable["Thrust/ARYLNX_Leo_Epstein_Drive"]=200;
- PCUTable["Thrust/ARYLYNX_SILVERSMITH_Epstein_DRIVE"]=200;
- PCUTable["Thrust/ARYLNX_DRUMMER_Epstein_Drive"]=200;
- PCUTable["Thrust/ARYLNX_SCIRCOCCO_Epstein_Drive"]=200;
- PCUTable["Thrust/ARYLNX_Mega_Epstein_Drive"]=300;
- PCUTable["Thrust/LynxRcsThruster1"]=8;
- PCUTable["Thrust/AryxRCSRamp"]=8;
- PCUTable["Thrust/AryxRCSHalfRamp"]=8;
- PCUTable["Thrust/AryxRCSSlant"]=8;
- PCUTable["Thrust/AryxRCS"]=8;
- PCUTable["Thrust/ARYLNX_MESX_Epstein_Drive1"]=200;
- PCUTable["Thrust/ARYLNX_MESX_Epstein_Drive2"]=300;
- PCUTable["Thrust/ARYLNX_RZB_Epstein_Drive"]=75;
- PCUTable["Thrust/ARYXLNX_YACHT_EPSTEIN_DRIVE"]=75;
- PCUTable["Thrust/Silverfish_RCS"]=8;
- PCUTable["Thrust/AryxRCSRamp_S"]=8;
- PCUTable["Thrust/AryxRCSHalfRamp_S"]=8;
- PCUTable["Thrust/AryxRCSSlant_S"]=8;
- PCUTable["Thrust/AryxRCS_S"]=8;
- PCUTable["CameraBlock/LBZoomPlusCamera"]=25;
- PCUTable["CameraBlock/SBZoomPlusCamera"]=25;
- PCUTable["Reactor/LargeBlockSmallGenerator_Belter"]=300;
- PCUTable["Reactor/SmallBlockSmallGenerator_Belter"]=300;
- PCUTable["UpgradeModule/LargeProductivityModule_Belter"]=100;
- PCUTable["UpgradeModule/LargeEffectivenessModule_Belter"]=100;
- PCUTable["UpgradeModule/LargeEnergyModule_Belter"]=100;
- PCUTable["OreDetector/LargeOreDetector_Belter"]=100;
- PCUTable["OreDetector/SmallBlockRamshackleOreDetector"]=100;
- PCUTable["SolarPanel/LargeBlockSolarPanel_Belter"]=110;
- PCUTable["LandingGear/LargeClamp"]=35;
- PCUTable["Drill/RamshackleDrill"]=190;
- PCUTable["Drill/SmallRamshackleDrill"]=190;
- PCUTable["ShipGrinder/RamshackleGrinder"]=100;
- PCUTable["ShipGrinder/LargeRamshackleGrinder"]=150;
- PCUTable["ShipWelder/RamshackleWelder"]=150;
- PCUTable["ShipWelder/LargeRamshackleWelder"]=150;
- PCUTable["OxygenTank/TychoCompressedHydroTank"]=25;
- PCUTable["OxygenTank/StationHydrogenTank"]=25;
- PCUTable["ButtonPanel/VerticalButtonPanelLargeOffset"]=5;
- PCUTable["ButtonPanel/ButtonPanelLargeOffset"]=5;
- PCUTable["ButtonPanel/LargeSciFiButtonPanelOffset"]=100;
- PCUTable["ShipWelder/Large_MCRN_Welder"]=150;
- PCUTable["ShipWelder/Small_MCRN_Welder"]=150;
- PCUTable["ShipWelder/Large_UNN_Welder"]=150;
- PCUTable["ShipWelder/Small_UNN_Welder"]=150;
- PCUTable["Drill/Small_UNN_Drill_Base"]=190;
- PCUTable["Drill/Large_UNN_Drill_Base"]=190;
- PCUTable["UpgradeModule/LargeProductivityModule_Inner"]=100;
- PCUTable["UpgradeModule/LargeEffectivenessModule_Inner"]=100;
- PCUTable["UpgradeModule/LargeEnergyModule_Inner"]=100;
- PCUTable["Assembler/Packager"]=400;
- PCUTable["Conveyor/ArmorConveyer4WayHat"]=20;
- PCUTable["Conveyor/ArmorConveyor5Way"]=25;
- PCUTable["Conveyor/ArmorConveyorElbow"]=15;
- PCUTable["OxygenTank/SmallOxygenTankSmall"]=25;
- PCUTable["Conveyor/Conveyor4WayDuct"]=10;
- PCUTable["Conveyor/ConveyorElbowDuct"]=10;
- PCUTable["Conveyor/Conveyor4WayAltDuct"]=10;
- PCUTable["Conveyor/Conveyor5WayDuct"]=10;
- PCUTable["ConveyorSorter/Ostman-Jazinski Flak Cannon"]=400;
- PCUTable["ConveyorSorter/Ostman-Jazinski Flak Cannon MES"]=400;
- PCUTable["ConveyorSorter/Tycho Class Torpedo Mount"]=75;
- PCUTable["ConveyorSorter/Tycho Class Torpedo Mount MES"]=75;
- PCUTable["ConveyorSorter/Zakosetara Heavy Railgun"]=2000;
- PCUTable["SmallGatlingGun/Zakosetara Heavy Railgun MES"]=2000;
- PCUTable["ConveyorSorter/Nariman Dynamics PDC Slope Base"]=400;
- PCUTable["ConveyorSorter/Nariman Dynamics PDC Slope Base MES"]=400;
- PCUTable["ConveyorSorter/Nariman Dynamics PDC"]=400;
- PCUTable["ConveyorSorter/Nariman Dynamics PDC MES"]=400;
- PCUTable["ConveyorSorter/V-14 Stiletto Light Railgun"]=2500;
- PCUTable["ConveyorSorter/V-14 Stiletto Light Railgun MES"]=2500;
- PCUTable["ConveyorSorter/VX-12 Foehammer Ultra-Heavy Railgun"]=7500;
- PCUTable["ConveyorSorter/VX-12 Foehammer Ultra-Heavy Railgun MES"]=7500;
- PCUTable["ConveyorSorter/Ares_Class_Torpedo_Launcher_F"]=600;
- PCUTable["ConveyorSorter/Ares_Class_Torpedo_Launcher_F_MES"]=600;
- PCUTable["ConveyorSorter/Ares_Class_TorpedoLauncher"]=600;
- PCUTable["ConveyorSorter/Ares_Class_TorpedoLauncher_MES"]=600;
- PCUTable["ConveyorSorter/Artemis_Torpedo_Tube"]=200;
- PCUTable["ConveyorSorter/Artemis_Torpedo_Tube_MES"]=200;
- PCUTable["ConveyorSorter/ZeusClass_Rapid_Torpedo_Launcher"]=1800;
- PCUTable["ConveyorSorter/ZeusClass_Rapid_Torpedo_Launcher_MES"]=1800;
- PCUTable["ConveyorSorter/Dawson-Pattern Medium Railgun"]=2500;
- PCUTable["ConveyorSorter/Dawson-Pattern Medium Railgun MES"]=2500;
- PCUTable["ConveyorSorter/Farren-Pattern Heavy Railgun"]=7500;
- PCUTable["ConveyorSorter/Farren-Pattern Heavy Railgun MES"]=7500;
- PCUTable["ConveyorSorter/Redfields Ballistics PDC Slope Base"]=400;
- PCUTable["ConveyorSorter/Redfields Ballistics PDC Slope Base MES"]=400;
- PCUTable["ConveyorSorter/Redfields Ballistics PDC"]=400;
- PCUTable["ConveyorSorter/Redfields Ballistics PDC MES"]=400;
- PCUTable["ConveyorSorter/Apollo Class Torpedo Launcher"]=200;
- PCUTable["ConveyorSorter/Apollo Class Torpedo Launcher MES"]=200;
- PCUTable["ConveyorSorter/Mounted Zakosetara Heavy Railgun"]=2500;
- PCUTable["ConveyorSorter/Mounted Zakosetara Heavy Railgun MES"]=2500;
- PCUTable["ShipConnector/Connector_Passageway"]=125;
- PCUTable["ShipConnector/Small_Connector_Passageway_SG"]=100;
- PCUTable["ShipConnector/Small_Connector_Passageway_LG"]=100;
- PCUTable["Conveyor/LargeBlockConveyorPipeTJunction"]=10;
- PCUTable["Conveyor/LargeBlockConveyorPipeElbowJunction"]=10;
- PCUTable["Conveyor/LargeBlockConveyorPipeElbow"]=10;
- PCUTable["Conveyor/LargeBlockConveyorPipe5-Way"]=10;
- PCUTable["ConveyorConnector/SmallBlockConveyorPipeCorner"]=10;
- PCUTable["ConveyorConnector/SmallBlockConveyorPipeEnd"]=10;
- PCUTable["ConveyorConnector/SmallBlockConveyorPipeFlange"]=10;
- PCUTable["ConveyorConnector/SmallBlockConveyorPipeSeamless"]=10;
- PCUTable["Conveyor/SmallBlockConveyorPipeIntersection"]=10;
- PCUTable["Conveyor/SmallBlockConveyorPipeJunction"]=10;
- PCUTable["Conveyor/SmallBlockConveyorPipeTJunction"]=10;
- PCUTable["Conveyor/SmallBlockConveyorPipeElbow"]=10;
- PCUTable["Conveyor/SmallBlockConveyorPipeElbowJunction"]=10;
- PCUTable["Conveyor/SmallBlockConveyorPipe5-Way"]=10;
- PCUTable["Conveyor/SmallArmouredConveyorCorner"]=7;
- PCUTable["Conveyor/SmallArmouredConveyorX"]=7;
- PCUTable["Conveyor/SmallArmouredConveyorElbow"]=7;
- PCUTable["Conveyor/SmallArmouredConveyorElbowT"]=7;
- PCUTable["Conveyor/SmallArmouredConveyorElbowX"]=7;
- PCUTable["Conveyor/SmallArmouredConveyorStraight"]=7;
- PCUTable["Conveyor/SmallArmouredConveyorT"]=7;
- PCUTable["Conveyor/SmallBlockArmourConveyor"]=10;
- PCUTable["CargoContainer/1x1x3CargoSG"]=10;
- PCUTable["CargoContainer/2x1x2CargoSG"]=10;
- PCUTable["CargoContainer/2x1x2CargoSGInv"]=10;
- PCUTable["CargoContainer/2x2x2CargoSG"]=10;
- PCUTable["CargoContainer/StorageShelfv1SG"]=10;
- PCUTable["CargoContainer/StorageShelfv2SG"]=10;
- PCUTable["CargoContainer/StorageShelfv3SG"]=10;
- PCUTable["CargoContainer/9x11x5CargoSG"]=10;
- PCUTable["CargoContainer/HalfBlockCargo"]=10;
- PCUTable["CargoContainer/EDPAccessCargoTube"]=10;
- PCUTable["CargoContainer/StorageShelfv1LG"]=10;
- PCUTable["CargoContainer/StorageShelfv2LG"]=10;
- PCUTable["CargoContainer/StorageShelfv3LG"]=10;
- PCUTable["CargoContainer/3x3x1Cargo"]=10;
- PCUTable["CargoContainer/3x3x1OpenCargo"]=10;
- PCUTable["CargoContainer/3x3x1OpenCargoV2"]=10;
- PCUTable["CargoContainer/3x5x3LargeContainer"]=10;
- PCUTable["CargoContainer/3x11x3LargeContainer"]=10;
- PCUTable["CargoContainer/7x11x3LargeContainer"]=10;
- PCUTable["SmallMissileLauncherReload/Apollo Class Torpedo Launcher"]=500;
- PCUTable["SmallMissileLauncherReload/Apollo Class Torpedo Launcher MES"]=500;
- PCUTable["LargeMissileTurret/Ostman-Jazinski Flak Cannon"]=400;
- PCUTable["LargeMissileTurret/Ostman-Jazinski Flak Cannon MES"]=400;
- PCUTable["SmallMissileLauncherReload/Tycho Class Torpedo Mount"]=75;
- PCUTable["SmallMissileLauncherReload/Tycho Class Torpedo Mount MES"]=75;
- PCUTable["SmallGatlingGun/Zakosetara Heavy Railgun"]=1875;
- PCUTable["LargeGatlingTurret/Nariman Dynamics PDC"]=400;
- PCUTable["LargeGatlingTurret/Nariman Dynamics PDC MES"]=400;
- PCUTable["LargeMissileTurret/V-14 Stiletto Light Railgun"]=2500;
- PCUTable["LargeMissileTurret/V-14 Stiletto Light Railgun MES"]=2500;
- PCUTable["LargeMissileTurret/VX-12 Foehammer Ultra-Heavy Railgun"]=7000;
- PCUTable["LargeMissileTurret/VX-12 Foehammer Ultra-Heavy Railgun MES"]=7000;
- PCUTable["SmallMissileLauncherReload/Ares_Class_Torpedo_Launcher_F"]=300;
- PCUTable["SmallMissileLauncherReload/Ares_Class_Torpedo_Launcher_F_MES"]=300;
- PCUTable["SmallMissileLauncherReload/Ares_Class_TorpedoLauncher"]=300;
- PCUTable["SmallMissileLauncherReload/Ares_Class_TorpedoLauncher_MES"]=300;
- PCUTable["SmallMissileLauncherReload/ZeusClass_Rapid_Torpedo_Launcher"]=1000;
- PCUTable["SmallMissileLauncherReload/ZeusClass_Rapid_Torpedo_Launcher_MES"]=1000;
- PCUTable["LargeMissileTurret/Dawson-Pattern Medium Railgun"]=2500;
- PCUTable["LargeMissileTurret/Dawson-Pattern Medium Railgun MES"]=2500;
- PCUTable["LargeMissileTurret/Farren-Pattern Heavy Railgun"]=6000;
- PCUTable["LargeMissileTurret/Farren-Pattern Heavy Railgun MES"]=6000;
- PCUTable["LargeGatlingTurret/Redfields Ballistics PDC"]=400;
- PCUTable["LargeGatlingTurret/Redfields Ballistics PDC MES"]=400;
- PCUTable["InteriorLight/Long_Interior_Light_Center"]=25;
- PCUTable["InteriorLight/Long_Interior_Light_SB"]=25;
- PCUTable["InteriorLight/Long_Interior_Light_Corner"]=25;
- PCUTable["InteriorLight/Long_Interior_Light_Double"]=25;
- PCUTable["InteriorLight/Long_Interior_Light_Diagonal"]=25;
- PCUTable["InteriorLight/Long_Interior_Light_Diagonal_Mirrored"]=25;
- PCUTable["InteriorLight/InteriorLightBulb"]=25;
- PCUTable["InteriorLight/SmallLightPole"]=25;
- PCUTable["InteriorLight/SmallLightPoleCorner"]=25;
- PCUTable["InteriorLight/SmallLightPoleDouble"]=25;
- PCUTable["InteriorLight/MediumLightPole"]=25;
- PCUTable["ReflectorLight/LargeWorkLight"]=25;
- PCUTable["ReflectorLight/LargeLightPole"]=25;
- PCUTable["ReflectorLight/CleanSpotlight_LB"]=25;
- PCUTable["ReflectorLight/CleanSpotlight_SB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlope_LB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlope_SB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlope2_LB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlope2_SB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlanted_LB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlanted_SB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlanted2_LB"]=25;
- PCUTable["ReflectorLight/CleanSpotlightSlanted2_SB"]=25;
- PCUTable["ReflectorLight/SlimSpotlight_LB"]=25;
- PCUTable["ReflectorLight/SlimSpotlight_SB"]=25;
- PCUTable["ReflectorLight/SmallFloodLight_LB"]=25;
- PCUTable["ReflectorLight/SmallFloodLight_SB"]=25;
- PCUTable["InteriorLight/RoundInteriorLightOffset"]=25;
- PCUTable["InteriorLight/RoundInteriorLight_SB"]=25;
- PCUTable["InteriorLight/RoundInteriorLight"]=25;
- PCUTable["MedicalRoom/LargeRefillStation"]=30;
- PCUTable["MedicalRoom/SmallRefillStation"]=30;
- PCUTable["AdvancedDoor/EDPBulkheadDoor1"]=115;
- PCUTable["AdvancedDoor/VLSHatchType1"]=115;
- PCUTable["Door/EDPAngledDoor1SG"]=115;
- PCUTable["Door/EDPAngledDoor1x2SG"]=115;
- PCUTable["Door/EDPAngledDoor1"]=115;
- PCUTable["Door/EDPAngledDoor1x2"]=115;
- PCUTable["Door/EDPDoorT1v1SG"]=115;
- PCUTable["Door/EDPDoorT2v1SG"]=115;
- PCUTable["Door/EDPDoorT1v1"]=115;
- PCUTable["Door/EDPDoorT2v1"]=115;
- PCUTable["Door/EDPDoorT1v1OS"]=115;
- PCUTable["Door/EDPDoorT2v1OS"]=115;
- PCUTable["Door/EDPDoorT1v1HB"]=115;
- PCUTable["Door/EDPDoorT2v1HB"]=115;
- PCUTable["Door/EDPAirlockDoor1SG"]=115;
- PCUTable["Door/EDPAirlockDoor2SG"]=115;
- PCUTable["Door/EDPAirlockDoor1"]=115;
- PCUTable["Door/EDPAirlockDoor2"]=115;
- PCUTable["Door/EDPInteriorDoorSG"]=115;
- PCUTable["Door/EDPInteriorDoor"]=115;
- PCUTable["Door/EDPInteriorDoor2"]=115;
- PCUTable["AdvancedDoor/EDPBulkheadDoor1a"]=115;
- PCUTable["AdvancedDoor/EDPHatchSG"]=115;
- PCUTable["AdvancedDoor/VLSHatchType1HB"]=115;
- PCUTable["Door/EDPHatchV2SG"]=115;
- PCUTable["Door/EDPHatchV2"]=115;
- PCUTable["Door/EDPHatchV2HB"]=115;
- PCUTable["Door/EDPLadderHatch"]=115;
- PCUTable["AdvancedDoor/EDPRailingGate"]=115;
- PCUTable["AdvancedDoor/EDPRailingGate2"]=115;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement