INDEX reader

This commit is contained in:
Bob 2025-05-01 21:45:46 +02:00
parent 0685f231fe
commit 3cd9fc7b7c
23 changed files with 659 additions and 177 deletions

View File

@ -16,6 +16,7 @@
* Chemthrower combustible liquids now use SEDNA type fire particles * Chemthrower combustible liquids now use SEDNA type fire particles
* Halved recoil on the zebra rifle * Halved recoil on the zebra rifle
* The laser pistols now make a click when dry firing * The laser pistols now make a click when dry firing
* Solid fuel in the rotary furnace no longer ticks down if no recipe is actually being done
## Fixed ## Fixed
* Fixed a potential crash caused by cargo dropships landing on cargo docks with no satellite chip installed * Fixed a potential crash caused by cargo dropships landing on cargo docks with no satellite chip installed

View File

@ -9,13 +9,14 @@ public interface IRORInteractive extends IRORInfo {
public static String EX_NAME = "Exception: Multiple Name Separators"; public static String EX_NAME = "Exception: Multiple Name Separators";
/** Runs a function on the ROR component, usually causing the component to change or do something. Returns are optional. */ /** Runs a function on the ROR component, usually causing the component to change or do something. Returns are optional. */
public Object runRORFunction(String name, String[] params); public String runRORFunction(String name, String[] params);
/** Extracts the command name from a full command string */ /** Extracts the command name from a full command string */
public static String getCommand(String input) { public static String getCommand(String input) {
if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL); if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL);
String[] parts = input.split(NAME_SEPARATOR); String[] parts = input.split(NAME_SEPARATOR);
if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME); if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME);
if(parts[0].isEmpty()) throw new RORFunctionException(EX_NULL);
return parts[0]; return parts[0];
} }

View File

@ -3,5 +3,5 @@ package api.hbm.redstoneoverradio;
public interface IRORValueProvider extends IRORInfo { public interface IRORValueProvider extends IRORInfo {
/** Grabs the specified value from this ROR component, operations should not cause any changes with the component itself */ /** Grabs the specified value from this ROR component, operations should not cause any changes with the component itself */
public Object provideRORValue(String name); public String provideRORValue(String name);
} }

View File

@ -43,4 +43,7 @@ ROR programmers can indeed do everything that the readers and controllers can, b
which are more time-consuming to set up and limits the amount of command channels available, hence why readers and controllers exist which are more time-consuming to set up and limits the amount of command channels available, hence why readers and controllers exist
when only a simple solution is required when only a simple solution is required
Addendum: While the RTTY system can support any arbitrary object as a signal, INDEX will strictly use strings, since that simplifies
things regarding serialization and saving signals to NBT. Counters already use a parse to int32 function, so this still checks out.
*/ */

View File

@ -795,6 +795,9 @@ public class ModBlocks {
public static Block radio_torch_receiver; public static Block radio_torch_receiver;
public static Block radio_torch_counter; public static Block radio_torch_counter;
public static Block radio_torch_logic; public static Block radio_torch_logic;
public static Block radio_torch_reader;
public static Block radio_torch_controller;
public static Block radio_torch_programmer;
public static Block radio_telex; public static Block radio_telex;
public static Block conveyor; public static Block conveyor;
@ -1920,6 +1923,9 @@ public class ModBlocks {
radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter"); radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter");
radio_torch_logic = new RadioTorchLogic().setBlockName("radio_torch_logic").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_logic = new RadioTorchLogic().setBlockName("radio_torch_logic").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
radio_torch_reader = new RadioTorchReader().setBlockName("radio_torch_reader").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_reader");
radio_torch_controller = new RadioTorchController().setBlockName("radio_torch_controller").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_controller");
radio_torch_programmer = new RadioTorchProgrammer().setBlockName("radio_torch_programmer").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_programmer");
radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex"); radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex");
conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":conveyor"); conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":conveyor");
@ -3182,6 +3188,9 @@ public class ModBlocks {
register(radio_torch_receiver); register(radio_torch_receiver);
register(radio_torch_counter); register(radio_torch_counter);
register(radio_torch_logic); register(radio_torch_logic);
register(radio_torch_reader);
register(radio_torch_controller);
register(radio_torch_programmer);
register(radio_telex); register(radio_telex);
register(crane_extractor); register(crane_extractor);

View File

@ -75,7 +75,7 @@ public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay {
for(int i = 0; i < tanks.length; i++) for(int i = 0; i < tanks.length; i++)
text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tanks[i].getTankType().getLocalizedName() + ": " + tanks[i].getFill() + "/" + tanks[i].getMaxFill() + "mB"); text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tanks[i].getTankType().getLocalizedName() + ": " + tanks[i].getFill() + "/" + tanks[i].getMaxFill() + "mB");
if(boiler.heat < 50) { if(boiler.display < 1) {
text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]Too cold!"); text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]Too cold!");
} }

View File

@ -12,6 +12,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
@ -120,6 +121,8 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi
} }
} }
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext); addStandardInfo(stack, player, list, ext);

View File

@ -0,0 +1,37 @@
package com.hbm.blocks.network;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class RadioTorchController extends RadioTorchBase {
public RadioTorchController() {
super();
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return null;
}
@Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
@Override
@SideOnly(Side.CLIENT)
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
}
}

View File

@ -0,0 +1,37 @@
package com.hbm.blocks.network;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class RadioTorchProgrammer extends RadioTorchBase {
public RadioTorchProgrammer() {
super();
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return null;
}
@Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
@Override
@SideOnly(Side.CLIENT)
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
}
}

View File

@ -7,7 +7,6 @@ import com.hbm.util.I18nUtil;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
@ -45,16 +44,11 @@ public abstract class RadioTorchRWBase extends RadioTorchBase {
} }
} }
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z); TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityRadioTorchBase) return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te);
if(te instanceof TileEntityRadioTorchBase)
return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te);
return null; return null;
} }
} }

View File

@ -0,0 +1,66 @@
package com.hbm.blocks.network;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.ILookOverlay;
import com.hbm.inventory.gui.GUIScreenRadioTorchReader;
import com.hbm.tileentity.network.TileEntityRadioTorchReader;
import com.hbm.util.Compat;
import com.hbm.util.I18nUtil;
import api.hbm.redstoneoverradio.IRORValueProvider;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection;
public class RadioTorchReader extends RadioTorchBase {
public RadioTorchReader() {
super();
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRadioTorchReader();
}
@Override
public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) {
TileEntity tile = Compat.getTileStandard(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ);
return tile instanceof IRORValueProvider;
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityRadioTorchReader) {
TileEntityRadioTorchReader radio = (TileEntityRadioTorchReader) te;
List<String> text = new ArrayList();
for(int i = 0; i < 8; i++) {
if(radio.channels[i] == null || radio.channels[i].isEmpty()) continue;
if(radio.names[i] == null || radio.names[i].isEmpty()) continue;
text.add(EnumChatFormatting.AQUA + radio.channels[i] + ": " + radio.names[i]);
}
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
@Override
@SideOnly(Side.CLIENT)
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityRadioTorchReader) return new GUIScreenRadioTorchReader((TileEntityRadioTorchReader) te);
return null;
}
}

View File

@ -1,6 +1,7 @@
package com.hbm.inventory.gui; package com.hbm.inventory.gui;
import java.awt.Color; import java.awt.Color;
import java.util.List;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@ -15,6 +16,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@ -39,6 +41,12 @@ public class GUIMachineRotaryFurnace extends GuiInfoContainer {
furnace.tanks[1].renderTankInfo(this, x, y, guiLeft + 134, guiTop + 18, 16, 52); furnace.tanks[1].renderTankInfo(this, x, y, guiLeft + 134, guiTop + 18, 16, 52);
furnace.tanks[2].renderTankInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52); furnace.tanks[2].renderTankInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52);
Slot slot = (Slot) this.inventorySlots.inventorySlots.get(4);
if(this.isMouseOverSlot(slot, x, y) && !slot.getHasStack()) {
List<String> bonuses = this.furnace.burnModule.getDesc();
if(!bonuses.isEmpty()) this.func_146283_a(bonuses, x, y);
}
if(furnace.output == null) { if(furnace.output == null) {
this.drawCustomInfoStat(x, y, guiLeft + 98, guiTop + 18, 16, 52, x, y, EnumChatFormatting.RED + "Empty"); this.drawCustomInfoStat(x, y, guiLeft + 98, guiTop + 18, 16, 52, x, y, EnumChatFormatting.RED + "Empty");
} else { } else {

View File

@ -0,0 +1,167 @@
package com.hbm.inventory.gui;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toserver.NBTControlPacket;
import com.hbm.tileentity.network.TileEntityRadioTorchReader;
import com.hbm.util.Compat;
import com.hbm.util.I18nUtil;
import api.hbm.redstoneoverradio.IRORValueProvider;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;
public class GUIScreenRadioTorchReader extends GuiScreen {
protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rtty_reader.png");
public TileEntityRadioTorchReader rtty;
protected int xSize = 256;
protected int ySize = 204;
protected int guiLeft;
protected int guiTop;
protected GuiTextField[] frequencies;
protected GuiTextField[] names;
public GUIScreenRadioTorchReader(TileEntityRadioTorchReader rtty) {
this.rtty = rtty;
}
@Override
public void initGui() {
super.initGui();
this.guiLeft = (this.width - this.xSize) / 2;
this.guiTop = (this.height - this.ySize) / 2;
Keyboard.enableRepeatEvents(true);
int oX = 4;
int oY = 4;
this.frequencies = new GuiTextField[8];
this.names = new GuiTextField[8];
for(int i = 0; i < 8; i++) {
this.frequencies[i] = new GuiTextField(this.fontRendererObj, guiLeft + 25 + oX, guiTop + 53 + i * 18 + oY, 72 - oX * 2, 14);
this.frequencies[i].setTextColor(0x00ff00);
this.frequencies[i].setDisabledTextColour(0x00ff00);
this.frequencies[i].setEnableBackgroundDrawing(false);
this.frequencies[i].setMaxStringLength(15);
this.frequencies[i].setText(rtty.channels[i] == null ? "" : rtty.channels[i]);
this.names[i] = new GuiTextField(this.fontRendererObj, guiLeft + 119 + oX, guiTop + 53 + i * 18 + oY, 126 - oX * 2, 14);
this.names[i].setTextColor(0x00ff00);
this.names[i].setDisabledTextColour(0x00ff00);
this.names[i].setEnableBackgroundDrawing(false);
this.names[i].setMaxStringLength(25);
this.names[i].setText(rtty.names[i] == null ? "" : rtty.names[i]);
}
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
this.drawDefaultBackground();
this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY);
GL11.glDisable(GL11.GL_LIGHTING);
this.drawGuiContainerForegroundLayer(mouseX, mouseY);
GL11.glEnable(GL11.GL_LIGHTING);
}
private void drawGuiContainerForegroundLayer(int x, int y) {
String name = I18nUtil.resolveKey("container.rttyReader");
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
if(guiLeft + 173 <= x && guiLeft + 173 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
func_146283_a(Arrays.asList(new String[] { rtty.polling ? "Polling" : "State Change" }), x, y);
}
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
func_146283_a(Arrays.asList(new String[] { "Save Settings" }), x, y);
}
if(guiLeft + 29 <= x && guiLeft + 29 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
ForgeDirection dir = ForgeDirection.getOrientation(rtty.getBlockMetadata()).getOpposite();
TileEntity tile = Compat.getTileStandard(rtty.getWorldObj(), rtty.xCoord + dir.offsetX, rtty.yCoord + dir.offsetY, rtty.zCoord + dir.offsetZ);
if(tile instanceof IRORValueProvider) {
IRORValueProvider prov = (IRORValueProvider) tile;
String[] info = prov.getFunctionInfo();
List<String> lines = new ArrayList();
lines.add("Readable values:");
for(String s : info) {
if(s.startsWith(IRORValueProvider.PREFIX_VALUE))
lines.add(EnumChatFormatting.LIGHT_PURPLE + s.substring(4));
}
func_146283_a(lines, x, y);
}
}
}
private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
if(rtty.polling) drawTexturedModalRect(guiLeft + 173, guiTop + 17, 0, 204, 18, 18);
for(GuiTextField field : frequencies) field.drawTextBox();
for(GuiTextField field : names) field.drawTextBox();
}
@Override
protected void mouseClicked(int x, int y, int i) {
super.mouseClicked(x, y, i);
for(GuiTextField field : frequencies) field.mouseClicked(x, y, i);
for(GuiTextField field : names) field.mouseClicked(x, y, i);
if(guiLeft + 173 <= x && guiLeft + 173 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
NBTTagCompound data = new NBTTagCompound();
data.setBoolean("p", !rtty.polling);
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rtty.xCoord, rtty.yCoord, rtty.zCoord));
}
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
NBTTagCompound data = new NBTTagCompound();
for(int j = 0; j < 8; j++) data.setString("c" + j, this.frequencies[j].getText());
for(int j = 0; j < 8; j++) data.setString("n" + j, this.names[j].getText());
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rtty.xCoord, rtty.yCoord, rtty.zCoord));
}
}
@Override
protected void keyTyped(char c, int i) {
for(GuiTextField field : frequencies) if(field.textboxKeyTyped(c, i)) return;
for(GuiTextField field : names) if(field.textboxKeyTyped(c, i)) return;
if(i == 1 || i == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
this.mc.thePlayer.closeScreen();
this.mc.setIngameFocus();
}
}
@Override
public void onGuiClosed() {
Keyboard.enableRepeatEvents(false);
}
@Override
public boolean doesGuiPauseGame() {
return false;
}
}

View File

@ -428,6 +428,7 @@ public class TileMappings {
put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec");
put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter");
put(TileEntityRadioTorchLogic.class, "tileentity_rtty_logic"); put(TileEntityRadioTorchLogic.class, "tileentity_rtty_logic");
put(TileEntityRadioTorchReader.class, "tileentity_rtty_reader");
put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); put(TileEntityRadioTelex.class, "tileentity_rtty_telex");
put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint");

View File

@ -157,6 +157,11 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i
} }
this.markDirty(); this.markDirty();
} }
if(this.burnTime > 0) {
this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 10F);
this.burnTime--;
}
} else { } else {
this.progress = 0; this.progress = 0;
@ -175,10 +180,6 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i
} }
this.isVenting = false; this.isVenting = false;
if(this.burnTime > 0) {
this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 10F);
this.burnTime--;
}
this.networkPackNT(50); this.networkPackNT(50);

View File

@ -21,7 +21,7 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
private FluidTank water; private FluidTank water;
private FluidTank steam; private FluidTank steam;
public int displayHeat; public int display;
public int heat; public int heat;
public HashSet<ChunkCoordinates> primary = new HashSet(); public HashSet<ChunkCoordinates> primary = new HashSet();
@ -41,10 +41,9 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y);
int process = heat / 50; int process = heat / 50;
this.display = process;
process = Math.min(process, water.getFill()); process = Math.min(process, water.getFill());
process = Math.min(process, (steam.getMaxFill() - steam.getFill()) / 100); process = Math.min(process, (steam.getMaxFill() - steam.getFill()) / 100);
this.displayHeat = this.heat;
if(process < 0) process = 0; if(process < 0) process = 0;
@ -124,14 +123,14 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
@Override @Override
public void serialize(ByteBuf buf) { public void serialize(ByteBuf buf) {
buf.writeInt(displayHeat); buf.writeInt(display);
water.serialize(buf); water.serialize(buf);
steam.serialize(buf); steam.serialize(buf);
} }
@Override @Override
public void deserialize(ByteBuf buf) { public void deserialize(ByteBuf buf) {
this.displayHeat = buf.readInt(); this.display = buf.readInt();
water.deserialize(buf); water.deserialize(buf);
steam.deserialize(buf); steam.deserialize(buf);
} }

View File

@ -86,7 +86,8 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
}; };
} else { } else {
return new DirPos[] { return new DirPos[] {
new DirPos(this.xCoord, this.yCoord + RBMKDials.getColumnHeight(worldObj) + 1, this.zCoord, Library.POS_Y) new DirPos(this.xCoord, this.yCoord + RBMKDials.getColumnHeight(worldObj) + 1, this.zCoord, Library.POS_Y),
new DirPos(this.xCoord, this.yCoord - 1, this.zCoord, Library.NEG_Y)
}; };
} }
} }

View File

@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.storage;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
import api.hbm.fluidmk2.FluidNode; import api.hbm.fluidmk2.FluidNode;
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
import api.hbm.redstoneoverradio.IRORValueProvider;
import java.util.HashSet; import java.util.HashSet;
@ -45,7 +46,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
public class TileEntityBarrel extends TileEntityMachineBase implements SimpleComponent, IFluidStandardTransceiverMK2, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent, IFluidCopiable { public class TileEntityBarrel extends TileEntityMachineBase implements SimpleComponent, IFluidStandardTransceiverMK2, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent, IFluidCopiable, IRORValueProvider {
protected FluidNode node; protected FluidNode node;
protected FluidType lastType; protected FluidType lastType;
@ -404,4 +405,21 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
} }
throw new NoSuchMethodException(); throw new NoSuchMethodException();
} }
@Override
public String[] getFunctionInfo() {
return new String[] {
PREFIX_VALUE + "type",
PREFIX_VALUE + "fill",
PREFIX_VALUE + "fillpercent",
};
}
@Override
public String provideRORValue(String name) {
if((PREFIX_VALUE + "type").equals(name)) return tank.getTankType().getName();
if((PREFIX_VALUE + "fill").equals(name)) return "" + tank.getFill();
if((PREFIX_VALUE + "fillpercent").equals(name)) return "" + (tank.getFill() * 100 / tank.getMaxFill());
return null;
}
} }

View File

@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.storage;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
import api.hbm.fluidmk2.FluidNode; import api.hbm.fluidmk2.FluidNode;
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
import api.hbm.redstoneoverradio.IRORValueProvider;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
@ -54,7 +55,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiverMK2, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable { public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiverMK2, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable, IRORValueProvider {
protected FluidNode node; protected FluidNode node;
protected FluidType lastType; protected FluidType lastType;
@ -547,4 +548,21 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
} }
throw new NoSuchMethodException(); throw new NoSuchMethodException();
} }
@Override
public String[] getFunctionInfo() {
return new String[] {
PREFIX_VALUE + "type",
PREFIX_VALUE + "fill",
PREFIX_VALUE + "fillpercent",
};
}
@Override
public String provideRORValue(String name) {
if("type".equals(name)) return tank.getTankType().getName();
if("fill".equals(name)) return "" + tank.getFill();
if("fillpercent".equals(name)) return "" + (tank.getFill() * 100 / tank.getMaxFill());
return null;
}
} }

View File

@ -94,30 +94,20 @@ public class TileEntityRadioTorchLogic extends TileEntityLoadedBase implements I
}; };
switch(conditions[index]) { switch(conditions[index]) {
default: default: return sig < map;
return sig < map; case 1: return sig <= map;
case 1: case 2: return sig >= map;
return sig <= map; case 3: return sig > map;
case 2: case 4: return sig == map;
return sig >= map; case 5: return sig != map;
case 3:
return sig > map;
case 4:
return sig == map;
case 5:
return sig != map;
} }
} }
switch(conditions[index]) { switch(conditions[index]) {
default: default: return signal.equals(mapping[index]);
return signal.equals(mapping[index]); case 7: return !signal.equals(mapping[index]);
case 7: case 8: return signal.contains(mapping[index]);
return !signal.equals(mapping[index]); case 9: return !signal.contains(mapping[index]);
case 8:
return signal.contains(mapping[index]);
case 9:
return !signal.contains(mapping[index]);
} }
} }

View File

@ -0,0 +1,106 @@
package com.hbm.tileentity.network;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.BufferUtil;
import com.hbm.util.Compat;
import api.hbm.redstoneoverradio.IRORValueProvider;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityRadioTorchReader extends TileEntityLoadedBase implements IControlReceiver {
public String[] channels = new String[8];
public String[] names = new String[8];
public String[] prev = new String[8];
public boolean polling = false;
public TileEntityRadioTorchReader() {
for(int i = 0; i < channels.length; i++) channels[i] = "";
for(int i = 0; i < names.length; i++) names[i] = "";
for(int i = 0; i < prev.length; i++) prev[i] = "";
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite();
TileEntity tile = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
if(tile instanceof IRORValueProvider) {
IRORValueProvider prov = (IRORValueProvider) tile;
for(int i = 0; i < 8; i++) {
String channel = channels[i];
String name = names[i];
String previous = prev[i];
if(channel == null || channel.isEmpty()) continue;
if(name == null || name.isEmpty()) continue;
String value = prov.provideRORValue(IRORValueProvider.PREFIX_VALUE + name);
if(value == null) continue; //don't actually do this
if(polling || !value.equals(previous)) {
RTTYSystem.broadcast(worldObj, channel, value);
this.prev[i] = value;
}
}
}
networkPackNT(50);
}
}
@Override
public void serialize(ByteBuf buf) {
buf.writeBoolean(this.polling);
for(int i = 0; i < channels.length; i++) BufferUtil.writeString(buf, channels[i]);
for(int i = 0; i < names.length; i++) BufferUtil.writeString(buf, names[i]);
}
@Override
public void deserialize(ByteBuf buf) {
this.polling = buf.readBoolean();
for(int i = 0; i < channels.length; i++) channels[i] = BufferUtil.readString(buf);
for(int i = 0; i < names.length; i++) names[i] = BufferUtil.readString(buf);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.polling = nbt.getBoolean("p");
for(int i = 0; i < channels.length; i++) channels[i] = nbt.getString("c" + i);
for(int i = 0; i < names.length; i++) names[i] = nbt.getString("n" + i);
for(int i = 0; i < prev.length; i++) prev[i] = nbt.getString("p" + i);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setBoolean("p", polling);
for(int i = 0; i < channels.length; i++) nbt.setString("c" + i, channels[i]);
for(int i = 0; i < names.length; i++) nbt.setString("n" + i, names[i]);
for(int i = 0; i < prev.length; i++) nbt.setString("p" + i, prev[i]);
}
@Override
public void receiveControl(NBTTagCompound data) {
if(data.hasKey("p")) this.polling = data.getBoolean("p");
for(int i = 0; i < channels.length; i++) if(data.hasKey("c" + i)) channels[i] = data.getString("c" + i);
for(int i = 0; i < names.length; i++) if(data.hasKey("n" + i)) names[i] = data.getString("n" + i);
this.markDirty();
}
@Override
public boolean hasPermission(EntityPlayer player) {
return player.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 16D;
}
}

View File

@ -343,122 +343,122 @@ book_lore.test.page.2=3
book_lore.test.page.3=4 book_lore.test.page.3=4
book_lore.test.page.4=5 book_lore.test.page.4=5
book_lore.book_iodine.name=Note book_lore.book_iodine.name=Заметка
book_lore.book_iodine.author=Dave book_lore.book_iodine.author=Дейв
book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: book_lore.book_iodine.page.0=Лады, вы не поверите, но старик Везэрвэйн наконец объявился через две недели после своего ухода и, что еще более впечатляюще, он раскололся на тему своих занятий в каньоне:
book_lore.book_iodine.page.1=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. book_lore.book_iodine.page.1=Похоже, дебилы из НИОКР обнаружили соединение, в основном неорганическое, очень схожее с токсином, но вникните: умирающие клетки воспроизводят и выделяют его во внешнюю среду, создавая чрезвычайно заразный аэрозоль.
book_lore.book_iodine.page.2=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d book_lore.book_iodine.page.2=Оно как вирус, но не вирус. Состав странный, его можно замешать в любой бутылке, но лишь в нужном порядке. Док сказал, что первый реактив это просто измельченные кристаллы иода, идущие в ячейку %d.
book_lore.book_phosphorous.name=Note book_lore.book_phosphorous.name=Заметка
book_lore.book_phosphorous.author=Dave book_lore.book_phosphorous.author=Дейв
book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second book_lore.book_phosphorous.page.0=Здаров, эт я опять. Я полагаю, вы получили мою последнюю записку, доку, кстати, это не понравилось. Буду краток, дурачьё с НИОКР снова ноют, скорее всего, из-за денег. Опять. Так или иначе, Док нашел второй
book_lore.book_phosphorous.page.1=ingredient is red phosphorous, whihc has to be mixed into slot %d book_lore.book_phosphorous.page.1=реагент. Это красный фосфор, его надо поставить в ячейку %d.
book_lore.book_dust.name=Note book_lore.book_dust.name=Заметка
book_lore.book_dust.author=Dave book_lore.book_dust.author=Дейв
book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not book_lore.book_dust.page.0=Док был в ярости когда обнаружил, что придурки из НИОКР сохранили единственный образец, разглагольствуя о грубой халатности и конце света. Я сказал ему остыть. Понимаю, довели до белого каления, но такое волнение вредно для сосудов,
book_lore.book_dust.page.1=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction "MKU" whatever that means, and that it contains actual household lint. can you believe that? one of the most book_lore.book_dust.page.1=хотя, конечно, крови в них осталось немного. Один из НИОКР-овских дятлов разместил ещё немного информации в циркуляре на последнюю неделю, они назвали свою миленькую смесь "MKU" что бы это ни значило, и она содержит бытовой мусор. Ты можешь в это поверить? Одно из самых
book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_dust.page.2=их опасных изобретений, и содержит пыль. Как ни странно, они также отметили, что она входит в ячейку %d.
book_lore.book_mercury.name=Note book_lore.book_mercury.name=Заметка
book_lore.book_mercury.author=Dave book_lore.book_mercury.author=Дейв
book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being book_lore.book_mercury.page.0=Ну, это отвечает на некоторые вопросы. Если не считать кровавой рвоты, токсикологическое заключение в основном напоминает отравление ртутью. Почему? Потому что наша милая смесь её содержит! Мне просто интересно, откуда это всё берется когда
book_lore.book_mercury.page.1=replicated by the body? whatever, the mercury goes into slot %d book_lore.book_mercury.page.1=реплицируется в теле? Неважно, ртуть отправляется в ячейку %d.
book_lore.book_flower.name=Note book_lore.book_flower.name=Заметка
book_lore.book_flower.author=Dave book_lore.book_flower.author=Дейв
book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, book_lore.book_flower.page.0=Помните, ещё в первой записке я отметил, что смесь по большей части неорганическая? Не догадаетесь, но старик поделился четвёртым ингредиентом: ипомея фиалковая, вид цветов. Утренний лик! Это может быть связано с низким содержанием сферы, но, в любом случае,
book_lore.book_flower.page.1=it does not work with other flowers. the morning glory goes into slot %d book_lore.book_flower.page.1=это не работает с другими цветами. Вьюнок отправляется в ячейку %d.
book_lore.book_syringe.name=Note book_lore.book_syringe.name=Заметка
book_lore.book_syringe.author=Dave book_lore.book_syringe.author=Дейв
book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal book_lore.book_syringe.page.0=Небольшое дополнение к пятому сообщению, очевидно, вам придётся хранить этот самый MKU в ёмкости. Полоумные из НИОКР использовали обычные металлические шприцы прямиком из больницы. Излишки посуды, я полагаю; бесполезные, они просто валяются тысячами повсюду. Металлический
book_lore.book_syringe.page.1=syringe goes into slot %d book_lore.book_syringe.page.1=шприц идёт в ячейку %d.
book_lore.resignation_note.name=Letter of Resignation book_lore.resignation_note.name=Заявление об отставке
book_lore.resignation_note.author=Kosma book_lore.resignation_note.author=Косма
book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and book_lore.resignation_note.page.0=Управление вновь сократило наш отдел. Эти идиоты могут обвинить в произошедшем только себя, я не знаю, чего они ожидали после такого фиаско. Кто, черт его дери, сливает информацию? Мы теряем миллионы, а
book_lore.resignation_note.page.1=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. book_lore.resignation_note.page.1=работы лишили МЕНЯ. МЕНЯ попросили уволиться. Я надеюсь вы, кретины, наконец извлечете урок из громады своих ошибок и возьмёте себя в руки.
book_lore.resignation_note.page.2=I'm not coming back on Friday. Just send the paycheck. book_lore.resignation_note.page.2=Я не приду в пятницу. Просто пришлите мне зарплату.
book_lore.memo_stocks.name=Intracorporate Memorandum book_lore.memo_stocks.name=Внутрикорпоративный меморандум
book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. book_lore.memo_stocks.page.0=Отношения с инвесторами - $ $ В цифрах последнего квартального отчёта наблюдаются вопиющие несоответствия. Для финансового отдела было бы благоразумно совершить некоторые корректировки, если они не хотят лишних проблем.
book_lore.memo_schrab_gsa.name=Internal Memorandum book_lore.memo_schrab_gsa.name=Внутренний меморандум
book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum book_lore.memo_schrab_gsa.page.0=Управление контрактами - $ $ Адвокаты совершили прорыв в отношениях с DLA. Они выбили нам план на 45 МИЛЛИАРДОВ от GSA на дальнейшее получение и исследование сарсплава. По текущим оценкам, это будет как минимум
book_lore.memo_schrab_gsa.page.1=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. book_lore.memo_schrab_gsa.page.1=40%%-я прибыль от сопутствующих процессов, не говоря уже о потенциальных новых контрактах. Ввиду конфиденциального характера доступ к фискальным документам будет ограничен.
book_lore.memo_schrab_rd.name=Internal Memorandum book_lore.memo_schrab_rd.name=Внутренний меморандум
book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. book_lore.memo_schrab_rd.page.0=НИОКР - $ $ Нашим основным способом производства сарсплава является его получение через ускоритель частиц. При этом затраты электроэнергии непомерно высоки по сравнению с выходом продукта.
book_lore.memo_schrab_rd.page.1=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely book_lore.memo_schrab_rd.page.1=Доктор Шрабауэр, однако, обнаружил новый физический процесс, названный "Странное колебание лептонов", которое значительно удешевляет производство. Посредством этого, не до конца изученного взаимодействия, электроны преобразуются в чрезвычайно
book_lore.memo_schrab_rd.page.2=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. book_lore.memo_schrab_rd.page.2=высокоэнергетические фотоны, будто бы с помощью магии. Это крайне экстремальное исключение из множества законов преобразования частиц, но предварительные эксперименты доказали, что по итогу протоны превращаются в верхние и нижние кварки, создавая сарсплав.
book_lore.memo_schrab_rd.page.3=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. book_lore.memo_schrab_rd.page.3=Как ни странно, прототип требует вольфрам, легированный небольшим количеством сарсплава. Кроме того, требуется особый конденсатор для подавления остатков положительного заряда.
book_lore.memo_schrab_nuke.name=Research Report book_lore.memo_schrab_nuke.name=Исследовательский отчёт
book_lore.memo_schrab_nuke.author=Doctor Schrabauer book_lore.memo_schrab_nuke.author=Доктор Шрабауэр
book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. book_lore.memo_schrab_nuke.page.0=Наше последнее исследование показало нам возможность влияния ядерных взрывов на материалы. Спасибо деньгам с гранта, мы *случайно* проверили нашу теорию прямого синтеза сарсплава из урана.
book_lore.memo_schrab_nuke.page.1=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned. book_lore.memo_schrab_nuke.page.1=Ранее только циклотрон создавал сарсплав по-настоящему. Однако, во время подземных исследований в Эвэрверпене были найдены мельчайшие следы сарсплава в урановой руде. Весь чистый металлический уран поблизости распался.
book_lore.memo_schrab_nuke.page.2=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually. book_lore.memo_schrab_nuke.page.2=Таким образом, при наличии достаточного количества урановой руды близ взрыва или даже грязной бомбы, богатой отходами, содержащими нестабильный материал, гипотетически можно создать достаточное количество сарсплава чтобы собирать его вручную.
book_lore.bf_bomb_1.name=Private Notes book_lore.bf_bomb_1.name=Личные заметки
book_lore.bf_bomb_1.author=M. Porter book_lore.bf_bomb_1.author=М. Портер
book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. book_lore.bf_bomb_1.page.0=Прошло немало времени, но мой перевод был одобрен. Оставим некомпетентность в стороне, но даже так, справиться с новыми выпускниками было непросто. $ Но не все новости так хороши эта лаборатория скрывала дальнейшие подробности, и мне не нужен был ещё больший хаос вокруг очередного магического открытия.
book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: book_lore.bf_bomb_1.page.1=Конечно, это случилось. У выпускников были свои сомнения (удивительно, учитывая, насколько они были лучезарны), но мой единственный... компетентный? коллега получил в свои руки брошюру из раздаточного материала. Похоже, у него больше связей, чем я думал. Его записка меня обескуражила:
book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, book_lore.bf_bomb_1.page.2=похоже, они получили ЕЩЁ ОДИН загадочный материал, который они произвели из некоей смеси антивещества и какого-то пограничного изотопа. Брошюра именует его "ВИХРЕВИК" чёрт меня подери, если б я ещё знал, что это. Неудивительно, что им понадобился физик-теоретик,
book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. book_lore.bf_bomb_1.page.3=они даже не знают, что это вообще такое. В любом случае, почти любая работа была бы лучше, чем моя старая должность, так что я не в праве жаловаться на недостаток конкретики.
book_lore.bf_bomb_2.name=Private Notes book_lore.bf_bomb_2.name=Личные заметки
book_lore.bf_bomb_2.author=M. Porter book_lore.bf_bomb_2.author=М. Портер
book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. book_lore.bf_bomb_2.page.0=Несмотря на отсутствие информации в брошюре, я всё ещё хранил надежду, что они знают больше. Но нет. Каждый второй старший научный сотрудник слепо верит в этот материал; их суждения было практически библейскими. Я почти потерял дар речи.
book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. book_lore.bf_bomb_2.page.1=При этом я даже не могу их винить. Вихревик не имеет никакого, вашу мать, смысла он совершенно ни похож ни на одно вещество, что я видел раньше. Его внешний вид почти ужасает: буквально масса кружащихся цветов, чья неоново-зелёная поверхность пронизана более тёмными линиями.
book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. book_lore.bf_bomb_2.page.2=Хуже того, эта штука является источником энергии. Наш образец нарушает АЛАРА: лаборатория была освобождена от персонала, когда его привезли, и единственный достаточно смелый сотрудник (некто др. Мелфин) надел защитный костюм А класса только чтобы пронести его 20 метров.
book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy book_lore.bf_bomb_2.page.3=Эмпирические данные тоже не радуют, потому что он нарушает первый закон термодинамики, излучая такое количество энергии. Присутствие этой штуки хоть немного рядом, даже когда вас разделяет метр свинца, ужасает. Мы выбежали из камеры сразу после завершения спектроскопии,
book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be book_lore.bf_bomb_2.page.4=при этом не узнав ничего нового. Эти идиоты из научной группы, Господи, они даже не глазом не повели. Находиться посреди этих "дискуссий" было ужасно; этот шарлатан, главный научный сотрудник, даже поделился слухами, будто бы запрет на испытания будет снят, будто бы мы будем
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. book_lore.bf_bomb_2.page.5=создавать бомбы из этой херни в ближайшие недели, кто в здравом уме будет над этим работать? Чёрт, один здравомыслящий ассистент (Эндрю) прозвал это "Жар-огнём" потому что сгореть заживо на погребальном костре по сравнению с этим было бы безопасно.
book_lore.bf_bomb_3.name=Private Notes book_lore.bf_bomb_3.name=Личные заметки
book_lore.bf_bomb_3.author=M. Porter book_lore.bf_bomb_3.author=М. Портер
book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze book_lore.bf_bomb_3.page.0=Мы с командой добились некоторых успехов. Особенно в плане работы с персоналом игнорирование особо верующих людей сделало работу гораздо пристойней. Мы до сих пор не имеем ни малейшего представления о реальных свойствах жар-огня (сложно анализировать
book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some book_lore.bf_bomb_3.page.1=образец, тупо сжигающий твоё оборудование), но его взаимодействие с другими материалами дало нам пищу для размышлений. Примечательно, что они синтезировали "газообразную" форму: из всего персонала, именно Эндрю сообщил мне, что это был коллоид из микроскопических частиц жар-огня, взвешенных в некоем
book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into book_lore.bf_bomb_3.page.2=инертном газе. Каждая частица окружена положительно заряженным 'пузырём' ионизированного газа, препятствующим ее осаждению. Кто бы мог подумать, что смертельное гамма-излучение может приносить пользу? Точно не я. $ Я предпочитаю не думать о том, что они превратили образец в
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. book_lore.bf_bomb_3.page.3=дисперсную смесь, но я не могу недооценить удобство этого газообразного жар-пламени экспериментировать с ним стало гораздо безопаснее. $ Говоря о безопасности, главный исследователь (в приступе бездумного пренебрежения) сделал открытие, которое чуть не стоило ему жизни.
book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through book_lore.bf_bomb_3.page.4=Он решил получить "грязнушку", позволив ячейке нашего нового коллоида напрямую взаимодействовать с какой-то очень дорогой антиматерией: в результате взрыва стол, на котором она стояла, превратился в кусок отбеленного радиацией шлака, прорезанный почти идеальной полусферой сквозь
book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... book_lore.bf_bomb_3.page.5=столешницу, также главный исследователь получил острую лучевую болезнь. Думаю, теперь мы знаем, как его взорвать, но, боже, некоторые люди...
book_lore.bf_bomb_4.name=Private Notes book_lore.bf_bomb_4.name=Личные заметки
book_lore.bf_bomb_4.author=M. Porter book_lore.bf_bomb_4.author=М. Портер
book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? book_lore.bf_bomb_4.page.0=Я просто не могу сбежать от своей старой работы. Это единственное место, где нанимают сотрудников, несмотря на всю эту проклятую суматоху, но я не собираюсь возвращаться в эту дыру. $ Они соблазнили меня только потому, что мне нужно уйти побыстрее. Помните тот договор об атмосферных испытаниях, из которого мы вышли неделю назад?
book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the book_lore.bf_bomb_4.page.1=Что ж, придурок, ответственный за лабораторию, наконец-то сделал что-то правильно. Беспорядок начался со шквалом присоединения новых “учёных”, необходимых, чтобы суметь превратить жар-пламя в оружие. Недостаток критического мышления, если честно, сбивает с толку Эндрю, благослови его Бог, спрыгнул с корабля
book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV book_lore.bf_bomb_4.page.2=вторым, как только грёбаный ПРОЕКТ БОМБЫ был представлен. Этот придурок Мелфин выглядел таким довольным со своим маленьким механизмом может, он подхватил мозговых червей, когда нёс образец? который включал в себя какую-то чепуху с использованием обычного, твёрдого жар-огня и высоковольтную
book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. book_lore.bf_bomb_4.page.3=батарейку. $ Похоже, форма важна для выхода энергии или способа активации или чего ещё, навроде урана против плутония в обычных ядерках, но конечным результатом является инициирующий удар, вызывающий взрыв. Я нахожу это весёлым, даже уморительным.
book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. book_lore.bf_bomb_4.page.4=Все они придают большое значение активации; при этом игнорируя реальный механизм всего процесса, потому что не имеют ни малейшего понятия, как это работает! На данный момент оно может работать хоть от магии, а они пытаются скомкать это - просто ради очередных орудий войны.
book_lore.bf_bomb_5.name=Private Notes book_lore.bf_bomb_5.name=Личные заметки
book_lore.bf_bomb_5.author=M. Porter book_lore.bf_bomb_5.author=М. Портер
book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. book_lore.bf_bomb_5.page.0=Я просто... не могу с этим справиться, даже спустя несколько дней. На самом деле, это было предрешено, учитывая, насколько легкомысленно научная группа относилась к безопасности. $ $ Доктор Мелфин, старший научный сотрудник, сгинул. Вероятно, мёртв. Я видел, как это произошло, собственными глазами, в испытательной камере.
book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, book_lore.bf_bomb_5.page.1=Мы только что получили еще одну порцию чистого жар-огня, а он нашел необходимое электрооборудование и источник энергии, чтобы проверить свое предположение. Я не знаю, что стало причиной (было ли запущено оборудование? Он начал слишком рано?), но оно свершилось мучительно медленно,
book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe book_lore.bf_bomb_5.page.2=когда зеленый свет поглотил стол, батарею и доктора Мелфина, стоящего всего в метре от него. Даже когда стол превратился в лужу кипящего металла на полу, он не загорелся. Я не знаю, что я увидел в его глазах... $$ Ужас или трепет,
book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! book_lore.bf_bomb_5.page.3=может из-за того, что он ещё жив? Чем бы ни был наш "чудо" материал, его это не волновало. В следующий момент он исчез в яркой вспышке света. Он испарился? сгорел? аннигилирован? Отошлите меня хоть в грёбаный ад, я больше ничего не знаю!
book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother book_lore.bf_bomb_5.page.4=Меня тошнит от главного исследователя. Он звиздел, что мы могли бы быть более осторожными, продолжать просто кружить вокруг, какую-то ещё подымающую мораль чепуху. Этот тупой урод никогда не поймет, что играя с огнем, можно обжечься. $ Я не стал заморачиваться с
book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. book_lore.bf_bomb_5.page.5=увольнением, просто забрал свои шмотки и побежал к холмам. В любом случае, неважно; учитывая отсутствие звонков и грибовидное облако, поднявшееся над моим (теперь уже бывшим) местом работы, они взорвали всё либо перешли в полное распоряжение военных.
book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! book_lore.bf_bomb_5.page.6=Есть важное различие между диссекцией и ВИВИСЕКЦИЕЙ, что они явно упустили из виду. Они могут рассекать металлы или атомы сколько угодно, но вторгаться внутрь, вивисекцировать саму реальность это значит лишь порождать новых докторов Мелфинов. Кто знает!
book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back book_lore.bf_bomb_5.page.7=В конце-концов, правительство стремится превратить эту херню в бомбы, может, мы увидим ещё пару войн, ещё пару миллионов людей, встретивших судьбу хуже смерти. Они не могут прятать это вечно. $ $ Меня это не волнует. Теперь не волнует. Боже, пожалуйста, позволь мне вернуться
book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... book_lore.bf_bomb_5.page.8=к настоящей науке. $ $ Черт возьми, Мэй, возьми себя в руки...
book_lore.beacon.name=Signal Beacon Instruction Booklet book_lore.beacon.name=Инструкция по эксплуатированию сигнального маяка
book_lore.beacon.author=Flim Flam Industries book_lore.beacon.author=ФлимФлэм Индастриз
book_lore.beacon.page.0=Thank you for your purchase of a Mk.2 Illuminated Signal Beacon (rev. 1.3)! This small booklet will provide a short introduction in the operation of the beacon, as well as its inner workings. book_lore.beacon.page.0=Благодарим вас за покупку светового сигнального маяка мод.2 (версия 1.3)! Этот небольшой буклет содержит краткое введение в работу маяка и его внутреннюю работу.
book_lore.beacon.page.1=Chapter 1: Architecture $ Each unit is composed of four main parts: The control circuit, a lantern, a fog horn and the casing which houses the other parts. For a detailed explanation of the main circuit, please book_lore.beacon.page.1=Глава 1: Архитектура $ Каждый блок состоит из четырех основных частей: управляющей микросхемы, фонаря, противотуманной сирены и корпуса, в котором расположены остальные части. Для подробного объяснения, пожалуйста,
book_lore.beacon.page.2=refer to the circuit diagram found on the inside of the maintenance lid of the casing. The lantern is made up of a polycarbonate case containing a dual-color 250 Watt halogen bulb with a standard 200mm socket, replacements book_lore.beacon.page.2=обратитесь к принципиальной схеме, расположенной на внутренней стороне крышки для обслуживания корпуса. Фонарь состоит из поликарбонатного корпуса, содержащего двуцветную галогеновую лампу мощностью 250Вт со стандартным 200мм разъёмом, запасные части
book_lore.beacon.page.3=for the bulb can be ordered from our stores. Third party bulbs are not recommended, as we cannot ensure safe operation. The case is made from a specialized zinc-coated stainless steel and is resistant to weathering. book_lore.beacon.page.3=для лампы могут быть заказаны из наших магазинов. Не рекомендуется использовать лампы сторонних производителей, поскольку мы не можем гарантировать безопасную работу. Корпус изготовлен из специальной оцинкованной нержавеющей стали и устойчив к атмосферным воздействиям.
book_lore.beacon.page.4=Chapter 2: Lantern $ The lantern's primary uses are providing light for ease of maintenance in harsh weather conditions as well as a status indicator. Should the power-on self test (POST) fail, the lantern will book_lore.beacon.page.4=Глава 2: Фонарь $ Основное назначение фонаря — освещение для облегчения обслуживания в суровых погодных условиях, а также информирование о состоянии устройства. Если Power-On Self-Test (POST) не пройден, фонарь будет светиться
book_lore.beacon.page.5=light up red, otherwise it will light up green. Note that colors can vary depending on the replacement bulb. book_lore.beacon.page.5=красным, в иных случаях зелёным. Обратите внимание, что цвета могут различаться в зависимости от типа сменной лампы.
book_lore.beacon.page.6=Chapter 3: Fog Horn $ The fog horn is the primary communication device of the beacon. The beacon is designed for peer-to-peer (P2P) commincation as well as for message boradcasting. book_lore.beacon.page.6=Глава 3: Туманный звуковой сигнал $ Туманный звуковой сигнал является основным устройством связи маяка. Маяк предназначен для peer-to-peer (P2P) связи, а также для широкого вещания.
book_lore.beacon.page.7=Chapter 4: Peer-to-Peer $ For details on communication, refer to the communications handbook. A short rundown of establishing a P2P connection follows: First, the beacon has to give the "START CONNECTION" signal, book_lore.beacon.page.7=Глава 4: Peer-to-peer $ Подробную информацию о связи см. в руководстве по связи. Ниже приводится краткое описание установки P2P-соединения: во-первых, маяк должен подать сигнал «НАЧАТЬ СОЕДИНЕНИЕ»,
book_lore.beacon.page.8=being a single long tone. All available peers should respond with a single long tone as well (order specified by proximity, as well as the communication guidelines outlined in the handbook, section "Responding to a Connection") book_lore.beacon.page.8=являющийся одним длинным звуком. Все доступные узлы также должны ответить одним длинным однотонным сигналом (порядок определяется близостью, а также правилами связи, изложенными в руководстве, раздел «Ответ на соединение»)
book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respon with two long tones. All communication afterwards has to happen using pre-negotiated signals, book_lore.beacon.page.9=Как только желаемый партнер ответил, подайте сигнал «ПРИНЯТЬ СОЕДИНЕНИЕ» в виде двух длинных тонов, затем партнер также ответит двумя длинными тонами. Вся последующая коммуникация должна происходить с использованием заранее согласованных сигналов, чаще всего
book_lore.beacon.page.10=most commonly using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION". book_lore.beacon.page.10=по стандарту ФАР-5М. Связь прекратится немедленно, если не будет согласован ни один стандарт, что будет служить «пингом». Если связь продолжается, соединение можно завершить, используя еще один длинный тональный сигнал «ЗАВЕРШИТЬ СОЕДИНЕНИЕ».
book_lore.beacon.page.11=Chapter 5: Warranty $ [ page intentionally left blank ] book_lore.beacon.page.11=Глава 5: Гарантия $ [страница намеренно оставлена ​​пустой]
cannery.f1=[ Нажмите f1 для справки ] cannery.f1=[ Нажмите f1 для справки ]
@ -479,7 +479,7 @@ cannery.crucible.4=Буфер слева предназначен для §aпо
cannery.crucible.5=Если рецепт установлен, материалы, не совпадающие с рецептом, также будут храниться здесь. cannery.crucible.5=Если рецепт установлен, материалы, не совпадающие с рецептом, также будут храниться здесь.
cannery.crucible.6=Материалы в этом буфере не взаимодействуют друг с другом, они могут быть только выведены через зелёный выход для отливки. cannery.crucible.6=Материалы в этом буфере не взаимодействуют друг с другом, они могут быть только выведены через зелёный выход для отливки.
cannery.crucible.7=Буфер справа предназначен для §cрецептов§r, если рецепт установлен и этот конкретный материал соответствует выходу рецепта, он окажется здесь. cannery.crucible.7=Буфер справа предназначен для §cрецептов§r, если рецепт установлен и этот конкретный материал соответствует выходу рецепта, он окажется здесь.
cannery.crucible.8=Материалы будут медленно смешиваться в выходной материал, который автоматически выльется из красного спуска. cannery.crucible.8=Материалы будут медленно смешиваться, результат автоматически выльется из красного спуска.
cannery.crucible.9=Обратите внимание, что только этот буфер поддерживает создание рецептов. Если шаблон был установлен после расплавления предметов, материалы в буфере для побочки не смешаются или не переместятся в буфер рецептов. cannery.crucible.9=Обратите внимание, что только этот буфер поддерживает создание рецептов. Если шаблон был установлен после расплавления предметов, материалы в буфере для побочки не смешаются или не переместятся в буфер рецептов.
cannery.crucible.10=Спуск будет выливать материал автоматически, если есть куда, например, литейный канал или форма. cannery.crucible.10=Спуск будет выливать материал автоматически, если есть куда, например, литейный канал или форма.
cannery.crucible.11=Как и с другими литейными блоками, можно использовать лопату для очистки плавильни от материалов. cannery.crucible.11=Как и с другими литейными блоками, можно использовать лопату для очистки плавильни от материалов.
@ -682,6 +682,7 @@ commands.satellite.satellite_descended=Спутник успешно удалё
commands.satellite.satellite_orbited=Спутник запущен. commands.satellite.satellite_orbited=Спутник запущен.
commands.satellite.should_be_run_as_player=Команда должна быть выполнена игроком! commands.satellite.should_be_run_as_player=Команда должна быть выполнена игроком!
container.ammoBag=Патроны
container.amsBase=Основание АМС [Декор] container.amsBase=Основание АМС [Декор]
container.amsEmitter=Излучатель АМС [Декор] container.amsEmitter=Излучатель АМС [Декор]
container.amsLimiter=Стабилизатор АМС [Декор] container.amsLimiter=Стабилизатор АМС [Декор]
@ -1234,7 +1235,7 @@ gun.make.CUBE=Куб 2: Sauerbraten
gun.make.DRG=Deep Rock Galactic gun.make.DRG=Deep Rock Galactic
gun.make.ENZINGER=Энзингер Юнион gun.make.ENZINGER=Энзингер Юнион
gun.make.EQUESTRIA=Equestria Missile Systems gun.make.EQUESTRIA=Equestria Missile Systems
gun.make.FLIMFLAM=ФлимФлэм Индастрис gun.make.FLIMFLAM=ФлимФлэм Индастриз
gun.make.F_STRONG=Форт Стронг gun.make.F_STRONG=Форт Стронг
gun.make.GLORIA=Gloria GmbH gun.make.GLORIA=Gloria GmbH
gun.make.HASBRO=Хасбро gun.make.HASBRO=Хасбро
@ -1852,6 +1853,7 @@ item.ammo_arty_mustard_gas.name=16-дюймовый артиллерийский
item.ammo_arty_nuke.name=Ядерный 16-дюймовый артиллерийский снаряд item.ammo_arty_nuke.name=Ядерный 16-дюймовый артиллерийский снаряд
item.ammo_arty_phosgene.name=Фосгеновый 16-дюймовый артиллерийский снаряд item.ammo_arty_phosgene.name=Фосгеновый 16-дюймовый артиллерийский снаряд
item.ammo_arty_phosphorus.name=Фосфорный 16-дюймовый артиллерийский снаряд item.ammo_arty_phosphorus.name=Фосфорный 16-дюймовый артиллерийский снаряд
item.ammo_bag.name=Сумка для боеприпасов
item.ammo_arty_phosphorus_multi.name=Фосфорный 16-дюймовый мульти-снаряд item.ammo_arty_phosphorus_multi.name=Фосфорный 16-дюймовый мульти-снаряд
item.ammo_cell.name=Энерго-патроны item.ammo_cell.name=Энерго-патроны
item.ammo_coilgun.name=Вольфрамовый шар для гаусс-пушки item.ammo_coilgun.name=Вольфрамовый шар для гаусс-пушки
@ -2699,7 +2701,7 @@ item.crayon.purple.name=Фиолетовый мелок
item.crayon.red.name=Красный мелок item.crayon.red.name=Красный мелок
item.crayon.silver.name=Светло-серый мелок item.crayon.silver.name=Светло-серый мелок
item.crayon.white.name=Белый мелок item.crayon.white.name=Белый мелок
item.crayon.yellow.name=Желтый мелок item.crayon.yellow.name=Жёлтый мелок
item.crowbar.name=Mk.V Устройство Для Вскрытия Ящиков "Лом" item.crowbar.name=Mk.V Устройство Для Вскрытия Ящиков "Лом"
item.crucible.name="Горнило Палача" item.crucible.name="Горнило Палача"
item.crucible_template.name=Шаблон плавильни: item.crucible_template.name=Шаблон плавильни:
@ -3027,7 +3029,8 @@ item.glyphid_gland.name= Железа глифида:
item.glyphid_gland_empty.name= Железа глифида item.glyphid_gland_empty.name= Железа глифида
item.gun_aberrator.name=Аберратор item.gun_aberrator.name=Аберратор
item.gun_aberrator_eott.name=Глаза бури item.gun_aberrator_eott.name=Глаза бури
item.gun_am180.name=Пистолет-пулемёт с глушителем item.gun_am180.name=Пистолет-пулемёт .22 LR
item.gun_am180_silenced.name=Пистолет-пулемёт .22 LR с глушителем
item.gun_ar15.name="Джош" item.gun_ar15.name="Джош"
item.gun_autoshotgun.name=Барабанный дробовик item.gun_autoshotgun.name=Барабанный дробовик
item.gun_autoshotgun_sexy.name=Секси item.gun_autoshotgun_sexy.name=Секси
@ -3063,7 +3066,7 @@ item.gun_defabricator.name=Дефабрикатор
item.gun_defabricator_ammo.name=Энергетические ячейки Дефабрикатора item.gun_defabricator_ammo.name=Энергетические ячейки Дефабрикатора
item.gun_detonator.name=Лазерный детонатор item.gun_detonator.name=Лазерный детонатор
item.gun_double_barrel.name=Старая классика item.gun_double_barrel.name=Старая классика
item.gun_double_barrel_sacred_dragon.name=Испуганный дракон item.gun_double_barrel_sacred_dragon.name=Священный дракон
item.gun_emp.name=ЭМИ-пушка item.gun_emp.name=ЭМИ-пушка
item.gun_emp_ammo.name=Энергетическая ячейка item.gun_emp_ammo.name=Энергетическая ячейка
item.gun_euthanasia.name=Эвтаназия item.gun_euthanasia.name=Эвтаназия
@ -3071,15 +3074,16 @@ item.gun_euthanasia_ammo.name=Шприцы
item.gun_fatman.name=М42 Атомная катапульта "Толстяк" item.gun_fatman.name=М42 Атомная катапульта "Толстяк"
item.gun_fatman_ammo.name=Ядерный минизаряд (LEGACY) item.gun_fatman_ammo.name=Ядерный минизаряд (LEGACY)
item.gun_fireext.name=Огнетушитель item.gun_fireext.name=Огнетушитель
item.gun_flamer.name=Мистер Топаз item.gun_flamer.name=Огнемёт
item.gun_flamer_daybreaker.name=Дейбрейкер item.gun_flamer_daybreaker.name=Дейбрейкер
item.gun_flamer_topaz.name=Мистер Топа item.gun_flamer_topaz.name=Мистер Топаз
item.gun_flaregun.name=Сигнальный пистолет item.gun_flaregun.name=Сигнальный пистолет
item.gun_flechette.name=Игольчатая винтовка item.gun_flechette.name=Игольчатая винтовка
item.gun_folly.name=Прототип Дигамма "Причуда" item.gun_folly.name=Прототип Дигамма "Причуда"
item.gun_g3.name=Штурмовая винтовка item.gun_g3.name=Штурмовая винтовка
item.gun_g3_a3.name=G3A3 item.gun_g3_a3.name=G3A3
item.gun_g3_infiltrator.name=Infiltrator item.gun_g3_infiltrator.name=Infiltrator
item.gun_g3_zebra.name=Зебра
item.gun_glass_cannon.name=Стеклянная пушка item.gun_glass_cannon.name=Стеклянная пушка
item.gun_greasegun.name=Маслёнка item.gun_greasegun.name=Маслёнка
item.gun_greasegun_m3.name=M3 item.gun_greasegun_m3.name=M3
@ -3089,7 +3093,7 @@ item.gun_heavy_revolver_lilmac.name=Малый Макинтош
item.gun_heavy_revolver_protege.name=Протèже item.gun_heavy_revolver_protege.name=Протèже
item.gun_heavy_revolver_scoped.name=.44 Magnum с прицелом item.gun_heavy_revolver_scoped.name=.44 Magnum с прицелом
item.gun_henry.name=Винтовка рычажного действия item.gun_henry.name=Винтовка рычажного действия
item.gun_henry_lincoln.name=Lincoln's Repeater item.gun_henry_lincoln.name=Винтовка Линкольна
item.gun_hk69.name=Гранатомет item.gun_hk69.name=Гранатомет
item.gun_hp.name=HPP Лазерджет item.gun_hp.name=HPP Лазерджет
item.gun_hp_ammo.name=Чернильный картридж item.gun_hp_ammo.name=Чернильный картридж
@ -3104,6 +3108,9 @@ item.gun_ks23.name=Сэмюэль Большой Дробовик
item.gun_lacunae.name=CZ33 “Абаддон” item.gun_lacunae.name=CZ33 “Абаддон”
item.gun_lacunae_ammo.name=5-мм патрон (LEGACY) item.gun_lacunae_ammo.name=5-мм патрон (LEGACY)
item.gun_lag.name=Комически длинный пистолет item.gun_lag.name=Комически длинный пистолет
item.gun_laser_pistol.name=Лазерный пистолет
item.gun_laser_pistol_morning_glory.name=Морнин Глори
item.gun_laser_pistol_pew_pew.name=Пиу Пиу
item.gun_lasrifle.name=Лазерная винтовка item.gun_lasrifle.name=Лазерная винтовка
item.gun_lever_action.name=«Нога кобылы» (Оригинал) item.gun_lever_action.name=«Нога кобылы» (Оригинал)
item.gun_lever_action_ammo.name=Дробь 12x74 калибра (LEGACY) item.gun_lever_action_ammo.name=Дробь 12x74 калибра (LEGACY)
@ -3113,11 +3120,11 @@ item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r
item.gun_liberator.name=Либератор item.gun_liberator.name=Либератор
item.gun_light_revolver.name=Револьвер переломного действия item.gun_light_revolver.name=Револьвер переломного действия
item.gun_light_revolver_atlas.name=Атлас item.gun_light_revolver_atlas.name=Атлас
item.gun_light_revolver_dani.name=День и ночь item.gun_light_revolver_dani.name=День и Ночь
item.gun_lunatic_marksman.name=Lunatic Marksman Rifle (BETA) item.gun_lunatic_marksman.name=Lunatic Marksman Rifle (BETA)
item.gun_m2.name=Ma Deuce item.gun_m2.name=Ma Deuce
item.gun_maresleg.name=Дробовик рычажного действия item.gun_maresleg.name=Дробовик рычажного действия
item.gun_maresleg_akimbo.name=L=Дробовики рычажного действия item.gun_maresleg_akimbo.name=Дробовики рычажного действия
item.gun_maresleg_broken.name=Broken item.gun_maresleg_broken.name=Broken
item.gun_maresleg_short.name=Нога кобылы item.gun_maresleg_short.name=Нога кобылы
item.gun_mas36.name=Южная Звезда item.gun_mas36.name=Южная Звезда
@ -3185,7 +3192,7 @@ item.gun_uboinik.name=Убойник
item.gun_uboinik_ammo.name=Дробь 12x70 калибра (LEGACY) item.gun_uboinik_ammo.name=Дробь 12x70 калибра (LEGACY)
item.gun_uzi.name=IMI Узи item.gun_uzi.name=IMI Узи
item.gun_uzi_richter.name=Richter item.gun_uzi_richter.name=Richter
item.gun_uzi_akimbo.name=Узишки item.gun_uzi_akimbo.name=Акимбо Узи
item.gun_uzi_ammo.name=Патроны кал. 22LR (LEGACY) item.gun_uzi_ammo.name=Патроны кал. 22LR (LEGACY)
item.gun_uzi_saturnite.name=Сатурнитовый Узи item.gun_uzi_saturnite.name=Сатурнитовый Узи
item.gun_uzi_saturnite_silencer.name=Сатурнитовый Узи с глушителем item.gun_uzi_saturnite_silencer.name=Сатурнитовый Узи с глушителем
@ -3265,7 +3272,7 @@ item.ingot_asbestos.desc=§o"Наполненный жизнью, неувере
item.ingot_au198.name=Слиток золота-198 item.ingot_au198.name=Слиток золота-198
item.ingot_australium.name=Австралиевый слиток item.ingot_australium.name=Австралиевый слиток
item.ingot_bakelite.name=Бакелит item.ingot_bakelite.name=Бакелит
item.ingot_beryllium.name=Бериллевый слиток item.ingot_beryllium.name=Бериллиевый слиток
item.ingot_biorubber.name=Брусок латекса item.ingot_biorubber.name=Брусок латекса
item.ingot_bismuth.name=Слиток висмута item.ingot_bismuth.name=Слиток висмута
item.ingot_bismuth_bronze.name=Слиток висмутовой бронзы item.ingot_bismuth_bronze.name=Слиток висмутовой бронзы
@ -3285,7 +3292,7 @@ item.ingot_copper.name=Слиток промышленной меди
item.ingot_daffergon.name=Даффергоновый слиток item.ingot_daffergon.name=Даффергоновый слиток
item.ingot_desh.name=Слиток деш item.ingot_desh.name=Слиток деш
item.ingot_dineutronium.name=Динейтрониевый слиток item.ingot_dineutronium.name=Динейтрониевый слиток
item.ingot_dura_steel.name=Высокоскоростная сталь item.ingot_dura_steel.name=Слиток высокоскоростной стали
item.ingot_electronium.name=Электрониевый слиток item.ingot_electronium.name=Электрониевый слиток
item.ingot_euphemium.name=Эвфемиевый слиток item.ingot_euphemium.name=Эвфемиевый слиток
item.ingot_euphemium.desc=Совершенно особый и в то же время странный элемент. item.ingot_euphemium.desc=Совершенно особый и в то же время странный элемент.
@ -3302,8 +3309,17 @@ item.ingot_lanthanium.name=Полустабильный слиток ланта
item.ingot_lanthanium.desc='Лантанум' item.ingot_lanthanium.desc='Лантанум'
item.ingot_lanthanium.desc.P11=Вообще лантанум, но ладно. item.ingot_lanthanium.desc.P11=Вообще лантанум, но ладно.
item.ingot_lead.name=Свинцовый слиток item.ingot_lead.name=Свинцовый слиток
item.ingot_les.name=Низкообогащенный слиток шрабидиевого топлива item.ingot_les.name=Слиток низкообогащенного шрабидиевого топлива
item.ingot_magnetized_tungsten.name=Намагниченный слиток вольфрама item.ingot_magnetized_tungsten.name=Слиток намагниченного вольфрама
item.ingot_metal.name=Металлический слиток
item.ingot_metal.bar.name=Металлический кусок
item.ingot_metal.beacon.name=Radio Homing Beacon
item.ingot_metal.casing.name=Металлическая оболочка
item.ingot_metal.clockwork.name=Заводной механизм
item.ingot_metal.counter.name=Счётчик
item.ingot_metal.detector.name=Детектор
item.ingot_metal.ingot.name=Металлический слиток
item.ingot_metal.key.name=Металлический ключ
item.ingot_meteorite.name=Метеоритовый слиток item.ingot_meteorite.name=Метеоритовый слиток
item.ingot_meteorite_forged.name=Выкованный метеоритовый слиток item.ingot_meteorite_forged.name=Выкованный метеоритовый слиток
item.ingot_mox_fuel.name=Слиток МОКС-топлива item.ingot_mox_fuel.name=Слиток МОКС-топлива
@ -3329,7 +3345,7 @@ item.ingot_pu240.name=Слиток плутония-240
item.ingot_pu241.name=Слиток плутония-241 item.ingot_pu241.name=Слиток плутония-241
item.ingot_pvc.name=ПВХ item.ingot_pvc.name=ПВХ
item.ingot_ra226.name=Слиток радия-226 item.ingot_ra226.name=Слиток радия-226
item.ingot_raw.name=%s Ingot item.ingot_raw.name=Слиткок (%s)
item.ingot_red_copper.name=Слиток красной меди item.ingot_red_copper.name=Слиток красной меди
item.ingot_reiium.name=Реиевый слиток item.ingot_reiium.name=Реиевый слиток
item.ingot_rubber.name=Резина item.ingot_rubber.name=Резина
@ -3384,6 +3400,7 @@ item.insert_yharonite.name=Яронитовая пластина
item.item_secret.aberrator.name=Часть Аберратора item.item_secret.aberrator.name=Часть Аберратора
item.item_secret.canister.name=Композит SB-26 item.item_secret.canister.name=Композит SB-26
item.item_secret.controller.name=Проприетарный блок управления item.item_secret.controller.name=Проприетарный блок управления
item.item_secret.folly.name=Фрагмент Причуды
item.item_secret.selenium_steel.name=Слиток селениевой стали item.item_secret.selenium_steel.name=Слиток селениевой стали
item.iv_blood.name=Пакет с кровью item.iv_blood.name=Пакет с кровью
item.iv_empty.name=Пакет для внутривенного введения item.iv_empty.name=Пакет для внутривенного введения
@ -3534,7 +3551,7 @@ item.missile_volcano.name=Тектоническая ракета
item.missile_volcano.desc=Используя силу ядерной взрывчатки, мы можем вызвать вулкан! item.missile_volcano.desc=Используя силу ядерной взрывчатки, мы можем вызвать вулкан!
item.mold_base.name=Пустая литейная форма item.mold_base.name=Пустая литейная форма
item.mold.name=Литейная форма item.mold.name=Литейная форма
item.morning_glory.name=Монин Глори item.morning_glory.name=Фиалковый вьюнок
item.motor.name=Мотор item.motor.name=Мотор
item.motor_bismuth.name=Висмутовый мотор item.motor_bismuth.name=Висмутовый мотор
item.motor_desh.name=Деш-мотор item.motor_desh.name=Деш-мотор
@ -3866,8 +3883,8 @@ item.part_grip.name=Рукоятка (%s)
item.part_lithium.name=Коробка литиевой пыли item.part_lithium.name=Коробка литиевой пыли
item.part_mechanism.name=Оружейный механизм (%s) item.part_mechanism.name=Оружейный механизм (%s)
item.part_plutonium.name=Коробка плутониевой пыли item.part_plutonium.name=Коробка плутониевой пыли
item.part_receiver_heavy.name=Тяжелая ствольная коробка (%s) item.part_receiver_heavy.name=Тяжёлый ресивер (%s)
item.part_receiver_light.name=Лёгкая ствольная коробка (%s) item.part_receiver_light.name=Лёгкий ресивер(%s)
item.part_stock.name=Приклад (%s) item.part_stock.name=Приклад (%s)
item.particle_aelectron.name=Капсула с Позитроном item.particle_aelectron.name=Капсула с Позитроном
item.particle_amat.name=Капсула с Антиматерией item.particle_amat.name=Капсула с Антиматерией
@ -4666,6 +4683,10 @@ item.t45_kit.name=Комплект силовой брони T45
item.t45_legs.name=Поножи силовой брони T45 item.t45_legs.name=Поножи силовой брони T45
item.t45_plate.name=Нагрудник силовой брони T45 item.t45_plate.name=Нагрудник силовой брони T45
item.tank_steel.name=Стальной бак item.tank_steel.name=Стальной бак
item.taurun_boots.name=Taurun Boots
item.taurun_helmet.name=Taurun Helmet
item.taurun_legs.name=Taurun Leggings
item.taurun_plate.name=Taurun Chestplate
item.tank_waste_0.name=Контейнер с отходами item.tank_waste_0.name=Контейнер с отходами
item.tank_waste_1.name=Контейнер с отходами item.tank_waste_1.name=Контейнер с отходами
item.tank_waste_2.name=Контейнер с отходами item.tank_waste_2.name=Контейнер с отходами
@ -4867,7 +4888,7 @@ item.weapon_mod_special.bayonet.name=Штык
item.weapon_mod_special.choke.name=Чок item.weapon_mod_special.choke.name=Чок
item.weapon_mod_special.furniture_black.name=Полимерная оснастка (Чёрный) item.weapon_mod_special.furniture_black.name=Полимерная оснастка (Чёрный)
item.weapon_mod_special.furniture_green.name=Полимерная оснастка (Зелёный) item.weapon_mod_special.furniture_green.name=Полимерная оснастка (Зелёный)
item.weapon_mod_special.greasegun.name=Набор модернизации для Grease Gun item.weapon_mod_special.greasegun.name=Набор модернизации для Маслёнки
item.weapon_mod_special.las_auto.name=Автоматический ресивер лазерной винтовки item.weapon_mod_special.las_auto.name=Автоматический ресивер лазерной винтовки
item.weapon_mod_special.las_capacitor.name=Расширенный конденсатор лазерной винтовки item.weapon_mod_special.las_capacitor.name=Расширенный конденсатор лазерной винтовки
item.weapon_mod_special.las_shotgun.name=Разделитель луча лазерной винтовки item.weapon_mod_special.las_shotgun.name=Разделитель луча лазерной винтовки
@ -4878,7 +4899,7 @@ item.weapon_mod_special.skin_saturnite.name=Сатурнитовый корпу
item.weapon_mod_special.slowdown.name=Зубчатая передача item.weapon_mod_special.slowdown.name=Зубчатая передача
item.weapon_mod_special.speedloader.name=Спидлоадер item.weapon_mod_special.speedloader.name=Спидлоадер
item.weapon_mod_special.speedup.name=Вспомогательный элекртрический двигатель item.weapon_mod_special.speedup.name=Вспомогательный элекртрический двигатель
item.weapon_mod_special.stack_mag.name=Double-Stacked Magazine item.weapon_mod_special.stack_mag.name=Двухрядный магазин
item.weapon_mod_test.damage.name=УЛУЧШЕНИЕ УРОНА item.weapon_mod_test.damage.name=УЛУЧШЕНИЕ УРОНА
item.weapon_mod_test.firerate.name=УЛУЧШЕНИЕ СКОРОСТИ СТРЕЛЬБЫ item.weapon_mod_test.firerate.name=УЛУЧШЕНИЕ СКОРОСТИ СТРЕЛЬБЫ
item.weapon_mod_test.multi.name=УЛУЧШЕНИЕ "МУЛЬТИ-ВЫСТРЕЛ" item.weapon_mod_test.multi.name=УЛУЧШЕНИЕ "МУЛЬТИ-ВЫСТРЕЛ"
@ -5037,8 +5058,8 @@ shape.ingot=Слиток
shape.nugget=Самородок shape.nugget=Самородок
shape.quantum=Кванта shape.quantum=Кванта
shape.quart=Четверть блока shape.quart=Четверть блока
shape.receiverHeavy=Тяжелая ствольная коробка shape.receiverHeavy=Тяжёлый ресивер
shape.receiverLight=Лёгкая ствольная коробка shape.receiverLight=Лёгкий ресивер
shape.ntmpipe=Труба shape.ntmpipe=Труба
shape.plate=Пластина shape.plate=Пластина
shape.plateTriple=Литая пластина shape.plateTriple=Литая пластина
@ -5221,26 +5242,26 @@ tile.bomber.name=Разбившийся бомбардировщик
tile.book_guide.name=Книга знаний tile.book_guide.name=Книга знаний
tile.boxcar.name=Грузовой вагон tile.boxcar.name=Грузовой вагон
tile.brick_asbestos.name=Асбестовые кирпичи tile.brick_asbestos.name=Асбестовые кирпичи
tile.brick_asbestos_stairs.name=Ступени из асбестовых кирпичей tile.brick_asbestos_stairs.name=Ступеньки из асбестовых кирпичей
tile.brick_compound.name=Сетка из соединения tile.brick_compound.name=Сетка из соединения
tile.brick_compound_stairs.name=Ступени из композитной сетки tile.brick_compound_stairs.name=Ступеньки из композитной сетки
tile.brick_concrete.name=Бетонные кирпичи tile.brick_concrete.name=Бетонные кирпичи
tile.brick_concrete_stairs.name=Ступеньки из бетонных кирпичей tile.brick_concrete_stairs.name=Ступеньки из бетонных кирпичей
tile.brick_concrete_broken.name=Сломанные бетонные кирпичи tile.brick_concrete_broken.name=Сломанные бетонные кирпичи
tile.brick_concrete_broken_stairs.name=Ступеньки из сломанных бетонных кирпичей tile.brick_concrete_broken_stairs.name=Ступеньки из сломанных бетонных кирпичей
tile.brick_concrete_cracked.name=Потресканные бетонные кирпичи tile.brick_concrete_cracked.name=Потресканные бетонные кирпичи
tile.brick_concrete_cracked_stairs.name=Ступени из разрушенных бетоновых кирпичей tile.brick_concrete_cracked_stairs.name=Ступеньки из разрушенных бетонных кирпичей
tile.brick_concrete_marked.name=Обозначенные бетонные кирпичи tile.brick_concrete_marked.name=Обозначенные бетонные кирпичи
tile.brick_concrete_mossy.name=Замшелые бетонные кирпичи tile.brick_concrete_mossy.name=Замшелые бетонные кирпичи
tile.brick_concrete_mossy_stairs.name=Cтупени из замшелых бетонных кирпичей tile.brick_concrete_mossy_stairs.name=Cтупени из замшелых бетонных кирпичей
tile.brick_ducrete.name=Дюкретовые кирпичи tile.brick_ducrete.name=Дюкретовые кирпичи
tile.brick_ducrete_stairs.name=Ступени из дюкретовых кирпичей tile.brick_ducrete_stairs.name=Ступеньки из дюкретовых кирпичей
tile.brick_dungeon.name=Берцелианит кирпичи tile.brick_dungeon.name=Берцелианит кирпичи
tile.brick_dungeon_circle.name=Берцелианитовый круг tile.brick_dungeon_circle.name=Берцелианитовый круг
tile.brick_dungeon_flat.name=Берцелианит tile.brick_dungeon_flat.name=Берцелианит
tile.brick_dungeon_tile.name=Берцелианитовая плитка tile.brick_dungeon_tile.name=Берцелианитовая плитка
tile.brick_fire.name=Шамотные кирпичи tile.brick_fire.name=Шамотные кирпичи
tile.brick_fire_stairs.name=Ступени из шамотных кирпичей tile.brick_fire_stairs.name=Ступеньки из шамотных кирпичей
tile.brick_jungle.name=Энаргитовые кирпичи tile.brick_jungle.name=Энаргитовые кирпичи
tile.brick_jungle_circle.name=Круг Механиста tile.brick_jungle_circle.name=Круг Механиста
tile.brick_jungle_cracked.name=Потресканные энаргитовые кирпичи tile.brick_jungle_cracked.name=Потресканные энаргитовые кирпичи
@ -5251,9 +5272,9 @@ tile.brick_jungle_mystic.name=Магические энаргитовые кир
tile.brick_jungle_ooze.name=Радиоактивные энаргитовые кирпичи tile.brick_jungle_ooze.name=Радиоактивные энаргитовые кирпичи
tile.brick_jungle_trap.name=Энаргитовые кирпичи-ловушка tile.brick_jungle_trap.name=Энаргитовые кирпичи-ловушка
tile.brick_light.name=Лёгкие кирпичи tile.brick_light.name=Лёгкие кирпичи
tile.brick_light_stairs.name=Ступени из светлых кирпичей tile.brick_light_stairs.name=Ступеньки из светлых кирпичей
tile.brick_obsidian.name=Обсидиановые кирпичи tile.brick_obsidian.name=Обсидиановые кирпичи
tile.brick_obsidian_stairs.name=Ступени из обсидиановых кирпичей tile.brick_obsidian_stairs.name=Ступеньки из обсидиановых кирпичей
tile.brick_red.name=Кирпичи красной комнаты tile.brick_red.name=Кирпичи красной комнаты
tile.brick_slab.brick_asbestos.name=Плита из асбестовых кирпичей tile.brick_slab.brick_asbestos.name=Плита из асбестовых кирпичей
tile.brick_slab.brick_compound.name=Плита из композитной сетки tile.brick_slab.brick_compound.name=Плита из композитной сетки
@ -5327,7 +5348,7 @@ tile.cmb_brick_reinforced.name=Усиленные кирпичи из стали
tile.compact_launcher.name=Компактная пусковая площадка tile.compact_launcher.name=Компактная пусковая площадка
tile.concrete.name=Бетонная плитка tile.concrete.name=Бетонная плитка
tile.concrete_asbestos.name=Асбестобетон tile.concrete_asbestos.name=Асбестобетон
tile.concrete_asbestos_stairs.name=Ступени из асбестовых кирпичей tile.concrete_asbestos_stairs.name=Ступеньки из асбестовых кирпичей
tile.concrete_brick_slab.brick_concrete.name=Плита из бетонных кирпичей tile.concrete_brick_slab.brick_concrete.name=Плита из бетонных кирпичей
tile.concrete_brick_slab.brick_concrete_broken.name=Плита из разрушившихся бетонных кирпичей tile.concrete_brick_slab.brick_concrete_broken.name=Плита из разрушившихся бетонных кирпичей
tile.concrete_brick_slab.brick_concrete_cracked.name=Плита из потресканных бетонных кирпичей tile.concrete_brick_slab.brick_concrete_cracked.name=Плита из потресканных бетонных кирпичей
@ -5409,6 +5430,7 @@ tile.crate_lead.name=Ящик с радиоактивными материала
tile.crate_metal.name=Ящик с механизмами tile.crate_metal.name=Ящик с механизмами
tile.crate_red.name=Красный ящик tile.crate_red.name=Красный ящик
tile.crate_steel.name=Стальной ящик tile.crate_steel.name=Стальной ящик
tile.crate_supply.name=Ящик с припасами
tile.crate_template.name=Сборочный ящик tile.crate_template.name=Сборочный ящик
tile.crate_tungsten.name=Вольфрамовый ящик tile.crate_tungsten.name=Вольфрамовый ящик
tile.crate_weapon.name=Ящик с оружием tile.crate_weapon.name=Ящик с оружием
@ -5489,9 +5511,9 @@ tile.door_metal.name=Металлическая дверь
tile.door_office.name=Офисная дверь tile.door_office.name=Офисная дверь
tile.door_red.name=Красная дверь tile.door_red.name=Красная дверь
tile.ducrete.name=Дюкретовая плитка tile.ducrete.name=Дюкретовая плитка
tile.ducrete_stairs.name=Ступени из дюкретовой плитки tile.ducrete_stairs.name=Ступеньки из дюкретовой плитки
tile.ducrete_smooth.name=Дюкрет tile.ducrete_smooth.name=Дюкрет
tile.ducrete_smooth_stairs.name=Ступени из дюкрета tile.ducrete_smooth_stairs.name=Ступеньки из дюкрета
tile.dummy_block.name=Блок-пустышка tile.dummy_block.name=Блок-пустышка
tile.dummy_port.name=Блок-пустышка (Розетка) tile.dummy_port.name=Блок-пустышка (Розетка)
tile.dungeon_chain.name=Металлическая цепь tile.dungeon_chain.name=Металлическая цепь
@ -6117,7 +6139,7 @@ tile.red_pylon_medium_wood_transformer.name=Средний деревянный
tile.red_wire_coated.name=Медный кабель с покрытием tile.red_wire_coated.name=Медный кабель с покрытием
tile.refueler.name=Заправочная станция tile.refueler.name=Заправочная станция
tile.reinforced_brick.name=Усиленный камень tile.reinforced_brick.name=Усиленный камень
tile.reinforced_brick_stairs.name=Ступени из укреплённого камня tile.reinforced_brick_stairs.name=Ступеньки из укреплённого камня
tile.reinforced_ducrete.name=Усиленный дюкрет tile.reinforced_ducrete.name=Усиленный дюкрет
tile.reinforced_glass.name=Усиленное стекло tile.reinforced_glass.name=Усиленное стекло
tile.reinforced_glass_pane.name=Усиленная стеклянная панель tile.reinforced_glass_pane.name=Усиленная стеклянная панель
@ -6126,7 +6148,7 @@ tile.reinforced_lamp_on.name=Усиленная лампа
tile.reinforced_light.name=Усиленный светящийся камень tile.reinforced_light.name=Усиленный светящийся камень
tile.reinforced_sand.name=Усиленный песчаник tile.reinforced_sand.name=Усиленный песчаник
tile.reinforced_stone.name=Уплотненный камень tile.reinforced_stone.name=Уплотненный камень
tile.reinforced_stone_stairs.name=Ступени из уплотнённого камня tile.reinforced_stone_stairs.name=Ступеньки из уплотнённого камня
tile.reinforced_laminate.name=Усиленный ламинат tile.reinforced_laminate.name=Усиленный ламинат
tile.reinforced_laminate_pane.name=Усиленная ламинатная панель tile.reinforced_laminate_pane.name=Усиленная ламинатная панель
tile.rejuvinator.name=ГЭКК tile.rejuvinator.name=ГЭКК

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB