This commit is contained in:
Bob 2026-03-29 22:59:33 +02:00
parent 865ad1377f
commit 3fe07554f1
21 changed files with 835 additions and 294 deletions

View File

@ -15,6 +15,8 @@
* Redstone-over-Radio numeric display * Redstone-over-Radio numeric display
* Shows integer RoR values as numbers * Shows integer RoR values as numbers
* Can have up to two display panels per block * Can have up to two display panels per block
* Redstone-over-Radio Graph
* Similar to the numerical display, but instead of showing the number, it logs it every half second and displays it on a graph
## Changed ## Changed
* Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing * Doubled bismuth and tantalum yields from high-performance solvent bedrock ore processing
@ -35,4 +37,6 @@
* Fixed assembly machine NEI handler not being able to handle all thirteen inputs at once * Fixed assembly machine NEI handler not being able to handle all thirteen inputs at once
* Fixed RBMK fuel channels playing the meltdown sound when broken while hot with meltdowns disabled * Fixed RBMK fuel channels playing the meltdown sound when broken while hot with meltdowns disabled
* Fixed destroyer and crate minecarts having the same entity IDs, causing them to turn into each other when loading a save * Fixed destroyer and crate minecarts having the same entity IDs, causing them to turn into each other when loading a save
* Fixed GL state leak for ICF lasers * Fixed GL state leak for ICF lasers
* Fixed broken localization on some armor resistances
* Fixed afterburn resistance on HEV not working

View File

@ -1,6 +1,6 @@
mod_version=1.0.27 mod_version=1.0.27
# Empty build number makes a release type # Empty build number makes a release type
mod_build_number=5634 mod_build_number=5649
credits=HbMinecraft,\ credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\ \ rodolphito (explosion algorithms),\

View File

@ -1095,6 +1095,7 @@ public class ModBlocks {
public static Block rbmk_key_pad; public static Block rbmk_key_pad;
public static Block rbmk_gauge; public static Block rbmk_gauge;
public static Block rbmk_numitron; public static Block rbmk_numitron;
public static Block rbmk_graph;
public static Block rbmk_autoloader; public static Block rbmk_autoloader;
public static Block rbmk_loader; public static Block rbmk_loader;
public static Block rbmk_steam_inlet; public static Block rbmk_steam_inlet;
@ -2120,6 +2121,7 @@ public class ModBlocks {
rbmk_key_pad = new RBMKKeyPad().setBlockName("rbmk_key_pad").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display"); rbmk_key_pad = new RBMKKeyPad().setBlockName("rbmk_key_pad").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display"); rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_numitron = new RBMKNumitron().setBlockName("rbmk_numitron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display"); rbmk_numitron = new RBMKNumitron().setBlockName("rbmk_numitron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_graph = new RBMKGraph().setBlockName("rbmk_graph").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader"); rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader");
rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader");
rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet");
@ -3116,6 +3118,7 @@ public class ModBlocks {
register(rbmk_key_pad); register(rbmk_key_pad);
register(rbmk_gauge); register(rbmk_gauge);
register(rbmk_numitron); register(rbmk_numitron);
register(rbmk_graph);
register(rbmk_autoloader); register(rbmk_autoloader);
register(rbmk_loader); register(rbmk_loader);
register(rbmk_steam_inlet); register(rbmk_steam_inlet);

View File

@ -0,0 +1,50 @@
package com.hbm.blocks.machine.rbmk;
import org.lwjgl.opengl.GL11;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGraph;
import api.hbm.block.IToolable;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class RBMKGraph extends RBMKMiniPanelBase implements IToolable {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKGraph();
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
if(tool != ToolType.SCREWDRIVER) return false;
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
return true;
}
@Override
public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) {
super.renderInventoryBlock(block, meta, modelId, renderBlocks);
GL11.glPushMatrix();
GL11.glTranslated(0, -0.5, 0);
GL11.glRotated(-90, 0, 1, 0);
for(int i = 0; i < 2; i++) {
GL11.glPushMatrix();
GL11.glTranslated(0.25, i * -0.5 + 0.25, 0);
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rbmk_numitron_tex);
ResourceManager.rbmk_numitron.renderAll();
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
}

View File

@ -0,0 +1,150 @@
package com.hbm.inventory.gui;
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.machine.rbmk.TileEntityRBMKGraph;
import com.hbm.util.i18n.I18nUtil;
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.util.ResourceLocation;
// Literally just GUIScreenRBMKDisplay but with three lines switched out - this sucks ass
public class GUIScreenRBMKGraph extends GuiScreen {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rbmk_graph.png");
public TileEntityRBMKGraph graph;
protected int xSize = 256;
protected int ySize = 114;
protected int guiLeft;
protected int guiTop;
protected GuiTextField[] label = new GuiTextField[2];
protected GuiTextField[] rtty = new GuiTextField[2];
protected boolean[] active = new boolean[2];
protected boolean[] polling = new boolean[2];
public GUIScreenRBMKGraph(TileEntityRBMKGraph display) {
this.graph = display;
}
@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;
for(int i = 0; i < 2; i++) {
label[i] = new GuiTextField(this.fontRendererObj, guiLeft + 175 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
GUIScreenRBMKKeyPad.setupTextFieldStandard(label[i], 30, graph.graphs[i].label);
rtty[i] = new GuiTextField(this.fontRendererObj, guiLeft + 27 + oX, guiTop + 55 + oY + i * 36, 72 - oX * 2, 14);
GUIScreenRBMKKeyPad.setupTextFieldStandard(rtty[i], 10, graph.graphs[i].rtty);
active[i] = graph.graphs[i].active;
polling[i] = graph.graphs[i].polling;
}
}
@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.rbmkNumitron");
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
}
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);
for(int i = 0; i < 2; i++) {
if(this.active[i]) drawTexturedModalRect(guiLeft + 111, guiTop + i * 36 + 54, 18, 114, 16, 16);
if(this.polling[i]) drawTexturedModalRect(guiLeft + 128, guiTop + i * 36 + 53, 0, 114, 18, 18);
}
for(int i = 0; i < 2; i++) {
this.label[i].drawTextBox();
this.rtty[i].drawTextBox();
}
}
@Override
protected void mouseClicked(int x, int y, int b) {
super.mouseClicked(x, y, b);
for(int i = 0; i < 2; i++) {
if(guiLeft + 111 <= x && guiLeft + 111 + 16 > x && guiTop + i * 36 + 54 < y && guiTop + i * 36 + 54 + 16 >= y) {
this.active[i] = !this.active[i];
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.active[i] ? 0.25F : 0F)));
return;
}
if(guiLeft + 128 <= x && guiLeft + 128 + 18 > x && guiTop + i * 36 + 53 < y && guiTop + i * 36 + 53 + 18 >= y) {
this.polling[i] = !this.polling[i];
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.polling[i] ? 0.25F : 0F)));
return;
}
}
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();
byte active = 0;
byte polling = 0;
for(int i = 0; i < 2; i++) {
if(this.active[i]) active |= 1 << i;
if(this.polling[i]) polling |= 1 << i;
}
data.setByte("active", active);
data.setByte("polling", polling);
for(int i = 0; i < 2; i++) {
data.setString("label" + i, this.label[i].getText());
data.setString("rtty" + i, this.rtty[i].getText());
}
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, graph.xCoord, graph.yCoord, graph.zCoord));
return;
}
for(int i = 0; i < 2; i++) {
this.label[i].mouseClicked(x, y, b);
this.rtty[i].mouseClicked(x, y, b);
}
}
@Override
protected void keyTyped(char c, int b) {
for(int i = 0; i < 2; i++) {
if(this.label[i].textboxKeyTyped(c, b)) return;
if(this.rtty[i].textboxKeyTyped(c, b)) return;
}
if(b == 1 || b == 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

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings { public class RefStrings {
public static final String MODID = "hbm"; public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod"; public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (5634)"; public static final String VERSION = "1.0.27 BETA (5649)";
//HBM's Beta Naming Convention: //HBM's Beta Naming Convention:
//V T (X) //V T (X)
//V -> next release version //V -> next release version

View File

@ -414,6 +414,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKKeyPad.class, new RenderRBMKKeyPad()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKKeyPad.class, new RenderRBMKKeyPad());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKNumitron.class, new RenderRBMKNumitron()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKNumitron.class, new RenderRBMKNumitron());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGraph.class, new RenderRBMKGraph());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader());

View File

@ -796,6 +796,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.rbmk_key_pad, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_sender, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_key_pad, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_sender, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) });
addRecipeAuto(new ItemStack(ModBlocks.rbmk_gauge, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_gauge, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
addRecipeAuto(new ItemStack(ModBlocks.rbmk_numitron, 1), new Object[] { " R ", "CCC", " B ", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.NUMITRON) }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_numitron, 1), new Object[] { " R ", "CCC", " B ", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.NUMITRON) });
addRecipeAuto(new ItemStack(ModBlocks.rbmk_graph, 1), new Object[] { "R", "C", "B", 'R', ModBlocks.radio_torch_receiver, 'B', ModBlocks.rbmk_display_blank, 'C', ModItems.crt_display });
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk, 8), new Object[] { "R", 'R', ModBlocks.rbmk_blank }); addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk, 8), new Object[] { "R", 'R', ModBlocks.rbmk_blank });
addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk_smooth, 1), new Object[] { "R", 'R', ModBlocks.deco_rbmk }); addRecipeAuto(new ItemStack(ModBlocks.deco_rbmk_smooth, 1), new Object[] { "R", 'R', ModBlocks.deco_rbmk });

View File

@ -38,6 +38,7 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5); GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
switch(te.getBlockMetadata() - BlockDummyable.offset) { switch(te.getBlockMetadata() - BlockDummyable.offset) {
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;

View File

@ -0,0 +1,109 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGraph;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKGraph.GraphUnit;
import com.hbm.util.BobMathUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderRBMKGraph extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_LIGHTING);
switch(te.getBlockMetadata()) {
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
}
TileEntityRBMKGraph gauge = (TileEntityRBMKGraph) te;
for(int i = 0; i < 2; i++) {
GraphUnit unit = gauge.graphs[i];
if(!unit.active) continue;
GL11.glPushMatrix();
GL11.glTranslated(0.25, i * -0.5 + 0.25, 0);
GL11.glColor3f(1F, 1F, 1F);
this.bindTexture(ResourceManager.rbmk_numitron_tex);
ResourceManager.rbmk_numitron.renderAll();
GL11.glPushMatrix();
RenderArcFurnace.fullbright(true);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glLineWidth(2F);
FontRenderer font = Minecraft.getMinecraft().fontRenderer;
int height = font.FONT_HEIGHT;
int lowest = BobMathUtil.min(unit.values);
int highest = BobMathUtil.max(unit.values);
Tessellator tess = Tessellator.instance;
tess.startDrawing(GL11.GL_LINES);
tess.setColorOpaque_I(0x00ff00);
int range = highest - lowest;
for(int v = 0; v < unit.values.length - 1; v++) {
for(int j = 0; j < 2; j++) {
int k = v + j;
int flux = unit.values[k];
double dx = 0.03225;
double dy = 0.5 - 0.03125 + (flux - lowest) * 0.1875D / Math.max(range, 1);
double dz = 0.375 - k * 0.75 / (unit.values.length - 1);
tess.addVertex(dx, dy, dz);
}
}
tess.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glPushMatrix();
String labelLower = "" + lowest;
String labelUpper = "" + highest;
double lineScale = 0.0025D;
GL11.glTranslated(0.032, 0.5 - 0.03125 * 1.5, -0.375 + 0.03125);
GL11.glScaled(lineScale, -lineScale, lineScale);
GL11.glRotatef(90, 0, 1, 0);
font.drawString("" + labelLower, -font.getStringWidth(labelLower), -height / 2, 0x00ff00);
GL11.glTranslated(0, -0.03125 * 7 / lineScale, 0);
font.drawString("" + labelUpper, -font.getStringWidth(labelUpper), -height / 2, 0x00ff00);
GL11.glPopMatrix();
RenderArcFurnace.fullbright(false);
GL11.glPopMatrix();
if(unit.label != null && !unit.label.isEmpty()) {
GL11.glTranslated(0.01, 0.3125, 0);
int width = font.getStringWidth(unit.label);
float f3 = Math.min(0.0125F, 0.75F / Math.max(width, 1));
GL11.glScalef(f3, -f3, f3);
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
GL11.glRotatef(90, 0, 1, 0);
RenderArcFurnace.fullbright(true);
font.drawString(unit.label, - width / 2, - height / 2, 0x00ff00);
RenderArcFurnace.fullbright(false);
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
}

View File

@ -46,7 +46,7 @@ public abstract class TileEntityMachinePolluting extends TileEntityMachineBase i
} }
} }
public void pollute(FluidType type, FluidTrait.FluidReleaseType release, float amount) { public void pollute(FluidType type, FluidTrait.FluidReleaseType release, float amount) {
FluidTank tank;
FT_Polluting trait = type.getTrait(FT_Polluting.class); FT_Polluting trait = type.getTrait(FT_Polluting.class);
if(trait == null) return; if(trait == null) return;
if(release == FluidTrait.FluidReleaseType.VOID) return; if(release == FluidTrait.FluidReleaseType.VOID) return;

View File

@ -406,6 +406,7 @@ public class TileMappings {
put(TileEntityRBMKKeyPad.class, "tileentity_rbmk_keypad"); put(TileEntityRBMKKeyPad.class, "tileentity_rbmk_keypad");
put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge"); put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge");
put(TileEntityRBMKNumitron.class, "tileentity_rbmk_numitron"); put(TileEntityRBMKNumitron.class, "tileentity_rbmk_numitron");
put(TileEntityRBMKGraph.class, "tileentity_rbmk_graph");
put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet"); put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet");
put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet"); put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet");
put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader"); put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader");

View File

@ -7,6 +7,7 @@ import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType;
import com.hbm.interfaces.NotableComments; import com.hbm.interfaces.NotableComments;
import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.energymk2.IEnergyReceiverMK2;
import api.hbm.redstoneoverradio.IRORValueProvider;
import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -21,7 +22,7 @@ import net.minecraftforge.common.util.ForgeDirection;
@NotableComments @NotableComments
@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 abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent, IEnergyReceiverMK2 { public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent, IEnergyReceiverMK2, IRORValueProvider {
public double lastLevel; public double lastLevel;
public double level; public double level;
@ -226,4 +227,17 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
targetLevel = MathHelper.clamp_double(newLevel, 0, 1); targetLevel = MathHelper.clamp_double(newLevel, 0, 1);
return new Object[] {}; return new Object[] {};
} }
@Override
public String[] getFunctionInfo() {
return new String[] {
PREFIX_VALUE + "extraction"
};
}
@Override
public String provideRORValue(String name) {
if((PREFIX_VALUE + "extraction").equals(name)) return "" + (int) (this.level * 100);
return null;
}
} }

View File

@ -198,6 +198,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement
@Override @Override
public String[] getFunctionInfo() { public String[] getFunctionInfo() {
return new String[] { return new String[] {
PREFIX_VALUE + "extraction",
PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent", PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent",
PREFIX_FUNCTION + "extendrods" + NAME_SEPARATOR + "percent" PREFIX_FUNCTION + "extendrods" + NAME_SEPARATOR + "percent"
}; };

View File

@ -0,0 +1,176 @@
package com.hbm.tileentity.machine.rbmk;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.gui.GUIScreenRBMKGraph;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.tileentity.network.RTTYSystem;
import com.hbm.tileentity.network.RTTYSystem.RTTYChannel;
import com.hbm.util.BufferUtil;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver {
/* __________
* / /|
* /________ / |
* | _______ | |
* ||_______|| |
* | _______ | |
* ||_______|| /
* |_________|/
*/
public GraphUnit[] graphs = new GraphUnit[2];
public TileEntityRBMKGraph() {
for(int i = 0; i < 2; i++) this.graphs[i] = new GraphUnit(i);
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
if(worldObj.getTotalWorldTime() % 10 == 0) for(int i = 0; i < 2; i++) this.graphs[i].update();
this.networkPackNT(50);
}
}
@Override
public void serialize(ByteBuf buf) {
super.serialize(buf);
for(int i = 0; i < 2; i++) this.graphs[i].serialize(buf);
}
@Override
public void deserialize(ByteBuf buf) {
super.deserialize(buf);
for(int i = 0; i < 2; i++) this.graphs[i].deserialize(buf);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
for(int i = 0; i < 2; i++) this.graphs[i].readFromNBT(nbt, i);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
for(int i = 0; i < 2; i++) this.graphs[i].writeToNBT(nbt, i);
}
public class GraphUnit {
/** If the value should be pulled from the RTTY system every tick, otherwise only on state change */
public boolean polling;
/** Label on the graph as rendered on the panel */
public String label = "";
/** What channel to read values from */
public String rtty = "";
/** The current read value on the display */
public int[] values = new int[30]; // 2 values/s for 15 seconds
/** Whether this graph is visible on the panel */
public boolean active;
public GraphUnit(int initialIndex) {
label = "Graph " + (initialIndex + 1);
}
public void update() {
if(!active) return;
if(rtty == null || rtty.isEmpty()) return;
RTTYChannel chan = RTTYSystem.listen(worldObj, rtty);
int sigVal = 0;
if(chan != null && chan.timeStamp < worldObj.getTotalWorldTime() - 1) chan = null;
// always accept new signals
if(chan != null && chan.signal != null) {
try { sigVal = Integer.parseInt(chan.signal.toString()); } catch(Exception ex) { }
pushValue(sigVal);
} else {
// if there's no new signal and we're polling, set to 0
if(polling) pushValue(0);
}
}
public void pushValue(int value) {
for(int i = 1; i < values.length; i++) {
values[i - 1] = values[i];
}
values[values.length - 1] = value;
}
public void serialize(ByteBuf buf) {
buf.writeBoolean(active);
buf.writeBoolean(polling);
BufferUtil.writeString(buf, label);
BufferUtil.writeString(buf, rtty);
// original idea had the system send the min value, max value, and all values
// crunched down to single bytes because the graph simply doesn't need this much resolution
if(active) for(int i = 0; i < values.length; i++) buf.writeInt(values[i]);
// was overkill though
}
public void deserialize(ByteBuf buf) {
active = buf.readBoolean();
polling = buf.readBoolean();
label = BufferUtil.readString(buf);
rtty = BufferUtil.readString(buf);
if(active) for(int i = 0; i < values.length; i++) values[i] = buf.readInt();
}
public void readFromNBT(NBTTagCompound nbt, int index) {
this.active = nbt.getBoolean("active" + index);
this.polling = nbt.getBoolean("polling" + index);
this.label = nbt.getString("label" + index);
this.rtty = nbt.getString("rtty" + index);
this.values = nbt.getIntArray("value" + index);
}
public void writeToNBT(NBTTagCompound nbt, int index) {
nbt.setBoolean("active" + index, active);
nbt.setBoolean("polling" + index, polling);
nbt.setString("label" + index, label);
nbt.setString("rtty" + index, rtty);
nbt.setIntArray("value" + index, values);
}
}
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenRBMKGraph(this); }
@Override
public boolean hasPermission(EntityPlayer player) {
return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 15 * 15;
}
@Override
public void receiveControl(NBTTagCompound data) {
int active = data.getByte("active");
int polling = data.getByte("polling");
for(int i = 0; i < 2; i++) {
this.graphs[i].active = (active & (1 << i)) != 0;
this.graphs[i].polling = (polling & (1 << i)) != 0;
}
for(int i = 0; i < 2; i++) {
GraphUnit graph = this.graphs[i];
graph.label = data.getString("label" + i);
graph.rtty = data.getString("rtty" + i);
}
}
}

View File

@ -79,7 +79,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
public String rtty = ""; public String rtty = "";
/** The current read value on the display */ /** The current read value on the display */
public int value; public int value;
/** Whether this gauge is visible on the panel */ /** Whether this display is visible on the panel */
public boolean active; public boolean active;
public DisplayUnit(int initialIndex) { public DisplayUnit(int initialIndex) {

View File

@ -541,7 +541,7 @@ public class DamageResistanceHandler {
public Resistance otherResistance; public Resistance otherResistance;
public Resistance getResistance(DamageSource source) { public Resistance getResistance(DamageSource source) {
Resistance exact = exactResistances.get(source.damageType); Resistance exact = exactResistances.get(source.damageType.toLowerCase());
if(exact != null) return exact; if(exact != null) return exact;
Resistance category = categoryResistances.get(typeToCategory(source)); Resistance category = categoryResistances.get(typeToCategory(source));
if(category != null) return category; if(category != null) return category;

View File

@ -464,6 +464,7 @@ container.rbmkBoiler=RBMK Dampfkanal
container.rbmkControl=RBMK Steuerstäbe container.rbmkControl=RBMK Steuerstäbe
container.rbmkControlAuto=RBMK Automatische Steuerstäbe container.rbmkControlAuto=RBMK Automatische Steuerstäbe
container.rbmkGauge=Redstone-over-Radio Meter container.rbmkGauge=Redstone-over-Radio Meter
container.rbmkGraph=Redstone-over-Radio Graph
container.rbmkHeater=RBMK Heizer container.rbmkHeater=RBMK Heizer
container.rbmkKeyPad=Redstone-over-Radio Tastenfeld container.rbmkKeyPad=Redstone-over-Radio Tastenfeld
container.rbmkNumitron=Redstone-over-Radio Ziffernanzeige container.rbmkNumitron=Redstone-over-Radio Ziffernanzeige
@ -540,8 +541,8 @@ damage.category.FIRE=Feuer
damage.category.PHYS=Physisch damage.category.PHYS=Physisch
damage.exact.drown=Ertrinken damage.exact.drown=Ertrinken
damage.exact.fall=Fallschaden damage.exact.fall=Fallschaden
damage.exact.LASER=Laser damage.exact.laser=Laser
damage.exact.onFire=Nachbrennen damage.exact.onfire=Nachbrennen
damage.other=Andere damage.other=Andere
death.attack.acid=%1$s fiel in Säure. death.attack.acid=%1$s fiel in Säure.
@ -4908,6 +4909,7 @@ tile.rbmk_crane_console.name=RBMK Kransteuerung
tile.rbmk_display.name=RBMK Anzeigepanel tile.rbmk_display.name=RBMK Anzeigepanel
tile.rbmk_display_blank.name=Leeres Redstone-over-Radio Panel tile.rbmk_display_blank.name=Leeres Redstone-over-Radio Panel
tile.rbmk_gauge.name=Redstone-over-Radio Meter tile.rbmk_gauge.name=Redstone-over-Radio Meter
tile.rbmk_graph.name=Redstone-over-Radio Graph
tile.rbmk_heater.name=RBMK-Heizer tile.rbmk_heater.name=RBMK-Heizer
tile.rbmk_key_pad.name=Redstone-over-Radio Tastenfeld tile.rbmk_key_pad.name=Redstone-over-Radio Tastenfeld
tile.rbmk_loader.name=RBMK-Dampfadapter tile.rbmk_loader.name=RBMK-Dampfadapter

View File

@ -872,6 +872,7 @@ container.rbmkBoiler=RBMK Steam Channel
container.rbmkControl=RBMK Control Rods container.rbmkControl=RBMK Control Rods
container.rbmkControlAuto=RBMK Automatic Control Rods container.rbmkControlAuto=RBMK Automatic Control Rods
container.rbmkGauge=Redstone-over-Radio Gauge container.rbmkGauge=Redstone-over-Radio Gauge
container.rbmkGraph=Redstone-over-Radio Graph
container.rbmkHeater=RBMK Fluid Heater container.rbmkHeater=RBMK Fluid Heater
container.rbmkKeyPad=Redstone-over-Radio Keypad container.rbmkKeyPad=Redstone-over-Radio Keypad
container.rbmkNumitron=Redstone-over-Radio Numeric Display container.rbmkNumitron=Redstone-over-Radio Numeric Display
@ -960,8 +961,8 @@ damage.category.FIRE=Fire
damage.category.PHYS=Physical damage.category.PHYS=Physical
damage.exact.drown=Drowning damage.exact.drown=Drowning
damage.exact.fall=Fall damage damage.exact.fall=Fall damage
damage.exact.LASER=Laser damage.exact.laser=Laser
damage.exact.onFire=Afterburn damage.exact.onfire=Afterburn
damage.other=Other damage.other=Other
death.attack.acid=%1$s fell into acid. death.attack.acid=%1$s fell into acid.
@ -6176,6 +6177,7 @@ tile.rbmk_crane_console.name=RBMK Crane Console
tile.rbmk_display.name=RBMK Display Panel tile.rbmk_display.name=RBMK Display Panel
tile.rbmk_display_blank.name=Blank Redstone-over-Radio Panel tile.rbmk_display_blank.name=Blank Redstone-over-Radio Panel
tile.rbmk_gauge.name=Redstone-over-Radio Gauge tile.rbmk_gauge.name=Redstone-over-Radio Gauge
tile.rbmk_graph.name=Redstone-over-Radio Graph
tile.rbmk_heater.name=RBMK Fluid Heater tile.rbmk_heater.name=RBMK Fluid Heater
tile.rbmk_key_pad.name=Redstone-over-Radio Keypad tile.rbmk_key_pad.name=Redstone-over-Radio Keypad
tile.rbmk_loader.name=RBMK Steam Connector tile.rbmk_loader.name=RBMK Steam Connector

View File

@ -7172,6 +7172,31 @@ vt 0.902655 0.572650
vt 0.902655 0.111111 vt 0.902655 0.111111
vt 0.902655 0.264957 vt 0.902655 0.264957
vt 0.902655 0.521368 vt 0.902655 0.521368
vt 0.929204 0.564103
vt 0.938053 0.512821
vt 0.938053 0.564103
vt 0.929204 0.153846
vt 0.938053 0.205128
vt 0.929204 0.205128
vt 0.929204 0.102564
vt 0.938053 0.051282
vt 0.938053 0.102564
vt 0.929204 0.307692
vt 0.938053 0.358974
vt 0.929204 0.358974
vt 0.929204 0.461538
vt 0.929204 0.512821
vt 0.929204 0.051282
vt 0.938053 0.000000
vt 0.929204 0.256410
vt 0.938053 0.307692
vt 0.938053 0.410256
vt 0.938053 0.461538
vt 0.929204 0.615385
vt 0.938053 0.615385
vt 0.938053 0.256410
vt 0.938053 0.153846
vt 0.929204 0.410256
vt 0.884956 0.358974 vt 0.884956 0.358974
vt 0.823009 0.333333 vt 0.823009 0.333333
vt 0.880531 0.333333 vt 0.880531 0.333333
@ -7400,6 +7425,7 @@ vt 0.902655 0.606838
vt 0.902655 0.145299 vt 0.902655 0.145299
vt 0.902655 0.299145 vt 0.902655 0.299145
vt 0.902655 0.555556 vt 0.902655 0.555556
vt 0.929204 0.000000
vt 0.825221 0.512821 vt 0.825221 0.512821
vt 0.878319 0.307692 vt 0.878319 0.307692
vt 0.825221 0.307692 vt 0.825221 0.307692
@ -9709,18 +9735,18 @@ f 854/3315/164 843/3674/212 855/1386/212
f 851/1392/158 840/3675/209 852/3318/209 f 851/1392/158 840/3675/209 852/3318/209
f 848/1398/157 837/3676/211 849/3321/211 f 848/1398/157 837/3676/211 849/3321/211
f 855/3314/212 844/3677/214 856/1384/214 f 855/3314/212 844/3677/214 856/1384/214
f 872/1356/213 861/1391/209 860/1387/213 f 872/3678/213 861/3679/209 860/3680/213
f 880/1366/159 868/1403/208 879/1369/208 f 880/3681/159 868/3682/208 879/3683/208
f 869/1368/214 858/1383/212 857/1382/214 f 869/3684/214 858/3685/212 857/3686/214
f 877/1373/157 864/1397/211 876/1375/211 f 877/3687/157 864/3688/211 876/3689/211
f 874/1355/158 861/1391/209 873/1353/209 f 874/3690/158 861/3679/209 873/3691/209
f 870/1363/212 859/1385/164 858/1383/212 f 870/3692/212 859/3693/164 858/3685/212
f 878/1371/207 865/1399/157 877/1373/157 f 878/3694/207 865/3695/157 877/3687/157
f 874/1355/158 863/1395/210 862/1393/158 f 874/3690/158 863/3696/210 862/3697/158
f 871/3305/164 860/1387/213 859/1389/164 f 871/3698/164 860/3680/213 859/3699/164
f 879/1369/208 866/1401/207 878/1371/207 f 879/3683/208 866/3700/207 878/3694/207
f 869/1368/214 867/1381/159 880/1366/159 f 869/3684/214 867/3701/159 880/3681/159
f 876/1375/211 863/1395/210 875/1377/210 f 876/3689/211 863/3696/210 875/3702/210
f 906/1449/159 907/1468/174 905/1467/159 f 906/1449/159 907/1468/174 905/1467/159
f 908/1451/174 909/1470/164 907/1468/174 f 908/1451/174 909/1470/164 907/1468/174
f 910/1453/164 911/1472/192 909/1470/164 f 910/1453/164 911/1472/192 909/1470/164
@ -9745,114 +9771,114 @@ f 1045/3383/171 1046/1603/221 1044/1602/171
f 1046/1603/221 1049/1586/157 1048/1605/157 f 1046/1603/221 1049/1586/157 1048/1605/157
f 1049/1586/157 1050/1607/222 1048/1605/157 f 1049/1586/157 1050/1607/222 1048/1605/157
f 1050/1607/222 1037/1556/179 1036/1608/179 f 1050/1607/222 1037/1556/179 1036/1608/179
f 935/3678/223 1064/3679/224 936/3680/224 f 935/3703/223 1064/3704/224 936/3705/224
f 929/3681/184 1064/3679/224 1063/3682/184 f 929/3706/184 1064/3704/224 1063/3707/184
f 929/3683/184 1062/3684/225 930/3685/225 f 929/3708/184 1062/3709/225 930/3710/225
f 930/3685/225 1061/3686/226 931/3687/226 f 930/3710/225 1061/3711/226 931/3712/226
f 931/3687/226 1060/3688/227 932/3689/227 f 931/3712/226 1060/3713/227 932/3714/227
f 932/3689/227 1059/3690/185 933/3691/185 f 932/3714/227 1059/3715/185 933/3716/185
f 933/3691/185 1066/3692/228 934/3693/228 f 933/3716/185 1066/3717/228 934/3718/228
f 934/3693/228 1065/3694/223 935/3678/223 f 934/3718/228 1065/3719/223 935/3703/223
f 927/3695/229 988/3696/230 987/3697/229 f 927/3720/229 988/3721/230 987/3722/229
f 921/3698/182 988/3696/230 928/3699/230 f 921/3723/182 988/3721/230 928/3724/230
f 922/3700/231 981/3701/182 921/3702/182 f 922/3725/231 981/3726/182 921/3727/182
f 922/3700/231 983/3703/232 982/3704/231 f 922/3725/231 983/3728/232 982/3729/231
f 924/3705/233 983/3703/232 923/3706/232 f 924/3730/233 983/3728/232 923/3731/232
f 924/3705/233 985/3707/183 984/3708/233 f 924/3730/233 985/3732/183 984/3733/233
f 926/3709/234 985/3707/183 925/3710/183 f 926/3734/234 985/3732/183 925/3735/183
f 926/3709/234 987/3697/229 986/3711/234 f 926/3734/234 987/3722/229 986/3736/234
f 1035/3712/235 957/3713/180 964/3714/235 f 1035/3737/235 957/3738/180 964/3739/235
f 957/3715/180 1029/3716/236 958/3717/236 f 957/3740/180 1029/3741/236 958/3742/236
f 1029/3716/236 959/3718/237 958/3717/236 f 1029/3741/236 959/3743/237 958/3742/236
f 1030/3719/237 960/3720/238 959/3718/237 f 1030/3744/237 960/3745/238 959/3743/237
f 960/3720/238 1032/3721/181 961/3722/181 f 960/3745/238 1032/3746/181 961/3747/181
f 1032/3721/181 962/3723/239 961/3722/181 f 1032/3746/181 962/3748/239 961/3747/181
f 1033/3724/239 963/3725/240 962/3723/239 f 1033/3749/239 963/3750/240 962/3748/239
f 1034/3726/240 964/3714/235 963/3725/240 f 1034/3751/240 964/3739/235 963/3750/240
f 1009/3727/186 970/3728/241 969/3729/186 f 1009/3752/186 970/3753/241 969/3754/186
f 1008/3730/242 969/3731/186 968/3732/242 f 1008/3755/242 969/3756/186 968/3757/242
f 1007/3733/243 968/3732/242 967/3734/243 f 1007/3758/243 968/3757/242 967/3759/243
f 1006/3735/244 967/3734/243 966/3736/244 f 1006/3760/244 967/3759/243 966/3761/244
f 1005/3737/187 966/3736/244 965/3738/187 f 1005/3762/187 966/3761/244 965/3763/187
f 1012/3739/245 965/3738/187 972/3740/245 f 1012/3764/245 965/3763/187 972/3765/245
f 971/3741/246 1012/3739/245 972/3740/245 f 971/3766/246 1012/3764/245 972/3765/245
f 1010/3742/241 971/3741/246 970/3728/241 f 1010/3767/241 971/3766/246 970/3753/241
f 1016/3743/162 1056/3744/247 1017/3745/247 f 1016/3768/162 1056/3769/247 1017/3770/247
f 1054/3746/248 1016/3747/162 1015/3748/248 f 1054/3771/248 1016/3772/162 1015/3773/248
f 1014/3749/249 1054/3746/248 1015/3748/248 f 1014/3774/249 1054/3771/248 1015/3773/248
f 1052/3750/250 1014/3749/249 1013/3751/250 f 1052/3775/250 1014/3774/249 1013/3776/250
f 1018/3752/251 1058/3753/252 1019/3754/252 f 1018/3777/251 1058/3778/252 1019/3779/252
f 1056/3744/247 1018/3752/251 1017/3745/247 f 1056/3769/247 1018/3777/251 1017/3770/247
f 1333/1876/253 1396/3755/254 1332/1874/254 f 1333/1876/253 1396/3780/254 1332/1874/254
f 1306/1886/255 1371/1953/159 1307/1885/159 f 1306/1886/255 1371/1953/159 1307/1885/159
f 1334/1875/256 1397/3756/253 1333/1876/253 f 1334/1875/256 1397/3781/253 1333/1876/253
f 1307/1887/159 1372/1956/257 1308/1890/257 f 1307/1887/159 1372/1956/257 1308/1890/257
f 1335/1878/161 1398/3757/256 1334/1875/256 f 1335/1878/161 1398/3782/256 1334/1875/256
f 1308/1890/257 1373/1958/258 1309/1893/258 f 1308/1890/257 1373/1958/258 1309/1893/258
f 1336/1880/259 1399/3758/161 1335/1878/161 f 1336/1880/259 1399/3783/161 1335/1878/161
f 1309/1893/258 1374/1960/260 1310/1892/260 f 1309/1893/258 1374/1960/260 1310/1892/260
f 1283/1906/156 1347/1971/254 1284/1904/254 f 1283/1906/156 1347/1971/254 1284/1904/254
f 1337/1882/261 1400/3759/259 1336/1880/259 f 1337/1882/261 1400/3784/259 1336/1880/259
f 1310/1892/260 1375/1962/163 1311/1896/163 f 1310/1892/260 1375/1962/163 1311/1896/163
f 1284/1904/254 1349/1974/253 1285/1907/253 f 1284/1904/254 1349/1974/253 1285/1907/253
f 1338/1884/262 1401/3760/261 1337/1882/261 f 1338/1884/262 1401/3785/261 1337/1882/261
f 1311/1896/163 1376/1964/263 1312/1899/263 f 1311/1896/163 1376/1964/263 1312/1899/263
f 1285/1907/253 1350/1976/256 1286/1909/256 f 1285/1907/253 1350/1976/256 1286/1909/256
f 1339/3428/158 1402/3761/262 1338/1884/262 f 1339/3428/158 1402/3786/262 1338/1884/262
f 1312/1899/263 1377/1965/264 1313/1898/264 f 1312/1899/263 1377/1965/264 1313/1898/264
f 1286/1909/256 1351/1978/161 1287/1911/161 f 1286/1909/256 1351/1978/161 1287/1911/161
f 1340/1888/265 1403/3762/158 1339/1889/158 f 1340/1888/265 1403/3787/158 1339/1889/158
f 1313/1898/264 1378/1967/266 1314/1900/266 f 1313/1898/264 1378/1967/266 1314/1900/266
f 1287/1911/161 1352/1980/259 1288/1913/259 f 1287/1911/161 1352/1980/259 1288/1913/259
f 1341/1891/267 1404/3763/265 1340/1888/265 f 1341/1891/267 1404/3788/265 1340/1888/265
f 1314/1900/266 1348/1969/156 1283/1902/156 f 1314/1900/266 1348/1969/156 1283/1902/156
f 1288/1913/259 1353/1982/261 1289/1915/261 f 1288/1913/259 1353/1982/261 1289/1915/261
f 1342/1895/268 1405/3764/267 1341/1891/267 f 1342/1895/268 1405/3789/267 1341/1891/267
f 1316/1908/269 1380/3765/155 1315/1905/155 f 1316/1908/269 1380/3790/155 1315/1905/155
f 1289/1915/261 1354/1984/262 1290/1917/262 f 1289/1915/261 1354/1984/262 1290/1917/262
f 1343/1894/160 1406/3766/268 1342/1895/268 f 1343/1894/160 1406/3791/268 1342/1895/268
f 1317/1910/270 1379/3767/269 1316/1908/269 f 1317/1910/270 1379/3792/269 1316/1908/269
f 1290/1917/262 1355/1986/158 1291/1919/158 f 1290/1917/262 1355/1986/158 1291/1919/158
f 1344/1897/271 1407/3768/160 1343/1894/160 f 1344/1897/271 1407/3793/160 1343/1894/160
f 1318/1912/272 1381/3769/270 1317/1910/270 f 1318/1912/272 1381/3794/270 1317/1910/270
f 1291/1921/158 1356/1989/265 1292/1925/265 f 1291/1921/158 1356/1989/265 1292/1925/265
f 1345/1901/273 1408/3770/271 1344/1897/271 f 1345/1901/273 1408/3795/271 1344/1897/271
f 1319/1914/162 1382/3771/272 1318/1912/272 f 1319/1914/162 1382/3796/272 1318/1912/272
f 1292/1925/265 1357/1990/267 1293/1924/267 f 1292/1925/265 1357/1990/267 1293/1924/267
f 1346/1903/274 1409/3772/273 1345/1901/273 f 1346/1903/274 1409/3797/273 1345/1901/273
f 1320/1916/275 1383/3773/162 1319/1914/162 f 1320/1916/275 1383/3798/162 1319/1914/162
f 1293/1924/267 1358/1929/268 1294/1861/268 f 1293/1924/267 1358/1929/268 1294/1861/268
f 1315/3429/155 1410/3774/274 1346/1903/274 f 1315/3429/155 1410/3799/274 1346/1903/274
f 1321/1918/276 1384/3775/275 1320/1916/275 f 1321/1918/276 1384/3800/275 1320/1916/275
f 1294/1861/268 1359/1928/160 1295/1859/160 f 1294/1861/268 1359/1928/160 1295/1859/160
f 1322/1920/255 1385/3776/276 1321/1918/276 f 1322/1920/255 1385/3801/276 1321/1918/276
f 1295/1859/160 1360/1931/271 1296/1862/271 f 1295/1859/160 1360/1931/271 1296/1862/271
f 1323/3430/159 1386/3777/255 1322/1920/255 f 1323/3430/159 1386/3802/255 1322/1920/255
f 1296/1862/271 1361/1933/273 1297/1864/273 f 1296/1862/271 1361/1933/273 1297/1864/273
f 1324/1922/257 1387/3778/159 1323/1923/159 f 1324/1922/257 1387/3803/159 1323/1923/159
f 1297/1864/273 1362/1935/274 1298/1866/274 f 1297/1864/273 1362/1935/274 1298/1866/274
f 1325/1926/258 1388/3779/257 1324/1922/257 f 1325/1926/258 1388/3804/257 1324/1922/257
f 1298/1866/274 1363/1937/155 1299/1868/155 f 1298/1866/274 1363/1937/155 1299/1868/155
f 1326/1860/260 1389/3780/258 1325/1926/258 f 1326/1860/260 1389/3805/258 1325/1926/258
f 1299/1872/155 1364/1939/269 1300/1870/269 f 1299/1872/155 1364/1939/269 1300/1870/269
f 1327/1863/163 1390/3781/260 1326/1860/260 f 1327/1863/163 1390/3806/260 1326/1860/260
f 1300/1870/269 1365/1942/270 1301/1873/270 f 1300/1870/269 1365/1942/270 1301/1873/270
f 1328/1865/263 1391/3782/163 1327/1863/163 f 1328/1865/263 1391/3807/163 1327/1863/163
f 1301/1873/270 1366/1944/272 1302/1877/272 f 1301/1873/270 1366/1944/272 1302/1877/272
f 1329/1867/264 1392/3783/263 1328/1865/263 f 1329/1867/264 1392/3808/263 1328/1865/263
f 1302/1877/272 1367/1946/162 1303/1879/162 f 1302/1877/272 1367/1946/162 1303/1879/162
f 1330/1869/266 1393/3784/264 1329/1867/264 f 1330/1869/266 1393/3809/264 1329/1867/264
f 1303/1879/162 1368/1948/275 1304/1881/275 f 1303/1879/162 1368/1948/275 1304/1881/275
f 1331/3427/156 1394/3785/266 1330/1869/266 f 1331/3427/156 1394/3810/266 1330/1869/266
f 1304/1881/275 1369/1950/276 1305/1883/276 f 1304/1881/275 1369/1950/276 1305/1883/276
f 1332/1874/254 1395/3786/156 1331/1871/156 f 1332/1874/254 1395/3811/156 1331/1871/156
f 1305/1883/276 1370/1952/255 1306/1886/255 f 1305/1883/276 1370/1952/255 1306/1886/255
f 1764/3787/163 1780/3788/277 1765/3789/277 f 1764/3812/163 1780/3813/277 1765/3814/277
f 1778/3790/278 1764/3791/163 1763/3792/278 f 1778/3815/278 1764/3816/163 1763/3817/278
f 1762/3793/279 1778/3790/278 1763/3792/278 f 1762/3818/279 1778/3815/278 1763/3817/278
f 1761/3794/280 1777/3795/279 1762/3793/279 f 1761/3819/280 1777/3820/279 1762/3818/279
f 1766/3796/281 1782/3797/282 1767/3798/282 f 1766/3821/281 1782/3822/282 1767/3823/282
f 1780/3788/277 1766/3796/281 1765/3789/277 f 1780/3813/277 1766/3821/281 1765/3814/277
f 977/1511/169 1760/2488/283 978/1512/283 f 977/1511/169 1760/2488/283 978/1512/283
f 1760/2488/283 979/1514/157 978/1512/283 f 1760/2488/283 979/1514/157 978/1512/283
f 979/1514/157 1758/2485/284 980/1516/284 f 979/1514/157 1758/2485/284 980/1516/284
@ -9893,50 +9919,50 @@ f 2105/3599/179 2106/2924/222 2104/2923/179
f 2107/2905/222 2108/2926/157 2106/2924/222 f 2107/2905/222 2108/2926/157 2106/2924/222
f 2108/2926/157 2111/2878/221 2110/2927/221 f 2108/2926/157 2111/2878/221 2110/2927/221
f 2110/2927/221 2097/2877/171 2096/2929/171 f 2110/2927/221 2097/2877/171 2096/2929/171
f 2015/3799/291 2124/3800/292 2016/3801/292 f 2015/3824/291 2124/3825/292 2016/3826/292
f 2009/3802/185 2124/3800/292 2123/3803/185 f 2009/3827/185 2124/3825/292 2123/3828/185
f 2009/3804/185 2122/3805/293 2010/3806/293 f 2009/3829/185 2122/3830/293 2010/3831/293
f 2011/3807/294 2122/3805/293 2121/3808/294 f 2011/3832/294 2122/3830/293 2121/3833/294
f 2011/3807/294 2120/3809/295 2012/3810/295 f 2011/3832/294 2120/3834/295 2012/3835/295
f 2012/3810/295 2119/3811/184 2013/3812/184 f 2012/3835/295 2119/3836/184 2013/3837/184
f 2013/3812/184 2126/3813/296 2014/3814/296 f 2013/3837/184 2126/3838/296 2014/3839/296
f 2014/3814/296 2125/3815/291 2015/3799/291 f 2014/3839/296 2125/3840/291 2015/3824/291
f 2008/3816/297 2047/3817/298 2007/3818/298 f 2008/3841/297 2047/3842/298 2007/3843/298
f 2001/3819/183 2048/3820/297 2008/3816/297 f 2001/3844/183 2048/3845/297 2008/3841/297
f 2001/3821/183 2042/3822/299 2041/3823/183 f 2001/3846/183 2042/3847/299 2041/3848/183
f 2002/3824/299 2043/3825/300 2042/3822/299 f 2002/3849/299 2043/3850/300 2042/3847/299
f 2004/3826/301 2043/3825/300 2003/3827/300 f 2004/3851/301 2043/3850/300 2003/3852/300
f 2004/3826/301 2045/3828/182 2044/3829/301 f 2004/3851/301 2045/3853/182 2044/3854/301
f 2006/3830/302 2045/3828/182 2005/3831/182 f 2006/3855/302 2045/3853/182 2005/3856/182
f 2006/3830/302 2047/3817/298 2046/3832/302 f 2006/3855/302 2047/3842/298 2046/3857/302
f 2095/3833/303 2017/3834/181 2024/3835/303 f 2095/3858/303 2017/3859/181 2024/3860/303
f 2017/3836/181 2089/3837/304 2018/3838/304 f 2017/3861/181 2089/3862/304 2018/3863/304
f 2089/3837/304 2019/3839/305 2018/3838/304 f 2089/3862/304 2019/3864/305 2018/3863/304
f 2090/3840/305 2020/3841/306 2019/3839/305 f 2090/3865/305 2020/3866/306 2019/3864/305
f 2020/3841/306 2092/3842/180 2021/3843/180 f 2020/3866/306 2092/3867/180 2021/3868/180
f 2092/3842/180 2022/3844/307 2021/3843/180 f 2092/3867/180 2022/3869/307 2021/3868/180
f 2093/3845/307 2023/3846/308 2022/3844/307 f 2093/3870/307 2023/3871/308 2022/3869/307
f 2023/3846/308 2095/3833/303 2024/3835/303 f 2023/3871/308 2095/3858/303 2024/3860/303
f 2029/3847/187 2070/3848/309 2030/3849/309 f 2029/3872/187 2070/3873/309 2030/3874/309
f 2068/3850/310 2029/3851/187 2028/3852/310 f 2068/3875/310 2029/3876/187 2028/3877/310
f 2027/3853/311 2068/3850/310 2028/3852/310 f 2027/3878/311 2068/3875/310 2028/3877/310
f 2066/3854/312 2027/3853/311 2026/3855/312 f 2066/3879/312 2027/3878/311 2026/3880/312
f 2065/3856/186 2026/3855/312 2025/3857/186 f 2065/3881/186 2026/3880/312 2025/3882/186
f 2072/3858/313 2025/3857/186 2032/3859/313 f 2072/3883/313 2025/3882/186 2032/3884/313
f 2031/3860/314 2072/3858/313 2032/3859/313 f 2031/3885/314 2072/3883/313 2032/3884/313
f 2070/3848/309 2031/3860/314 2030/3849/309 f 2070/3873/309 2031/3885/314 2030/3874/309
f 2076/3861/161 2116/3862/315 2077/3863/315 f 2076/3886/161 2116/3887/315 2077/3888/315
f 2114/3864/316 2076/3865/161 2075/3866/316 f 2114/3889/316 2076/3890/161 2075/3891/316
f 2074/3867/317 2114/3864/316 2075/3866/316 f 2074/3892/317 2114/3889/316 2075/3891/316
f 2112/3868/318 2074/3867/317 2073/3869/318 f 2112/3893/318 2074/3892/317 2073/3894/318
f 2078/3870/319 2118/3871/320 2079/3872/320 f 2078/3895/319 2118/3896/320 2079/3897/320
f 2116/3862/315 2078/3870/319 2077/3863/315 f 2116/3887/315 2078/3895/319 2077/3888/315
f 2299/3873/160 2285/3874/321 2284/3875/160 f 2299/3898/160 2285/3899/321 2284/3900/160
f 2298/3876/322 2284/3877/160 2283/3878/322 f 2298/3901/322 2284/3902/160 2283/3903/322
f 2297/3879/323 2283/3878/322 2282/3880/323 f 2297/3904/323 2283/3903/322 2282/3905/323
f 2296/3881/324 2282/3880/323 2281/3882/324 f 2296/3906/324 2282/3905/323 2281/3907/324
f 2286/3883/325 2302/3884/326 2287/3885/326 f 2286/3908/325 2302/3909/326 2287/3910/326
f 2300/3886/321 2286/3883/325 2285/3874/321 f 2300/3911/321 2286/3908/325 2285/3899/321
f 2037/2831/168 2280/3196/284 2038/2832/284 f 2037/2831/168 2280/3196/284 2038/2832/284
f 2280/3196/284 2039/2834/157 2038/2832/284 f 2280/3196/284 2039/2834/157 2038/2832/284
f 2279/3194/157 2040/2835/283 2039/2834/157 f 2279/3194/157 2040/2835/283 2039/2834/157
@ -9965,18 +9991,18 @@ f 674/1164/157 686/1139/157 687/1141/207
f 681/1173/213 693/1154/213 694/1156/209 f 681/1173/213 693/1154/213 694/1156/209
f 671/1170/158 684/1133/158 683/1135/210 f 671/1170/158 684/1133/158 683/1135/210
f 679/1179/212 678/1183/214 690/1147/214 f 679/1179/212 678/1183/214 690/1147/214
f 696/3267/213 708/3887/213 707/3649/209 f 696/3267/213 708/3912/213 707/3649/209
f 703/1140/157 715/3888/157 714/3650/207 f 703/1140/157 715/3913/157 714/3650/207
f 700/1146/159 712/3889/159 711/3651/214 f 700/1146/159 712/3914/159 711/3651/214
f 697/3266/164 709/3890/164 708/3652/213 f 697/3266/164 709/3915/164 708/3652/213
f 703/3259/157 704/1138/211 716/3653/211 f 703/3259/157 704/1138/211 716/3653/211
f 701/1144/208 713/3891/208 712/3655/159 f 701/1144/208 713/3916/208 712/3655/159
f 697/1150/164 698/3265/212 710/3656/212 f 697/1150/164 698/3265/212 710/3656/212
f 705/1136/210 717/3892/210 716/3658/211 f 705/1136/210 717/3917/210 716/3658/211
f 695/1157/209 707/3893/209 718/3659/158 f 695/1157/209 707/3918/209 718/3659/158
f 702/1142/207 714/3894/207 713/3660/208 f 702/1142/207 714/3919/207 713/3660/208
f 699/1148/214 711/3895/214 710/3661/212 f 699/1148/214 711/3920/214 710/3661/212
f 706/3257/158 718/3896/158 717/3662/210 f 706/3257/158 718/3921/158 717/3662/210
f 738/1239/214 762/1216/214 763/3289/212 f 738/1239/214 762/1216/214 763/3289/212
f 724/3270/209 748/1188/209 747/1190/213 f 724/3270/209 748/1188/209 747/1190/213
f 719/3275/159 744/1203/159 754/1205/208 f 719/3275/159 744/1203/159 754/1205/208
@ -10026,29 +10052,29 @@ f 832/3306/158 807/1332/158 797/1334/210
f 827/3311/214 803/1347/214 804/1349/212 f 827/3311/214 803/1347/214 804/1349/212
f 813/1296/209 789/1321/209 788/3292/213 f 813/1296/209 789/1321/209 788/3292/213
f 846/1404/208 845/3324/159 833/3663/159 f 846/1404/208 845/3324/159 833/3663/159
f 852/1390/209 840/3897/209 841/3665/213 f 852/1390/209 840/3922/209 841/3665/213
f 849/1396/211 837/3898/211 838/3666/210 f 849/1396/211 837/3923/211 838/3666/210
f 856/1380/214 844/3899/214 833/3667/159 f 856/1380/214 844/3924/214 833/3667/159
f 847/3323/207 846/1402/208 834/3668/208 f 847/3323/207 846/1402/208 834/3668/208
f 854/1388/164 853/3316/213 841/3670/213 f 854/1388/164 853/3316/213 841/3670/213
f 850/1394/210 838/3900/210 839/3672/158 f 850/1394/210 838/3925/210 839/3672/158
f 847/1400/207 835/3901/207 836/3673/157 f 847/1400/207 835/3926/207 836/3673/157
f 854/3315/164 842/3902/164 843/3674/212 f 854/3315/164 842/3927/164 843/3674/212
f 851/1392/158 839/3903/158 840/3675/209 f 851/1392/158 839/3928/158 840/3675/209
f 848/1398/157 836/3904/157 837/3676/211 f 848/1398/157 836/3929/157 837/3676/211
f 855/3314/212 843/3905/212 844/3677/214 f 855/3314/212 843/3930/212 844/3677/214
f 872/1356/213 873/1353/209 861/1391/209 f 872/3678/213 873/3691/209 861/3679/209
f 880/1366/159 867/1381/159 868/1403/208 f 880/3681/159 867/3701/159 868/3682/208
f 869/1368/214 870/1363/212 858/1383/212 f 869/3684/214 870/3692/212 858/3685/212
f 877/1373/157 865/1399/157 864/1397/211 f 877/3687/157 865/3695/157 864/3688/211
f 874/1355/158 862/1393/158 861/1391/209 f 874/3690/158 862/3697/158 861/3679/209
f 870/1363/212 871/1360/164 859/1385/164 f 870/3692/212 871/3931/164 859/3693/164
f 878/1371/207 866/1401/207 865/1399/157 f 878/3694/207 866/3700/207 865/3695/157
f 874/1355/158 875/1377/210 863/1395/210 f 874/3690/158 875/3702/210 863/3696/210
f 871/3305/164 872/1356/213 860/1387/213 f 871/3698/164 872/3678/213 860/3680/213
f 879/1369/208 868/1403/208 866/1401/207 f 879/3683/208 868/3682/208 866/3700/207
f 869/1368/214 857/1382/214 867/1381/159 f 869/3684/214 857/3686/214 867/3701/159
f 876/1375/211 864/1397/211 863/1395/210 f 876/3689/211 864/3688/211 863/3696/210
f 906/1449/159 908/1451/174 907/1468/174 f 906/1449/159 908/1451/174 907/1468/174
f 908/1451/174 910/1453/164 909/1470/164 f 908/1451/174 910/1453/164 909/1470/164
f 910/1453/164 912/1455/192 911/1472/192 f 910/1453/164 912/1455/192 911/1472/192
@ -10073,114 +10099,114 @@ f 1045/3383/171 1047/1584/221 1046/1603/221
f 1046/1603/221 1047/1584/221 1049/1586/157 f 1046/1603/221 1047/1584/221 1049/1586/157
f 1049/1586/157 1051/1557/222 1050/1607/222 f 1049/1586/157 1051/1557/222 1050/1607/222
f 1050/1607/222 1051/1557/222 1037/1556/179 f 1050/1607/222 1051/1557/222 1037/1556/179
f 935/3678/223 1065/3694/223 1064/3679/224 f 935/3703/223 1065/3719/223 1064/3704/224
f 929/3681/184 936/3680/224 1064/3679/224 f 929/3706/184 936/3705/224 1064/3704/224
f 929/3683/184 1063/3906/184 1062/3684/225 f 929/3708/184 1063/3932/184 1062/3709/225
f 930/3685/225 1062/3684/225 1061/3686/226 f 930/3710/225 1062/3709/225 1061/3711/226
f 931/3687/226 1061/3686/226 1060/3688/227 f 931/3712/226 1061/3711/226 1060/3713/227
f 932/3689/227 1060/3688/227 1059/3690/185 f 932/3714/227 1060/3713/227 1059/3715/185
f 933/3691/185 1059/3690/185 1066/3692/228 f 933/3716/185 1059/3715/185 1066/3717/228
f 934/3693/228 1066/3692/228 1065/3694/223 f 934/3718/228 1066/3717/228 1065/3719/223
f 927/3695/229 928/3699/230 988/3696/230 f 927/3720/229 928/3724/230 988/3721/230
f 921/3698/182 981/3907/182 988/3696/230 f 921/3723/182 981/3933/182 988/3721/230
f 922/3700/231 982/3704/231 981/3701/182 f 922/3725/231 982/3729/231 981/3726/182
f 922/3700/231 923/3706/232 983/3703/232 f 922/3725/231 923/3731/232 983/3728/232
f 924/3705/233 984/3708/233 983/3703/232 f 924/3730/233 984/3733/233 983/3728/232
f 924/3705/233 925/3710/183 985/3707/183 f 924/3730/233 925/3735/183 985/3732/183
f 926/3709/234 986/3711/234 985/3707/183 f 926/3734/234 986/3736/234 985/3732/183
f 926/3709/234 927/3695/229 987/3697/229 f 926/3734/234 927/3720/229 987/3722/229
f 1035/3712/235 1028/3908/180 957/3713/180 f 1035/3737/235 1028/3934/180 957/3738/180
f 957/3715/180 1028/3909/180 1029/3716/236 f 957/3740/180 1028/3935/180 1029/3741/236
f 1029/3716/236 1030/3719/237 959/3718/237 f 1029/3741/236 1030/3744/237 959/3743/237
f 1030/3719/237 1031/3910/238 960/3720/238 f 1030/3744/237 1031/3936/238 960/3745/238
f 960/3720/238 1031/3910/238 1032/3721/181 f 960/3745/238 1031/3936/238 1032/3746/181
f 1032/3721/181 1033/3724/239 962/3723/239 f 1032/3746/181 1033/3749/239 962/3748/239
f 1033/3724/239 1034/3726/240 963/3725/240 f 1033/3749/239 1034/3751/240 963/3750/240
f 1034/3726/240 1035/3712/235 964/3714/235 f 1034/3751/240 1035/3737/235 964/3739/235
f 1009/3727/186 1010/3742/241 970/3728/241 f 1009/3752/186 1010/3767/241 970/3753/241
f 1008/3730/242 1009/3911/186 969/3731/186 f 1008/3755/242 1009/3937/186 969/3756/186
f 1007/3733/243 1008/3730/242 968/3732/242 f 1007/3758/243 1008/3755/242 968/3757/242
f 1006/3735/244 1007/3733/243 967/3734/243 f 1006/3760/244 1007/3758/243 967/3759/243
f 1005/3737/187 1006/3735/244 966/3736/244 f 1005/3762/187 1006/3760/244 966/3761/244
f 1012/3739/245 1005/3737/187 965/3738/187 f 1012/3764/245 1005/3762/187 965/3763/187
f 971/3741/246 1011/3912/246 1012/3739/245 f 971/3766/246 1011/3938/246 1012/3764/245
f 1010/3742/241 1011/3912/246 971/3741/246 f 1010/3767/241 1011/3938/246 971/3766/246
f 1016/3743/162 1055/3913/162 1056/3744/247 f 1016/3768/162 1055/3939/162 1056/3769/247
f 1054/3746/248 1055/3914/162 1016/3747/162 f 1054/3771/248 1055/3940/162 1016/3772/162
f 1014/3749/249 1053/3915/249 1054/3746/248 f 1014/3774/249 1053/3941/249 1054/3771/248
f 1052/3750/250 1053/3915/249 1014/3749/249 f 1052/3775/250 1053/3941/249 1014/3774/249
f 1018/3752/251 1057/3916/251 1058/3753/252 f 1018/3777/251 1057/3942/251 1058/3778/252
f 1056/3744/247 1057/3916/251 1018/3752/251 f 1056/3769/247 1057/3942/251 1018/3777/251
f 1333/1876/253 1397/3756/253 1396/3755/254 f 1333/1876/253 1397/3781/253 1396/3780/254
f 1306/1886/255 1370/1952/255 1371/1953/159 f 1306/1886/255 1370/1952/255 1371/1953/159
f 1334/1875/256 1398/3757/256 1397/3756/253 f 1334/1875/256 1398/3782/256 1397/3781/253
f 1307/1887/159 1371/1954/159 1372/1956/257 f 1307/1887/159 1371/1954/159 1372/1956/257
f 1335/1878/161 1399/3758/161 1398/3757/256 f 1335/1878/161 1399/3783/161 1398/3782/256
f 1308/1890/257 1372/1956/257 1373/1958/258 f 1308/1890/257 1372/1956/257 1373/1958/258
f 1336/1880/259 1400/3759/259 1399/3758/161 f 1336/1880/259 1400/3784/259 1399/3783/161
f 1309/1893/258 1373/1958/258 1374/1960/260 f 1309/1893/258 1373/1958/258 1374/1960/260
f 1283/1906/156 1348/1972/156 1347/1971/254 f 1283/1906/156 1348/1972/156 1347/1971/254
f 1337/1882/261 1401/3760/261 1400/3759/259 f 1337/1882/261 1401/3785/261 1400/3784/259
f 1310/1892/260 1374/1960/260 1375/1962/163 f 1310/1892/260 1374/1960/260 1375/1962/163
f 1284/1904/254 1347/1971/254 1349/1974/253 f 1284/1904/254 1347/1971/254 1349/1974/253
f 1338/1884/262 1402/3761/262 1401/3760/261 f 1338/1884/262 1402/3786/262 1401/3785/261
f 1311/1896/163 1375/1962/163 1376/1964/263 f 1311/1896/163 1375/1962/163 1376/1964/263
f 1285/1907/253 1349/1974/253 1350/1976/256 f 1285/1907/253 1349/1974/253 1350/1976/256
f 1339/3428/158 1403/3917/158 1402/3761/262 f 1339/3428/158 1403/3943/158 1402/3786/262
f 1312/1899/263 1376/1964/263 1377/1965/264 f 1312/1899/263 1376/1964/263 1377/1965/264
f 1286/1909/256 1350/1976/256 1351/1978/161 f 1286/1909/256 1350/1976/256 1351/1978/161
f 1340/1888/265 1404/3763/265 1403/3762/158 f 1340/1888/265 1404/3788/265 1403/3787/158
f 1313/1898/264 1377/1965/264 1378/1967/266 f 1313/1898/264 1377/1965/264 1378/1967/266
f 1287/1911/161 1351/1978/161 1352/1980/259 f 1287/1911/161 1351/1978/161 1352/1980/259
f 1341/1891/267 1405/3764/267 1404/3763/265 f 1341/1891/267 1405/3789/267 1404/3788/265
f 1314/1900/266 1378/1967/266 1348/1969/156 f 1314/1900/266 1378/1967/266 1348/1969/156
f 1288/1913/259 1352/1980/259 1353/1982/261 f 1288/1913/259 1352/1980/259 1353/1982/261
f 1342/1895/268 1406/3766/268 1405/3764/267 f 1342/1895/268 1406/3791/268 1405/3789/267
f 1316/1908/269 1379/3767/269 1380/3765/155 f 1316/1908/269 1379/3792/269 1380/3790/155
f 1289/1915/261 1353/1982/261 1354/1984/262 f 1289/1915/261 1353/1982/261 1354/1984/262
f 1343/1894/160 1407/3768/160 1406/3766/268 f 1343/1894/160 1407/3793/160 1406/3791/268
f 1317/1910/270 1381/3769/270 1379/3767/269 f 1317/1910/270 1381/3794/270 1379/3792/269
f 1290/1917/262 1354/1984/262 1355/1986/158 f 1290/1917/262 1354/1984/262 1355/1986/158
f 1344/1897/271 1408/3770/271 1407/3768/160 f 1344/1897/271 1408/3795/271 1407/3793/160
f 1318/1912/272 1382/3771/272 1381/3769/270 f 1318/1912/272 1382/3796/272 1381/3794/270
f 1291/1921/158 1355/1987/158 1356/1989/265 f 1291/1921/158 1355/1987/158 1356/1989/265
f 1345/1901/273 1409/3772/273 1408/3770/271 f 1345/1901/273 1409/3797/273 1408/3795/271
f 1319/1914/162 1383/3773/162 1382/3771/272 f 1319/1914/162 1383/3798/162 1382/3796/272
f 1292/1925/265 1356/1989/265 1357/1990/267 f 1292/1925/265 1356/1989/265 1357/1990/267
f 1346/1903/274 1410/3774/274 1409/3772/273 f 1346/1903/274 1410/3799/274 1409/3797/273
f 1320/1916/275 1384/3775/275 1383/3773/162 f 1320/1916/275 1384/3800/275 1383/3798/162
f 1293/1924/267 1357/1990/267 1358/1929/268 f 1293/1924/267 1357/1990/267 1358/1929/268
f 1315/3429/155 1380/3918/155 1410/3774/274 f 1315/3429/155 1380/3944/155 1410/3799/274
f 1321/1918/276 1385/3776/276 1384/3775/275 f 1321/1918/276 1385/3801/276 1384/3800/275
f 1294/1861/268 1358/1929/268 1359/1928/160 f 1294/1861/268 1358/1929/268 1359/1928/160
f 1322/1920/255 1386/3777/255 1385/3776/276 f 1322/1920/255 1386/3802/255 1385/3801/276
f 1295/1859/160 1359/1928/160 1360/1931/271 f 1295/1859/160 1359/1928/160 1360/1931/271
f 1323/3430/159 1387/3919/159 1386/3777/255 f 1323/3430/159 1387/3945/159 1386/3802/255
f 1296/1862/271 1360/1931/271 1361/1933/273 f 1296/1862/271 1360/1931/271 1361/1933/273
f 1324/1922/257 1388/3779/257 1387/3778/159 f 1324/1922/257 1388/3804/257 1387/3803/159
f 1297/1864/273 1361/1933/273 1362/1935/274 f 1297/1864/273 1361/1933/273 1362/1935/274
f 1325/1926/258 1389/3780/258 1388/3779/257 f 1325/1926/258 1389/3805/258 1388/3804/257
f 1298/1866/274 1362/1935/274 1363/1937/155 f 1298/1866/274 1362/1935/274 1363/1937/155
f 1326/1860/260 1390/3781/260 1389/3780/258 f 1326/1860/260 1390/3806/260 1389/3805/258
f 1299/1872/155 1363/1940/155 1364/1939/269 f 1299/1872/155 1363/1940/155 1364/1939/269
f 1327/1863/163 1391/3782/163 1390/3781/260 f 1327/1863/163 1391/3807/163 1390/3806/260
f 1300/1870/269 1364/1939/269 1365/1942/270 f 1300/1870/269 1364/1939/269 1365/1942/270
f 1328/1865/263 1392/3783/263 1391/3782/163 f 1328/1865/263 1392/3808/263 1391/3807/163
f 1301/1873/270 1365/1942/270 1366/1944/272 f 1301/1873/270 1365/1942/270 1366/1944/272
f 1329/1867/264 1393/3784/264 1392/3783/263 f 1329/1867/264 1393/3809/264 1392/3808/263
f 1302/1877/272 1366/1944/272 1367/1946/162 f 1302/1877/272 1366/1944/272 1367/1946/162
f 1330/1869/266 1394/3785/266 1393/3784/264 f 1330/1869/266 1394/3810/266 1393/3809/264
f 1303/1879/162 1367/1946/162 1368/1948/275 f 1303/1879/162 1367/1946/162 1368/1948/275
f 1331/3427/156 1395/3920/156 1394/3785/266 f 1331/3427/156 1395/3946/156 1394/3810/266
f 1304/1881/275 1368/1948/275 1369/1950/276 f 1304/1881/275 1368/1948/275 1369/1950/276
f 1332/1874/254 1396/3755/254 1395/3786/156 f 1332/1874/254 1396/3780/254 1395/3811/156
f 1305/1883/276 1369/1950/276 1370/1952/255 f 1305/1883/276 1369/1950/276 1370/1952/255
f 1764/3787/163 1779/3921/163 1780/3788/277 f 1764/3812/163 1779/3947/163 1780/3813/277
f 1778/3790/278 1779/3922/163 1764/3791/163 f 1778/3815/278 1779/3948/163 1764/3816/163
f 1762/3793/279 1777/3795/279 1778/3790/278 f 1762/3818/279 1777/3820/279 1778/3815/278
f 1761/3794/280 1776/3923/280 1777/3795/279 f 1761/3819/280 1776/3949/280 1777/3820/279
f 1766/3796/281 1781/3924/281 1782/3797/282 f 1766/3821/281 1781/3950/281 1782/3822/282
f 1780/3788/277 1781/3924/281 1766/3796/281 f 1780/3813/277 1781/3950/281 1766/3821/281
f 977/1511/169 1753/2490/169 1760/2488/283 f 977/1511/169 1753/2490/169 1760/2488/283
f 1760/2488/283 1759/2487/157 979/1514/157 f 1760/2488/283 1759/2487/157 979/1514/157
f 979/1514/157 1759/2487/157 1758/2485/284 f 979/1514/157 1759/2487/157 1758/2485/284
@ -10221,50 +10247,50 @@ f 2105/3599/179 2107/2905/222 2106/2924/222
f 2107/2905/222 2109/2907/157 2108/2926/157 f 2107/2905/222 2109/2907/157 2108/2926/157
f 2108/2926/157 2109/2907/157 2111/2878/221 f 2108/2926/157 2109/2907/157 2111/2878/221
f 2110/2927/221 2111/2878/221 2097/2877/171 f 2110/2927/221 2111/2878/221 2097/2877/171
f 2015/3799/291 2125/3815/291 2124/3800/292 f 2015/3824/291 2125/3840/291 2124/3825/292
f 2009/3802/185 2016/3801/292 2124/3800/292 f 2009/3827/185 2016/3826/292 2124/3825/292
f 2009/3804/185 2123/3925/185 2122/3805/293 f 2009/3829/185 2123/3951/185 2122/3830/293
f 2011/3807/294 2010/3806/293 2122/3805/293 f 2011/3832/294 2010/3831/293 2122/3830/293
f 2011/3807/294 2121/3808/294 2120/3809/295 f 2011/3832/294 2121/3833/294 2120/3834/295
f 2012/3810/295 2120/3809/295 2119/3811/184 f 2012/3835/295 2120/3834/295 2119/3836/184
f 2013/3812/184 2119/3811/184 2126/3813/296 f 2013/3837/184 2119/3836/184 2126/3838/296
f 2014/3814/296 2126/3813/296 2125/3815/291 f 2014/3839/296 2126/3838/296 2125/3840/291
f 2008/3816/297 2048/3820/297 2047/3817/298 f 2008/3841/297 2048/3845/297 2047/3842/298
f 2001/3819/183 2041/3926/183 2048/3820/297 f 2001/3844/183 2041/3952/183 2048/3845/297
f 2001/3821/183 2002/3824/299 2042/3822/299 f 2001/3846/183 2002/3849/299 2042/3847/299
f 2002/3824/299 2003/3827/300 2043/3825/300 f 2002/3849/299 2003/3852/300 2043/3850/300
f 2004/3826/301 2044/3829/301 2043/3825/300 f 2004/3851/301 2044/3854/301 2043/3850/300
f 2004/3826/301 2005/3831/182 2045/3828/182 f 2004/3851/301 2005/3856/182 2045/3853/182
f 2006/3830/302 2046/3832/302 2045/3828/182 f 2006/3855/302 2046/3857/302 2045/3853/182
f 2006/3830/302 2007/3818/298 2047/3817/298 f 2006/3855/302 2007/3843/298 2047/3842/298
f 2095/3833/303 2088/3927/181 2017/3834/181 f 2095/3858/303 2088/3953/181 2017/3859/181
f 2017/3836/181 2088/3928/181 2089/3837/304 f 2017/3861/181 2088/3954/181 2089/3862/304
f 2089/3837/304 2090/3840/305 2019/3839/305 f 2089/3862/304 2090/3865/305 2019/3864/305
f 2090/3840/305 2091/3929/306 2020/3841/306 f 2090/3865/305 2091/3955/306 2020/3866/306
f 2020/3841/306 2091/3929/306 2092/3842/180 f 2020/3866/306 2091/3955/306 2092/3867/180
f 2092/3842/180 2093/3845/307 2022/3844/307 f 2092/3867/180 2093/3870/307 2022/3869/307
f 2093/3845/307 2094/3930/308 2023/3846/308 f 2093/3870/307 2094/3956/308 2023/3871/308
f 2023/3846/308 2094/3930/308 2095/3833/303 f 2023/3871/308 2094/3956/308 2095/3858/303
f 2029/3847/187 2069/3931/187 2070/3848/309 f 2029/3872/187 2069/3957/187 2070/3873/309
f 2068/3850/310 2069/3932/187 2029/3851/187 f 2068/3875/310 2069/3958/187 2029/3876/187
f 2027/3853/311 2067/3933/311 2068/3850/310 f 2027/3878/311 2067/3959/311 2068/3875/310
f 2066/3854/312 2067/3933/311 2027/3853/311 f 2066/3879/312 2067/3959/311 2027/3878/311
f 2065/3856/186 2066/3854/312 2026/3855/312 f 2065/3881/186 2066/3879/312 2026/3880/312
f 2072/3858/313 2065/3856/186 2025/3857/186 f 2072/3883/313 2065/3881/186 2025/3882/186
f 2031/3860/314 2071/3934/314 2072/3858/313 f 2031/3885/314 2071/3960/314 2072/3883/313
f 2070/3848/309 2071/3934/314 2031/3860/314 f 2070/3873/309 2071/3960/314 2031/3885/314
f 2076/3861/161 2115/3935/161 2116/3862/315 f 2076/3886/161 2115/3961/161 2116/3887/315
f 2114/3864/316 2115/3936/161 2076/3865/161 f 2114/3889/316 2115/3962/161 2076/3890/161
f 2074/3867/317 2113/3937/317 2114/3864/316 f 2074/3892/317 2113/3963/317 2114/3889/316
f 2112/3868/318 2113/3937/317 2074/3867/317 f 2112/3893/318 2113/3963/317 2074/3892/317
f 2078/3870/319 2117/3938/319 2118/3871/320 f 2078/3895/319 2117/3964/319 2118/3896/320
f 2116/3862/315 2117/3938/319 2078/3870/319 f 2116/3887/315 2117/3964/319 2078/3895/319
f 2299/3873/160 2300/3886/321 2285/3874/321 f 2299/3898/160 2300/3911/321 2285/3899/321
f 2298/3876/322 2299/3939/160 2284/3877/160 f 2298/3901/322 2299/3965/160 2284/3902/160
f 2297/3879/323 2298/3876/322 2283/3878/322 f 2297/3904/323 2298/3901/322 2283/3903/322
f 2296/3881/324 2297/3879/323 2282/3880/323 f 2296/3906/324 2297/3904/323 2282/3905/323
f 2286/3883/325 2301/3940/325 2302/3884/326 f 2286/3908/325 2301/3966/325 2302/3909/326
f 2300/3886/321 2301/3940/325 2286/3883/325 f 2300/3911/321 2301/3966/325 2286/3908/325
f 2037/2831/168 2273/3197/168 2280/3196/284 f 2037/2831/168 2273/3197/168 2280/3196/284
f 2280/3196/284 2279/3194/157 2039/2834/157 f 2280/3196/284 2279/3194/157 2039/2834/157
f 2279/3194/157 2278/3192/283 2040/2835/283 f 2279/3194/157 2278/3192/283 2040/2835/283

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB