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
* Halved recoil on the zebra rifle
* 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 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";
/** 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 */
public static String getCommand(String input) {
if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL);
String[] parts = input.split(NAME_SEPARATOR);
if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME);
if(parts[0].isEmpty()) throw new RORFunctionException(EX_NULL);
return parts[0];
}

View File

@ -3,5 +3,5 @@ package api.hbm.redstoneoverradio;
public interface IRORValueProvider extends IRORInfo {
/** 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
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_counter;
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 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_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_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");
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_counter);
register(radio_torch_logic);
register(radio_torch_reader);
register(radio_torch_controller);
register(radio_torch_programmer);
register(radio_telex);
register(crane_extractor);

View File

@ -75,7 +75,7 @@ public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay {
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");
if(boiler.heat < 50) {
if(boiler.display < 1) {
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.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
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
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean 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.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
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
@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 TileEntityRadioTorchBase)
return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te);
if(te instanceof TileEntityRadioTorchBase) return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te);
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;
import java.awt.Color;
import java.util.List;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
@ -15,6 +16,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.util.EnumChatFormatting;
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[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) {
this.drawCustomInfoStat(x, y, guiLeft + 98, guiTop + 18, 16, 52, x, y, EnumChatFormatting.RED + "Empty");
} 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(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter");
put(TileEntityRadioTorchLogic.class, "tileentity_rtty_logic");
put(TileEntityRadioTorchReader.class, "tileentity_rtty_reader");
put(TileEntityRadioTelex.class, "tileentity_rtty_telex");
put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint");

View File

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

View File

@ -21,7 +21,7 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
private FluidTank water;
private FluidTank steam;
public int displayHeat;
public int display;
public int heat;
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);
int process = heat / 50;
this.display = process;
process = Math.min(process, water.getFill());
process = Math.min(process, (steam.getMaxFill() - steam.getFill()) / 100);
this.displayHeat = this.heat;
if(process < 0) process = 0;
@ -124,14 +123,14 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
@Override
public void serialize(ByteBuf buf) {
buf.writeInt(displayHeat);
buf.writeInt(display);
water.serialize(buf);
steam.serialize(buf);
}
@Override
public void deserialize(ByteBuf buf) {
this.displayHeat = buf.readInt();
this.display = buf.readInt();
water.deserialize(buf);
steam.deserialize(buf);
}

View File

@ -86,7 +86,8 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
};
} else {
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.fluidmk2.FluidNode;
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
import api.hbm.redstoneoverradio.IRORValueProvider;
import java.util.HashSet;
@ -45,7 +46,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@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 FluidType lastType;
@ -404,4 +405,21 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
}
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.fluidmk2.FluidNode;
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
import api.hbm.redstoneoverradio.IRORValueProvider;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
@ -54,7 +55,7 @@ import java.util.List;
import java.util.Random;
@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 FluidType lastType;
@ -547,4 +548,21 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
}
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]) {
default:
return sig < map;
case 1:
return sig <= map;
case 2:
return sig >= map;
case 3:
return sig > map;
case 4:
return sig == map;
case 5:
return sig != map;
default: return sig < map;
case 1: return sig <= map;
case 2: return sig >= map;
case 3: return sig > map;
case 4: return sig == map;
case 5: return sig != map;
}
}
switch(conditions[index]) {
default:
return signal.equals(mapping[index]);
case 7:
return !signal.equals(mapping[index]);
case 8:
return signal.contains(mapping[index]);
case 9:
return !signal.contains(mapping[index]);
default: return signal.equals(mapping[index]);
case 7: return !signal.equals(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.4=5
book_lore.book_iodine.name=Note
book_lore.book_iodine.author=Dave
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.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.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.name=Заметка
book_lore.book_iodine.author=Дейв
book_lore.book_iodine.page.0=Лады, вы не поверите, но старик Везэрвэйн наконец объявился через две недели после своего ухода и, что еще более впечатляюще, он раскололся на тему своих занятий в каньоне:
book_lore.book_iodine.page.1=Похоже, дебилы из НИОКР обнаружили соединение, в основном неорганическое, очень схожее с токсином, но вникните: умирающие клетки воспроизводят и выделяют его во внешнюю среду, создавая чрезвычайно заразный аэрозоль.
book_lore.book_iodine.page.2=Оно как вирус, но не вирус. Состав странный, его можно замешать в любой бутылке, но лишь в нужном порядке. Док сказал, что первый реактив это просто измельченные кристаллы иода, идущие в ячейку %d.
book_lore.book_phosphorous.name=Note
book_lore.book_phosphorous.author=Dave
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.1=ingredient is red phosphorous, whihc has to be mixed into slot %d
book_lore.book_phosphorous.name=Заметка
book_lore.book_phosphorous.author=Дейв
book_lore.book_phosphorous.page.0=Здаров, эт я опять. Я полагаю, вы получили мою последнюю записку, доку, кстати, это не понравилось. Буду краток, дурачьё с НИОКР снова ноют, скорее всего, из-за денег. Опять. Так или иначе, Док нашел второй
book_lore.book_phosphorous.page.1=реагент. Это красный фосфор, его надо поставить в ячейку %d.
book_lore.book_dust.name=Note
book_lore.book_dust.author=Dave
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.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.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d
book_lore.book_dust.name=Заметка
book_lore.book_dust.author=Дейв
book_lore.book_dust.page.0=Док был в ярости когда обнаружил, что придурки из НИОКР сохранили единственный образец, разглагольствуя о грубой халатности и конце света. Я сказал ему остыть. Понимаю, довели до белого каления, но такое волнение вредно для сосудов,
book_lore.book_dust.page.1=хотя, конечно, крови в них осталось немного. Один из НИОКР-овских дятлов разместил ещё немного информации в циркуляре на последнюю неделю, они назвали свою миленькую смесь "MKU" что бы это ни значило, и она содержит бытовой мусор. Ты можешь в это поверить? Одно из самых
book_lore.book_dust.page.2=их опасных изобретений, и содержит пыль. Как ни странно, они также отметили, что она входит в ячейку %d.
book_lore.book_mercury.name=Note
book_lore.book_mercury.author=Dave
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.1=replicated by the body? whatever, the mercury goes into slot %d
book_lore.book_mercury.name=Заметка
book_lore.book_mercury.author=Дейв
book_lore.book_mercury.page.0=Ну, это отвечает на некоторые вопросы. Если не считать кровавой рвоты, токсикологическое заключение в основном напоминает отравление ртутью. Почему? Потому что наша милая смесь её содержит! Мне просто интересно, откуда это всё берется когда
book_lore.book_mercury.page.1=реплицируется в теле? Неважно, ртуть отправляется в ячейку %d.
book_lore.book_flower.name=Note
book_lore.book_flower.author=Dave
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.1=it does not work with other flowers. the morning glory goes into slot %d
book_lore.book_flower.name=Заметка
book_lore.book_flower.author=Дейв
book_lore.book_flower.page.0=Помните, ещё в первой записке я отметил, что смесь по большей части неорганическая? Не догадаетесь, но старик поделился четвёртым ингредиентом: ипомея фиалковая, вид цветов. Утренний лик! Это может быть связано с низким содержанием сферы, но, в любом случае,
book_lore.book_flower.page.1=это не работает с другими цветами. Вьюнок отправляется в ячейку %d.
book_lore.book_syringe.name=Note
book_lore.book_syringe.author=Dave
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.1=syringe goes into slot %d
book_lore.book_syringe.name=Заметка
book_lore.book_syringe.author=Дейв
book_lore.book_syringe.page.0=Небольшое дополнение к пятому сообщению, очевидно, вам придётся хранить этот самый MKU в ёмкости. Полоумные из НИОКР использовали обычные металлические шприцы прямиком из больницы. Излишки посуды, я полагаю; бесполезные, они просто валяются тысячами повсюду. Металлический
book_lore.book_syringe.page.1=шприц идёт в ячейку %d.
book_lore.resignation_note.name=Letter of Resignation
book_lore.resignation_note.author=Kosma
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.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.2=I'm not coming back on Friday. Just send the paycheck.
book_lore.resignation_note.name=Заявление об отставке
book_lore.resignation_note.author=Косма
book_lore.resignation_note.page.0=Управление вновь сократило наш отдел. Эти идиоты могут обвинить в произошедшем только себя, я не знаю, чего они ожидали после такого фиаско. Кто, черт его дери, сливает информацию? Мы теряем миллионы, а
book_lore.resignation_note.page.1=работы лишили МЕНЯ. МЕНЯ попросили уволиться. Я надеюсь вы, кретины, наконец извлечете урок из громады своих ошибок и возьмёте себя в руки.
book_lore.resignation_note.page.2=Я не приду в пятницу. Просто пришлите мне зарплату.
book_lore.memo_stocks.name=Intracorporate Memorandum
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.name=Внутрикорпоративный меморандум
book_lore.memo_stocks.page.0=Отношения с инвесторами - $ $ В цифрах последнего квартального отчёта наблюдаются вопиющие несоответствия. Для финансового отдела было бы благоразумно совершить некоторые корректировки, если они не хотят лишних проблем.
book_lore.memo_schrab_gsa.name=Internal Memorandum
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.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.name=Внутренний меморандум
book_lore.memo_schrab_gsa.page.0=Управление контрактами - $ $ Адвокаты совершили прорыв в отношениях с DLA. Они выбили нам план на 45 МИЛЛИАРДОВ от GSA на дальнейшее получение и исследование сарсплава. По текущим оценкам, это будет как минимум
book_lore.memo_schrab_gsa.page.1=40%%-я прибыль от сопутствующих процессов, не говоря уже о потенциальных новых контрактах. Ввиду конфиденциального характера доступ к фискальным документам будет ограничен.
book_lore.memo_schrab_rd.name=Internal Memorandum
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.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.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.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.name=Внутренний меморандум
book_lore.memo_schrab_rd.page.0=НИОКР - $ $ Нашим основным способом производства сарсплава является его получение через ускоритель частиц. При этом затраты электроэнергии непомерно высоки по сравнению с выходом продукта.
book_lore.memo_schrab_rd.page.1=Доктор Шрабауэр, однако, обнаружил новый физический процесс, названный "Странное колебание лептонов", которое значительно удешевляет производство. Посредством этого, не до конца изученного взаимодействия, электроны преобразуются в чрезвычайно
book_lore.memo_schrab_rd.page.2=высокоэнергетические фотоны, будто бы с помощью магии. Это крайне экстремальное исключение из множества законов преобразования частиц, но предварительные эксперименты доказали, что по итогу протоны превращаются в верхние и нижние кварки, создавая сарсплав.
book_lore.memo_schrab_rd.page.3=Как ни странно, прототип требует вольфрам, легированный небольшим количеством сарсплава. Кроме того, требуется особый конденсатор для подавления остатков положительного заряда.
book_lore.memo_schrab_nuke.name=Research Report
book_lore.memo_schrab_nuke.author=Doctor Schrabauer
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.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.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.name=Исследовательский отчёт
book_lore.memo_schrab_nuke.author=Доктор Шрабауэр
book_lore.memo_schrab_nuke.page.0=Наше последнее исследование показало нам возможность влияния ядерных взрывов на материалы. Спасибо деньгам с гранта, мы *случайно* проверили нашу теорию прямого синтеза сарсплава из урана.
book_lore.memo_schrab_nuke.page.1=Ранее только циклотрон создавал сарсплав по-настоящему. Однако, во время подземных исследований в Эвэрверпене были найдены мельчайшие следы сарсплава в урановой руде. Весь чистый металлический уран поблизости распался.
book_lore.memo_schrab_nuke.page.2=Таким образом, при наличии достаточного количества урановой руды близ взрыва или даже грязной бомбы, богатой отходами, содержащими нестабильный материал, гипотетически можно создать достаточное количество сарсплава чтобы собирать его вручную.
book_lore.bf_bomb_1.name=Private Notes
book_lore.bf_bomb_1.author=M. Porter
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.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.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.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.name=Личные заметки
book_lore.bf_bomb_1.author=М. Портер
book_lore.bf_bomb_1.page.0=Прошло немало времени, но мой перевод был одобрен. Оставим некомпетентность в стороне, но даже так, справиться с новыми выпускниками было непросто. $ Но не все новости так хороши эта лаборатория скрывала дальнейшие подробности, и мне не нужен был ещё больший хаос вокруг очередного магического открытия.
book_lore.bf_bomb_1.page.1=Конечно, это случилось. У выпускников были свои сомнения (удивительно, учитывая, насколько они были лучезарны), но мой единственный... компетентный? коллега получил в свои руки брошюру из раздаточного материала. Похоже, у него больше связей, чем я думал. Его записка меня обескуражила:
book_lore.bf_bomb_1.page.2=похоже, они получили ЕЩЁ ОДИН загадочный материал, который они произвели из некоей смеси антивещества и какого-то пограничного изотопа. Брошюра именует его "ВИХРЕВИК" чёрт меня подери, если б я ещё знал, что это. Неудивительно, что им понадобился физик-теоретик,
book_lore.bf_bomb_1.page.3=они даже не знают, что это вообще такое. В любом случае, почти любая работа была бы лучше, чем моя старая должность, так что я не в праве жаловаться на недостаток конкретики.
book_lore.bf_bomb_2.name=Private Notes
book_lore.bf_bomb_2.author=M. Porter
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.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.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.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.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.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.name=Личные заметки
book_lore.bf_bomb_2.author=М. Портер
book_lore.bf_bomb_2.page.0=Несмотря на отсутствие информации в брошюре, я всё ещё хранил надежду, что они знают больше. Но нет. Каждый второй старший научный сотрудник слепо верит в этот материал; их суждения было практически библейскими. Я почти потерял дар речи.
book_lore.bf_bomb_2.page.1=При этом я даже не могу их винить. Вихревик не имеет никакого, вашу мать, смысла он совершенно ни похож ни на одно вещество, что я видел раньше. Его внешний вид почти ужасает: буквально масса кружащихся цветов, чья неоново-зелёная поверхность пронизана более тёмными линиями.
book_lore.bf_bomb_2.page.2=Хуже того, эта штука является источником энергии. Наш образец нарушает АЛАРА: лаборатория была освобождена от персонала, когда его привезли, и единственный достаточно смелый сотрудник (некто др. Мелфин) надел защитный костюм А класса только чтобы пронести его 20 метров.
book_lore.bf_bomb_2.page.3=Эмпирические данные тоже не радуют, потому что он нарушает первый закон термодинамики, излучая такое количество энергии. Присутствие этой штуки хоть немного рядом, даже когда вас разделяет метр свинца, ужасает. Мы выбежали из камеры сразу после завершения спектроскопии,
book_lore.bf_bomb_2.page.4=при этом не узнав ничего нового. Эти идиоты из научной группы, Господи, они даже не глазом не повели. Находиться посреди этих "дискуссий" было ужасно; этот шарлатан, главный научный сотрудник, даже поделился слухами, будто бы запрет на испытания будет снят, будто бы мы будем
book_lore.bf_bomb_2.page.5=создавать бомбы из этой херни в ближайшие недели, кто в здравом уме будет над этим работать? Чёрт, один здравомыслящий ассистент (Эндрю) прозвал это "Жар-огнём" потому что сгореть заживо на погребальном костре по сравнению с этим было бы безопасно.
book_lore.bf_bomb_3.name=Private Notes
book_lore.bf_bomb_3.author=M. Porter
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.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.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.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.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.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.name=Личные заметки
book_lore.bf_bomb_3.author=М. Портер
book_lore.bf_bomb_3.page.0=Мы с командой добились некоторых успехов. Особенно в плане работы с персоналом игнорирование особо верующих людей сделало работу гораздо пристойней. Мы до сих пор не имеем ни малейшего представления о реальных свойствах жар-огня (сложно анализировать
book_lore.bf_bomb_3.page.1=образец, тупо сжигающий твоё оборудование), но его взаимодействие с другими материалами дало нам пищу для размышлений. Примечательно, что они синтезировали "газообразную" форму: из всего персонала, именно Эндрю сообщил мне, что это был коллоид из микроскопических частиц жар-огня, взвешенных в некоем
book_lore.bf_bomb_3.page.2=инертном газе. Каждая частица окружена положительно заряженным 'пузырём' ионизированного газа, препятствующим ее осаждению. Кто бы мог подумать, что смертельное гамма-излучение может приносить пользу? Точно не я. $ Я предпочитаю не думать о том, что они превратили образец в
book_lore.bf_bomb_3.page.3=дисперсную смесь, но я не могу недооценить удобство этого газообразного жар-пламени экспериментировать с ним стало гораздо безопаснее. $ Говоря о безопасности, главный исследователь (в приступе бездумного пренебрежения) сделал открытие, которое чуть не стоило ему жизни.
book_lore.bf_bomb_3.page.4=Он решил получить "грязнушку", позволив ячейке нашего нового коллоида напрямую взаимодействовать с какой-то очень дорогой антиматерией: в результате взрыва стол, на котором она стояла, превратился в кусок отбеленного радиацией шлака, прорезанный почти идеальной полусферой сквозь
book_lore.bf_bomb_3.page.5=столешницу, также главный исследователь получил острую лучевую болезнь. Думаю, теперь мы знаем, как его взорвать, но, боже, некоторые люди...
book_lore.bf_bomb_4.name=Private Notes
book_lore.bf_bomb_4.author=M. Porter
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.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.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.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.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.name=Личные заметки
book_lore.bf_bomb_4.author=М. Портер
book_lore.bf_bomb_4.page.0=Я просто не могу сбежать от своей старой работы. Это единственное место, где нанимают сотрудников, несмотря на всю эту проклятую суматоху, но я не собираюсь возвращаться в эту дыру. $ Они соблазнили меня только потому, что мне нужно уйти побыстрее. Помните тот договор об атмосферных испытаниях, из которого мы вышли неделю назад?
book_lore.bf_bomb_4.page.1=Что ж, придурок, ответственный за лабораторию, наконец-то сделал что-то правильно. Беспорядок начался со шквалом присоединения новых “учёных”, необходимых, чтобы суметь превратить жар-пламя в оружие. Недостаток критического мышления, если честно, сбивает с толку Эндрю, благослови его Бог, спрыгнул с корабля
book_lore.bf_bomb_4.page.2=вторым, как только грёбаный ПРОЕКТ БОМБЫ был представлен. Этот придурок Мелфин выглядел таким довольным со своим маленьким механизмом может, он подхватил мозговых червей, когда нёс образец? который включал в себя какую-то чепуху с использованием обычного, твёрдого жар-огня и высоковольтную
book_lore.bf_bomb_4.page.3=батарейку. $ Похоже, форма важна для выхода энергии или способа активации или чего ещё, навроде урана против плутония в обычных ядерках, но конечным результатом является инициирующий удар, вызывающий взрыв. Я нахожу это весёлым, даже уморительным.
book_lore.bf_bomb_4.page.4=Все они придают большое значение активации; при этом игнорируя реальный механизм всего процесса, потому что не имеют ни малейшего понятия, как это работает! На данный момент оно может работать хоть от магии, а они пытаются скомкать это - просто ради очередных орудий войны.
book_lore.bf_bomb_5.name=Private Notes
book_lore.bf_bomb_5.author=M. Porter
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.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.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.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.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.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.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.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.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself...
book_lore.bf_bomb_5.name=Личные заметки
book_lore.bf_bomb_5.author=М. Портер
book_lore.bf_bomb_5.page.0=Я просто... не могу с этим справиться, даже спустя несколько дней. На самом деле, это было предрешено, учитывая, насколько легкомысленно научная группа относилась к безопасности. $ $ Доктор Мелфин, старший научный сотрудник, сгинул. Вероятно, мёртв. Я видел, как это произошло, собственными глазами, в испытательной камере.
book_lore.bf_bomb_5.page.1=Мы только что получили еще одну порцию чистого жар-огня, а он нашел необходимое электрооборудование и источник энергии, чтобы проверить свое предположение. Я не знаю, что стало причиной (было ли запущено оборудование? Он начал слишком рано?), но оно свершилось мучительно медленно,
book_lore.bf_bomb_5.page.2=когда зеленый свет поглотил стол, батарею и доктора Мелфина, стоящего всего в метре от него. Даже когда стол превратился в лужу кипящего металла на полу, он не загорелся. Я не знаю, что я увидел в его глазах... $$ Ужас или трепет,
book_lore.bf_bomb_5.page.3=может из-за того, что он ещё жив? Чем бы ни был наш "чудо" материал, его это не волновало. В следующий момент он исчез в яркой вспышке света. Он испарился? сгорел? аннигилирован? Отошлите меня хоть в грёбаный ад, я больше ничего не знаю!
book_lore.bf_bomb_5.page.4=Меня тошнит от главного исследователя. Он звиздел, что мы могли бы быть более осторожными, продолжать просто кружить вокруг, какую-то ещё подымающую мораль чепуху. Этот тупой урод никогда не поймет, что играя с огнем, можно обжечься. $ Я не стал заморачиваться с
book_lore.bf_bomb_5.page.5=увольнением, просто забрал свои шмотки и побежал к холмам. В любом случае, неважно; учитывая отсутствие звонков и грибовидное облако, поднявшееся над моим (теперь уже бывшим) местом работы, они взорвали всё либо перешли в полное распоряжение военных.
book_lore.bf_bomb_5.page.6=Есть важное различие между диссекцией и ВИВИСЕКЦИЕЙ, что они явно упустили из виду. Они могут рассекать металлы или атомы сколько угодно, но вторгаться внутрь, вивисекцировать саму реальность это значит лишь порождать новых докторов Мелфинов. Кто знает!
book_lore.bf_bomb_5.page.7=В конце-концов, правительство стремится превратить эту херню в бомбы, может, мы увидим ещё пару войн, ещё пару миллионов людей, встретивших судьбу хуже смерти. Они не могут прятать это вечно. $ $ Меня это не волнует. Теперь не волнует. Боже, пожалуйста, позволь мне вернуться
book_lore.bf_bomb_5.page.8=к настоящей науке. $ $ Черт возьми, Мэй, возьми себя в руки...
book_lore.beacon.name=Signal Beacon Instruction Booklet
book_lore.beacon.author=Flim Flam Industries
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.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.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.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.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.5=light up red, otherwise it will light up green. Note that colors can vary depending on the replacement bulb.
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.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.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.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.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.11=Chapter 5: Warranty $ [ page intentionally left blank ]
book_lore.beacon.name=Инструкция по эксплуатированию сигнального маяка
book_lore.beacon.author=ФлимФлэм Индастриз
book_lore.beacon.page.0=Благодарим вас за покупку светового сигнального маяка мод.2 (версия 1.3)! Этот небольшой буклет содержит краткое введение в работу маяка и его внутреннюю работу.
book_lore.beacon.page.1=Глава 1: Архитектура $ Каждый блок состоит из четырех основных частей: управляющей микросхемы, фонаря, противотуманной сирены и корпуса, в котором расположены остальные части. Для подробного объяснения, пожалуйста,
book_lore.beacon.page.2=обратитесь к принципиальной схеме, расположенной на внутренней стороне крышки для обслуживания корпуса. Фонарь состоит из поликарбонатного корпуса, содержащего двуцветную галогеновую лампу мощностью 250Вт со стандартным 200мм разъёмом, запасные части
book_lore.beacon.page.3=для лампы могут быть заказаны из наших магазинов. Не рекомендуется использовать лампы сторонних производителей, поскольку мы не можем гарантировать безопасную работу. Корпус изготовлен из специальной оцинкованной нержавеющей стали и устойчив к атмосферным воздействиям.
book_lore.beacon.page.4=Глава 2: Фонарь $ Основное назначение фонаря — освещение для облегчения обслуживания в суровых погодных условиях, а также информирование о состоянии устройства. Если Power-On Self-Test (POST) не пройден, фонарь будет светиться
book_lore.beacon.page.5=красным, в иных случаях зелёным. Обратите внимание, что цвета могут различаться в зависимости от типа сменной лампы.
book_lore.beacon.page.6=Глава 3: Туманный звуковой сигнал $ Туманный звуковой сигнал является основным устройством связи маяка. Маяк предназначен для peer-to-peer (P2P) связи, а также для широкого вещания.
book_lore.beacon.page.7=Глава 4: Peer-to-peer $ Подробную информацию о связи см. в руководстве по связи. Ниже приводится краткое описание установки P2P-соединения: во-первых, маяк должен подать сигнал «НАЧАТЬ СОЕДИНЕНИЕ»,
book_lore.beacon.page.8=являющийся одним длинным звуком. Все доступные узлы также должны ответить одним длинным однотонным сигналом (порядок определяется близостью, а также правилами связи, изложенными в руководстве, раздел «Ответ на соединение»)
book_lore.beacon.page.9=Как только желаемый партнер ответил, подайте сигнал «ПРИНЯТЬ СОЕДИНЕНИЕ» в виде двух длинных тонов, затем партнер также ответит двумя длинными тонами. Вся последующая коммуникация должна происходить с использованием заранее согласованных сигналов, чаще всего
book_lore.beacon.page.10=по стандарту ФАР-5М. Связь прекратится немедленно, если не будет согласован ни один стандарт, что будет служить «пингом». Если связь продолжается, соединение можно завершить, используя еще один длинный тональный сигнал «ЗАВЕРШИТЬ СОЕДИНЕНИЕ».
book_lore.beacon.page.11=Глава 5: Гарантия $ [страница намеренно оставлена ​​пустой]
cannery.f1=[ Нажмите f1 для справки ]
@ -479,7 +479,7 @@ cannery.crucible.4=Буфер слева предназначен для §aпо
cannery.crucible.5=Если рецепт установлен, материалы, не совпадающие с рецептом, также будут храниться здесь.
cannery.crucible.6=Материалы в этом буфере не взаимодействуют друг с другом, они могут быть только выведены через зелёный выход для отливки.
cannery.crucible.7=Буфер справа предназначен для §cрецептов§r, если рецепт установлен и этот конкретный материал соответствует выходу рецепта, он окажется здесь.
cannery.crucible.8=Материалы будут медленно смешиваться в выходной материал, который автоматически выльется из красного спуска.
cannery.crucible.8=Материалы будут медленно смешиваться, результат автоматически выльется из красного спуска.
cannery.crucible.9=Обратите внимание, что только этот буфер поддерживает создание рецептов. Если шаблон был установлен после расплавления предметов, материалы в буфере для побочки не смешаются или не переместятся в буфер рецептов.
cannery.crucible.10=Спуск будет выливать материал автоматически, если есть куда, например, литейный канал или форма.
cannery.crucible.11=Как и с другими литейными блоками, можно использовать лопату для очистки плавильни от материалов.
@ -682,6 +682,7 @@ commands.satellite.satellite_descended=Спутник успешно удалё
commands.satellite.satellite_orbited=Спутник запущен.
commands.satellite.should_be_run_as_player=Команда должна быть выполнена игроком!
container.ammoBag=Патроны
container.amsBase=Основание АМС [Декор]
container.amsEmitter=Излучатель АМС [Декор]
container.amsLimiter=Стабилизатор АМС [Декор]
@ -1234,7 +1235,7 @@ gun.make.CUBE=Куб 2: Sauerbraten
gun.make.DRG=Deep Rock Galactic
gun.make.ENZINGER=Энзингер Юнион
gun.make.EQUESTRIA=Equestria Missile Systems
gun.make.FLIMFLAM=ФлимФлэм Индастрис
gun.make.FLIMFLAM=ФлимФлэм Индастриз
gun.make.F_STRONG=Форт Стронг
gun.make.GLORIA=Gloria GmbH
gun.make.HASBRO=Хасбро
@ -1852,6 +1853,7 @@ item.ammo_arty_mustard_gas.name=16-дюймовый артиллерийский
item.ammo_arty_nuke.name=Ядерный 16-дюймовый артиллерийский снаряд
item.ammo_arty_phosgene.name=Фосгеновый 16-дюймовый артиллерийский снаряд
item.ammo_arty_phosphorus.name=Фосфорный 16-дюймовый артиллерийский снаряд
item.ammo_bag.name=Сумка для боеприпасов
item.ammo_arty_phosphorus_multi.name=Фосфорный 16-дюймовый мульти-снаряд
item.ammo_cell.name=Энерго-патроны
item.ammo_coilgun.name=Вольфрамовый шар для гаусс-пушки
@ -2699,7 +2701,7 @@ item.crayon.purple.name=Фиолетовый мелок
item.crayon.red.name=Красный мелок
item.crayon.silver.name=Светло-серый мелок
item.crayon.white.name=Белый мелок
item.crayon.yellow.name=Желтый мелок
item.crayon.yellow.name=Жёлтый мелок
item.crowbar.name=Mk.V Устройство Для Вскрытия Ящиков "Лом"
item.crucible.name="Горнило Палача"
item.crucible_template.name=Шаблон плавильни:
@ -3027,7 +3029,8 @@ item.glyphid_gland.name= Железа глифида:
item.glyphid_gland_empty.name= Железа глифида
item.gun_aberrator.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_autoshotgun.name=Барабанный дробовик
item.gun_autoshotgun_sexy.name=Секси
@ -3063,7 +3066,7 @@ item.gun_defabricator.name=Дефабрикатор
item.gun_defabricator_ammo.name=Энергетические ячейки Дефабрикатора
item.gun_detonator.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_ammo.name=Энергетическая ячейка
item.gun_euthanasia.name=Эвтаназия
@ -3071,15 +3074,16 @@ item.gun_euthanasia_ammo.name=Шприцы
item.gun_fatman.name=М42 Атомная катапульта "Толстяк"
item.gun_fatman_ammo.name=Ядерный минизаряд (LEGACY)
item.gun_fireext.name=Огнетушитель
item.gun_flamer.name=Мистер Топаз
item.gun_flamer.name=Огнемёт
item.gun_flamer_daybreaker.name=Дейбрейкер
item.gun_flamer_topaz.name=Мистер Топа
item.gun_flamer_topaz.name=Мистер Топаз
item.gun_flaregun.name=Сигнальный пистолет
item.gun_flechette.name=Игольчатая винтовка
item.gun_folly.name=Прототип Дигамма "Причуда"
item.gun_g3.name=Штурмовая винтовка
item.gun_g3_a3.name=G3A3
item.gun_g3_infiltrator.name=Infiltrator
item.gun_g3_zebra.name=Зебра
item.gun_glass_cannon.name=Стеклянная пушка
item.gun_greasegun.name=Маслёнка
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_scoped.name=.44 Magnum с прицелом
item.gun_henry.name=Винтовка рычажного действия
item.gun_henry_lincoln.name=Lincoln's Repeater
item.gun_henry_lincoln.name=Винтовка Линкольна
item.gun_hk69.name=Гранатомет
item.gun_hp.name=HPP Лазерджет
item.gun_hp_ammo.name=Чернильный картридж
@ -3104,6 +3108,9 @@ item.gun_ks23.name=Сэмюэль Большой Дробовик
item.gun_lacunae.name=CZ33 “Абаддон”
item.gun_lacunae_ammo.name=5-мм патрон (LEGACY)
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_lever_action.name=«Нога кобылы» (Оригинал)
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_light_revolver.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_m2.name=Ma Deuce
item.gun_maresleg.name=Дробовик рычажного действия
item.gun_maresleg_akimbo.name=L=Дробовики рычажного действия
item.gun_maresleg_akimbo.name=Дробовики рычажного действия
item.gun_maresleg_broken.name=Broken
item.gun_maresleg_short.name=Нога кобылы
item.gun_mas36.name=Южная Звезда
@ -3185,7 +3192,7 @@ item.gun_uboinik.name=Убойник
item.gun_uboinik_ammo.name=Дробь 12x70 калибра (LEGACY)
item.gun_uzi.name=IMI Узи
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_saturnite.name=Сатурнитовый Узи
item.gun_uzi_saturnite_silencer.name=Сатурнитовый Узи с глушителем
@ -3265,7 +3272,7 @@ item.ingot_asbestos.desc=§o"Наполненный жизнью, неувере
item.ingot_au198.name=Слиток золота-198
item.ingot_australium.name=Австралиевый слиток
item.ingot_bakelite.name=Бакелит
item.ingot_beryllium.name=Бериллевый слиток
item.ingot_beryllium.name=Бериллиевый слиток
item.ingot_biorubber.name=Брусок латекса
item.ingot_bismuth.name=Слиток висмута
item.ingot_bismuth_bronze.name=Слиток висмутовой бронзы
@ -3285,7 +3292,7 @@ item.ingot_copper.name=Слиток промышленной меди
item.ingot_daffergon.name=Даффергоновый слиток
item.ingot_desh.name=Слиток деш
item.ingot_dineutronium.name=Динейтрониевый слиток
item.ingot_dura_steel.name=Высокоскоростная сталь
item.ingot_dura_steel.name=Слиток высокоскоростной стали
item.ingot_electronium.name=Электрониевый слиток
item.ingot_euphemium.name=Эвфемиевый слиток
item.ingot_euphemium.desc=Совершенно особый и в то же время странный элемент.
@ -3302,8 +3309,17 @@ item.ingot_lanthanium.name=Полустабильный слиток ланта
item.ingot_lanthanium.desc='Лантанум'
item.ingot_lanthanium.desc.P11=Вообще лантанум, но ладно.
item.ingot_lead.name=Свинцовый слиток
item.ingot_les.name=Низкообогащенный слиток шрабидиевого топлива
item.ingot_magnetized_tungsten.name=Намагниченный слиток вольфрама
item.ingot_les.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_forged.name=Выкованный метеоритовый слиток
item.ingot_mox_fuel.name=Слиток МОКС-топлива
@ -3329,7 +3345,7 @@ item.ingot_pu240.name=Слиток плутония-240
item.ingot_pu241.name=Слиток плутония-241
item.ingot_pvc.name=ПВХ
item.ingot_ra226.name=Слиток радия-226
item.ingot_raw.name=%s Ingot
item.ingot_raw.name=Слиткок (%s)
item.ingot_red_copper.name=Слиток красной меди
item.ingot_reiium.name=Реиевый слиток
item.ingot_rubber.name=Резина
@ -3384,6 +3400,7 @@ item.insert_yharonite.name=Яронитовая пластина
item.item_secret.aberrator.name=Часть Аберратора
item.item_secret.canister.name=Композит SB-26
item.item_secret.controller.name=Проприетарный блок управления
item.item_secret.folly.name=Фрагмент Причуды
item.item_secret.selenium_steel.name=Слиток селениевой стали
item.iv_blood.name=Пакет с кровью
item.iv_empty.name=Пакет для внутривенного введения
@ -3534,7 +3551,7 @@ item.missile_volcano.name=Тектоническая ракета
item.missile_volcano.desc=Используя силу ядерной взрывчатки, мы можем вызвать вулкан!
item.mold_base.name=Пустая литейная форма
item.mold.name=Литейная форма
item.morning_glory.name=Монин Глори
item.morning_glory.name=Фиалковый вьюнок
item.motor.name=Мотор
item.motor_bismuth.name=Висмутовый мотор
item.motor_desh.name=Деш-мотор
@ -3866,8 +3883,8 @@ item.part_grip.name=Рукоятка (%s)
item.part_lithium.name=Коробка литиевой пыли
item.part_mechanism.name=Оружейный механизм (%s)
item.part_plutonium.name=Коробка плутониевой пыли
item.part_receiver_heavy.name=Тяжелая ствольная коробка (%s)
item.part_receiver_light.name=Лёгкая ствольная коробка (%s)
item.part_receiver_heavy.name=Тяжёлый ресивер (%s)
item.part_receiver_light.name=Лёгкий ресивер(%s)
item.part_stock.name=Приклад (%s)
item.particle_aelectron.name=Капсула с Позитроном
item.particle_amat.name=Капсула с Антиматерией
@ -4666,6 +4683,10 @@ item.t45_kit.name=Комплект силовой брони T45
item.t45_legs.name=Поножи силовой брони T45
item.t45_plate.name=Нагрудник силовой брони T45
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_1.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.furniture_black.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_capacitor.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.speedloader.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.firerate.name=УЛУЧШЕНИЕ СКОРОСТИ СТРЕЛЬБЫ
item.weapon_mod_test.multi.name=УЛУЧШЕНИЕ "МУЛЬТИ-ВЫСТРЕЛ"
@ -5037,8 +5058,8 @@ shape.ingot=Слиток
shape.nugget=Самородок
shape.quantum=Кванта
shape.quart=Четверть блока
shape.receiverHeavy=Тяжелая ствольная коробка
shape.receiverLight=Лёгкая ствольная коробка
shape.receiverHeavy=Тяжёлый ресивер
shape.receiverLight=Лёгкий ресивер
shape.ntmpipe=Труба
shape.plate=Пластина
shape.plateTriple=Литая пластина
@ -5221,26 +5242,26 @@ tile.bomber.name=Разбившийся бомбардировщик
tile.book_guide.name=Книга знаний
tile.boxcar.name=Грузовой вагон
tile.brick_asbestos.name=Асбестовые кирпичи
tile.brick_asbestos_stairs.name=Ступени из асбестовых кирпичей
tile.brick_asbestos_stairs.name=Ступеньки из асбестовых кирпичей
tile.brick_compound.name=Сетка из соединения
tile.brick_compound_stairs.name=Ступени из композитной сетки
tile.brick_compound_stairs.name=Ступеньки из композитной сетки
tile.brick_concrete.name=Бетонные кирпичи
tile.brick_concrete_stairs.name=Ступеньки из бетонных кирпичей
tile.brick_concrete_broken.name=Сломанные бетонные кирпичи
tile.brick_concrete_broken_stairs.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_mossy.name=Замшелые бетонные кирпичи
tile.brick_concrete_mossy_stairs.name=Cтупени из замшелых бетонных кирпичей
tile.brick_ducrete.name=Дюкретовые кирпичи
tile.brick_ducrete_stairs.name=Ступени из дюкретовых кирпичей
tile.brick_ducrete_stairs.name=Ступеньки из дюкретовых кирпичей
tile.brick_dungeon.name=Берцелианит кирпичи
tile.brick_dungeon_circle.name=Берцелианитовый круг
tile.brick_dungeon_flat.name=Берцелианит
tile.brick_dungeon_tile.name=Берцелианитовая плитка
tile.brick_fire.name=Шамотные кирпичи
tile.brick_fire_stairs.name=Ступени из шамотных кирпичей
tile.brick_fire_stairs.name=Ступеньки из шамотных кирпичей
tile.brick_jungle.name=Энаргитовые кирпичи
tile.brick_jungle_circle.name=Круг Механиста
tile.brick_jungle_cracked.name=Потресканные энаргитовые кирпичи
@ -5251,9 +5272,9 @@ tile.brick_jungle_mystic.name=Магические энаргитовые кир
tile.brick_jungle_ooze.name=Радиоактивные энаргитовые кирпичи
tile.brick_jungle_trap.name=Энаргитовые кирпичи-ловушка
tile.brick_light.name=Лёгкие кирпичи
tile.brick_light_stairs.name=Ступени из светлых кирпичей
tile.brick_light_stairs.name=Ступеньки из светлых кирпичей
tile.brick_obsidian.name=Обсидиановые кирпичи
tile.brick_obsidian_stairs.name=Ступени из обсидиановых кирпичей
tile.brick_obsidian_stairs.name=Ступеньки из обсидиановых кирпичей
tile.brick_red.name=Кирпичи красной комнаты
tile.brick_slab.brick_asbestos.name=Плита из асбестовых кирпичей
tile.brick_slab.brick_compound.name=Плита из композитной сетки
@ -5327,7 +5348,7 @@ tile.cmb_brick_reinforced.name=Усиленные кирпичи из стали
tile.compact_launcher.name=Компактная пусковая площадка
tile.concrete.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_broken.name=Плита из разрушившихся бетонных кирпичей
tile.concrete_brick_slab.brick_concrete_cracked.name=Плита из потресканных бетонных кирпичей
@ -5409,6 +5430,7 @@ tile.crate_lead.name=Ящик с радиоактивными материала
tile.crate_metal.name=Ящик с механизмами
tile.crate_red.name=Красный ящик
tile.crate_steel.name=Стальной ящик
tile.crate_supply.name=Ящик с припасами
tile.crate_template.name=Сборочный ящик
tile.crate_tungsten.name=Вольфрамовый ящик
tile.crate_weapon.name=Ящик с оружием
@ -5489,9 +5511,9 @@ tile.door_metal.name=Металлическая дверь
tile.door_office.name=Офисная дверь
tile.door_red.name=Красная дверь
tile.ducrete.name=Дюкретовая плитка
tile.ducrete_stairs.name=Ступени из дюкретовой плитки
tile.ducrete_stairs.name=Ступеньки из дюкретовой плитки
tile.ducrete_smooth.name=Дюкрет
tile.ducrete_smooth_stairs.name=Ступени из дюкрета
tile.ducrete_smooth_stairs.name=Ступеньки из дюкрета
tile.dummy_block.name=Блок-пустышка
tile.dummy_port.name=Блок-пустышка (Розетка)
tile.dungeon_chain.name=Металлическая цепь
@ -6117,7 +6139,7 @@ tile.red_pylon_medium_wood_transformer.name=Средний деревянный
tile.red_wire_coated.name=Медный кабель с покрытием
tile.refueler.name=Заправочная станция
tile.reinforced_brick.name=Усиленный камень
tile.reinforced_brick_stairs.name=Ступени из укреплённого камня
tile.reinforced_brick_stairs.name=Ступеньки из укреплённого камня
tile.reinforced_ducrete.name=Усиленный дюкрет
tile.reinforced_glass.name=Усиленное стекло
tile.reinforced_glass_pane.name=Усиленная стеклянная панель
@ -6126,7 +6148,7 @@ tile.reinforced_lamp_on.name=Усиленная лампа
tile.reinforced_light.name=Усиленный светящийся камень
tile.reinforced_sand.name=Усиленный песчаник
tile.reinforced_stone.name=Уплотненный камень
tile.reinforced_stone_stairs.name=Ступени из уплотнённого камня
tile.reinforced_stone_stairs.name=Ступеньки из уплотнённого камня
tile.reinforced_laminate.name=Усиленный ламинат
tile.reinforced_laminate_pane.name=Усиленная ламинатная панель
tile.rejuvinator.name=ГЭКК

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB